[llvm] [X86][MC] Support Enc/Dec for NF for promoted BMI instructions in 73899 (PR #76709)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 2 23:59:46 PST 2024


================
@@ -1314,19 +1323,30 @@ let Predicates = [HasBMI2, NoEGPR], Defs = [EFLAGS] in {
   defm BZHI64 : bmi4VOp3_base<0xF5, "bzhi{q}", GR64, i64mem,
                               X86bzhi, loadi64, WriteBZHI>, REX_W;
 }
-let Predicates = [HasBMI, HasEGPR], Defs = [EFLAGS] in {
+let Predicates = [HasBMI, HasEGPR, In64BitMode], Defs = [EFLAGS] in {
   defm BEXTR32 : bmi4VOp3_base<0xF7, "bextr{l}", GR32, i32mem,
                                X86bextr, loadi32, WriteBEXTR, "_EVEX">, EVEX;
   defm BEXTR64 : bmi4VOp3_base<0xF7, "bextr{q}", GR64, i64mem,
                                X86bextr, loadi64, WriteBEXTR, "_EVEX">, EVEX, REX_W;
 }
-let Predicates = [HasBMI2, HasEGPR], Defs = [EFLAGS] in {
+let Predicates = [HasBMI2, HasEGPR, In64BitMode], Defs = [EFLAGS] in {
   defm BZHI32 : bmi4VOp3_base<0xF5, "bzhi{l}", GR32, i32mem,
                               X86bzhi, loadi32, WriteBZHI, "_EVEX">, EVEX;
   defm BZHI64 : bmi4VOp3_base<0xF5, "bzhi{q}", GR64, i64mem,
                               X86bzhi, loadi64, WriteBZHI, "_EVEX">, EVEX, REX_W;
 }
 
+let Predicates = [In64BitMode], Pattern = [(null_frag)] in {
+  defm BEXTR32 : bmi4VOp3_base<0xF7, "bextr{l}", GR32, i32mem,
+                               X86bextr, loadi32, WriteBEXTR, "_NF">, EVEX, EVEX_NF;
+  defm BEXTR64 : bmi4VOp3_base<0xF7, "bextr{q}", GR64, i64mem,
----------------
KanRobert wrote:

It's strange to set `VEX` inside the class but set `EVEX` here. 

https://github.com/llvm/llvm-project/pull/76709


More information about the llvm-commits mailing list