[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