@@ -10,7 +10,7 @@ define {<vscale x 2 x half>, <vscale x 2 x half>} @vector_deinterleave_nxv2f16_n
10
10
; CHECK-NEXT: uunpklo z1.d, z2.s
11
11
; CHECK-NEXT: ret
12
12
%retval = call {<vscale x 2 x half >, <vscale x 2 x half >} @llvm.vector.deinterleave2.nxv4f16 (<vscale x 4 x half > %vec )
13
- ret {<vscale x 2 x half >, <vscale x 2 x half >} %retval
13
+ ret {<vscale x 2 x half >, <vscale x 2 x half >} %retval
14
14
}
15
15
16
16
define {<vscale x 4 x half >, <vscale x 4 x half >} @vector_deinterleave_nxv4f16_nxv8f16 (<vscale x 8 x half > %vec ) {
@@ -22,7 +22,7 @@ define {<vscale x 4 x half>, <vscale x 4 x half>} @vector_deinterleave_nxv4f16_n
22
22
; CHECK-NEXT: uunpklo z1.s, z2.h
23
23
; CHECK-NEXT: ret
24
24
%retval = call {<vscale x 4 x half >, <vscale x 4 x half >} @llvm.vector.deinterleave2.nxv8f16 (<vscale x 8 x half > %vec )
25
- ret {<vscale x 4 x half >, <vscale x 4 x half >} %retval
25
+ ret {<vscale x 4 x half >, <vscale x 4 x half >} %retval
26
26
}
27
27
28
28
define {<vscale x 8 x half >, <vscale x 8 x half >} @vector_deinterleave_nxv8f16_nxv16f16 (<vscale x 16 x half > %vec ) {
@@ -33,7 +33,7 @@ define {<vscale x 8 x half>, <vscale x 8 x half>} @vector_deinterleave_nxv8f16_n
33
33
; CHECK-NEXT: mov z0.d, z2.d
34
34
; CHECK-NEXT: ret
35
35
%retval = call {<vscale x 8 x half >, <vscale x 8 x half >} @llvm.vector.deinterleave2.nxv16f16 (<vscale x 16 x half > %vec )
36
- ret {<vscale x 8 x half >, <vscale x 8 x half >} %retval
36
+ ret {<vscale x 8 x half >, <vscale x 8 x half >} %retval
37
37
}
38
38
39
39
define {<vscale x 2 x float >, <vscale x 2 x float >} @vector_deinterleave_nxv2f32_nxv4f32 (<vscale x 4 x float > %vec ) {
@@ -45,7 +45,7 @@ define {<vscale x 2 x float>, <vscale x 2 x float>} @vector_deinterleave_nxv2f32
45
45
; CHECK-NEXT: uunpklo z1.d, z2.s
46
46
; CHECK-NEXT: ret
47
47
%retval = call {<vscale x 2 x float >, <vscale x 2 x float >} @llvm.vector.deinterleave2.nxv4f32 (<vscale x 4 x float > %vec )
48
- ret {<vscale x 2 x float >, <vscale x 2 x float >} %retval
48
+ ret {<vscale x 2 x float >, <vscale x 2 x float >} %retval
49
49
}
50
50
51
51
define {<vscale x 4 x float >, <vscale x 4 x float >} @vector_deinterleave_nxv4f32_nxv8f32 (<vscale x 8 x float > %vec ) {
@@ -56,7 +56,7 @@ define {<vscale x 4 x float>, <vscale x 4 x float>} @vector_deinterleave_nxv4f32
56
56
; CHECK-NEXT: mov z0.d, z2.d
57
57
; CHECK-NEXT: ret
58
58
%retval = call {<vscale x 4 x float >, <vscale x 4 x float >} @llvm.vector.deinterleave2.nxv8f32 (<vscale x 8 x float > %vec )
59
- ret {<vscale x 4 x float >, <vscale x 4 x float >} %retval
59
+ ret {<vscale x 4 x float >, <vscale x 4 x float >} %retval
60
60
}
61
61
62
62
define {<vscale x 2 x double >, <vscale x 2 x double >} @vector_deinterleave_nxv2f64_nxv4f64 (<vscale x 4 x double > %vec ) {
@@ -67,7 +67,42 @@ define {<vscale x 2 x double>, <vscale x 2 x double>} @vector_deinterleave_nxv2f
67
67
; CHECK-NEXT: mov z0.d, z2.d
68
68
; CHECK-NEXT: ret
69
69
%retval = call {<vscale x 2 x double >, <vscale x 2 x double >} @llvm.vector.deinterleave2.nxv4f64 (<vscale x 4 x double > %vec )
70
- ret {<vscale x 2 x double >, <vscale x 2 x double >} %retval
70
+ ret {<vscale x 2 x double >, <vscale x 2 x double >} %retval
71
+ }
72
+
73
+ define {<vscale x 2 x bfloat>, <vscale x 2 x bfloat>} @vector_deinterleave_nxv2bf16_nxv4bf16 (<vscale x 4 x bfloat> %vec ) {
74
+ ; CHECK-LABEL: vector_deinterleave_nxv2bf16_nxv4bf16:
75
+ ; CHECK: // %bb.0:
76
+ ; CHECK-NEXT: uzp1 z1.s, z0.s, z0.s
77
+ ; CHECK-NEXT: uzp2 z2.s, z0.s, z0.s
78
+ ; CHECK-NEXT: uunpklo z0.d, z1.s
79
+ ; CHECK-NEXT: uunpklo z1.d, z2.s
80
+ ; CHECK-NEXT: ret
81
+ %retval = call {<vscale x 2 x bfloat>, <vscale x 2 x bfloat>} @llvm.vector.deinterleave2.nxv4bf16 (<vscale x 4 x bfloat> %vec )
82
+ ret {<vscale x 2 x bfloat>, <vscale x 2 x bfloat>} %retval
83
+ }
84
+
85
+ define {<vscale x 4 x bfloat>, <vscale x 4 x bfloat>} @vector_deinterleave_nxv4bf16_nxv8bf16 (<vscale x 8 x bfloat> %vec ) {
86
+ ; CHECK-LABEL: vector_deinterleave_nxv4bf16_nxv8bf16:
87
+ ; CHECK: // %bb.0:
88
+ ; CHECK-NEXT: uzp1 z1.h, z0.h, z0.h
89
+ ; CHECK-NEXT: uzp2 z2.h, z0.h, z0.h
90
+ ; CHECK-NEXT: uunpklo z0.s, z1.h
91
+ ; CHECK-NEXT: uunpklo z1.s, z2.h
92
+ ; CHECK-NEXT: ret
93
+ %retval = call {<vscale x 4 x bfloat>, <vscale x 4 x bfloat>} @llvm.vector.deinterleave2.nxv8bf16 (<vscale x 8 x bfloat> %vec )
94
+ ret {<vscale x 4 x bfloat>, <vscale x 4 x bfloat>} %retval
95
+ }
96
+
97
+ define {<vscale x 8 x bfloat>, <vscale x 8 x bfloat>} @vector_deinterleave_nxv8bf16_nxv16bf16 (<vscale x 16 x bfloat> %vec ) {
98
+ ; CHECK-LABEL: vector_deinterleave_nxv8bf16_nxv16bf16:
99
+ ; CHECK: // %bb.0:
100
+ ; CHECK-NEXT: uzp1 z2.h, z0.h, z1.h
101
+ ; CHECK-NEXT: uzp2 z1.h, z0.h, z1.h
102
+ ; CHECK-NEXT: mov z0.d, z2.d
103
+ ; CHECK-NEXT: ret
104
+ %retval = call {<vscale x 8 x bfloat>, <vscale x 8 x bfloat>} @llvm.vector.deinterleave2.nxv16bf16 (<vscale x 16 x bfloat> %vec )
105
+ ret {<vscale x 8 x bfloat>, <vscale x 8 x bfloat>} %retval
71
106
}
72
107
73
108
; Integers
@@ -80,7 +115,7 @@ define {<vscale x 16 x i8>, <vscale x 16 x i8>} @vector_deinterleave_nxv16i8_nxv
80
115
; CHECK-NEXT: mov z0.d, z2.d
81
116
; CHECK-NEXT: ret
82
117
%retval = call {<vscale x 16 x i8 >, <vscale x 16 x i8 >} @llvm.vector.deinterleave2.nxv32i8 (<vscale x 32 x i8 > %vec )
83
- ret {<vscale x 16 x i8 >, <vscale x 16 x i8 >} %retval
118
+ ret {<vscale x 16 x i8 >, <vscale x 16 x i8 >} %retval
84
119
}
85
120
86
121
define {<vscale x 8 x i16 >, <vscale x 8 x i16 >} @vector_deinterleave_nxv8i16_nxv16i16 (<vscale x 16 x i16 > %vec ) {
@@ -91,7 +126,7 @@ define {<vscale x 8 x i16>, <vscale x 8 x i16>} @vector_deinterleave_nxv8i16_nxv
91
126
; CHECK-NEXT: mov z0.d, z2.d
92
127
; CHECK-NEXT: ret
93
128
%retval = call {<vscale x 8 x i16 >, <vscale x 8 x i16 >} @llvm.vector.deinterleave2.nxv16i16 (<vscale x 16 x i16 > %vec )
94
- ret {<vscale x 8 x i16 >, <vscale x 8 x i16 >} %retval
129
+ ret {<vscale x 8 x i16 >, <vscale x 8 x i16 >} %retval
95
130
}
96
131
97
132
define {<vscale x 4 x i32 >, <vscale x 4 x i32 >} @vector_deinterleave_nxv4i32_nxvv8i32 (<vscale x 8 x i32 > %vec ) {
@@ -102,7 +137,7 @@ define {<vscale x 4 x i32>, <vscale x 4 x i32>} @vector_deinterleave_nxv4i32_nxv
102
137
; CHECK-NEXT: mov z0.d, z2.d
103
138
; CHECK-NEXT: ret
104
139
%retval = call {<vscale x 4 x i32 >, <vscale x 4 x i32 >} @llvm.vector.deinterleave2.nxv8i32 (<vscale x 8 x i32 > %vec )
105
- ret {<vscale x 4 x i32 >, <vscale x 4 x i32 >} %retval
140
+ ret {<vscale x 4 x i32 >, <vscale x 4 x i32 >} %retval
106
141
}
107
142
108
143
define {<vscale x 2 x i64 >, <vscale x 2 x i64 >} @vector_deinterleave_nxv2i64_nxv4i64 (<vscale x 4 x i64 > %vec ) {
@@ -113,7 +148,7 @@ define {<vscale x 2 x i64>, <vscale x 2 x i64>} @vector_deinterleave_nxv2i64_nxv
113
148
; CHECK-NEXT: mov z0.d, z2.d
114
149
; CHECK-NEXT: ret
115
150
%retval = call {<vscale x 2 x i64 >, <vscale x 2 x i64 >} @llvm.vector.deinterleave2.nxv4i64 (<vscale x 4 x i64 > %vec )
116
- ret {<vscale x 2 x i64 >, <vscale x 2 x i64 >} %retval
151
+ ret {<vscale x 2 x i64 >, <vscale x 2 x i64 >} %retval
117
152
}
118
153
119
154
; Predicated
@@ -125,7 +160,7 @@ define {<vscale x 16 x i1>, <vscale x 16 x i1>} @vector_deinterleave_nxv16i1_nxv
125
160
; CHECK-NEXT: mov p0.b, p2.b
126
161
; CHECK-NEXT: ret
127
162
%retval = call {<vscale x 16 x i1 >, <vscale x 16 x i1 >} @llvm.vector.deinterleave2.nxv32i1 (<vscale x 32 x i1 > %vec )
128
- ret {<vscale x 16 x i1 >, <vscale x 16 x i1 >} %retval
163
+ ret {<vscale x 16 x i1 >, <vscale x 16 x i1 >} %retval
129
164
}
130
165
131
166
define {<vscale x 8 x i1 >, <vscale x 8 x i1 >} @vector_deinterleave_nxv8i1_nxv16i1 (<vscale x 16 x i1 > %vec ) {
@@ -137,7 +172,7 @@ define {<vscale x 8 x i1>, <vscale x 8 x i1>} @vector_deinterleave_nxv8i1_nxv16i
137
172
; CHECK-NEXT: punpklo p1.h, p2.b
138
173
; CHECK-NEXT: ret
139
174
%retval = call {<vscale x 8 x i1 >, <vscale x 8 x i1 >} @llvm.vector.deinterleave2.nxv16i1 (<vscale x 16 x i1 > %vec )
140
- ret {<vscale x 8 x i1 >, <vscale x 8 x i1 >} %retval
175
+ ret {<vscale x 8 x i1 >, <vscale x 8 x i1 >} %retval
141
176
}
142
177
143
178
define {<vscale x 4 x i1 >, <vscale x 4 x i1 >} @vector_deinterleave_nxv4i1_nxv8i1 (<vscale x 8 x i1 > %vec ) {
@@ -149,7 +184,7 @@ define {<vscale x 4 x i1>, <vscale x 4 x i1>} @vector_deinterleave_nxv4i1_nxv8i1
149
184
; CHECK-NEXT: punpklo p1.h, p2.b
150
185
; CHECK-NEXT: ret
151
186
%retval = call {<vscale x 4 x i1 >, <vscale x 4 x i1 >} @llvm.vector.deinterleave2.nxv8i1 (<vscale x 8 x i1 > %vec )
152
- ret {<vscale x 4 x i1 >, <vscale x 4 x i1 >} %retval
187
+ ret {<vscale x 4 x i1 >, <vscale x 4 x i1 >} %retval
153
188
}
154
189
155
190
define {<vscale x 2 x i1 >, <vscale x 2 x i1 >} @vector_deinterleave_nxv2i1_nxv4i1 (<vscale x 4 x i1 > %vec ) {
@@ -161,7 +196,7 @@ define {<vscale x 2 x i1>, <vscale x 2 x i1>} @vector_deinterleave_nxv2i1_nxv4i1
161
196
; CHECK-NEXT: punpklo p1.h, p2.b
162
197
; CHECK-NEXT: ret
163
198
%retval = call {<vscale x 2 x i1 >, <vscale x 2 x i1 >} @llvm.vector.deinterleave2.nxv4i1 (<vscale x 4 x i1 > %vec )
164
- ret {<vscale x 2 x i1 >, <vscale x 2 x i1 >} %retval
199
+ ret {<vscale x 2 x i1 >, <vscale x 2 x i1 >} %retval
165
200
}
166
201
167
202
@@ -178,11 +213,11 @@ define {<vscale x 4 x i64>, <vscale x 4 x i64>} @vector_deinterleave_nxv4i64_nxv
178
213
; CHECK-NEXT: mov z1.d, z4.d
179
214
; CHECK-NEXT: mov z2.d, z6.d
180
215
; CHECK-NEXT: ret
181
- %retval = call {<vscale x 4 x i64 >, <vscale x 4 x i64 >} @llvm.vector.deinterleave2.nxv8i64 (<vscale x 8 x i64 > %vec )
182
- ret {<vscale x 4 x i64 >, <vscale x 4 x i64 >} %retval
216
+ %retval = call {<vscale x 4 x i64 >, <vscale x 4 x i64 >} @llvm.vector.deinterleave2.nxv8i64 (<vscale x 8 x i64 > %vec )
217
+ ret {<vscale x 4 x i64 >, <vscale x 4 x i64 >} %retval
183
218
}
184
219
185
- define {<vscale x 8 x i64 >, <vscale x 8 x i64 >} @vector_deinterleave_nxv8i64_nxv16i64 (<vscale x 16 x i64 > %vec ) {
220
+ define {<vscale x 8 x i64 >, <vscale x 8 x i64 >} @vector_deinterleave_nxv8i64_nxv16i64 (<vscale x 16 x i64 > %vec ) {
186
221
; CHECK-LABEL: vector_deinterleave_nxv8i64_nxv16i64:
187
222
; CHECK: // %bb.0:
188
223
; CHECK-NEXT: uzp1 z24.d, z2.d, z3.d
@@ -201,8 +236,8 @@ define {<vscale x 8 x i64>, <vscale x 8 x i64>} @vector_deinterleave_nxv8i64_nx
201
236
; CHECK-NEXT: mov z5.d, z29.d
202
237
; CHECK-NEXT: mov z6.d, z30.d
203
238
; CHECK-NEXT: ret
204
- %retval = call {<vscale x 8 x i64 >, <vscale x 8 x i64 >} @llvm.vector.deinterleave2.nxv16i64 (<vscale x 16 x i64 > %vec )
205
- ret {<vscale x 8 x i64 >, <vscale x 8 x i64 >} %retval
239
+ %retval = call {<vscale x 8 x i64 >, <vscale x 8 x i64 >} @llvm.vector.deinterleave2.nxv16i64 (<vscale x 16 x i64 > %vec )
240
+ ret {<vscale x 8 x i64 >, <vscale x 8 x i64 >} %retval
206
241
}
207
242
208
243
@@ -216,8 +251,8 @@ define {<vscale x 8 x i8>, <vscale x 8 x i8>} @vector_deinterleave_nxv8i8_nxv16i
216
251
; CHECK-NEXT: uzp1 z0.h, z2.h, z1.h
217
252
; CHECK-NEXT: uzp2 z1.h, z2.h, z1.h
218
253
; CHECK-NEXT: ret
219
- %retval = call {<vscale x 8 x i8 >, <vscale x 8 x i8 >} @llvm.vector.deinterleave2.nxv16i8 (<vscale x 16 x i8 > %vec )
220
- ret {<vscale x 8 x i8 >, <vscale x 8 x i8 >} %retval
254
+ %retval = call {<vscale x 8 x i8 >, <vscale x 8 x i8 >} @llvm.vector.deinterleave2.nxv16i8 (<vscale x 16 x i8 > %vec )
255
+ ret {<vscale x 8 x i8 >, <vscale x 8 x i8 >} %retval
221
256
}
222
257
223
258
define {<vscale x 4 x i16 >, <vscale x 4 x i16 >} @vector_deinterleave_nxv4i16_nxv8i16 (<vscale x 8 x i16 > %vec ) {
@@ -228,8 +263,8 @@ define {<vscale x 4 x i16>, <vscale x 4 x i16>} @vector_deinterleave_nxv4i16_nxv
228
263
; CHECK-NEXT: uzp1 z0.s, z2.s, z1.s
229
264
; CHECK-NEXT: uzp2 z1.s, z2.s, z1.s
230
265
; CHECK-NEXT: ret
231
- %retval = call {<vscale x 4 x i16 >, <vscale x 4 x i16 >} @llvm.vector.deinterleave2.nxv8i16 (<vscale x 8 x i16 > %vec )
232
- ret {<vscale x 4 x i16 >, <vscale x 4 x i16 >} %retval
266
+ %retval = call {<vscale x 4 x i16 >, <vscale x 4 x i16 >} @llvm.vector.deinterleave2.nxv8i16 (<vscale x 8 x i16 > %vec )
267
+ ret {<vscale x 4 x i16 >, <vscale x 4 x i16 >} %retval
233
268
}
234
269
235
270
define {<vscale x 2 x i32 >, <vscale x 2 x i32 >} @vector_deinterleave_nxv2i32_nxv4i32 (<vscale x 4 x i32 > %vec ) {
@@ -240,8 +275,8 @@ define {<vscale x 2 x i32>, <vscale x 2 x i32>} @vector_deinterleave_nxv2i32_nxv
240
275
; CHECK-NEXT: uzp1 z0.d, z2.d, z1.d
241
276
; CHECK-NEXT: uzp2 z1.d, z2.d, z1.d
242
277
; CHECK-NEXT: ret
243
- %retval = call {<vscale x 2 x i32 >,<vscale x 2 x i32 >} @llvm.vector.deinterleave2.nxv4i32 (<vscale x 4 x i32 > %vec )
244
- ret {<vscale x 2 x i32 >, <vscale x 2 x i32 >} %retval
278
+ %retval = call {<vscale x 2 x i32 >,<vscale x 2 x i32 >} @llvm.vector.deinterleave2.nxv4i32 (<vscale x 4 x i32 > %vec )
279
+ ret {<vscale x 2 x i32 >, <vscale x 2 x i32 >} %retval
245
280
}
246
281
247
282
0 commit comments