[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / select-ld2.mir
blob940485ea0b427918a159a57d4e348c63ff77d69d
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
3 ...
4 ---
5 name:            LD2Twov8b
6 legalized:       true
7 regBankSelected: true
8 tracksRegLiveness: true
9 body:             |
10   bb.0:
11     liveins: $x0, $x1, $x2
12     ; CHECK-LABEL: name: LD2Twov8b
13     ; CHECK: liveins: $x0, $x1, $x2
14     ; CHECK: %ptr:gpr64sp = COPY $x0
15     ; CHECK: [[LD2Twov8b:%[0-9]+]]:dd = LD2Twov8b %ptr :: (load (<8 x s64>))
16     ; CHECK: %dst1:fpr64 = COPY [[LD2Twov8b]].dsub0
17     ; CHECK: %dst2:fpr64 = COPY [[LD2Twov8b]].dsub1
18     ; CHECK: $d0 = COPY %dst1
19     ; CHECK: $d1 = COPY %dst2
20     ; CHECK: RET_ReallyLR implicit $d0, implicit $d1
21     %ptr:gpr(p0) = COPY $x0
22     %dst1:fpr(<8 x s8>), %dst2:fpr(<8 x s8>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<8 x s64>))
23     $d0 = COPY %dst1(<8 x s8>)
24     $d1 = COPY %dst2(<8 x s8>)
25     RET_ReallyLR implicit $d0, implicit $d1
26 ...
27 ---
28 name:            LD2Twov16b
29 legalized:       true
30 regBankSelected: true
31 tracksRegLiveness: true
32 body:             |
33   bb.0:
34     liveins: $x0, $x1, $x2
35     ; CHECK-LABEL: name: LD2Twov16b
36     ; CHECK: liveins: $x0, $x1, $x2
37     ; CHECK: %ptr:gpr64sp = COPY $x0
38     ; CHECK: [[LD2Twov16b:%[0-9]+]]:qq = LD2Twov16b %ptr :: (load (<16 x s64>))
39     ; CHECK: %dst1:fpr128 = COPY [[LD2Twov16b]].qsub0
40     ; CHECK: %dst2:fpr128 = COPY [[LD2Twov16b]].qsub1
41     ; CHECK: $q0 = COPY %dst1
42     ; CHECK: $q1 = COPY %dst2
43     ; CHECK: RET_ReallyLR implicit $q0, implicit $q1
44     %ptr:gpr(p0) = COPY $x0
45     %dst1:fpr(<16 x s8>), %dst2:fpr(<16 x s8>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<16 x s64>))
46     $q0 = COPY %dst1(<16 x s8>)
47     $q1 = COPY %dst2(<16 x s8>)
48     RET_ReallyLR implicit $q0, implicit $q1
49 ...
50 ---
51 name:            LD2Twov4h
52 legalized:       true
53 regBankSelected: true
54 tracksRegLiveness: true
55 body:             |
56   bb.0:
57     liveins: $x0, $x1, $x2
58     ; CHECK-LABEL: name: LD2Twov4h
59     ; CHECK: liveins: $x0, $x1, $x2
60     ; CHECK: %ptr:gpr64sp = COPY $x0
61     ; CHECK: [[LD2Twov4h:%[0-9]+]]:dd = LD2Twov4h %ptr :: (load (<4 x s64>))
62     ; CHECK: %dst1:fpr64 = COPY [[LD2Twov4h]].dsub0
63     ; CHECK: %dst2:fpr64 = COPY [[LD2Twov4h]].dsub1
64     ; CHECK: $d0 = COPY %dst1
65     ; CHECK: $d1 = COPY %dst2
66     ; CHECK: RET_ReallyLR implicit $d0, implicit $d1
67     %ptr:gpr(p0) = COPY $x0
68     %dst1:fpr(<4 x s16>), %dst2:fpr(<4 x s16>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<4 x s64>))
69     $d0 = COPY %dst1(<4 x s16>)
70     $d1 = COPY %dst2(<4 x s16>)
71     RET_ReallyLR implicit $d0, implicit $d1
72 ...
73 ---
74 name:            LD2Twov8h
75 legalized:       true
76 regBankSelected: true
77 tracksRegLiveness: true
78 body:             |
79   bb.0:
80     liveins: $x0, $x1, $x2
81     ; CHECK-LABEL: name: LD2Twov8h
82     ; CHECK: liveins: $x0, $x1, $x2
83     ; CHECK: %ptr:gpr64sp = COPY $x0
84     ; CHECK: [[LD2Twov8h:%[0-9]+]]:qq = LD2Twov8h %ptr :: (load (<8 x s64>))
85     ; CHECK: %dst1:fpr128 = COPY [[LD2Twov8h]].qsub0
86     ; CHECK: %dst2:fpr128 = COPY [[LD2Twov8h]].qsub1
87     ; CHECK: $q0 = COPY %dst1
88     ; CHECK: $q1 = COPY %dst2
89     ; CHECK: RET_ReallyLR implicit $q0, implicit $q1
90     %ptr:gpr(p0) = COPY $x0
91     %dst1:fpr(<8 x s16>), %dst2:fpr(<8 x s16>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<8 x s64>))
92     $q0 = COPY %dst1(<8 x s16>)
93     $q1 = COPY %dst2(<8 x s16>)
94     RET_ReallyLR implicit $q0, implicit $q1
95 ...
96 ---
97 name:            LD2Twov2s
98 legalized:       true
99 regBankSelected: true
100 tracksRegLiveness: true
101 body:             |
102   bb.0:
103     liveins: $x0, $x1, $x2
104     ; CHECK-LABEL: name: LD2Twov2s
105     ; CHECK: liveins: $x0, $x1, $x2
106     ; CHECK: %ptr:gpr64sp = COPY $x0
107     ; CHECK: [[LD2Twov2s:%[0-9]+]]:dd = LD2Twov2s %ptr :: (load (<2 x s64>))
108     ; CHECK: %dst1:fpr64 = COPY [[LD2Twov2s]].dsub0
109     ; CHECK: %dst2:fpr64 = COPY [[LD2Twov2s]].dsub1
110     ; CHECK: $d0 = COPY %dst1
111     ; CHECK: $d1 = COPY %dst2
112     ; CHECK: RET_ReallyLR implicit $d0, implicit $d1
113     %ptr:gpr(p0) = COPY $x0
114     %dst1:fpr(<2 x s32>), %dst2:fpr(<2 x s32>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<2 x s64>))
115     $d0 = COPY %dst1(<2 x s32>)
116     $d1 = COPY %dst2(<2 x s32>)
117     RET_ReallyLR implicit $d0, implicit $d1
120 name:            LD2Twov4s
121 legalized:       true
122 regBankSelected: true
123 tracksRegLiveness: true
124 body:             |
125   bb.0:
126     liveins: $x0, $x1, $x2
127     ; CHECK-LABEL: name: LD2Twov4s
128     ; CHECK: liveins: $x0, $x1, $x2
129     ; CHECK: %ptr:gpr64sp = COPY $x0
130     ; CHECK: [[LD2Twov4s:%[0-9]+]]:qq = LD2Twov4s %ptr :: (load (<4 x s64>))
131     ; CHECK: %dst1:fpr128 = COPY [[LD2Twov4s]].qsub0
132     ; CHECK: %dst2:fpr128 = COPY [[LD2Twov4s]].qsub1
133     ; CHECK: $q0 = COPY %dst1
134     ; CHECK: $q1 = COPY %dst2
135     ; CHECK: RET_ReallyLR implicit $q0, implicit $q1
136     %ptr:gpr(p0) = COPY $x0
137     %dst1:fpr(<4 x s32>), %dst2:fpr(<4 x s32>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<4 x s64>))
138     $q0 = COPY %dst1(<4 x s32>)
139     $q1 = COPY %dst2(<4 x s32>)
140     RET_ReallyLR implicit $q0, implicit $q1
143 name:            LD2Twov2d_s64
144 legalized:       true
145 regBankSelected: true
146 tracksRegLiveness: true
147 body:             |
148   bb.0:
149     liveins: $x0, $x1, $x2
150     ; CHECK-LABEL: name: LD2Twov2d_s64
151     ; CHECK: liveins: $x0, $x1, $x2
152     ; CHECK: %ptr:gpr64sp = COPY $x0
153     ; CHECK: [[LD2Twov2d:%[0-9]+]]:qq = LD2Twov2d %ptr :: (load (<2 x s64>))
154     ; CHECK: %dst1:fpr128 = COPY [[LD2Twov2d]].qsub0
155     ; CHECK: %dst2:fpr128 = COPY [[LD2Twov2d]].qsub1
156     ; CHECK: $q0 = COPY %dst1
157     ; CHECK: $q1 = COPY %dst2
158     ; CHECK: RET_ReallyLR implicit $q0, implicit $q1
159     %ptr:gpr(p0) = COPY $x0
160     %dst1:fpr(<2 x s64>), %dst2:fpr(<2 x s64>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<2 x s64>))
161     $q0 = COPY %dst1(<2 x s64>)
162     $q1 = COPY %dst2(<2 x s64>)
163     RET_ReallyLR implicit $q0, implicit $q1
166 name:            LD2Twov2d_p0
167 legalized:       true
168 regBankSelected: true
169 tracksRegLiveness: true
170 body:             |
171   bb.0:
172     liveins: $x0, $x1, $x2
173     ; CHECK-LABEL: name: LD2Twov2d_p0
174     ; CHECK: liveins: $x0, $x1, $x2
175     ; CHECK: %ptr:gpr64sp = COPY $x0
176     ; CHECK: [[LD2Twov2d:%[0-9]+]]:qq = LD2Twov2d %ptr :: (load (<2 x p0>))
177     ; CHECK: %dst1:fpr128 = COPY [[LD2Twov2d]].qsub0
178     ; CHECK: %dst2:fpr128 = COPY [[LD2Twov2d]].qsub1
179     ; CHECK: $q0 = COPY %dst1
180     ; CHECK: $q1 = COPY %dst2
181     ; CHECK: RET_ReallyLR implicit $q0, implicit $q1
182     %ptr:gpr(p0) = COPY $x0
183     %dst1:fpr(<2 x p0>), %dst2:fpr(<2 x p0>) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (<2 x p0>))
184     $q0 = COPY %dst1(<2 x p0>)
185     $q1 = COPY %dst2(<2 x p0>)
186     RET_ReallyLR implicit $q0, implicit $q1
189 name:            LD1Twov1d_s64
190 legalized:       true
191 regBankSelected: true
192 tracksRegLiveness: true
193 body:             |
194   bb.0:
195     liveins: $x0, $x1, $x2
196     ; CHECK-LABEL: name: LD1Twov1d_s64
197     ; CHECK: liveins: $x0, $x1, $x2
198     ; CHECK: %ptr:gpr64sp = COPY $x0
199     ; CHECK: [[LD1Twov1d:%[0-9]+]]:dd = LD1Twov1d %ptr :: (load (s64))
200     ; CHECK: %dst1:fpr64 = COPY [[LD1Twov1d]].dsub0
201     ; CHECK: %dst2:fpr64 = COPY [[LD1Twov1d]].dsub1
202     ; CHECK: $d0 = COPY %dst1
203     ; CHECK: $d1 = COPY %dst2
204     ; CHECK: RET_ReallyLR implicit $d0, implicit $d1
205     %ptr:gpr(p0) = COPY $x0
206     %dst1:fpr(s64), %dst2:fpr(s64) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (s64))
207     $d0 = COPY %dst1(s64)
208     $d1 = COPY %dst2(s64)
209     RET_ReallyLR implicit $d0, implicit $d1
212 name:            LD1Twov1d_p0
213 legalized:       true
214 regBankSelected: true
215 tracksRegLiveness: true
216 body:             |
217   bb.0:
218     liveins: $x0, $x1, $x2
219     ; CHECK-LABEL: name: LD1Twov1d_p0
220     ; CHECK: liveins: $x0, $x1, $x2
221     ; CHECK: %ptr:gpr64sp = COPY $x0
222     ; CHECK: [[LD1Twov1d:%[0-9]+]]:dd = LD1Twov1d %ptr :: (load (p0))
223     ; CHECK: %dst1:fpr64 = COPY [[LD1Twov1d]].dsub0
224     ; CHECK: %dst2:fpr64 = COPY [[LD1Twov1d]].dsub1
225     ; CHECK: $d0 = COPY %dst1
226     ; CHECK: $d1 = COPY %dst2
227     ; CHECK: RET_ReallyLR implicit $d0, implicit $d1
228     %ptr:gpr(p0) = COPY $x0
229     %dst1:fpr(p0), %dst2:fpr(p0) = G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aarch64.neon.ld2), %ptr(p0) :: (load (p0))
230     $d0 = COPY %dst1(p0)
231     $d1 = COPY %dst2(p0)
232     RET_ReallyLR implicit $d0, implicit $d1