1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -O0 -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX6 %s
4 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
5 # XUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
9 name: function_store_private_s32_to_4
12 tracksRegLiveness: true
14 isEntryFunction: false
15 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
16 stackPtrOffsetReg: $sgpr32
20 liveins: $vgpr0, $vgpr1
22 ; GFX6-LABEL: name: function_store_private_s32_to_4
23 ; GFX6: liveins: $vgpr0, $vgpr1
25 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
26 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
27 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)
28 ; GFX9-LABEL: name: function_store_private_s32_to_4
29 ; GFX9: liveins: $vgpr0, $vgpr1
31 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
32 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
33 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)
34 %0:vgpr(s32) = COPY $vgpr0
35 %1:vgpr(p5) = COPY $vgpr1
36 G_STORE %0, %1 :: (store (s32), align 4, addrspace 5)
42 name: function_store_private_s32_to_2
45 tracksRegLiveness: true
47 isEntryFunction: false
48 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
49 stackPtrOffsetReg: $sgpr32
53 liveins: $vgpr0, $vgpr1
55 ; GFX6-LABEL: name: function_store_private_s32_to_2
56 ; GFX6: liveins: $vgpr0, $vgpr1
58 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
59 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
60 ; GFX6-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)
61 ; GFX9-LABEL: name: function_store_private_s32_to_2
62 ; GFX9: liveins: $vgpr0, $vgpr1
64 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
65 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
66 ; GFX9-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)
67 %0:vgpr(s32) = COPY $vgpr0
68 %1:vgpr(p5) = COPY $vgpr1
69 G_STORE %0, %1 :: (store (s16), align 2, addrspace 5)
75 name: function_store_private_s32_to_1
78 tracksRegLiveness: true
80 isEntryFunction: false
81 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
82 stackPtrOffsetReg: $sgpr32
86 liveins: $vgpr0, $vgpr1
88 ; GFX6-LABEL: name: function_store_private_s32_to_1
89 ; GFX6: liveins: $vgpr0, $vgpr1
91 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
92 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
93 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
94 ; GFX9-LABEL: name: function_store_private_s32_to_1
95 ; GFX9: liveins: $vgpr0, $vgpr1
97 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
98 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
99 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
100 %0:vgpr(s32) = COPY $vgpr0
101 %1:vgpr(p5) = COPY $vgpr1
102 G_STORE %0, %1 :: (store (s8), align 1, addrspace 5)
108 name: function_store_private_v2s16
110 regBankSelected: true
111 tracksRegLiveness: true
113 isEntryFunction: false
114 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
115 stackPtrOffsetReg: $sgpr32
119 liveins: $vgpr0, $vgpr1
121 ; GFX6-LABEL: name: function_store_private_v2s16
122 ; GFX6: liveins: $vgpr0, $vgpr1
124 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
125 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
126 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)
127 ; GFX9-LABEL: name: function_store_private_v2s16
128 ; GFX9: liveins: $vgpr0, $vgpr1
130 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
131 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
132 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)
133 %0:vgpr(<2 x s16>) = COPY $vgpr0
134 %1:vgpr(p5) = COPY $vgpr1
135 G_STORE %0, %1 :: (store (<2 x s16>), align 4, addrspace 5)
141 name: function_store_private_p3
143 regBankSelected: true
144 tracksRegLiveness: true
146 isEntryFunction: false
147 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
148 stackPtrOffsetReg: $sgpr32
152 liveins: $vgpr0, $vgpr1
154 ; GFX6-LABEL: name: function_store_private_p3
155 ; GFX6: liveins: $vgpr0, $vgpr1
157 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
158 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
159 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)
160 ; GFX9-LABEL: name: function_store_private_p3
161 ; GFX9: liveins: $vgpr0, $vgpr1
163 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
164 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
165 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)
166 %0:vgpr(p3) = COPY $vgpr0
167 %1:vgpr(p5) = COPY $vgpr1
168 G_STORE %0, %1 :: (store (p3), align 4, addrspace 5)
174 name: function_store_private_p5
176 regBankSelected: true
177 tracksRegLiveness: true
179 isEntryFunction: false
180 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
181 stackPtrOffsetReg: $sgpr32
185 liveins: $vgpr0, $vgpr1
187 ; GFX6-LABEL: name: function_store_private_p5
188 ; GFX6: liveins: $vgpr0, $vgpr1
190 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
191 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
192 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)
193 ; GFX9-LABEL: name: function_store_private_p5
194 ; GFX9: liveins: $vgpr0, $vgpr1
196 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
197 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
198 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)
199 %0:vgpr(p5) = COPY $vgpr0
200 %1:vgpr(p5) = COPY $vgpr1
201 G_STORE %0, %1 :: (store (p5), align 4, addrspace 5)
207 name: function_store_private_s32_to_1_fi_offset_4095
209 regBankSelected: true
210 tracksRegLiveness: true
212 isEntryFunction: false
213 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
214 stackPtrOffsetReg: $sgpr32
216 - { id: 0, size: 4096, alignment: 4 }
221 ; GFX6-LABEL: name: function_store_private_s32_to_1_fi_offset_4095
222 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
223 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
224 ; GFX9-LABEL: name: function_store_private_s32_to_1_fi_offset_4095
225 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
226 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
227 %0:vgpr(p5) = G_FRAME_INDEX %stack.0
228 %1:vgpr(s32) = G_CONSTANT i32 4095
229 %2:vgpr(p5) = G_PTR_ADD %0, %1
230 %3:vgpr(s32) = G_CONSTANT i32 0
231 G_STORE %3, %2 :: (store (s8), align 1, addrspace 5)
237 name: function_store_private_s32_to_1_constant_4095
239 regBankSelected: true
240 tracksRegLiveness: true
242 isEntryFunction: false
243 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
244 stackPtrOffsetReg: $sgpr32
246 - { id: 0, size: 4096, alignment: 4 }
251 ; GFX6-LABEL: name: function_store_private_s32_to_1_constant_4095
252 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
253 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
254 ; GFX9-LABEL: name: function_store_private_s32_to_1_constant_4095
255 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
256 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
257 %0:vgpr(p5) = G_CONSTANT i32 4095
258 %1:vgpr(s32) = G_CONSTANT i32 0
259 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)
265 name: function_store_private_s32_to_1_constant_4096
267 regBankSelected: true
268 tracksRegLiveness: true
270 isEntryFunction: false
271 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
272 stackPtrOffsetReg: $sgpr32
274 - { id: 0, size: 4096, alignment: 4 }
279 ; GFX6-LABEL: name: function_store_private_s32_to_1_constant_4096
280 ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
281 ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
282 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
283 ; GFX9-LABEL: name: function_store_private_s32_to_1_constant_4096
284 ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
285 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
286 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
287 %0:vgpr(p5) = G_CONSTANT i32 4096
288 %1:vgpr(s32) = G_CONSTANT i32 0
289 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)
295 name: kernel_store_private_s32_to_4
297 regBankSelected: true
298 tracksRegLiveness: true
300 isEntryFunction: true
301 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
305 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
307 ; GFX6-LABEL: name: kernel_store_private_s32_to_4
308 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
310 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
311 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
312 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)
313 ; GFX9-LABEL: name: kernel_store_private_s32_to_4
314 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
316 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
317 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
318 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s32), addrspace 5)
319 %0:vgpr(s32) = COPY $vgpr0
320 %1:vgpr(p5) = COPY $vgpr1
321 G_STORE %0, %1 :: (store (s32), align 4, addrspace 5)
327 name: kernel_store_private_s32_to_2
329 regBankSelected: true
330 tracksRegLiveness: true
332 isEntryFunction: true
333 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
337 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
339 ; GFX6-LABEL: name: kernel_store_private_s32_to_2
340 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
342 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
343 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
344 ; GFX6-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)
345 ; GFX9-LABEL: name: kernel_store_private_s32_to_2
346 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
348 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
349 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
350 ; GFX9-NEXT: BUFFER_STORE_SHORT_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s16), addrspace 5)
351 %0:vgpr(s32) = COPY $vgpr0
352 %1:vgpr(p5) = COPY $vgpr1
353 G_STORE %0, %1 :: (store (s16), align 2, addrspace 5)
359 name: kernel_store_private_s32_to_1
361 regBankSelected: true
362 tracksRegLiveness: true
364 isEntryFunction: true
365 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
369 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
371 ; GFX6-LABEL: name: kernel_store_private_s32_to_1
372 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
374 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
375 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
376 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
377 ; GFX9-LABEL: name: kernel_store_private_s32_to_1
378 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
380 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
381 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
382 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
383 %0:vgpr(s32) = COPY $vgpr0
384 %1:vgpr(p5) = COPY $vgpr1
385 G_STORE %0, %1 :: (store (s8), align 1, addrspace 5)
391 name: kernel_store_private_v2s16
393 regBankSelected: true
394 tracksRegLiveness: true
396 isEntryFunction: true
397 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
401 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
403 ; GFX6-LABEL: name: kernel_store_private_v2s16
404 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
406 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
407 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
408 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)
409 ; GFX9-LABEL: name: kernel_store_private_v2s16
410 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
412 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
413 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
414 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (<2 x s16>), addrspace 5)
415 %0:vgpr(<2 x s16>) = COPY $vgpr0
416 %1:vgpr(p5) = COPY $vgpr1
417 G_STORE %0, %1 :: (store (<2 x s16>), align 4, addrspace 5)
423 name: kernel_store_private_p3
425 regBankSelected: true
426 tracksRegLiveness: true
428 isEntryFunction: true
429 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
433 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
435 ; GFX6-LABEL: name: kernel_store_private_p3
436 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
438 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
439 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
440 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)
441 ; GFX9-LABEL: name: kernel_store_private_p3
442 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
444 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
445 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
446 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p3), addrspace 5)
447 %0:vgpr(p3) = COPY $vgpr0
448 %1:vgpr(p5) = COPY $vgpr1
449 G_STORE %0, %1 :: (store (p3), align 4, addrspace 5)
455 name: kernel_store_private_p5
457 regBankSelected: true
458 tracksRegLiveness: true
460 isEntryFunction: true
461 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
465 liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
467 ; GFX6-LABEL: name: kernel_store_private_p5
468 ; GFX6: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
470 ; GFX6-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
471 ; GFX6-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
472 ; GFX6-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)
473 ; GFX9-LABEL: name: kernel_store_private_p5
474 ; GFX9: liveins: $vgpr0, $vgpr1, $sgpr0_sgpr1_sgpr2_sgpr3
476 ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
477 ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
478 ; GFX9-NEXT: BUFFER_STORE_DWORD_OFFEN [[COPY]], [[COPY1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (p5), addrspace 5)
479 %0:vgpr(p5) = COPY $vgpr0
480 %1:vgpr(p5) = COPY $vgpr1
481 G_STORE %0, %1 :: (store (p5), align 4, addrspace 5)
487 name: kernel_store_private_s32_to_1_fi_offset_4095
489 regBankSelected: true
490 tracksRegLiveness: true
492 isEntryFunction: true
493 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
495 - { id: 0, size: 4096, alignment: 4 }
499 liveins: $sgpr0_sgpr1_sgpr2_sgpr3
501 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095
502 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
504 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
505 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
506 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_fi_offset_4095
507 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
509 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
510 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
511 %0:vgpr(p5) = G_FRAME_INDEX %stack.0
512 %1:vgpr(s32) = G_CONSTANT i32 4095
513 %2:vgpr(p5) = G_PTR_ADD %0, %1
514 %3:vgpr(s32) = G_CONSTANT i32 0
515 G_STORE %3, %2 :: (store (s8), align 1, addrspace 5)
521 name: kernel_store_private_s32_to_1_constant_4095
523 regBankSelected: true
524 tracksRegLiveness: true
526 isEntryFunction: true
527 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
529 - { id: 0, size: 4096, alignment: 4 }
533 liveins: $sgpr0_sgpr1_sgpr2_sgpr3
535 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_constant_4095
536 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
538 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
539 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
540 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_constant_4095
541 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
543 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
544 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFSET [[V_MOV_B32_e32_]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 4095, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
545 %0:vgpr(p5) = G_CONSTANT i32 4095
546 %1:vgpr(s32) = G_CONSTANT i32 0
547 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)
553 name: kernel_store_private_s32_to_1_constant_4096
555 regBankSelected: true
556 tracksRegLiveness: true
558 isEntryFunction: true
559 scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
561 - { id: 0, size: 4096, alignment: 4 }
565 liveins: $sgpr0_sgpr1_sgpr2_sgpr3
567 ; GFX6-LABEL: name: kernel_store_private_s32_to_1_constant_4096
568 ; GFX6: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
570 ; GFX6-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
571 ; GFX6-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
572 ; GFX6-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
573 ; GFX9-LABEL: name: kernel_store_private_s32_to_1_constant_4096
574 ; GFX9: liveins: $sgpr0_sgpr1_sgpr2_sgpr3
576 ; GFX9-NEXT: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
577 ; GFX9-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
578 ; GFX9-NEXT: BUFFER_STORE_BYTE_OFFEN [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], $sgpr0_sgpr1_sgpr2_sgpr3, 0, 0, 0, 0, 0, implicit $exec :: (store (s8), addrspace 5)
579 %0:vgpr(p5) = G_CONSTANT i32 4096
580 %1:vgpr(s32) = G_CONSTANT i32 0
581 G_STORE %1, %0 :: (store (s8), align 1, addrspace 5)