[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