[clang] [llvm] [X86] Support EGPR for inline assembly. (PR #92338)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Fri May 24 00:00:57 PDT 2024


================
@@ -58024,15 +58043,22 @@ X86TargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
     case 'r':   // GENERAL_REGS
     case 'l':   // INDEX_REGS
       if (VT == MVT::i8 || VT == MVT::i1)
-        return std::make_pair(0U, &X86::GR8_NOREX2RegClass);
+        return std::make_pair(0U, Subtarget.useInlineAsmGPR32()
+                                      ? &X86::GR8_NOREX2RegClass
+                                      : &X86::GR8RegClass);
       if (VT == MVT::i16)
-        return std::make_pair(0U, &X86::GR16_NOREX2RegClass);
+        return std::make_pair(0U, Subtarget.useInlineAsmGPR32()
+                                      ? &X86::GR16_NOREX2RegClass
+                                      : &X86::GR16RegClass);
       if (VT == MVT::i32 || VT == MVT::f32 ||
           (!VT.isVector() && !Subtarget.is64Bit()))
-        return std::make_pair(0U, &X86::GR32_NOREX2RegClass);
+        return std::make_pair(0U, Subtarget.useInlineAsmGPR32()
----------------
KanRobert wrote:

Need to check hasEGPR() too

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


More information about the llvm-commits mailing list