@@ -1312,12 +1312,12 @@ def : Pat<(X86testpat (loadi64 addr:$src1), i64relocImmSExt32_su:$src2),
1312
1312
//===----------------------------------------------------------------------===//
1313
1313
// ANDN Instruction
1314
1314
//
1315
- multiclass AndN<X86TypeInfo t, string suffix = ""> {
1315
+ multiclass AndN<X86TypeInfo t, SDPatternOperator node, string suffix = ""> {
1316
1316
defvar andn_rr_p =
1317
- [(set t.RegClass:$dst, EFLAGS, (X86and_flag (not t.RegClass:$src1),
1317
+ [(set t.RegClass:$dst, EFLAGS, (node (not t.RegClass:$src1),
1318
1318
t.RegClass:$src2))];
1319
1319
defvar andn_rm_p =
1320
- [(set t.RegClass:$dst, EFLAGS, (X86and_flag (not t.RegClass:$src1),
1320
+ [(set t.RegClass:$dst, EFLAGS, (node (not t.RegClass:$src1),
1321
1321
(t.LoadNode addr:$src2)))];
1322
1322
def rr#suffix : ITy<0xF2, MRMSrcReg, t, (outs t.RegClass:$dst),
1323
1323
(ins t.RegClass:$src1, t.RegClass:$src2), "andn",
@@ -1332,14 +1332,12 @@ multiclass AndN<X86TypeInfo t, string suffix = ""> {
1332
1332
1333
1333
// Complexity is reduced to give and with immediate a chance to match first.
1334
1334
let AddedComplexity = -6 in {
1335
- defm ANDN32 : AndN<Xi32>, VEX, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
1336
- defm ANDN64 : AndN<Xi64>, VEX, REX_W, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
1337
- defm ANDN32 : AndN<Xi32, "_EVEX">, EVEX, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
1338
- defm ANDN64 : AndN<Xi64, "_EVEX">, EVEX, REX_W, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
1339
- let Pattern = [(null_frag)] in {
1340
- defm ANDN32 : AndN<Xi32, "_NF">, EVEX, EVEX_NF, Requires<[In64BitMode]>;
1341
- defm ANDN64 : AndN<Xi64, "_NF">, EVEX, EVEX_NF, REX_W, Requires<[In64BitMode]>;
1342
- }
1335
+ defm ANDN32 : AndN<Xi32, X86and_flag>, VEX, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
1336
+ defm ANDN64 : AndN<Xi64, X86and_flag>, VEX, REX_W, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
1337
+ defm ANDN32 : AndN<Xi32, X86and_flag, "_EVEX">, EVEX, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
1338
+ defm ANDN64 : AndN<Xi64, X86and_flag, "_EVEX">, EVEX, REX_W, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
1339
+ defm ANDN32 : AndN<Xi32, null_frag, "_NF">, EVEX, EVEX_NF, Requires<[In64BitMode]>;
1340
+ defm ANDN64 : AndN<Xi64, null_frag, "_NF">, EVEX, EVEX_NF, REX_W, Requires<[In64BitMode]>;
1343
1341
}
1344
1342
1345
1343
multiclass Andn_Pats<string suffix> {
0 commit comments