200 lines · plain
1# RUN: llc -mtriple=amdgcn -mcpu=gfx803 -run-pass register-coalescer -verify-machineinstrs -o - %s | FileCheck --check-prefix=GCN %s2#3# This test gave "Use not jointly dominated by defs" when4# removePartialRedundancy attempted to prune and then re-extend a subrange.5#6# GCN: {{^body}}7 8---9name: _amdgpu_ps_main10tracksRegLiveness: true11body: |12 bb.0:13 successors: %bb.1, %bb.214 15 %21:vgpr_32 = nofpexcept V_TRUNC_F32_e32 undef %22:vgpr_32, implicit $mode, implicit $exec16 %23:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 killed %21, implicit $mode, implicit $exec17 %108:vgpr_32 = V_LSHRREV_B32_e32 4, killed %23, implicit $exec18 undef %109.sub1:vreg_128 = COPY %10819 %28:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %29:sgpr_128, 3044, 0 :: (dereferenceable invariant load (s32))20 S_CMP_EQ_U32 killed %28, 0, implicit-def $scc21 S_CBRANCH_SCC0 %bb.2, implicit killed $scc22 23 bb.1:24 %138:vreg_128 = COPY killed %10925 S_BRANCH %bb.926 27 bb.2:28 successors: %bb.3, %bb.429 30 S_CBRANCH_SCC0 %bb.4, implicit undef $scc31 32 bb.3:33 %136:vreg_128 = COPY killed %10934 S_BRANCH %bb.535 36 bb.4:37 %136:vreg_128 = COPY killed %10938 39 bb.5:40 successors: %bb.6, %bb.841 42 %110:vreg_128 = COPY killed %13643 dead %32:sreg_32_xm0 = S_MOV_B32 044 %111:vreg_128 = COPY %11045 %111.sub3:vreg_128 = COPY undef %3246 S_CBRANCH_SCC1 %bb.8, implicit undef $scc47 S_BRANCH %bb.648 49 bb.6:50 %36:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %37:sgpr_128, 2708, 0 :: (dereferenceable invariant load (s32))51 %39:vgpr_32 = nnan arcp contract reassoc nofpexcept V_MAD_F32_e64 0, killed %110.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 0, 0, 0, implicit $mode, implicit $exec52 %40:vgpr_32 = nofpexcept V_MAD_F32_e64 0, %111.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 0, 0, 0, implicit $mode, implicit $exec53 %41:vgpr_32 = nofpexcept V_MUL_F32_e64 0, 0, 0, killed %40, 1, 0, implicit $mode, implicit $exec54 %43:vgpr_32 = nofpexcept V_MUL_F32_e32 0, %39, implicit $mode, implicit $exec55 %44:vgpr_32 = COPY killed %4356 %44:vgpr_32 = nofpexcept V_MAC_F32_e32 0, killed %41, %44, implicit $mode, implicit $exec57 %47:vgpr_32 = V_MOV_B32_e32 2143289344, implicit $exec58 %46:vgpr_32 = COPY killed %4759 %46:vgpr_32 = nofpexcept V_MAC_F32_e32 0, killed %39, %46, implicit $mode, implicit $exec60 undef %115.sub0:vreg_128 = COPY %4661 %115.sub1:vreg_128 = COPY killed %4662 %115.sub2:vreg_128 = COPY killed %4463 %50:sreg_64_xexec = V_CMP_NE_U32_e64 0, killed %36, implicit $exec64 dead %118:vgpr_32 = V_MOV_B32_e32 0, implicit $exec65 %137:vreg_128 = IMPLICIT_DEF66 67 bb.7:68 successors: %bb.7, %bb.869 70 %119:vreg_128 = COPY killed %13771 %121:vreg_128 = COPY killed %11972 %121.sub3:vreg_128 = COPY undef %3273 %56:vgpr_32 = nofpexcept V_ADD_F32_e32 %115.sub2, %121.sub2, implicit $mode, implicit $exec74 %59:vgpr_32 = nofpexcept V_ADD_F32_e32 %115.sub1, %121.sub1, implicit $mode, implicit $exec75 %62:vgpr_32 = nofpexcept V_ADD_F32_e32 %115.sub0, killed %121.sub0, implicit $mode, implicit $exec76 undef %117.sub0:vreg_128 = COPY killed %6277 %117.sub1:vreg_128 = COPY killed %5978 %117.sub2:vreg_128 = COPY killed %5679 %64:sreg_64 = S_AND_B64 $exec, %50, implicit-def dead $scc80 $vcc = COPY killed %6481 %137:vreg_128 = COPY killed %11782 S_CBRANCH_VCCNZ %bb.7, implicit killed $vcc83 S_BRANCH %bb.884 85 bb.8:86 dead %66:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %67:sgpr_128, 2704, 0 :: (dereferenceable invariant load (s32))87 %138:vreg_128 = COPY killed %11188 89 bb.9:90 %113:vreg_128 = COPY killed %13891 S_CBRANCH_SCC1 %bb.18, implicit undef $scc92 S_BRANCH %bb.1093 94 bb.10:95 S_CBRANCH_SCC1 %bb.12, implicit undef $scc96 S_BRANCH %bb.1197 98 bb.11:99 100 bb.12:101 successors: %bb.13, %bb.18102 103 S_CBRANCH_SCC1 %bb.18, implicit undef $scc104 S_BRANCH %bb.13105 106 bb.13:107 successors: %bb.14, %bb.17108 109 S_CBRANCH_SCC1 %bb.17, implicit undef $scc110 S_BRANCH %bb.14111 112 bb.14:113 S_CBRANCH_SCC1 %bb.16, implicit undef $scc114 S_BRANCH %bb.15115 116 bb.15:117 118 bb.16:119 120 bb.17:121 122 bb.18:123 S_CBRANCH_SCC1 %bb.26, implicit undef $scc124 S_BRANCH %bb.19125 126 bb.19:127 S_CBRANCH_SCC1 %bb.26, implicit undef $scc128 S_BRANCH %bb.20129 130 bb.20:131 S_CBRANCH_SCC1 %bb.25, implicit undef $scc132 S_BRANCH %bb.21133 134 bb.21:135 successors: %bb.22, %bb.24136 137 S_CBRANCH_SCC1 %bb.24, implicit undef $scc138 S_BRANCH %bb.22139 140 bb.22:141 successors: %bb.23, %bb.24142 143 S_CBRANCH_SCC1 %bb.24, implicit undef $scc144 S_BRANCH %bb.23145 146 bb.23:147 148 bb.24:149 150 bb.25:151 152 bb.26:153 S_CBRANCH_SCC1 %bb.33, implicit undef $scc154 S_BRANCH %bb.27155 156 bb.27:157 S_CBRANCH_SCC1 %bb.33, implicit undef $scc158 S_BRANCH %bb.28159 160 bb.28:161 dead %77:vgpr_32 = V_MOV_B32_e32 0, implicit $exec162 %78:vgpr_32 = nnan arcp contract reassoc nofpexcept V_MAD_F32_e64 0, killed %113.sub1, 0, target-flags(amdgpu-gotprel32-lo) 0, 0, 1065353216, 0, 0, implicit $mode, implicit $exec163 dead %80:sreg_32_xm0 = S_MOV_B32 0164 dead %82:vgpr_32 = nofpexcept V_MUL_F32_e32 killed %78, %78, implicit $mode, implicit $exec165 dead %126:vgpr_32 = V_MOV_B32_e32 2143289344, implicit $exec166 dead %125:vreg_128 = IMPLICIT_DEF167 dead %91:sreg_32_xm0 = S_MOV_B32 2143289344168 %96:sreg_64 = S_AND_B64 $exec, 0, implicit-def dead $scc169 %139:vreg_128 = IMPLICIT_DEF170 171 bb.29:172 successors: %bb.30, %bb.31173 174 dead %127:vreg_128 = COPY killed %139175 S_CBRANCH_SCC0 %bb.31, implicit undef $scc176 177 bb.30:178 S_BRANCH %bb.32179 180 bb.31:181 successors: %bb.32, %bb.34182 183 $vcc = COPY %96184 S_CBRANCH_VCCNZ %bb.34, implicit killed $vcc185 S_BRANCH %bb.32186 187 bb.32:188 dead %130:vreg_128 = IMPLICIT_DEF189 dead %128:vreg_128 = COPY undef %130190 %139:vreg_128 = IMPLICIT_DEF191 S_BRANCH %bb.29192 193 bb.33:194 S_ENDPGM 0195 196 bb.34:197 S_ENDPGM 0198 199...200