268 lines · plain
1# RUN: llc -mtriple=amdgcn--amdpal -mcpu=gfx803 -run-pass=register-coalescer -o - %s | FileCheck -check-prefix=GCN %s2 3# With one version of the D48102 fix, this test failed with4# Assertion failed: (Id != S.end() && T != S.end() && T->valno == Id->valno), function pruneSubRegValues, file ../lib/CodeGen/RegisterCoalescer.cpp, line 2875.5 6# GCN: {{^body}}7 8--- |9 target triple = "amdgcn--amdpal"10 11 ; Function Attrs: nounwind12 define amdgpu_ps void @_amdgpu_ps_main(float %arg) #0 {13 ret void14 }15 16 attributes #0 = { nounwind "InitialPSInputAddr"="3842" "target-cpu"="gfx803" }17...18 19---20name: _amdgpu_ps_main21tracksRegLiveness: true22body: |23 bb.0:24 successors: %bb.2(0x40000000), %bb.1(0x40000000)25 %0:sreg_64 = COPY $exec26 %1:sgpr_32 = S_MOV_B32 027 undef %2.sub0:sgpr_128 = COPY %128 %2.sub1:sgpr_128 = COPY %129 %2.sub2:sgpr_128 = COPY %130 %2.sub3:sgpr_128 = COPY %131 $exec = S_WQM_B64 $exec, implicit-def dead $scc32 S_CBRANCH_SCC0 %bb.2, implicit undef $scc33 34 bb.1:35 successors: %bb.3(0x80000000)36 %3:sgpr_128 = COPY killed %237 %4:vreg_128 = COPY killed %338 %5:vreg_128 = COPY killed %439 S_BRANCH %bb.340 41 bb.2:42 successors: %bb.4(0x80000000)43 %6:vgpr_32 = nofpexcept V_MUL_F32_e32 1031798784, undef %7:vgpr_32, implicit $mode, implicit $exec44 %8:vgpr_32 = nofpexcept V_FLOOR_F32_e32 killed %6, implicit $mode, implicit $exec45 %9:vgpr_32 = nofpexcept V_ADD_F32_e32 0, killed %8, implicit $mode, implicit $exec46 %10:vgpr_32 = nofpexcept V_CVT_U32_F32_e32 killed %9, implicit $mode, implicit $exec47 %11:vgpr_32 = V_LSHLREV_B32_e32 1, killed %10, implicit $exec48 %12:sreg_64 = S_MOV_B64 049 %13:sgpr_128 = COPY killed %250 %14:vgpr_32 = V_MOV_B32_e32 0, implicit $exec51 %15:vreg_128 = COPY killed %1352 %16:sreg_64 = COPY killed %1253 %17:vreg_128 = IMPLICIT_DEF54 %18:vgpr_32 = COPY killed %1455 %19:vreg_128 = COPY killed %1556 S_BRANCH %bb.457 58 bb.3:59 successors: %bb.17(0x80000000)60 %20:vreg_128 = COPY killed %561 S_BRANCH %bb.1762 63 bb.4:64 successors: %bb.8(0x40000000), %bb.9(0x40000000)65 %21:vreg_128 = COPY killed %1966 %22:vgpr_32 = COPY killed %1867 %23:vreg_128 = COPY killed %1768 %24:sreg_64 = COPY killed %1669 %25:vgpr_32 = V_OR_B32_e32 %22, %11, implicit $exec70 %26:vreg_128 = BUFFER_LOAD_FORMAT_XYZW_IDXEN killed %25, undef %27:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from constant-pool, align 1, addrspace 4)71 %28:vgpr_32 = V_LSHRREV_B32_e32 30, killed %26.sub0, implicit $exec72 %29:vreg_128 = COPY killed %2173 %29.sub0:vreg_128 = COPY %174 %30:sreg_64 = V_CMP_NE_U32_e64 0, %28, implicit $exec75 %31:sreg_64_xexec = V_CMP_EQ_U32_e64 0, %28, implicit $exec76 dead %32:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, -1, killed %31, implicit $exec77 %33:vreg_128 = COPY %2978 %33.sub1:vreg_128 = COPY undef %3279 %34:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec80 %35:vgpr_32 = V_MOV_B32_e32 0, implicit $exec81 %36:sreg_64 = COPY %2482 %37:vreg_128 = COPY %2383 %38:vreg_128 = IMPLICIT_DEF84 %39:vreg_128 = IMPLICIT_DEF85 %40:vgpr_32 = IMPLICIT_DEF86 %41:vgpr_32 = COPY killed %3587 %42:vgpr_32 = COPY killed %3488 %43:sreg_64 = COPY $exec, implicit-def $exec89 %44:sreg_64 = S_AND_B64 %43, %30, implicit-def dead $scc90 %45:sreg_64 = S_XOR_B64 %44, %43, implicit-def dead $scc91 $exec = S_MOV_B64_term killed %4492 S_CBRANCH_EXECZ %bb.9, implicit $exec93 S_BRANCH %bb.894 95 bb.5:96 successors: %bb.9(0x80000000)97 $exec = S_OR_B64 $exec, %46, implicit-def $scc98 %47:vgpr_32 = COPY killed %4899 %49:vgpr_32 = COPY killed %50100 %51:vreg_128 = COPY killed %52101 %53:vreg_128 = COPY killed %54102 %55:sreg_64 = COPY killed %56103 %57:sreg_64 = S_AND_B64 $exec, %46, implicit-def $scc104 %57:sreg_64 = S_OR_B64 %57, killed %55, implicit-def $scc105 %58:vgpr_32 = V_MOV_B32_e32 0, implicit $exec106 %36:sreg_64 = COPY killed %57107 %37:vreg_128 = COPY killed %53108 %38:vreg_128 = COPY killed %59109 %39:vreg_128 = COPY killed %51110 %40:vgpr_32 = COPY killed %49111 %41:vgpr_32 = COPY killed %47112 %42:vgpr_32 = COPY killed %58113 S_BRANCH %bb.9114 115 bb.6:116 successors: %bb.7(0x40000000), %bb.13(0x40000000)117 $exec = S_OR_B64 $exec, killed %60, implicit-def $scc118 %61:sreg_64 = V_CMP_NE_U32_e64 0, killed %62, implicit $exec119 %63:vreg_128 = COPY killed %64120 %65:vgpr_32 = COPY killed %66121 %67:sreg_64 = COPY $exec, implicit-def $exec122 %68:sreg_64 = S_AND_B64 %67, %61, implicit-def dead $scc123 $exec = S_MOV_B64_term killed %68124 S_CBRANCH_EXECZ %bb.13, implicit $exec125 S_BRANCH %bb.7126 127 bb.7:128 successors: %bb.13(0x80000000)129 %69:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec130 %70:vreg_128 = COPY killed %33131 %63:vreg_128 = COPY killed %70132 %65:vgpr_32 = COPY killed %69133 S_BRANCH %bb.13134 135 bb.8:136 successors: %bb.10(0x80000000)137 %71:sreg_64 = S_MOV_B64 0138 %72:vreg_128 = COPY %33139 %73:sreg_64 = COPY killed %71140 %74:vreg_128 = COPY killed %72141 %75:vreg_128 = COPY killed %29142 S_BRANCH %bb.10143 144 bb.9:145 successors: %bb.6(0x04000000), %bb.4(0x7c000000)146 $exec = S_OR_B64 $exec, %45, implicit-def $scc147 %62:vgpr_32 = COPY killed %42148 %66:vgpr_32 = COPY killed %41149 %76:vgpr_32 = COPY killed %40150 %77:vreg_128 = COPY killed %39151 %64:vreg_128 = COPY killed %38152 %78:vreg_128 = COPY killed %37153 %79:sreg_64 = COPY killed %36154 %60:sreg_64 = S_AND_B64 $exec, %45, implicit-def $scc155 %60:sreg_64 = S_OR_B64 %60, killed %79, implicit-def $scc156 %80:vreg_128 = COPY %78157 %16:sreg_64 = COPY %60158 %17:vreg_128 = COPY killed %80159 %18:vgpr_32 = COPY killed %76160 %19:vreg_128 = COPY killed %77161 $exec = S_ANDN2_B64_term $exec, %60, implicit-def $scc162 S_CBRANCH_EXECNZ %bb.4, implicit $exec163 S_BRANCH %bb.6164 165 bb.10:166 successors: %bb.11(0x80000000)167 %81:vreg_128 = COPY killed %75168 %82:vreg_128 = COPY killed %74169 %83:sreg_64 = COPY killed %73170 171 bb.11:172 successors: %bb.12(0x04000000), %bb.10(0x7c000000)173 undef %59.sub0:vreg_128 = COPY %81.sub0174 %59.sub2:vreg_128 = COPY %82.sub2175 %59.sub3:vreg_128 = COPY killed %82.sub3176 %84:sreg_64 = V_CMP_GE_U32_e64 killed %81.sub0, %28, implicit $exec177 %85:sreg_64 = S_OR_B64 killed %84, killed %83, implicit-def $scc178 %86:vreg_128 = COPY %59179 %73:sreg_64 = COPY %85180 %74:vreg_128 = COPY %59181 %75:vreg_128 = COPY killed %86182 $exec = S_ANDN2_B64_term $exec, %85, implicit-def $scc183 S_CBRANCH_EXECNZ %bb.10, implicit $exec184 S_BRANCH %bb.12185 186 bb.12:187 successors: %bb.15(0x40000000), %bb.5(0x40000000)188 $exec = S_OR_B64 $exec, killed %85, implicit-def $scc189 %87:sreg_64 = V_CMP_LT_U32_e64 11, killed %28, implicit $exec190 %88:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec191 %56:sreg_64 = COPY %24192 %54:vreg_128 = COPY killed %23193 %52:vreg_128 = IMPLICIT_DEF194 %50:vgpr_32 = IMPLICIT_DEF195 %48:vgpr_32 = COPY killed %88196 %89:sreg_64 = COPY $exec, implicit-def $exec197 %90:sreg_64 = S_AND_B64 %89, %87, implicit-def dead $scc198 %46:sreg_64 = S_XOR_B64 %90, %89, implicit-def dead $scc199 $exec = S_MOV_B64_term killed %90200 S_CBRANCH_EXECZ %bb.5, implicit $exec201 S_BRANCH %bb.15202 203 bb.13:204 successors: %bb.14(0x40000000), %bb.16(0x40000000)205 $exec = S_OR_B64 $exec, killed %67, implicit-def $scc206 %91:vgpr_32 = COPY killed %65207 %92:vreg_128 = COPY killed %63208 %93:sreg_64 = V_CMP_NE_U32_e64 0, killed %91, implicit $exec209 %94:vreg_128 = COPY killed %78210 %95:sreg_64 = COPY $exec, implicit-def $exec211 %96:sreg_64 = S_AND_B64 %95, %93, implicit-def dead $scc212 $exec = S_MOV_B64_term killed %96213 S_CBRANCH_EXECZ %bb.16, implicit $exec214 S_BRANCH %bb.14215 216 bb.14:217 successors: %bb.16(0x80000000)218 %97:vreg_128 = COPY killed %92219 %94:vreg_128 = COPY killed %97220 S_BRANCH %bb.16221 222 bb.15:223 successors: %bb.5(0x80000000)224 %98:vgpr_32 = V_MOV_B32_e32 0, implicit $exec225 %99:sreg_64 = V_CMP_NE_U32_e64 0, killed %22, implicit $exec226 %100:sreg_64 = S_OR_B64 killed %99, killed %24, implicit-def $scc227 %101:vreg_128 = COPY %59228 %102:vgpr_32 = V_MOV_B32_e32 1, implicit $exec229 %56:sreg_64 = COPY killed %100230 %54:vreg_128 = COPY killed %101231 %52:vreg_128 = COPY %59232 %50:vgpr_32 = COPY killed %102233 %48:vgpr_32 = COPY killed %98234 S_BRANCH %bb.5235 236 bb.16:237 successors: %bb.3(0x80000000)238 $exec = S_OR_B64 $exec, killed %95, implicit-def $scc239 %103:vreg_128 = COPY killed %94240 %104:vreg_128 = COPY killed %103241 %5:vreg_128 = COPY killed %104242 S_BRANCH %bb.3243 244 bb.17:245 %105:vgpr_32 = nofpexcept V_ADD_F32_e32 target-flags(amdgpu-rel32-lo) 0, %20.sub3, implicit $mode, implicit $exec246 %106:vgpr_32 = nofpexcept V_ADD_F32_e32 target-flags(amdgpu-gotprel32-hi) 0, killed %20.sub2, implicit $mode, implicit $exec247 undef %107.sub0:vreg_64 = COPY killed %106248 %107.sub1:vreg_64 = COPY killed %105249 $exec = S_AND_B64 $exec, killed %0, implicit-def dead $scc250 %108:sreg_32_xm0 = S_MOV_B32 0251 undef %109.sub0:sgpr_256 = COPY %108252 %109.sub1:sgpr_256 = COPY %108253 %109.sub2:sgpr_256 = COPY %108254 %109.sub3:sgpr_256 = COPY %108255 %109.sub4:sgpr_256 = COPY %108256 %109.sub5:sgpr_256 = COPY %108257 %109.sub6:sgpr_256 = COPY %108258 %109.sub7:sgpr_256 = COPY killed %108259 %110:vgpr_32 = IMAGE_SAMPLE_V1_V2 killed %107, killed %109, undef %111:sgpr_128, 8, 0, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from constant-pool, addrspace 4)260 %112:vgpr_32 = nofpexcept V_MUL_F32_e32 0, killed %110, implicit $mode, implicit $exec261 %113:vgpr_32 = nofpexcept V_MUL_F32_e32 0, killed %112, implicit $mode, implicit $exec262 %114:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %113, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec263 %115:vgpr_32 = nofpexcept V_MAX_F32_e32 0, killed %114, implicit $mode, implicit $exec264 %116:vgpr_32 = nofpexcept V_CVT_PKRTZ_F16_F32_e64 0, killed %115, 0, 1065353216, 0, 0, implicit $mode, implicit $exec265 EXP 0, undef %117:vgpr_32, killed %116, undef %118:vgpr_32, undef %119:vgpr_32, -1, -1, 15, implicit $exec266 S_ENDPGM 0267...268