xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-dyn-stackalloc.mir (revision 0bd1c879966cfdf145b1f96292a2632628fab3fb)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE64 %s
3# RUN: llc -mtriple=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE64 %s
4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=WAVE32 %s
5# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=WAVE32 %s
6
7
8---
9name: test_dyn_stackalloc_sgpr_align1
10legalized:       true
11frameInfo:
12  maxAlignment: 2
13stack:
14  - { id: 0, type: variable-sized, alignment: 1 }
15body: |
16  bb.0:
17    liveins: $sgpr0
18
19    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align1
20    ; WAVE64: liveins: $sgpr0
21    ; WAVE64-NEXT: {{  $}}
22    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
23    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
24    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
25    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
26    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
27    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
28    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
29    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
30    ;
31    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align1
32    ; WAVE32: liveins: $sgpr0
33    ; WAVE32-NEXT: {{  $}}
34    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
35    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
36    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
37    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
38    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
39    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
40    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
41    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
42    %0:_(s32) = COPY $sgpr0
43    %1:_(p5) = G_DYN_STACKALLOC %0, 1
44    S_ENDPGM 0, implicit %1
45...
46
47---
48name: test_dyn_stackalloc_sgpr_align2
49legalized:       true
50frameInfo:
51  maxAlignment: 2
52stack:
53  - { id: 0, type: variable-sized, alignment: 2 }
54body: |
55  bb.0:
56    liveins: $sgpr0
57
58    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align2
59    ; WAVE64: liveins: $sgpr0
60    ; WAVE64-NEXT: {{  $}}
61    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
62    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
63    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
64    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
65    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
66    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
67    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
68    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
69    ;
70    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align2
71    ; WAVE32: liveins: $sgpr0
72    ; WAVE32-NEXT: {{  $}}
73    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
74    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
75    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
76    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
77    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
78    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
79    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
80    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
81    %0:_(s32) = COPY $sgpr0
82    %1:_(p5) = G_DYN_STACKALLOC %0, 2
83    S_ENDPGM 0, implicit %1
84...
85
86---
87name: test_dyn_stackalloc_sgpr_align4
88legalized:       true
89frameInfo:
90  maxAlignment: 4
91stack:
92  - { id: 0, type: variable-sized, alignment: 4 }
93body: |
94  bb.0:
95    liveins: $sgpr0
96
97    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align4
98    ; WAVE64: liveins: $sgpr0
99    ; WAVE64-NEXT: {{  $}}
100    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
101    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
102    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
103    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
104    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
105    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
106    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
107    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
108    ;
109    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align4
110    ; WAVE32: liveins: $sgpr0
111    ; WAVE32-NEXT: {{  $}}
112    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
113    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
114    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
115    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
116    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
117    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
118    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
119    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
120    %0:_(s32) = COPY $sgpr0
121    %1:_(p5) = G_DYN_STACKALLOC %0, 4
122    S_ENDPGM 0, implicit %1
123...
124
125---
126name: test_dyn_stackalloc_sgpr_align8
127legalized:       true
128frameInfo:
129  maxAlignment: 8
130stack:
131  - { id: 0, type: variable-sized, alignment: 8 }
132body: |
133  bb.0:
134    liveins: $sgpr0
135
136    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align8
137    ; WAVE64: liveins: $sgpr0
138    ; WAVE64-NEXT: {{  $}}
139    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
140    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
141    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
142    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
143    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
144    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
145    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
146    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
147    ;
148    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align8
149    ; WAVE32: liveins: $sgpr0
150    ; WAVE32-NEXT: {{  $}}
151    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
152    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
153    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
154    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
155    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
156    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
157    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
158    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
159    %0:_(s32) = COPY $sgpr0
160    %1:_(p5) = G_DYN_STACKALLOC %0, 8
161    S_ENDPGM 0, implicit %1
162...
163
164---
165name: test_dyn_stackalloc_sgpr_align16
166legalized:       true
167frameInfo:
168  maxAlignment: 16
169stack:
170  - { id: 0, type: variable-sized, alignment: 16 }
171body: |
172  bb.0:
173    liveins: $sgpr0
174
175    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align16
176    ; WAVE64: liveins: $sgpr0
177    ; WAVE64-NEXT: {{  $}}
178    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
179    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
180    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
181    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
182    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
183    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
184    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
185    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
186    ;
187    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align16
188    ; WAVE32: liveins: $sgpr0
189    ; WAVE32-NEXT: {{  $}}
190    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
191    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
192    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
193    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
194    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
195    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
196    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
197    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
198    %0:_(s32) = COPY $sgpr0
199    %1:_(p5) = G_DYN_STACKALLOC %0, 16
200    S_ENDPGM 0, implicit %1
201...
202
203---
204name: test_dyn_stackalloc_sgpr_align32
205legalized:       true
206frameInfo:
207  maxAlignment: 32
208stack:
209  - { id: 0, type: variable-sized, alignment: 32 }
210body: |
211  bb.0:
212    liveins: $sgpr0
213
214    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align32
215    ; WAVE64: liveins: $sgpr0
216    ; WAVE64-NEXT: {{  $}}
217    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
218    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
219    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
220    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
221    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047
222    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
223    ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048
224    ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
225    ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
226    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
227    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
228    ;
229    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align32
230    ; WAVE32: liveins: $sgpr0
231    ; WAVE32-NEXT: {{  $}}
232    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
233    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
234    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
235    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
236    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023
237    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
238    ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024
239    ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
240    ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
241    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
242    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
243    %0:_(s32) = COPY $sgpr0
244    %1:_(p5) = G_DYN_STACKALLOC %0, 32
245    S_ENDPGM 0, implicit %1
246...
247
248---
249name: test_dyn_stackalloc_sgpr_align64
250legalized:       true
251frameInfo:
252  maxAlignment: 64
253stack:
254  - { id: 0, type: variable-sized, alignment: 64 }
255body: |
256  bb.0:
257    liveins: $sgpr0
258
259    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align64
260    ; WAVE64: liveins: $sgpr0
261    ; WAVE64-NEXT: {{  $}}
262    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
263    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
264    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
265    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
266    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095
267    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
268    ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096
269    ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
270    ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
271    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
272    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
273    ;
274    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align64
275    ; WAVE32: liveins: $sgpr0
276    ; WAVE32-NEXT: {{  $}}
277    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
278    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
279    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
280    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
281    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047
282    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
283    ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048
284    ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
285    ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
286    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
287    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
288    %0:_(s32) = COPY $sgpr0
289    %1:_(p5) = G_DYN_STACKALLOC %0, 64
290    S_ENDPGM 0, implicit %1
291...
292
293---
294name: test_dyn_stackalloc_sgpr_align128
295legalized:       true
296frameInfo:
297  maxAlignment: 64
298stack:
299  - { id: 0, type: variable-sized, alignment: 128 }
300body: |
301  bb.0:
302    liveins: $sgpr0
303
304    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_align128
305    ; WAVE64: liveins: $sgpr0
306    ; WAVE64-NEXT: {{  $}}
307    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
308    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
309    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
310    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
311    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 8191
312    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
313    ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -8192
314    ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
315    ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
316    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
317    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
318    ;
319    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_align128
320    ; WAVE32: liveins: $sgpr0
321    ; WAVE32-NEXT: {{  $}}
322    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
323    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
324    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[COPY]], [[C]](s32)
325    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
326    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095
327    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
328    ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096
329    ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
330    ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
331    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
332    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
333    %0:_(s32) = COPY $sgpr0
334    %1:_(p5) = G_DYN_STACKALLOC %0, 128
335    S_ENDPGM 0, implicit %1
336...
337
338---
339name: test_dyn_stackalloc_sgpr_constant_align4
340legalized:       true
341frameInfo:
342  maxAlignment: 4
343stack:
344  - { id: 0, type: variable-sized, alignment: 4 }
345body: |
346  bb.0:
347
348    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4
349    ; WAVE64: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
350    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
351    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
352    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
353    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
354    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
355    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
356    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
357    ;
358    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align4
359    ; WAVE32: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
360    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
361    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
362    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
363    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
364    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
365    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
366    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
367    %0:_(s32) = G_CONSTANT i32 32
368    %1:_(p5) = G_DYN_STACKALLOC %0, 4
369    S_ENDPGM 0, implicit %1
370...
371
372---
373name: test_dyn_stackalloc_sgpr_constant_align8
374legalized:       true
375frameInfo:
376  maxAlignment: 8
377stack:
378  - { id: 0, type: variable-sized, alignment: 8 }
379body: |
380  bb.0:
381    liveins: $sgpr0
382
383    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8
384    ; WAVE64: liveins: $sgpr0
385    ; WAVE64-NEXT: {{  $}}
386    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
387    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
388    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
389    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
390    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
391    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
392    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
393    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
394    ;
395    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align8
396    ; WAVE32: liveins: $sgpr0
397    ; WAVE32-NEXT: {{  $}}
398    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
399    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
400    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
401    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
402    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
403    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
404    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
405    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
406    %0:_(s32) = G_CONSTANT i32 32
407    %1:_(p5) = G_DYN_STACKALLOC %0, 8
408    S_ENDPGM 0, implicit %1
409...
410
411---
412name: test_dyn_stackalloc_sgpr_constant_align16
413legalized:       true
414frameInfo:
415  maxAlignment: 16
416stack:
417  - { id: 0, type: variable-sized, alignment: 16 }
418body: |
419  bb.0:
420    liveins: $sgpr0
421
422    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16
423    ; WAVE64: liveins: $sgpr0
424    ; WAVE64-NEXT: {{  $}}
425    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
426    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
427    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
428    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
429    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
430    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
431    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
432    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
433    ;
434    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align16
435    ; WAVE32: liveins: $sgpr0
436    ; WAVE32-NEXT: {{  $}}
437    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
438    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
439    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
440    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
441    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY [[COPY]](p5)
442    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[SHL]](s32)
443    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
444    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY1]](p5)
445    %0:_(s32) = G_CONSTANT i32 32
446    %1:_(p5) = G_DYN_STACKALLOC %0, 16
447    S_ENDPGM 0, implicit %1
448...
449
450---
451name: test_dyn_stackalloc_sgpr_constant_align32
452legalized:       true
453frameInfo:
454  maxAlignment: 32
455stack:
456  - { id: 0, type: variable-sized, alignment: 32 }
457body: |
458  bb.0:
459    liveins: $sgpr0
460
461    ; WAVE64-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32
462    ; WAVE64: liveins: $sgpr0
463    ; WAVE64-NEXT: {{  $}}
464    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
465    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
466    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
467    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
468    ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047
469    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[C2]](s32)
470    ; WAVE64-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048
471    ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C3]](s32)
472    ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
473    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
474    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
475    ;
476    ; WAVE32-LABEL: name: test_dyn_stackalloc_sgpr_constant_align32
477    ; WAVE32: liveins: $sgpr0
478    ; WAVE32-NEXT: {{  $}}
479    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 32
480    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
481    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[C]], [[C1]](s32)
482    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
483    ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 1023
484    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY]], [[C2]](s32)
485    ; WAVE32-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -1024
486    ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C3]](s32)
487    ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
488    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
489    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
490    %0:_(s32) = G_CONSTANT i32 32
491    %1:_(p5) = G_DYN_STACKALLOC %0, 32
492    S_ENDPGM 0, implicit %1
493...
494
495---
496name: test_dyn_stackalloc_vgpr_align4
497legalized:       true
498frameInfo:
499  maxAlignment: 4
500stack:
501  - { id: 0, type: variable-sized, alignment: 4 }
502body: |
503  bb.0:
504    liveins: $vgpr0
505
506    ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align4
507    ; WAVE64: liveins: $vgpr0
508    ; WAVE64-NEXT: {{  $}}
509    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
510    ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
511    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
512    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
513    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
514    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
515    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
516    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
517    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
518    ;
519    ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align4
520    ; WAVE32: liveins: $vgpr0
521    ; WAVE32-NEXT: {{  $}}
522    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
523    ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
524    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
525    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
526    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
527    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
528    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
529    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
530    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
531    %0:_(s32) = COPY $vgpr0
532    %1:_(p5) = G_DYN_STACKALLOC %0, 4
533    S_ENDPGM 0, implicit %1
534...
535
536---
537name: test_dyn_stackalloc_vgpr_align16
538legalized:       true
539frameInfo:
540  maxAlignment: 16
541stack:
542  - { id: 0, type: variable-sized, alignment: 16 }
543body: |
544  bb.0:
545    liveins: $vgpr0
546
547    ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align16
548    ; WAVE64: liveins: $vgpr0
549    ; WAVE64-NEXT: {{  $}}
550    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
551    ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
552    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
553    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
554    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
555    ; WAVE64-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
556    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
557    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
558    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
559    ;
560    ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align16
561    ; WAVE32: liveins: $vgpr0
562    ; WAVE32-NEXT: {{  $}}
563    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
564    ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
565    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
566    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
567    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
568    ; WAVE32-NEXT: [[COPY2:%[0-9]+]]:sgpr(p5) = COPY [[COPY1]](p5)
569    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY2]], [[SHL]](s32)
570    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD]](p5)
571    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[COPY2]](p5)
572    %0:_(s32) = COPY $vgpr0
573    %1:_(p5) = G_DYN_STACKALLOC %0, 16
574    S_ENDPGM 0, implicit %1
575...
576
577---
578name: test_dyn_stackalloc_vgpr_align64
579legalized:       true
580frameInfo:
581  maxAlignment: 64
582stack:
583  - { id: 0, type: variable-sized, alignment: 64 }
584body: |
585  bb.0:
586    liveins: $vgpr0
587
588    ; WAVE64-LABEL: name: test_dyn_stackalloc_vgpr_align64
589    ; WAVE64: liveins: $vgpr0
590    ; WAVE64-NEXT: {{  $}}
591    ; WAVE64-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
592    ; WAVE64-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
593    ; WAVE64-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 6
594    ; WAVE64-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
595    ; WAVE64-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
596    ; WAVE64-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 4095
597    ; WAVE64-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
598    ; WAVE64-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -4096
599    ; WAVE64-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
600    ; WAVE64-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
601    ; WAVE64-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
602    ; WAVE64-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
603    ;
604    ; WAVE32-LABEL: name: test_dyn_stackalloc_vgpr_align64
605    ; WAVE32: liveins: $vgpr0
606    ; WAVE32-NEXT: {{  $}}
607    ; WAVE32-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
608    ; WAVE32-NEXT: [[INTRINSIC_CONVERGENT:%[0-9]+]]:sgpr(s32) = G_INTRINSIC_CONVERGENT intrinsic(@llvm.amdgcn.wave.reduce.umax), [[COPY]](s32), 0
609    ; WAVE32-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 5
610    ; WAVE32-NEXT: [[SHL:%[0-9]+]]:sgpr(s32) = G_SHL [[INTRINSIC_CONVERGENT]], [[C]](s32)
611    ; WAVE32-NEXT: [[COPY1:%[0-9]+]]:sgpr(p5) = COPY $sp_reg
612    ; WAVE32-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 2047
613    ; WAVE32-NEXT: [[PTR_ADD:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[COPY1]], [[C1]](s32)
614    ; WAVE32-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 -2048
615    ; WAVE32-NEXT: [[PTRMASK:%[0-9]+]]:sgpr(p5) = G_PTRMASK [[PTR_ADD]], [[C2]](s32)
616    ; WAVE32-NEXT: [[PTR_ADD1:%[0-9]+]]:sgpr(p5) = G_PTR_ADD [[PTRMASK]], [[SHL]](s32)
617    ; WAVE32-NEXT: $sp_reg = COPY [[PTR_ADD1]](p5)
618    ; WAVE32-NEXT: S_ENDPGM 0, implicit [[PTRMASK]](p5)
619    %0:_(s32) = COPY $vgpr0
620    %1:_(p5) = G_DYN_STACKALLOC %0, 64
621    S_ENDPGM 0, implicit %1
622...
623