You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/AArch64/sve-vector-deinterleave.ll
+64-1Lines changed: 64 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -151,6 +151,70 @@ define {<vscale x 2 x i64>, <vscale x 2 x i64>} @vector_deinterleave_nxv2i64_nxv
151
151
ret {<vscale x 2 x i64>, <vscale x 2 x i64>} %retval
152
152
}
153
153
154
+
define {<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>} @vector_deinterleave_nxv16i8_nxv64i8(<vscale x 64 x i8> %vec) {
%retval = call {<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>} @llvm.vector.deinterleave4.nxv64i8(<vscale x 64 x i8> %vec)
167
+
ret {<vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>, <vscale x 16 x i8>} %retval
168
+
}
169
+
170
+
define {<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>} @vector_deinterleave_nxv8i16_nxv32i16(<vscale x 32 x i16> %vec) {
%retval = call {<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>} @llvm.vector.deinterleave4.nxv32i16(<vscale x 32 x i16> %vec)
183
+
ret {<vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>, <vscale x 8 x i16>} %retval
184
+
}
185
+
186
+
define {<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>} @vector_deinterleave_nxv4i32_nxv16i32(<vscale x 16 x i32> %vec) {
%retval = call {<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>} @llvm.vector.deinterleave4.nxv16i32(<vscale x 16 x i32> %vec)
199
+
ret {<vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>, <vscale x 4 x i32>} %retval
200
+
}
201
+
202
+
define {<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>} @vector_deinterleave_nxv2i64_nxv8i64(<vscale x 8 x i64> %vec) {
%retval = call {<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>} @llvm.vector.deinterleave4.nxv8i64(<vscale x 8 x i64> %vec)
215
+
ret {<vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>, <vscale x 2 x i64>} %retval
216
+
}
217
+
154
218
; Predicated
155
219
define {<vscale x 16 x i1>, <vscale x 16 x i1>} @vector_deinterleave_nxv16i1_nxv32i1(<vscale x 32 x i1> %vec) {
Copy file name to clipboardExpand all lines: llvm/test/CodeGen/AArch64/sve-vector-interleave.ll
+64Lines changed: 64 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -146,6 +146,70 @@ define <vscale x 4 x i64> @interleave2_nxv4i64(<vscale x 2 x i64> %vec0, <vscale
146
146
ret <vscale x 4 x i64> %retval
147
147
}
148
148
149
+
define <vscale x 64 x i8> @interleave4_nxv16i8(<vscale x 16 x i8> %vec0, <vscale x 16 x i8> %vec1, <vscale x 16 x i8> %vec2, <vscale x 16 x i8> %vec3) {
150
+
; CHECK-LABEL: interleave4_nxv16i8:
151
+
; CHECK: // %bb.0:
152
+
; CHECK-NEXT: zip1 z4.b, z1.b, z3.b
153
+
; CHECK-NEXT: zip1 z5.b, z0.b, z2.b
154
+
; CHECK-NEXT: zip2 z3.b, z1.b, z3.b
155
+
; CHECK-NEXT: zip2 z6.b, z0.b, z2.b
156
+
; CHECK-NEXT: zip1 z0.b, z5.b, z4.b
157
+
; CHECK-NEXT: zip2 z1.b, z5.b, z4.b
158
+
; CHECK-NEXT: zip1 z2.b, z6.b, z3.b
159
+
; CHECK-NEXT: zip2 z3.b, z6.b, z3.b
160
+
; CHECK-NEXT: ret
161
+
%retval = call <vscale x 64 x i8> @llvm.vector.interleave4.nxv16i8(<vscale x 16 x i8> %vec0, <vscale x 16 x i8> %vec1, <vscale x 16 x i8> %vec2, <vscale x 16 x i8> %vec3)
162
+
ret <vscale x 64 x i8> %retval
163
+
}
164
+
165
+
define <vscale x 32 x i16> @interleave4_nxv8i16(<vscale x 8 x i16> %vec0, <vscale x 8 x i16> %vec1, <vscale x 8 x i16> %vec2, <vscale x 8 x i16> %vec3) {
166
+
; CHECK-LABEL: interleave4_nxv8i16:
167
+
; CHECK: // %bb.0:
168
+
; CHECK-NEXT: zip1 z4.h, z1.h, z3.h
169
+
; CHECK-NEXT: zip1 z5.h, z0.h, z2.h
170
+
; CHECK-NEXT: zip2 z3.h, z1.h, z3.h
171
+
; CHECK-NEXT: zip2 z6.h, z0.h, z2.h
172
+
; CHECK-NEXT: zip1 z0.h, z5.h, z4.h
173
+
; CHECK-NEXT: zip2 z1.h, z5.h, z4.h
174
+
; CHECK-NEXT: zip1 z2.h, z6.h, z3.h
175
+
; CHECK-NEXT: zip2 z3.h, z6.h, z3.h
176
+
; CHECK-NEXT: ret
177
+
%retval = call <vscale x 32 x i16> @llvm.vector.interleave4.nxv8i16(<vscale x 8 x i16> %vec0, <vscale x 8 x i16> %vec1, <vscale x 8 x i16> %vec2, <vscale x 8 x i16> %vec3)
178
+
ret <vscale x 32 x i16> %retval
179
+
}
180
+
181
+
define <vscale x 16 x i32> @interleave4_nxv4i32(<vscale x 4 x i32> %vec0, <vscale x 4 x i32> %vec1, <vscale x 4 x i32> %vec2, <vscale x 4 x i32> %vec3) {
182
+
; CHECK-LABEL: interleave4_nxv4i32:
183
+
; CHECK: // %bb.0:
184
+
; CHECK-NEXT: zip1 z4.s, z1.s, z3.s
185
+
; CHECK-NEXT: zip1 z5.s, z0.s, z2.s
186
+
; CHECK-NEXT: zip2 z3.s, z1.s, z3.s
187
+
; CHECK-NEXT: zip2 z6.s, z0.s, z2.s
188
+
; CHECK-NEXT: zip1 z0.s, z5.s, z4.s
189
+
; CHECK-NEXT: zip2 z1.s, z5.s, z4.s
190
+
; CHECK-NEXT: zip1 z2.s, z6.s, z3.s
191
+
; CHECK-NEXT: zip2 z3.s, z6.s, z3.s
192
+
; CHECK-NEXT: ret
193
+
%retval = call <vscale x 16 x i32> @llvm.vector.interleave4.nxv4i32(<vscale x 4 x i32> %vec0, <vscale x 4 x i32> %vec1, <vscale x 4 x i32> %vec2, <vscale x 4 x i32> %vec3)
194
+
ret <vscale x 16 x i32> %retval
195
+
}
196
+
197
+
define <vscale x 8 x i64> @interleave4_nxv8i64(<vscale x 2 x i64> %vec0, <vscale x 2 x i64> %vec1, <vscale x 2 x i64> %vec2, <vscale x 2 x i64> %vec3) {
198
+
; CHECK-LABEL: interleave4_nxv8i64:
199
+
; CHECK: // %bb.0:
200
+
; CHECK-NEXT: zip1 z4.d, z1.d, z3.d
201
+
; CHECK-NEXT: zip1 z5.d, z0.d, z2.d
202
+
; CHECK-NEXT: zip2 z3.d, z1.d, z3.d
203
+
; CHECK-NEXT: zip2 z6.d, z0.d, z2.d
204
+
; CHECK-NEXT: zip1 z0.d, z5.d, z4.d
205
+
; CHECK-NEXT: zip2 z1.d, z5.d, z4.d
206
+
; CHECK-NEXT: zip1 z2.d, z6.d, z3.d
207
+
; CHECK-NEXT: zip2 z3.d, z6.d, z3.d
208
+
; CHECK-NEXT: ret
209
+
%retval = call <vscale x 8 x i64> @llvm.vector.interleave4.nxv8i64(<vscale x 2 x i64> %vec0, <vscale x 2 x i64> %vec1, <vscale x 2 x i64> %vec2, <vscale x 2 x i64> %vec3)
210
+
ret <vscale x 8 x i64> %retval
211
+
}
212
+
149
213
; Predicated
150
214
151
215
define <vscale x 32 x i1> @interleave2_nxv32i1(<vscale x 16 x i1> %vec0, <vscale x 16 x i1> %vec1) {
0 commit comments