1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=aarch64 -o - -run-pass=early-tailduplication -verify-machineinstrs %s | FileCheck %s 3 4# Reproducer for a problem found with an out-of-tree target. This being 5# an attempt to re-create that for an in-tree target. 6# 7# When tail duplicator is duplicating the $s1 assignment into 8# bb.0 it need to resolve both the subreg access in the PHI 9# and the subreg access in the COPY. 10# 11# So what we expect is to find some thing like 12# $s1 = COPY %0.dsub_then_ssub 13# with two levels of subreg accesses (possibly composed into one subreg index). 14 15 16--- 17name: foo2 18tracksRegLiveness: true 19body: | 20 ; CHECK-LABEL: name: foo2 21 ; CHECK: bb.0.entry: 22 ; CHECK-NEXT: successors: %bb.4(0x80000000) 23 ; CHECK-NEXT: liveins: $q1 24 ; CHECK-NEXT: {{ $}} 25 ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q1 26 ; CHECK-NEXT: $s1 = COPY [[COPY]].ssub 27 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]].dsub 28 ; CHECK-NEXT: B %bb.4 29 ; 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_DEF 34 ; CHECK-NEXT: $s1 = COPY [[DEF]].ssub 35 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:fpr64 = COPY [[DEF]].dsub 36 ; CHECK-NEXT: B %bb.4 37 ; CHECK-NEXT: {{ $}} 38 ; CHECK-NEXT: bb.3: 39 ; CHECK-NEXT: successors: %bb.3(0x80000000) 40 ; CHECK-NEXT: {{ $}} 41 ; CHECK-NEXT: B %bb.3 42 ; CHECK-NEXT: {{ $}} 43 ; CHECK-NEXT: bb.4: 44 ; CHECK-NEXT: successors: %bb.4(0x80000000) 45 ; CHECK-NEXT: {{ $}} 46 ; CHECK-NEXT: B %bb.4 47 bb.0.entry: 48 liveins: $q1 49 50 %0:fpr128 = COPY $q1 51 B %bb.2 52 53 bb.1: 54 %1:fpr128 = IMPLICIT_DEF 55 B %bb.2 56 57 bb.2: 58 %2:fpr64 = PHI %0.dsub, %bb.0, %1.dsub, %bb.1 59 $s1 = COPY %2.ssub 60 B %bb.4 61 62 bb.3: 63 B %bb.3 64 65 bb.4: 66 B %bb.4 67... 68 69