[llvm] [GlobalISel][ARM] Legalization of G_CONSTANT using constant pool (PR #98308)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 11 04:46:51 PDT 2024


================
@@ -1103,6 +1104,26 @@ bool ARMInstructionSelector::select(MachineInstr &I) {
     assert((ValSize != 64 || STI.hasVFP2Base()) &&
            "Don't know how to load/store 64-bit value without VFP");
 
+    if (auto *LoadMI = dyn_cast<GLoad>(&I)) {
+      Register PtrReg = LoadMI->getPointerReg();
+      MachineInstr *Ptr = MRI.getVRegDef(PtrReg);
+      if (Ptr->getOpcode() == TargetOpcode::G_CONSTANT_POOL) {
+        const MachineOperand &Index = Ptr->getOperand(1);
+        unsigned Opcode = (Subtarget->isThumb()) ? ARM::tLDRpci : ARM::LDRcp;
----------------
arsenm wrote:

```suggestion
        unsigned Opcode = Subtarget->isThumb() ? ARM::tLDRpci : ARM::LDRcp;
```

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


More information about the llvm-commits mailing list