184 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 2870.5 6# GCN: {{^body}}7 8--- |9 target triple = "amdgcn--amdpal"10 11 ; Function Attrs: nounwind12 define amdgpu_cs void @_amdgpu_cs_main(<3 x i32> %arg) #0 {13 ret void14 }15 16 attributes #0 = { nounwind "target-cpu"="gfx803" }17...18 19---20name: _amdgpu_cs_main21tracksRegLiveness: true22liveins:23 - { reg: '$vgpr0', virtual-reg: '%0' }24body: |25 bb.0:26 successors: %bb.1(0x40000000), %bb.21(0x40000000)27 liveins: $vgpr0, $vgpr1, $vgpr228 %0:vgpr_32 = COPY killed $vgpr029 S_CBRANCH_SCC1 %bb.21, implicit undef $scc30 31 bb.1:32 successors: %bb.2(0x40000000), %bb.17(0x40000000)33 S_CBRANCH_SCC1 %bb.17, implicit undef $scc34 35 bb.2:36 successors: %bb.4(0x40000000), %bb.3(0x40000000)37 %1:sreg_32_xm0 = S_MOV_B32 038 %2:vgpr_32 = V_MOV_B32_e32 0, implicit $exec39 undef %3.sub0:vreg_128 = COPY killed %040 %3.sub2:vreg_128 = COPY killed %241 undef %4.sub0:sgpr_256 = COPY %142 %4.sub1:sgpr_256 = COPY %143 %4.sub2:sgpr_256 = COPY %144 %4.sub3:sgpr_256 = COPY %145 %4.sub4:sgpr_256 = COPY %146 %4.sub5:sgpr_256 = COPY %147 %4.sub6:sgpr_256 = COPY %148 %4.sub7:sgpr_256 = COPY killed %149 %5:vgpr_32 = IMAGE_LOAD_V1_V4 killed %3, killed %4, 1, -1, 0, 0, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s128) from constant-pool, addrspace 4)50 %6:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %5, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec51 %7:vgpr_32 = nofpexcept V_RCP_F32_e32 killed %6, implicit $mode, implicit $exec52 %8:vgpr_32 = nofpexcept V_MUL_F32_e32 0, killed %7, implicit $mode, implicit $exec53 %9:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %8, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec54 dead %10:vgpr_32 = nofpexcept V_MAC_F32_e32 undef %11:vgpr_32, undef %12:vgpr_32, undef %10, implicit $mode, implicit $exec55 undef %13.sub0:vreg_128 = COPY %956 %14:vgpr_32 = V_MOV_B32_e32 -1, implicit $exec57 S_CBRANCH_SCC0 %bb.4, implicit undef $scc58 59 bb.3:60 successors: %bb.6(0x80000000)61 %15:vreg_128 = IMPLICIT_DEF62 %16:vgpr_32 = COPY killed %1463 S_BRANCH %bb.664 65 bb.4:66 successors: %bb.5(0x40000000), %bb.7(0x40000000)67 %17:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %9, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec68 %18:vgpr_32 = nofpexcept V_MIN_F32_e32 1065353216, killed %17, implicit $mode, implicit $exec69 %19:sreg_64_xexec = nofpexcept V_CMP_NEQ_F32_e64 0, 1065353216, 0, killed %18, 0, implicit $mode, implicit $exec70 %20:vgpr_32 = V_MOV_B32_e32 2143289344, implicit $exec71 %21:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, killed %20, killed %19, implicit $exec72 %22:sreg_64 = nofpexcept V_CMP_LT_F32_e64 0, 0, 0, killed %21, 0, implicit $mode, implicit $exec73 %23:sreg_64 = COPY $exec, implicit-def $exec74 %24:sreg_64 = S_AND_B64 %23, %22, implicit-def dead $scc75 $exec = S_MOV_B64_term killed %2476 S_CBRANCH_EXECZ %bb.7, implicit $exec77 S_BRANCH %bb.578 79 bb.5:80 successors: %bb.7(0x80000000)81 S_BRANCH %bb.782 83 bb.6:84 successors: %bb.8(0x40000000), %bb.10(0x40000000)85 %25:vgpr_32 = COPY killed %1686 %26:vreg_128 = COPY killed %1587 %27:sreg_64 = V_CMP_NE_U32_e64 0, killed %25, implicit $exec88 %28:sreg_64 = S_AND_B64 $exec, killed %27, implicit-def dead $scc89 $vcc = COPY killed %2890 %29:vreg_128 = COPY killed %2691 S_CBRANCH_VCCNZ %bb.8, implicit killed $vcc92 S_BRANCH %bb.1093 94 bb.7:95 successors: %bb.6(0x80000000)96 $exec = S_OR_B64 $exec, killed %23, implicit-def $scc97 %30:vgpr_32 = V_MOV_B32_e32 0, implicit $exec98 %15:vreg_128 = COPY %1399 %16:vgpr_32 = COPY killed %30100 S_BRANCH %bb.6101 102 bb.8:103 successors: %bb.9(0x40000000), %bb.11(0x40000000)104 %31:vreg_128 = COPY killed %13105 S_CBRANCH_SCC1 %bb.11, implicit undef $scc106 S_BRANCH %bb.9107 108 bb.9:109 successors: %bb.11(0x80000000)110 %32:sreg_32_xm0 = S_MOV_B32 0111 undef %33.sub0:sgpr_128 = COPY %32112 %33.sub1:sgpr_128 = COPY %32113 %33.sub2:sgpr_128 = COPY %32114 %33.sub3:sgpr_128 = COPY killed %32115 %34:sgpr_128 = COPY killed %33116 %35:vreg_128 = COPY killed %34117 %31:vreg_128 = COPY killed %35118 S_BRANCH %bb.11119 120 bb.10:121 successors: %bb.14(0x80000000)122 %36:vreg_128 = COPY killed %29123 S_BRANCH %bb.14124 125 bb.11:126 successors: %bb.13(0x40000000), %bb.12(0x40000000)127 %37:vreg_128 = COPY killed %31128 S_CBRANCH_SCC0 %bb.13, implicit undef $scc129 130 bb.12:131 successors: %bb.10(0x80000000)132 %29:vreg_128 = COPY killed %37133 S_BRANCH %bb.10134 135 bb.13:136 successors: %bb.10(0x80000000)137 %29:vreg_128 = COPY killed %37138 S_BRANCH %bb.10139 140 bb.14:141 successors: %bb.15(0x40000000), %bb.16(0x40000000)142 %38:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %36.sub0, 0, target-flags(amdgpu-gotprel) 0, 0, 0, 0, 0, implicit $mode, implicit $exec143 %39:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %38, 0, 0, 0, 0, 0, 0, implicit $mode, implicit $exec144 %40:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %39, 0, -1090519040, 0, 1056964608, 0, 0, implicit $mode, implicit $exec145 %41:vgpr_32 = nofpexcept V_MAD_F32_e64 0, killed %40, 0, 0, 0, -1090519040, 0, 0, implicit $mode, implicit $exec146 %42:vgpr_32 = nofpexcept V_CVT_I32_F32_e32 killed %41, implicit $mode, implicit $exec147 %43:sreg_32_xm0_xexec = S_BUFFER_LOAD_DWORD_IMM undef %44:sgpr_128, 12, 0 :: (dereferenceable invariant load (s32))148 %45:vgpr_32 = V_MUL_LO_I32_e64 killed %42, killed %43, implicit $exec149 %46:vgpr_32 = V_LSHLREV_B32_e32 2, killed %45, implicit $exec150 %47:vgpr_32 = BUFFER_LOAD_FORMAT_X_IDXEN killed %46, undef %48:sgpr_128, 0, 0, 0, 0, implicit $exec :: (dereferenceable load (s32) from constant-pool, align 1, addrspace 4)151 %49:sreg_64 = V_CMP_NE_U32_e64 0, killed %47, implicit $exec152 %50:sreg_64 = COPY $exec, implicit-def $exec153 %51:sreg_64 = S_AND_B64 %50, %49, implicit-def dead $scc154 $exec = S_MOV_B64_term killed %51155 S_CBRANCH_EXECZ %bb.16, implicit $exec156 S_BRANCH %bb.15157 158 bb.15:159 successors: %bb.16(0x80000000)160 161 bb.16:162 successors: %bb.17(0x80000000)163 $exec = S_OR_B64 $exec, killed %50, implicit-def $scc164 S_BRANCH %bb.17165 166 bb.17:167 successors: %bb.21(0x40000000), %bb.18(0x40000000)168 S_CBRANCH_SCC1 %bb.21, implicit undef $scc169 170 bb.18:171 successors: %bb.19(0x40000000), %bb.20(0x40000000)172 S_CBRANCH_SCC1 %bb.19, implicit undef $scc173 S_BRANCH %bb.20174 175 bb.19:176 successors: %bb.20(0x80000000)177 178 bb.20:179 successors: %bb.21(0x80000000)180 181 bb.21:182 S_ENDPGM 0183...184