[llvm] [X86] Support EGPR (R16-R31) for APX (PR #67702)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 9 01:28:16 PDT 2023


================
@@ -158,6 +158,10 @@ X86RegisterInfo::getLargestLegalSuperClass(const TargetRegisterClass *RC,
     case X86::GR16RegClassID:
     case X86::GR32RegClassID:
     case X86::GR64RegClassID:
+    case X86::GR8_NOREX2RegClassID:
+    case X86::GR16_NOREX2RegClassID:
+    case X86::GR32_NOREX2RegClassID:
+    case X86::GR64_NOREX2RegClassID:
----------------
KanRobert wrote:

What's the risk?
```
    Register Reg = MRI->createVirtualRegister(
        TII->getRegClass(TII->get(DstOpcode), 0, MRI->getTargetRegisterInfo(),
                         *MBB->getParent()));
    MachineInstrBuilder Bld = BuildMI(*MBB, MI, DL, TII->get(DstOpcode), Reg);
```
The code calls `getRegClass` to get the register class and then build the machine instruction with the same opcode. It looks safe to me.

In X86,   (If I remember correctly) pseudo instruction `COPY` is either a `MOV` or `KMOV`. Both of them can encode r16-31.

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


More information about the llvm-commits mailing list