129 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1031 -verify-coalescing < %s | FileCheck %s3 4define amdgpu_kernel void @blender_no_live_segment_at_def_error(<4 x float> %extractVec358.i.i, i32 %cmp5.i.i.arg, float %i1.i, i32 %cmp221.i.i.arg, i32 %cmp262.i.i.arg, ptr addrspace(1) %arg) {5; CHECK-LABEL: blender_no_live_segment_at_def_error:6; CHECK: ; %bb.0: ; %entry7; CHECK-NEXT: s_add_u32 s12, s12, s178; CHECK-NEXT: s_mov_b32 s32, 09; CHECK-NEXT: s_addc_u32 s13, s13, 010; CHECK-NEXT: s_setreg_b32 hwreg(HW_REG_FLAT_SCR_LO), s1211; CHECK-NEXT: s_setreg_b32 hwreg(HW_REG_FLAT_SCR_HI), s1312; CHECK-NEXT: s_load_dwordx8 s[48:55], s[8:9], 0x013; CHECK-NEXT: s_add_u32 s0, s0, s1714; CHECK-NEXT: s_addc_u32 s1, s1, 015; CHECK-NEXT: s_mov_b32 s12, 016; CHECK-NEXT: s_waitcnt lgkmcnt(0)17; CHECK-NEXT: s_cmp_lg_u32 s52, 018; CHECK-NEXT: s_cbranch_scc1 .LBB0_919; CHECK-NEXT: ; %bb.1: ; %if.end13.i.i20; CHECK-NEXT: s_cmp_eq_u32 s54, 021; CHECK-NEXT: s_cbranch_scc1 .LBB0_422; CHECK-NEXT: ; %bb.2: ; %if.else251.i.i23; CHECK-NEXT: s_cmp_lg_u32 s55, 024; CHECK-NEXT: s_mov_b32 s17, 025; CHECK-NEXT: s_cselect_b32 s12, -1, 026; CHECK-NEXT: s_and_b32 vcc_lo, exec_lo, s1227; CHECK-NEXT: s_cbranch_vccz .LBB0_528; CHECK-NEXT: ; %bb.3:29; CHECK-NEXT: s_mov_b32 s18, 030; CHECK-NEXT: s_branch .LBB0_631; CHECK-NEXT: .LBB0_4:32; CHECK-NEXT: s_mov_b32 s14, s1233; CHECK-NEXT: s_mov_b32 s15, s1234; CHECK-NEXT: s_mov_b32 s13, s1235; CHECK-NEXT: s_mov_b64 s[50:51], s[14:15]36; CHECK-NEXT: s_mov_b64 s[48:49], s[12:13]37; CHECK-NEXT: s_branch .LBB0_838; CHECK-NEXT: .LBB0_5: ; %if.then263.i.i39; CHECK-NEXT: v_cmp_lt_f32_e64 s12, s53, 040; CHECK-NEXT: s_mov_b32 s18, 1.041; CHECK-NEXT: s_mov_b32 s17, 0x7fc0000042; CHECK-NEXT: .LBB0_6: ; %Flow43; CHECK-NEXT: s_mov_b32 s48, 1.044; CHECK-NEXT: s_andn2_b32 vcc_lo, exec_lo, s1245; CHECK-NEXT: s_mov_b32 s49, s4846; CHECK-NEXT: s_mov_b32 s50, s4847; CHECK-NEXT: s_mov_b32 s51, s4848; CHECK-NEXT: s_cbranch_vccnz .LBB0_849; CHECK-NEXT: ; %bb.7: ; %if.end273.i.i50; CHECK-NEXT: s_add_u32 s12, s8, 4051; CHECK-NEXT: s_addc_u32 s13, s9, 052; CHECK-NEXT: s_getpc_b64 s[20:21]53; CHECK-NEXT: s_add_u32 s20, s20, _Z3dotDv3_fS_@gotpcrel32@lo+454; CHECK-NEXT: s_addc_u32 s21, s21, _Z3dotDv3_fS_@gotpcrel32@hi+1255; CHECK-NEXT: v_lshlrev_b32_e32 v2, 20, v256; CHECK-NEXT: s_load_dwordx2 s[20:21], s[20:21], 0x057; CHECK-NEXT: v_lshlrev_b32_e32 v3, 10, v158; CHECK-NEXT: v_add_f32_e64 v1, s17, s1859; CHECK-NEXT: s_mov_b64 s[34:35], s[8:9]60; CHECK-NEXT: s_mov_b64 s[8:9], s[12:13]61; CHECK-NEXT: s_mov_b32 s12, s1462; CHECK-NEXT: v_or3_b32 v31, v0, v3, v263; CHECK-NEXT: v_mov_b32_e32 v0, v164; CHECK-NEXT: v_mov_b32_e32 v1, 065; CHECK-NEXT: v_mov_b32_e32 v2, 066; CHECK-NEXT: s_mov_b32 s13, s1567; CHECK-NEXT: s_mov_b32 s14, s1668; CHECK-NEXT: s_mov_b32 s48, 069; CHECK-NEXT: s_waitcnt lgkmcnt(0)70; CHECK-NEXT: s_swappc_b64 s[30:31], s[20:21]71; CHECK-NEXT: s_mov_b64 s[8:9], s[34:35]72; CHECK-NEXT: s_mov_b32 s49, s4873; CHECK-NEXT: s_mov_b32 s50, s4874; CHECK-NEXT: s_mov_b32 s51, s4875; CHECK-NEXT: .LBB0_8: ; %if.end294.i.i76; CHECK-NEXT: v_mov_b32_e32 v0, 077; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:1278; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:879; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 0 offset:480; CHECK-NEXT: buffer_store_dword v0, off, s[0:3], 081; CHECK-NEXT: .LBB0_9: ; %kernel_direct_lighting.exit82; CHECK-NEXT: s_load_dwordx2 s[4:5], s[8:9], 0x2083; CHECK-NEXT: v_mov_b32_e32 v0, s4884; CHECK-NEXT: v_mov_b32_e32 v4, 085; CHECK-NEXT: v_mov_b32_e32 v1, s4986; CHECK-NEXT: v_mov_b32_e32 v2, s5087; CHECK-NEXT: v_mov_b32_e32 v3, s5188; CHECK-NEXT: s_waitcnt lgkmcnt(0)89; CHECK-NEXT: global_store_dwordx4 v4, v[0:3], s[4:5]90; CHECK-NEXT: s_endpgm91entry:92 %cmp5.i.i = icmp eq i32 %cmp5.i.i.arg, 093 br i1 %cmp5.i.i, label %if.end13.i.i, label %kernel_direct_lighting.exit94 95if.end13.i.i: ; preds = %entry96 %cmp221.i.i = icmp eq i32 %cmp221.i.i.arg, 097 br i1 %cmp221.i.i, label %if.end294.i.i, label %if.else251.i.i98 99if.else251.i.i: ; preds = %if.end13.i.i100 %cmp262.i.i = icmp eq i32 %cmp262.i.i.arg, 0101 br i1 %cmp262.i.i, label %if.then263.i.i, label %if.end273.i.i102 103if.then263.i.i: ; preds = %if.else251.i.i104 %cmp.i604.i.i = fcmp olt float %i1.i, 0.000000e+00105 br i1 %cmp.i604.i.i, label %if.end273.i.i, label %if.end294.i.i106 107if.end273.i.i: ; preds = %if.then263.i.i, %if.else251.i.i108 %i = phi float [ 1.000000e+00, %if.then263.i.i ], [ 0.000000e+00, %if.else251.i.i ]109 %i1 = phi float [ 0x7FF8000000000000, %if.then263.i.i ], [ 0.000000e+00, %if.else251.i.i ]110 %extractVec278.i.i = insertelement <3 x float> zeroinitializer, float %i1, i64 0111 %extractVec3.i.i.i = insertelement <3 x float> zeroinitializer, float %i, i64 0112 %i3.i = fadd <3 x float> %extractVec278.i.i, %extractVec3.i.i.i113 %call32.i.i.i = tail call float @_Z3dotDv3_fS_(<3 x float> %i3.i)114 br label %if.end294.i.i115 116if.end294.i.i: ; preds = %if.end273.i.i, %if.then263.i.i, %if.end13.i.i117 %ls111.sroa.0.2.i = phi <4 x float> [ zeroinitializer, %if.end13.i.i ], [ zeroinitializer, %if.end273.i.i ], [ <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, %if.then263.i.i ]118 store <4 x float> zeroinitializer, ptr addrspace(5) null, align 4119 br label %kernel_direct_lighting.exit120 121kernel_direct_lighting.exit: ; preds = %if.end294.i.i, %entry122 %ls111.sroa.0.3.i = phi <4 x float> [ %ls111.sroa.0.2.i, %if.end294.i.i ], [ %extractVec358.i.i, %entry ]123 store <4 x float> %ls111.sroa.0.3.i, ptr addrspace(1) %arg, align 4124 ret void125}126 127declare float @_Z3dotDv3_fS_(<3 x float>)128 129