[llvm] [RISCV][GlobalISel] Select G_GLOBAL_VALUE (PR #68380)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 6 13:18:38 PDT 2023


================
@@ -244,6 +264,35 @@ bool RISCVInstructionSelector::select(MachineInstr &MI) {
   }
 }
 
+bool RISCVInstructionSelector::replacePtrWithInt(MachineOperand &Op,
+                                                 MachineIRBuilder &MIB,
+                                                 MachineRegisterInfo &MRI) {
+  Register PtrReg = Op.getReg();
+  assert(MRI.getType(PtrReg).isPointer() && "Operand is not a pointer!");
+
+  const LLT XLenLLT = LLT::scalar(STI.getXLen());
+  auto PtrToInt = MIB.buildPtrToInt(XLenLLT, PtrReg);
+  MRI.setRegBank(PtrToInt.getReg(0), RBI.getRegBank(RISCV::GPRRegBankID));
+  MRI.setType(PtrReg, XLenLLT);
+  Op.setReg(PtrToInt.getReg(0));
+  return select(*PtrToInt);
+}
+
+void RISCVInstructionSelector::preISelLower(MachineInstr &MI,
----------------
arsenm wrote:

Really shouldn't have to do things like this 

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


More information about the llvm-commits mailing list