[llvm] [RISCV][GISel] Fold `G_FCONSTANT` 0.0 store into `sw x0` (PR #163008)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sat Oct 11 10:04:50 PDT 2025


================
@@ -1049,6 +1049,19 @@ void RISCVInstructionSelector::preISelLower(MachineInstr &MI,
     MRI->setType(DstReg, sXLen);
     break;
   }
+  case TargetOpcode::G_STORE: {
+    Register SrcReg = MI.getOperand(0).getReg();
+    MachineInstr *Def = MRI->getVRegDef(SrcReg);
+    if (Def && Def->getOpcode() == TargetOpcode::G_FCONSTANT) {
+      if (Def->getOperand(1).getFPImm()->getValueAPF().isPosZero()) {
+        MI.getOperand(0).setReg(RISCV::X0);
----------------
topperc wrote:

AArch64 seems to handle this in AArch64PostLegalizerLowering.cpp

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


More information about the llvm-commits mailing list