[llvm] [X86][MC] Support Enc/Dec for NF BMI instructions (PR #76709)
Shengchen Kan via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 11 00:22:38 PST 2024
================
@@ -1040,20 +1040,20 @@ multiclass AndN<X86TypeInfo t, string suffix = ""> {
def rr#suffix : ITy<0xF2, MRMSrcReg, t, (outs t.RegClass:$dst),
(ins t.RegClass:$src1, t.RegClass:$src2), "andn",
binop_ndd_args, andn_rr_p>, VVVV, Sched<[WriteALU]>,
- T8, DefEFLAGS;
+ T8;
def rm#suffix : ITy<0xF2, MRMSrcMem, t, (outs t.RegClass:$dst),
(ins t.RegClass:$src1, t.MemOperand:$src2), "andn",
binop_ndd_args, andn_rm_p>, VVVV,
Sched<[WriteALU.Folded, WriteALU.ReadAfterFold]>,
- T8, DefEFLAGS;
+ T8;
}
// Complexity is reduced to give and with immediate a chance to match first.
let AddedComplexity = -6 in {
-defm ANDN32 : AndN<Xi32>, VEX, Requires<[HasBMI, NoEGPR]>;
-defm ANDN64 : AndN<Xi64>, VEX, REX_W, Requires<[HasBMI, NoEGPR]>;
-defm ANDN32 : AndN<Xi32, "_EVEX">, EVEX, Requires<[HasBMI, HasEGPR, In64BitMode]>;
-defm ANDN64 : AndN<Xi64, "_EVEX">, EVEX, REX_W, Requires<[HasBMI, HasEGPR, In64BitMode]>;
+defm ANDN32 : AndN<Xi32>, VEX, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
+defm ANDN64 : AndN<Xi64>, VEX, REX_W, Requires<[HasBMI, NoEGPR]>, DefEFLAGS;
+defm ANDN32 : AndN<Xi32, "_EVEX">, EVEX, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
+defm ANDN64 : AndN<Xi64, "_EVEX">, EVEX, REX_W, Requires<[HasBMI, HasEGPR, In64BitMode]>, DefEFLAGS;
let Pattern = [(null_frag)] in {
----------------
KanRobert wrote:
It's strange to use `[(null_frag)]` to override the X86and_flag.
We should add one more parameter `SDPatternOperator node` and pass it as argument.
https://github.com/llvm/llvm-project/pull/76709
More information about the llvm-commits
mailing list