@@ -239,53 +239,48 @@ define amdgpu_kernel void @store_lds_v4i32_align1(ptr addrspace(3) %out, <4 x i3
239239; GFX11-NEXT: s_waitcnt lgkmcnt(0)
240240; GFX11-NEXT: s_and_b32 s6, 0xffff, s0
241241; GFX11-NEXT: s_lshr_b32 s5, s0, 16
242- ; GFX11-NEXT: v_mov_b16_e32 v0.l, s0
243- ; GFX11-NEXT: v_mov_b32_e32 v5, s4
242+ ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s4
244243; GFX11-NEXT: s_lshr_b32 s0, s1, 16
245244; GFX11-NEXT: s_and_b32 s4, 0xffff, s1
246- ; GFX11-NEXT: v_mov_b16_e32 v0.h , s1
245+ ; GFX11-NEXT: v_dual_mov_b32 v2 , s1 :: v_dual_mov_b32 v3, s2
247246; GFX11-NEXT: s_lshr_b32 s1, s2, 16
248247; GFX11-NEXT: s_and_b32 s7, 0xffff, s2
249- ; GFX11-NEXT: v_mov_b16_e32 v1.l, s2
250248; GFX11-NEXT: s_lshr_b32 s2, s6, 8
251249; GFX11-NEXT: s_lshr_b32 s6, s5, 8
252- ; GFX11-NEXT: v_mov_b16_e32 v2.h, s2
253- ; GFX11-NEXT: v_mov_b16_e32 v1.h, s5
250+ ; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1)
251+ ; GFX11-NEXT: v_dual_mov_b32 v6, s2 :: v_dual_mov_b32 v7, s6
252+ ; GFX11-NEXT: v_dual_mov_b32 v4, s5 :: v_dual_mov_b32 v5, s0
254253; GFX11-NEXT: s_lshr_b32 s4, s4, 8
255254; GFX11-NEXT: s_lshr_b32 s5, s0, 8
256- ; GFX11-NEXT: v_mov_b16_e32 v2.l, s0
257255; GFX11-NEXT: s_lshr_b32 s0, s7, 8
258- ; GFX11-NEXT: v_mov_b16_e32 v3.l, s6
259- ; GFX11-NEXT: v_mov_b16_e32 v3.h, s4
260- ; GFX11-NEXT: v_mov_b16_e32 v4.l, s5
261- ; GFX11-NEXT: ds_store_b8 v5, v0
262- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v2 offset:1
263- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v1 offset:2
264- ; GFX11-NEXT: ds_store_b8 v5, v3 offset:3
265- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v0 offset:4
266- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v3 offset:5
267- ; GFX11-NEXT: ds_store_b8 v5, v2 offset:6
268- ; GFX11-NEXT: ds_store_b8 v5, v4 offset:7
269- ; GFX11-NEXT: v_mov_b16_e32 v0.l, s0
256+ ; GFX11-NEXT: v_dual_mov_b32 v8, s4 :: v_dual_mov_b32 v9, s5
257+ ; GFX11-NEXT: ds_store_b8 v1, v0
258+ ; GFX11-NEXT: ds_store_b8 v1, v6 offset:1
259+ ; GFX11-NEXT: ds_store_b8 v1, v4 offset:2
260+ ; GFX11-NEXT: ds_store_b8 v1, v7 offset:3
261+ ; GFX11-NEXT: ds_store_b8 v1, v2 offset:4
262+ ; GFX11-NEXT: ds_store_b8 v1, v8 offset:5
263+ ; GFX11-NEXT: ds_store_b8 v1, v5 offset:6
264+ ; GFX11-NEXT: ds_store_b8 v1, v9 offset:7
265+ ; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v5, s3
270266; GFX11-NEXT: s_lshr_b32 s0, s1, 8
271- ; GFX11-NEXT: v_mov_b16_e32 v0.h , s1
272- ; GFX11-NEXT: v_mov_b16_e32 v1.h , s0
267+ ; GFX11-NEXT: v_mov_b32_e32 v2 , s1
268+ ; GFX11-NEXT: v_mov_b32_e32 v4 , s0
273269; GFX11-NEXT: s_and_b32 s0, 0xffff, s3
274270; GFX11-NEXT: s_lshr_b32 s1, s3, 16
275271; GFX11-NEXT: s_lshr_b32 s0, s0, 8
276- ; GFX11-NEXT: v_mov_b16_e32 v2.l, s3
277- ; GFX11-NEXT: v_mov_b16_e32 v2.h , s0
272+ ; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(SALU_CYCLE_1)
273+ ; GFX11-NEXT: v_dual_mov_b32 v7, s1 :: v_dual_mov_b32 v6 , s0
278274; GFX11-NEXT: s_lshr_b32 s0, s1, 8
279- ; GFX11-NEXT: v_mov_b16_e32 v3.l, s1
280- ; GFX11-NEXT: v_mov_b16_e32 v3.h, s0
281- ; GFX11-NEXT: ds_store_b8 v5, v1 offset:8
282- ; GFX11-NEXT: ds_store_b8 v5, v0 offset:9
283- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v0 offset:10
284- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v1 offset:11
285- ; GFX11-NEXT: ds_store_b8 v5, v2 offset:12
286- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v2 offset:13
287- ; GFX11-NEXT: ds_store_b8 v5, v3 offset:14
288- ; GFX11-NEXT: ds_store_b8_d16_hi v5, v3 offset:15
275+ ; GFX11-NEXT: v_mov_b32_e32 v8, s0
276+ ; GFX11-NEXT: ds_store_b8 v1, v3 offset:8
277+ ; GFX11-NEXT: ds_store_b8 v1, v0 offset:9
278+ ; GFX11-NEXT: ds_store_b8 v1, v2 offset:10
279+ ; GFX11-NEXT: ds_store_b8 v1, v4 offset:11
280+ ; GFX11-NEXT: ds_store_b8 v1, v5 offset:12
281+ ; GFX11-NEXT: ds_store_b8 v1, v6 offset:13
282+ ; GFX11-NEXT: ds_store_b8 v1, v7 offset:14
283+ ; GFX11-NEXT: ds_store_b8 v1, v8 offset:15
289284; GFX11-NEXT: s_endpgm
290285 store <4 x i32 > %x , ptr addrspace (3 ) %out , align 1
291286 ret void
0 commit comments