; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck %s define amdgpu_gfx [13 x i32] @issue130120() { ; CHECK-LABEL: issue130120: ; CHECK: ; %bb.0: ; %bb ; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) ; CHECK-NEXT: v_mov_b32_e32 v0, 0 ; CHECK-NEXT: s_add_i32 s0, s32, 0xf0 ; CHECK-NEXT: s_add_i32 s1, s32, 0xf4 ; CHECK-NEXT: s_add_i32 s2, s32, 0xf8 ; CHECK-NEXT: s_add_i32 s3, s32, 0xfc ; CHECK-NEXT: v_mov_b32_e32 v1, v0 ; CHECK-NEXT: s_add_i32 s34, s32, 0x100 ; CHECK-NEXT: s_add_i32 s35, s32, 0x104 ; CHECK-NEXT: s_add_i32 s36, s32, 0x108 ; CHECK-NEXT: s_add_i32 s37, s32, 0x110 ; CHECK-NEXT: s_add_i32 s38, s32, 0x120 ; CHECK-NEXT: s_or_b32 s39, s32, 4 ; CHECK-NEXT: s_or_b32 s40, s32, 8 ; CHECK-NEXT: s_or_b32 s41, s32, 12 ; CHECK-NEXT: s_add_i32 s42, s32, 16 ; CHECK-NEXT: s_add_i32 s43, s32, 20 ; CHECK-NEXT: s_add_i32 s44, s32, 24 ; CHECK-NEXT: s_mov_b32 s46, 1 ; CHECK-NEXT: s_movk_i32 s45, 0x990 ; CHECK-NEXT: s_mov_b32 s48, 0 ; CHECK-NEXT: .LBB0_1: ; %bb3 ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 ; CHECK-NEXT: s_cmp_eq_u32 s46, 0 ; CHECK-NEXT: s_mov_b32 s49, s48 ; CHECK-NEXT: s_mov_b32 s50, s48 ; CHECK-NEXT: s_cselect_b32 s51, 0, s1 ; CHECK-NEXT: s_cselect_b32 s55, 0, s35 ; CHECK-NEXT: v_dual_mov_b32 v2, s48 :: v_dual_mov_b32 v3, s49 ; CHECK-NEXT: s_cselect_b32 s52, 0, s2 ; CHECK-NEXT: s_cselect_b32 s56, 0, s36 ; CHECK-NEXT: s_cselect_b32 vcc_lo, 0, s43 ; CHECK-NEXT: v_mov_b32_e32 v4, s50 ; CHECK-NEXT: s_cselect_b32 s47, s45, 0xf0 ; CHECK-NEXT: s_cselect_b32 s53, 0, s3 ; CHECK-NEXT: s_cselect_b32 s54, 0, s34 ; CHECK-NEXT: s_cselect_b32 s57, 0, s37 ; CHECK-NEXT: s_cselect_b32 s58, 0, s38 ; CHECK-NEXT: s_cselect_b32 s59, 0, s0 ; CHECK-NEXT: s_cselect_b32 s60, 0, s39 ; CHECK-NEXT: s_cselect_b32 s61, 0, s40 ; CHECK-NEXT: s_cselect_b32 s62, 0, s41 ; CHECK-NEXT: s_cselect_b32 s63, 0, s42 ; CHECK-NEXT: s_cselect_b32 vcc_hi, 0, s44 ; CHECK-NEXT: s_mov_b32 s46, s48 ; CHECK-NEXT: scratch_store_b32 off, v0, s51 ; CHECK-NEXT: scratch_store_b32 off, v0, s52 ; CHECK-NEXT: scratch_store_b32 off, v0, s53 ; CHECK-NEXT: scratch_store_b32 off, v0, s54 ; CHECK-NEXT: scratch_store_b32 off, v0, s55 ; CHECK-NEXT: scratch_store_b64 off, v[0:1], s56 ; CHECK-NEXT: scratch_store_b32 off, v0, s57 ; CHECK-NEXT: scratch_store_b32 off, v0, s47 ; CHECK-NEXT: scratch_store_b96 off, v[2:4], s58 ; CHECK-NEXT: scratch_store_b96 off, v[2:4], s59 ; CHECK-NEXT: scratch_store_b32 off, v0, s60 ; CHECK-NEXT: scratch_store_b32 off, v0, s61 ; CHECK-NEXT: scratch_store_b32 off, v0, s62 ; CHECK-NEXT: scratch_store_b32 off, v0, s63 ; CHECK-NEXT: scratch_store_b32 off, v0, vcc_lo ; CHECK-NEXT: scratch_store_b32 off, v0, vcc_hi ; CHECK-NEXT: s_mov_b32 vcc_lo, exec_lo ; CHECK-NEXT: s_cbranch_vccnz .LBB0_1 ; CHECK-NEXT: ; %bb.2: ; %DummyReturnBlock ; CHECK-NEXT: s_setpc_b64 s[30:31] bb: %i = alloca [8 x { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }], i32 0, align 16, addrspace(5) %i1 = getelementptr [8 x { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }], ptr addrspace(5) %i, i32 0, i32 0, i32 20 %i2 = getelementptr [8 x { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }], ptr addrspace(5) %i, i32 0, i32 6, i32 20 br label %bb3 bb3: ; preds = %bb3, %bb %i4 = phi i32 [ 1, %bb ], [ 0, %bb3 ] %i5 = icmp eq i32 %i4, 0 %i6 = select i1 %i5, ptr addrspace(5) %i2, ptr addrspace(5) %i1 store i32 0, ptr addrspace(5) %i6, align 16 %i7 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 1 %i8 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i7 store float 0.000000e+00, ptr addrspace(5) %i8, align 4 %i9 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 2 %i10 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i9 store i32 0, ptr addrspace(5) %i10, align 8 %i11 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 3 %i12 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i11 store i32 0, ptr addrspace(5) %i12, align 4 %i13 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 4 %i14 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i13 store i32 0, ptr addrspace(5) %i14, align 16 %i15 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 5 %i16 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i15 store i32 0, ptr addrspace(5) %i16, align 4 %i17 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 6 %i18 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i17 store <2 x float> zeroinitializer, ptr addrspace(5) %i18, align 8 %i19 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 7 %i20 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i19 store i32 0, ptr addrspace(5) %i20, align 16 %i21 = getelementptr { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, ptr addrspace(5) %i1, i32 0, i32 8 %i22 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i21 store <3 x float> zeroinitializer, ptr addrspace(5) %i22, align 16 %i23 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i1 store <3 x float> zeroinitializer, ptr addrspace(5) %i23, align 16 %i24 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 1 %i25 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i24 store i32 0, ptr addrspace(5) %i25, align 4 %i26 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 2 %i27 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i26 store i32 0, ptr addrspace(5) %i27, align 8 %i28 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 3 %i29 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i28 store i32 0, ptr addrspace(5) %i29, align 4 %i30 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 4 %i31 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i30 store i32 0, ptr addrspace(5) %i31, align 16 %i32 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 5 %i33 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i32 store i32 0, ptr addrspace(5) %i33, align 4 %i34 = getelementptr { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, { <3 x float>, float, <3 x float>, float }, float, i32, i32, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, { i32, float, i32, i32, i32, i32, <2 x float>, i32, <3 x float>, <3 x float> }, i32, i32, i32, i32, i32, i32, i32, i32, i32 }, ptr addrspace(5) %i, i32 0, i32 6 %i35 = select i1 %i5, ptr addrspace(5) null, ptr addrspace(5) %i34 store i32 0, ptr addrspace(5) %i35, align 8 br label %bb3 }