[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-zextload.mir
blob5b36d7ae5c91c6882df1ebfb0ad692f18e43478a
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 ---
5 name:            zextload_s32_from_s16
6 legalized:       true
7 regBankSelected: true
8 body:             |
9   bb.0:
10     liveins: $x0
12     ; CHECK-LABEL: name: zextload_s32_from_s16
13     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
14     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16))
15     ; CHECK-NEXT: $w0 = COPY [[LDRHHui]]
16     %0:gpr(p0) = COPY $x0
17     %1:gpr(s32) = G_ZEXTLOAD %0 :: (load (s16))
18     $w0 = COPY %1(s32)
19 ...
20 ---
21 name:            zextload_s32_from_s16_not_combined
22 legalized:       true
23 regBankSelected: true
24 body:             |
25   bb.0:
26     liveins: $x0
28     ; CHECK-LABEL: name: zextload_s32_from_s16_not_combined
29     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
30     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16))
31     ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr32all = COPY [[LDRHHui]]
32     ; CHECK-NEXT: $w0 = COPY [[COPY1]]
33     %0:gpr(p0) = COPY $x0
34     %1:gpr(s16) = G_LOAD %0 :: (load (s16))
35     %2:gpr(s32) = G_ZEXT %1
36     $w0 = COPY %2(s32)
37 ...
38 ---
39 name:            i32_to_i64
40 legalized:       true
41 regBankSelected: true
42 body:             |
43   bb.0:
44     liveins: $x0
46     ; CHECK-LABEL: name: i32_to_i64
47     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
48     ; CHECK-NEXT: [[LDRWui:%[0-9]+]]:gpr32 = LDRWui [[COPY]], 0 :: (load (s32))
49     ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDRWui]], %subreg.sub_32
50     ; CHECK-NEXT: $x0 = COPY [[SUBREG_TO_REG]]
51     ; CHECK-NEXT: RET_ReallyLR implicit $x0
52     %0:gpr(p0) = COPY $x0
53     %2:gpr(s64) = G_ZEXTLOAD %0(p0) :: (load (s32))
54     $x0 = COPY %2(s64)
55     RET_ReallyLR implicit $x0
57 ...
58 ---
59 name:            i16_to_i64
60 legalized:       true
61 regBankSelected: true
62 body:             |
63   bb.0:
64     liveins: $x0
66     ; CHECK-LABEL: name: i16_to_i64
67     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
68     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16))
69     ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDRHHui]], %subreg.sub_32
70     ; CHECK-NEXT: $x0 = COPY [[SUBREG_TO_REG]]
71     ; CHECK-NEXT: RET_ReallyLR implicit $x0
72     %0:gpr(p0) = COPY $x0
73     %2:gpr(s64) = G_ZEXTLOAD %0(p0) :: (load (s16))
74     $x0 = COPY %2(s64)
75     RET_ReallyLR implicit $x0
77 ...
78 ---
79 name:            i8_to_i64
80 legalized:       true
81 regBankSelected: true
82 body:             |
83   bb.0:
84     liveins: $x0
86     ; CHECK-LABEL: name: i8_to_i64
87     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
88     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load (s8))
89     ; CHECK-NEXT: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[LDRBBui]], %subreg.sub_32
90     ; CHECK-NEXT: $x0 = COPY [[SUBREG_TO_REG]]
91     ; CHECK-NEXT: RET_ReallyLR implicit $x0
92     %0:gpr(p0) = COPY $x0
93     %2:gpr(s64) = G_ZEXTLOAD %0(p0) :: (load (s8))
94     $x0 = COPY %2(s64)
95     RET_ReallyLR implicit $x0
97 ...
98 ---
99 name:            i8_to_i32
100 legalized:       true
101 regBankSelected: true
102 body:             |
103   bb.0:
104     liveins: $x0
106     ; CHECK-LABEL: name: i8_to_i32
107     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
108     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load (s8))
109     ; CHECK-NEXT: $w0 = COPY [[LDRBBui]]
110     ; CHECK-NEXT: RET_ReallyLR implicit $w0
111     %0:gpr(p0) = COPY $x0
112     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load (s8))
113     $w0 = COPY %2(s32)
114     RET_ReallyLR implicit $w0
118 name:            i16_to_i32
119 legalized:       true
120 regBankSelected: true
121 body:             |
122   bb.0:
123     liveins: $x0
125     ; CHECK-LABEL: name: i16_to_i32
126     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
127     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load (s16))
128     ; CHECK-NEXT: $w0 = COPY [[LDRHHui]]
129     ; CHECK-NEXT: RET_ReallyLR implicit $w0
130     %0:gpr(p0) = COPY $x0
131     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load (s16))
132     $w0 = COPY %2(s32)
133     RET_ReallyLR implicit $w0
138 name: zextload_s32_from_s8_atomic_unordered
139 legalized:       true
140 regBankSelected: true
141 body:             |
142   bb.0:
143     liveins: $x0
145     ; CHECK-LABEL: name: zextload_s32_from_s8_atomic_unordered
146     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
147     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load unordered (s8))
148     ; CHECK-NEXT: $w0 = COPY [[LDRBBui]]
149     ; CHECK-NEXT: RET_ReallyLR implicit $w0
150     %0:gpr(p0) = COPY $x0
151     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load unordered (s8))
152     $w0 = COPY %2
153     RET_ReallyLR implicit $w0
158 name: zextload_s32_from_s8_atomic_monotonic
159 legalized:       true
160 regBankSelected: true
161 body:             |
162   bb.0:
163     liveins: $x0
165     ; CHECK-LABEL: name: zextload_s32_from_s8_atomic_monotonic
166     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
167     ; CHECK-NEXT: [[LDRBBui:%[0-9]+]]:gpr32 = LDRBBui [[COPY]], 0 :: (load monotonic (s8))
168     ; CHECK-NEXT: $w0 = COPY [[LDRBBui]]
169     ; CHECK-NEXT: RET_ReallyLR implicit $w0
170     %0:gpr(p0) = COPY $x0
171     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load monotonic (s8))
172     $w0 = COPY %2
173     RET_ReallyLR implicit $w0
178 name: zextload_s32_from_s8_atomic_acquire
179 legalized:       true
180 regBankSelected: true
181 body:             |
182   bb.0:
183     liveins: $x0
185     ; CHECK-LABEL: name: zextload_s32_from_s8_atomic_acquire
186     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
187     ; CHECK-NEXT: [[LDARB:%[0-9]+]]:gpr32 = LDARB [[COPY]] :: (load acquire (s8))
188     ; CHECK-NEXT: $w0 = COPY [[LDARB]]
189     ; CHECK-NEXT: RET_ReallyLR implicit $w0
190     %0:gpr(p0) = COPY $x0
191     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load acquire (s8))
192     $w0 = COPY %2
193     RET_ReallyLR implicit $w0
198 name: zextload_s32_from_s8_atomic_seq_cst
199 legalized:       true
200 regBankSelected: true
201 body:             |
202   bb.0:
203     liveins: $x0
205     ; CHECK-LABEL: name: zextload_s32_from_s8_atomic_seq_cst
206     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
207     ; CHECK-NEXT: [[LDARB:%[0-9]+]]:gpr32 = LDARB [[COPY]] :: (load seq_cst (s8))
208     ; CHECK-NEXT: $w0 = COPY [[LDARB]]
209     ; CHECK-NEXT: RET_ReallyLR implicit $w0
210     %0:gpr(p0) = COPY $x0
211     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load seq_cst (s8))
212     $w0 = COPY %2
213     RET_ReallyLR implicit $w0
218 name: zextload_s32_from_s16_atomic_unordered
219 legalized:       true
220 regBankSelected: true
221 body:             |
222   bb.0:
223     liveins: $x0
225     ; CHECK-LABEL: name: zextload_s32_from_s16_atomic_unordered
226     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
227     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load unordered (s16))
228     ; CHECK-NEXT: $w0 = COPY [[LDRHHui]]
229     ; CHECK-NEXT: RET_ReallyLR implicit $w0
230     %0:gpr(p0) = COPY $x0
231     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load unordered (s16))
232     $w0 = COPY %2
233     RET_ReallyLR implicit $w0
238 name: zextload_s32_from_s16_atomic_monotonic
239 legalized:       true
240 regBankSelected: true
241 body:             |
242   bb.0:
243     liveins: $x0
245     ; CHECK-LABEL: name: zextload_s32_from_s16_atomic_monotonic
246     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
247     ; CHECK-NEXT: [[LDRHHui:%[0-9]+]]:gpr32 = LDRHHui [[COPY]], 0 :: (load monotonic (s16))
248     ; CHECK-NEXT: $w0 = COPY [[LDRHHui]]
249     ; CHECK-NEXT: RET_ReallyLR implicit $w0
250     %0:gpr(p0) = COPY $x0
251     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load monotonic (s16))
252     $w0 = COPY %2
253     RET_ReallyLR implicit $w0
258 name: zextload_s32_from_s16_atomic_acquire
259 legalized:       true
260 regBankSelected: true
261 body:             |
262   bb.0:
263     liveins: $x0
265     ; CHECK-LABEL: name: zextload_s32_from_s16_atomic_acquire
266     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
267     ; CHECK-NEXT: [[LDARH:%[0-9]+]]:gpr32 = LDARH [[COPY]] :: (load acquire (s16))
268     ; CHECK-NEXT: $w0 = COPY [[LDARH]]
269     ; CHECK-NEXT: RET_ReallyLR implicit $w0
270     %0:gpr(p0) = COPY $x0
271     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load acquire (s16))
272     $w0 = COPY %2
273     RET_ReallyLR implicit $w0
278 name: zextload_s32_from_s16_atomic_seq_cst
279 legalized:       true
280 regBankSelected: true
281 body:             |
282   bb.0:
283     liveins: $x0
285     ; CHECK-LABEL: name: zextload_s32_from_s16_atomic_seq_cst
286     ; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY $x0
287     ; CHECK-NEXT: [[LDARH:%[0-9]+]]:gpr32 = LDARH [[COPY]] :: (load seq_cst (s16))
288     ; CHECK-NEXT: $w0 = COPY [[LDARH]]
289     ; CHECK-NEXT: RET_ReallyLR implicit $w0
290     %0:gpr(p0) = COPY $x0
291     %2:gpr(s32) = G_ZEXTLOAD %0(p0) :: (load seq_cst (s16))
292     $w0 = COPY %2
293     RET_ReallyLR implicit $w0