[llvm] [AMDGPU] Allocate i1 argument to SGPRs (PR #72461)
Jun Wang via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 25 11:17:42 PST 2024
================
@@ -185,9 +185,12 @@ def CSR_AMDGPU_NoRegs : CalleeSavedRegs<(add)>;
// Calling convention for leaf functions
def CC_AMDGPU_Func : CallingConv<[
CCIfByVal<CCPassByVal<4, 4>>,
- CCIfType<[i1], CCPromoteToType<i32>>,
CCIfType<[i8, i16], CCIfExtend<CCPromoteToType<i32>>>,
+ CCIfType<[i1] , CCCustom<"CC_AMDGPU_Custom_I1">>,
+
+ CCIfType<[i1], CCPromoteToType<i32>>,
----------------
jwanggit86 wrote:
I think the promotion needs to be done regardless of inreg. The problem is as follows:
```
foo(a bunch of args, i1 %argX, ...)
```
If the bunch of args (i1 or inreg) before argX takes all the SGPRs, then argX is going to get a VGPR regardless of inreg or not. If it's not promoted to i32, we end up with the COPY from 32b VGPR to 64b VGPR as shown above.
https://github.com/llvm/llvm-project/pull/72461
More information about the llvm-commits
mailing list