Lines Matching refs:ASM

3 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck %s --check-prefixes=ASM,DAGISEL-ASM
4 ; RUN: llc -mtriple=amdgcn-amd-amdhsa -global-isel -mcpu=gfx900 < %s | FileCheck %s --check-prefixes=ASM,GISEL-ASM
18 ; ASM-LABEL: local_to_flat_nonnull_arg:
19 ; ASM: ; %bb.0:
20 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
21 ; ASM-NEXT: s_mov_b64 s[4:5], src_shared_base
22 ; ASM-NEXT: v_mov_b32_e32 v1, s5
23 ; ASM-NEXT: v_mov_b32_e32 v2, 7
24 ; ASM-NEXT: flat_store_dword v[0:1], v2
25 ; ASM-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
26 ; ASM-NEXT: s_setpc_b64 s[30:31]
39 ; ASM-LABEL: private_to_flat_nonnull_arg:
40 ; ASM: ; %bb.0:
41 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42 ; ASM-NEXT: s_mov_b64 s[4:5], src_private_base
43 ; ASM-NEXT: v_mov_b32_e32 v1, s5
44 ; ASM-NEXT: v_mov_b32_e32 v2, 7
45 ; ASM-NEXT: flat_store_dword v[0:1], v2
46 ; ASM-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
47 ; ASM-NEXT: s_setpc_b64 s[30:31]
60 ; ASM-LABEL: flat_to_local_nonnull_arg:
61 ; ASM: ; %bb.0:
62 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
63 ; ASM-NEXT: v_mov_b32_e32 v1, 7
64 ; ASM-NEXT: ds_write_b32 v0, v1
65 ; ASM-NEXT: s_waitcnt lgkmcnt(0)
66 ; ASM-NEXT: s_setpc_b64 s[30:31]
79 ; ASM-LABEL: flat_to_private_nonnull_arg:
80 ; ASM: ; %bb.0:
81 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
82 ; ASM-NEXT: v_mov_b32_e32 v1, 7
83 ; ASM-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen
84 ; ASM-NEXT: s_waitcnt vmcnt(0)
85 ; ASM-NEXT: s_setpc_b64 s[30:31]
99 ; DAGISEL-ASM-LABEL: private_alloca_to_flat:
100 ; DAGISEL-ASM: ; %bb.0:
101 ; DAGISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102 ; DAGISEL-ASM-NEXT: s_mov_b64 s[4:5], src_private_base
103 ; DAGISEL-ASM-NEXT: v_lshrrev_b32_e64 v0, 6, s32
104 ; DAGISEL-ASM-NEXT: v_mov_b32_e32 v1, s5
105 ; DAGISEL-ASM-NEXT: v_mov_b32_e32 v2, 7
106 ; DAGISEL-ASM-NEXT: flat_store_dword v[0:1], v2
107 ; DAGISEL-ASM-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
108 ; DAGISEL-ASM-NEXT: s_setpc_b64 s[30:31]
110 ; GISEL-ASM-LABEL: private_alloca_to_flat:
111 ; GISEL-ASM: ; %bb.0:
112 ; GISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
113 ; GISEL-ASM-NEXT: s_lshr_b32 s4, s32, 6
114 ; GISEL-ASM-NEXT: s_mov_b64 s[6:7], src_private_base
115 ; GISEL-ASM-NEXT: s_mov_b32 s5, s7
116 ; GISEL-ASM-NEXT: v_mov_b32_e32 v0, s4
117 ; GISEL-ASM-NEXT: v_mov_b32_e32 v2, 7
118 ; GISEL-ASM-NEXT: v_mov_b32_e32 v1, s5
119 ; GISEL-ASM-NEXT: flat_store_dword v[0:1], v2
120 ; GISEL-ASM-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
121 ; GISEL-ASM-NEXT: s_setpc_b64 s[30:31]
140 ; ASM-LABEL: knownbits_on_flat_to_priv:
141 ; ASM: ; %bb.0:
142 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
143 ; ASM-NEXT: v_or_b32_e32 v0, 15, v0
144 ; ASM-NEXT: v_mov_b32_e32 v1, 7
145 ; ASM-NEXT: buffer_store_dword v1, v0, s[0:3], 0 offen
146 ; ASM-NEXT: s_waitcnt vmcnt(0)
147 ; ASM-NEXT: s_setpc_b64 s[30:31]
166 ; ASM-LABEL: knownbits_on_priv_to_flat:
167 ; ASM: ; %bb.0:
168 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
169 ; ASM-NEXT: s_mov_b64 s[4:5], src_private_base
170 ; ASM-NEXT: v_and_b32_e32 v0, 0xffff, v0
171 ; ASM-NEXT: v_mov_b32_e32 v1, s5
172 ; ASM-NEXT: v_mov_b32_e32 v2, 7
173 ; ASM-NEXT: flat_store_dword v[0:1], v2
174 ; ASM-NEXT: s_waitcnt vmcnt(0) lgkmcnt(0)
175 ; ASM-NEXT: s_setpc_b64 s[30:31]
206 ; DAGISEL-ASM-LABEL: recursive_phis:
207 ; DAGISEL-ASM: ; %bb.0: ; %entry
208 ; DAGISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
209 ; DAGISEL-ASM-NEXT: v_and_b32_e32 v0, 1, v0
210 ; DAGISEL-ASM-NEXT: v_cmp_eq_u32_e32 vcc, 1, v0
211 ; DAGISEL-ASM-NEXT: v_lshrrev_b32_e64 v0, 6, s32
212 ; DAGISEL-ASM-NEXT: s_and_saveexec_b64 s[4:5], vcc
213 ; DAGISEL-ASM-NEXT: ; %bb.1: ; %then
214 ; DAGISEL-ASM-NEXT: v_and_b32_e32 v0, 0xffff, v1
215 ; DAGISEL-ASM-NEXT: ; %bb.2: ; %finallyendcf.split
216 ; DAGISEL-ASM-NEXT: s_or_b64 exec, exec, s[4:5]
217 ; DAGISEL-ASM-NEXT: s_xor_b64 s[6:7], vcc, -1
218 ; DAGISEL-ASM-NEXT: s_mov_b64 s[4:5], 0
219 ; DAGISEL-ASM-NEXT: s_mov_b64 s[8:9], src_private_base
220 ; DAGISEL-ASM-NEXT: v_mov_b32_e32 v2, 7
221 ; DAGISEL-ASM-NEXT: .LBB7_3: ; %finally
222 ; DAGISEL-ASM-NEXT: ; =>This Inner Loop Header: Depth=1
223 ; DAGISEL-ASM-NEXT: s_and_b64 s[10:11], exec, s[6:7]
224 ; DAGISEL-ASM-NEXT: s_or_b64 s[4:5], s[10:11], s[4:5]
225 ; DAGISEL-ASM-NEXT: v_mov_b32_e32 v1, s9
226 ; DAGISEL-ASM-NEXT: flat_store_dword v[0:1], v2
227 ; DAGISEL-ASM-NEXT: s_waitcnt vmcnt(0)
228 ; DAGISEL-ASM-NEXT: s_andn2_b64 exec, exec, s[4:5]
229 ; DAGISEL-ASM-NEXT: s_cbranch_execnz .LBB7_3
230 ; DAGISEL-ASM-NEXT: ; %bb.4: ; %end
231 ; DAGISEL-ASM-NEXT: s_or_b64 exec, exec, s[4:5]
232 ; DAGISEL-ASM-NEXT: s_waitcnt lgkmcnt(0)
233 ; DAGISEL-ASM-NEXT: s_setpc_b64 s[30:31]
235 ; GISEL-ASM-LABEL: recursive_phis:
236 ; GISEL-ASM: ; %bb.0: ; %entry
237 ; GISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
238 ; GISEL-ASM-NEXT: v_and_b32_e32 v0, 1, v0
239 ; GISEL-ASM-NEXT: v_cmp_ne_u32_e32 vcc, 0, v0
240 ; GISEL-ASM-NEXT: s_lshr_b32 s6, s32, 6
241 ; GISEL-ASM-NEXT: s_xor_b64 s[4:5], vcc, -1
242 ; GISEL-ASM-NEXT: v_mov_b32_e32 v0, s6
243 ; GISEL-ASM-NEXT: s_and_saveexec_b64 s[6:7], vcc
244 ; GISEL-ASM-NEXT: ; %bb.1: ; %then
245 ; GISEL-ASM-NEXT: v_and_b32_e32 v0, 0xffff, v1
246 ; GISEL-ASM-NEXT: ; %bb.2: ; %finallyendcf.split
247 ; GISEL-ASM-NEXT: s_or_b64 exec, exec, s[6:7]
248 ; GISEL-ASM-NEXT: s_mov_b64 s[8:9], src_private_base
249 ; GISEL-ASM-NEXT: s_mov_b64 s[6:7], 0
250 ; GISEL-ASM-NEXT: v_mov_b32_e32 v1, s9
251 ; GISEL-ASM-NEXT: v_mov_b32_e32 v2, 7
252 ; GISEL-ASM-NEXT: .LBB7_3: ; %finally
253 ; GISEL-ASM-NEXT: ; =>This Inner Loop Header: Depth=1
254 ; GISEL-ASM-NEXT: s_and_b64 s[8:9], exec, s[4:5]
255 ; GISEL-ASM-NEXT: s_or_b64 s[6:7], s[8:9], s[6:7]
256 ; GISEL-ASM-NEXT: flat_store_dword v[0:1], v2
257 ; GISEL-ASM-NEXT: s_waitcnt vmcnt(0)
258 ; GISEL-ASM-NEXT: s_andn2_b64 exec, exec, s[6:7]
259 ; GISEL-ASM-NEXT: s_cbranch_execnz .LBB7_3
260 ; GISEL-ASM-NEXT: ; %bb.4: ; %end
261 ; GISEL-ASM-NEXT: s_or_b64 exec, exec, s[6:7]
262 ; GISEL-ASM-NEXT: s_waitcnt lgkmcnt(0)
263 ; GISEL-ASM-NEXT: s_setpc_b64 s[30:31]
299 ; ASM-LABEL: cast_private_to_flat_to_private:
300 ; ASM: ; %bb.0:
301 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
302 ; ASM-NEXT: buffer_load_dword v0, v0, s[0:3], 0 offen glc
303 ; ASM-NEXT: s_waitcnt vmcnt(0)
304 ; ASM-NEXT: s_setpc_b64 s[30:31]
320 ; DAGISEL-ASM-LABEL: cast_private_to_flat_to_local:
321 ; DAGISEL-ASM: ; %bb.0:
322 ; DAGISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
323 ; DAGISEL-ASM-NEXT: s_mov_b64 s[4:5], src_private_base
324 ; DAGISEL-ASM-NEXT: v_mov_b32_e32 v1, s5
325 ; DAGISEL-ASM-NEXT: v_cmp_ne_u32_e32 vcc, -1, v0
326 ; DAGISEL-ASM-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc
327 ; DAGISEL-ASM-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc
328 ; DAGISEL-ASM-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]
329 ; DAGISEL-ASM-NEXT: v_cndmask_b32_e32 v0, -1, v0, vcc
330 ; DAGISEL-ASM-NEXT: ds_read_b32 v0, v0
331 ; DAGISEL-ASM-NEXT: s_waitcnt lgkmcnt(0)
332 ; DAGISEL-ASM-NEXT: s_setpc_b64 s[30:31]
334 ; GISEL-ASM-LABEL: cast_private_to_flat_to_local:
335 ; GISEL-ASM: ; %bb.0:
336 ; GISEL-ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
337 ; GISEL-ASM-NEXT: s_mov_b64 s[4:5], src_private_base
338 ; GISEL-ASM-NEXT: v_mov_b32_e32 v1, s5
339 ; GISEL-ASM-NEXT: v_cmp_ne_u32_e32 vcc, -1, v0
340 ; GISEL-ASM-NEXT: v_cndmask_b32_e32 v0, 0, v0, vcc
341 ; GISEL-ASM-NEXT: v_cndmask_b32_e32 v1, 0, v1, vcc
342 ; GISEL-ASM-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]
343 ; GISEL-ASM-NEXT: v_cndmask_b32_e32 v0, -1, v0, vcc
344 ; GISEL-ASM-NEXT: ds_read_b32 v0, v0
345 ; GISEL-ASM-NEXT: s_waitcnt lgkmcnt(0)
346 ; GISEL-ASM-NEXT: s_setpc_b64 s[30:31]
362 ; ASM-LABEL: cast_private_to_flat_to_global:
363 ; ASM: ; %bb.0:
364 ; ASM-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
365 ; ASM-NEXT: v_mov_b32_e32 v1, 0
366 ; ASM-NEXT: v_cmp_ne_u64_e32 vcc, 0, v[0:1]
367 ; ASM-NEXT: v_cndmask_b32_e32 v0, -1, v0, vcc
368 ; ASM-NEXT: ds_read_b32 v0, v0
369 ; ASM-NEXT: s_waitcnt lgkmcnt(0)
370 ; ASM-NEXT: s_setpc_b64 s[30:31]