@@ -6818,7 +6818,8 @@ multiclass avx512_fma3p_213_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
6818
6818
OpcodeStr, "$src3, $src2", "$src2, $src3",
6819
6819
(_.VT (OpNode _.RC:$src2, _.RC:$src1, (_.LdFrag addr:$src3))),
6820
6820
(_.VT (MaskOpNode _.RC:$src2, _.RC:$src1, (_.LdFrag addr:$src3))), 1, 0>,
6821
- EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold]>;
6821
+ EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold,
6822
+ sched.ReadAfterFold]>;
6822
6823
6823
6824
defm mb: AVX512_maskable_fma<opc, MRMSrcMem, _, (outs _.RC:$dst),
6824
6825
(ins _.RC:$src2, _.ScalarMemOp:$src3),
@@ -6828,7 +6829,8 @@ multiclass avx512_fma3p_213_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
6828
6829
_.RC:$src1,(_.VT (_.BroadcastLdFrag addr:$src3))),
6829
6830
(MaskOpNode _.RC:$src2,
6830
6831
_.RC:$src1,(_.VT (_.BroadcastLdFrag addr:$src3))), 1, 0>,
6831
- EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
6832
+ EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold,
6833
+ sched.ReadAfterFold]>;
6832
6834
}
6833
6835
}
6834
6836
@@ -6911,7 +6913,8 @@ multiclass avx512_fma3p_231_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
6911
6913
OpcodeStr, "$src3, $src2", "$src2, $src3",
6912
6914
(_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)),
6913
6915
(_.VT (MaskOpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)), 1, 0>,
6914
- EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold]>;
6916
+ EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold,
6917
+ sched.ReadAfterFold]>;
6915
6918
6916
6919
defm mb: AVX512_maskable_fma<opc, MRMSrcMem, _, (outs _.RC:$dst),
6917
6920
(ins _.RC:$src2, _.ScalarMemOp:$src3),
@@ -6923,7 +6926,8 @@ multiclass avx512_fma3p_231_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
6923
6926
(_.VT (MaskOpNode _.RC:$src2,
6924
6927
(_.VT (_.BroadcastLdFrag addr:$src3)),
6925
6928
_.RC:$src1)), 1, 0>, EVEX_4V, EVEX_B,
6926
- Sched<[sched.Folded, sched.ReadAfterFold]>;
6929
+ Sched<[sched.Folded, sched.ReadAfterFold,
6930
+ sched.ReadAfterFold]>;
6927
6931
}
6928
6932
}
6929
6933
@@ -7007,7 +7011,8 @@ multiclass avx512_fma3p_132_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
7007
7011
OpcodeStr, "$src3, $src2", "$src2, $src3",
7008
7012
(_.VT (OpNode (_.LdFrag addr:$src3), _.RC:$src1, _.RC:$src2)),
7009
7013
(_.VT (MaskOpNode (_.LdFrag addr:$src3), _.RC:$src1, _.RC:$src2)), 1, 0>,
7010
- EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold]>;
7014
+ EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold,
7015
+ sched.ReadAfterFold]>;
7011
7016
7012
7017
// Pattern is 312 order so that the load is in a different place from the
7013
7018
// 213 and 231 patterns this helps tablegen's duplicate pattern detection.
@@ -7019,7 +7024,8 @@ multiclass avx512_fma3p_132_rm<bits<8> opc, string OpcodeStr, SDPatternOperator
7019
7024
_.RC:$src1, _.RC:$src2)),
7020
7025
(_.VT (MaskOpNode (_.VT (_.BroadcastLdFrag addr:$src3)),
7021
7026
_.RC:$src1, _.RC:$src2)), 1, 0>,
7022
- EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
7027
+ EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold,
7028
+ sched.ReadAfterFold]>;
7023
7029
}
7024
7030
}
7025
7031
@@ -7097,7 +7103,8 @@ let Constraints = "$src1 = $dst", hasSideEffects = 0 in {
7097
7103
defm m_Int: AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
7098
7104
(ins _.RC:$src2, _.IntScalarMemOp:$src3), OpcodeStr,
7099
7105
"$src3, $src2", "$src2, $src3", (null_frag), 1, 1>,
7100
- EVEX_4V, Sched<[SchedWriteFMA.Scl.Folded, SchedWriteFMA.Scl.ReadAfterFold]>, SIMD_EXC;
7106
+ EVEX_4V, Sched<[SchedWriteFMA.Scl.Folded, SchedWriteFMA.Scl.ReadAfterFold,
7107
+ SchedWriteFMA.Scl.ReadAfterFold]>, SIMD_EXC;
7101
7108
7102
7109
let Uses = [MXCSR] in
7103
7110
defm rb_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
@@ -7115,7 +7122,8 @@ let Constraints = "$src1 = $dst", hasSideEffects = 0 in {
7115
7122
(ins _.FRC:$src1, _.FRC:$src2, _.ScalarMemOp:$src3),
7116
7123
!strconcat(OpcodeStr,
7117
7124
"\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
7118
- [RHS_m]>, Sched<[SchedWriteFMA.Scl.Folded, SchedWriteFMA.Scl.ReadAfterFold]>, EVEX_4V, SIMD_EXC;
7125
+ [RHS_m]>, Sched<[SchedWriteFMA.Scl.Folded, SchedWriteFMA.Scl.ReadAfterFold,
7126
+ SchedWriteFMA.Scl.ReadAfterFold]>, EVEX_4V, SIMD_EXC;
7119
7127
7120
7128
let Uses = [MXCSR] in
7121
7129
def rb : AVX512<opc, MRMSrcReg, (outs _.FRC:$dst),
@@ -7433,7 +7441,8 @@ multiclass avx512_pmadd52_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7433
7441
(ins _.RC:$src2, _.MemOp:$src3),
7434
7442
OpcodeStr, "$src3, $src2", "$src2, $src3",
7435
7443
(_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1))>,
7436
- T8PD, EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold]>;
7444
+ T8PD, EVEX_4V, Sched<[sched.Folded, sched.ReadAfterFold,
7445
+ sched.ReadAfterFold]>;
7437
7446
7438
7447
defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
7439
7448
(ins _.RC:$src2, _.ScalarMemOp:$src3),
@@ -7442,7 +7451,8 @@ multiclass avx512_pmadd52_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7442
7451
(OpNode _.RC:$src2,
7443
7452
(_.VT (_.BroadcastLdFrag addr:$src3)),
7444
7453
_.RC:$src1)>,
7445
- T8PD, EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold]>;
7454
+ T8PD, EVEX_4V, EVEX_B, Sched<[sched.Folded, sched.ReadAfterFold,
7455
+ sched.ReadAfterFold]>;
7446
7456
}
7447
7457
}
7448
7458
} // Constraints = "$src1 = $dst"
0 commit comments