[RISCV] Support 'f' Inline Assembly Constraint
[llvm-core.git] / test / CodeGen / AMDGPU / sp-too-many-input-sgprs.ll
blobe1f6eb715a312ceaa4a1074c792f15770bc025ee
1 ; RUN: llc -mtriple=amdgcn-mesa-mesa3d -verify-machineinstrs < %s | FileCheck -check-prefixes=MESA3D,ALL %s
2 ; RUN: llc -mtriple=amdgcn-- -verify-machineinstrs < %s | FileCheck -check-prefixes=UNKNOWN,ALL %s
4 ; Make sure shaders pick a workable SP with > 32 input SGPRs.
5 ; FIXME: Doesn't seem to be getting initial value from right register?
7 ; ALL-LABEL: {{^}}too_many_input_sgprs_32:
8 ; MESA3D-NOT: s34
9 ; MESA3D: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s34 offset:4
11 ; Happens to end up in s32 anyway
12 ; UNKNOWN-NOT: s32
13 ; UNKNOWN: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s32 offset:4
14 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,
15                                               i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15,
16                                               i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23,
17                                               i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31) {
18 bb:
19   %alloca = alloca i32, align 4, addrspace(5)
20   store volatile i32 0, i32 addrspace(5)* %alloca
21   %tmp = add i32 %arg, %arg1
22   %tmp32 = add i32 %tmp, %arg2
23   %tmp33 = add i32 %tmp32, %arg3
24   %tmp34 = add i32 %tmp33, %arg4
25   %tmp35 = add i32 %tmp34, %arg5
26   %tmp36 = add i32 %tmp35, %arg6
27   %tmp37 = add i32 %tmp36, %arg7
28   %tmp38 = add i32 %tmp37, %arg8
29   %tmp39 = add i32 %tmp38, %arg9
30   %tmp40 = add i32 %tmp39, %arg10
31   %tmp41 = add i32 %tmp40, %arg11
32   %tmp42 = add i32 %tmp41, %arg12
33   %tmp43 = add i32 %tmp42, %arg13
34   %tmp44 = add i32 %tmp43, %arg14
35   %tmp45 = add i32 %tmp44, %arg15
36   %tmp46 = add i32 %tmp45, %arg16
37   %tmp47 = add i32 %tmp46, %arg17
38   %tmp48 = add i32 %tmp47, %arg18
39   %tmp49 = add i32 %tmp48, %arg19
40   %tmp50 = add i32 %tmp49, %arg20
41   %tmp51 = add i32 %tmp50, %arg21
42   %tmp52 = add i32 %tmp51, %arg22
43   %tmp53 = add i32 %tmp52, %arg23
44   %tmp54 = add i32 %tmp53, %arg24
45   %tmp55 = add i32 %tmp54, %arg25
46   %tmp56 = add i32 %tmp55, %arg26
47   %tmp57 = add i32 %tmp56, %arg27
48   %tmp58 = add i32 %tmp57, %arg28
49   %tmp59 = add i32 %tmp58, %arg29
50   %tmp60 = add i32 %tmp59, %arg30
51   %tmp61 = add i32 %tmp60, %arg31
52   ret i32 %tmp61
55 ; ALL-LABEL: {{^}}too_many_input_sgprs_33:
56 ; MESA3D-NOT: s35
57 ; MESA3D: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s35 offset:4
59 ; UNKNOWN-NOT: s33
60 ; UNKNOWN: buffer_store_dword v{{[0-9]+}}, off, s{{\[[0-9]+:[0-9]+\]}}, s33 offset:4
61 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,
62                                               i32 inreg %arg8, i32 inreg %arg9, i32 inreg %arg10, i32 inreg %arg11, i32 inreg %arg12, i32 inreg %arg13, i32 inreg %arg14, i32 inreg %arg15,
63                                               i32 inreg %arg16, i32 inreg %arg17, i32 inreg %arg18, i32 inreg %arg19, i32 inreg %arg20, i32 inreg %arg21, i32 inreg %arg22, i32 inreg %arg23,
64                                               i32 inreg %arg24, i32 inreg %arg25, i32 inreg %arg26, i32 inreg %arg27, i32 inreg %arg28, i32 inreg %arg29, i32 inreg %arg30, i32 inreg %arg31,
65                                               i32 inreg %arg32) {
66 bb:
67   %alloca = alloca i32, align 4, addrspace(5)
68   store volatile i32 0, i32 addrspace(5)* %alloca
69   %tmp = add i32 %arg, %arg1
70   %tmp32 = add i32 %tmp, %arg2
71   %tmp33 = add i32 %tmp32, %arg3
72   %tmp34 = add i32 %tmp33, %arg4
73   %tmp35 = add i32 %tmp34, %arg5
74   %tmp36 = add i32 %tmp35, %arg6
75   %tmp37 = add i32 %tmp36, %arg7
76   %tmp38 = add i32 %tmp37, %arg8
77   %tmp39 = add i32 %tmp38, %arg9
78   %tmp40 = add i32 %tmp39, %arg10
79   %tmp41 = add i32 %tmp40, %arg11
80   %tmp42 = add i32 %tmp41, %arg12
81   %tmp43 = add i32 %tmp42, %arg13
82   %tmp44 = add i32 %tmp43, %arg14
83   %tmp45 = add i32 %tmp44, %arg15
84   %tmp46 = add i32 %tmp45, %arg16
85   %tmp47 = add i32 %tmp46, %arg17
86   %tmp48 = add i32 %tmp47, %arg18
87   %tmp49 = add i32 %tmp48, %arg19
88   %tmp50 = add i32 %tmp49, %arg20
89   %tmp51 = add i32 %tmp50, %arg21
90   %tmp52 = add i32 %tmp51, %arg22
91   %tmp53 = add i32 %tmp52, %arg23
92   %tmp54 = add i32 %tmp53, %arg24
93   %tmp55 = add i32 %tmp54, %arg25
94   %tmp56 = add i32 %tmp55, %arg26
95   %tmp57 = add i32 %tmp56, %arg27
96   %tmp58 = add i32 %tmp57, %arg28
97   %tmp59 = add i32 %tmp58, %arg29
98   %tmp60 = add i32 %tmp59, %arg30
99   %tmp61 = add i32 %tmp60, %arg31
100   %tmp62 = add i32 %tmp61, %arg32
101   ret i32 %tmp62