Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / prelegalizercombiner-extending-loads.mir
blob47c85f7678593533abc2ddc9c64aaf2639d8e054
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64 -O0 -run-pass=aarch64-prelegalizer-combiner -global-isel -verify-machineinstrs %s -o - | FileCheck %s
3 ---
4 name:            test_anyext
5 body: |
6   bb.0:
7     liveins: $x0
8     ; CHECK-LABEL: name: test_anyext
9     ; CHECK: liveins: $x0
10     ; CHECK-NEXT: {{  $}}
11     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
12     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
13     ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
14     %0:_(p0) = COPY $x0
15     %1:_(s8) = G_LOAD %0 :: (load (s8))
16     %2:_(s32) = G_ANYEXT %1
17     $w0 = COPY %2
18 ...
20 ---
21 name:            test_anyext_with_copy
22 body: |
23   bb.0:
24     liveins: $x0
25     ; CHECK-LABEL: name: test_anyext_with_copy
26     ; CHECK: liveins: $x0
27     ; CHECK-NEXT: {{  $}}
28     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
29     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
30     ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
31     %0:_(p0) = COPY $x0
32     %1:_(s8) = G_LOAD %0 :: (load (s8))
33     %2:_(s8) = COPY %1
34     %3:_(s32) = G_ANYEXT %1
35     $w0 = COPY %3
36 ...
38 ---
39 name:            test_signext
40 body: |
41   bb.0:
42     liveins: $x0
43     ; CHECK-LABEL: name: test_signext
44     ; CHECK: liveins: $x0
45     ; CHECK-NEXT: {{  $}}
46     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
47     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
48     ; CHECK-NEXT: $w0 = COPY [[SEXTLOAD]](s32)
49     %0:_(p0) = COPY $x0
50     %1:_(s8) = G_LOAD %0 :: (load (s8))
51     %2:_(s32) = G_SEXT %1
52     $w0 = COPY %2
53 ...
55 ---
56 name:            test_zeroext
57 body: |
58   bb.0:
59     liveins: $x0
60     ; CHECK-LABEL: name: test_zeroext
61     ; CHECK: liveins: $x0
62     ; CHECK-NEXT: {{  $}}
63     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
64     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
65     ; CHECK-NEXT: $w0 = COPY [[ZEXTLOAD]](s32)
66     %0:_(p0) = COPY $x0
67     %1:_(s8) = G_LOAD %0 :: (load (s8))
68     %2:_(s32) = G_ZEXT %1
69     $w0 = COPY %2
70 ...
72 ---
73 name:            test_2anyext
74 body: |
75   bb.0:
76     liveins: $x0
77     ; CHECK-LABEL: name: test_2anyext
78     ; CHECK: liveins: $x0
79     ; CHECK-NEXT: {{  $}}
80     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
81     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
82     ; CHECK-NEXT: $w0 = COPY [[LOAD]](s32)
83     ; CHECK-NEXT: $w1 = COPY [[LOAD]](s32)
84     %0:_(p0) = COPY $x0
85     %1:_(s8) = G_LOAD %0 :: (load (s8))
86     %2:_(s32) = G_ANYEXT %1
87     %3:_(s32) = G_ANYEXT %1
88     $w0 = COPY %2
89     $w1 = COPY %3
90 ...
92 ---
93 name:            test_1anyext_1signext
94 body: |
95   bb.0:
96     liveins: $x0
97     ; CHECK-LABEL: name: test_1anyext_1signext
98     ; CHECK: liveins: $x0
99     ; CHECK-NEXT: {{  $}}
100     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
101     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
102     ; CHECK-NEXT: $w0 = COPY [[SEXTLOAD]](s32)
103     ; CHECK-NEXT: $w1 = COPY [[SEXTLOAD]](s32)
104     %0:_(p0) = COPY $x0
105     %1:_(s8) = G_LOAD %0 :: (load (s8))
106     %2:_(s32) = G_ANYEXT %1
107     %3:_(s32) = G_SEXT %1
108     $w0 = COPY %2
109     $w1 = COPY %3
113 name:            test_1xor_1signext
114 body: |
115   bb.0:
116     liveins: $x0
117     ; CHECK-LABEL: name: test_1xor_1signext
118     ; CHECK: liveins: $x0
119     ; CHECK-NEXT: {{  $}}
120     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
121     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
122     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s32)
123     ; CHECK-NEXT: [[C:%[0-9]+]]:_(s8) = G_CONSTANT i8 -1
124     ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(s8) = G_XOR [[TRUNC]], [[C]]
125     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[XOR]](s8)
126     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
127     ; CHECK-NEXT: $w1 = COPY [[SEXTLOAD]](s32)
128     %0:_(p0) = COPY $x0
129     %1:_(s8) = G_LOAD %0 :: (load (s8))
130     %2:_(s8) = G_CONSTANT i8 -1
131     %3:_(s8) = G_XOR %1, %2
132     %5:_(s32) = G_ANYEXT %3
133     %6:_(s32) = G_SEXT %1
134     $w0 = COPY %5
135     $w1 = COPY %6
139 name:            test_1anyext_1zeroext
140 body: |
141   bb.0:
142     liveins: $x0
143     ; CHECK-LABEL: name: test_1anyext_1zeroext
144     ; CHECK: liveins: $x0
145     ; CHECK-NEXT: {{  $}}
146     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
147     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
148     ; CHECK-NEXT: $w0 = COPY [[ZEXTLOAD]](s32)
149     ; CHECK-NEXT: $w1 = COPY [[ZEXTLOAD]](s32)
150     %0:_(p0) = COPY $x0
151     %1:_(s8) = G_LOAD %0 :: (load (s8))
152     %2:_(s32) = G_ANYEXT %1
153     %3:_(s32) = G_ZEXT %1
154     $w0 = COPY %2
155     $w1 = COPY %3
159 name:            test_1signext_1zeroext
160 body: |
161   bb.0:
162     liveins: $x0
163     ; CHECK-LABEL: name: test_1signext_1zeroext
164     ; CHECK: liveins: $x0
165     ; CHECK-NEXT: {{  $}}
166     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
167     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
168     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s32)
169     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[TRUNC]](s8)
170     ; CHECK-NEXT: $w0 = COPY [[ZEXT]](s32)
171     ; CHECK-NEXT: $w1 = COPY [[SEXTLOAD]](s32)
172     %0:_(p0) = COPY $x0
173     %1:_(s8) = G_LOAD %0 :: (load (s8))
174     %2:_(s32) = G_ZEXT %1
175     %3:_(s32) = G_SEXT %1
176     $w0 = COPY %2
177     $w1 = COPY %3
181 name:            test_1anyext64_1signext32
182 body: |
183   bb.0:
184     liveins: $x0
185     ; CHECK-LABEL: name: test_1anyext64_1signext32
186     ; CHECK: liveins: $x0
187     ; CHECK-NEXT: {{  $}}
188     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
189     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
190     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SEXTLOAD]](s32)
191     ; CHECK-NEXT: $x0 = COPY [[ANYEXT]](s64)
192     ; CHECK-NEXT: $w1 = COPY [[SEXTLOAD]](s32)
193     %0:_(p0) = COPY $x0
194     %1:_(s8) = G_LOAD %0 :: (load (s8))
195     %2:_(s64) = G_ANYEXT %1
196     %3:_(s32) = G_SEXT %1
197     $x0 = COPY %2
198     $w1 = COPY %3
202 name:            test_1anyext32_1signext64
203 body: |
204   bb.0:
205     liveins: $x0
206     ; CHECK-LABEL: name: test_1anyext32_1signext64
207     ; CHECK: liveins: $x0
208     ; CHECK-NEXT: {{  $}}
209     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
210     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
211     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s64)
212     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
213     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
214     ; CHECK-NEXT: $x1 = COPY [[SEXTLOAD]](s64)
215     %0:_(p0) = COPY $x0
216     %1:_(s8) = G_LOAD %0 :: (load (s8))
217     %2:_(s32) = G_ANYEXT %1
218     %3:_(s64) = G_SEXT %1
219     $w0 = COPY %2
220     $x1 = COPY %3
224 name:            test_2anyext32_1signext64
225 body: |
226   bb.0:
227     liveins: $x0
228     ; CHECK-LABEL: name: test_2anyext32_1signext64
229     ; CHECK: liveins: $x0
230     ; CHECK-NEXT: {{  $}}
231     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
232     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
233     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s64)
234     ; CHECK-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
235     ; CHECK-NEXT: [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
236     ; CHECK-NEXT: $w0 = COPY [[ANYEXT]](s32)
237     ; CHECK-NEXT: $x1 = COPY [[SEXTLOAD]](s64)
238     ; CHECK-NEXT: $w2 = COPY [[ANYEXT1]](s32)
239     %0:_(p0) = COPY $x0
240     %1:_(s8) = G_LOAD %0 :: (load (s8))
241     %2:_(s32) = G_ANYEXT %1
242     %3:_(s64) = G_SEXT %1
243     %4:_(s32) = G_ANYEXT %1
244     $w0 = COPY %2
245     $x1 = COPY %3
246     $w2 = COPY %4
250 name:            test_multiblock_anyext
251 body: |
252   ; CHECK-LABEL: name: test_multiblock_anyext
253   ; CHECK: bb.0:
254   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
255   ; CHECK-NEXT:   liveins: $x0
256   ; CHECK-NEXT: {{  $}}
257   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
258   ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
259   ; CHECK-NEXT:   G_BR %bb.1
260   ; CHECK-NEXT: {{  $}}
261   ; CHECK-NEXT: bb.1:
262   ; CHECK-NEXT:   $w0 = COPY [[LOAD]](s32)
263   bb.0:
264     liveins: $x0
265     %0:_(p0) = COPY $x0
266     %1:_(s8) = G_LOAD %0 :: (load (s8))
267     G_BR %bb.1
268   bb.1:
269     %2:_(s32) = G_ANYEXT %1
270     $w0 = COPY %2
274 name:            test_multiblock_signext
275 body: |
276   ; CHECK-LABEL: name: test_multiblock_signext
277   ; CHECK: bb.0:
278   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
279   ; CHECK-NEXT:   liveins: $x0
280   ; CHECK-NEXT: {{  $}}
281   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
282   ; CHECK-NEXT:   [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
283   ; CHECK-NEXT:   G_BR %bb.1
284   ; CHECK-NEXT: {{  $}}
285   ; CHECK-NEXT: bb.1:
286   ; CHECK-NEXT:   $w0 = COPY [[SEXTLOAD]](s32)
287   bb.0:
288     liveins: $x0
289     %0:_(p0) = COPY $x0
290     %1:_(s8) = G_LOAD %0 :: (load (s8))
291     G_BR %bb.1
292   bb.1:
293     %2:_(s32) = G_SEXT %1
294     $w0 = COPY %2
298 name:            test_multiblock_zeroext
299 body: |
300   ; CHECK-LABEL: name: test_multiblock_zeroext
301   ; CHECK: bb.0:
302   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
303   ; CHECK-NEXT:   liveins: $x0
304   ; CHECK-NEXT: {{  $}}
305   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
306   ; CHECK-NEXT:   [[ZEXTLOAD:%[0-9]+]]:_(s32) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
307   ; CHECK-NEXT:   G_BR %bb.1
308   ; CHECK-NEXT: {{  $}}
309   ; CHECK-NEXT: bb.1:
310   ; CHECK-NEXT:   $w0 = COPY [[ZEXTLOAD]](s32)
311   bb.0:
312     liveins: $x0
313     %0:_(p0) = COPY $x0
314     %1:_(s8) = G_LOAD %0 :: (load (s8))
315     G_BR %bb.1
316   bb.1:
317     %2:_(s32) = G_ZEXT %1
318     $w0 = COPY %2
322 name:            test_multiblock_2anyext
323 body: |
324   ; CHECK-LABEL: name: test_multiblock_2anyext
325   ; CHECK: bb.0:
326   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
327   ; CHECK-NEXT:   liveins: $x0
328   ; CHECK-NEXT: {{  $}}
329   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
330   ; CHECK-NEXT:   [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s8))
331   ; CHECK-NEXT:   G_BR %bb.1
332   ; CHECK-NEXT: {{  $}}
333   ; CHECK-NEXT: bb.1:
334   ; CHECK-NEXT:   $w0 = COPY [[LOAD]](s32)
335   ; CHECK-NEXT:   $w1 = COPY [[LOAD]](s32)
336   bb.0:
337     liveins: $x0
338     %0:_(p0) = COPY $x0
339     %1:_(s8) = G_LOAD %0 :: (load (s8))
340     %2:_(s32) = G_ANYEXT %1
341     G_BR %bb.1
342   bb.1:
343     %3:_(s32) = G_ANYEXT %1
344     $w0 = COPY %2
345     $w1 = COPY %3
349 name:            test_multiblock_1anyext64_1signext32
350 body: |
351   ; CHECK-LABEL: name: test_multiblock_1anyext64_1signext32
352   ; CHECK: bb.0:
353   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
354   ; CHECK-NEXT:   liveins: $x0
355   ; CHECK-NEXT: {{  $}}
356   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
357   ; CHECK-NEXT:   [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
358   ; CHECK-NEXT:   G_BR %bb.1
359   ; CHECK-NEXT: {{  $}}
360   ; CHECK-NEXT: bb.1:
361   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[SEXTLOAD]](s32)
362   ; CHECK-NEXT:   $x0 = COPY [[ANYEXT]](s64)
363   ; CHECK-NEXT:   $w1 = COPY [[SEXTLOAD]](s32)
364   bb.0:
365     liveins: $x0
366     %0:_(p0) = COPY $x0
367     %1:_(s8) = G_LOAD %0 :: (load (s8))
368     G_BR %bb.1
369   bb.1:
370     %2:_(s64) = G_ANYEXT %1
371     %3:_(s32) = G_SEXT %1
372     $x0 = COPY %2
373     $w1 = COPY %3
377 name:            test_multiblock_1anyext32_1signext64
378 body: |
379   ; CHECK-LABEL: name: test_multiblock_1anyext32_1signext64
380   ; CHECK: bb.0:
381   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
382   ; CHECK-NEXT:   liveins: $x0
383   ; CHECK-NEXT: {{  $}}
384   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
385   ; CHECK-NEXT:   [[SEXTLOAD:%[0-9]+]]:_(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
386   ; CHECK-NEXT:   G_BR %bb.1
387   ; CHECK-NEXT: {{  $}}
388   ; CHECK-NEXT: bb.1:
389   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s64)
390   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
391   ; CHECK-NEXT:   $w0 = COPY [[ANYEXT]](s32)
392   ; CHECK-NEXT:   $x1 = COPY [[SEXTLOAD]](s64)
393   bb.0:
394     liveins: $x0
395     %0:_(p0) = COPY $x0
396     %1:_(s8) = G_LOAD %0 :: (load (s8))
397     G_BR %bb.1
398   bb.1:
399     %2:_(s32) = G_ANYEXT %1
400     %3:_(s64) = G_SEXT %1
401     $w0 = COPY %2
402     $x1 = COPY %3
406 name:            test_multiblock_2anyext32_1signext64
407 body: |
408   ; CHECK-LABEL: name: test_multiblock_2anyext32_1signext64
409   ; CHECK: bb.0:
410   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
411   ; CHECK-NEXT:   liveins: $x0
412   ; CHECK-NEXT: {{  $}}
413   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(p0) = COPY $x0
414   ; CHECK-NEXT:   [[SEXTLOAD:%[0-9]+]]:_(s64) = G_SEXTLOAD [[COPY]](p0) :: (load (s8))
415   ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s64)
416   ; CHECK-NEXT:   [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC]](s8)
417   ; CHECK-NEXT:   G_BR %bb.1
418   ; CHECK-NEXT: {{  $}}
419   ; CHECK-NEXT: bb.1:
420   ; CHECK-NEXT:   [[TRUNC1:%[0-9]+]]:_(s8) = G_TRUNC [[SEXTLOAD]](s64)
421   ; CHECK-NEXT:   [[ANYEXT1:%[0-9]+]]:_(s32) = G_ANYEXT [[TRUNC1]](s8)
422   ; CHECK-NEXT:   $w0 = COPY [[ANYEXT1]](s32)
423   ; CHECK-NEXT:   $x1 = COPY [[SEXTLOAD]](s64)
424   ; CHECK-NEXT:   $w2 = COPY [[ANYEXT]](s32)
425   bb.0:
426     liveins: $x0
427     %0:_(p0) = COPY $x0
428     %1:_(s8) = G_LOAD %0 :: (load (s8))
429     %4:_(s32) = G_ANYEXT %1
430     G_BR %bb.1
431   bb.1:
432     %2:_(s32) = G_ANYEXT %1
433     %3:_(s64) = G_SEXT %1
434     $w0 = COPY %2
435     $x1 = COPY %3
436     $w2 = COPY %4
439 name:            test_atomic
440 alignment:       4
441 tracksRegLiveness: true
442 liveins:
443   - { reg: '$x0' }
444 body:             |
445   bb.1:
446     liveins: $x0
448     ; CHECK-LABEL: name: test_atomic
449     ; CHECK: liveins: $x0
450     ; CHECK-NEXT: {{  $}}
451     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
452     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s16) = G_LOAD [[COPY]](p0) :: (load unordered (s16))
453     ; CHECK-NEXT: [[ZEXT:%[0-9]+]]:_(s32) = G_ZEXT [[LOAD]](s16)
454     ; CHECK-NEXT: $w0 = COPY [[ZEXT]](s32)
455     ; CHECK-NEXT: RET_ReallyLR implicit $w0
456     %0:_(p0) = COPY $x0
457     %1:_(s16) = G_LOAD %0(p0) :: (load unordered (s16))
458     %2:_(s32) = G_ZEXT %1(s16)
459     $w0 = COPY %2(s32)
460     RET_ReallyLR implicit $w0
463 name:            test_dont_zextload_to_sextload
464 body: |
465   bb.0:
466     liveins: $x0
467     ; CHECK-LABEL: name: test_dont_zextload_to_sextload
468     ; CHECK: liveins: $x0
469     ; CHECK-NEXT: {{  $}}
470     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
471     ; CHECK-NEXT: [[ZEXTLOAD:%[0-9]+]]:_(s64) = G_ZEXTLOAD [[COPY]](p0) :: (load (s8))
472     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[ZEXTLOAD]](s64)
473     ; CHECK-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[TRUNC]](s32)
474     ; CHECK-NEXT: $x0 = COPY [[ZEXTLOAD]](s64)
475     ; CHECK-NEXT: $x1 = COPY [[SEXT]](s64)
476     %0:_(p0) = COPY $x0
477     %1:_(s32) = G_ZEXTLOAD %0 :: (load (s8))
478     %2:_(s64) = G_ZEXT %1
479     %3:_(s64) = G_SEXT %1
480     $x0 = COPY %2
481     $x1 = COPY %3