Revert "[lldb][test] Remove compiler version check and use regex" (#124101)
[llvm-project.git] / llvm / test / CodeGen / X86 / GlobalISel / legalize-ext-x86-64.mir
blob1ea2da9757f1adb055440e5475331f769d091c8d
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=x86_64-linux-gnu -run-pass=legalizer %s -o - | FileCheck %s
4 --- |
5   define i64 @test_sext_i1(i8 %a) {
6     %val = trunc i8 %a to i1
7     %r = sext i1 %val to i64
8     ret i64 %r
9   }
11   define i64 @test_sext_i8(i8 %val) {
12     %r = sext i8 %val to i64
13     ret i64 %r
14   }
16   define i64 @test_sext_i16(i16 %val) {
17     %r = sext i16 %val to i64
18     ret i64 %r
19   }
21   define i64 @test_sext_i32(i32 %val) {
22     %r = sext i32 %val to i64
23     ret i64 %r
24   }
26   define i64 @test_zext_i1(i8 %a) {
27     %val = trunc i8 %a to i1
28     %r = zext i1 %val to i64
29     ret i64 %r
30   }
32   define i64 @test_zext_i8(i8 %val) {
33     %r = zext i8 %val to i64
34     ret i64 %r
35   }
37   define i64 @test_zext_i16(i16 %val) {
38     %r = zext i16 %val to i64
39     ret i64 %r
40   }
42   define i64 @test_zext_i32(i32 %val) {
43     %r = zext i32 %val to i64
44     ret i64 %r
45   }
47   define void @test_anyext_i1(i8 %a) {
48     ret void
49   }
51   define void @test_anyext_i8(i8 %val) {
52     ret void
53   }
55   define void @test_anyext_i16(i16 %val) {
56     ret void
57   }
59   define void @test_anyext_i32(i32 %val) {
60     ret void
61   }
64 ...
65 ---
66 name:            test_sext_i1
67 alignment:       16
68 legalized:       false
69 regBankSelected: false
70 registers:
71   - { id: 0, class: _ }
72   - { id: 1, class: _ }
73   - { id: 2, class: _ }
74 body:             |
75   bb.1 (%ir-block.0):
76     liveins: $edi
78     ; CHECK-LABEL: name: test_sext_i1
79     ; CHECK: liveins: $edi
80     ; CHECK-NEXT: {{  $}}
81     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
82     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)
83     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 63
84     ; CHECK-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ANYEXT]], [[C]](s8)
85     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s8) = COPY [[C]](s8)
86     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:_(s64) = G_ASHR [[SHL]], [[COPY1]](s8)
87     ; CHECK-NEXT: $rax = COPY [[ASHR]](s64)
88     ; CHECK-NEXT: RET 0, implicit $rax
89     %0(s8) = COPY $dil
90     %1(s1) = G_TRUNC %0(s8)
91     %2(s64) = G_SEXT %1(s1)
92     $rax = COPY %2(s64)
93     RET 0, implicit $rax
95 ...
96 ---
97 name:            test_sext_i8
98 alignment:       16
99 legalized:       false
100 regBankSelected: false
101 registers:
102   - { id: 0, class: _ }
103   - { id: 1, class: _ }
104 body:             |
105   bb.1 (%ir-block.0):
106     liveins: $edi
108     ; CHECK-LABEL: name: test_sext_i8
109     ; CHECK: liveins: $edi
110     ; CHECK-NEXT: {{  $}}
111     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
112     ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s8)
113     ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)
114     ; CHECK-NEXT: RET 0, implicit $rax
115     %0(s8) = COPY $dil
116     %1(s64) = G_SEXT %0(s8)
117     $rax = COPY %1(s64)
118     RET 0, implicit $rax
122 name:            test_sext_i16
123 alignment:       16
124 legalized:       false
125 regBankSelected: false
126 registers:
127   - { id: 0, class: _ }
128   - { id: 1, class: _ }
129 body:             |
130   bb.1 (%ir-block.0):
131     liveins: $edi
133     ; CHECK-LABEL: name: test_sext_i16
134     ; CHECK: liveins: $edi
135     ; CHECK-NEXT: {{  $}}
136     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
137     ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s16)
138     ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)
139     ; CHECK-NEXT: RET 0, implicit $rax
140     %0(s16) = COPY $di
141     %1(s64) = G_SEXT %0(s16)
142     $rax = COPY %1(s64)
143     RET 0, implicit $rax
147 name:            test_sext_i32
148 alignment:       16
149 legalized:       false
150 regBankSelected: false
151 registers:
152   - { id: 0, class: _ }
153   - { id: 1, class: _ }
154 body:             |
155   bb.1 (%ir-block.0):
156     liveins: $edi
158     ; CHECK-LABEL: name: test_sext_i32
159     ; CHECK: liveins: $edi
160     ; CHECK-NEXT: {{  $}}
161     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
162     ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[COPY]](s32)
163     ; CHECK-NEXT: $rax = COPY [[SEXT]](s64)
164     ; CHECK-NEXT: RET 0, implicit $rax
165     %0(s32) = COPY $edi
166     %1(s64) = G_SEXT %0(s32)
167     $rax = COPY %1(s64)
168     RET 0, implicit $rax
172 name:            test_zext_i1
173 alignment:       16
174 legalized:       false
175 regBankSelected: false
176 registers:
177   - { id: 0, class: _ }
178   - { id: 1, class: _ }
179   - { id: 2, class: _ }
180 body:             |
181   bb.1 (%ir-block.0):
182     liveins: $edi
184     ; CHECK-LABEL: name: test_zext_i1
185     ; CHECK: liveins: $edi
186     ; CHECK-NEXT: {{  $}}
187     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
188     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)
189     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1
190     ; CHECK-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C]]
191     ; CHECK-NEXT: $rax = COPY [[AND]](s64)
192     ; CHECK-NEXT: RET 0, implicit $rax
193     %0(s8) = COPY $dil
194     %1(s1) = G_TRUNC %0(s8)
195     %2(s64) = G_ZEXT %1(s1)
196     $rax = COPY %2(s64)
197     RET 0, implicit $rax
201 name:            test_zext_i8
202 alignment:       16
203 legalized:       false
204 regBankSelected: false
205 registers:
206   - { id: 0, class: _ }
207   - { id: 1, class: _ }
208 body:             |
209   bb.1 (%ir-block.0):
210     liveins: $edi
212     ; CHECK-LABEL: name: test_zext_i8
213     ; CHECK: liveins: $edi
214     ; CHECK-NEXT: {{  $}}
215     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
216     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s8)
217     ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)
218     ; CHECK-NEXT: RET 0, implicit $rax
219     %0(s8) = COPY $dil
220     %1(s64) = G_ZEXT %0(s8)
221     $rax = COPY %1(s64)
222     RET 0, implicit $rax
226 name:            test_zext_i16
227 alignment:       16
228 legalized:       false
229 regBankSelected: false
230 registers:
231   - { id: 0, class: _ }
232   - { id: 1, class: _ }
233 body:             |
234   bb.1 (%ir-block.0):
235     liveins: $edi
237     ; CHECK-LABEL: name: test_zext_i16
238     ; CHECK: liveins: $edi
239     ; CHECK-NEXT: {{  $}}
240     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
241     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s16)
242     ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)
243     ; CHECK-NEXT: RET 0, implicit $rax
244     %0(s16) = COPY $di
245     %1(s64) = G_ZEXT %0(s16)
246     $rax = COPY %1(s64)
247     RET 0, implicit $rax
251 name:            test_zext_i32
252 alignment:       16
253 legalized:       false
254 regBankSelected: false
255 registers:
256   - { id: 0, class: _ }
257   - { id: 1, class: _ }
258 body:             |
259   bb.1 (%ir-block.0):
260     liveins: $edi
262     ; CHECK-LABEL: name: test_zext_i32
263     ; CHECK: liveins: $edi
264     ; CHECK-NEXT: {{  $}}
265     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
266     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY]](s32)
267     ; CHECK-NEXT: $rax = COPY [[ZEXT]](s64)
268     ; CHECK-NEXT: RET 0, implicit $rax
269     %0(s32) = COPY $edi
270     %1(s64) = G_ZEXT %0(s32)
271     $rax = COPY %1(s64)
272     RET 0, implicit $rax
276 name:            test_anyext_i1
277 alignment:       16
278 legalized:       false
279 regBankSelected: false
280 registers:
281   - { id: 0, class: _ }
282   - { id: 1, class: _ }
283   - { id: 2, class: _ }
284 body:             |
285   bb.1 (%ir-block.0):
286     liveins: $edi
288     ; CHECK-LABEL: name: test_anyext_i1
289     ; CHECK: liveins: $edi
290     ; CHECK-NEXT: {{  $}}
291     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
292     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)
293     ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)
294     ; CHECK-NEXT: RET 0, implicit $rax
295     %0(s8) = COPY $dil
296     %1(s1) = G_TRUNC %0(s8)
297     %2(s64) = G_ANYEXT %1(s1)
298     $rax = COPY %2(s64)
299     RET 0, implicit $rax
303 name:            test_anyext_i8
304 alignment:       16
305 legalized:       false
306 regBankSelected: false
307 registers:
308   - { id: 0, class: _ }
309   - { id: 1, class: _ }
310 body:             |
311   bb.1 (%ir-block.0):
312     liveins: $edi
314     ; CHECK-LABEL: name: test_anyext_i8
315     ; CHECK: liveins: $edi
316     ; CHECK-NEXT: {{  $}}
317     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s8) = COPY $dil
318     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s8)
319     ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)
320     ; CHECK-NEXT: RET 0, implicit $rax
321     %0(s8) = COPY $dil
322     %1(s64) = G_ANYEXT %0(s8)
323     $rax = COPY %1(s64)
324     RET 0, implicit $rax
328 name:            test_anyext_i16
329 alignment:       16
330 legalized:       false
331 regBankSelected: false
332 registers:
333   - { id: 0, class: _ }
334   - { id: 1, class: _ }
335 body:             |
336   bb.1 (%ir-block.0):
337     liveins: $edi
339     ; CHECK-LABEL: name: test_anyext_i16
340     ; CHECK: liveins: $edi
341     ; CHECK-NEXT: {{  $}}
342     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s16) = COPY $di
343     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s16)
344     ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)
345     ; CHECK-NEXT: RET 0, implicit $rax
346     %0(s16) = COPY $di
347     %1(s64) = G_ANYEXT %0(s16)
348     $rax = COPY %1(s64)
349     RET 0, implicit $rax
353 name:            test_anyext_i32
354 alignment:       16
355 legalized:       false
356 regBankSelected: false
357 registers:
358   - { id: 0, class: _ }
359   - { id: 1, class: _ }
360 body:             |
361   bb.1 (%ir-block.0):
362     liveins: $edi
364     ; CHECK-LABEL: name: test_anyext_i32
365     ; CHECK: liveins: $edi
366     ; CHECK-NEXT: {{  $}}
367     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $edi
368     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY]](s32)
369     ; CHECK-NEXT: $rax = COPY [[ANYEXT]](s64)
370     ; CHECK-NEXT: RET 0, implicit $rax
371     %0(s32) = COPY $edi
372     %1(s64) = G_ANYEXT %0(s32)
373     $rax = COPY %1(s64)
374     RET 0, implicit $rax