[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / schedule-amdgpu-tracker-physreg.ll
blob570ea4b7132aa68bd9e2a5a2349d133c00ccf0be
1 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tahiti -amdgpu-s-branch-bits=5 -amdgpu-long-branch-factor=0  < %s | FileCheck --check-prefix=GCN %s
2 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=tahiti -amdgpu-s-branch-bits=5 -amdgpu-long-branch-factor=0 -amdgpu-use-amdgpu-trackers=1  < %s | FileCheck --check-prefix=GCN-GCNTRACKERS %s
4 ; CHECK-LABEL: {{^}}spill:
5 ; GCN:    NumSgprs: 104
6 ; GCN-GCNTRACKERS:    NumSgprs: 104
7 ; GCN:    NumVgprs: 1
8 ; GCN-GCNTRACKERS:    NumVgprs: 2
9 ; GCN:    ScratchSize: 0
10 ; GCN-GCNTRACKERS:    ScratchSize: 0
11 ; GCN:    Occupancy: 5
12 ; GCN-GCNTRACKERS:    Occupancy: 5
14 ; FIXME: GCN Trackers do not track pressure from PhysRegs, so scheduling is actually worse
16 define amdgpu_kernel void @spill(ptr addrspace(1) %arg, i32 %cnd) #0 {
17 entry:
18   %sgpr0 = tail call i32 asm sideeffect "s_mov_b32 s0, 0", "={s0}"() #0
19   %sgpr1 = tail call i32 asm sideeffect "s_mov_b32 s1, 0", "={s1}"() #0
20   %sgpr2 = tail call i32 asm sideeffect "s_mov_b32 s2, 0", "={s2}"() #0
21   %sgpr3 = tail call i32 asm sideeffect "s_mov_b32 s3, 0", "={s3}"() #0
22   %sgpr4 = tail call i32 asm sideeffect "s_mov_b32 s4, 0", "={s4}"() #0
23   %sgpr5 = tail call i32 asm sideeffect "s_mov_b32 s5, 0", "={s5}"() #0
24   %sgpr6 = tail call i32 asm sideeffect "s_mov_b32 s6, 0", "={s6}"() #0
25   %sgpr7 = tail call i32 asm sideeffect "s_mov_b32 s7, 0", "={s7}"() #0
26   %sgpr8 = tail call i32 asm sideeffect "s_mov_b32 s8, 0", "={s8}"() #0
27   %sgpr9 = tail call i32 asm sideeffect "s_mov_b32 s9, 0", "={s9}"() #0
28   %sgpr10 = tail call i32 asm sideeffect "s_mov_b32 s10, 0", "={s10}"() #0
29   %sgpr11 = tail call i32 asm sideeffect "s_mov_b32 s11, 0", "={s11}"() #0
30   %sgpr12 = tail call i32 asm sideeffect "s_mov_b32 s12, 0", "={s12}"() #0
31   %sgpr13 = tail call i32 asm sideeffect "s_mov_b32 s13, 0", "={s13}"() #0
32   %sgpr14 = tail call i32 asm sideeffect "s_mov_b32 s14, 0", "={s14}"() #0
33   %sgpr15 = tail call i32 asm sideeffect "s_mov_b32 s15, 0", "={s15}"() #0
34   %sgpr16 = tail call i32 asm sideeffect "s_mov_b32 s16, 0", "={s16}"() #0
35   %sgpr17 = tail call i32 asm sideeffect "s_mov_b32 s17, 0", "={s17}"() #0
36   %sgpr18 = tail call i32 asm sideeffect "s_mov_b32 s18, 0", "={s18}"() #0
37   %sgpr19 = tail call i32 asm sideeffect "s_mov_b32 s19, 0", "={s19}"() #0
38   %sgpr20 = tail call i32 asm sideeffect "s_mov_b32 s20, 0", "={s20}"() #0
39   %sgpr21 = tail call i32 asm sideeffect "s_mov_b32 s21, 0", "={s21}"() #0
40   %sgpr22 = tail call i32 asm sideeffect "s_mov_b32 s22, 0", "={s22}"() #0
41   %sgpr23 = tail call i32 asm sideeffect "s_mov_b32 s23, 0", "={s23}"() #0
42   %sgpr24 = tail call i32 asm sideeffect "s_mov_b32 s24, 0", "={s24}"() #0
43   %sgpr25 = tail call i32 asm sideeffect "s_mov_b32 s25, 0", "={s25}"() #0
44   %sgpr26 = tail call i32 asm sideeffect "s_mov_b32 s26, 0", "={s26}"() #0
45   %sgpr27 = tail call i32 asm sideeffect "s_mov_b32 s27, 0", "={s27}"() #0
46   %sgpr28 = tail call i32 asm sideeffect "s_mov_b32 s28, 0", "={s28}"() #0
47   %sgpr29 = tail call i32 asm sideeffect "s_mov_b32 s29, 0", "={s29}"() #0
48   %sgpr30 = tail call i32 asm sideeffect "s_mov_b32 s30, 0", "={s30}"() #0
49   %sgpr31 = tail call i32 asm sideeffect "s_mov_b32 s31, 0", "={s31}"() #0
50   %sgpr32 = tail call i32 asm sideeffect "s_mov_b32 s32, 0", "={s32}"() #0
51   %sgpr33 = tail call i32 asm sideeffect "s_mov_b32 s33, 0", "={s33}"() #0
52   %sgpr34 = tail call i32 asm sideeffect "s_mov_b32 s34, 0", "={s34}"() #0
53   %sgpr35 = tail call i32 asm sideeffect "s_mov_b32 s35, 0", "={s35}"() #0
54   %sgpr36 = tail call i32 asm sideeffect "s_mov_b32 s36, 0", "={s36}"() #0
55   %sgpr37 = tail call i32 asm sideeffect "s_mov_b32 s37, 0", "={s37}"() #0
56   %sgpr38 = tail call i32 asm sideeffect "s_mov_b32 s38, 0", "={s38}"() #0
57   %sgpr39 = tail call i32 asm sideeffect "s_mov_b32 s39, 0", "={s39}"() #0
58   %sgpr40 = tail call i32 asm sideeffect "s_mov_b32 s40, 0", "={s40}"() #0
59   %sgpr41 = tail call i32 asm sideeffect "s_mov_b32 s41, 0", "={s41}"() #0
60   %sgpr42 = tail call i32 asm sideeffect "s_mov_b32 s42, 0", "={s42}"() #0
61   %sgpr43 = tail call i32 asm sideeffect "s_mov_b32 s43, 0", "={s43}"() #0
62   %sgpr44 = tail call i32 asm sideeffect "s_mov_b32 s44, 0", "={s44}"() #0
63   %sgpr45 = tail call i32 asm sideeffect "s_mov_b32 s45, 0", "={s45}"() #0
64   %sgpr46 = tail call i32 asm sideeffect "s_mov_b32 s46, 0", "={s46}"() #0
65   %sgpr47 = tail call i32 asm sideeffect "s_mov_b32 s47, 0", "={s47}"() #0
66   %sgpr48 = tail call i32 asm sideeffect "s_mov_b32 s48, 0", "={s48}"() #0
67   %sgpr49 = tail call i32 asm sideeffect "s_mov_b32 s49, 0", "={s49}"() #0
68   %sgpr50 = tail call i32 asm sideeffect "s_mov_b32 s50, 0", "={s50}"() #0
69   %sgpr51 = tail call i32 asm sideeffect "s_mov_b32 s51, 0", "={s51}"() #0
70   %sgpr52 = tail call i32 asm sideeffect "s_mov_b32 s52, 0", "={s52}"() #0
71   %sgpr53 = tail call i32 asm sideeffect "s_mov_b32 s53, 0", "={s53}"() #0
72   %sgpr54 = tail call i32 asm sideeffect "s_mov_b32 s54, 0", "={s54}"() #0
73   %sgpr55 = tail call i32 asm sideeffect "s_mov_b32 s55, 0", "={s55}"() #0
74   %sgpr56 = tail call i32 asm sideeffect "s_mov_b32 s56, 0", "={s56}"() #0
75   %sgpr57 = tail call i32 asm sideeffect "s_mov_b32 s57, 0", "={s57}"() #0
76   %sgpr58 = tail call i32 asm sideeffect "s_mov_b32 s58, 0", "={s58}"() #0
77   %sgpr59 = tail call i32 asm sideeffect "s_mov_b32 s59, 0", "={s59}"() #0
78   %sgpr60 = tail call i32 asm sideeffect "s_mov_b32 s60, 0", "={s60}"() #0
79   %sgpr61 = tail call i32 asm sideeffect "s_mov_b32 s61, 0", "={s61}"() #0
80   %sgpr62 = tail call i32 asm sideeffect "s_mov_b32 s62, 0", "={s62}"() #0
81   %sgpr63 = tail call i32 asm sideeffect "s_mov_b32 s63, 0", "={s63}"() #0
82   %sgpr64 = tail call i32 asm sideeffect "s_mov_b32 s64, 0", "={s64}"() #0
83   %sgpr65 = tail call i32 asm sideeffect "s_mov_b32 s65, 0", "={s65}"() #0
84   %sgpr66 = tail call i32 asm sideeffect "s_mov_b32 s66, 0", "={s66}"() #0
85   %sgpr67 = tail call i32 asm sideeffect "s_mov_b32 s67, 0", "={s67}"() #0
86   %sgpr68 = tail call i32 asm sideeffect "s_mov_b32 s68, 0", "={s68}"() #0
87   %sgpr69 = tail call i32 asm sideeffect "s_mov_b32 s69, 0", "={s69}"() #0
88   %sgpr70 = tail call i32 asm sideeffect "s_mov_b32 s70, 0", "={s70}"() #0
89   %sgpr71 = tail call i32 asm sideeffect "s_mov_b32 s71, 0", "={s71}"() #0
90   %sgpr72 = tail call i32 asm sideeffect "s_mov_b32 s72, 0", "={s72}"() #0
91   %sgpr73 = tail call i32 asm sideeffect "s_mov_b32 s73, 0", "={s73}"() #0
92   %sgpr74 = tail call i32 asm sideeffect "s_mov_b32 s74, 0", "={s74}"() #0
93   %sgpr75 = tail call i32 asm sideeffect "s_mov_b32 s75, 0", "={s75}"() #0
94   %sgpr76 = tail call i32 asm sideeffect "s_mov_b32 s76, 0", "={s76}"() #0
95   %sgpr77 = tail call i32 asm sideeffect "s_mov_b32 s77, 0", "={s77}"() #0
96   %sgpr78 = tail call i32 asm sideeffect "s_mov_b32 s78, 0", "={s78}"() #0
97   %sgpr79 = tail call i32 asm sideeffect "s_mov_b32 s79, 0", "={s79}"() #0
98   %sgpr80 = tail call i32 asm sideeffect "s_mov_b32 s80, 0", "={s80}"() #0
99   %sgpr81 = tail call i32 asm sideeffect "s_mov_b32 s81, 0", "={s81}"() #0
100   %sgpr82 = tail call i32 asm sideeffect "s_mov_b32 s82, 0", "={s82}"() #0
101   %sgpr83 = tail call i32 asm sideeffect "s_mov_b32 s83, 0", "={s83}"() #0
102   %sgpr84 = tail call i32 asm sideeffect "s_mov_b32 s84, 0", "={s84}"() #0
103   %sgpr85 = tail call i32 asm sideeffect "s_mov_b32 s85, 0", "={s85}"() #0
104   %sgpr86 = tail call i32 asm sideeffect "s_mov_b32 s86, 0", "={s86}"() #0
105   %sgpr87 = tail call i32 asm sideeffect "s_mov_b32 s87, 0", "={s87}"() #0
106   %sgpr88 = tail call i32 asm sideeffect "s_mov_b32 s88, 0", "={s88}"() #0
107   %sgpr89 = tail call i32 asm sideeffect "s_mov_b32 s89, 0", "={s89}"() #0
108   %sgpr90 = tail call i32 asm sideeffect "s_mov_b32 s90, 0", "={s90}"() #0
109   %sgpr91 = tail call i32 asm sideeffect "s_mov_b32 s91, 0", "={s91}"() #0
110   %sgpr92 = tail call i32 asm sideeffect "s_mov_b32 s92, 0", "={s92}"() #0
111   %sgpr93 = tail call i32 asm sideeffect "s_mov_b32 s93, 0", "={s93}"() #0
112   %sgpr94 = tail call i32 asm sideeffect "s_mov_b32 s94, 0", "={s94}"() #0
113   %sgpr95 = tail call i32 asm sideeffect "s_mov_b32 s95, 0", "={s95}"() #0
114   %sgpr96 = tail call i32 asm sideeffect "s_mov_b32 s96, 0", "={s96}"() #0
115   %sgpr97 = tail call i32 asm sideeffect "s_mov_b32 s97, 0", "={s97}"() #0
116   %sgpr98 = tail call i32 asm sideeffect "s_mov_b32 s98, 0", "={s98}"() #0
117   %sgpr99 = tail call i32 asm sideeffect "s_mov_b32 s99, 0", "={s99}"() #0
118   %sgpr100 = tail call i32 asm sideeffect "s_mov_b32 s100, 0", "={s100}"() #0
119   %sgpr101 = tail call i32 asm sideeffect "s_mov_b32 s101, 0", "={s101}"() #0
120   %vcc_lo = tail call i32 asm sideeffect "s_mov_b32 $0, 0", "={vcc_lo}"() #0
121   %vcc_hi = tail call i32 asm sideeffect "s_mov_b32 $0, 0", "={vcc_hi}"() #0
122   %cmp = icmp eq i32 %cnd, 0
123   br i1 %cmp, label %bb3, label %bb2 ; +8 dword branch
125 bb2: ; 68 bytes
126   ; 64 byte asm
127   call void asm sideeffect
128    "v_nop_e64
129     v_nop_e64
130     v_nop_e64
131     v_nop_e64
132     v_nop_e64
133     v_nop_e64
134     v_nop_e64
135     v_nop_e64",""() #0
136   br label %bb3
138 bb3:
139   tail call void asm sideeffect "; reg use $0", "{s0}"(i32 %sgpr0) #0
140   tail call void asm sideeffect "; reg use $0", "{s1}"(i32 %sgpr1) #0
141   tail call void asm sideeffect "; reg use $0", "{s2}"(i32 %sgpr2) #0
142   tail call void asm sideeffect "; reg use $0", "{s3}"(i32 %sgpr3) #0
143   tail call void asm sideeffect "; reg use $0", "{s4}"(i32 %sgpr4) #0
144   tail call void asm sideeffect "; reg use $0", "{s5}"(i32 %sgpr5) #0
145   tail call void asm sideeffect "; reg use $0", "{s6}"(i32 %sgpr6) #0
146   tail call void asm sideeffect "; reg use $0", "{s7}"(i32 %sgpr7) #0
147   tail call void asm sideeffect "; reg use $0", "{s8}"(i32 %sgpr8) #0
148   tail call void asm sideeffect "; reg use $0", "{s9}"(i32 %sgpr9) #0
149   tail call void asm sideeffect "; reg use $0", "{s10}"(i32 %sgpr10) #0
150   tail call void asm sideeffect "; reg use $0", "{s11}"(i32 %sgpr11) #0
151   tail call void asm sideeffect "; reg use $0", "{s12}"(i32 %sgpr12) #0
152   tail call void asm sideeffect "; reg use $0", "{s13}"(i32 %sgpr13) #0
153   tail call void asm sideeffect "; reg use $0", "{s14}"(i32 %sgpr14) #0
154   tail call void asm sideeffect "; reg use $0", "{s15}"(i32 %sgpr15) #0
155   tail call void asm sideeffect "; reg use $0", "{s16}"(i32 %sgpr16) #0
156   tail call void asm sideeffect "; reg use $0", "{s17}"(i32 %sgpr17) #0
157   tail call void asm sideeffect "; reg use $0", "{s18}"(i32 %sgpr18) #0
158   tail call void asm sideeffect "; reg use $0", "{s19}"(i32 %sgpr19) #0
159   tail call void asm sideeffect "; reg use $0", "{s20}"(i32 %sgpr20) #0
160   tail call void asm sideeffect "; reg use $0", "{s21}"(i32 %sgpr21) #0
161   tail call void asm sideeffect "; reg use $0", "{s22}"(i32 %sgpr22) #0
162   tail call void asm sideeffect "; reg use $0", "{s23}"(i32 %sgpr23) #0
163   tail call void asm sideeffect "; reg use $0", "{s24}"(i32 %sgpr24) #0
164   tail call void asm sideeffect "; reg use $0", "{s25}"(i32 %sgpr25) #0
165   tail call void asm sideeffect "; reg use $0", "{s26}"(i32 %sgpr26) #0
166   tail call void asm sideeffect "; reg use $0", "{s27}"(i32 %sgpr27) #0
167   tail call void asm sideeffect "; reg use $0", "{s28}"(i32 %sgpr28) #0
168   tail call void asm sideeffect "; reg use $0", "{s29}"(i32 %sgpr29) #0
169   tail call void asm sideeffect "; reg use $0", "{s30}"(i32 %sgpr30) #0
170   tail call void asm sideeffect "; reg use $0", "{s31}"(i32 %sgpr31) #0
171   tail call void asm sideeffect "; reg use $0", "{s32}"(i32 %sgpr32) #0
172   tail call void asm sideeffect "; reg use $0", "{s33}"(i32 %sgpr33) #0
173   tail call void asm sideeffect "; reg use $0", "{s34}"(i32 %sgpr34) #0
174   tail call void asm sideeffect "; reg use $0", "{s35}"(i32 %sgpr35) #0
175   tail call void asm sideeffect "; reg use $0", "{s36}"(i32 %sgpr36) #0
176   tail call void asm sideeffect "; reg use $0", "{s37}"(i32 %sgpr37) #0
177   tail call void asm sideeffect "; reg use $0", "{s38}"(i32 %sgpr38) #0
178   tail call void asm sideeffect "; reg use $0", "{s39}"(i32 %sgpr39) #0
179   tail call void asm sideeffect "; reg use $0", "{s40}"(i32 %sgpr40) #0
180   tail call void asm sideeffect "; reg use $0", "{s41}"(i32 %sgpr41) #0
181   tail call void asm sideeffect "; reg use $0", "{s42}"(i32 %sgpr42) #0
182   tail call void asm sideeffect "; reg use $0", "{s43}"(i32 %sgpr43) #0
183   tail call void asm sideeffect "; reg use $0", "{s44}"(i32 %sgpr44) #0
184   tail call void asm sideeffect "; reg use $0", "{s45}"(i32 %sgpr45) #0
185   tail call void asm sideeffect "; reg use $0", "{s46}"(i32 %sgpr46) #0
186   tail call void asm sideeffect "; reg use $0", "{s47}"(i32 %sgpr47) #0
187   tail call void asm sideeffect "; reg use $0", "{s48}"(i32 %sgpr48) #0
188   tail call void asm sideeffect "; reg use $0", "{s49}"(i32 %sgpr49) #0
189   tail call void asm sideeffect "; reg use $0", "{s50}"(i32 %sgpr50) #0
190   tail call void asm sideeffect "; reg use $0", "{s51}"(i32 %sgpr51) #0
191   tail call void asm sideeffect "; reg use $0", "{s52}"(i32 %sgpr52) #0
192   tail call void asm sideeffect "; reg use $0", "{s53}"(i32 %sgpr53) #0
193   tail call void asm sideeffect "; reg use $0", "{s54}"(i32 %sgpr54) #0
194   tail call void asm sideeffect "; reg use $0", "{s55}"(i32 %sgpr55) #0
195   tail call void asm sideeffect "; reg use $0", "{s56}"(i32 %sgpr56) #0
196   tail call void asm sideeffect "; reg use $0", "{s57}"(i32 %sgpr57) #0
197   tail call void asm sideeffect "; reg use $0", "{s58}"(i32 %sgpr58) #0
198   tail call void asm sideeffect "; reg use $0", "{s59}"(i32 %sgpr59) #0
199   tail call void asm sideeffect "; reg use $0", "{s60}"(i32 %sgpr60) #0
200   tail call void asm sideeffect "; reg use $0", "{s61}"(i32 %sgpr61) #0
201   tail call void asm sideeffect "; reg use $0", "{s62}"(i32 %sgpr62) #0
202   tail call void asm sideeffect "; reg use $0", "{s63}"(i32 %sgpr63) #0
203   tail call void asm sideeffect "; reg use $0", "{s64}"(i32 %sgpr64) #0
204   tail call void asm sideeffect "; reg use $0", "{s65}"(i32 %sgpr65) #0
205   tail call void asm sideeffect "; reg use $0", "{s66}"(i32 %sgpr66) #0
206   tail call void asm sideeffect "; reg use $0", "{s67}"(i32 %sgpr67) #0
207   tail call void asm sideeffect "; reg use $0", "{s68}"(i32 %sgpr68) #0
208   tail call void asm sideeffect "; reg use $0", "{s69}"(i32 %sgpr69) #0
209   tail call void asm sideeffect "; reg use $0", "{s70}"(i32 %sgpr70) #0
210   tail call void asm sideeffect "; reg use $0", "{s71}"(i32 %sgpr71) #0
211   tail call void asm sideeffect "; reg use $0", "{s72}"(i32 %sgpr72) #0
212   tail call void asm sideeffect "; reg use $0", "{s73}"(i32 %sgpr73) #0
213   tail call void asm sideeffect "; reg use $0", "{s74}"(i32 %sgpr74) #0
214   tail call void asm sideeffect "; reg use $0", "{s75}"(i32 %sgpr75) #0
215   tail call void asm sideeffect "; reg use $0", "{s76}"(i32 %sgpr76) #0
216   tail call void asm sideeffect "; reg use $0", "{s77}"(i32 %sgpr77) #0
217   tail call void asm sideeffect "; reg use $0", "{s78}"(i32 %sgpr78) #0
218   tail call void asm sideeffect "; reg use $0", "{s79}"(i32 %sgpr79) #0
219   tail call void asm sideeffect "; reg use $0", "{s80}"(i32 %sgpr80) #0
220   tail call void asm sideeffect "; reg use $0", "{s81}"(i32 %sgpr81) #0
221   tail call void asm sideeffect "; reg use $0", "{s82}"(i32 %sgpr82) #0
222   tail call void asm sideeffect "; reg use $0", "{s83}"(i32 %sgpr83) #0
223   tail call void asm sideeffect "; reg use $0", "{s84}"(i32 %sgpr84) #0
224   tail call void asm sideeffect "; reg use $0", "{s85}"(i32 %sgpr85) #0
225   tail call void asm sideeffect "; reg use $0", "{s86}"(i32 %sgpr86) #0
226   tail call void asm sideeffect "; reg use $0", "{s87}"(i32 %sgpr87) #0
227   tail call void asm sideeffect "; reg use $0", "{s88}"(i32 %sgpr88) #0
228   tail call void asm sideeffect "; reg use $0", "{s89}"(i32 %sgpr89) #0
229   tail call void asm sideeffect "; reg use $0", "{s90}"(i32 %sgpr90) #0
230   tail call void asm sideeffect "; reg use $0", "{s91}"(i32 %sgpr91) #0
231   tail call void asm sideeffect "; reg use $0", "{s92}"(i32 %sgpr92) #0
232   tail call void asm sideeffect "; reg use $0", "{s93}"(i32 %sgpr93) #0
233   tail call void asm sideeffect "; reg use $0", "{s94}"(i32 %sgpr94) #0
234   tail call void asm sideeffect "; reg use $0", "{s95}"(i32 %sgpr95) #0
235   tail call void asm sideeffect "; reg use $0", "{s96}"(i32 %sgpr96) #0
236   tail call void asm sideeffect "; reg use $0", "{s97}"(i32 %sgpr97) #0
237   tail call void asm sideeffect "; reg use $0", "{s98}"(i32 %sgpr98) #0
238   tail call void asm sideeffect "; reg use $0", "{s99}"(i32 %sgpr99) #0
239   tail call void asm sideeffect "; reg use $0", "{s100}"(i32 %sgpr100) #0
240   tail call void asm sideeffect "; reg use $0", "{s101}"(i32 %sgpr101) #0
241   tail call void asm sideeffect "; reg use $0", "{vcc_lo}"(i32 %vcc_lo) #0
242   tail call void asm sideeffect "; reg use $0", "{vcc_hi}"(i32 %vcc_hi) #0
243   ret void
246 ; CHECK-LABEL: {{^}}spill_func:
247 ; GCN:    NumSgprs: 104
248 ; GCN-GCNTRACKERS:    NumSgprs: 104
249 ; GCN:    NumVgprs: 3
250 ; GCN-GCNTRACKERS:    NumVgprs: 4
251 ; GCN:    ScratchSize: 12
252 ; GCN-GCNTRACKERS:    ScratchSize: 16
254 define void @spill_func(ptr addrspace(1) %arg) #0 {
255 entry:
256   %cnd = tail call i32 @llvm.amdgcn.workgroup.id.x() #0
257   %sgpr0 = tail call i32 asm sideeffect "s_mov_b32 s0, 0", "={s0}"() #0
258   %sgpr1 = tail call i32 asm sideeffect "s_mov_b32 s1, 0", "={s1}"() #0
259   %sgpr2 = tail call i32 asm sideeffect "s_mov_b32 s2, 0", "={s2}"() #0
260   %sgpr3 = tail call i32 asm sideeffect "s_mov_b32 s3, 0", "={s3}"() #0
261   %sgpr4 = tail call i32 asm sideeffect "s_mov_b32 s4, 0", "={s4}"() #0
262   %sgpr5 = tail call i32 asm sideeffect "s_mov_b32 s5, 0", "={s5}"() #0
263   %sgpr6 = tail call i32 asm sideeffect "s_mov_b32 s6, 0", "={s6}"() #0
264   %sgpr7 = tail call i32 asm sideeffect "s_mov_b32 s7, 0", "={s7}"() #0
265   %sgpr8 = tail call i32 asm sideeffect "s_mov_b32 s8, 0", "={s8}"() #0
266   %sgpr9 = tail call i32 asm sideeffect "s_mov_b32 s9, 0", "={s9}"() #0
267   %sgpr10 = tail call i32 asm sideeffect "s_mov_b32 s10, 0", "={s10}"() #0
268   %sgpr11 = tail call i32 asm sideeffect "s_mov_b32 s11, 0", "={s11}"() #0
269   %sgpr12 = tail call i32 asm sideeffect "s_mov_b32 s12, 0", "={s12}"() #0
270   %sgpr13 = tail call i32 asm sideeffect "s_mov_b32 s13, 0", "={s13}"() #0
271   %sgpr14 = tail call i32 asm sideeffect "s_mov_b32 s14, 0", "={s14}"() #0
272   %sgpr15 = tail call i32 asm sideeffect "s_mov_b32 s15, 0", "={s15}"() #0
273   %sgpr16 = tail call i32 asm sideeffect "s_mov_b32 s16, 0", "={s16}"() #0
274   %sgpr17 = tail call i32 asm sideeffect "s_mov_b32 s17, 0", "={s17}"() #0
275   %sgpr18 = tail call i32 asm sideeffect "s_mov_b32 s18, 0", "={s18}"() #0
276   %sgpr19 = tail call i32 asm sideeffect "s_mov_b32 s19, 0", "={s19}"() #0
277   %sgpr20 = tail call i32 asm sideeffect "s_mov_b32 s20, 0", "={s20}"() #0
278   %sgpr21 = tail call i32 asm sideeffect "s_mov_b32 s21, 0", "={s21}"() #0
279   %sgpr22 = tail call i32 asm sideeffect "s_mov_b32 s22, 0", "={s22}"() #0
280   %sgpr23 = tail call i32 asm sideeffect "s_mov_b32 s23, 0", "={s23}"() #0
281   %sgpr24 = tail call i32 asm sideeffect "s_mov_b32 s24, 0", "={s24}"() #0
282   %sgpr25 = tail call i32 asm sideeffect "s_mov_b32 s25, 0", "={s25}"() #0
283   %sgpr26 = tail call i32 asm sideeffect "s_mov_b32 s26, 0", "={s26}"() #0
284   %sgpr27 = tail call i32 asm sideeffect "s_mov_b32 s27, 0", "={s27}"() #0
285   %sgpr28 = tail call i32 asm sideeffect "s_mov_b32 s28, 0", "={s28}"() #0
286   %sgpr29 = tail call i32 asm sideeffect "s_mov_b32 s29, 0", "={s29}"() #0
287   %sgpr30 = tail call i32 asm sideeffect "s_mov_b32 s30, 0", "={s30}"() #0
288   %sgpr31 = tail call i32 asm sideeffect "s_mov_b32 s31, 0", "={s31}"() #0
289   %sgpr32 = tail call i32 asm sideeffect "s_mov_b32 s32, 0", "={s32}"() #0
290   %sgpr33 = tail call i32 asm sideeffect "s_mov_b32 s33, 0", "={s33}"() #0
291   %sgpr34 = tail call i32 asm sideeffect "s_mov_b32 s34, 0", "={s34}"() #0
292   %sgpr35 = tail call i32 asm sideeffect "s_mov_b32 s35, 0", "={s35}"() #0
293   %sgpr36 = tail call i32 asm sideeffect "s_mov_b32 s36, 0", "={s36}"() #0
294   %sgpr37 = tail call i32 asm sideeffect "s_mov_b32 s37, 0", "={s37}"() #0
295   %sgpr38 = tail call i32 asm sideeffect "s_mov_b32 s38, 0", "={s38}"() #0
296   %sgpr39 = tail call i32 asm sideeffect "s_mov_b32 s39, 0", "={s39}"() #0
297   %sgpr40 = tail call i32 asm sideeffect "s_mov_b32 s40, 0", "={s40}"() #0
298   %sgpr41 = tail call i32 asm sideeffect "s_mov_b32 s41, 0", "={s41}"() #0
299   %sgpr42 = tail call i32 asm sideeffect "s_mov_b32 s42, 0", "={s42}"() #0
300   %sgpr43 = tail call i32 asm sideeffect "s_mov_b32 s43, 0", "={s43}"() #0
301   %sgpr44 = tail call i32 asm sideeffect "s_mov_b32 s44, 0", "={s44}"() #0
302   %sgpr45 = tail call i32 asm sideeffect "s_mov_b32 s45, 0", "={s45}"() #0
303   %sgpr46 = tail call i32 asm sideeffect "s_mov_b32 s46, 0", "={s46}"() #0
304   %sgpr47 = tail call i32 asm sideeffect "s_mov_b32 s47, 0", "={s47}"() #0
305   %sgpr48 = tail call i32 asm sideeffect "s_mov_b32 s48, 0", "={s48}"() #0
306   %sgpr49 = tail call i32 asm sideeffect "s_mov_b32 s49, 0", "={s49}"() #0
307   %sgpr50 = tail call i32 asm sideeffect "s_mov_b32 s50, 0", "={s50}"() #0
308   %sgpr51 = tail call i32 asm sideeffect "s_mov_b32 s51, 0", "={s51}"() #0
309   %sgpr52 = tail call i32 asm sideeffect "s_mov_b32 s52, 0", "={s52}"() #0
310   %sgpr53 = tail call i32 asm sideeffect "s_mov_b32 s53, 0", "={s53}"() #0
311   %sgpr54 = tail call i32 asm sideeffect "s_mov_b32 s54, 0", "={s54}"() #0
312   %sgpr55 = tail call i32 asm sideeffect "s_mov_b32 s55, 0", "={s55}"() #0
313   %sgpr56 = tail call i32 asm sideeffect "s_mov_b32 s56, 0", "={s56}"() #0
314   %sgpr57 = tail call i32 asm sideeffect "s_mov_b32 s57, 0", "={s57}"() #0
315   %sgpr58 = tail call i32 asm sideeffect "s_mov_b32 s58, 0", "={s58}"() #0
316   %sgpr59 = tail call i32 asm sideeffect "s_mov_b32 s59, 0", "={s59}"() #0
317   %sgpr60 = tail call i32 asm sideeffect "s_mov_b32 s60, 0", "={s60}"() #0
318   %sgpr61 = tail call i32 asm sideeffect "s_mov_b32 s61, 0", "={s61}"() #0
319   %sgpr62 = tail call i32 asm sideeffect "s_mov_b32 s62, 0", "={s62}"() #0
320   %sgpr63 = tail call i32 asm sideeffect "s_mov_b32 s63, 0", "={s63}"() #0
321   %sgpr64 = tail call i32 asm sideeffect "s_mov_b32 s64, 0", "={s64}"() #0
322   %sgpr65 = tail call i32 asm sideeffect "s_mov_b32 s65, 0", "={s65}"() #0
323   %sgpr66 = tail call i32 asm sideeffect "s_mov_b32 s66, 0", "={s66}"() #0
324   %sgpr67 = tail call i32 asm sideeffect "s_mov_b32 s67, 0", "={s67}"() #0
325   %sgpr68 = tail call i32 asm sideeffect "s_mov_b32 s68, 0", "={s68}"() #0
326   %sgpr69 = tail call i32 asm sideeffect "s_mov_b32 s69, 0", "={s69}"() #0
327   %sgpr70 = tail call i32 asm sideeffect "s_mov_b32 s70, 0", "={s70}"() #0
328   %sgpr71 = tail call i32 asm sideeffect "s_mov_b32 s71, 0", "={s71}"() #0
329   %sgpr72 = tail call i32 asm sideeffect "s_mov_b32 s72, 0", "={s72}"() #0
330   %sgpr73 = tail call i32 asm sideeffect "s_mov_b32 s73, 0", "={s73}"() #0
331   %sgpr74 = tail call i32 asm sideeffect "s_mov_b32 s74, 0", "={s74}"() #0
332   %sgpr75 = tail call i32 asm sideeffect "s_mov_b32 s75, 0", "={s75}"() #0
333   %sgpr76 = tail call i32 asm sideeffect "s_mov_b32 s76, 0", "={s76}"() #0
334   %sgpr77 = tail call i32 asm sideeffect "s_mov_b32 s77, 0", "={s77}"() #0
335   %sgpr78 = tail call i32 asm sideeffect "s_mov_b32 s78, 0", "={s78}"() #0
336   %sgpr79 = tail call i32 asm sideeffect "s_mov_b32 s79, 0", "={s79}"() #0
337   %sgpr80 = tail call i32 asm sideeffect "s_mov_b32 s80, 0", "={s80}"() #0
338   %sgpr81 = tail call i32 asm sideeffect "s_mov_b32 s81, 0", "={s81}"() #0
339   %sgpr82 = tail call i32 asm sideeffect "s_mov_b32 s82, 0", "={s82}"() #0
340   %sgpr83 = tail call i32 asm sideeffect "s_mov_b32 s83, 0", "={s83}"() #0
341   %sgpr84 = tail call i32 asm sideeffect "s_mov_b32 s84, 0", "={s84}"() #0
342   %sgpr85 = tail call i32 asm sideeffect "s_mov_b32 s85, 0", "={s85}"() #0
343   %sgpr86 = tail call i32 asm sideeffect "s_mov_b32 s86, 0", "={s86}"() #0
344   %sgpr87 = tail call i32 asm sideeffect "s_mov_b32 s87, 0", "={s87}"() #0
345   %sgpr88 = tail call i32 asm sideeffect "s_mov_b32 s88, 0", "={s88}"() #0
346   %sgpr89 = tail call i32 asm sideeffect "s_mov_b32 s89, 0", "={s89}"() #0
347   %sgpr90 = tail call i32 asm sideeffect "s_mov_b32 s90, 0", "={s90}"() #0
348   %sgpr91 = tail call i32 asm sideeffect "s_mov_b32 s91, 0", "={s91}"() #0
349   %sgpr92 = tail call i32 asm sideeffect "s_mov_b32 s92, 0", "={s92}"() #0
350   %sgpr93 = tail call i32 asm sideeffect "s_mov_b32 s93, 0", "={s93}"() #0
351   %sgpr94 = tail call i32 asm sideeffect "s_mov_b32 s94, 0", "={s94}"() #0
352   %sgpr95 = tail call i32 asm sideeffect "s_mov_b32 s95, 0", "={s95}"() #0
353   %sgpr96 = tail call i32 asm sideeffect "s_mov_b32 s96, 0", "={s96}"() #0
354   %sgpr97 = tail call i32 asm sideeffect "s_mov_b32 s97, 0", "={s97}"() #0
355   %sgpr98 = tail call i32 asm sideeffect "s_mov_b32 s98, 0", "={s98}"() #0
356   %sgpr99 = tail call i32 asm sideeffect "s_mov_b32 s99, 0", "={s99}"() #0
357   %sgpr100 = tail call i32 asm sideeffect "s_mov_b32 s100, 0", "={s100}"() #0
358   %sgpr101 = tail call i32 asm sideeffect "s_mov_b32 s101, 0", "={s101}"() #0
359   %vcc_lo = tail call i32 asm sideeffect "s_mov_b32 $0, 0", "={vcc_lo}"() #0
360   %vcc_hi = tail call i32 asm sideeffect "s_mov_b32 $0, 0", "={vcc_hi}"() #0
361   %cmp = icmp eq i32 %cnd, 0
362   br i1 %cmp, label %bb3, label %bb2 ; +8 dword branch
364 bb2: ; 68 bytes
365   ; 64 byte asm
366   call void asm sideeffect
367    "v_nop_e64
368     v_nop_e64
369     v_nop_e64
370     v_nop_e64
371     v_nop_e64
372     v_nop_e64
373     v_nop_e64
374     v_nop_e64",""() #0
375   br label %bb3
377 bb3:
378   tail call void asm sideeffect "; reg use $0", "{s0}"(i32 %sgpr0) #0
379   tail call void asm sideeffect "; reg use $0", "{s1}"(i32 %sgpr1) #0
380   tail call void asm sideeffect "; reg use $0", "{s2}"(i32 %sgpr2) #0
381   tail call void asm sideeffect "; reg use $0", "{s3}"(i32 %sgpr3) #0
382   tail call void asm sideeffect "; reg use $0", "{s4}"(i32 %sgpr4) #0
383   tail call void asm sideeffect "; reg use $0", "{s5}"(i32 %sgpr5) #0
384   tail call void asm sideeffect "; reg use $0", "{s6}"(i32 %sgpr6) #0
385   tail call void asm sideeffect "; reg use $0", "{s7}"(i32 %sgpr7) #0
386   tail call void asm sideeffect "; reg use $0", "{s8}"(i32 %sgpr8) #0
387   tail call void asm sideeffect "; reg use $0", "{s9}"(i32 %sgpr9) #0
388   tail call void asm sideeffect "; reg use $0", "{s10}"(i32 %sgpr10) #0
389   tail call void asm sideeffect "; reg use $0", "{s11}"(i32 %sgpr11) #0
390   tail call void asm sideeffect "; reg use $0", "{s12}"(i32 %sgpr12) #0
391   tail call void asm sideeffect "; reg use $0", "{s13}"(i32 %sgpr13) #0
392   tail call void asm sideeffect "; reg use $0", "{s14}"(i32 %sgpr14) #0
393   tail call void asm sideeffect "; reg use $0", "{s15}"(i32 %sgpr15) #0
394   tail call void asm sideeffect "; reg use $0", "{s16}"(i32 %sgpr16) #0
395   tail call void asm sideeffect "; reg use $0", "{s17}"(i32 %sgpr17) #0
396   tail call void asm sideeffect "; reg use $0", "{s18}"(i32 %sgpr18) #0
397   tail call void asm sideeffect "; reg use $0", "{s19}"(i32 %sgpr19) #0
398   tail call void asm sideeffect "; reg use $0", "{s20}"(i32 %sgpr20) #0
399   tail call void asm sideeffect "; reg use $0", "{s21}"(i32 %sgpr21) #0
400   tail call void asm sideeffect "; reg use $0", "{s22}"(i32 %sgpr22) #0
401   tail call void asm sideeffect "; reg use $0", "{s23}"(i32 %sgpr23) #0
402   tail call void asm sideeffect "; reg use $0", "{s24}"(i32 %sgpr24) #0
403   tail call void asm sideeffect "; reg use $0", "{s25}"(i32 %sgpr25) #0
404   tail call void asm sideeffect "; reg use $0", "{s26}"(i32 %sgpr26) #0
405   tail call void asm sideeffect "; reg use $0", "{s27}"(i32 %sgpr27) #0
406   tail call void asm sideeffect "; reg use $0", "{s28}"(i32 %sgpr28) #0
407   tail call void asm sideeffect "; reg use $0", "{s29}"(i32 %sgpr29) #0
408   tail call void asm sideeffect "; reg use $0", "{s30}"(i32 %sgpr30) #0
409   tail call void asm sideeffect "; reg use $0", "{s31}"(i32 %sgpr31) #0
410   tail call void asm sideeffect "; reg use $0", "{s32}"(i32 %sgpr32) #0
411   tail call void asm sideeffect "; reg use $0", "{s33}"(i32 %sgpr33) #0
412   tail call void asm sideeffect "; reg use $0", "{s34}"(i32 %sgpr34) #0
413   tail call void asm sideeffect "; reg use $0", "{s35}"(i32 %sgpr35) #0
414   tail call void asm sideeffect "; reg use $0", "{s36}"(i32 %sgpr36) #0
415   tail call void asm sideeffect "; reg use $0", "{s37}"(i32 %sgpr37) #0
416   tail call void asm sideeffect "; reg use $0", "{s38}"(i32 %sgpr38) #0
417   tail call void asm sideeffect "; reg use $0", "{s39}"(i32 %sgpr39) #0
418   tail call void asm sideeffect "; reg use $0", "{s40}"(i32 %sgpr40) #0
419   tail call void asm sideeffect "; reg use $0", "{s41}"(i32 %sgpr41) #0
420   tail call void asm sideeffect "; reg use $0", "{s42}"(i32 %sgpr42) #0
421   tail call void asm sideeffect "; reg use $0", "{s43}"(i32 %sgpr43) #0
422   tail call void asm sideeffect "; reg use $0", "{s44}"(i32 %sgpr44) #0
423   tail call void asm sideeffect "; reg use $0", "{s45}"(i32 %sgpr45) #0
424   tail call void asm sideeffect "; reg use $0", "{s46}"(i32 %sgpr46) #0
425   tail call void asm sideeffect "; reg use $0", "{s47}"(i32 %sgpr47) #0
426   tail call void asm sideeffect "; reg use $0", "{s48}"(i32 %sgpr48) #0
427   tail call void asm sideeffect "; reg use $0", "{s49}"(i32 %sgpr49) #0
428   tail call void asm sideeffect "; reg use $0", "{s50}"(i32 %sgpr50) #0
429   tail call void asm sideeffect "; reg use $0", "{s51}"(i32 %sgpr51) #0
430   tail call void asm sideeffect "; reg use $0", "{s52}"(i32 %sgpr52) #0
431   tail call void asm sideeffect "; reg use $0", "{s53}"(i32 %sgpr53) #0
432   tail call void asm sideeffect "; reg use $0", "{s54}"(i32 %sgpr54) #0
433   tail call void asm sideeffect "; reg use $0", "{s55}"(i32 %sgpr55) #0
434   tail call void asm sideeffect "; reg use $0", "{s56}"(i32 %sgpr56) #0
435   tail call void asm sideeffect "; reg use $0", "{s57}"(i32 %sgpr57) #0
436   tail call void asm sideeffect "; reg use $0", "{s58}"(i32 %sgpr58) #0
437   tail call void asm sideeffect "; reg use $0", "{s59}"(i32 %sgpr59) #0
438   tail call void asm sideeffect "; reg use $0", "{s60}"(i32 %sgpr60) #0
439   tail call void asm sideeffect "; reg use $0", "{s61}"(i32 %sgpr61) #0
440   tail call void asm sideeffect "; reg use $0", "{s62}"(i32 %sgpr62) #0
441   tail call void asm sideeffect "; reg use $0", "{s63}"(i32 %sgpr63) #0
442   tail call void asm sideeffect "; reg use $0", "{s64}"(i32 %sgpr64) #0
443   tail call void asm sideeffect "; reg use $0", "{s65}"(i32 %sgpr65) #0
444   tail call void asm sideeffect "; reg use $0", "{s66}"(i32 %sgpr66) #0
445   tail call void asm sideeffect "; reg use $0", "{s67}"(i32 %sgpr67) #0
446   tail call void asm sideeffect "; reg use $0", "{s68}"(i32 %sgpr68) #0
447   tail call void asm sideeffect "; reg use $0", "{s69}"(i32 %sgpr69) #0
448   tail call void asm sideeffect "; reg use $0", "{s70}"(i32 %sgpr70) #0
449   tail call void asm sideeffect "; reg use $0", "{s71}"(i32 %sgpr71) #0
450   tail call void asm sideeffect "; reg use $0", "{s72}"(i32 %sgpr72) #0
451   tail call void asm sideeffect "; reg use $0", "{s73}"(i32 %sgpr73) #0
452   tail call void asm sideeffect "; reg use $0", "{s74}"(i32 %sgpr74) #0
453   tail call void asm sideeffect "; reg use $0", "{s75}"(i32 %sgpr75) #0
454   tail call void asm sideeffect "; reg use $0", "{s76}"(i32 %sgpr76) #0
455   tail call void asm sideeffect "; reg use $0", "{s77}"(i32 %sgpr77) #0
456   tail call void asm sideeffect "; reg use $0", "{s78}"(i32 %sgpr78) #0
457   tail call void asm sideeffect "; reg use $0", "{s79}"(i32 %sgpr79) #0
458   tail call void asm sideeffect "; reg use $0", "{s80}"(i32 %sgpr80) #0
459   tail call void asm sideeffect "; reg use $0", "{s81}"(i32 %sgpr81) #0
460   tail call void asm sideeffect "; reg use $0", "{s82}"(i32 %sgpr82) #0
461   tail call void asm sideeffect "; reg use $0", "{s83}"(i32 %sgpr83) #0
462   tail call void asm sideeffect "; reg use $0", "{s84}"(i32 %sgpr84) #0
463   tail call void asm sideeffect "; reg use $0", "{s85}"(i32 %sgpr85) #0
464   tail call void asm sideeffect "; reg use $0", "{s86}"(i32 %sgpr86) #0
465   tail call void asm sideeffect "; reg use $0", "{s87}"(i32 %sgpr87) #0
466   tail call void asm sideeffect "; reg use $0", "{s88}"(i32 %sgpr88) #0
467   tail call void asm sideeffect "; reg use $0", "{s89}"(i32 %sgpr89) #0
468   tail call void asm sideeffect "; reg use $0", "{s90}"(i32 %sgpr90) #0
469   tail call void asm sideeffect "; reg use $0", "{s91}"(i32 %sgpr91) #0
470   tail call void asm sideeffect "; reg use $0", "{s92}"(i32 %sgpr92) #0
471   tail call void asm sideeffect "; reg use $0", "{s93}"(i32 %sgpr93) #0
472   tail call void asm sideeffect "; reg use $0", "{s94}"(i32 %sgpr94) #0
473   tail call void asm sideeffect "; reg use $0", "{s95}"(i32 %sgpr95) #0
474   tail call void asm sideeffect "; reg use $0", "{s96}"(i32 %sgpr96) #0
475   tail call void asm sideeffect "; reg use $0", "{s97}"(i32 %sgpr97) #0
476   tail call void asm sideeffect "; reg use $0", "{s98}"(i32 %sgpr98) #0
477   tail call void asm sideeffect "; reg use $0", "{s99}"(i32 %sgpr99) #0
478   tail call void asm sideeffect "; reg use $0", "{s100}"(i32 %sgpr100) #0
479   tail call void asm sideeffect "; reg use $0", "{s101}"(i32 %sgpr101) #0
480   tail call void asm sideeffect "; reg use $0", "{vcc_lo}"(i32 %vcc_lo) #0
481   tail call void asm sideeffect "; reg use $0", "{vcc_hi}"(i32 %vcc_hi) #0
482   ret void
485 declare i32 @llvm.amdgcn.workgroup.id.x() #0
487 attributes #0 = { nounwind }