[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-store-local.mir
blob54fd3b09000213658bc56c919891a163a9e4bc63
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 -march=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
4 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs  -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s
5 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
6 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s
8 ---
10 name: store_local_s32_to_4
11 legalized:       true
12 regBankSelected: true
13 tracksRegLiveness: true
14 machineFunctionInfo:
15   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
16   scratchWaveOffsetReg: $sgpr4
17   stackPtrOffsetReg: $sgpr32
19 body: |
20   bb.0:
21     liveins: $vgpr0, $vgpr1
23     ; GFX6-LABEL: name: store_local_s32_to_4
24     ; GFX6: liveins: $vgpr0, $vgpr1
25     ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
26     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
27     ; GFX6: $m0 = S_MOV_B32 -1
28     ; GFX6: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 4, addrspace 3)
29     ; GFX7-LABEL: name: store_local_s32_to_4
30     ; GFX7: liveins: $vgpr0, $vgpr1
31     ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
32     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
33     ; GFX7: $m0 = S_MOV_B32 -1
34     ; GFX7: DS_WRITE_B32 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 4, addrspace 3)
35     ; GFX9-LABEL: name: store_local_s32_to_4
36     ; GFX9: liveins: $vgpr0, $vgpr1
37     ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
38     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
39     ; GFX9: DS_WRITE_B32_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store 4, addrspace 3)
40     %0:vgpr(s32) = COPY $vgpr0
41     %1:vgpr(p3) = COPY $vgpr1
42     G_STORE %0, %1 :: (store 4, align 4, addrspace 3)
44 ...
46 ---
48 name: store_local_s32_to_2
49 legalized:       true
50 regBankSelected: true
51 tracksRegLiveness: true
52 machineFunctionInfo:
53   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
54   scratchWaveOffsetReg: $sgpr4
55   stackPtrOffsetReg: $sgpr32
57 body: |
58   bb.0:
59     liveins: $vgpr0, $vgpr1
61     ; GFX6-LABEL: name: store_local_s32_to_2
62     ; GFX6: liveins: $vgpr0, $vgpr1
63     ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
64     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
65     ; GFX6: $m0 = S_MOV_B32 -1
66     ; GFX6: DS_WRITE_B16 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 2, addrspace 3)
67     ; GFX7-LABEL: name: store_local_s32_to_2
68     ; GFX7: liveins: $vgpr0, $vgpr1
69     ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
70     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
71     ; GFX7: $m0 = S_MOV_B32 -1
72     ; GFX7: DS_WRITE_B16 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 2, addrspace 3)
73     ; GFX9-LABEL: name: store_local_s32_to_2
74     ; GFX9: liveins: $vgpr0, $vgpr1
75     ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
76     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
77     ; GFX9: DS_WRITE_B16_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store 2, addrspace 3)
78     %0:vgpr(s32) = COPY $vgpr0
79     %1:vgpr(p3) = COPY $vgpr1
80     G_STORE %0, %1 :: (store 2, align 2, addrspace 3)
82 ...
84 ---
86 name: store_local_s32_to_1
87 legalized:       true
88 regBankSelected: true
89 tracksRegLiveness: true
90 machineFunctionInfo:
91   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
92   scratchWaveOffsetReg: $sgpr4
93   stackPtrOffsetReg: $sgpr32
95 body: |
96   bb.0:
97     liveins: $vgpr0, $vgpr1
99     ; GFX6-LABEL: name: store_local_s32_to_1
100     ; GFX6: liveins: $vgpr0, $vgpr1
101     ; GFX6: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
102     ; GFX6: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
103     ; GFX6: $m0 = S_MOV_B32 -1
104     ; GFX6: DS_WRITE_B8 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
105     ; GFX7-LABEL: name: store_local_s32_to_1
106     ; GFX7: liveins: $vgpr0, $vgpr1
107     ; GFX7: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
108     ; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
109     ; GFX7: $m0 = S_MOV_B32 -1
110     ; GFX7: DS_WRITE_B8 [[COPY1]], [[COPY]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
111     ; GFX9-LABEL: name: store_local_s32_to_1
112     ; GFX9: liveins: $vgpr0, $vgpr1
113     ; GFX9: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0
114     ; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1
115     ; GFX9: DS_WRITE_B8_gfx9 [[COPY1]], [[COPY]], 0, 0, implicit $exec :: (store 1, addrspace 3)
116     %0:vgpr(s32) = COPY $vgpr0
117     %1:vgpr(p3) = COPY $vgpr1
118     G_STORE %0, %1 :: (store 1, align 1, addrspace 3)
124 name: store_local_v2s16
125 legalized:       true
126 regBankSelected: true
127 tracksRegLiveness: true
128 machineFunctionInfo:
129   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
130   scratchWaveOffsetReg: $sgpr4
131   stackPtrOffsetReg: $sgpr32
133 body: |
134   bb.0:
135     liveins: $vgpr0, $vgpr1
137     ; GFX6-LABEL: name: store_local_v2s16
138     ; GFX6: liveins: $vgpr0, $vgpr1
139     ; GFX6: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
140     ; GFX6: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
141     ; GFX6: $m0 = S_MOV_B32 -1
142     ; GFX6: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store 4, addrspace 3)
143     ; GFX7-LABEL: name: store_local_v2s16
144     ; GFX7: liveins: $vgpr0, $vgpr1
145     ; GFX7: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
146     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
147     ; GFX7: $m0 = S_MOV_B32 -1
148     ; GFX7: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store 4, addrspace 3)
149     ; GFX9-LABEL: name: store_local_v2s16
150     ; GFX9: liveins: $vgpr0, $vgpr1
151     ; GFX9: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
152     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
153     ; GFX9: G_STORE [[COPY]](<2 x s16>), [[COPY1]](p3) :: (store 4, addrspace 3)
154     %0:vgpr(<2 x s16>) = COPY $vgpr0
155     %1:vgpr(p3) = COPY $vgpr1
156     G_STORE %0, %1 :: (store 4, align 4, addrspace 3)
162 name: store_local_p3
163 legalized:       true
164 regBankSelected: true
165 tracksRegLiveness: true
166 machineFunctionInfo:
167   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
168   scratchWaveOffsetReg: $sgpr4
169   stackPtrOffsetReg: $sgpr32
171 body: |
172   bb.0:
173     liveins: $vgpr0, $vgpr1
175     ; GFX6-LABEL: name: store_local_p3
176     ; GFX6: liveins: $vgpr0, $vgpr1
177     ; GFX6: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
178     ; GFX6: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
179     ; GFX6: $m0 = S_MOV_B32 -1
180     ; GFX6: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store 4, addrspace 3)
181     ; GFX7-LABEL: name: store_local_p3
182     ; GFX7: liveins: $vgpr0, $vgpr1
183     ; GFX7: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
184     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
185     ; GFX7: $m0 = S_MOV_B32 -1
186     ; GFX7: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store 4, addrspace 3)
187     ; GFX9-LABEL: name: store_local_p3
188     ; GFX9: liveins: $vgpr0, $vgpr1
189     ; GFX9: [[COPY:%[0-9]+]]:vgpr(p3) = COPY $vgpr0
190     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr1
191     ; GFX9: G_STORE [[COPY]](p3), [[COPY1]](p3) :: (store 4, addrspace 3)
192     %0:vgpr(p3) = COPY $vgpr0
193     %1:vgpr(p3) = COPY $vgpr1
194     G_STORE %0, %1 :: (store 4, align 4, addrspace 3)
200 name: store_local_s32_to_1_constant_4095
201 legalized:       true
202 regBankSelected: true
203 tracksRegLiveness: true
205 body: |
206   bb.0:
208     ; GFX6-LABEL: name: store_local_s32_to_1_constant_4095
209     ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec
210     ; GFX6: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
211     ; GFX6: $m0 = S_MOV_B32 -1
212     ; GFX6: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
213     ; GFX7-LABEL: name: store_local_s32_to_1_constant_4095
214     ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec
215     ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
216     ; GFX7: $m0 = S_MOV_B32 -1
217     ; GFX7: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
218     ; GFX9-LABEL: name: store_local_s32_to_1_constant_4095
219     ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4095, implicit $exec
220     ; GFX9: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
221     ; GFX9: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store 1, addrspace 3)
222     %0:vgpr(p3) = G_CONSTANT i32 4095
223     %1:vgpr(s32) = G_CONSTANT i32 0
224     G_STORE %1, %0 :: (store 1, align 1, addrspace 3)
230 name: store_local_s32_to_1_constant_4096
231 legalized:       true
232 regBankSelected: true
233 tracksRegLiveness: true
234 machineFunctionInfo:
235   scratchRSrcReg: $sgpr0_sgpr1_sgpr2_sgpr3
236   scratchWaveOffsetReg: $sgpr4
237   stackPtrOffsetReg: $sgpr32
238 stack:
239   - { id: 0, size: 4096, alignment: 4 }
241 body: |
242   bb.0:
244     ; GFX6-LABEL: name: store_local_s32_to_1_constant_4096
245     ; GFX6: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
246     ; GFX6: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
247     ; GFX6: $m0 = S_MOV_B32 -1
248     ; GFX6: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
249     ; GFX7-LABEL: name: store_local_s32_to_1_constant_4096
250     ; GFX7: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
251     ; GFX7: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
252     ; GFX7: $m0 = S_MOV_B32 -1
253     ; GFX7: DS_WRITE_B8 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $m0, implicit $exec :: (store 1, addrspace 3)
254     ; GFX9-LABEL: name: store_local_s32_to_1_constant_4096
255     ; GFX9: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 4096, implicit $exec
256     ; GFX9: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
257     ; GFX9: DS_WRITE_B8_gfx9 [[V_MOV_B32_e32_]], [[V_MOV_B32_e32_1]], 0, 0, implicit $exec :: (store 1, addrspace 3)
258     %0:vgpr(p3) = G_CONSTANT i32 4096
259     %1:vgpr(s32) = G_CONSTANT i32 0
260     G_STORE %1, %0 :: (store 1, align 1, addrspace 3)