11# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2- # RUN: llc -run-pass=livevars, phi-node-elimination -verify-machineinstrs -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
2+ # RUN: llc -run-pass=phi-node-elimination -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
33
44# Verify that the original COPY in bb.1 is reappropriated as the PHI source in bb.2,
55# instead of creating a new COPY with the same source register.
@@ -13,18 +13,18 @@ body: |
1313 ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
1414 ; CHECK-NEXT: liveins: $nzcv, $w0
1515 ; CHECK-NEXT: {{ $}}
16- ; CHECK-NEXT: %a:gpr32 = COPY killed $w0
16+ ; CHECK-NEXT: %a:gpr32 = COPY $w0
1717 ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
18- ; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
18+ ; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
1919 ; CHECK-NEXT: {{ $}}
2020 ; CHECK-NEXT: bb.1:
2121 ; CHECK-NEXT: successors: %bb.2(0x80000000)
2222 ; CHECK-NEXT: {{ $}}
23- ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed %a
23+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY %a
2424 ; CHECK-NEXT: {{ $}}
2525 ; CHECK-NEXT: bb.2:
26- ; CHECK-NEXT: %c:gpr32 = COPY killed [[DEF]]
27- ; CHECK-NEXT: dead %d:gpr32 = COPY killed %c
26+ ; CHECK-NEXT: %c:gpr32 = COPY [[DEF]]
27+ ; CHECK-NEXT: %d:gpr32 = COPY %c
2828 bb.0:
2929 liveins: $nzcv, $w0
3030 %a:gpr32 = COPY $w0
@@ -46,16 +46,16 @@ body: |
4646 ; CHECK-NEXT: liveins: $nzcv, $w0
4747 ; CHECK-NEXT: {{ $}}
4848 ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
49- ; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
49+ ; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
5050 ; CHECK-NEXT: {{ $}}
5151 ; CHECK-NEXT: bb.1:
5252 ; CHECK-NEXT: successors: %bb.2(0x80000000)
5353 ; CHECK-NEXT: {{ $}}
54- ; CHECK-NEXT: dead $x0 = IMPLICIT_DEF implicit-def $w0
55- ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed $w0
54+ ; CHECK-NEXT: $x0 = IMPLICIT_DEF
55+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY $w0
5656 ; CHECK-NEXT: {{ $}}
5757 ; CHECK-NEXT: bb.2:
58- ; CHECK-NEXT: dead %b:gpr32 = COPY killed [[DEF]]
58+ ; CHECK-NEXT: %b:gpr32 = COPY [[DEF]]
5959 bb.0:
6060 liveins: $nzcv, $w0
6161 Bcc 8, %bb.2, implicit $nzcv
@@ -83,15 +83,15 @@ body: |
8383 ; CHECK-NEXT: bb.1:
8484 ; CHECK-NEXT: successors: %bb.2(0x80000000)
8585 ; CHECK-NEXT: {{ $}}
86- ; CHECK-NEXT: dead [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87- ; CHECK-NEXT: dead [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
86+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87+ ; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
8888 ; CHECK-NEXT: B %bb.2
8989 ; CHECK-NEXT: {{ $}}
9090 ; CHECK-NEXT: bb.2:
9191 ; CHECK-NEXT: successors: %bb.1(0x80000000)
9292 ; CHECK-NEXT: {{ $}}
93- ; CHECK-NEXT: dead [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94- ; CHECK-NEXT: dead [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
93+ ; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94+ ; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
9595 ; CHECK-NEXT: B %bb.1
9696 bb.0:
9797 liveins: $wzr, $xzr
@@ -117,77 +117,3 @@ body: |
117117
118118 ...
119119
120- ---
121- name : update_livevars
122- tracksRegLiveness : true
123- body : |
124- ; CHECK-LABEL: name: update_livevars
125- ; CHECK: bb.0:
126- ; CHECK-NEXT: successors: %bb.1(0x80000000)
127- ; CHECK-NEXT: liveins: $w0, $w1, $nzcv
128- ; CHECK-NEXT: {{ $}}
129- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY killed $w0
130- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY killed $w1
131- ; CHECK-NEXT: B %bb.1
132- ; CHECK-NEXT: {{ $}}
133- ; CHECK-NEXT: bb.1:
134- ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
135- ; CHECK-NEXT: liveins: $nzcv
136- ; CHECK-NEXT: {{ $}}
137- ; CHECK-NEXT: dead [[COPY2:%[0-9]+]]:gpr32 = COPY killed [[COPY1]]
138- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
139- ; CHECK-NEXT: Bcc 1, %bb.1, implicit $nzcv
140- ; CHECK-NEXT: {{ $}}
141- ; CHECK-NEXT: bb.2:
142- ; CHECK-NEXT: successors: %bb.1(0x80000000)
143- ; CHECK-NEXT: liveins: $nzcv
144- ; CHECK-NEXT: {{ $}}
145- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32 = IMPLICIT_DEF
146- ; CHECK-NEXT: B %bb.1
147- bb.0:
148- successors: %bb.1
149- liveins: $w0, $w1, $nzcv
150-
151- %0:gpr32 = COPY killed $w0
152- %1:gpr32 = COPY killed $w1
153- B %bb.1
154-
155- bb.1:
156- successors: %bb.2, %bb.1
157- liveins: $nzcv
158-
159- %2:gpr32 = PHI %3, %bb.2, %1, %bb.0, %3, %bb.1
160- %3:gpr32 = COPY %0
161- Bcc 1, %bb.1, implicit $nzcv
162-
163- bb.2:
164- successors: %bb.1
165- liveins: $nzcv
166-
167- B %bb.1
168- ...
169-
170- ---
171- name : copy_subreg
172- tracksRegLiveness : true
173- body : |
174- ; CHECK-LABEL: name: copy_subreg
175- ; CHECK: bb.0:
176- ; CHECK-NEXT: successors: %bb.1(0x80000000)
177- ; CHECK-NEXT: liveins: $x0
178- ; CHECK-NEXT: {{ $}}
179- ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY killed $x0
180- ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY killed [[COPY]]
181- ; CHECK-NEXT: {{ $}}
182- ; CHECK-NEXT: bb.1:
183- ; CHECK-NEXT: dead [[COPY2:%[0-9]+]]:gpr32 = COPY killed [[COPY1]].sub_32
184- bb.0:
185- successors: %bb.1
186- liveins: $x0
187-
188- %0:gpr64 = COPY killed $x0
189- %1:gpr64 = COPY killed %0
190-
191- bb.1:
192- %2:gpr32 = PHI %1.sub_32, %bb.0
193- ...
0 commit comments