@@ -12,10 +12,11 @@ body: |
12
12
13
13
; CHECK-LABEL: name: test_extracts_4
14
14
; CHECK: liveins: $x0, $x1, $x2
15
- ; CHECK: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
16
- ; CHECK: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 32
17
- ; CHECK: $w0 = COPY [[EXTRACT]](s32)
18
- ; CHECK: RET_ReallyLR implicit $w0
15
+ ; CHECK-NEXT: {{ $}}
16
+ ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $x0
17
+ ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[COPY]](s64), 32
18
+ ; CHECK-NEXT: $w0 = COPY [[EXTRACT]](s32)
19
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
19
20
%0:_(s64) = COPY $x0
20
21
%1:_(s64) = COPY $x1
21
22
%2:_(s128) = G_MERGE_VALUES %0, %1
@@ -31,10 +32,11 @@ body: |
31
32
liveins: $x0, $q0
32
33
; CHECK-LABEL: name: p0_from_s128
33
34
; CHECK: liveins: $x0, $q0
34
- ; CHECK: %val:_(s128) = COPY $q0
35
- ; CHECK: %extract:_(p0) = G_EXTRACT %val(s128), 0
36
- ; CHECK: $x0 = COPY %extract(p0)
37
- ; CHECK: RET_ReallyLR implicit $x0
35
+ ; CHECK-NEXT: {{ $}}
36
+ ; CHECK-NEXT: %val:_(s128) = COPY $q0
37
+ ; CHECK-NEXT: %extract:_(p0) = G_EXTRACT %val(s128), 0
38
+ ; CHECK-NEXT: $x0 = COPY %extract(p0)
39
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
38
40
%val:_(s128) = COPY $q0
39
41
%extract:_(p0) = G_EXTRACT %val, 0
40
42
$x0 = COPY %extract
@@ -48,10 +50,11 @@ body: |
48
50
liveins: $x0, $q0
49
51
; CHECK-LABEL: name: s64_from_s128
50
52
; CHECK: liveins: $x0, $q0
51
- ; CHECK: %val:_(s128) = COPY $q0
52
- ; CHECK: %extract:_(s64) = G_EXTRACT %val(s128), 0
53
- ; CHECK: $x0 = COPY %extract(s64)
54
- ; CHECK: RET_ReallyLR implicit $x0
53
+ ; CHECK-NEXT: {{ $}}
54
+ ; CHECK-NEXT: %val:_(s128) = COPY $q0
55
+ ; CHECK-NEXT: %extract:_(s64) = G_EXTRACT %val(s128), 0
56
+ ; CHECK-NEXT: $x0 = COPY %extract(s64)
57
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
55
58
%val:_(s128) = COPY $q0
56
59
%extract:_(s64) = G_EXTRACT %val, 0
57
60
$x0 = COPY %extract
@@ -65,10 +68,11 @@ body: |
65
68
liveins: $w0, $q0
66
69
; CHECK-LABEL: name: s32_from_s128
67
70
; CHECK: liveins: $w0, $q0
68
- ; CHECK: %val:_(s128) = COPY $q0
69
- ; CHECK: %extract:_(s32) = G_EXTRACT %val(s128), 0
70
- ; CHECK: $w0 = COPY %extract(s32)
71
- ; CHECK: RET_ReallyLR implicit $w0
71
+ ; CHECK-NEXT: {{ $}}
72
+ ; CHECK-NEXT: %val:_(s128) = COPY $q0
73
+ ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(s128), 0
74
+ ; CHECK-NEXT: $w0 = COPY %extract(s32)
75
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
72
76
%val:_(s128) = COPY $q0
73
77
%extract:_(s32) = G_EXTRACT %val, 0
74
78
$w0 = COPY %extract
@@ -82,10 +86,11 @@ body: |
82
86
liveins: $w0
83
87
; CHECK-LABEL: name: s32_from_s64
84
88
; CHECK: liveins: $w0
85
- ; CHECK: %val:_(s64) = COPY $x0
86
- ; CHECK: %extract:_(s32) = G_EXTRACT %val(s64), 0
87
- ; CHECK: $w0 = COPY %extract(s32)
88
- ; CHECK: RET_ReallyLR implicit $w0
89
+ ; CHECK-NEXT: {{ $}}
90
+ ; CHECK-NEXT: %val:_(s64) = COPY $x0
91
+ ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(s64), 0
92
+ ; CHECK-NEXT: $w0 = COPY %extract(s32)
93
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
89
94
%val:_(s64) = COPY $x0
90
95
%extract:_(s32) = G_EXTRACT %val, 0
91
96
$w0 = COPY %extract
@@ -99,10 +104,11 @@ body: |
99
104
liveins: $w0
100
105
; CHECK-LABEL: name: s32_from_p0
101
106
; CHECK: liveins: $w0
102
- ; CHECK: %val:_(p0) = COPY $x0
103
- ; CHECK: %extract:_(s32) = G_EXTRACT %val(p0), 0
104
- ; CHECK: $w0 = COPY %extract(s32)
105
- ; CHECK: RET_ReallyLR implicit $w0
107
+ ; CHECK-NEXT: {{ $}}
108
+ ; CHECK-NEXT: %val:_(p0) = COPY $x0
109
+ ; CHECK-NEXT: %extract:_(s32) = G_EXTRACT %val(p0), 0
110
+ ; CHECK-NEXT: $w0 = COPY %extract(s32)
111
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
106
112
%val:_(p0) = COPY $x0
107
113
%extract:_(s32) = G_EXTRACT %val, 0
108
114
$w0 = COPY %extract
@@ -116,10 +122,11 @@ body: |
116
122
liveins: $h0, $q0
117
123
; CHECK-LABEL: name: s16_from_s128
118
124
; CHECK: liveins: $h0, $q0
119
- ; CHECK: %val:_(s128) = COPY $q0
120
- ; CHECK: %extract:_(s16) = G_EXTRACT %val(s128), 0
121
- ; CHECK: $h0 = COPY %extract(s16)
122
- ; CHECK: RET_ReallyLR implicit $h0
125
+ ; CHECK-NEXT: {{ $}}
126
+ ; CHECK-NEXT: %val:_(s128) = COPY $q0
127
+ ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s128), 0
128
+ ; CHECK-NEXT: $h0 = COPY %extract(s16)
129
+ ; CHECK-NEXT: RET_ReallyLR implicit $h0
123
130
%val:_(s128) = COPY $q0
124
131
%extract:_(s16) = G_EXTRACT %val, 0
125
132
$h0 = COPY %extract
@@ -133,10 +140,11 @@ body: |
133
140
liveins: $h0, $x0
134
141
; CHECK-LABEL: name: s16_from_s64
135
142
; CHECK: liveins: $h0, $x0
136
- ; CHECK: %val:_(s64) = COPY $x0
137
- ; CHECK: %extract:_(s16) = G_EXTRACT %val(s64), 0
138
- ; CHECK: $h0 = COPY %extract(s16)
139
- ; CHECK: RET_ReallyLR implicit $h0
143
+ ; CHECK-NEXT: {{ $}}
144
+ ; CHECK-NEXT: %val:_(s64) = COPY $x0
145
+ ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s64), 0
146
+ ; CHECK-NEXT: $h0 = COPY %extract(s16)
147
+ ; CHECK-NEXT: RET_ReallyLR implicit $h0
140
148
%val:_(s64) = COPY $x0
141
149
%extract:_(s16) = G_EXTRACT %val, 0
142
150
$h0 = COPY %extract
@@ -150,10 +158,11 @@ body: |
150
158
liveins: $h0, $w0
151
159
; CHECK-LABEL: name: s16_from_s32
152
160
; CHECK: liveins: $h0, $w0
153
- ; CHECK: %val:_(s32) = COPY $w0
154
- ; CHECK: %extract:_(s16) = G_EXTRACT %val(s32), 0
155
- ; CHECK: $h0 = COPY %extract(s16)
156
- ; CHECK: RET_ReallyLR implicit $h0
161
+ ; CHECK-NEXT: {{ $}}
162
+ ; CHECK-NEXT: %val:_(s32) = COPY $w0
163
+ ; CHECK-NEXT: %extract:_(s16) = G_EXTRACT %val(s32), 0
164
+ ; CHECK-NEXT: $h0 = COPY %extract(s16)
165
+ ; CHECK-NEXT: RET_ReallyLR implicit $h0
157
166
%val:_(s32) = COPY $w0
158
167
%extract:_(s16) = G_EXTRACT %val, 0
159
168
$h0 = COPY %extract
@@ -167,10 +176,11 @@ body: |
167
176
liveins: $b0, $q0
168
177
; CHECK-LABEL: name: s8_from_s128
169
178
; CHECK: liveins: $b0, $q0
170
- ; CHECK: %val:_(s128) = COPY $q0
171
- ; CHECK: %extract:_(s8) = G_TRUNC %val(s128)
172
- ; CHECK: $b0 = COPY %extract(s8)
173
- ; CHECK: RET_ReallyLR implicit $b0
179
+ ; CHECK-NEXT: {{ $}}
180
+ ; CHECK-NEXT: %val:_(s128) = COPY $q0
181
+ ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s128)
182
+ ; CHECK-NEXT: $b0 = COPY %extract(s8)
183
+ ; CHECK-NEXT: RET_ReallyLR implicit $b0
174
184
%val:_(s128) = COPY $q0
175
185
%extract:_(s8) = G_EXTRACT %val, 0
176
186
$b0 = COPY %extract
@@ -184,10 +194,11 @@ body: |
184
194
liveins: $b0, $x0
185
195
; CHECK-LABEL: name: s8_from_s64
186
196
; CHECK: liveins: $b0, $x0
187
- ; CHECK: %val:_(s64) = COPY $x0
188
- ; CHECK: %extract:_(s8) = G_TRUNC %val(s64)
189
- ; CHECK: $b0 = COPY %extract(s8)
190
- ; CHECK: RET_ReallyLR implicit $b0
197
+ ; CHECK-NEXT: {{ $}}
198
+ ; CHECK-NEXT: %val:_(s64) = COPY $x0
199
+ ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s64)
200
+ ; CHECK-NEXT: $b0 = COPY %extract(s8)
201
+ ; CHECK-NEXT: RET_ReallyLR implicit $b0
191
202
%val:_(s64) = COPY $x0
192
203
%extract:_(s8) = G_EXTRACT %val, 0
193
204
$b0 = COPY %extract
@@ -201,10 +212,11 @@ body: |
201
212
liveins: $b0, $w0
202
213
; CHECK-LABEL: name: s8_from_s32
203
214
; CHECK: liveins: $b0, $w0
204
- ; CHECK: %val:_(s32) = COPY $w0
205
- ; CHECK: %extract:_(s8) = G_TRUNC %val(s32)
206
- ; CHECK: $b0 = COPY %extract(s8)
207
- ; CHECK: RET_ReallyLR implicit $b0
215
+ ; CHECK-NEXT: {{ $}}
216
+ ; CHECK-NEXT: %val:_(s32) = COPY $w0
217
+ ; CHECK-NEXT: %extract:_(s8) = G_TRUNC %val(s32)
218
+ ; CHECK-NEXT: $b0 = COPY %extract(s8)
219
+ ; CHECK-NEXT: RET_ReallyLR implicit $b0
208
220
%val:_(s32) = COPY $w0
209
221
%extract:_(s8) = G_EXTRACT %val, 0
210
222
$b0 = COPY %extract
@@ -218,11 +230,12 @@ body: |
218
230
liveins: $b0, $h0
219
231
; CHECK-LABEL: name: s8_from_s16
220
232
; CHECK: liveins: $b0, $h0
221
- ; CHECK: %val:_(s16) = COPY $h0
222
- ; CHECK: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %val(s16)
223
- ; CHECK: %extract:_(s8) = G_TRUNC [[ANYEXT]](s32)
224
- ; CHECK: $b0 = COPY %extract(s8)
225
- ; CHECK: RET_ReallyLR implicit $b0
233
+ ; CHECK-NEXT: {{ $}}
234
+ ; CHECK-NEXT: %val:_(s16) = COPY $h0
235
+ ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %val(s16)
236
+ ; CHECK-NEXT: %extract:_(s8) = G_TRUNC [[ANYEXT]](s32)
237
+ ; CHECK-NEXT: $b0 = COPY %extract(s8)
238
+ ; CHECK-NEXT: RET_ReallyLR implicit $b0
226
239
%val:_(s16) = COPY $h0
227
240
%extract:_(s8) = G_EXTRACT %val, 0
228
241
$b0 = COPY %extract
@@ -236,11 +249,12 @@ body: |
236
249
liveins: $w0
237
250
; CHECK-LABEL: name: s1_from_s32
238
251
; CHECK: liveins: $w0
239
- ; CHECK: %val:_(s32) = COPY $w0
240
- ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
241
- ; CHECK: %ext:_(s32) = G_AND %val, [[C]]
242
- ; CHECK: $w0 = COPY %ext(s32)
243
- ; CHECK: RET_ReallyLR implicit $w0
252
+ ; CHECK-NEXT: {{ $}}
253
+ ; CHECK-NEXT: %val:_(s32) = COPY $w0
254
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
255
+ ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]
256
+ ; CHECK-NEXT: $w0 = COPY %ext(s32)
257
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
244
258
%val:_(s32) = COPY $w0
245
259
%extract:_(s1) = G_EXTRACT %val, 0
246
260
%ext:_(s32) = G_ZEXT %extract
@@ -255,11 +269,12 @@ body: |
255
269
liveins: $w0
256
270
; CHECK-LABEL: name: s3_from_s32
257
271
; CHECK: liveins: $w0
258
- ; CHECK: %val:_(s32) = COPY $w0
259
- ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
260
- ; CHECK: %ext:_(s32) = G_AND %val, [[C]]
261
- ; CHECK: $w0 = COPY %ext(s32)
262
- ; CHECK: RET_ReallyLR implicit $w0
272
+ ; CHECK-NEXT: {{ $}}
273
+ ; CHECK-NEXT: %val:_(s32) = COPY $w0
274
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
275
+ ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]
276
+ ; CHECK-NEXT: $w0 = COPY %ext(s32)
277
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
263
278
%val:_(s32) = COPY $w0
264
279
%extract:_(s3) = G_EXTRACT %val, 0
265
280
%ext:_(s32) = G_ZEXT %extract
@@ -274,12 +289,13 @@ body: |
274
289
liveins: $w0
275
290
; CHECK-LABEL: name: s3_from_s35
276
291
; CHECK: liveins: $w0
277
- ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
278
- ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
279
- ; CHECK: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
280
- ; CHECK: %ext:_(s32) = G_AND [[TRUNC]], [[C]]
281
- ; CHECK: $w0 = COPY %ext(s32)
282
- ; CHECK: RET_ReallyLR implicit $w0
292
+ ; CHECK-NEXT: {{ $}}
293
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
294
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 7
295
+ ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[DEF]](s64)
296
+ ; CHECK-NEXT: %ext:_(s32) = G_AND [[TRUNC]], [[C]]
297
+ ; CHECK-NEXT: $w0 = COPY %ext(s32)
298
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
283
299
%val:_(s35) = G_IMPLICIT_DEF
284
300
%extract:_(s3) = G_EXTRACT %val, 0
285
301
%ext:_(s32) = G_ZEXT %extract
@@ -294,11 +310,12 @@ body: |
294
310
liveins: $w0
295
311
; CHECK-LABEL: name: s4_from_s32
296
312
; CHECK: liveins: $w0
297
- ; CHECK: %val:_(s32) = COPY $w0
298
- ; CHECK: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
299
- ; CHECK: %ext:_(s32) = G_AND %val, [[C]]
300
- ; CHECK: $w0 = COPY %ext(s32)
301
- ; CHECK: RET_ReallyLR implicit $w0
313
+ ; CHECK-NEXT: {{ $}}
314
+ ; CHECK-NEXT: %val:_(s32) = COPY $w0
315
+ ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 15
316
+ ; CHECK-NEXT: %ext:_(s32) = G_AND %val, [[C]]
317
+ ; CHECK-NEXT: $w0 = COPY %ext(s32)
318
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
302
319
%val:_(s32) = COPY $w0
303
320
%extract:_(s4) = G_EXTRACT %val, 0
304
321
%ext:_(s32) = G_ZEXT %extract
@@ -313,11 +330,54 @@ body: |
313
330
liveins: $x0
314
331
; CHECK-LABEL: name: s64_from_s264
315
332
; CHECK: liveins: $x0
316
- ; CHECK: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
317
- ; CHECK: %extract:_(s64) = COPY [[DEF]](s64)
318
- ; CHECK: $x0 = COPY %extract(s64)
319
- ; CHECK: RET_ReallyLR implicit $x0
333
+ ; CHECK-NEXT: {{ $}}
334
+ ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s64) = G_IMPLICIT_DEF
335
+ ; CHECK-NEXT: %extract:_(s64) = COPY [[DEF]](s64)
336
+ ; CHECK-NEXT: $x0 = COPY %extract(s64)
337
+ ; CHECK-NEXT: RET_ReallyLR implicit $x0
320
338
%val:_(s264) = G_IMPLICIT_DEF
321
339
%extract:_(s64) = G_EXTRACT %val, 0
322
340
$x0 = COPY %extract
323
341
RET_ReallyLR implicit $x0
342
+ ...
343
+ ---
344
+ name : s16_from_s144
345
+ tracksRegLiveness : true
346
+ body : |
347
+ bb.0:
348
+ liveins: $h0
349
+ ; CHECK-LABEL: name: s16_from_s144
350
+ ; CHECK: liveins: $h0
351
+ ; CHECK-NEXT: {{ $}}
352
+ ; CHECK-NEXT: %h0:_(s16) = COPY $h0
353
+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %h0(s16), %h0(s16), %h0(s16), %h0(s16)
354
+ ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s16) = G_EXTRACT [[MV]](s64), 1
355
+ ; CHECK-NEXT: %extract:_(s16) = COPY [[EXTRACT]](s16)
356
+ ; CHECK-NEXT: $h0 = COPY %extract(s16)
357
+ ; CHECK-NEXT: RET_ReallyLR implicit $h0
358
+ %h0:_(s16) = COPY $h0
359
+ %val:_(s144) = G_MERGE_VALUES %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0
360
+ %extract:_(s16) = G_EXTRACT %val, 1
361
+ $h0 = COPY %extract
362
+ RET_ReallyLR implicit $h0
363
+ ...
364
+ ---
365
+ name : s32_from_s144
366
+ tracksRegLiveness : true
367
+ body : |
368
+ bb.0:
369
+ liveins: $h0, $w0
370
+ ; CHECK-LABEL: name: s32_from_s144
371
+ ; CHECK: liveins: $h0, $w0
372
+ ; CHECK-NEXT: {{ $}}
373
+ ; CHECK-NEXT: %h0:_(s16) = COPY $h0
374
+ ; CHECK-NEXT: [[MV:%[0-9]+]]:_(s64) = G_MERGE_VALUES %h0(s16), %h0(s16), %h0(s16), %h0(s16)
375
+ ; CHECK-NEXT: [[EXTRACT:%[0-9]+]]:_(s32) = G_EXTRACT [[MV]](s64), 1
376
+ ; CHECK-NEXT: %extract:_(s32) = COPY [[EXTRACT]](s32)
377
+ ; CHECK-NEXT: $w0 = COPY %extract(s32)
378
+ ; CHECK-NEXT: RET_ReallyLR implicit $w0
379
+ %h0:_(s16) = COPY $h0
380
+ %val:_(s144) = G_MERGE_VALUES %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0, %h0
381
+ %extract:_(s32) = G_EXTRACT %val, 1
382
+ $w0 = COPY %extract
383
+ RET_ReallyLR implicit $w0
0 commit comments