[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-bitcast.mir
blobd9ee37e312b994b36130d7b32c079927c041e536
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -O0 -mtriple=aarch64-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s
4 --- |
5   target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
7   define void @bitcast_s32_gpr() { ret void }
8   define void @bitcast_s32_fpr() { ret void }
9   define void @bitcast_s32_gpr_fpr() { ret void }
10   define void @bitcast_s32_fpr_gpr() { ret void }
11   define void @bitcast_s64_gpr() { ret void }
12   define void @bitcast_s64_fpr() { ret void }
13   define void @bitcast_s64_gpr_fpr() { ret void }
14   define void @bitcast_s64_fpr_gpr() { ret void }
15   define void @bitcast_s64_v2f32_fpr() { ret void }
16   define void @bitcast_s64_v8i8_fpr() { ret void }
17 ...
19 ---
20 name:            bitcast_s32_gpr
21 legalized:       true
22 regBankSelected: true
23 registers:
24   - { id: 0, class: gpr }
25   - { id: 1, class: fpr }
26   - { id: 2, class: gpr }
27 body:             |
28   bb.0:
29     liveins: $w0
31     ; CHECK-LABEL: name: bitcast_s32_gpr
32     ; CHECK: [[COPY:%[0-9]+]]:gpr32all = COPY $w0
33     ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]]
34     ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
35     ; CHECK: $w0 = COPY [[COPY2]]
36     %0(s32) = COPY $w0
37     %1(<2 x s16>) = G_BITCAST %0
38     %2(s32) = G_BITCAST %1
39     $w0 = COPY %2
40 ...
42 ---
43 name:            bitcast_s32_fpr
44 legalized:       true
45 regBankSelected: true
47 registers:
48   - { id: 0, class: fpr }
49   - { id: 1, class: gpr }
50   - { id: 2, class: fpr }
51 body:             |
52   bb.0:
53     liveins: $s0
55     ; CHECK-LABEL: name: bitcast_s32_fpr
56     ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
57     ; CHECK: [[COPY1:%[0-9]+]]:gpr32all = COPY [[COPY]]
58     ; CHECK: [[COPY2:%[0-9]+]]:fpr32 = COPY [[COPY1]]
59     ; CHECK: $s0 = COPY [[COPY2]]
60     %0(s32) = COPY $s0
61     %1(<2 x s16>) = G_BITCAST %0
62     %2(s32) = G_BITCAST %1
63     $s0 = COPY %2
64 ...
66 ---
67 name:            bitcast_s32_gpr_fpr
68 legalized:       true
69 regBankSelected: true
71 registers:
72   - { id: 0, class: gpr }
73   - { id: 1, class: fpr }
75 body:             |
76   bb.0:
77     liveins: $w0
79     ; CHECK-LABEL: name: bitcast_s32_gpr_fpr
80     ; CHECK: [[COPY:%[0-9]+]]:gpr32all = COPY $w0
81     ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]]
82     ; CHECK: $s0 = COPY [[COPY1]]
83     %0(s32) = COPY $w0
84     %1(<2 x s16>) = G_BITCAST %0
85     $s0 = COPY %1
86 ...
88 ---
89 name:            bitcast_s32_fpr_gpr
90 legalized:       true
91 regBankSelected: true
93 registers:
94   - { id: 0, class: fpr }
95   - { id: 1, class: gpr }
97 body:             |
98   bb.0:
99     liveins: $s0
101     ; CHECK-LABEL: name: bitcast_s32_fpr_gpr
102     ; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY $s0
103     ; CHECK: [[COPY1:%[0-9]+]]:gpr32all = COPY [[COPY]]
104     ; CHECK: $w0 = COPY [[COPY1]]
105     %0(<2 x s16>) = COPY $s0
106     %1(s32) = G_BITCAST %0
107     $w0 = COPY %1(s32)
111 name:            bitcast_s64_gpr
112 legalized:       true
113 regBankSelected: true
115 registers:
116   - { id: 0, class: gpr }
117   - { id: 1, class: fpr }
118   - { id: 2, class: gpr }
120 body:             |
121   bb.0:
122     liveins: $x0
124     ; CHECK-LABEL: name: bitcast_s64_gpr
125     ; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
126     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
127     ; CHECK: [[COPY2:%[0-9]+]]:gpr64 = COPY [[COPY1]]
128     ; CHECK: $x0 = COPY [[COPY2]]
129     %0(s64) = COPY $x0
130     %1(<2 x s32>) = G_BITCAST %0
131     %2(s64) = G_BITCAST %1
132     $x0 = COPY %2(s64)
136 name:            bitcast_s64_fpr
137 legalized:       true
138 regBankSelected: true
140 registers:
141   - { id: 0, class: fpr }
142   - { id: 1, class: fpr }
144 body:             |
145   bb.0:
146     liveins: $d0
148     ; CHECK-LABEL: name: bitcast_s64_fpr
149     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
150     ; CHECK: $d0 = COPY [[COPY]]
151     %0(s64) = COPY $d0
152     %1(<2 x s32>) = G_BITCAST %0
153     $d0 = COPY %1
157 name:            bitcast_s64_gpr_fpr
158 legalized:       true
159 regBankSelected: true
161 registers:
162   - { id: 0, class: gpr }
163   - { id: 1, class: fpr }
164 body:             |
165   bb.0:
166     liveins: $x0
168     ; CHECK-LABEL: name: bitcast_s64_gpr_fpr
169     ; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY $x0
170     ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
171     ; CHECK: $d0 = COPY [[COPY1]]
172     %0(s64) = COPY $x0
173     %1(<2 x s32>) = G_BITCAST %0
174     $d0 = COPY %1
178 name:            bitcast_s64_fpr_gpr
179 legalized:       true
180 regBankSelected: true
182 registers:
183   - { id: 0, class: fpr }
184   - { id: 1, class: gpr }
186 body:             |
187   bb.0:
188     liveins: $d0
190     ; CHECK-LABEL: name: bitcast_s64_fpr_gpr
191     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
192     ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY [[COPY]]
193     ; CHECK: $x0 = COPY [[COPY1]]
194     %0(s64) = COPY $d0
195     %1(<2 x s32>) = G_BITCAST %0
196     $x0 = COPY %1
200 name:            bitcast_s64_v2f32_fpr
201 legalized:       true
202 regBankSelected: true
204 registers:
205   - { id: 0, class: fpr }
206   - { id: 1, class: fpr }
208 body:             |
209   bb.0:
210     liveins: $d0
212     ; CHECK-LABEL: name: bitcast_s64_v2f32_fpr
213     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
214     ; CHECK: $x0 = COPY [[COPY]]
215     %0(s64) = COPY $d0
216     %1(<2 x s32>) = G_BITCAST %0
217     $x0 = COPY %1(<2 x s32>)
221 name:            bitcast_s64_v8i8_fpr
222 legalized:       true
223 regBankSelected: true
225 registers:
226   - { id: 0, class: fpr }
227   - { id: 1, class: fpr }
229 body:             |
230   bb.0:
231     liveins: $d0
233     ; CHECK-LABEL: name: bitcast_s64_v8i8_fpr
234     ; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY $d0
235     ; CHECK: $x0 = COPY [[COPY]]
236     %0(s64) = COPY $d0
237     %1(<8 x s8>) = G_BITCAST %0
238     $x0 = COPY %1(<8 x s8>)