69 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=aarch64 -o - -run-pass=early-tailduplication -verify-machineinstrs %s | FileCheck %s3 4# Reproducer for a problem found with an out-of-tree target. This being5# an attempt to re-create that for an in-tree target.6#7# When tail duplicator is duplicating the $s1 assignment into8# bb.0 it need to resolve both the subreg access in the PHI9# and the subreg access in the COPY.10#11# So what we expect is to find some thing like12# $s1 = COPY %0.dsub_then_ssub13# with two levels of subreg accesses (possibly composed into one subreg index).14 15 16---17name: foo218tracksRegLiveness: true19body: |20 ; CHECK-LABEL: name: foo221 ; CHECK: bb.0.entry:22 ; CHECK-NEXT: successors: %bb.4(0x80000000)23 ; CHECK-NEXT: liveins: $q124 ; CHECK-NEXT: {{ $}}25 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q126 ; CHECK-NEXT: $s1 = COPY [[COPY]].ssub27 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub28 ; CHECK-NEXT: B %bb.429 ; CHECK-NEXT: {{ $}}30 ; CHECK-NEXT: bb.1:31 ; CHECK-NEXT: successors: %bb.4(0x80000000)32 ; CHECK-NEXT: {{ $}}33 ; CHECK-NEXT: [[DEF:%[0-9]+]]:fpr128 = IMPLICIT_DEF34 ; CHECK-NEXT: $s1 = COPY [[DEF]].ssub35 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr64 = COPY [[DEF]].dsub36 ; CHECK-NEXT: B %bb.437 ; CHECK-NEXT: {{ $}}38 ; CHECK-NEXT: bb.3:39 ; CHECK-NEXT: successors: %bb.3(0x80000000)40 ; CHECK-NEXT: {{ $}}41 ; CHECK-NEXT: B %bb.342 ; CHECK-NEXT: {{ $}}43 ; CHECK-NEXT: bb.4:44 ; CHECK-NEXT: successors: %bb.4(0x80000000)45 ; CHECK-NEXT: {{ $}}46 ; CHECK-NEXT: B %bb.447 bb.0.entry:48 liveins: $q149 50 %0:fpr128 = COPY $q151 B %bb.252 53 bb.1:54 %1:fpr128 = IMPLICIT_DEF55 B %bb.256 57 bb.2:58 %2:fpr64 = PHI %0.dsub, %bb.0, %1.dsub, %bb.159 $s1 = COPY %2.ssub60 B %bb.461 62 bb.3:63 B %bb.364 65 bb.4:66 B %bb.467...68 69