@@ -76,11 +76,11 @@ class X86VectorVTInfo<int numelts, ValueType eltvt, RegisterClass rc,
76
76
PatFrag ScalarLdFrag = !cast<PatFrag>("load" # EltVT);
77
77
PatFrag BroadcastLdFrag = !cast<PatFrag>("X86VBroadcastld" # EltSizeName);
78
78
79
- ComplexPattern ScalarIntMemCPat = !if (!eq (EltTypeName, "f32"),
80
- !cast<ComplexPattern >("sse_load_f32"),
81
- !if (!eq (EltTypeName, "f64"),
82
- !cast<ComplexPattern >("sse_load_f64"),
83
- ?));
79
+ PatFrags ScalarIntMemFrags = !if (!eq (EltTypeName, "f32"),
80
+ !cast<PatFrags >("sse_load_f32"),
81
+ !if (!eq (EltTypeName, "f64"),
82
+ !cast<PatFrags >("sse_load_f64"),
83
+ ?));
84
84
85
85
// The string to specify embedded broadcast in assembly.
86
86
string BroadcastStr = "{1to" # NumElts # "}";
@@ -2065,9 +2065,9 @@ multiclass avx512_cmp_scalar<X86VectorVTInfo _, SDNode OpNode, SDNode OpNodeSAE,
2065
2065
(ins _.RC:$src1, _.IntScalarMemOp:$src2, u8imm:$cc),
2066
2066
"vcmp"#_.Suffix,
2067
2067
"$cc, $src2, $src1", "$src1, $src2, $cc",
2068
- (OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat :$src2,
2068
+ (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr :$src2) ,
2069
2069
timm:$cc),
2070
- (OpNode_su (_.VT _.RC:$src1), _.ScalarIntMemCPat :$src2,
2070
+ (OpNode_su (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr :$src2) ,
2071
2071
timm:$cc)>, EVEX_4V, VEX_LIG, EVEX_CD8<_.EltSize, CD8VT1>,
2072
2072
Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
2073
2073
@@ -2643,15 +2643,15 @@ multiclass avx512_scalar_fpclass<bits<8> opc, string OpcodeStr,
2643
2643
OpcodeStr#_.Suffix#
2644
2644
"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2645
2645
[(set _.KRC:$dst,
2646
- (X86Vfpclasss _.ScalarIntMemCPat :$src1,
2647
- (i32 timm:$src2)))]>,
2646
+ (X86Vfpclasss (_.ScalarIntMemFrags addr :$src1) ,
2647
+ (i32 timm:$src2)))]>,
2648
2648
Sched<[sched.Folded, sched.ReadAfterFold]>;
2649
2649
def rmk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
2650
2650
(ins _.KRCWM:$mask, _.IntScalarMemOp:$src1, i32u8imm:$src2),
2651
2651
OpcodeStr#_.Suffix#
2652
2652
"\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2653
2653
[(set _.KRC:$dst,(and _.KRCWM:$mask,
2654
- (X86Vfpclasss_su _.ScalarIntMemCPat :$src1,
2654
+ (X86Vfpclasss_su (_.ScalarIntMemFrags addr :$src1) ,
2655
2655
(i32 timm:$src2))))]>,
2656
2656
EVEX_K, Sched<[sched.Folded, sched.ReadAfterFold]>;
2657
2657
}
@@ -5293,7 +5293,7 @@ multiclass avx512_fp_scalar<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5293
5293
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5294
5294
"$src2, $src1", "$src1, $src2",
5295
5295
(_.VT (VecNode _.RC:$src1,
5296
- _.ScalarIntMemCPat :$src2))>,
5296
+ (_.ScalarIntMemFrags addr :$src2) ))>,
5297
5297
Sched<[sched.Folded, sched.ReadAfterFold]>;
5298
5298
let isCodeGenOnly = 1, Predicates = [HasAVX512] in {
5299
5299
def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
@@ -5339,7 +5339,7 @@ multiclass avx512_fp_scalar_sae<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5339
5339
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5340
5340
"$src2, $src1", "$src1, $src2",
5341
5341
(_.VT (VecNode _.RC:$src1,
5342
- _.ScalarIntMemCPat :$src2))>,
5342
+ (_.ScalarIntMemFrags addr :$src2) ))>,
5343
5343
Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
5344
5344
5345
5345
let isCodeGenOnly = 1, Predicates = [HasAVX512],
@@ -5628,7 +5628,7 @@ multiclass avx512_fp_scalef_scalar<bits<8> opc, string OpcodeStr, SDNode OpNode,
5628
5628
defm rm: AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5629
5629
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr#_.Suffix,
5630
5630
"$src2, $src1", "$src1, $src2",
5631
- (OpNode _.RC:$src1, _.ScalarIntMemCPat :$src2)>,
5631
+ (OpNode _.RC:$src1, (_.ScalarIntMemFrags addr :$src2) )>,
5632
5632
Sched<[sched.Folded, sched.ReadAfterFold]>;
5633
5633
}
5634
5634
}
@@ -7227,7 +7227,7 @@ multiclass avx512_cvt_s_int_round<bits<8> opc, X86VectorVTInfo SrcVT,
7227
7227
def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst), (ins SrcVT.IntScalarMemOp:$src),
7228
7228
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
7229
7229
[(set DstVT.RC:$dst, (OpNode
7230
- (SrcVT.VT SrcVT.ScalarIntMemCPat :$src)))]>,
7230
+ (SrcVT.ScalarIntMemFrags addr :$src)))]>,
7231
7231
EVEX, VEX_LIG, Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
7232
7232
} // Predicates = [HasAVX512]
7233
7233
@@ -7419,7 +7419,7 @@ let Predicates = [HasAVX512], ExeDomain = _SrcRC.ExeDomain in {
7419
7419
(ins _SrcRC.IntScalarMemOp:$src),
7420
7420
!strconcat(asm,"\t{$src, $dst|$dst, $src}"),
7421
7421
[(set _DstRC.RC:$dst,
7422
- (OpNodeInt (_SrcRC.VT _SrcRC.ScalarIntMemCPat :$src)))]>,
7422
+ (OpNodeInt (_SrcRC.ScalarIntMemFrags addr :$src)))]>,
7423
7423
EVEX, VEX_LIG, Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
7424
7424
} //HasAVX512
7425
7425
@@ -7476,7 +7476,7 @@ multiclass avx512_cvt_fp_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _
7476
7476
(ins _.RC:$src1, _Src.IntScalarMemOp:$src2), OpcodeStr,
7477
7477
"$src2, $src1", "$src1, $src2",
7478
7478
(_.VT (OpNode (_.VT _.RC:$src1),
7479
- (_Src.VT _Src.ScalarIntMemCPat :$src2)))>,
7479
+ (_Src.ScalarIntMemFrags addr :$src2)))>,
7480
7480
EVEX_4V, VEX_LIG,
7481
7481
Sched<[sched.Folded, sched.ReadAfterFold]>;
7482
7482
@@ -8710,7 +8710,7 @@ multiclass avx512_fp14_s<bits<8> opc, string OpcodeStr, SDNode OpNode,
8710
8710
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
8711
8711
"$src2, $src1", "$src1, $src2",
8712
8712
(OpNode (_.VT _.RC:$src1),
8713
- _.ScalarIntMemCPat :$src2)>, EVEX_4V, VEX_LIG,
8713
+ (_.ScalarIntMemFrags addr :$src2) )>, EVEX_4V, VEX_LIG,
8714
8714
Sched<[sched.Folded, sched.ReadAfterFold]>;
8715
8715
}
8716
8716
}
@@ -8798,7 +8798,7 @@ multiclass avx512_fp28_s<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
8798
8798
defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
8799
8799
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
8800
8800
"$src2, $src1", "$src1, $src2",
8801
- (OpNode (_.VT _.RC:$src1), _.ScalarIntMemCPat :$src2)>,
8801
+ (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr :$src2) )>,
8802
8802
Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
8803
8803
}
8804
8804
}
@@ -8977,7 +8977,7 @@ multiclass avx512_sqrt_scalar<bits<8> opc, string OpcodeStr, X86FoldableSchedWri
8977
8977
(ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
8978
8978
"$src2, $src1", "$src1, $src2",
8979
8979
(X86fsqrts (_.VT _.RC:$src1),
8980
- _.ScalarIntMemCPat :$src2)>,
8980
+ (_.ScalarIntMemFrags addr :$src2) )>,
8981
8981
Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
8982
8982
let Uses = [MXCSR] in
8983
8983
defm rb_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
@@ -9050,7 +9050,7 @@ multiclass avx512_rndscale_scalar<bits<8> opc, string OpcodeStr,
9050
9050
OpcodeStr,
9051
9051
"$src3, $src2, $src1", "$src1, $src2, $src3",
9052
9052
(_.VT (X86RndScales _.RC:$src1,
9053
- _.ScalarIntMemCPat :$src2, (i32 timm:$src3)))>,
9053
+ (_.ScalarIntMemFrags addr :$src2) , (i32 timm:$src3)))>,
9054
9054
Sched<[sched.Folded, sched.ReadAfterFold]>, SIMD_EXC;
9055
9055
9056
9056
let isCodeGenOnly = 1, hasSideEffects = 0, Predicates = [HasAVX512] in {
@@ -10221,7 +10221,7 @@ multiclass avx512_fp_scalar_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
10221
10221
(ins _.RC:$src1, _.IntScalarMemOp:$src2, i32u8imm:$src3),
10222
10222
OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10223
10223
(OpNode (_.VT _.RC:$src1),
10224
- (_.VT _.ScalarIntMemCPat :$src2),
10224
+ (_.ScalarIntMemFrags addr :$src2),
10225
10225
(i32 timm:$src3))>,
10226
10226
Sched<[sched.Folded, sched.ReadAfterFold]>;
10227
10227
}
0 commit comments