[llvm] [RISCV] Rename and invert UseGPRForF16_F32/UseGPRForF16_F32. (PR #195971)
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 5 17:59:05 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-risc-v
Author: Craig Topper (topperc)
<details>
<summary>Changes</summary>
Rename to AllowFPR. We used to set these flags when we ran out of FPRs, but we haven't for a while. I think rephrasing as allow FPR is a bit clearer.
---
Full diff: https://github.com/llvm/llvm-project/pull/195971.diff
1 Files Affected:
- (modified) llvm/lib/Target/RISCV/RISCVCallingConv.cpp (+13-15)
``````````diff
diff --git a/llvm/lib/Target/RISCV/RISCVCallingConv.cpp b/llvm/lib/Target/RISCV/RISCVCallingConv.cpp
index c4c3475bd0515..872a879dcf9c4 100644
--- a/llvm/lib/Target/RISCV/RISCVCallingConv.cpp
+++ b/llvm/lib/Target/RISCV/RISCVCallingConv.cpp
@@ -405,12 +405,11 @@ static bool CC_RISCV_Impl(unsigned ValNo, MVT ValVT, MVT LocVT,
ValNo > 1)
return true;
- // UseGPRForF16_F32 if targeting one of the soft-float ABIs, if passing a
- // variadic argument, or if no F16/F32 argument registers are available.
- bool UseGPRForF16_F32 = true;
- // UseGPRForF64 if targeting soft-float ABIs or an FLEN=32 ABI, if passing a
- // variadic argument, or if no F64 argument registers are available.
- bool UseGPRForF64 = true;
+ // AllowFPRForF16_F32 if targeting an FLEN>=32 ABI and the argument isn't
+ // variadic.
+ bool AllowFPRForF16_F32 = false;
+ // UseFPRForF64 if targeting an FLEN>=64 ABI and the argument isn't variadic.
+ bool AllowFPRForF64 = false;
RISCVABI::ABI ABI = Subtarget.getTargetABI();
switch (ABI) {
@@ -421,32 +420,31 @@ static bool CC_RISCV_Impl(unsigned ValNo, MVT ValVT, MVT LocVT,
case RISCVABI::ABI_LP64:
case RISCVABI::ABI_LP64E:
break;
- case RISCVABI::ABI_ILP32F:
- case RISCVABI::ABI_LP64F:
- UseGPRForF16_F32 = ArgFlags.isVarArg();
- break;
case RISCVABI::ABI_ILP32D:
case RISCVABI::ABI_LP64D:
- UseGPRForF16_F32 = ArgFlags.isVarArg();
- UseGPRForF64 = ArgFlags.isVarArg();
+ AllowFPRForF64 = !ArgFlags.isVarArg();
+ [[fallthrough]];
+ case RISCVABI::ABI_ILP32F:
+ case RISCVABI::ABI_LP64F:
+ AllowFPRForF16_F32 = !ArgFlags.isVarArg();
break;
}
- if ((LocVT == MVT::f16 || LocVT == MVT::bf16) && !UseGPRForF16_F32) {
+ if ((LocVT == MVT::f16 || LocVT == MVT::bf16) && AllowFPRForF16_F32) {
if (MCRegister Reg = State.AllocateReg(ArgFPR16s)) {
State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
return false;
}
}
- if (LocVT == MVT::f32 && !UseGPRForF16_F32) {
+ if (LocVT == MVT::f32 && AllowFPRForF16_F32) {
if (MCRegister Reg = State.AllocateReg(ArgFPR32s)) {
State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
return false;
}
}
- if (LocVT == MVT::f64 && !UseGPRForF64) {
+ if (LocVT == MVT::f64 && AllowFPRForF64) {
if (MCRegister Reg = State.AllocateReg(ArgFPR64s)) {
State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
return false;
``````````
</details>
https://github.com/llvm/llvm-project/pull/195971
More information about the llvm-commits
mailing list