1
1
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
2
- # RUN: llc -run-pass=phi-node-elimination -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
2
+ # RUN: llc -run-pass=livevars, phi-node-elimination -verify-machineinstrs -mtriple=aarch64-linux-gnu -o - %s | FileCheck %s
3
3
4
4
# Verify that the original COPY in bb.1 is reappropriated as the PHI source in bb.2,
5
5
# instead of creating a new COPY with the same source register.
@@ -13,18 +13,18 @@ body: |
13
13
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
14
14
; CHECK-NEXT: liveins: $nzcv, $w0
15
15
; CHECK-NEXT: {{ $}}
16
- ; CHECK-NEXT: %a:gpr32 = COPY $w0
16
+ ; CHECK-NEXT: %a:gpr32 = COPY killed $w0
17
17
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
18
- ; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
18
+ ; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
19
19
; CHECK-NEXT: {{ $}}
20
20
; CHECK-NEXT: bb.1:
21
21
; CHECK-NEXT: successors: %bb.2(0x80000000)
22
22
; CHECK-NEXT: {{ $}}
23
- ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY %a
23
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed %a
24
24
; CHECK-NEXT: {{ $}}
25
25
; CHECK-NEXT: bb.2:
26
- ; CHECK-NEXT: %c:gpr32 = COPY [[DEF]]
27
- ; CHECK-NEXT: %d:gpr32 = COPY %c
26
+ ; CHECK-NEXT: %c:gpr32 = COPY killed [[DEF]]
27
+ ; CHECK-NEXT: dead %d:gpr32 = COPY killed %c
28
28
bb.0:
29
29
liveins: $nzcv, $w0
30
30
%a:gpr32 = COPY $w0
@@ -46,16 +46,16 @@ body: |
46
46
; CHECK-NEXT: liveins: $nzcv, $w0
47
47
; CHECK-NEXT: {{ $}}
48
48
; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = IMPLICIT_DEF
49
- ; CHECK-NEXT: Bcc 8, %bb.2, implicit $nzcv
49
+ ; CHECK-NEXT: Bcc 8, %bb.2, implicit killed $nzcv
50
50
; CHECK-NEXT: {{ $}}
51
51
; CHECK-NEXT: bb.1:
52
52
; CHECK-NEXT: successors: %bb.2(0x80000000)
53
53
; CHECK-NEXT: {{ $}}
54
- ; CHECK-NEXT: $x0 = IMPLICIT_DEF
55
- ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY $w0
54
+ ; CHECK-NEXT: dead $x0 = IMPLICIT_DEF implicit-def $w0
55
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr32 = COPY killed $w0
56
56
; CHECK-NEXT: {{ $}}
57
57
; CHECK-NEXT: bb.2:
58
- ; CHECK-NEXT: %b:gpr32 = COPY [[DEF]]
58
+ ; CHECK-NEXT: dead %b:gpr32 = COPY killed [[DEF]]
59
59
bb.0:
60
60
liveins: $nzcv, $w0
61
61
Bcc 8, %bb.2, implicit $nzcv
@@ -83,15 +83,15 @@ body: |
83
83
; CHECK-NEXT: bb.1:
84
84
; CHECK-NEXT: successors: %bb.2(0x80000000)
85
85
; CHECK-NEXT: {{ $}}
86
- ; CHECK-NEXT: [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87
- ; CHECK-NEXT: [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
86
+ ; CHECK-NEXT: dead [[DEF:%[0-9]+]]:gpr64 = IMPLICIT_DEF
87
+ ; CHECK-NEXT: dead [[DEF1:%[0-9]+]]:gpr64 = IMPLICIT_DEF
88
88
; CHECK-NEXT: B %bb.2
89
89
; CHECK-NEXT: {{ $}}
90
90
; CHECK-NEXT: bb.2:
91
91
; CHECK-NEXT: successors: %bb.1(0x80000000)
92
92
; CHECK-NEXT: {{ $}}
93
- ; CHECK-NEXT: [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94
- ; CHECK-NEXT: [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
93
+ ; CHECK-NEXT: dead [[DEF2:%[0-9]+]]:gpr64 = IMPLICIT_DEF
94
+ ; CHECK-NEXT: dead [[DEF3:%[0-9]+]]:gpr64 = IMPLICIT_DEF
95
95
; CHECK-NEXT: B %bb.1
96
96
bb.0:
97
97
liveins: $wzr, $xzr
@@ -117,3 +117,54 @@ body: |
117
117
118
118
...
119
119
120
+ ---
121
+ name : update_livevars
122
+ tracksRegLiveness : true
123
+ body : |
124
+ bb.0:
125
+ successors: %bb.1
126
+ liveins: $w0, $w1, $nzcv
127
+
128
+ %0:gpr32 = COPY killed $w0
129
+ %1:gpr32 = COPY killed $w1
130
+ B %bb.1
131
+
132
+ bb.1:
133
+ successors: %bb.2, %bb.1
134
+ liveins: $nzcv
135
+
136
+ %2:gpr32 = PHI %3, %bb.2, %1, %bb.0, %3, %bb.1
137
+ %3:gpr32 = COPY %0
138
+ Bcc 1, %bb.1, implicit $nzcv
139
+
140
+ bb.2:
141
+ successors: %bb.1
142
+ liveins: $nzcv
143
+
144
+ B %bb.1
145
+ ...
146
+
147
+ ---
148
+ name : copy_subreg
149
+ tracksRegLiveness : true
150
+ body : |
151
+ ; CHECK-LABEL: name: copy_subreg
152
+ ; CHECK: bb.0:
153
+ ; CHECK-NEXT: successors: %bb.1(0x80000000)
154
+ ; CHECK-NEXT: liveins: $x0
155
+ ; CHECK-NEXT: {{ $}}
156
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY killed $x0
157
+ ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY killed [[COPY]]
158
+ ; CHECK-NEXT: {{ $}}
159
+ ; CHECK-NEXT: bb.1:
160
+ ; CHECK-NEXT: dead [[COPY2:%[0-9]+]]:gpr32 = COPY killed [[COPY1]].sub_32
161
+ bb.0:
162
+ successors: %bb.1
163
+ liveins: $x0
164
+
165
+ %0:gpr64 = COPY killed $x0
166
+ %1:gpr64 = COPY killed %0
167
+
168
+ bb.1:
169
+ %2:gpr32 = PHI %1.sub_32, %bb.0
170
+ ...
0 commit comments