53 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=gfx803 -run-pass register-coalescer -verify-machineinstrs -o - %s | FileCheck %s3#4# This is another example of a test giving "Couldn't join subrange!"5#6# This shows a case where a whole reg use point of the whole register was7# undefined in one subreg, but after coalescing it became defined but the8# subrange was not updated to reflect that.9#10 11---12name: coalescing_makes_lane_defined13tracksRegLiveness: true14body: |15 ; CHECK-LABEL: name: coalescing_makes_lane_defined16 ; CHECK: bb.0:17 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000)18 ; CHECK-NEXT: {{ $}}19 ; CHECK-NEXT: undef [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 020 ; CHECK-NEXT: dead undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 021 ; CHECK-NEXT: S_CBRANCH_SCC0 %bb.2, implicit undef $scc22 ; CHECK-NEXT: {{ $}}23 ; CHECK-NEXT: bb.1:24 ; CHECK-NEXT: successors: %bb.2(0x80000000)25 ; CHECK-NEXT: {{ $}}26 ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 -127 ; CHECK-NEXT: {{ $}}28 ; CHECK-NEXT: bb.2:29 ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]30 bb.0:31 successors: %bb.1, %bb.232 33 %0:sreg_32_xm0 = S_MOV_B32 034 undef %1.sub2:sgpr_128 = COPY %035 undef %2.sub0:sgpr_128 = S_MOV_B32 036 undef %3.sub2:sgpr_128 = COPY %037 S_CBRANCH_SCC0 %bb.2, implicit undef $scc38 39 bb.1:40 successors: %bb.241 42 undef %4.sub0:sgpr_128 = S_MOV_B32 -143 %4.sub2:sgpr_128 = COPY killed %044 %5:sgpr_128 = COPY killed %445 %6:sgpr_128 = COPY killed %146 %3:sgpr_128 = COPY killed %647 %2:sgpr_128 = COPY killed %548 49 bb.2:50 S_NOP 0, implicit killed %351 52...53