diff options
Diffstat (limited to 'llvm/test/CodeGen/AMDGPU/sp-too-many-input-sgprs.ll')
-rw-r--r-- | llvm/test/CodeGen/AMDGPU/sp-too-many-input-sgprs.ll | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/AMDGPU/sp-too-many-input-sgprs.ll b/llvm/test/CodeGen/AMDGPU/sp-too-many-input-sgprs.ll new file mode 100644 index 00000000000..e1f6eb715a3 --- /dev/null +++ b/llvm/test/CodeGen/AMDGPU/sp-too-many-input-sgprs.ll @@ -0,0 +1,102 @@ +; RUN: llc -mtriple=amdgcn-mesa-mesa3d -verify-machineinstrs < %s | FileCheck -check-prefixes=MESA3D,ALL %s +; RUN: llc -mtriple=amdgcn-- -verify-machineinstrs < %s | FileCheck -check-prefixes=UNKNOWN,ALL %s + +; Make sure shaders pick a workable SP with > 32 input SGPRs. +; FIXME: Doesn't seem to be getting initial value from right register? + +; ALL-LABEL: {{^}}too_many_input_sgprs_32: +; MESA3D-NOT: s34 +; MESA3D: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s34 offset:4 + +; Happens to end up in s32 anyway +; UNKNOWN-NOT: s32 +; UNKNOWN: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s32 offset:4 +define amdgpu_ps i32 @too_many_input_sgprs_32(i32 inreg %arg, i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3, i32 inreg %arg4, i32 inreg %arg5, i32 inreg %arg6, i32 inreg %arg7, + i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15, + i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23, + i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31) { +bb: + %alloca = alloca i32, align 4, addrspace(5) + store volatile i32 0, i32 addrspace(5)* %alloca + %tmp = add i32 %arg, %arg1 + %tmp32 = add i32 %tmp, %arg2 + %tmp33 = add i32 %tmp32, %arg3 + %tmp34 = add i32 %tmp33, %arg4 + %tmp35 = add i32 %tmp34, %arg5 + %tmp36 = add i32 %tmp35, %arg6 + %tmp37 = add i32 %tmp36, %arg7 + %tmp38 = add i32 %tmp37, %arg8 + %tmp39 = add i32 %tmp38, %arg9 + %tmp40 = add i32 %tmp39, %arg10 + %tmp41 = add i32 %tmp40, %arg11 + %tmp42 = add i32 %tmp41, %arg12 + %tmp43 = add i32 %tmp42, %arg13 + %tmp44 = add i32 %tmp43, %arg14 + %tmp45 = add i32 %tmp44, %arg15 + %tmp46 = add i32 %tmp45, %arg16 + %tmp47 = add i32 %tmp46, %arg17 + %tmp48 = add i32 %tmp47, %arg18 + %tmp49 = add i32 %tmp48, %arg19 + %tmp50 = add i32 %tmp49, %arg20 + %tmp51 = add i32 %tmp50, %arg21 + %tmp52 = add i32 %tmp51, %arg22 + %tmp53 = add i32 %tmp52, %arg23 + %tmp54 = add i32 %tmp53, %arg24 + %tmp55 = add i32 %tmp54, %arg25 + %tmp56 = add i32 %tmp55, %arg26 + %tmp57 = add i32 %tmp56, %arg27 + %tmp58 = add i32 %tmp57, %arg28 + %tmp59 = add i32 %tmp58, %arg29 + %tmp60 = add i32 %tmp59, %arg30 + %tmp61 = add i32 %tmp60, %arg31 + ret i32 %tmp61 +} + +; ALL-LABEL: {{^}}too_many_input_sgprs_33: +; MESA3D-NOT: s35 +; MESA3D: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s35 offset:4 + +; UNKNOWN-NOT: s33 +; UNKNOWN: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s33 offset:4 +define amdgpu_ps i32 @too_many_input_sgprs_33(i32 inreg %arg, i32 inreg %arg1, i32 inreg %arg2, i32 inreg %arg3, i32 inreg %arg4, i32 inreg %arg5, i32 inreg %arg6, i32 inreg %arg7, + i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15, + i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23, + i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31, + i32 inreg %arg32) { +bb: + %alloca = alloca i32, align 4, addrspace(5) + store volatile i32 0, i32 addrspace(5)* %alloca + %tmp = add i32 %arg, %arg1 + %tmp32 = add i32 %tmp, %arg2 + %tmp33 = add i32 %tmp32, %arg3 + %tmp34 = add i32 %tmp33, %arg4 + %tmp35 = add i32 %tmp34, %arg5 + %tmp36 = add i32 %tmp35, %arg6 + %tmp37 = add i32 %tmp36, %arg7 + %tmp38 = add i32 %tmp37, %arg8 + %tmp39 = add i32 %tmp38, %arg9 + %tmp40 = add i32 %tmp39, %arg10 + %tmp41 = add i32 %tmp40, %arg11 + %tmp42 = add i32 %tmp41, %arg12 + %tmp43 = add i32 %tmp42, %arg13 + %tmp44 = add i32 %tmp43, %arg14 + %tmp45 = add i32 %tmp44, %arg15 + %tmp46 = add i32 %tmp45, %arg16 + %tmp47 = add i32 %tmp46, %arg17 + %tmp48 = add i32 %tmp47, %arg18 + %tmp49 = add i32 %tmp48, %arg19 + %tmp50 = add i32 %tmp49, %arg20 + %tmp51 = add i32 %tmp50, %arg21 + %tmp52 = add i32 %tmp51, %arg22 + %tmp53 = add i32 %tmp52, %arg23 + %tmp54 = add i32 %tmp53, %arg24 + %tmp55 = add i32 %tmp54, %arg25 + %tmp56 = add i32 %tmp55, %arg26 + %tmp57 = add i32 %tmp56, %arg27 + %tmp58 = add i32 %tmp57, %arg28 + %tmp59 = add i32 %tmp58, %arg29 + %tmp60 = add i32 %tmp59, %arg30 + %tmp61 = add i32 %tmp60, %arg31 + %tmp62 = add i32 %tmp61, %arg32 + ret i32 %tmp62 +} |