@@ -1959,7 +1959,7 @@ multiclass WriteFVarBlendask<bits<8> opc, string OpcodeStr,
1959
1959
(ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1960
1960
!strconcat(OpcodeStr,
1961
1961
"\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
1962
- []>, EVEX_4V, EVEX_KZ, Sched<[sched]>;
1962
+ []>, EVEX_4V, EVEX_KZ, Sched<[sched]>, NotMemoryFoldable ;
1963
1963
let mayLoad = 1 in {
1964
1964
def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1965
1965
(ins _.RC:$src1, _.MemOp:$src2),
@@ -1978,7 +1978,7 @@ multiclass WriteFVarBlendask<bits<8> opc, string OpcodeStr,
1978
1978
!strconcat(OpcodeStr,
1979
1979
"\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
1980
1980
[]>, EVEX_4V, EVEX_KZ, EVEX_CD8<_.EltSize, CD8VF>,
1981
- Sched<[sched.Folded, ReadAfterLd]>;
1981
+ Sched<[sched.Folded, ReadAfterLd]>, NotMemoryFoldable ;
1982
1982
}
1983
1983
}
1984
1984
}
@@ -1999,7 +1999,7 @@ multiclass WriteFVarBlendask_rmb<bits<8> opc, string OpcodeStr,
1999
1999
"\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}} {z}|",
2000
2000
"$dst {${mask}} {z}, $src1, ${src2}", _.BroadcastStr, "}"), []>,
2001
2001
EVEX_4V, EVEX_KZ, EVEX_B, EVEX_CD8<_.EltSize, CD8VF>,
2002
- Sched<[sched.Folded, ReadAfterLd]>;
2002
+ Sched<[sched.Folded, ReadAfterLd]>, NotMemoryFoldable ;
2003
2003
2004
2004
def rmb : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
2005
2005
(ins _.RC:$src1, _.ScalarMemOp:$src2),
@@ -2097,22 +2097,22 @@ multiclass avx512_cmp_scalar<X86VectorVTInfo _, SDNode OpNode, SDNode OpNodeRnd,
2097
2097
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2098
2098
"vcmp"#_.Suffix,
2099
2099
"$cc, $src2, $src1", "$src1, $src2, $cc">, EVEX_4V,
2100
- Sched<[sched]>;
2100
+ Sched<[sched]>, NotMemoryFoldable ;
2101
2101
let mayLoad = 1 in
2102
2102
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2103
2103
(outs _.KRC:$dst),
2104
2104
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2105
2105
"vcmp"#_.Suffix,
2106
2106
"$cc, $src2, $src1", "$src1, $src2, $cc">,
2107
2107
EVEX_4V, EVEX_CD8<_.EltSize, CD8VT1>,
2108
- Sched<[sched.Folded, ReadAfterLd]>;
2108
+ Sched<[sched.Folded, ReadAfterLd]>, NotMemoryFoldable ;
2109
2109
2110
2110
defm rrb_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcReg, _,
2111
2111
(outs _.KRC:$dst),
2112
2112
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2113
2113
"vcmp"#_.Suffix,
2114
2114
"$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc">,
2115
- EVEX_4V, EVEX_B, Sched<[sched]>;
2115
+ EVEX_4V, EVEX_B, Sched<[sched]>, NotMemoryFoldable ;
2116
2116
}// let isAsmParserOnly = 1, hasSideEffects = 0
2117
2117
2118
2118
let isCodeGenOnly = 1 in {
@@ -2334,28 +2334,29 @@ multiclass avx512_icmp_cc<bits<8> opc, string Suffix, SDNode OpNode,
2334
2334
(outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2335
2335
!strconcat("vpcmp", Suffix, "\t{$cc, $src2, $src1, $dst|",
2336
2336
"$dst, $src1, $src2, $cc}"), []>,
2337
- EVEX_4V, Sched<[sched]>;
2337
+ EVEX_4V, Sched<[sched]>, NotMemoryFoldable ;
2338
2338
let mayLoad = 1 in
2339
2339
def rmi_alt : AVX512AIi8<opc, MRMSrcMem,
2340
2340
(outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2341
2341
!strconcat("vpcmp", Suffix, "\t{$cc, $src2, $src1, $dst|",
2342
2342
"$dst, $src1, $src2, $cc}"), []>,
2343
- EVEX_4V, Sched<[sched.Folded, ReadAfterLd]>;
2343
+ EVEX_4V, Sched<[sched.Folded, ReadAfterLd]>, NotMemoryFoldable ;
2344
2344
def rrik_alt : AVX512AIi8<opc, MRMSrcReg,
2345
2345
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
2346
2346
u8imm:$cc),
2347
2347
!strconcat("vpcmp", Suffix,
2348
2348
"\t{$cc, $src2, $src1, $dst {${mask}}|",
2349
2349
"$dst {${mask}}, $src1, $src2, $cc}"), []>,
2350
- EVEX_4V, EVEX_K, Sched<[sched]>;
2350
+ EVEX_4V, EVEX_K, Sched<[sched]>, NotMemoryFoldable ;
2351
2351
let mayLoad = 1 in
2352
2352
def rmik_alt : AVX512AIi8<opc, MRMSrcMem,
2353
2353
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
2354
2354
u8imm:$cc),
2355
2355
!strconcat("vpcmp", Suffix,
2356
2356
"\t{$cc, $src2, $src1, $dst {${mask}}|",
2357
2357
"$dst {${mask}}, $src1, $src2, $cc}"), []>,
2358
- EVEX_4V, EVEX_K, Sched<[sched.Folded, ReadAfterLd]>;
2358
+ EVEX_4V, EVEX_K, Sched<[sched.Folded, ReadAfterLd]>,
2359
+ NotMemoryFoldable;
2359
2360
}
2360
2361
2361
2362
def : Pat<(OpNode (bitconvert (_.LdFrag addr:$src2)),
@@ -2404,14 +2405,16 @@ multiclass avx512_icmp_cc_rmb<bits<8> opc, string Suffix, SDNode OpNode,
2404
2405
!strconcat("vpcmp", Suffix,
2405
2406
"\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst|",
2406
2407
"$dst, $src1, ${src2}", _.BroadcastStr, ", $cc}"), []>,
2407
- EVEX_4V, EVEX_B, Sched<[sched.Folded, ReadAfterLd]>;
2408
+ EVEX_4V, EVEX_B, Sched<[sched.Folded, ReadAfterLd]>,
2409
+ NotMemoryFoldable;
2408
2410
def rmibk_alt : AVX512AIi8<opc, MRMSrcMem,
2409
2411
(outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1,
2410
2412
_.ScalarMemOp:$src2, u8imm:$cc),
2411
2413
!strconcat("vpcmp", Suffix,
2412
2414
"\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
2413
2415
"$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, ", $cc}"), []>,
2414
- EVEX_4V, EVEX_K, EVEX_B, Sched<[sched.Folded, ReadAfterLd]>;
2416
+ EVEX_4V, EVEX_K, EVEX_B, Sched<[sched.Folded, ReadAfterLd]>,
2417
+ NotMemoryFoldable;
2415
2418
}
2416
2419
2417
2420
def : Pat<(OpNode (X86VBroadcast (_.ScalarLdFrag addr:$src2)),
@@ -2523,23 +2526,25 @@ multiclass avx512_vcmp_common<X86FoldableSchedWrite sched, X86VectorVTInfo _,
2523
2526
(ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2524
2527
"vcmp"#_.Suffix,
2525
2528
"$cc, $src2, $src1", "$src1, $src2, $cc">,
2526
- Sched<[sched]>;
2529
+ Sched<[sched]>, NotMemoryFoldable ;
2527
2530
2528
2531
let mayLoad = 1 in {
2529
2532
defm rmi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2530
2533
(outs _.KRC:$dst),
2531
2534
(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2532
2535
"vcmp"#_.Suffix,
2533
2536
"$cc, $src2, $src1", "$src1, $src2, $cc">,
2534
- Sched<[sched.Folded, ReadAfterLd]>;
2537
+ Sched<[sched.Folded, ReadAfterLd]>,
2538
+ NotMemoryFoldable;
2535
2539
2536
2540
defm rmbi_alt : AVX512_maskable_cmp_alt<0xC2, MRMSrcMem, _,
2537
2541
(outs _.KRC:$dst),
2538
2542
(ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2539
2543
"vcmp"#_.Suffix,
2540
2544
"$cc, ${src2}"##_.BroadcastStr##", $src1",
2541
2545
"$src1, ${src2}"##_.BroadcastStr##", $cc">,
2542
- EVEX_B, Sched<[sched.Folded, ReadAfterLd]>;
2546
+ EVEX_B, Sched<[sched.Folded, ReadAfterLd]>,
2547
+ NotMemoryFoldable;
2543
2548
}
2544
2549
}
2545
2550
@@ -2589,7 +2594,7 @@ multiclass avx512_vcmp_sae<X86FoldableSchedWrite sched, X86VectorVTInfo _> {
2589
2594
"vcmp"#_.Suffix,
2590
2595
"$cc, {sae}, $src2, $src1",
2591
2596
"$src1, $src2, {sae}, $cc">,
2592
- EVEX_B, Sched<[sched]>;
2597
+ EVEX_B, Sched<[sched]>, NotMemoryFoldable ;
2593
2598
}
2594
2599
}
2595
2600
@@ -6289,7 +6294,7 @@ def VMOVHLPSZrr : AVX512PSI<0x12, MRMSrcReg, (outs VR128X:$dst),
6289
6294
(ins VR128X:$src1, VR128X:$src2),
6290
6295
"vmovhlps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
6291
6296
[(set VR128X:$dst, (v4f32 (X86Movhlps VR128X:$src1, VR128X:$src2)))]>,
6292
- Sched<[SchedWriteFShuffle.XMM]>, EVEX_4V;
6297
+ Sched<[SchedWriteFShuffle.XMM]>, EVEX_4V, NotMemoryFoldable ;
6293
6298
6294
6299
//===----------------------------------------------------------------------===//
6295
6300
// VMOVHPS/PD VMOVLPS Instructions
0 commit comments