[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-store-private.mir
blob11b7c28860aea3744d395b1e3a40c786a794bd9c
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
7 ---
9 name: function_store_private_s32_to_4
10 legalized:       true
11 regBankSelected: true
12 tracksRegLiveness: true
13 machineFunctionInfo:
14   isEntryFunction: false
15   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
16   stackPtrOffsetReg: $sgpr32
18 body: |
19   bb.0:
20     liveins: $vgpr0, $vgpr1
22     ; GFX6-LABEL: name: function_store_private_s32_to_4
23     ; GFX6: liveins: $vgpr0, $vgpr1
24     ; GFX6-NEXT: {{  $}}
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
30     ; GFX9-NEXT: {{  $}}
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)
38 ...
40 ---
42 name: function_store_private_s32_to_2
43 legalized:       true
44 regBankSelected: true
45 tracksRegLiveness: true
46 machineFunctionInfo:
47   isEntryFunction: false
48   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
49   stackPtrOffsetReg: $sgpr32
51 body: |
52   bb.0:
53     liveins: $vgpr0, $vgpr1
55     ; GFX6-LABEL: name: function_store_private_s32_to_2
56     ; GFX6: liveins: $vgpr0, $vgpr1
57     ; GFX6-NEXT: {{  $}}
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
63     ; GFX9-NEXT: {{  $}}
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)
71 ...
73 ---
75 name: function_store_private_s32_to_1
76 legalized:       true
77 regBankSelected: true
78 tracksRegLiveness: true
79 machineFunctionInfo:
80   isEntryFunction: false
81   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
82   stackPtrOffsetReg: $sgpr32
84 body: |
85   bb.0:
86     liveins: $vgpr0, $vgpr1
88     ; GFX6-LABEL: name: function_store_private_s32_to_1
89     ; GFX6: liveins: $vgpr0, $vgpr1
90     ; GFX6-NEXT: {{  $}}
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
96     ; GFX9-NEXT: {{  $}}
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
109 legalized:       true
110 regBankSelected: true
111 tracksRegLiveness: true
112 machineFunctionInfo:
113   isEntryFunction: false
114   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
115   stackPtrOffsetReg: $sgpr32
117 body: |
118   bb.0:
119     liveins: $vgpr0, $vgpr1
121     ; GFX6-LABEL: name: function_store_private_v2s16
122     ; GFX6: liveins: $vgpr0, $vgpr1
123     ; GFX6-NEXT: {{  $}}
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
129     ; GFX9-NEXT: {{  $}}
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
142 legalized:       true
143 regBankSelected: true
144 tracksRegLiveness: true
145 machineFunctionInfo:
146   isEntryFunction: false
147   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
148   stackPtrOffsetReg: $sgpr32
150 body: |
151   bb.0:
152     liveins: $vgpr0, $vgpr1
154     ; GFX6-LABEL: name: function_store_private_p3
155     ; GFX6: liveins: $vgpr0, $vgpr1
156     ; GFX6-NEXT: {{  $}}
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
162     ; GFX9-NEXT: {{  $}}
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
175 legalized:       true
176 regBankSelected: true
177 tracksRegLiveness: true
178 machineFunctionInfo:
179   isEntryFunction: false
180   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
181   stackPtrOffsetReg: $sgpr32
183 body: |
184   bb.0:
185     liveins: $vgpr0, $vgpr1
187     ; GFX6-LABEL: name: function_store_private_p5
188     ; GFX6: liveins: $vgpr0, $vgpr1
189     ; GFX6-NEXT: {{  $}}
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
195     ; GFX9-NEXT: {{  $}}
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
208 legalized:       true
209 regBankSelected: true
210 tracksRegLiveness: true
211 machineFunctionInfo:
212   isEntryFunction: false
213   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
214   stackPtrOffsetReg: $sgpr32
215 stack:
216   - { id: 0, size: 4096, alignment: 4 }
218 body: |
219   bb.0:
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
238 legalized:       true
239 regBankSelected: true
240 tracksRegLiveness: true
241 machineFunctionInfo:
242   isEntryFunction: false
243   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
244   stackPtrOffsetReg: $sgpr32
245 stack:
246   - { id: 0, size: 4096, alignment: 4 }
248 body: |
249   bb.0:
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
266 legalized:       true
267 regBankSelected: true
268 tracksRegLiveness: true
269 machineFunctionInfo:
270   isEntryFunction: false
271   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
272   stackPtrOffsetReg: $sgpr32
273 stack:
274   - { id: 0, size: 4096, alignment: 4 }
276 body: |
277   bb.0:
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
296 legalized:       true
297 regBankSelected: true
298 tracksRegLiveness: true
299 machineFunctionInfo:
300   isEntryFunction: true
301   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
303 body: |
304   bb.0:
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
309     ; GFX6-NEXT: {{  $}}
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
315     ; GFX9-NEXT: {{  $}}
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
328 legalized:       true
329 regBankSelected: true
330 tracksRegLiveness: true
331 machineFunctionInfo:
332   isEntryFunction: true
333   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
335 body: |
336   bb.0:
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
341     ; GFX6-NEXT: {{  $}}
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
347     ; GFX9-NEXT: {{  $}}
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
360 legalized:       true
361 regBankSelected: true
362 tracksRegLiveness: true
363 machineFunctionInfo:
364   isEntryFunction: true
365   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
367 body: |
368   bb.0:
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
373     ; GFX6-NEXT: {{  $}}
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
379     ; GFX9-NEXT: {{  $}}
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
392 legalized:       true
393 regBankSelected: true
394 tracksRegLiveness: true
395 machineFunctionInfo:
396   isEntryFunction: true
397   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
399 body: |
400   bb.0:
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
405     ; GFX6-NEXT: {{  $}}
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
411     ; GFX9-NEXT: {{  $}}
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
424 legalized:       true
425 regBankSelected: true
426 tracksRegLiveness: true
427 machineFunctionInfo:
428   isEntryFunction: true
429   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
431 body: |
432   bb.0:
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
437     ; GFX6-NEXT: {{  $}}
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
443     ; GFX9-NEXT: {{  $}}
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
456 legalized:       true
457 regBankSelected: true
458 tracksRegLiveness: true
459 machineFunctionInfo:
460   isEntryFunction: true
461   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
463 body: |
464   bb.0:
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
469     ; GFX6-NEXT: {{  $}}
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
475     ; GFX9-NEXT: {{  $}}
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
488 legalized:       true
489 regBankSelected: true
490 tracksRegLiveness: true
491 machineFunctionInfo:
492   isEntryFunction: true
493   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
494 stack:
495   - { id: 0, size: 4096, alignment: 4 }
497 body: |
498   bb.0:
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
503     ; GFX6-NEXT: {{  $}}
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
508     ; GFX9-NEXT: {{  $}}
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
522 legalized:       true
523 regBankSelected: true
524 tracksRegLiveness: true
525 machineFunctionInfo:
526   isEntryFunction: true
527   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
528 stack:
529   - { id: 0, size: 4096, alignment: 4 }
531 body: |
532   bb.0:
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
537     ; GFX6-NEXT: {{  $}}
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
542     ; GFX9-NEXT: {{  $}}
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
554 legalized:       true
555 regBankSelected: true
556 tracksRegLiveness: true
557 machineFunctionInfo:
558   isEntryFunction: true
559   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
560 stack:
561   - { id: 0, size: 4096, alignment: 4 }
563 body: |
564   bb.0:
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
569     ; GFX6-NEXT: {{  $}}
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
575     ; GFX9-NEXT: {{  $}}
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)