[llvm] [RISCV] Rename and invert UseGPRForF16_F32/UseGPRForF16_F32. (PR #195971)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Tue May 5 17:58:25 PDT 2026
https://github.com/topperc created https://github.com/llvm/llvm-project/pull/195971
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.
>From df491d094de1e669405190e436fb6b080789dbf8 Mon Sep 17 00:00:00 2001
From: Craig Topper <craig.topper at sifive.com>
Date: Tue, 5 May 2026 17:53:32 -0700
Subject: [PATCH] [RISCV] Rename and invert UseGPRForF16_F32/UseGPRForF16_F32.
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.
---
llvm/lib/Target/RISCV/RISCVCallingConv.cpp | 28 ++++++++++------------
1 file changed, 13 insertions(+), 15 deletions(-)
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;
More information about the llvm-commits
mailing list