Make test more lenient for custom clang version strings
[llvm-project.git] / llvm / test / CodeGen / X86 / GlobalISel / legalize-ext.mir
blobbf625cf7eeb99575e67686bad2de6909b8717023
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=i386-linux-gnu   -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=X32
3 # RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s --check-prefix=X64
4 --- |
6   define i8 @test_zext_i1toi8(i1 %a) {
7     %r = zext i1 %a to i8
8     ret i8 %r
9   }
11   define i16 @test_zext_i1toi16(i1 %a) {
12     %r = zext i1 %a to i16
13     ret i16 %r
14   }
16   define i32 @test_zext_i1(i8 %a) {
17     %val = trunc i8 %a to i1
18     %r = zext i1 %val to i32
19     ret i32 %r
20   }
22   define i16 @test_zext_i8toi16(i8 %val) {
23     %r = zext i8 %val to i16
24     ret i16 %r
25   }
27   define i32 @test_zext_i8(i8 %val) {
28     %r = zext i8 %val to i32
29     ret i32 %r
30   }
32   define i32 @test_zext_i16(i16 %val) {
33     %r = zext i16 %val to i32
34     ret i32 %r
35   }
37   define i8 @test_sext_i1toi8(i1 %a) {
38     %r = sext i1 %a to i8
39     ret i8 %r
40   }
42   define i16 @test_sext_i1toi16(i1 %a) {
43     %r = sext i1 %a to i16
44     ret i16 %r
45   }
47   define i32 @test_sext_i1(i8 %a) {
48     %val = trunc i8 %a to i1
49     %r = sext i1 %val to i32
50     ret i32 %r
51   }
53   define i16 @test_sext_i8toi16(i8 %val) {
54     %r = sext i8 %val to i16
55     ret i16 %r
56   }
58   define i32 @test_sext_i8(i8 %val) {
59     %r = sext i8 %val to i32
60     ret i32 %r
61   }
63   define i32 @test_sext_i16(i16 %val) {
64     %r = sext i16 %val to i32
65     ret i32 %r
66   }
68   define void @test_anyext_i1toi8(i1 %a) {
69     ret void
70   }
72   define void @test_anyext_i1toi16(i1 %a) {
73     ret void
74   }
76   define void @test_anyext_i1(i8 %a) {
77     ret void
78   }
80   define void @test_anyext_i8toi16(i8 %val) {
81     ret void
82   }
84   define void @test_anyext_i8(i8 %val) {
85     ret void
86   }
88   define void @test_anyext_i16(i16 %val) {
89     ret void
90   }
92 ...
93 ---
94 name:            test_zext_i1toi8
95 alignment:       16
96 legalized:       false
97 regBankSelected: false
98 registers:
99   - { id: 0, class: _, preferred-register: '' }
100   - { id: 1, class: _, preferred-register: '' }
101   - { id: 2, class: _, preferred-register: '' }
102 body:             |
103   bb.1 (%ir-block.0):
104     liveins: $edi
106     ; X32-LABEL: name: test_zext_i1toi8
107     ; X32: liveins: $edi
108     ; X32-NEXT: {{  $}}
109     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
110     ; X32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
111     ; X32-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 1
112     ; X32-NEXT: [[AND:%[0-9]+]]:_(s8) = G_AND [[TRUNC]], [[C]]
113     ; X32-NEXT: $al = COPY [[AND]](s8)
114     ; X32-NEXT: RET 0, implicit $al
115     ;
116     ; X64-LABEL: name: test_zext_i1toi8
117     ; X64: liveins: $edi
118     ; X64-NEXT: {{  $}}
119     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
120     ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
121     ; X64-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 1
122     ; X64-NEXT: [[AND:%[0-9]+]]:_(s8) = G_AND [[TRUNC]], [[C]]
123     ; X64-NEXT: $al = COPY [[AND]](s8)
124     ; X64-NEXT: RET 0, implicit $al
125     %1:_(s32) = COPY $edi
126     %0:_(s1) = G_TRUNC %1(s32)
127     %2:_(s8) = G_ZEXT %0(s1)
128     $al = COPY %2(s8)
129     RET 0, implicit $al
133 name:            test_zext_i1toi16
134 alignment:       16
135 legalized:       false
136 regBankSelected: false
137 registers:
138   - { id: 0, class: _, preferred-register: '' }
139   - { id: 1, class: _, preferred-register: '' }
140 body:             |
141   bb.1 (%ir-block.0):
142     liveins: $edi
144     ; X32-LABEL: name: test_zext_i1toi16
145     ; X32: liveins: $edi
146     ; X32-NEXT: {{  $}}
147     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
148     ; X32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
149     ; X32-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
150     ; X32-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]
151     ; X32-NEXT: $ax = COPY [[AND]](s16)
152     ; X32-NEXT: RET 0, implicit $ax
153     ;
154     ; X64-LABEL: name: test_zext_i1toi16
155     ; X64: liveins: $edi
156     ; X64-NEXT: {{  $}}
157     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
158     ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
159     ; X64-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 1
160     ; X64-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C]]
161     ; X64-NEXT: $ax = COPY [[AND]](s16)
162     ; X64-NEXT: RET 0, implicit $ax
163     %1:_(s32) = COPY $edi
164     %0:_(s1) = G_TRUNC %1(s32)
165     %2:_(s16) = G_ZEXT %0(s1)
166     $ax = COPY %2(s16)
167     RET 0, implicit $ax
171 name:            test_zext_i1
172 alignment:       16
173 legalized:       false
174 regBankSelected: false
175 registers:
176   - { id: 0, class: _ }
177   - { id: 1, class: _ }
178   - { id: 2, class: _ }
179 body:             |
180   bb.1 (%ir-block.0):
181     liveins: $edi
183     ; X32-LABEL: name: test_zext_i1
184     ; X32: liveins: $edi
185     ; X32-NEXT: {{  $}}
186     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
187     ; X32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
188     ; X32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
189     ; X32-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]
190     ; X32-NEXT: $eax = COPY [[AND]](s32)
191     ; X32-NEXT: RET 0, implicit $eax
192     ;
193     ; X64-LABEL: name: test_zext_i1
194     ; X64: liveins: $edi
195     ; X64-NEXT: {{  $}}
196     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
197     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
198     ; X64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1
199     ; X64-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[ANYEXT]], [[C]]
200     ; X64-NEXT: $eax = COPY [[AND]](s32)
201     ; X64-NEXT: RET 0, implicit $eax
202     %0(s8) = COPY $dil
203     %1(s1) = G_TRUNC %0(s8)
204     %2(s32) = G_ZEXT %1(s1)
205     $eax = COPY %2(s32)
206     RET 0, implicit $eax
210 name:            test_zext_i8toi16
211 alignment:       16
212 legalized:       false
213 regBankSelected: false
214 registers:
215   - { id: 0, class: _, preferred-register: '' }
216   - { id: 1, class: _, preferred-register: '' }
217 body:             |
218   bb.1 (%ir-block.0):
219     liveins: $edi
221     ; X32-LABEL: name: test_zext_i8toi16
222     ; X32: liveins: $edi
223     ; X32-NEXT: {{  $}}
224     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
225     ; X32-NEXT: [[ZEXT:%[0-9]+]]:_(s16) = G_ZEXT [[COPY]](s8)
226     ; X32-NEXT: $ax = COPY [[ZEXT]](s16)
227     ; X32-NEXT: RET 0, implicit $ax
228     ;
229     ; X64-LABEL: name: test_zext_i8toi16
230     ; X64: liveins: $edi
231     ; X64-NEXT: {{  $}}
232     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
233     ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s16) = G_ZEXT [[COPY]](s8)
234     ; X64-NEXT: $ax = COPY [[ZEXT]](s16)
235     ; X64-NEXT: RET 0, implicit $ax
236     %0(s8) = COPY $dil
237     %1(s16) = G_ZEXT %0(s8)
238     $ax = COPY %1(s16)
239     RET 0, implicit $ax
243 name:            test_zext_i8
244 alignment:       16
245 legalized:       false
246 regBankSelected: false
247 registers:
248   - { id: 0, class: _ }
249   - { id: 1, class: _ }
250 body:             |
251   bb.1 (%ir-block.0):
252     liveins: $edi
254     ; X32-LABEL: name: test_zext_i8
255     ; X32: liveins: $edi
256     ; X32-NEXT: {{  $}}
257     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
258     ; X32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s8)
259     ; X32-NEXT: $eax = COPY [[ZEXT]](s32)
260     ; X32-NEXT: RET 0, implicit $eax
261     ;
262     ; X64-LABEL: name: test_zext_i8
263     ; X64: liveins: $edi
264     ; X64-NEXT: {{  $}}
265     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
266     ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s8)
267     ; X64-NEXT: $eax = COPY [[ZEXT]](s32)
268     ; X64-NEXT: RET 0, implicit $eax
269     %0(s8) = COPY $dil
270     %1(s32) = G_ZEXT %0(s8)
271     $eax = COPY %1(s32)
272     RET 0, implicit $eax
276 name:            test_zext_i16
277 alignment:       16
278 legalized:       false
279 regBankSelected: false
280 registers:
281   - { id: 0, class: _ }
282   - { id: 1, class: _ }
283 body:             |
284   bb.1 (%ir-block.0):
285     liveins: $edi
287     ; X32-LABEL: name: test_zext_i16
288     ; X32: liveins: $edi
289     ; X32-NEXT: {{  $}}
290     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
291     ; X32-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s16)
292     ; X32-NEXT: $eax = COPY [[ZEXT]](s32)
293     ; X32-NEXT: RET 0, implicit $eax
294     ;
295     ; X64-LABEL: name: test_zext_i16
296     ; X64: liveins: $edi
297     ; X64-NEXT: {{  $}}
298     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
299     ; X64-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[COPY]](s16)
300     ; X64-NEXT: $eax = COPY [[ZEXT]](s32)
301     ; X64-NEXT: RET 0, implicit $eax
302     %0(s16) = COPY $di
303     %1(s32) = G_ZEXT %0(s16)
304     $eax = COPY %1(s32)
305     RET 0, implicit $eax
309 name:            test_sext_i1toi8
310 alignment:       16
311 legalized:       false
312 regBankSelected: false
313 registers:
314   - { id: 0, class: _, preferred-register: '' }
315   - { id: 1, class: _, preferred-register: '' }
316 body:             |
317   bb.1 (%ir-block.0):
318     liveins: $edi
320     ; X32-LABEL: name: test_sext_i1toi8
321     ; X32: liveins: $edi
322     ; X32-NEXT: {{  $}}
323     ; X32-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
324     ; X32-NEXT: $al = COPY [[C]](s8)
325     ; X32-NEXT: RET 0, implicit $al
326     ;
327     ; X64-LABEL: name: test_sext_i1toi8
328     ; X64: liveins: $edi
329     ; X64-NEXT: {{  $}}
330     ; X64-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 0
331     ; X64-NEXT: $al = COPY [[C]](s8)
332     ; X64-NEXT: RET 0, implicit $al
333     %0(s1) = G_IMPLICIT_DEF
334     %1(s8) = G_SEXT %0(s1)
335     $al = COPY %1(s8)
336     RET 0, implicit $al
340 name:            test_sext_i1toi16
341 alignment:       16
342 legalized:       false
343 regBankSelected: false
344 registers:
345   - { id: 0, class: _, preferred-register: '' }
346   - { id: 1, class: _, preferred-register: '' }
347 body:             |
348   bb.1 (%ir-block.0):
349     liveins: $edi
351     ; X32-LABEL: name: test_sext_i1toi16
352     ; X32: liveins: $edi
353     ; X32-NEXT: {{  $}}
354     ; X32-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
355     ; X32-NEXT: $ax = COPY [[C]](s16)
356     ; X32-NEXT: RET 0, implicit $ax
357     ;
358     ; X64-LABEL: name: test_sext_i1toi16
359     ; X64: liveins: $edi
360     ; X64-NEXT: {{  $}}
361     ; X64-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 0
362     ; X64-NEXT: $ax = COPY [[C]](s16)
363     ; X64-NEXT: RET 0, implicit $ax
364     %0(s1) = G_IMPLICIT_DEF
365     %1(s16) = G_SEXT %0(s1)
366     $ax = COPY %1(s16)
367     RET 0, implicit $ax
371 name:            test_sext_i1
372 alignment:       16
373 legalized:       false
374 regBankSelected: false
375 registers:
376   - { id: 0, class: _ }
377   - { id: 1, class: _ }
378   - { id: 2, class: _ }
379 body:             |
380   bb.1 (%ir-block.0):
381     liveins: $edi
383     ; X32-LABEL: name: test_sext_i1
384     ; X32: liveins: $edi
385     ; X32-NEXT: {{  $}}
386     ; X32-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
387     ; X32-NEXT: $eax = COPY [[C]](s32)
388     ; X32-NEXT: RET 0, implicit $eax
389     ;
390     ; X64-LABEL: name: test_sext_i1
391     ; X64: liveins: $edi
392     ; X64-NEXT: {{  $}}
393     ; X64-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0
394     ; X64-NEXT: $eax = COPY [[C]](s32)
395     ; X64-NEXT: RET 0, implicit $eax
396     %0(s1) = G_IMPLICIT_DEF
397     %2(s32) = G_SEXT %0(s1)
398     $eax = COPY %2(s32)
399     RET 0, implicit $eax
403 name:            test_sext_i8toi16
404 alignment:       16
405 legalized:       false
406 regBankSelected: false
407 registers:
408   - { id: 0, class: _, preferred-register: '' }
409   - { id: 1, class: _, preferred-register: '' }
410 body:             |
411   bb.1 (%ir-block.0):
412     liveins: $edi
414     ; X32-LABEL: name: test_sext_i8toi16
415     ; X32: liveins: $edi
416     ; X32-NEXT: {{  $}}
417     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
418     ; X32-NEXT: [[SEXT:%[0-9]+]]:_(s16) = G_SEXT [[COPY]](s8)
419     ; X32-NEXT: $ax = COPY [[SEXT]](s16)
420     ; X32-NEXT: RET 0, implicit $ax
421     ;
422     ; X64-LABEL: name: test_sext_i8toi16
423     ; X64: liveins: $edi
424     ; X64-NEXT: {{  $}}
425     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
426     ; X64-NEXT: [[SEXT:%[0-9]+]]:_(s16) = G_SEXT [[COPY]](s8)
427     ; X64-NEXT: $ax = COPY [[SEXT]](s16)
428     ; X64-NEXT: RET 0, implicit $ax
429     %0(s8) = COPY $dil
430     %1(s16) = G_SEXT %0(s8)
431     $ax = COPY %1(s16)
432     RET 0, implicit $ax
436 name:            test_sext_i8
437 alignment:       16
438 legalized:       false
439 regBankSelected: false
440 registers:
441   - { id: 0, class: _ }
442   - { id: 1, class: _ }
443 body:             |
444   bb.1 (%ir-block.0):
445     liveins: $edi
447     ; X32-LABEL: name: test_sext_i8
448     ; X32: liveins: $edi
449     ; X32-NEXT: {{  $}}
450     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
451     ; X32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s8)
452     ; X32-NEXT: $eax = COPY [[SEXT]](s32)
453     ; X32-NEXT: RET 0, implicit $eax
454     ;
455     ; X64-LABEL: name: test_sext_i8
456     ; X64: liveins: $edi
457     ; X64-NEXT: {{  $}}
458     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
459     ; X64-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s8)
460     ; X64-NEXT: $eax = COPY [[SEXT]](s32)
461     ; X64-NEXT: RET 0, implicit $eax
462     %0(s8) = COPY $dil
463     %1(s32) = G_SEXT %0(s8)
464     $eax = COPY %1(s32)
465     RET 0, implicit $eax
469 name:            test_sext_i16
470 alignment:       16
471 legalized:       false
472 regBankSelected: false
473 registers:
474   - { id: 0, class: _ }
475   - { id: 1, class: _ }
476 body:             |
477   bb.1 (%ir-block.0):
478     liveins: $edi
480     ; X32-LABEL: name: test_sext_i16
481     ; X32: liveins: $edi
482     ; X32-NEXT: {{  $}}
483     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
484     ; X32-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s16)
485     ; X32-NEXT: $eax = COPY [[SEXT]](s32)
486     ; X32-NEXT: RET 0, implicit $eax
487     ;
488     ; X64-LABEL: name: test_sext_i16
489     ; X64: liveins: $edi
490     ; X64-NEXT: {{  $}}
491     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
492     ; X64-NEXT: [[SEXT:%[0-9]+]]:_(s32) = G_SEXT [[COPY]](s16)
493     ; X64-NEXT: $eax = COPY [[SEXT]](s32)
494     ; X64-NEXT: RET 0, implicit $eax
495     %0(s16) = COPY $di
496     %1(s32) = G_SEXT %0(s16)
497     $eax = COPY %1(s32)
498     RET 0, implicit $eax
502 name:            test_anyext_i1toi8
503 alignment:       16
504 legalized:       false
505 regBankSelected: false
506 registers:
507   - { id: 0, class: _, preferred-register: '' }
508   - { id: 1, class: _, preferred-register: '' }
509   - { id: 2, class: _, preferred-register: '' }
510 body:             |
511   bb.1 (%ir-block.0):
512     liveins: $edi
514     ; X32-LABEL: name: test_anyext_i1toi8
515     ; X32: liveins: $edi
516     ; X32-NEXT: {{  $}}
517     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
518     ; X32-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
519     ; X32-NEXT: $al = COPY [[TRUNC]](s8)
520     ; X32-NEXT: RET 0, implicit $al
521     ;
522     ; X64-LABEL: name: test_anyext_i1toi8
523     ; X64: liveins: $edi
524     ; X64-NEXT: {{  $}}
525     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
526     ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[COPY]](s32)
527     ; X64-NEXT: $al = COPY [[TRUNC]](s8)
528     ; X64-NEXT: RET 0, implicit $al
529     %0(s32) = COPY $edi
530     %1(s1) = G_TRUNC %0(s32)
531     %2(s8) = G_ANYEXT %1(s1)
532     $al = COPY %2(s8)
533     RET 0, implicit $al
537 name:            test_anyext_i1toi16
538 alignment:       16
539 legalized:       false
540 regBankSelected: false
541 registers:
542   - { id: 0, class: _, preferred-register: '' }
543   - { id: 1, class: _, preferred-register: '' }
544   - { id: 2, class: _, preferred-register: '' }
545 body:             |
546   bb.1 (%ir-block.0):
547     liveins: $edi
549     ; X32-LABEL: name: test_anyext_i1toi16
550     ; X32: liveins: $edi
551     ; X32-NEXT: {{  $}}
552     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
553     ; X32-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
554     ; X32-NEXT: $ax = COPY [[TRUNC]](s16)
555     ; X32-NEXT: RET 0, implicit $ax
556     ;
557     ; X64-LABEL: name: test_anyext_i1toi16
558     ; X64: liveins: $edi
559     ; X64-NEXT: {{  $}}
560     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
561     ; X64-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)
562     ; X64-NEXT: $ax = COPY [[TRUNC]](s16)
563     ; X64-NEXT: RET 0, implicit $ax
564     %0(s32) = COPY $edi
565     %1(s1) = G_TRUNC %0(s32)
566     %2(s16) = G_ANYEXT %1(s1)
567     $ax = COPY %2(s16)
568     RET 0, implicit $ax
572 name:            test_anyext_i1
573 alignment:       16
574 legalized:       false
575 regBankSelected: false
576 registers:
577   - { id: 0, class: _ }
578   - { id: 1, class: _ }
579   - { id: 2, class: _ }
580 body:             |
581   bb.1 (%ir-block.0):
582     liveins: $edi
584     ; X32-LABEL: name: test_anyext_i1
585     ; X32: liveins: $edi
586     ; X32-NEXT: {{  $}}
587     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
588     ; X32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
589     ; X32-NEXT: $eax = COPY [[ANYEXT]](s32)
590     ; X32-NEXT: RET 0, implicit $eax
591     ;
592     ; X64-LABEL: name: test_anyext_i1
593     ; X64: liveins: $edi
594     ; X64-NEXT: {{  $}}
595     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
596     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
597     ; X64-NEXT: $eax = COPY [[ANYEXT]](s32)
598     ; X64-NEXT: RET 0, implicit $eax
599     %0(s8) = COPY $dil
600     %1(s1) = G_TRUNC %0(s8)
601     %2(s32) = G_ANYEXT %1(s1)
602     $eax = COPY %2(s32)
603     RET 0, implicit $eax
607 name:            test_anyext_i8toi16
608 alignment:       16
609 legalized:       false
610 regBankSelected: false
611 registers:
612   - { id: 0, class: _, preferred-register: '' }
613   - { id: 1, class: _, preferred-register: '' }
614 body:             |
615   bb.1 (%ir-block.0):
616     liveins: $edi
618     ; X32-LABEL: name: test_anyext_i8toi16
619     ; X32: liveins: $edi
620     ; X32-NEXT: {{  $}}
621     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
622     ; X32-NEXT: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[COPY]](s8)
623     ; X32-NEXT: $ax = COPY [[ANYEXT]](s16)
624     ; X32-NEXT: RET 0, implicit $ax
625     ;
626     ; X64-LABEL: name: test_anyext_i8toi16
627     ; X64: liveins: $edi
628     ; X64-NEXT: {{  $}}
629     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
630     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s16) = G_ANYEXT [[COPY]](s8)
631     ; X64-NEXT: $ax = COPY [[ANYEXT]](s16)
632     ; X64-NEXT: RET 0, implicit $ax
633     %0(s8) = COPY $dil
634     %1(s16) = G_ANYEXT %0(s8)
635     $ax = COPY %1(s16)
636     RET 0, implicit $ax
640 name:            test_anyext_i8
641 alignment:       16
642 legalized:       false
643 regBankSelected: false
644 registers:
645   - { id: 0, class: _ }
646   - { id: 1, class: _ }
647 body:             |
648   bb.1 (%ir-block.0):
649     liveins: $edi
651     ; X32-LABEL: name: test_anyext_i8
652     ; X32: liveins: $edi
653     ; X32-NEXT: {{  $}}
654     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
655     ; X32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
656     ; X32-NEXT: $eax = COPY [[ANYEXT]](s32)
657     ; X32-NEXT: RET 0, implicit $eax
658     ;
659     ; X64-LABEL: name: test_anyext_i8
660     ; X64: liveins: $edi
661     ; X64-NEXT: {{  $}}
662     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
663     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s8)
664     ; X64-NEXT: $eax = COPY [[ANYEXT]](s32)
665     ; X64-NEXT: RET 0, implicit $eax
666     %0(s8) = COPY $dil
667     %1(s32) = G_ANYEXT %0(s8)
668     $eax = COPY %1(s32)
669     RET 0, implicit $eax
673 name:            test_anyext_i16
674 alignment:       16
675 legalized:       false
676 regBankSelected: false
677 registers:
678   - { id: 0, class: _ }
679   - { id: 1, class: _ }
680 body:             |
681   bb.1 (%ir-block.0):
682     liveins: $edi
684     ; X32-LABEL: name: test_anyext_i16
685     ; X32: liveins: $edi
686     ; X32-NEXT: {{  $}}
687     ; X32-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
688     ; X32-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s16)
689     ; X32-NEXT: $eax = COPY [[ANYEXT]](s32)
690     ; X32-NEXT: RET 0, implicit $eax
691     ;
692     ; X64-LABEL: name: test_anyext_i16
693     ; X64: liveins: $edi
694     ; X64-NEXT: {{  $}}
695     ; X64-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
696     ; X64-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[COPY]](s16)
697     ; X64-NEXT: $eax = COPY [[ANYEXT]](s32)
698     ; X64-NEXT: RET 0, implicit $eax
699     %0(s16) = COPY $di
700     %1(s32) = G_ANYEXT %0(s16)
701     $eax = COPY %1(s32)
702     RET 0, implicit $eax