[llvm] [RISCV][GlobalIsel] Reduce constant pool usage without FP extension (PR #158346)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 13 10:04:57 PDT 2025


================
@@ -1358,7 +1366,12 @@ bool RISCVLegalizerInfo::legalizeCustom(
     return false;
   case TargetOpcode::G_ABS:
     return Helper.lowerAbsToMaxNeg(MI);
-  // TODO: G_FCONSTANT
+  case TargetOpcode::G_FCONSTANT: {
+    const ConstantFP *ConstVal = MI.getOperand(1).getFPImm();
+    if (!shouldBeInFConstantPool(ConstVal->getValue()))
----------------
topperc wrote:

I mean we can do this and not need any changes to register bank selection or instrution selection

````
+  case TargetOpcode::G_FCONSTANT: {
+    const ConstantFP *ConstVal = MI.getOperand(1).getFPImm();
+    if (shouldBeInFConstantPool(ConstVal->getValue()))
+      return Helper.lowerFConstant(MI);
+
+    APInt AsInteger =
+        MI.getOperand(1).getFPImm()->getValueAPF().bitcastToAPInt();
+    MIRBuilder.buildConstant(
+        MI.getOperand(0),
+        *ConstantInt::get(MF.getFunction().getContext(), AsInteger));
+    MI.eraseFromParent();
+    return true;
+  }
```

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


More information about the llvm-commits mailing list