@@ -102,7 +102,7 @@ class BinOpRM_RF<bits<8> o, string m, X86TypeInfo t, SDPatternOperator node>
102
102
(t.LoadNode addr:$src2)))]>, DefEFLAGS;
103
103
// BinOpRMF_RF - Instructions that read "reg, [mem]", write "reg" and read/write
104
104
// EFLAGS.
105
- class BinOpRMF_RF<bits<8> o, string m, X86TypeInfo t, SDNode node>
105
+ class BinOpRMF_RF<bits<8> o, string m, X86TypeInfo t, SDPatternOperator node>
106
106
: BinOpRM<o, m, t, (outs t.RegClass:$dst),
107
107
[(set t.RegClass:$dst, EFLAGS,
108
108
(node t.RegClass:$src1, (t.LoadNode addr:$src2), EFLAGS))]>,
@@ -1189,34 +1189,24 @@ let Uses = [RDX] in
1189
1189
// We don't have patterns for these as there is no advantage over ADC for
1190
1190
// most code.
1191
1191
class ADCOXOpRR <string m, X86TypeInfo t>
1192
- : BinOpRR_RF<0xF6, m, t, null_frag> {
1193
- let OpSize = OpSizeFixed;
1192
+ : BinOpRRF_RF<0xF6, m, t, null_frag> {
1194
1193
let Form = MRMSrcReg;
1195
1194
let isCommutable = 1;
1196
1195
}
1197
1196
1198
1197
class ADCOXOpRM <string m, X86TypeInfo t>
1199
- : BinOpRM_RF<0xF6, m, t, null_frag> {
1200
- let OpSize = OpSizeFixed;
1198
+ : BinOpRMF_RF<0xF6, m, t, null_frag> {
1201
1199
let Form = MRMSrcMem;
1202
1200
}
1203
1201
1204
- let Predicates = [HasADX], Constraints = "$src1 = $dst" in {
1205
- let SchedRW = [WriteADC] in {
1206
- def ADCX32rr : ADCOXOpRR<"adcx", Xi32>, T8PD;
1207
- def ADCX64rr : ADCOXOpRR<"adcx", Xi64>, T8PD;
1208
- def ADOX32rr : ADCOXOpRR<"adox", Xi32>, T8XS;
1209
- def ADOX64rr : ADCOXOpRR<"adox", Xi64>, T8XS;
1210
- }
1211
-
1212
- let SchedRW = [WriteADC.Folded, WriteADC.ReadAfterFold,
1213
- // Memory operand.
1214
- ReadDefault, ReadDefault, ReadDefault, ReadDefault, ReadDefault,
1215
- // Implicit read of EFLAGS
1216
- WriteADC.ReadAfterFold] in {
1217
- def ADCX32rm : ADCOXOpRM<"adcx", Xi32>, T8PD;
1218
- def ADCX64rm : ADCOXOpRM<"adcx", Xi64>, T8PD;
1219
- def ADOX32rm : ADCOXOpRM<"adox", Xi32>, T8XS;
1220
- def ADOX64rm : ADCOXOpRM<"adox", Xi64>, T8XS;
1221
- }
1202
+ let OpSize = OpSizeFixed, Constraints = "$src1 = $dst",
1203
+ Predicates = [HasADX] in {
1204
+ def ADCX32rr : ADCOXOpRR<"adcx", Xi32>, T8PD;
1205
+ def ADCX64rr : ADCOXOpRR<"adcx", Xi64>, T8PD;
1206
+ def ADOX32rr : ADCOXOpRR<"adox", Xi32>, T8XS;
1207
+ def ADOX64rr : ADCOXOpRR<"adox", Xi64>, T8XS;
1208
+ def ADCX32rm : ADCOXOpRM<"adcx", Xi32>, T8PD;
1209
+ def ADCX64rm : ADCOXOpRM<"adcx", Xi64>, T8PD;
1210
+ def ADOX32rm : ADCOXOpRM<"adox", Xi32>, T8XS;
1211
+ def ADOX64rm : ADCOXOpRM<"adox", Xi64>, T8XS;
1222
1212
}
0 commit comments