brintos

brintos / llvm-project-archived public Read only

0
0
Text · 56.1 KiB · 6cc6ba7 Raw
1081 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=ASM-DAG %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=ASM-DAG %s4; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 < %s | FileCheck -check-prefixes=ASM-GISEL-TRUE16 %s5; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 < %s | FileCheck -check-prefixes=ASM-GISEL-FAKE16 %s6 7; Test that we can use v0 for temporaries in the if.then block.8define i32 @dead_i32(i1 %cond, i32 %x, ptr addrspace(1) %ptr1) #0 {9; ASM-DAG-LABEL: dead_i32:10; ASM-DAG:       ; %bb.0: ; %entry11; ASM-DAG-NEXT:    s_wait_loadcnt_dscnt 0x012; ASM-DAG-NEXT:    s_wait_expcnt 0x013; ASM-DAG-NEXT:    s_wait_samplecnt 0x014; ASM-DAG-NEXT:    s_wait_bvhcnt 0x015; ASM-DAG-NEXT:    s_wait_kmcnt 0x016; ASM-DAG-NEXT:    v_mov_b32_e32 v4, v017; ASM-DAG-NEXT:    v_mov_b32_e32 v0, v118; ASM-DAG-NEXT:    s_mov_b32 s0, exec_lo19; ASM-DAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)20; ASM-DAG-NEXT:    v_and_b32_e32 v1, 1, v421; ASM-DAG-NEXT:    v_cmpx_eq_u32_e32 1, v122; ASM-DAG-NEXT:    s_cbranch_execz .LBB0_223; ASM-DAG-NEXT:  ; %bb.1: ; %if.then24; ASM-DAG-NEXT:    v_add_nc_u32_e32 v0, 1, v025; ASM-DAG-NEXT:    global_store_b32 v[2:3], v0, off26; ASM-DAG-NEXT:    ; implicit-def: $vgpr027; ASM-DAG-NEXT:  .LBB0_2: ; %if.end28; ASM-DAG-NEXT:    s_wait_alu depctr_sa_sdst(0)29; ASM-DAG-NEXT:    s_or_b32 exec_lo, exec_lo, s030; ASM-DAG-NEXT:    s_setpc_b64 s[30:31]31;32; ASM-GISEL-TRUE16-LABEL: dead_i32:33; ASM-GISEL-TRUE16:       ; %bb.0: ; %entry34; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x035; ASM-GISEL-TRUE16-NEXT:    s_wait_expcnt 0x036; ASM-GISEL-TRUE16-NEXT:    s_wait_samplecnt 0x037; ASM-GISEL-TRUE16-NEXT:    s_wait_bvhcnt 0x038; ASM-GISEL-TRUE16-NEXT:    s_wait_kmcnt 0x039; ASM-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v4, v040; ASM-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v0, v141; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s0, exec_lo42; ASM-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)43; ASM-GISEL-TRUE16-NEXT:    v_and_b16 v1.l, 1, v4.l44; ASM-GISEL-TRUE16-NEXT:    v_cmpx_ne_u16_e32 0, v1.l45; ASM-GISEL-TRUE16-NEXT:    s_cbranch_execz .LBB0_246; ASM-GISEL-TRUE16-NEXT:  ; %bb.1: ; %if.then47; ASM-GISEL-TRUE16-NEXT:    v_add_nc_u32_e32 v0, 1, v048; ASM-GISEL-TRUE16-NEXT:    global_store_b32 v[2:3], v0, off49; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr050; ASM-GISEL-TRUE16-NEXT:  .LBB0_2: ; %if.end51; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)52; ASM-GISEL-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s053; ASM-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]54;55; ASM-GISEL-FAKE16-LABEL: dead_i32:56; ASM-GISEL-FAKE16:       ; %bb.0: ; %entry57; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x058; ASM-GISEL-FAKE16-NEXT:    s_wait_expcnt 0x059; ASM-GISEL-FAKE16-NEXT:    s_wait_samplecnt 0x060; ASM-GISEL-FAKE16-NEXT:    s_wait_bvhcnt 0x061; ASM-GISEL-FAKE16-NEXT:    s_wait_kmcnt 0x062; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v4, v063; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v0, v164; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s0, exec_lo65; ASM-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)66; ASM-GISEL-FAKE16-NEXT:    v_and_b32_e32 v1, 1, v467; ASM-GISEL-FAKE16-NEXT:    v_cmpx_ne_u32_e32 0, v168; ASM-GISEL-FAKE16-NEXT:    s_cbranch_execz .LBB0_269; ASM-GISEL-FAKE16-NEXT:  ; %bb.1: ; %if.then70; ASM-GISEL-FAKE16-NEXT:    v_add_nc_u32_e32 v0, 1, v071; ASM-GISEL-FAKE16-NEXT:    global_store_b32 v[2:3], v0, off72; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr073; ASM-GISEL-FAKE16-NEXT:  .LBB0_2: ; %if.end74; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)75; ASM-GISEL-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s076; ASM-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]77entry:78  %dead = call i32 @llvm.amdgcn.dead.i32()79  br i1 %cond, label %if.then, label %if.end80 81if.then:                                          ; preds = %entry82  %temp = add i32 %x, 183  store i32 %temp, ptr addrspace(1) %ptr184  br label %if.end85 86if.end:87  %res = phi i32 [ %x, %entry ], [ %dead, %if.then ]88  ret i32 %res89}90 91%trivial_types = type { i32, float, <3 x i32>, i64, ptr addrspace(5), ptr addrspace(1), <4 x float>, { float, <2 x i16> } }92 93define %trivial_types @dead_struct(i1 %cond, %trivial_types %x, ptr addrspace(1) %ptr1, i32 %v) #0 {94; ASM-DAG-LABEL: dead_struct:95; ASM-DAG:       ; %bb.0: ; %entry96; ASM-DAG-NEXT:    s_wait_loadcnt_dscnt 0x097; ASM-DAG-NEXT:    s_wait_expcnt 0x098; ASM-DAG-NEXT:    s_wait_samplecnt 0x099; ASM-DAG-NEXT:    s_wait_bvhcnt 0x0100; ASM-DAG-NEXT:    s_wait_kmcnt 0x0101; ASM-DAG-NEXT:    v_mov_b32_e32 v20, v0102; ASM-DAG-NEXT:    v_mov_b32_e32 v0, v1103; ASM-DAG-NEXT:    s_mov_b32 s0, exec_lo104; ASM-DAG-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)105; ASM-DAG-NEXT:    v_and_b32_e32 v1, 1, v20106; ASM-DAG-NEXT:    v_cmpx_eq_u32_e32 1, v1107; ASM-DAG-NEXT:    s_cbranch_execz .LBB1_2108; ASM-DAG-NEXT:  ; %bb.1: ; %if.then109; ASM-DAG-NEXT:    v_dual_mov_b32 v11, 0 :: v_dual_add_nc_u32 v0, 15, v19110; ASM-DAG-NEXT:    v_mov_b32_e32 v2, 0x3fc00000111; ASM-DAG-NEXT:    ; implicit-def: $vgpr3_vgpr4_vgpr5112; ASM-DAG-NEXT:    ; implicit-def: $vgpr6_vgpr7113; ASM-DAG-NEXT:    ; implicit-def: $vgpr8114; ASM-DAG-NEXT:    ; implicit-def: $vgpr9_vgpr10115; ASM-DAG-NEXT:    ; implicit-def: $vgpr15116; ASM-DAG-NEXT:    ; implicit-def: $vgpr16117; ASM-DAG-NEXT:    s_delay_alu instid0(VALU_DEP_2)118; ASM-DAG-NEXT:    v_dual_mov_b32 v12, v11 :: v_dual_mov_b32 v13, v11119; ASM-DAG-NEXT:    v_mov_b32_e32 v14, v11120; ASM-DAG-NEXT:    global_store_b32 v[17:18], v0, off121; ASM-DAG-NEXT:    ; implicit-def: $vgpr0122; ASM-DAG-NEXT:  .LBB1_2: ; %if.end123; ASM-DAG-NEXT:    s_wait_alu depctr_sa_sdst(0)124; ASM-DAG-NEXT:    s_or_b32 exec_lo, exec_lo, s0125; ASM-DAG-NEXT:    v_dual_mov_b32 v1, v2 :: v_dual_mov_b32 v2, v3126; ASM-DAG-NEXT:    v_dual_mov_b32 v3, v4 :: v_dual_mov_b32 v4, v5127; ASM-DAG-NEXT:    v_dual_mov_b32 v5, v6 :: v_dual_mov_b32 v6, v7128; ASM-DAG-NEXT:    v_dual_mov_b32 v7, v8 :: v_dual_mov_b32 v8, v9129; ASM-DAG-NEXT:    v_dual_mov_b32 v9, v10 :: v_dual_mov_b32 v10, v11130; ASM-DAG-NEXT:    v_dual_mov_b32 v11, v12 :: v_dual_mov_b32 v12, v13131; ASM-DAG-NEXT:    v_dual_mov_b32 v13, v14 :: v_dual_mov_b32 v14, v15132; ASM-DAG-NEXT:    v_mov_b32_e32 v15, v16133; ASM-DAG-NEXT:    s_setpc_b64 s[30:31]134;135; ASM-GISEL-TRUE16-LABEL: dead_struct:136; ASM-GISEL-TRUE16:       ; %bb.0: ; %entry137; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0138; ASM-GISEL-TRUE16-NEXT:    s_wait_expcnt 0x0139; ASM-GISEL-TRUE16-NEXT:    s_wait_samplecnt 0x0140; ASM-GISEL-TRUE16-NEXT:    s_wait_bvhcnt 0x0141; ASM-GISEL-TRUE16-NEXT:    s_wait_kmcnt 0x0142; ASM-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v20, v0143; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2144; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s0, exec_lo145; ASM-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)146; ASM-GISEL-TRUE16-NEXT:    v_and_b16 v2.l, 1, v20.l147; ASM-GISEL-TRUE16-NEXT:    v_cmpx_ne_u16_e32 0, v2.l148; ASM-GISEL-TRUE16-NEXT:    s_cbranch_execz .LBB1_2149; ASM-GISEL-TRUE16-NEXT:  ; %bb.1: ; %if.then150; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s4, 0151; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s1, 0x3fc00000152; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)153; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s7, s4154; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s5, s4155; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s6, s4156; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)157; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v13, s6158; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_add_nc_u32 v0, 15, v19159; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v12, s5 :: v_dual_mov_b32 v11, s4160; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr3_vgpr4_vgpr5161; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr6_vgpr7162; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr8163; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr9_vgpr10164; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr15165; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr16166; ASM-GISEL-TRUE16-NEXT:    global_store_b32 v[17:18], v0, off167; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr0168; ASM-GISEL-TRUE16-NEXT:  .LBB1_2: ; %if.end169; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)170; ASM-GISEL-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0171; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4172; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6173; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8174; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10175; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12176; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14177; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16178; ASM-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]179;180; ASM-GISEL-FAKE16-LABEL: dead_struct:181; ASM-GISEL-FAKE16:       ; %bb.0: ; %entry182; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0183; ASM-GISEL-FAKE16-NEXT:    s_wait_expcnt 0x0184; ASM-GISEL-FAKE16-NEXT:    s_wait_samplecnt 0x0185; ASM-GISEL-FAKE16-NEXT:    s_wait_bvhcnt 0x0186; ASM-GISEL-FAKE16-NEXT:    s_wait_kmcnt 0x0187; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v20, v0188; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2189; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s0, exec_lo190; ASM-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)191; ASM-GISEL-FAKE16-NEXT:    v_and_b32_e32 v2, 1, v20192; ASM-GISEL-FAKE16-NEXT:    v_cmpx_ne_u32_e32 0, v2193; ASM-GISEL-FAKE16-NEXT:    s_cbranch_execz .LBB1_2194; ASM-GISEL-FAKE16-NEXT:  ; %bb.1: ; %if.then195; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s4, 0196; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s1, 0x3fc00000197; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)198; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s7, s4199; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s5, s4200; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s6, s4201; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)202; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v13, s6203; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_add_nc_u32 v0, 15, v19204; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v12, s5 :: v_dual_mov_b32 v11, s4205; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr3_vgpr4_vgpr5206; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr6_vgpr7207; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr8208; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr9_vgpr10209; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr15210; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr16211; ASM-GISEL-FAKE16-NEXT:    global_store_b32 v[17:18], v0, off212; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr0213; ASM-GISEL-FAKE16-NEXT:  .LBB1_2: ; %if.end214; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)215; ASM-GISEL-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0216; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4217; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6218; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8219; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10220; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12221; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14222; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16223; ASM-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]224; ASM-GISEL-LABEL: dead_struct:225; ASM-GISEL:       ; %bb.0: ; %entry226; ASM-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0227; ASM-GISEL-NEXT:    s_wait_expcnt 0x0228; ASM-GISEL-NEXT:    s_wait_samplecnt 0x0229; ASM-GISEL-NEXT:    s_wait_bvhcnt 0x0230; ASM-GISEL-NEXT:    s_wait_kmcnt 0x0231; ASM-GISEL-NEXT:    v_mov_b32_e32 v20, v0232; ASM-GISEL-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2233; ASM-GISEL-NEXT:    s_mov_b32 s0, exec_lo234; ASM-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_1)235; ASM-GISEL-NEXT:    v_and_b32_e32 v2, 1, v20236; ASM-GISEL-NEXT:    v_cmpx_ne_u32_e32 0, v2237; ASM-GISEL-NEXT:    s_cbranch_execz .LBB1_2238; ASM-GISEL-NEXT:  ; %bb.1: ; %if.then239; ASM-GISEL-NEXT:    s_mov_b32 s4, 0240; ASM-GISEL-NEXT:    s_mov_b32 s1, 0x3fc00000241; ASM-GISEL-NEXT:    s_wait_alu 0xfffe242; ASM-GISEL-NEXT:    s_mov_b32 s7, s4243; ASM-GISEL-NEXT:    s_mov_b32 s5, s4244; ASM-GISEL-NEXT:    s_mov_b32 s6, s4245; ASM-GISEL-NEXT:    s_wait_alu 0xfffe246; ASM-GISEL-NEXT:    v_dual_mov_b32 v14, s7 :: v_dual_mov_b32 v13, s6247; ASM-GISEL-NEXT:    v_dual_mov_b32 v1, s1 :: v_dual_add_nc_u32 v0, 15, v19248; ASM-GISEL-NEXT:    v_dual_mov_b32 v12, s5 :: v_dual_mov_b32 v11, s4249; ASM-GISEL-NEXT:    ; implicit-def: $vgpr3_vgpr4_vgpr5250; ASM-GISEL-NEXT:    ; implicit-def: $vgpr6_vgpr7251; ASM-GISEL-NEXT:    ; implicit-def: $vgpr8252; ASM-GISEL-NEXT:    ; implicit-def: $vgpr9_vgpr10253; ASM-GISEL-NEXT:    ; implicit-def: $vgpr15254; ASM-GISEL-NEXT:    ; implicit-def: $vgpr16255; ASM-GISEL-NEXT:    global_store_b32 v[17:18], v0, off256; ASM-GISEL-NEXT:    ; implicit-def: $vgpr0257; ASM-GISEL-NEXT:  .LBB1_2: ; %if.end258; ASM-GISEL-NEXT:    s_wait_alu 0xfffe259; ASM-GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0260; ASM-GISEL-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4261; ASM-GISEL-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6262; ASM-GISEL-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8263; ASM-GISEL-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10264; ASM-GISEL-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12265; ASM-GISEL-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14266; ASM-GISEL-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16267; ASM-GISEL-NEXT:    s_setpc_b64 s[30:31]268entry:269  br i1 %cond, label %if.then, label %if.end270 271if.then:272  %dead = call %trivial_types @llvm.amdgcn.dead.s_trivial_typess()273  %dead_insert_1 = insertvalue %trivial_types %dead, float 1.5, 1274  %dead_insert_3 = insertvalue %trivial_types %dead_insert_1, <4 x float> zeroinitializer, 6275 276  %vgpr_use = add i32 %v, 15 ; may use v0 or one of the other implicit_defs277  store i32 %vgpr_use, ptr addrspace(1) %ptr1278 279  br label %if.end280 281if.end:282  %res = phi %trivial_types [ %x, %entry ], [ %dead_insert_3, %if.then ]283  ret %trivial_types %res284}285 286define [32 x i32] @dead_array(i1 %cond, [32 x i32] %x, ptr addrspace(1) %ptr1, i32 %v) #0 {287; ASM-DAG-LABEL: dead_array:288; ASM-DAG:       ; %bb.0: ; %entry289; ASM-DAG-NEXT:    s_wait_loadcnt_dscnt 0x0290; ASM-DAG-NEXT:    s_wait_expcnt 0x0291; ASM-DAG-NEXT:    s_wait_samplecnt 0x0292; ASM-DAG-NEXT:    s_wait_bvhcnt 0x0293; ASM-DAG-NEXT:    s_wait_kmcnt 0x0294; ASM-DAG-NEXT:    v_dual_mov_b32 v32, v30 :: v_dual_mov_b32 v33, v0295; ASM-DAG-NEXT:    v_mov_b32_e32 v0, v1296; ASM-DAG-NEXT:    s_clause 0x4297; ASM-DAG-NEXT:    scratch_load_b32 v35, off, s32 offset:12298; ASM-DAG-NEXT:    scratch_load_b32 v34, off, s32 offset:8299; ASM-DAG-NEXT:    scratch_load_b32 v31, off, s32 offset:4300; ASM-DAG-NEXT:    scratch_load_b32 v30, off, s32301; ASM-DAG-NEXT:    scratch_load_b32 v1, off, s32 offset:16302; ASM-DAG-NEXT:    s_mov_b32 s0, exec_lo303; ASM-DAG-NEXT:    v_and_b32_e32 v33, 1, v33304; ASM-DAG-NEXT:    s_delay_alu instid0(VALU_DEP_1)305; ASM-DAG-NEXT:    v_cmpx_eq_u32_e32 1, v33306; ASM-DAG-NEXT:    s_cbranch_execz .LBB2_2307; ASM-DAG-NEXT:  ; %bb.1: ; %if.then308; ASM-DAG-NEXT:    v_dual_mov_b32 v8, 15 :: v_dual_mov_b32 v7, 13309; ASM-DAG-NEXT:    s_wait_loadcnt 0x0310; ASM-DAG-NEXT:    v_add_nc_u32_e32 v0, 15, v1311; ASM-DAG-NEXT:    ; implicit-def: $vgpr2312; ASM-DAG-NEXT:    ; implicit-def: $vgpr3313; ASM-DAG-NEXT:    ; implicit-def: $vgpr4314; ASM-DAG-NEXT:    ; implicit-def: $vgpr5315; ASM-DAG-NEXT:    ; implicit-def: $vgpr6316; ASM-DAG-NEXT:    ; implicit-def: $vgpr9317; ASM-DAG-NEXT:    ; implicit-def: $vgpr10318; ASM-DAG-NEXT:    ; implicit-def: $vgpr11319; ASM-DAG-NEXT:    ; implicit-def: $vgpr12320; ASM-DAG-NEXT:    ; implicit-def: $vgpr13321; ASM-DAG-NEXT:    ; implicit-def: $vgpr14322; ASM-DAG-NEXT:    ; implicit-def: $vgpr15323; ASM-DAG-NEXT:    ; implicit-def: $vgpr16324; ASM-DAG-NEXT:    ; implicit-def: $vgpr17325; ASM-DAG-NEXT:    ; implicit-def: $vgpr18326; ASM-DAG-NEXT:    ; implicit-def: $vgpr19327; ASM-DAG-NEXT:    ; implicit-def: $vgpr20328; ASM-DAG-NEXT:    ; implicit-def: $vgpr21329; ASM-DAG-NEXT:    ; implicit-def: $vgpr22330; ASM-DAG-NEXT:    ; implicit-def: $vgpr23331; ASM-DAG-NEXT:    ; implicit-def: $vgpr24332; ASM-DAG-NEXT:    ; implicit-def: $vgpr25333; ASM-DAG-NEXT:    ; implicit-def: $vgpr26334; ASM-DAG-NEXT:    ; implicit-def: $vgpr27335; ASM-DAG-NEXT:    ; implicit-def: $vgpr28336; ASM-DAG-NEXT:    ; implicit-def: $vgpr29337; ASM-DAG-NEXT:    ; implicit-def: $vgpr32338; ASM-DAG-NEXT:    ; implicit-def: $vgpr30339; ASM-DAG-NEXT:    ; implicit-def: $vgpr31340; ASM-DAG-NEXT:    global_store_b32 v[34:35], v0, off341; ASM-DAG-NEXT:    ; implicit-def: $vgpr0342; ASM-DAG-NEXT:  .LBB2_2: ; %if.end343; ASM-DAG-NEXT:    s_wait_alu depctr_sa_sdst(0)344; ASM-DAG-NEXT:    s_or_b32 exec_lo, exec_lo, s0345; ASM-DAG-NEXT:    s_wait_loadcnt 0x0346; ASM-DAG-NEXT:    v_dual_mov_b32 v1, v2 :: v_dual_mov_b32 v2, v3347; ASM-DAG-NEXT:    v_dual_mov_b32 v3, v4 :: v_dual_mov_b32 v4, v5348; ASM-DAG-NEXT:    v_dual_mov_b32 v5, v6 :: v_dual_mov_b32 v6, v7349; ASM-DAG-NEXT:    v_dual_mov_b32 v7, v8 :: v_dual_mov_b32 v8, v9350; ASM-DAG-NEXT:    v_dual_mov_b32 v9, v10 :: v_dual_mov_b32 v10, v11351; ASM-DAG-NEXT:    v_dual_mov_b32 v11, v12 :: v_dual_mov_b32 v12, v13352; ASM-DAG-NEXT:    v_dual_mov_b32 v13, v14 :: v_dual_mov_b32 v14, v15353; ASM-DAG-NEXT:    v_dual_mov_b32 v15, v16 :: v_dual_mov_b32 v16, v17354; ASM-DAG-NEXT:    v_dual_mov_b32 v17, v18 :: v_dual_mov_b32 v18, v19355; ASM-DAG-NEXT:    v_dual_mov_b32 v19, v20 :: v_dual_mov_b32 v20, v21356; ASM-DAG-NEXT:    v_dual_mov_b32 v21, v22 :: v_dual_mov_b32 v22, v23357; ASM-DAG-NEXT:    v_dual_mov_b32 v23, v24 :: v_dual_mov_b32 v24, v25358; ASM-DAG-NEXT:    v_dual_mov_b32 v25, v26 :: v_dual_mov_b32 v26, v27359; ASM-DAG-NEXT:    v_dual_mov_b32 v27, v28 :: v_dual_mov_b32 v28, v29360; ASM-DAG-NEXT:    v_mov_b32_e32 v29, v32361; ASM-DAG-NEXT:    s_setpc_b64 s[30:31]362;363; ASM-GISEL-TRUE16-LABEL: dead_array:364; ASM-GISEL-TRUE16:       ; %bb.0: ; %entry365; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0366; ASM-GISEL-TRUE16-NEXT:    s_wait_expcnt 0x0367; ASM-GISEL-TRUE16-NEXT:    s_wait_samplecnt 0x0368; ASM-GISEL-TRUE16-NEXT:    s_wait_bvhcnt 0x0369; ASM-GISEL-TRUE16-NEXT:    s_wait_kmcnt 0x0370; ASM-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v32, v0371; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2372; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4373; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6374; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8375; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10376; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12377; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14378; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16379; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v16, v17 :: v_dual_mov_b32 v17, v18380; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v18, v19 :: v_dual_mov_b32 v19, v20381; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v20, v21 :: v_dual_mov_b32 v21, v22382; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v22, v23 :: v_dual_mov_b32 v23, v24383; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v24, v25 :: v_dual_mov_b32 v25, v26384; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v26, v27 :: v_dual_mov_b32 v27, v28385; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v28, v29 :: v_dual_mov_b32 v29, v30386; ASM-GISEL-TRUE16-NEXT:    s_clause 0x4387; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v30, off, s32388; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v31, off, s32 offset:4389; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v33, off, s32 offset:8390; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v34, off, s32 offset:12391; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v35, off, s32 offset:16392; ASM-GISEL-TRUE16-NEXT:    v_and_b16 v32.l, 1, v32.l393; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s0, exec_lo394; ASM-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)395; ASM-GISEL-TRUE16-NEXT:    v_cmpx_ne_u16_e32 0, v32.l396; ASM-GISEL-TRUE16-NEXT:    s_cbranch_execz .LBB2_2397; ASM-GISEL-TRUE16-NEXT:  ; %bb.1: ; %if.then398; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s1, 15399; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s2, 13400; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0401; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)402; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v7, s1 :: v_dual_add_nc_u32 v0, 15, v35403; ASM-GISEL-TRUE16-NEXT:    v_mov_b32_e32 v6, s2404; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr1405; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr2406; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr3407; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr4408; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr5409; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr8410; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr9411; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr10412; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr11413; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr12414; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr13415; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr14416; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr15417; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr16418; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr17419; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr18420; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr19421; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr20422; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr21423; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr22424; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr23425; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr24426; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr25427; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr26428; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr27429; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr28430; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr29431; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr30432; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr31433; ASM-GISEL-TRUE16-NEXT:    global_store_b32 v[33:34], v0, off434; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr0435; ASM-GISEL-TRUE16-NEXT:  .LBB2_2: ; %if.end436; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)437; ASM-GISEL-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0438; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0439; ASM-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]440;441; ASM-GISEL-FAKE16-LABEL: dead_array:442; ASM-GISEL-FAKE16:       ; %bb.0: ; %entry443; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0444; ASM-GISEL-FAKE16-NEXT:    s_wait_expcnt 0x0445; ASM-GISEL-FAKE16-NEXT:    s_wait_samplecnt 0x0446; ASM-GISEL-FAKE16-NEXT:    s_wait_bvhcnt 0x0447; ASM-GISEL-FAKE16-NEXT:    s_wait_kmcnt 0x0448; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v32, v0449; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2450; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4451; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6452; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8453; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10454; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12455; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14456; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16457; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v16, v17 :: v_dual_mov_b32 v17, v18458; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v18, v19 :: v_dual_mov_b32 v19, v20459; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v20, v21 :: v_dual_mov_b32 v21, v22460; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v22, v23 :: v_dual_mov_b32 v23, v24461; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v24, v25 :: v_dual_mov_b32 v25, v26462; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v26, v27 :: v_dual_mov_b32 v27, v28463; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v28, v29 :: v_dual_mov_b32 v29, v30464; ASM-GISEL-FAKE16-NEXT:    s_clause 0x4465; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v30, off, s32466; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v31, off, s32 offset:4467; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v33, off, s32 offset:8468; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v34, off, s32 offset:12469; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v35, off, s32 offset:16470; ASM-GISEL-FAKE16-NEXT:    v_and_b32_e32 v32, 1, v32471; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s0, exec_lo472; ASM-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)473; ASM-GISEL-FAKE16-NEXT:    v_cmpx_ne_u32_e32 0, v32474; ASM-GISEL-FAKE16-NEXT:    s_cbranch_execz .LBB2_2475; ASM-GISEL-FAKE16-NEXT:  ; %bb.1: ; %if.then476; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s1, 15477; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s2, 13478; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0479; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)480; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v7, s1 :: v_dual_add_nc_u32 v0, 15, v35481; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v6, s2482; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr1483; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr2484; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr3485; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr4486; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr5487; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr8488; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr9489; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr10490; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr11491; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr12492; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr13493; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr14494; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr15495; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr16496; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr17497; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr18498; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr19499; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr20500; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr21501; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr22502; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr23503; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr24504; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr25505; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr26506; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr27507; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr28508; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr29509; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr30510; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr31511; ASM-GISEL-FAKE16-NEXT:    global_store_b32 v[33:34], v0, off512; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr0513; ASM-GISEL-FAKE16-NEXT:  .LBB2_2: ; %if.end514; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)515; ASM-GISEL-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0516; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0517; ASM-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]518; ASM-GISEL-LABEL: dead_array:519; ASM-GISEL:       ; %bb.0: ; %entry520; ASM-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0521; ASM-GISEL-NEXT:    s_wait_expcnt 0x0522; ASM-GISEL-NEXT:    s_wait_samplecnt 0x0523; ASM-GISEL-NEXT:    s_wait_bvhcnt 0x0524; ASM-GISEL-NEXT:    s_wait_kmcnt 0x0525; ASM-GISEL-NEXT:    v_mov_b32_e32 v32, v0526; ASM-GISEL-NEXT:    v_dual_mov_b32 v0, v1 :: v_dual_mov_b32 v1, v2527; ASM-GISEL-NEXT:    v_dual_mov_b32 v2, v3 :: v_dual_mov_b32 v3, v4528; ASM-GISEL-NEXT:    v_dual_mov_b32 v4, v5 :: v_dual_mov_b32 v5, v6529; ASM-GISEL-NEXT:    v_dual_mov_b32 v6, v7 :: v_dual_mov_b32 v7, v8530; ASM-GISEL-NEXT:    v_dual_mov_b32 v8, v9 :: v_dual_mov_b32 v9, v10531; ASM-GISEL-NEXT:    v_dual_mov_b32 v10, v11 :: v_dual_mov_b32 v11, v12532; ASM-GISEL-NEXT:    v_dual_mov_b32 v12, v13 :: v_dual_mov_b32 v13, v14533; ASM-GISEL-NEXT:    v_dual_mov_b32 v14, v15 :: v_dual_mov_b32 v15, v16534; ASM-GISEL-NEXT:    v_dual_mov_b32 v16, v17 :: v_dual_mov_b32 v17, v18535; ASM-GISEL-NEXT:    v_dual_mov_b32 v18, v19 :: v_dual_mov_b32 v19, v20536; ASM-GISEL-NEXT:    v_dual_mov_b32 v20, v21 :: v_dual_mov_b32 v21, v22537; ASM-GISEL-NEXT:    v_dual_mov_b32 v22, v23 :: v_dual_mov_b32 v23, v24538; ASM-GISEL-NEXT:    v_dual_mov_b32 v24, v25 :: v_dual_mov_b32 v25, v26539; ASM-GISEL-NEXT:    v_dual_mov_b32 v26, v27 :: v_dual_mov_b32 v27, v28540; ASM-GISEL-NEXT:    v_dual_mov_b32 v28, v29 :: v_dual_mov_b32 v29, v30541; ASM-GISEL-NEXT:    s_clause 0x4542; ASM-GISEL-NEXT:    scratch_load_b32 v30, off, s32543; ASM-GISEL-NEXT:    scratch_load_b32 v31, off, s32 offset:4544; ASM-GISEL-NEXT:    scratch_load_b32 v33, off, s32 offset:8545; ASM-GISEL-NEXT:    scratch_load_b32 v34, off, s32 offset:12546; ASM-GISEL-NEXT:    scratch_load_b32 v35, off, s32 offset:16547; ASM-GISEL-NEXT:    v_and_b32_e32 v32, 1, v32548; ASM-GISEL-NEXT:    s_mov_b32 s0, exec_lo549; ASM-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)550; ASM-GISEL-NEXT:    v_cmpx_ne_u32_e32 0, v32551; ASM-GISEL-NEXT:    s_cbranch_execz .LBB2_2552; ASM-GISEL-NEXT:  ; %bb.1: ; %if.then553; ASM-GISEL-NEXT:    s_mov_b32 s1, 15554; ASM-GISEL-NEXT:    s_mov_b32 s2, 13555; ASM-GISEL-NEXT:    s_wait_loadcnt 0x0556; ASM-GISEL-NEXT:    s_wait_alu 0xfffe557; ASM-GISEL-NEXT:    v_dual_mov_b32 v7, s1 :: v_dual_add_nc_u32 v0, 15, v35558; ASM-GISEL-NEXT:    v_mov_b32_e32 v6, s2559; ASM-GISEL-NEXT:    ; implicit-def: $vgpr1560; ASM-GISEL-NEXT:    ; implicit-def: $vgpr2561; ASM-GISEL-NEXT:    ; implicit-def: $vgpr3562; ASM-GISEL-NEXT:    ; implicit-def: $vgpr4563; ASM-GISEL-NEXT:    ; implicit-def: $vgpr5564; ASM-GISEL-NEXT:    ; implicit-def: $vgpr8565; ASM-GISEL-NEXT:    ; implicit-def: $vgpr9566; ASM-GISEL-NEXT:    ; implicit-def: $vgpr10567; ASM-GISEL-NEXT:    ; implicit-def: $vgpr11568; ASM-GISEL-NEXT:    ; implicit-def: $vgpr12569; ASM-GISEL-NEXT:    ; implicit-def: $vgpr13570; ASM-GISEL-NEXT:    ; implicit-def: $vgpr14571; ASM-GISEL-NEXT:    ; implicit-def: $vgpr15572; ASM-GISEL-NEXT:    ; implicit-def: $vgpr16573; ASM-GISEL-NEXT:    ; implicit-def: $vgpr17574; ASM-GISEL-NEXT:    ; implicit-def: $vgpr18575; ASM-GISEL-NEXT:    ; implicit-def: $vgpr19576; ASM-GISEL-NEXT:    ; implicit-def: $vgpr20577; ASM-GISEL-NEXT:    ; implicit-def: $vgpr21578; ASM-GISEL-NEXT:    ; implicit-def: $vgpr22579; ASM-GISEL-NEXT:    ; implicit-def: $vgpr23580; ASM-GISEL-NEXT:    ; implicit-def: $vgpr24581; ASM-GISEL-NEXT:    ; implicit-def: $vgpr25582; ASM-GISEL-NEXT:    ; implicit-def: $vgpr26583; ASM-GISEL-NEXT:    ; implicit-def: $vgpr27584; ASM-GISEL-NEXT:    ; implicit-def: $vgpr28585; ASM-GISEL-NEXT:    ; implicit-def: $vgpr29586; ASM-GISEL-NEXT:    ; implicit-def: $vgpr30587; ASM-GISEL-NEXT:    ; implicit-def: $vgpr31588; ASM-GISEL-NEXT:    global_store_b32 v[33:34], v0, off589; ASM-GISEL-NEXT:    ; implicit-def: $vgpr0590; ASM-GISEL-NEXT:  .LBB2_2: ; %if.end591; ASM-GISEL-NEXT:    s_wait_alu 0xfffe592; ASM-GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s0593; ASM-GISEL-NEXT:    s_wait_loadcnt 0x0594; ASM-GISEL-NEXT:    s_setpc_b64 s[30:31]595entry:596  br i1 %cond, label %if.then, label %if.end597 598if.then:599  %dead = call [32 x i32] @llvm.amdgcn.dead()600  %dead_insert_1 = insertvalue [32 x i32] %dead, i32 15, 7601  %dead_insert_3 = insertvalue [32 x i32] %dead_insert_1, i32 13, 6602 603  %vgpr_use = add i32 %v, 15 ; may use v0 or one of the other implicit_defs604  store i32 %vgpr_use, ptr addrspace(1) %ptr1605 606  br label %if.end607 608if.end:609  %res = phi [32 x i32] [ %x, %entry ], [ %dead_insert_3, %if.then ]610  ret [32 x i32] %res611}612 613%non_trivial_types = type { i8, i16, half, bfloat, <2 x i16>, <2 x half>, <2 x bfloat>, <5 x i32>, i128, [32 x i32] }614 615define %non_trivial_types @dead_non_trivial(i1 %cond, %non_trivial_types %x, ptr addrspace(1) %ptr1, i32 %v) #0 {616; ASM-GISEL-TRUE16-LABEL: dead_non_trivial:617; ASM-GISEL-TRUE16:       ; %bb.0: ; %entry618; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt_dscnt 0x0619; ASM-GISEL-TRUE16-NEXT:    s_wait_expcnt 0x0620; ASM-GISEL-TRUE16-NEXT:    s_wait_samplecnt 0x0621; ASM-GISEL-TRUE16-NEXT:    s_wait_bvhcnt 0x0622; ASM-GISEL-TRUE16-NEXT:    s_wait_kmcnt 0x0623; ASM-GISEL-TRUE16-NEXT:    s_clause 0x15624; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v33, off, s32625; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v34, off, s32 offset:4626; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v35, off, s32 offset:8627; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v36, off, s32 offset:12628; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v37, off, s32 offset:16629; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v38, off, s32 offset:20630; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v39, off, s32 offset:24631; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v48, off, s32 offset:28632; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v49, off, s32 offset:32633; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v50, off, s32 offset:36634; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v51, off, s32 offset:40635; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v52, off, s32 offset:44636; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v53, off, s32 offset:48637; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v54, off, s32 offset:52638; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v55, off, s32 offset:56639; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v64, off, s32 offset:60640; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v65, off, s32 offset:64641; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v66, off, s32 offset:68642; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v67, off, s32 offset:72643; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v31, off, s32 offset:76644; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v32, off, s32 offset:80645; ASM-GISEL-TRUE16-NEXT:    scratch_load_b32 v68, off, s32 offset:84646; ASM-GISEL-TRUE16-NEXT:    v_and_b16 v1.l, 1, v1.l647; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s0, exec_lo648; ASM-GISEL-TRUE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)649; ASM-GISEL-TRUE16-NEXT:    v_cmpx_ne_u16_e32 0, v1.l650; ASM-GISEL-TRUE16-NEXT:    s_cbranch_execz .LBB3_2651; ASM-GISEL-TRUE16-NEXT:  ; %bb.1: ; %if.then652; ASM-GISEL-TRUE16-NEXT:    s_mov_b32 s1, 0653; ASM-GISEL-TRUE16-NEXT:    s_movk_i32 s2, 0x3e00654; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0655; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)656; ASM-GISEL-TRUE16-NEXT:    v_dual_mov_b32 v8, s1 :: v_dual_add_nc_u32 v1, 15, v68657; ASM-GISEL-TRUE16-NEXT:    v_mov_b16_e32 v4.l, s2658; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr2659; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr3_lo16660; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr5_lo16661; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr6662; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr7663; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13664; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr14_vgpr15_vgpr16_vgpr17665; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr18666; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr19667; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr20668; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr21669; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr22670; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr23671; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr24672; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr25673; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr26674; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr27675; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr28676; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr29677; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr30678; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr33679; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr34680; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr35681; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr36682; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr37683; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr38684; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr39685; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr48686; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr49687; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr50688; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr51689; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr52690; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr53691; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr54692; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr55693; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr64694; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr65695; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr66696; ASM-GISEL-TRUE16-NEXT:    ; implicit-def: $vgpr67697; ASM-GISEL-TRUE16-NEXT:    global_store_b32 v[31:32], v1, off698; ASM-GISEL-TRUE16-NEXT:  .LBB3_2: ; %if.end699; ASM-GISEL-TRUE16-NEXT:    s_wait_alu depctr_sa_sdst(0)700; ASM-GISEL-TRUE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0701; ASM-GISEL-TRUE16-NEXT:    s_clause 0x16702; ASM-GISEL-TRUE16-NEXT:    scratch_store_b8 v0, v2, off703; ASM-GISEL-TRUE16-NEXT:    scratch_store_b16 v0, v3, off offset:2704; ASM-GISEL-TRUE16-NEXT:    scratch_store_b16 v0, v4, off offset:4705; ASM-GISEL-TRUE16-NEXT:    scratch_store_b16 v0, v5, off offset:6706; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v6, off offset:8707; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v7, off offset:12708; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v8, off offset:16709; ASM-GISEL-TRUE16-NEXT:    scratch_store_b128 v0, v[9:12], off offset:32710; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v13, off offset:48711; ASM-GISEL-TRUE16-NEXT:    scratch_store_b128 v0, v[14:17], off offset:64712; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v18, off offset:80713; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v19, off offset:84714; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v20, off offset:88715; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v21, off offset:92716; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v22, off offset:96717; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v23, off offset:100718; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v24, off offset:104719; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v25, off offset:108720; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v26, off offset:112721; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v27, off offset:116722; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v28, off offset:120723; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v29, off offset:124724; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v30, off offset:128725; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x15726; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v33, off offset:132727; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x14728; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v34, off offset:136729; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x13730; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v35, off offset:140731; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x12732; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v36, off offset:144733; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x11734; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v37, off offset:148735; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x10736; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v38, off offset:152737; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xf738; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v39, off offset:156739; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xe740; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v48, off offset:160741; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xd742; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v49, off offset:164743; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xc744; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v50, off offset:168745; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xb746; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v51, off offset:172747; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0xa748; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v52, off offset:176749; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x9750; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v53, off offset:180751; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x8752; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v54, off offset:184753; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x7754; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v55, off offset:188755; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x6756; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v64, off offset:192757; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x5758; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v65, off offset:196759; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x4760; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v66, off offset:200761; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x3762; ASM-GISEL-TRUE16-NEXT:    scratch_store_b32 v0, v67, off offset:204763; ASM-GISEL-TRUE16-NEXT:    s_wait_loadcnt 0x0764; ASM-GISEL-TRUE16-NEXT:    s_setpc_b64 s[30:31]765;766; ASM-GISEL-FAKE16-LABEL: dead_non_trivial:767; ASM-GISEL-FAKE16:       ; %bb.0: ; %entry768; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt_dscnt 0x0769; ASM-GISEL-FAKE16-NEXT:    s_wait_expcnt 0x0770; ASM-GISEL-FAKE16-NEXT:    s_wait_samplecnt 0x0771; ASM-GISEL-FAKE16-NEXT:    s_wait_bvhcnt 0x0772; ASM-GISEL-FAKE16-NEXT:    s_wait_kmcnt 0x0773; ASM-GISEL-FAKE16-NEXT:    s_clause 0x15774; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v33, off, s32775; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v34, off, s32 offset:4776; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v35, off, s32 offset:8777; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v36, off, s32 offset:12778; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v37, off, s32 offset:16779; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v38, off, s32 offset:20780; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v39, off, s32 offset:24781; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v48, off, s32 offset:28782; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v49, off, s32 offset:32783; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v50, off, s32 offset:36784; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v51, off, s32 offset:40785; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v52, off, s32 offset:44786; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v53, off, s32 offset:48787; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v54, off, s32 offset:52788; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v55, off, s32 offset:56789; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v64, off, s32 offset:60790; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v65, off, s32 offset:64791; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v66, off, s32 offset:68792; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v67, off, s32 offset:72793; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v31, off, s32 offset:76794; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v32, off, s32 offset:80795; ASM-GISEL-FAKE16-NEXT:    scratch_load_b32 v68, off, s32 offset:84796; ASM-GISEL-FAKE16-NEXT:    v_and_b32_e32 v1, 1, v1797; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s0, exec_lo798; ASM-GISEL-FAKE16-NEXT:    s_delay_alu instid0(VALU_DEP_1)799; ASM-GISEL-FAKE16-NEXT:    v_cmpx_ne_u32_e32 0, v1800; ASM-GISEL-FAKE16-NEXT:    s_cbranch_execz .LBB3_2801; ASM-GISEL-FAKE16-NEXT:  ; %bb.1: ; %if.then802; ASM-GISEL-FAKE16-NEXT:    s_mov_b32 s1, 0803; ASM-GISEL-FAKE16-NEXT:    s_movk_i32 s2, 0x3e00804; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0805; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)806; ASM-GISEL-FAKE16-NEXT:    v_dual_mov_b32 v4, s2 :: v_dual_add_nc_u32 v1, 15, v68807; ASM-GISEL-FAKE16-NEXT:    v_mov_b32_e32 v8, s1808; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr2809; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr3810; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr5811; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr6812; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr7813; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13814; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr14_vgpr15_vgpr16_vgpr17815; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr18816; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr19817; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr20818; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr21819; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr22820; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr23821; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr24822; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr25823; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr26824; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr27825; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr28826; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr29827; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr30828; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr33829; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr34830; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr35831; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr36832; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr37833; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr38834; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr39835; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr48836; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr49837; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr50838; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr51839; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr52840; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr53841; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr54842; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr55843; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr64844; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr65845; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr66846; ASM-GISEL-FAKE16-NEXT:    ; implicit-def: $vgpr67847; ASM-GISEL-FAKE16-NEXT:    global_store_b32 v[31:32], v1, off848; ASM-GISEL-FAKE16-NEXT:  .LBB3_2: ; %if.end849; ASM-GISEL-FAKE16-NEXT:    s_wait_alu depctr_sa_sdst(0)850; ASM-GISEL-FAKE16-NEXT:    s_or_b32 exec_lo, exec_lo, s0851; ASM-GISEL-FAKE16-NEXT:    s_clause 0x16852; ASM-GISEL-FAKE16-NEXT:    scratch_store_b8 v0, v2, off853; ASM-GISEL-FAKE16-NEXT:    scratch_store_b16 v0, v3, off offset:2854; ASM-GISEL-FAKE16-NEXT:    scratch_store_b16 v0, v4, off offset:4855; ASM-GISEL-FAKE16-NEXT:    scratch_store_b16 v0, v5, off offset:6856; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v6, off offset:8857; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v7, off offset:12858; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v8, off offset:16859; ASM-GISEL-FAKE16-NEXT:    scratch_store_b128 v0, v[9:12], off offset:32860; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v13, off offset:48861; ASM-GISEL-FAKE16-NEXT:    scratch_store_b128 v0, v[14:17], off offset:64862; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v18, off offset:80863; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v19, off offset:84864; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v20, off offset:88865; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v21, off offset:92866; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v22, off offset:96867; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v23, off offset:100868; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v24, off offset:104869; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v25, off offset:108870; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v26, off offset:112871; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v27, off offset:116872; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v28, off offset:120873; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v29, off offset:124874; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v30, off offset:128875; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x15876; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v33, off offset:132877; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x14878; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v34, off offset:136879; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x13880; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v35, off offset:140881; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x12882; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v36, off offset:144883; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x11884; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v37, off offset:148885; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x10886; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v38, off offset:152887; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xf888; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v39, off offset:156889; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xe890; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v48, off offset:160891; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xd892; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v49, off offset:164893; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xc894; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v50, off offset:168895; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xb896; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v51, off offset:172897; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0xa898; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v52, off offset:176899; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x9900; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v53, off offset:180901; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x8902; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v54, off offset:184903; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x7904; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v55, off offset:188905; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x6906; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v64, off offset:192907; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x5908; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v65, off offset:196909; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x4910; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v66, off offset:200911; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x3912; ASM-GISEL-FAKE16-NEXT:    scratch_store_b32 v0, v67, off offset:204913; ASM-GISEL-FAKE16-NEXT:    s_wait_loadcnt 0x0914; ASM-GISEL-FAKE16-NEXT:    s_setpc_b64 s[30:31]915; ASM-GISEL-LABEL: dead_non_trivial:916; ASM-GISEL:       ; %bb.0: ; %entry917; ASM-GISEL-NEXT:    s_wait_loadcnt_dscnt 0x0918; ASM-GISEL-NEXT:    s_wait_expcnt 0x0919; ASM-GISEL-NEXT:    s_wait_samplecnt 0x0920; ASM-GISEL-NEXT:    s_wait_bvhcnt 0x0921; ASM-GISEL-NEXT:    s_wait_kmcnt 0x0922; ASM-GISEL-NEXT:    s_clause 0x15923; ASM-GISEL-NEXT:    scratch_load_b32 v33, off, s32924; ASM-GISEL-NEXT:    scratch_load_b32 v34, off, s32 offset:4925; ASM-GISEL-NEXT:    scratch_load_b32 v35, off, s32 offset:8926; ASM-GISEL-NEXT:    scratch_load_b32 v36, off, s32 offset:12927; ASM-GISEL-NEXT:    scratch_load_b32 v37, off, s32 offset:16928; ASM-GISEL-NEXT:    scratch_load_b32 v38, off, s32 offset:20929; ASM-GISEL-NEXT:    scratch_load_b32 v39, off, s32 offset:24930; ASM-GISEL-NEXT:    scratch_load_b32 v48, off, s32 offset:28931; ASM-GISEL-NEXT:    scratch_load_b32 v49, off, s32 offset:32932; ASM-GISEL-NEXT:    scratch_load_b32 v50, off, s32 offset:36933; ASM-GISEL-NEXT:    scratch_load_b32 v51, off, s32 offset:40934; ASM-GISEL-NEXT:    scratch_load_b32 v52, off, s32 offset:44935; ASM-GISEL-NEXT:    scratch_load_b32 v53, off, s32 offset:48936; ASM-GISEL-NEXT:    scratch_load_b32 v54, off, s32 offset:52937; ASM-GISEL-NEXT:    scratch_load_b32 v55, off, s32 offset:56938; ASM-GISEL-NEXT:    scratch_load_b32 v64, off, s32 offset:60939; ASM-GISEL-NEXT:    scratch_load_b32 v65, off, s32 offset:64940; ASM-GISEL-NEXT:    scratch_load_b32 v66, off, s32 offset:68941; ASM-GISEL-NEXT:    scratch_load_b32 v67, off, s32 offset:72942; ASM-GISEL-NEXT:    scratch_load_b32 v31, off, s32 offset:76943; ASM-GISEL-NEXT:    scratch_load_b32 v32, off, s32 offset:80944; ASM-GISEL-NEXT:    scratch_load_b32 v68, off, s32 offset:84945; ASM-GISEL-NEXT:    v_and_b32_e32 v1, 1, v1946; ASM-GISEL-NEXT:    s_mov_b32 s0, exec_lo947; ASM-GISEL-NEXT:    s_delay_alu instid0(VALU_DEP_1)948; ASM-GISEL-NEXT:    v_cmpx_ne_u32_e32 0, v1949; ASM-GISEL-NEXT:    s_cbranch_execz .LBB3_2950; ASM-GISEL-NEXT:  ; %bb.1: ; %if.then951; ASM-GISEL-NEXT:    s_mov_b32 s1, 0952; ASM-GISEL-NEXT:    s_movk_i32 s2, 0x3e00953; ASM-GISEL-NEXT:    s_wait_loadcnt 0x0954; ASM-GISEL-NEXT:    s_wait_alu 0xfffe955; ASM-GISEL-NEXT:    v_dual_mov_b32 v4, s2 :: v_dual_add_nc_u32 v1, 15, v68956; ASM-GISEL-NEXT:    v_mov_b32_e32 v8, s1957; ASM-GISEL-NEXT:    ; implicit-def: $vgpr2958; ASM-GISEL-NEXT:    ; implicit-def: $vgpr3959; ASM-GISEL-NEXT:    ; implicit-def: $vgpr5960; ASM-GISEL-NEXT:    ; implicit-def: $vgpr6961; ASM-GISEL-NEXT:    ; implicit-def: $vgpr7962; ASM-GISEL-NEXT:    ; implicit-def: $vgpr9_vgpr10_vgpr11_vgpr12_vgpr13963; ASM-GISEL-NEXT:    ; implicit-def: $vgpr14_vgpr15_vgpr16_vgpr17964; ASM-GISEL-NEXT:    ; implicit-def: $vgpr18965; ASM-GISEL-NEXT:    ; implicit-def: $vgpr19966; ASM-GISEL-NEXT:    ; implicit-def: $vgpr20967; ASM-GISEL-NEXT:    ; implicit-def: $vgpr21968; ASM-GISEL-NEXT:    ; implicit-def: $vgpr22969; ASM-GISEL-NEXT:    ; implicit-def: $vgpr23970; ASM-GISEL-NEXT:    ; implicit-def: $vgpr24971; ASM-GISEL-NEXT:    ; implicit-def: $vgpr25972; ASM-GISEL-NEXT:    ; implicit-def: $vgpr26973; ASM-GISEL-NEXT:    ; implicit-def: $vgpr27974; ASM-GISEL-NEXT:    ; implicit-def: $vgpr28975; ASM-GISEL-NEXT:    ; implicit-def: $vgpr29976; ASM-GISEL-NEXT:    ; implicit-def: $vgpr30977; ASM-GISEL-NEXT:    ; implicit-def: $vgpr33978; ASM-GISEL-NEXT:    ; implicit-def: $vgpr34979; ASM-GISEL-NEXT:    ; implicit-def: $vgpr35980; ASM-GISEL-NEXT:    ; implicit-def: $vgpr36981; ASM-GISEL-NEXT:    ; implicit-def: $vgpr37982; ASM-GISEL-NEXT:    ; implicit-def: $vgpr38983; ASM-GISEL-NEXT:    ; implicit-def: $vgpr39984; ASM-GISEL-NEXT:    ; implicit-def: $vgpr48985; ASM-GISEL-NEXT:    ; implicit-def: $vgpr49986; ASM-GISEL-NEXT:    ; implicit-def: $vgpr50987; ASM-GISEL-NEXT:    ; implicit-def: $vgpr51988; ASM-GISEL-NEXT:    ; implicit-def: $vgpr52989; ASM-GISEL-NEXT:    ; implicit-def: $vgpr53990; ASM-GISEL-NEXT:    ; implicit-def: $vgpr54991; ASM-GISEL-NEXT:    ; implicit-def: $vgpr55992; ASM-GISEL-NEXT:    ; implicit-def: $vgpr64993; ASM-GISEL-NEXT:    ; implicit-def: $vgpr65994; ASM-GISEL-NEXT:    ; implicit-def: $vgpr66995; ASM-GISEL-NEXT:    ; implicit-def: $vgpr67996; ASM-GISEL-NEXT:    global_store_b32 v[31:32], v1, off997; ASM-GISEL-NEXT:  .LBB3_2: ; %if.end998; ASM-GISEL-NEXT:    s_wait_alu 0xfffe999; ASM-GISEL-NEXT:    s_or_b32 exec_lo, exec_lo, s01000; ASM-GISEL-NEXT:    s_clause 0x161001; ASM-GISEL-NEXT:    scratch_store_b8 v0, v2, off1002; ASM-GISEL-NEXT:    scratch_store_b16 v0, v3, off offset:21003; ASM-GISEL-NEXT:    scratch_store_b16 v0, v4, off offset:41004; ASM-GISEL-NEXT:    scratch_store_b16 v0, v5, off offset:61005; ASM-GISEL-NEXT:    scratch_store_b32 v0, v6, off offset:81006; ASM-GISEL-NEXT:    scratch_store_b32 v0, v7, off offset:121007; ASM-GISEL-NEXT:    scratch_store_b32 v0, v8, off offset:161008; ASM-GISEL-NEXT:    scratch_store_b128 v0, v[9:12], off offset:321009; ASM-GISEL-NEXT:    scratch_store_b32 v0, v13, off offset:481010; ASM-GISEL-NEXT:    scratch_store_b128 v0, v[14:17], off offset:641011; ASM-GISEL-NEXT:    scratch_store_b32 v0, v18, off offset:801012; ASM-GISEL-NEXT:    scratch_store_b32 v0, v19, off offset:841013; ASM-GISEL-NEXT:    scratch_store_b32 v0, v20, off offset:881014; ASM-GISEL-NEXT:    scratch_store_b32 v0, v21, off offset:921015; ASM-GISEL-NEXT:    scratch_store_b32 v0, v22, off offset:961016; ASM-GISEL-NEXT:    scratch_store_b32 v0, v23, off offset:1001017; ASM-GISEL-NEXT:    scratch_store_b32 v0, v24, off offset:1041018; ASM-GISEL-NEXT:    scratch_store_b32 v0, v25, off offset:1081019; ASM-GISEL-NEXT:    scratch_store_b32 v0, v26, off offset:1121020; ASM-GISEL-NEXT:    scratch_store_b32 v0, v27, off offset:1161021; ASM-GISEL-NEXT:    scratch_store_b32 v0, v28, off offset:1201022; ASM-GISEL-NEXT:    scratch_store_b32 v0, v29, off offset:1241023; ASM-GISEL-NEXT:    scratch_store_b32 v0, v30, off offset:1281024; ASM-GISEL-NEXT:    s_wait_loadcnt 0x151025; ASM-GISEL-NEXT:    scratch_store_b32 v0, v33, off offset:1321026; ASM-GISEL-NEXT:    s_wait_loadcnt 0x141027; ASM-GISEL-NEXT:    scratch_store_b32 v0, v34, off offset:1361028; ASM-GISEL-NEXT:    s_wait_loadcnt 0x131029; ASM-GISEL-NEXT:    scratch_store_b32 v0, v35, off offset:1401030; ASM-GISEL-NEXT:    s_wait_loadcnt 0x121031; ASM-GISEL-NEXT:    scratch_store_b32 v0, v36, off offset:1441032; ASM-GISEL-NEXT:    s_wait_loadcnt 0x111033; ASM-GISEL-NEXT:    scratch_store_b32 v0, v37, off offset:1481034; ASM-GISEL-NEXT:    s_wait_loadcnt 0x101035; ASM-GISEL-NEXT:    scratch_store_b32 v0, v38, off offset:1521036; ASM-GISEL-NEXT:    s_wait_loadcnt 0xf1037; ASM-GISEL-NEXT:    scratch_store_b32 v0, v39, off offset:1561038; ASM-GISEL-NEXT:    s_wait_loadcnt 0xe1039; ASM-GISEL-NEXT:    scratch_store_b32 v0, v48, off offset:1601040; ASM-GISEL-NEXT:    s_wait_loadcnt 0xd1041; ASM-GISEL-NEXT:    scratch_store_b32 v0, v49, off offset:1641042; ASM-GISEL-NEXT:    s_wait_loadcnt 0xc1043; ASM-GISEL-NEXT:    scratch_store_b32 v0, v50, off offset:1681044; ASM-GISEL-NEXT:    s_wait_loadcnt 0xb1045; ASM-GISEL-NEXT:    scratch_store_b32 v0, v51, off offset:1721046; ASM-GISEL-NEXT:    s_wait_loadcnt 0xa1047; ASM-GISEL-NEXT:    scratch_store_b32 v0, v52, off offset:1761048; ASM-GISEL-NEXT:    s_wait_loadcnt 0x91049; ASM-GISEL-NEXT:    scratch_store_b32 v0, v53, off offset:1801050; ASM-GISEL-NEXT:    s_wait_loadcnt 0x81051; ASM-GISEL-NEXT:    scratch_store_b32 v0, v54, off offset:1841052; ASM-GISEL-NEXT:    s_wait_loadcnt 0x71053; ASM-GISEL-NEXT:    scratch_store_b32 v0, v55, off offset:1881054; ASM-GISEL-NEXT:    s_wait_loadcnt 0x61055; ASM-GISEL-NEXT:    scratch_store_b32 v0, v64, off offset:1921056; ASM-GISEL-NEXT:    s_wait_loadcnt 0x51057; ASM-GISEL-NEXT:    scratch_store_b32 v0, v65, off offset:1961058; ASM-GISEL-NEXT:    s_wait_loadcnt 0x41059; ASM-GISEL-NEXT:    scratch_store_b32 v0, v66, off offset:2001060; ASM-GISEL-NEXT:    s_wait_loadcnt 0x31061; ASM-GISEL-NEXT:    scratch_store_b32 v0, v67, off offset:2041062; ASM-GISEL-NEXT:    s_wait_loadcnt 0x01063; ASM-GISEL-NEXT:    s_setpc_b64 s[30:31]1064entry:1065  br i1 %cond, label %if.then, label %if.end1066 1067if.then:1068  %dead = call %non_trivial_types @llvm.amdgcn.dead.s_non_trivial_typess()1069  %dead_insert_1 = insertvalue %non_trivial_types %dead, half 1.5, 21070  %dead_insert_3 = insertvalue %non_trivial_types %dead_insert_1, <2 x bfloat> zeroinitializer, 61071 1072  %vgpr_use = add i32 %v, 15 ; may use v0 or one of the other implicit_defs1073  store i32 %vgpr_use, ptr addrspace(1) %ptr11074 1075  br label %if.end1076 1077if.end:1078  %res = phi %non_trivial_types [ %x, %entry ], [ %dead_insert_3, %if.then ]1079  ret %non_trivial_types %res1080}1081