clang 24.0.0git
riscv_packed_simd.h
Go to the documentation of this file.
1/*===---- riscv_packed_simd.h - RISC-V P intrinsics ------------------------===
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===-----------------------------------------------------------------------===
8 */
9
10#ifndef __RISCV_PACKED_SIMD_H
11#define __RISCV_PACKED_SIMD_H
12
13#include <stdint.h>
14
15#if defined(__cplusplus)
16extern "C" {
17#endif
18
19/* Packed SIMD Types */
20
21typedef int8_t int8x4_t __attribute__((__vector_size__(4)));
22typedef uint8_t uint8x4_t __attribute__((__vector_size__(4)));
23typedef int16_t int16x2_t __attribute__((__vector_size__(4)));
24typedef uint16_t uint16x2_t __attribute__((__vector_size__(4)));
25
26typedef int8_t int8x8_t __attribute__((__vector_size__(8)));
27typedef uint8_t uint8x8_t __attribute__((__vector_size__(8)));
28typedef int16_t int16x4_t __attribute__((__vector_size__(8)));
29typedef uint16_t uint16x4_t __attribute__((__vector_size__(8)));
30typedef int32_t int32x2_t __attribute__((__vector_size__(8)));
31typedef uint32_t uint32x2_t __attribute__((__vector_size__(8)));
32
33#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
34
35#define __packed_splat2(ty, x) ((ty){(x), (x)})
36#define __packed_splat4(ty, x) ((ty){(x), (x), (x), (x)})
37#define __packed_splat8(ty, x) ((ty){(x), (x), (x), (x), (x), (x), (x), (x)})
38
39#define __packed_splat(name, ty, scalar_ty, splat) \
40 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(scalar_ty __x) { \
41 return splat(ty, __x); \
42 }
43
44#define __packed_shift(name, ty, op, mask) \
45 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
46 unsigned __rs2) { \
47 return __rs1 op(__rs2 & (mask)); \
48 }
49#define __packed_shift8(name, ty, op) __packed_shift(name, ty, op, 0x7)
50#define __packed_shift16(name, ty, op) __packed_shift(name, ty, op, 0xf)
51#define __packed_shift32(name, ty, op) __packed_shift(name, ty, op, 0x1f)
52
53#define __packed_scalar_binary_op(name, ty, scalar_ty, op, splat) \
54 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
55 scalar_ty __rs2) { \
56 return __rs1 op splat(ty, __rs2); \
57 }
58
59#define __packed_binary_op(name, ty, op) \
60 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
61 return __rs1 op __rs2; \
62 }
63
64#define __packed_unary_op(name, ty, op) \
65 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
66 return op __rs1; \
67 }
68
69#define __packed_extract(name, rty, ty, max_idx) \
70 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __v, \
71 unsigned __idx) \
72 __attribute__((__enable_if__( \
73 __idx <= (max_idx), \
74 "index must be a constant integer from 0 to " #max_idx))) { \
75 return __v[__idx]; \
76 }
77
78#define __packed_subvector_extract8(name, rty, ty) \
79 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __v, \
80 unsigned __idx) \
81 __attribute__((__enable_if__( \
82 __idx <= 1, "index must be a constant integer from 0 to 1"))) { \
83 return __idx ? __builtin_shufflevector(__v, __v, 4, 5, 6, 7) \
84 : __builtin_shufflevector(__v, __v, 0, 1, 2, 3); \
85 }
86#define __packed_subvector_extract4(name, rty, ty) \
87 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __v, \
88 unsigned __idx) \
89 __attribute__((__enable_if__( \
90 __idx <= 1, "index must be a constant integer from 0 to 1"))) { \
91 return __idx ? __builtin_shufflevector(__v, __v, 2, 3) \
92 : __builtin_shufflevector(__v, __v, 0, 1); \
93 }
94
95#define __packed_store(name, ty, elt_ty) \
96 static __inline__ void __DEFAULT_FN_ATTRS __riscv_##name(elt_ty *__p, \
97 ty __v) { \
98 typedef ty __attribute__((__aligned__(1))) ua_ty; \
99 *(ua_ty *)__p = __v; \
100 }
101
102#define __packed_binary_builtin(name, ty, builtin) \
103 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
104 return builtin(__rs1, __rs2); \
105 }
106
107#define __packed_binary_builtin_mixed(name, rty, ty1, ty2, builtin) \
108 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty1 __rs1, \
109 ty2 __rs2) { \
110 return builtin(__rs1, __rs2); \
111 }
112
113#define __packed_ternary_builtin(name, ty, builtin) \
114 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rd, ty __rs1, \
115 ty __rs2) { \
116 return builtin(__rd, __rs1, __rs2); \
117 }
118
119#define __packed_ternary_builtin_mixed(name, rty, ty1, ty2, builtin) \
120 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(rty __rd, ty1 __rs1, \
121 ty2 __rs2) { \
122 return builtin(__rd, __rs1, __rs2); \
123 }
124
125#define __packed_sh1add(name, ty) \
126 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
127 return (__rs1 << 1) + __rs2; \
128 }
129
130/* TODO: switch to sadd_sat(__builtin_elementwise_shl_sat(a, 1), b) once a
131 * generic elementwise shl_sat builtin exists. sadd_sat(a, a) is equivalent
132 * for signed types and the backend's saturating_shl1 PatFrags matches both
133 * shapes. */
134#define __packed_sh1sadd(name, ty) \
135 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
136 return __builtin_elementwise_add_sat( \
137 __builtin_elementwise_add_sat(__rs1, __rs1), __rs2); \
138 }
139
140#define __packed_cmp(name, ty, rty, op) \
141 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
142 ty __rs2) { \
143 return (rty)(__rs1 op __rs2); \
144 }
145
146#define __packed_pabs(name, ty, rty) \
147 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
148 return (rty)__builtin_elementwise_abs(__rs1); \
149 }
150
151#define __packed_binary_builtin_cast(name, ty, rty, builtin) \
152 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
153 ty __rs2) { \
154 return (rty)builtin(__rs1, __rs2); \
155 }
156
157#define __packed_reduction(name, rty, ty, builtin) \
158 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
159 rty __rs2) { \
160 return builtin(__rs1, __rs2); \
161 }
162
163#define __packed_merge_builtin(name, ty, mask_ty, builtin) \
164 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2, \
165 mask_ty __rd) { \
166 return (ty)builtin(__rs1, __rs2, __rd); \
167 }
168
169#define __packed_unary_builtin(name, ty, builtin) \
170 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
171 return builtin(__rs1); \
172 }
173
174#define __packed_widen_convert(name, rty, ty) \
175 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
176 return __builtin_convertvector(__rs1, rty); \
177 }
178#define __packed_widen_binary_op(name, rty, ty, op) \
179 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
180 ty __rs2) { \
181 return __builtin_convertvector(__rs1, rty) \
182 op __builtin_convertvector(__rs2, rty); \
183 }
184#define __packed_widen_binary_acc_op(name, rty, ty, op) \
185 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(rty __rd, ty __rs1, \
186 ty __rs2) { \
187 return __rd op __builtin_convertvector(__rs1, rty) \
188 op __builtin_convertvector(__rs2, rty); \
189 }
190#define __packed_widen_mul(name, rty, ty) \
191 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
192 ty __rs2) { \
193 return __builtin_convertvector(__rs1, rty) * \
194 __builtin_convertvector(__rs2, rty); \
195 }
196#define __packed_widen_mulsu(name, rty, ty1, ty2, uty) \
197 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty1 __rs1, \
198 ty2 __rs2) { \
199 return __builtin_convertvector(__rs1, rty) * \
200 (rty) __builtin_convertvector(__rs2, uty); \
201 }
202#define __packed_widen_high2(name, rty, ty) \
203 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
204 return (rty)__builtin_shufflevector((ty){0}, __rs1, 0, 2, 1, 3); \
205 }
206#define __packed_widen_high4(name, rty, ty) \
207 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
208 return (rty)__builtin_shufflevector((ty){0}, __rs1, 0, 4, 1, 5, 2, 6, 3, \
209 7); \
210 }
211
212#define __packed_narrow_even2(name, rty, ty, sty) \
213 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
214 return __builtin_convertvector(__rs1, rty); \
215 }
216#define __packed_narrow_even4(name, rty, ty, sty) \
217 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
218 return __builtin_convertvector(__rs1, rty); \
219 }
220#define __packed_narrow_odd2(name, rty, ty, sty, uty) \
221 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
222 return __builtin_shufflevector((sty)__rs1, (sty)__rs1, 1, 3); \
223 }
224#define __packed_narrow_odd4(name, rty, ty, sty, uty) \
225 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
226 return __builtin_shufflevector((sty)__rs1, (sty)__rs1, 1, 3, 5, 7); \
227 }
228
229/* Packed Reverse: reverse the order of the elements. Lowered to a single
230 * rev8/rev16/ppairoe.* by the backend's packed reverse-shuffle handling. */
231#define __packed_reverse2(name, ty) \
232 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
233 return __builtin_shufflevector(__rs1, __rs1, 1, 0); \
234 }
235#define __packed_reverse4(name, ty) \
236 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
237 return __builtin_shufflevector(__rs1, __rs1, 3, 2, 1, 0); \
238 }
239#define __packed_reverse8(name, ty) \
240 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
241 return __builtin_shufflevector(__rs1, __rs1, 7, 6, 5, 4, 3, 2, 1, 0); \
242 }
243
244#define __packed_zip2(name, rty, ty) \
245 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
246 ty __rs2) { \
247 return __builtin_shufflevector(__rs1, __rs2, 0, 2, 1, 3); \
248 }
249#define __packed_zip4(name, rty, ty) \
250 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
251 ty __rs2) { \
252 return __builtin_shufflevector(__rs1, __rs2, 0, 4, 1, 5, 2, 6, 3, 7); \
253 }
254#define __packed_unzipe2(name, rty, ty) \
255 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
256 return __builtin_shufflevector(__rs1, __rs1, 0, 2); \
257 }
258#define __packed_unzipe4(name, rty, ty) \
259 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
260 return __builtin_shufflevector(__rs1, __rs1, 0, 2, 4, 6); \
261 }
262#define __packed_unzipo2(name, rty, ty) \
263 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
264 return __builtin_shufflevector(__rs1, __rs1, 1, 3); \
265 }
266#define __packed_unzipo4(name, rty, ty) \
267 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1) { \
268 return __builtin_shufflevector(__rs1, __rs1, 1, 3, 5, 7); \
269 }
270
271#define __packed_concat2(name, rty, ty) \
272 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __lo, ty __hi) { \
273 return __builtin_shufflevector(__lo, __hi, 0, 1, 2, 3); \
274 }
275#define __packed_concat4(name, rty, ty) \
276 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __lo, ty __hi) { \
277 return __builtin_shufflevector(__lo, __hi, 0, 1, 2, 3, 4, 5, 6, 7); \
278 }
279
280#define __packed_pair_ee4(name, ty) \
281 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
282 return __builtin_shufflevector(__rs1, __rs2, 0, 4, 2, 6); \
283 }
284#define __packed_pair_eo4(name, ty) \
285 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
286 return __builtin_shufflevector(__rs1, __rs2, 0, 5, 2, 7); \
287 }
288#define __packed_pair_oe4(name, ty) \
289 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
290 return __builtin_shufflevector(__rs1, __rs2, 1, 4, 3, 6); \
291 }
292#define __packed_pair_oo4(name, ty) \
293 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
294 return __builtin_shufflevector(__rs1, __rs2, 1, 5, 3, 7); \
295 }
296#define __packed_pair_ee8(name, ty) \
297 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
298 return __builtin_shufflevector(__rs1, __rs2, 0, 8, 2, 10, 4, 12, 6, 14); \
299 }
300#define __packed_pair_eo8(name, ty) \
301 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
302 return __builtin_shufflevector(__rs1, __rs2, 0, 9, 2, 11, 4, 13, 6, 15); \
303 }
304#define __packed_pair_oe8(name, ty) \
305 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
306 return __builtin_shufflevector(__rs1, __rs2, 1, 8, 3, 10, 5, 12, 7, 14); \
307 }
308#define __packed_pair_oo8(name, ty) \
309 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, ty __rs2) { \
310 return __builtin_shufflevector(__rs1, __rs2, 1, 9, 3, 11, 5, 13, 7, 15); \
311 }
312
313#define __packed_nzip2(name, rty, ty) \
314 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
315 ty __rs2) { \
316 return __builtin_shufflevector((rty)__rs1, (rty)__rs2, 0, 4, 2, 6); \
317 }
318#define __packed_nzip4(name, rty, ty) \
319 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
320 ty __rs2) { \
321 return __builtin_shufflevector((rty)__rs1, (rty)__rs2, 0, 8, 2, 10, 4, 12, \
322 6, 14); \
323 }
324#define __packed_nziph2(name, rty, ty) \
325 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
326 ty __rs2) { \
327 return __builtin_shufflevector((rty)__rs1, (rty)__rs2, 1, 5, 3, 7); \
328 }
329#define __packed_nziph4(name, rty, ty) \
330 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
331 ty __rs2) { \
332 return __builtin_shufflevector((rty)__rs1, (rty)__rs2, 1, 9, 3, 11, 5, 13, \
333 7, 15); \
334 }
335
336#define __packed_abdsum(name, rty, ty, builtin) \
337 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(ty __rs1, \
338 ty __rs2) { \
339 return builtin(__rs1, __rs2); \
340 }
341
342#define __packed_ternary_builtin_cast(name, rty, ty, builtin) \
343 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_##name(rty __rd, ty __rs1, \
344 ty __rs2) { \
345 return builtin(__rd, __rs1, __rs2); \
346 }
347
348#define __packed_reinterpret(name, rty, ty) \
349 static __inline__ rty __DEFAULT_FN_ATTRS __riscv_preinterpret_##name( \
350 ty __x) { \
351 return __builtin_bit_cast(rty, __x); \
352 }
353
354#define __packed_insert(name, ty, elt_ty, max_idx) \
355 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(ty __v, elt_ty __e, \
356 unsigned __idx) \
357 __attribute__((__enable_if__( \
358 __idx <= (max_idx), \
359 "index must be a constant integer from 0 to " #max_idx))) { \
360 __v[__idx] = __e; \
361 return __v; \
362 }
363
364#define __packed_join2(name, ty, elt_ty) \
365 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(elt_ty __e0, \
366 elt_ty __e1) { \
367 return (ty){__e0, __e1}; \
368 }
369
370#define __packed_join4(name, ty, elt_ty) \
371 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name( \
372 elt_ty __e0, elt_ty __e1, elt_ty __e2, elt_ty __e3) { \
373 return (ty){__e0, __e1, __e2, __e3}; \
374 }
375
376#define __packed_load(name, ty, elt_ty) \
377 static __inline__ ty __DEFAULT_FN_ATTRS __riscv_##name(elt_ty *__p) { \
378 typedef ty __attribute__((__aligned__(1))) ua_ty; \
379 return *(ua_ty *)__p; \
380 }
381
382// clang-format off: macro call sites have no trailing semicolons, which
383// confuses clang-format into a deeply nested expression.
384
385/* Scalar Bitmanip */
386__packed_unary_builtin(rev_32, uint32_t, __builtin_bitreverse32)
387#if __riscv_xlen == 64
388__packed_unary_builtin(rev_64, uint64_t, __builtin_bitreverse64)
389#endif
390
391/* Scalar Saturating Addition and Subtraction */
392__packed_binary_builtin(sadd_i32, int32_t, __builtin_elementwise_add_sat)
393__packed_binary_builtin(saddu_u32, uint32_t, __builtin_elementwise_add_sat)
394__packed_binary_builtin(ssub_i32, int32_t, __builtin_elementwise_sub_sat)
395__packed_binary_builtin(ssubu_u32, uint32_t, __builtin_elementwise_sub_sat)
396
397/* Scalar Absolute Value */
399#if __riscv_xlen == 64
400__packed_pabs(abs_u64, int64_t, uint64_t)
401#endif
402
403/* Packed Splat (32-bit) */
408
409/* Packed Splat (64-bit) */
416
417/* Packed Addition and Subtraction (32-bit) */
423__packed_binary_op(psub_u8x4, uint8x4_t, -)
425__packed_binary_op(psub_u16x2, uint16x2_t, -)
427__packed_unary_op(pneg_i16x2, int16x2_t, -)
428
429/* Packed Addition and Subtraction (64-bit) */
437__packed_binary_op(psub_u8x8, uint8x8_t, -)
439__packed_binary_op(psub_u16x4, uint16x4_t, -)
441__packed_binary_op(psub_u32x2, uint32x2_t, -)
443__packed_unary_op(pneg_i16x4, int16x4_t, -)
445
446/* Packed Addition with Scalar (32-bit) */
453
454/* Packed Addition with Scalar (64-bit) */
465
466/* Packed Saturating Addition and Subtraction (32-bit) */
467__packed_binary_builtin(psadd_i8x4, int8x4_t, __builtin_elementwise_add_sat)
468__packed_binary_builtin(psadd_i16x2, int16x2_t, __builtin_elementwise_add_sat)
469__packed_binary_builtin(psaddu_u8x4, uint8x4_t, __builtin_elementwise_add_sat)
470__packed_binary_builtin(psaddu_u16x2, uint16x2_t, __builtin_elementwise_add_sat)
471__packed_binary_builtin(pssub_i8x4, int8x4_t, __builtin_elementwise_sub_sat)
472__packed_binary_builtin(pssub_i16x2, int16x2_t, __builtin_elementwise_sub_sat)
473__packed_binary_builtin(pssubu_u8x4, uint8x4_t, __builtin_elementwise_sub_sat)
474__packed_binary_builtin(pssubu_u16x2, uint16x2_t, __builtin_elementwise_sub_sat)
475
476/* Packed Saturating Addition and Subtraction (64-bit) */
477__packed_binary_builtin(psadd_i8x8, int8x8_t, __builtin_elementwise_add_sat)
478__packed_binary_builtin(psadd_i16x4, int16x4_t, __builtin_elementwise_add_sat)
479__packed_binary_builtin(psadd_i32x2, int32x2_t, __builtin_elementwise_add_sat)
480__packed_binary_builtin(psaddu_u8x8, uint8x8_t, __builtin_elementwise_add_sat)
481__packed_binary_builtin(psaddu_u16x4, uint16x4_t, __builtin_elementwise_add_sat)
482__packed_binary_builtin(psaddu_u32x2, uint32x2_t, __builtin_elementwise_add_sat)
483__packed_binary_builtin(pssub_i8x8, int8x8_t, __builtin_elementwise_sub_sat)
484__packed_binary_builtin(pssub_i16x4, int16x4_t, __builtin_elementwise_sub_sat)
485__packed_binary_builtin(pssub_i32x2, int32x2_t, __builtin_elementwise_sub_sat)
486__packed_binary_builtin(pssubu_u8x8, uint8x8_t, __builtin_elementwise_sub_sat)
487__packed_binary_builtin(pssubu_u16x4, uint16x4_t, __builtin_elementwise_sub_sat)
488__packed_binary_builtin(pssubu_u32x2, uint32x2_t, __builtin_elementwise_sub_sat)
489
490/* Packed Shift-Add (32-bit) */
491__packed_sh1add(psh1add_i16x2, int16x2_t)
493__packed_sh1sadd(pssh1sadd_i16x2, int16x2_t)
494
495/* Packed Shift-Add (64-bit) */
497__packed_sh1add(psh1add_u16x4, uint16x4_t)
499__packed_sh1add(psh1add_u32x2, uint32x2_t)
501__packed_sh1sadd(pssh1sadd_i32x2, int32x2_t)
502
503/* Packed Exchanged Addition and Subtraction (32-bit) */
504__packed_binary_builtin(pas_x_i16x2, int16x2_t, __builtin_riscv_pas_x_i16x2)
505__packed_binary_builtin(psa_x_i16x2, int16x2_t, __builtin_riscv_psa_x_i16x2)
506__packed_binary_builtin(psas_x_i16x2, int16x2_t, __builtin_riscv_psas_x_i16x2)
507__packed_binary_builtin(pssa_x_i16x2, int16x2_t, __builtin_riscv_pssa_x_i16x2)
508__packed_binary_builtin(paas_x_i16x2, int16x2_t, __builtin_riscv_paas_x_i16x2)
509__packed_binary_builtin(pasa_x_i16x2, int16x2_t, __builtin_riscv_pasa_x_i16x2)
510
511/* Packed Exchanged Addition and Subtraction (64-bit) */
512__packed_binary_builtin(pas_x_i16x4, int16x4_t, __builtin_riscv_pas_x_i16x4)
513__packed_binary_builtin(psa_x_i16x4, int16x4_t, __builtin_riscv_psa_x_i16x4)
514__packed_binary_builtin(psas_x_i16x4, int16x4_t, __builtin_riscv_psas_x_i16x4)
515__packed_binary_builtin(pssa_x_i16x4, int16x4_t, __builtin_riscv_pssa_x_i16x4)
516__packed_binary_builtin(paas_x_i16x4, int16x4_t, __builtin_riscv_paas_x_i16x4)
517__packed_binary_builtin(pasa_x_i16x4, int16x4_t, __builtin_riscv_pasa_x_i16x4)
518__packed_binary_builtin(pas_x_i32x2, int32x2_t, __builtin_riscv_pas_x_i32x2)
519__packed_binary_builtin(psa_x_i32x2, int32x2_t, __builtin_riscv_psa_x_i32x2)
520__packed_binary_builtin(psas_x_i32x2, int32x2_t, __builtin_riscv_psas_x_i32x2)
521__packed_binary_builtin(pssa_x_i32x2, int32x2_t, __builtin_riscv_pssa_x_i32x2)
522__packed_binary_builtin(paas_x_i32x2, int32x2_t, __builtin_riscv_paas_x_i32x2)
523__packed_binary_builtin(pasa_x_i32x2, int32x2_t, __builtin_riscv_pasa_x_i32x2)
524
525/* Packed Minimum and Maximum (32-bit) */
526__packed_binary_builtin(pmin_i8x4, int8x4_t, __builtin_elementwise_min)
527__packed_binary_builtin(pmin_i16x2, int16x2_t, __builtin_elementwise_min)
528__packed_binary_builtin(pminu_u8x4, uint8x4_t, __builtin_elementwise_min)
529__packed_binary_builtin(pminu_u16x2, uint16x2_t, __builtin_elementwise_min)
530__packed_binary_builtin(pmax_i8x4, int8x4_t, __builtin_elementwise_max)
531__packed_binary_builtin(pmax_i16x2, int16x2_t, __builtin_elementwise_max)
532__packed_binary_builtin(pmaxu_u8x4, uint8x4_t, __builtin_elementwise_max)
533__packed_binary_builtin(pmaxu_u16x2, uint16x2_t, __builtin_elementwise_max)
534
535/* Packed Minimum and Maximum (64-bit) */
536__packed_binary_builtin(pmin_i8x8, int8x8_t, __builtin_elementwise_min)
537__packed_binary_builtin(pmin_i16x4, int16x4_t, __builtin_elementwise_min)
538__packed_binary_builtin(pmin_i32x2, int32x2_t, __builtin_elementwise_min)
539__packed_binary_builtin(pminu_u8x8, uint8x8_t, __builtin_elementwise_min)
540__packed_binary_builtin(pminu_u16x4, uint16x4_t, __builtin_elementwise_min)
541__packed_binary_builtin(pminu_u32x2, uint32x2_t, __builtin_elementwise_min)
542__packed_binary_builtin(pmax_i8x8, int8x8_t, __builtin_elementwise_max)
543__packed_binary_builtin(pmax_i16x4, int16x4_t, __builtin_elementwise_max)
544__packed_binary_builtin(pmax_i32x2, int32x2_t, __builtin_elementwise_max)
545__packed_binary_builtin(pmaxu_u8x8, uint8x8_t, __builtin_elementwise_max)
546__packed_binary_builtin(pmaxu_u16x4, uint16x4_t, __builtin_elementwise_max)
547__packed_binary_builtin(pmaxu_u32x2, uint32x2_t, __builtin_elementwise_max)
548
549/* Packed Comparison (32-bit) */
550__packed_cmp(pmseq_i8x4_u8x4, int8x4_t, uint8x4_t, ==)
551__packed_cmp(pmseq_u8x4_u8x4, uint8x4_t, uint8x4_t, ==)
552__packed_cmp(pmsne_i8x4_u8x4, int8x4_t, uint8x4_t, !=)
553__packed_cmp(pmsne_u8x4_u8x4, uint8x4_t, uint8x4_t, !=)
554__packed_cmp(pmslt_u8x4, int8x4_t, uint8x4_t, <)
555__packed_cmp(pmsltu_u8x4, uint8x4_t, uint8x4_t, <)
556__packed_cmp(pmsgt_u8x4, int8x4_t, uint8x4_t, >)
557__packed_cmp(pmsgtu_u8x4, uint8x4_t, uint8x4_t, >)
558__packed_cmp(pmsge_u8x4, int8x4_t, uint8x4_t, >=)
559__packed_cmp(pmsgeu_u8x4, uint8x4_t, uint8x4_t, >=)
560__packed_cmp(pmsle_u8x4, int8x4_t, uint8x4_t, <=)
561__packed_cmp(pmsleu_u8x4, uint8x4_t, uint8x4_t, <=)
562__packed_cmp(pmseq_i16x2_u16x2, int16x2_t, uint16x2_t, ==)
563__packed_cmp(pmseq_u16x2_u16x2, uint16x2_t, uint16x2_t, ==)
564__packed_cmp(pmsne_i16x2_u16x2, int16x2_t, uint16x2_t, !=)
565__packed_cmp(pmsne_u16x2_u16x2, uint16x2_t, uint16x2_t, !=)
566__packed_cmp(pmslt_u16x2, int16x2_t, uint16x2_t, <)
567__packed_cmp(pmsltu_u16x2, uint16x2_t, uint16x2_t, <)
568__packed_cmp(pmsgt_u16x2, int16x2_t, uint16x2_t, >)
569__packed_cmp(pmsgtu_u16x2, uint16x2_t, uint16x2_t, >)
570__packed_cmp(pmsge_u16x2, int16x2_t, uint16x2_t, >=)
571__packed_cmp(pmsgeu_u16x2, uint16x2_t, uint16x2_t, >=)
572__packed_cmp(pmsle_u16x2, int16x2_t, uint16x2_t, <=)
573__packed_cmp(pmsleu_u16x2, uint16x2_t, uint16x2_t, <=)
574
575/* Packed Comparison (64-bit) */
576__packed_cmp(pmseq_i8x8_u8x8, int8x8_t, uint8x8_t, ==)
577__packed_cmp(pmseq_u8x8_u8x8, uint8x8_t, uint8x8_t, ==)
578__packed_cmp(pmsne_i8x8_u8x8, int8x8_t, uint8x8_t, !=)
579__packed_cmp(pmsne_u8x8_u8x8, uint8x8_t, uint8x8_t, !=)
580__packed_cmp(pmslt_u8x8, int8x8_t, uint8x8_t, <)
581__packed_cmp(pmsltu_u8x8, uint8x8_t, uint8x8_t, <)
582__packed_cmp(pmsgt_u8x8, int8x8_t, uint8x8_t, >)
583__packed_cmp(pmsgtu_u8x8, uint8x8_t, uint8x8_t, >)
584__packed_cmp(pmsge_u8x8, int8x8_t, uint8x8_t, >=)
585__packed_cmp(pmsgeu_u8x8, uint8x8_t, uint8x8_t, >=)
586__packed_cmp(pmsle_u8x8, int8x8_t, uint8x8_t, <=)
587__packed_cmp(pmsleu_u8x8, uint8x8_t, uint8x8_t, <=)
588__packed_cmp(pmseq_i16x4_u16x4, int16x4_t, uint16x4_t, ==)
589__packed_cmp(pmseq_u16x4_u16x4, uint16x4_t, uint16x4_t, ==)
590__packed_cmp(pmsne_i16x4_u16x4, int16x4_t, uint16x4_t, !=)
591__packed_cmp(pmsne_u16x4_u16x4, uint16x4_t, uint16x4_t, !=)
592__packed_cmp(pmslt_u16x4, int16x4_t, uint16x4_t, <)
593__packed_cmp(pmsltu_u16x4, uint16x4_t, uint16x4_t, <)
594__packed_cmp(pmsgt_u16x4, int16x4_t, uint16x4_t, >)
595__packed_cmp(pmsgtu_u16x4, uint16x4_t, uint16x4_t, >)
596__packed_cmp(pmsge_u16x4, int16x4_t, uint16x4_t, >=)
597__packed_cmp(pmsgeu_u16x4, uint16x4_t, uint16x4_t, >=)
598__packed_cmp(pmsle_u16x4, int16x4_t, uint16x4_t, <=)
599__packed_cmp(pmsleu_u16x4, uint16x4_t, uint16x4_t, <=)
600__packed_cmp(pmseq_i32x2_u32x2, int32x2_t, uint32x2_t, ==)
601__packed_cmp(pmseq_u32x2_u32x2, uint32x2_t, uint32x2_t, ==)
602__packed_cmp(pmsne_i32x2_u32x2, int32x2_t, uint32x2_t, !=)
603__packed_cmp(pmsne_u32x2_u32x2, uint32x2_t, uint32x2_t, !=)
604__packed_cmp(pmslt_u32x2, int32x2_t, uint32x2_t, <)
605__packed_cmp(pmsltu_u32x2, uint32x2_t, uint32x2_t, <)
606__packed_cmp(pmsgt_u32x2, int32x2_t, uint32x2_t, >)
607__packed_cmp(pmsgtu_u32x2, uint32x2_t, uint32x2_t, >)
608__packed_cmp(pmsge_u32x2, int32x2_t, uint32x2_t, >=)
609__packed_cmp(pmsgeu_u32x2, uint32x2_t, uint32x2_t, >=)
610__packed_cmp(pmsle_u32x2, int32x2_t, uint32x2_t, <=)
611__packed_cmp(pmsleu_u32x2, uint32x2_t, uint32x2_t, <=)
612
613/* Packed Shifts (32-bit) */
614__packed_shift8(psll_s_u8x4, uint8x4_t, <<)
615__packed_shift8(psll_s_i8x4, int8x4_t, <<)
616__packed_shift16(psll_s_u16x2, uint16x2_t, <<)
617__packed_shift16(psll_s_i16x2, int16x2_t, <<)
618__packed_shift8(psrl_s_u8x4, uint8x4_t, >>)
619__packed_shift16(psrl_s_u16x2, uint16x2_t, >>)
620__packed_shift8(psra_s_i8x4, int8x4_t, >>)
621__packed_shift16(psra_s_i16x2, int16x2_t, >>)
622
623/* Packed Shifts (64-bit) */
624__packed_shift8(psll_s_u8x8, uint8x8_t, <<)
625__packed_shift8(psll_s_i8x8, int8x8_t, <<)
626__packed_shift16(psll_s_u16x4, uint16x4_t, <<)
627__packed_shift16(psll_s_i16x4, int16x4_t, <<)
628__packed_shift32(psll_s_u32x2, uint32x2_t, <<)
629__packed_shift32(psll_s_i32x2, int32x2_t, <<)
630__packed_shift8(psrl_s_u8x8, uint8x8_t, >>)
631__packed_shift16(psrl_s_u16x4, uint16x4_t, >>)
632__packed_shift32(psrl_s_u32x2, uint32x2_t, >>)
633__packed_shift8(psra_s_i8x8, int8x8_t, >>)
634__packed_shift16(psra_s_i16x4, int16x4_t, >>)
635__packed_shift32(psra_s_i32x2, int32x2_t, >>)
636
637/* Packed Saturating and Rounding Shifts (32-bit) */
638__packed_binary_builtin_mixed(pssha_s_i16x2, int16x2_t, int16x2_t, int, __builtin_riscv_pssha_s_i16x2)
639__packed_binary_builtin_mixed(psshar_s_i16x2, int16x2_t, int16x2_t, int, __builtin_riscv_psshar_s_i16x2)
640__packed_binary_builtin_mixed(psshl_s_u16x2, uint16x2_t, uint16x2_t, int, __builtin_riscv_psshl_s_u16x2)
641__packed_binary_builtin_mixed(psshlr_s_u16x2, uint16x2_t, uint16x2_t, int, __builtin_riscv_psshlr_s_u16x2)
642
643/* Packed Saturating and Rounding Shifts (64-bit) */
644__packed_binary_builtin_mixed(pssha_s_i16x4, int16x4_t, int16x4_t, int, __builtin_riscv_pssha_s_i16x4)
645__packed_binary_builtin_mixed(pssha_s_i32x2, int32x2_t, int32x2_t, int, __builtin_riscv_pssha_s_i32x2)
646__packed_binary_builtin_mixed(psshar_s_i16x4, int16x4_t, int16x4_t, int, __builtin_riscv_psshar_s_i16x4)
647__packed_binary_builtin_mixed(psshar_s_i32x2, int32x2_t, int32x2_t, int, __builtin_riscv_psshar_s_i32x2)
648__packed_binary_builtin_mixed(psshl_s_u16x4, uint16x4_t, uint16x4_t, int, __builtin_riscv_psshl_s_u16x4)
649__packed_binary_builtin_mixed(psshl_s_u32x2, uint32x2_t, uint32x2_t, int, __builtin_riscv_psshl_s_u32x2)
650__packed_binary_builtin_mixed(psshlr_s_u16x4, uint16x4_t, uint16x4_t, int, __builtin_riscv_psshlr_s_u16x4)
651__packed_binary_builtin_mixed(psshlr_s_u32x2, uint32x2_t, uint32x2_t, int, __builtin_riscv_psshlr_s_u32x2)
652
653/* Packed Element Insert (32-bit) */
654__packed_insert(pset_i8_i8x4, int8x4_t, int8_t, 3)
655__packed_insert(pset_u8_u8x4, uint8x4_t, uint8_t, 3)
656__packed_insert(pset_i16_i16x2, int16x2_t, int16_t, 1)
657__packed_insert(pset_u16_u16x2, uint16x2_t, uint16_t, 1)
658
659/* Packed Element Insert (64-bit) */
660__packed_insert(pset_i8_i8x8, int8x8_t, int8_t, 7)
661__packed_insert(pset_u8_u8x8, uint8x8_t, uint8_t, 7)
662__packed_insert(pset_i16_i16x4, int16x4_t, int16_t, 3)
663__packed_insert(pset_u16_u16x4, uint16x4_t, uint16_t, 3)
664__packed_insert(pset_i32_i32x2, int32x2_t, int32_t, 1)
665__packed_insert(pset_u32_u32x2, uint32x2_t, uint32_t, 1)
666
667/* Packed Element Join (32-bit) */
668__packed_join4(pjoin4_i8x4, int8x4_t, int8_t)
669__packed_join4(pjoin4_u8x4, uint8x4_t, uint8_t)
670__packed_join2(pjoin2_i16x2, int16x2_t, int16_t)
671__packed_join2(pjoin2_u16x2, uint16x2_t, uint16_t)
672
673/* Packed Element Join (64-bit) */
674__packed_join4(pjoin4_i16x4, int16x4_t, int16_t)
675__packed_join4(pjoin4_u16x4, uint16x4_t, uint16_t)
676__packed_join2(pjoin2_i32x2, int32x2_t, int32_t)
677__packed_join2(pjoin2_u32x2, uint32x2_t, uint32_t)
678
679/* Packed Logical Operations (32-bit) */
680__packed_binary_op(pand_i8x4, int8x4_t, &)
681__packed_binary_op(pand_u8x4, uint8x4_t, &)
682__packed_binary_op(pand_i16x2, int16x2_t, &)
683__packed_binary_op(pand_u16x2, uint16x2_t, &)
684__packed_binary_op(por_i8x4, int8x4_t, |)
685__packed_binary_op(por_u8x4, uint8x4_t, |)
686__packed_binary_op(por_i16x2, int16x2_t, |)
687__packed_binary_op(por_u16x2, uint16x2_t, |)
688__packed_binary_op(pxor_i8x4, int8x4_t, ^)
689__packed_binary_op(pxor_u8x4, uint8x4_t, ^)
690__packed_binary_op(pxor_i16x2, int16x2_t, ^)
691__packed_binary_op(pxor_u16x2, uint16x2_t, ^)
692__packed_unary_op(pnot_i8x4, int8x4_t, ~)
693__packed_unary_op(pnot_u8x4, uint8x4_t, ~)
694__packed_unary_op(pnot_i16x2, int16x2_t, ~)
695__packed_unary_op(pnot_u16x2, uint16x2_t, ~)
696
697/* Packed Logical Operations (64-bit) */
698__packed_binary_op(pand_i8x8, int8x8_t, &)
699__packed_binary_op(pand_u8x8, uint8x8_t, &)
700__packed_binary_op(pand_i16x4, int16x4_t, &)
701__packed_binary_op(pand_u16x4, uint16x4_t, &)
702__packed_binary_op(pand_i32x2, int32x2_t, &)
703__packed_binary_op(pand_u32x2, uint32x2_t, &)
704__packed_binary_op(por_i8x8, int8x8_t, |)
705__packed_binary_op(por_u8x8, uint8x8_t, |)
706__packed_binary_op(por_i16x4, int16x4_t, |)
707__packed_binary_op(por_u16x4, uint16x4_t, |)
708__packed_binary_op(por_i32x2, int32x2_t, |)
709__packed_binary_op(por_u32x2, uint32x2_t, |)
710__packed_binary_op(pxor_i8x8, int8x8_t, ^)
711__packed_binary_op(pxor_u8x8, uint8x8_t, ^)
712__packed_binary_op(pxor_i16x4, int16x4_t, ^)
713__packed_binary_op(pxor_u16x4, uint16x4_t, ^)
714__packed_binary_op(pxor_i32x2, int32x2_t, ^)
715__packed_binary_op(pxor_u32x2, uint32x2_t, ^)
716__packed_unary_op(pnot_i8x8, int8x8_t, ~)
717__packed_unary_op(pnot_u8x8, uint8x8_t, ~)
718__packed_unary_op(pnot_i16x4, int16x4_t, ~)
719__packed_unary_op(pnot_u16x4, uint16x4_t, ~)
720__packed_unary_op(pnot_i32x2, int32x2_t, ~)
721__packed_unary_op(pnot_u32x2, uint32x2_t, ~)
722
723/* Packed Widening Convert */
732
733/* Packed Widening Addition and Subtraction */
742
743/* Packed Widening Addition Accumulate */
748
749/* Packed Widening Multiply (32-bit) */
757
758/* Packed Narrowing Convert */
767
768/* Packed Reverse (32-bit) */
769__packed_reverse4(prev_i8x4, int8x4_t)
771__packed_reverse2(prev_i16x2, int16x2_t)
772__packed_reverse2(prev_u16x2, uint16x2_t)
773
774/* Packed Reverse (64-bit) */
775__packed_reverse8(prev_i8x8, int8x8_t)
777__packed_reverse4(prev_i16x4, int16x4_t)
778__packed_reverse4(prev_u16x4, uint16x4_t)
779__packed_reverse2(prev_i32x2, int32x2_t)
780__packed_reverse2(prev_u32x2, uint32x2_t)
781
782/* Packed Zip */
787
788/* Packed Unzip */
789__packed_unzipe4(punzipe_i8x4, int8x4_t, int8x8_t)
790__packed_unzipo4(punzipo_i8x4, int8x4_t, int8x8_t)
793__packed_unzipe2(punzipe_i16x2, int16x2_t, int16x4_t)
794__packed_unzipo2(punzipo_i16x2, int16x2_t, int16x4_t)
797
798/* Packed Pair (32-bit byte forms) */
799__packed_pair_ee4(ppaire_i8x4, int8x4_t)
800__packed_pair_ee4(ppaire_u8x4, uint8x4_t)
801__packed_pair_eo4(ppaireo_i8x4, int8x4_t)
802__packed_pair_eo4(ppaireo_u8x4, uint8x4_t)
803__packed_pair_oe4(ppairoe_i8x4, int8x4_t)
804__packed_pair_oe4(ppairoe_u8x4, uint8x4_t)
805__packed_pair_oo4(ppairo_i8x4, int8x4_t)
806__packed_pair_oo4(ppairo_u8x4, uint8x4_t)
807
808/* Packed Pair (64-bit byte and halfword forms) */
809__packed_pair_ee8(ppaire_i8x8, int8x8_t)
810__packed_pair_ee8(ppaire_u8x8, uint8x8_t)
811__packed_pair_eo8(ppaireo_i8x8, int8x8_t)
812__packed_pair_eo8(ppaireo_u8x8, uint8x8_t)
813__packed_pair_oe8(ppairoe_i8x8, int8x8_t)
814__packed_pair_oe8(ppairoe_u8x8, uint8x8_t)
815__packed_pair_oo8(ppairo_i8x8, int8x8_t)
816__packed_pair_oo8(ppairo_u8x8, uint8x8_t)
817__packed_pair_ee4(ppaire_i16x4, int16x4_t)
818__packed_pair_ee4(ppaire_u16x4, uint16x4_t)
819__packed_pair_eo4(ppaireo_i16x4, int16x4_t)
820__packed_pair_eo4(ppaireo_u16x4, uint16x4_t)
821__packed_pair_oe4(ppairoe_i16x4, int16x4_t)
822__packed_pair_oe4(ppairoe_u16x4, uint16x4_t)
823__packed_pair_oo4(ppairo_i16x4, int16x4_t)
824__packed_pair_oo4(ppairo_u16x4, uint16x4_t)
825
826/* Packed Narrowing Zip (32-bit) */
831
832/* Packed Narrowing Zip (64-bit) */
839__packed_nziph2(pnziph_i16x4, int16x4_t, int32x2_t)
841
842/* Packed Averaging Addition and Subtraction (32-bit) */
843__packed_binary_builtin(paadd_i8x4, int8x4_t, __builtin_riscv_paadd_i8x4)
844__packed_binary_builtin(paadd_i16x2, int16x2_t, __builtin_riscv_paadd_i16x2)
845__packed_binary_builtin(paaddu_u8x4, uint8x4_t, __builtin_riscv_paaddu_u8x4)
846__packed_binary_builtin(paaddu_u16x2, uint16x2_t, __builtin_riscv_paaddu_u16x2)
847__packed_binary_builtin(pasub_i8x4, int8x4_t, __builtin_riscv_pasub_i8x4)
848__packed_binary_builtin(pasub_i16x2, int16x2_t, __builtin_riscv_pasub_i16x2)
849__packed_binary_builtin(pasubu_u8x4, uint8x4_t, __builtin_riscv_pasubu_u8x4)
850__packed_binary_builtin(pasubu_u16x2, uint16x2_t, __builtin_riscv_pasubu_u16x2)
851
852/* Packed Averaging Addition and Subtraction (64-bit) */
853__packed_binary_builtin(paadd_i8x8, int8x8_t, __builtin_riscv_paadd_i8x8)
854__packed_binary_builtin(paadd_i16x4, int16x4_t, __builtin_riscv_paadd_i16x4)
855__packed_binary_builtin(paadd_i32x2, int32x2_t, __builtin_riscv_paadd_i32x2)
856__packed_binary_builtin(paaddu_u8x8, uint8x8_t, __builtin_riscv_paaddu_u8x8)
857__packed_binary_builtin(paaddu_u16x4, uint16x4_t, __builtin_riscv_paaddu_u16x4)
858__packed_binary_builtin(paaddu_u32x2, uint32x2_t, __builtin_riscv_paaddu_u32x2)
859__packed_binary_builtin(pasub_i8x8, int8x8_t, __builtin_riscv_pasub_i8x8)
860__packed_binary_builtin(pasub_i16x4, int16x4_t, __builtin_riscv_pasub_i16x4)
861__packed_binary_builtin(pasub_i32x2, int32x2_t, __builtin_riscv_pasub_i32x2)
862__packed_binary_builtin(pasubu_u8x8, uint8x8_t, __builtin_riscv_pasubu_u8x8)
863__packed_binary_builtin(pasubu_u16x4, uint16x4_t, __builtin_riscv_pasubu_u16x4)
864__packed_binary_builtin(pasubu_u32x2, uint32x2_t, __builtin_riscv_pasubu_u32x2)
865
866/* Packed Absolute Value and Absolute Difference (32-bit) */
869__packed_binary_builtin_cast(pabd_i8x4, int8x4_t, uint8x4_t, __builtin_riscv_pabd_i8x4)
870__packed_binary_builtin_cast(pabd_i16x2, int16x2_t, uint16x2_t, __builtin_riscv_pabd_i16x2)
871__packed_binary_builtin_cast(pabdu_u8x4, uint8x4_t, uint8x4_t, __builtin_riscv_pabdu_u8x4)
872__packed_binary_builtin_cast(pabdu_u16x2, uint16x2_t, uint16x2_t, __builtin_riscv_pabdu_u16x2)
873
874/* Packed Absolute Value and Absolute Difference (64-bit) */
877__packed_binary_builtin_cast(pabd_i8x8, int8x8_t, uint8x8_t, __builtin_riscv_pabd_i8x8)
878__packed_binary_builtin_cast(pabd_i16x4, int16x4_t, uint16x4_t, __builtin_riscv_pabd_i16x4)
879__packed_binary_builtin_cast(pabdu_u8x8, uint8x8_t, uint8x8_t, __builtin_riscv_pabdu_u8x8)
880__packed_binary_builtin_cast(pabdu_u16x4, uint16x4_t, uint16x4_t, __builtin_riscv_pabdu_u16x4)
881
882/* Packed Reduction Sum (32-bit) */
883__packed_reduction(predsum_i8x4_i32, int32_t, int8x4_t, __builtin_riscv_predsum_i8x4_i32)
884__packed_reduction(predsumu_u8x4_u32, uint32_t, uint8x4_t, __builtin_riscv_predsumu_u8x4_u32)
885__packed_reduction(predsum_i16x2_i32, int32_t, int16x2_t, __builtin_riscv_predsum_i16x2_i32)
886__packed_reduction(predsumu_u16x2_u32, uint32_t, uint16x2_t, __builtin_riscv_predsumu_u16x2_u32)
887
888/* Packed Reduction Sum (64-bit) */
889__packed_reduction(predsum_i8x8_i32, int32_t, int8x8_t, __builtin_riscv_predsum_i8x8_i32)
890__packed_reduction(predsumu_u8x8_u32, uint32_t, uint8x8_t, __builtin_riscv_predsumu_u8x8_u32)
891__packed_reduction(predsum_i16x4_i32, int32_t, int16x4_t, __builtin_riscv_predsum_i16x4_i32)
892__packed_reduction(predsumu_u16x4_u32, uint32_t, uint16x4_t, __builtin_riscv_predsumu_u16x4_u32)
893__packed_reduction(predsum_i8x8_i64, int64_t, int8x8_t, __builtin_riscv_predsum_i8x8_i64)
894__packed_reduction(predsumu_u8x8_u64, uint64_t, uint8x8_t, __builtin_riscv_predsumu_u8x8_u64)
895__packed_reduction(predsum_i16x4_i64, int64_t, int16x4_t, __builtin_riscv_predsum_i16x4_i64)
896__packed_reduction(predsumu_u16x4_u64, uint64_t, uint16x4_t, __builtin_riscv_predsumu_u16x4_u64)
897__packed_reduction(predsum_i32x2_i64, int64_t, int32x2_t, __builtin_riscv_predsum_i32x2_i64)
898__packed_reduction(predsumu_u32x2_u64, uint64_t, uint32x2_t, __builtin_riscv_predsumu_u32x2_u64)
899
900/* Packed Merge (32-bit) */
901__packed_merge_builtin(pmerge_u8x4, uint8x4_t, uint8x4_t, __builtin_riscv_pmerge_u8x4)
902__packed_merge_builtin(pmerge_i8x4, int8x4_t, uint8x4_t, __builtin_riscv_pmerge_i8x4)
903__packed_merge_builtin(pmerge_u16x2, uint16x2_t, uint16x2_t, __builtin_riscv_pmerge_u16x2)
904__packed_merge_builtin(pmerge_i16x2, int16x2_t, uint16x2_t, __builtin_riscv_pmerge_i16x2)
905
906/* Packed Merge (64-bit) */
907__packed_merge_builtin(pmerge_u8x8, uint8x8_t, uint8x8_t, __builtin_riscv_pmerge_u8x8)
908__packed_merge_builtin(pmerge_i8x8, int8x8_t, uint8x8_t, __builtin_riscv_pmerge_i8x8)
909__packed_merge_builtin(pmerge_u16x4, uint16x4_t, uint16x4_t, __builtin_riscv_pmerge_u16x4)
910__packed_merge_builtin(pmerge_i16x4, int16x4_t, uint16x4_t, __builtin_riscv_pmerge_i16x4)
911__packed_merge_builtin(pmerge_u32x2, uint32x2_t, uint32x2_t, __builtin_riscv_pmerge_u32x2)
912__packed_merge_builtin(pmerge_i32x2, int32x2_t, uint32x2_t, __builtin_riscv_pmerge_i32x2)
913
914/* Packed Multiply High (32-bit) */
915__packed_binary_builtin(pmulh_i16x2, int16x2_t, __builtin_riscv_pmulh_i16x2)
916__packed_binary_builtin(pmulhr_i16x2, int16x2_t, __builtin_riscv_pmulhr_i16x2)
917__packed_binary_builtin(pmulhu_u16x2, uint16x2_t, __builtin_riscv_pmulhu_u16x2)
918__packed_binary_builtin(pmulhru_u16x2, uint16x2_t, __builtin_riscv_pmulhru_u16x2)
919__packed_binary_builtin_mixed(pmulhsu_i16x2, int16x2_t, int16x2_t, uint16x2_t, __builtin_riscv_pmulhsu_i16x2)
920__packed_binary_builtin_mixed(pmulhrsu_i16x2, int16x2_t, int16x2_t, uint16x2_t, __builtin_riscv_pmulhrsu_i16x2)
921
922/* Packed Multiply High Accumulate (32-bit) */
923__packed_ternary_builtin(pmhacc_i16x2, int16x2_t, __builtin_riscv_pmhacc_i16x2)
924__packed_ternary_builtin(pmhracc_i16x2, int16x2_t, __builtin_riscv_pmhracc_i16x2)
925__packed_ternary_builtin(pmhaccu_u16x2, uint16x2_t, __builtin_riscv_pmhaccu_u16x2)
926__packed_ternary_builtin(pmhraccu_u16x2, uint16x2_t, __builtin_riscv_pmhraccu_u16x2)
927__packed_ternary_builtin_mixed(pmhaccsu_i16x2, int16x2_t, int16x2_t, uint16x2_t, __builtin_riscv_pmhaccsu_i16x2)
928__packed_ternary_builtin_mixed(pmhraccsu_i16x2, int16x2_t, int16x2_t, uint16x2_t, __builtin_riscv_pmhraccsu_i16x2)
929
930/* Packed Multiply High (64-bit) */
931__packed_binary_builtin(pmulh_i16x4, int16x4_t, __builtin_riscv_pmulh_i16x4)
932__packed_binary_builtin(pmulh_i32x2, int32x2_t, __builtin_riscv_pmulh_i32x2)
933__packed_binary_builtin(pmulhr_i16x4, int16x4_t, __builtin_riscv_pmulhr_i16x4)
934__packed_binary_builtin(pmulhr_i32x2, int32x2_t, __builtin_riscv_pmulhr_i32x2)
935__packed_binary_builtin(pmulhu_u16x4, uint16x4_t, __builtin_riscv_pmulhu_u16x4)
936__packed_binary_builtin(pmulhu_u32x2, uint32x2_t, __builtin_riscv_pmulhu_u32x2)
937__packed_binary_builtin(pmulhru_u16x4, uint16x4_t, __builtin_riscv_pmulhru_u16x4)
938__packed_binary_builtin(pmulhru_u32x2, uint32x2_t, __builtin_riscv_pmulhru_u32x2)
939__packed_binary_builtin_mixed(pmulhsu_i16x4, int16x4_t, int16x4_t, uint16x4_t, __builtin_riscv_pmulhsu_i16x4)
940__packed_binary_builtin_mixed(pmulhsu_i32x2, int32x2_t, int32x2_t, uint32x2_t, __builtin_riscv_pmulhsu_i32x2)
941__packed_binary_builtin_mixed(pmulhrsu_i16x4, int16x4_t, int16x4_t, uint16x4_t, __builtin_riscv_pmulhrsu_i16x4)
942__packed_binary_builtin_mixed(pmulhrsu_i32x2, int32x2_t, int32x2_t, uint32x2_t, __builtin_riscv_pmulhrsu_i32x2)
943
944/* Packed Multiply High Accumulate (64-bit) */
945__packed_ternary_builtin(pmhacc_i16x4, int16x4_t, __builtin_riscv_pmhacc_i16x4)
946__packed_ternary_builtin(pmhacc_i32x2, int32x2_t, __builtin_riscv_pmhacc_i32x2)
947__packed_ternary_builtin(pmhracc_i16x4, int16x4_t, __builtin_riscv_pmhracc_i16x4)
948__packed_ternary_builtin(pmhracc_i32x2, int32x2_t, __builtin_riscv_pmhracc_i32x2)
949__packed_ternary_builtin(pmhaccu_u16x4, uint16x4_t, __builtin_riscv_pmhaccu_u16x4)
950__packed_ternary_builtin(pmhaccu_u32x2, uint32x2_t, __builtin_riscv_pmhaccu_u32x2)
951__packed_ternary_builtin(pmhraccu_u16x4, uint16x4_t, __builtin_riscv_pmhraccu_u16x4)
952__packed_ternary_builtin(pmhraccu_u32x2, uint32x2_t, __builtin_riscv_pmhraccu_u32x2)
953__packed_ternary_builtin_mixed(pmhaccsu_i16x4, int16x4_t, int16x4_t, uint16x4_t, __builtin_riscv_pmhaccsu_i16x4)
954__packed_ternary_builtin_mixed(pmhaccsu_i32x2, int32x2_t, int32x2_t, uint32x2_t, __builtin_riscv_pmhaccsu_i32x2)
955__packed_ternary_builtin_mixed(pmhraccsu_i16x4, int16x4_t, int16x4_t, uint16x4_t, __builtin_riscv_pmhraccsu_i16x4)
956__packed_ternary_builtin_mixed(pmhraccsu_i32x2, int32x2_t, int32x2_t, uint32x2_t, __builtin_riscv_pmhraccsu_i32x2)
957
958/* Packed Multiplication with Horizontal Addition (32-bit) */
959__packed_binary_builtin_mixed(pm4add_i8x4, int32_t, int8x4_t, int8x4_t, __builtin_riscv_pm4add_i8x4)
960__packed_binary_builtin_mixed(pm2add_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2add_i16x2)
961__packed_binary_builtin_mixed(pm2add_x_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2add_x_i16x2)
962__packed_binary_builtin_mixed(pm4addu_u8x4, uint32_t, uint8x4_t, uint8x4_t, __builtin_riscv_pm4addu_u8x4)
963__packed_binary_builtin_mixed(pm2addu_u16x2, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_pm2addu_u16x2)
964__packed_binary_builtin_mixed(pmq2add_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pmq2add_i16x2)
965__packed_binary_builtin_mixed(pmqr2add_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pmqr2add_i16x2)
966__packed_binary_builtin_mixed(pm2sadd_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2sadd_i16x2)
967__packed_binary_builtin_mixed(pm2sadd_x_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2sadd_x_i16x2)
968__packed_binary_builtin_mixed(pm2sub_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2sub_i16x2)
969__packed_binary_builtin_mixed(pm2sub_x_i16x2, int32_t, int16x2_t, int16x2_t, __builtin_riscv_pm2sub_x_i16x2)
970__packed_binary_builtin_mixed(pm4addsu_i8x4, int32_t, int8x4_t, uint8x4_t, __builtin_riscv_pm4addsu_i8x4)
971__packed_binary_builtin_mixed(pm2addsu_i16x2, int32_t, int16x2_t, uint16x2_t, __builtin_riscv_pm2addsu_i16x2)
972
973/* Packed Multiplication with Horizontal Addition (64-bit) */
974__packed_binary_builtin_mixed(pm4add_i8x8, int32x2_t, int8x8_t, int8x8_t, __builtin_riscv_pm4add_i8x8)
975__packed_binary_builtin_mixed(pm2add_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2add_i16x4)
976__packed_binary_builtin_mixed(pm2add_x_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2add_x_i16x4)
977__packed_binary_builtin_mixed(pm4addu_u8x8, uint32x2_t, uint8x8_t, uint8x8_t, __builtin_riscv_pm4addu_u8x8)
978__packed_binary_builtin_mixed(pm2addu_u16x4, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pm2addu_u16x4)
979__packed_binary_builtin_mixed(pmq2add_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmq2add_i16x4)
980__packed_binary_builtin_mixed(pmqr2add_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmqr2add_i16x4)
981__packed_binary_builtin_mixed(pm2sadd_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2sadd_i16x4)
982__packed_binary_builtin_mixed(pm2sadd_x_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2sadd_x_i16x4)
983__packed_binary_builtin_mixed(pm2sub_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2sub_i16x4)
984__packed_binary_builtin_mixed(pm2sub_x_i16x4, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pm2sub_x_i16x4)
985__packed_binary_builtin_mixed(pm4addsu_i8x8, int32x2_t, int8x8_t, uint8x8_t, __builtin_riscv_pm4addsu_i8x8)
986__packed_binary_builtin_mixed(pm2addsu_i16x4, int32x2_t, int16x4_t, uint16x4_t, __builtin_riscv_pm2addsu_i16x4)
987__packed_binary_builtin_mixed(pm2add_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pm2add_i32x2)
988__packed_binary_builtin_mixed(pm2add_x_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pm2add_x_i32x2)
989__packed_binary_builtin_mixed(pm2addu_u32x2, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_pm2addu_u32x2)
990__packed_binary_builtin_mixed(pmq2add_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pmq2add_i32x2)
991__packed_binary_builtin_mixed(pm2sub_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pm2sub_i32x2)
992__packed_binary_builtin_mixed(pm2sub_x_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pm2sub_x_i32x2)
993__packed_binary_builtin_mixed(pm2addsu_i32x2, int64_t, int32x2_t, uint32x2_t, __builtin_riscv_pm2addsu_i32x2)
994__packed_binary_builtin_mixed(pmqr2add_i32x2, int64_t, int32x2_t, int32x2_t, __builtin_riscv_pmqr2add_i32x2)
995__packed_binary_builtin_mixed(pm4add_i16x4, int64_t, int16x4_t, int16x4_t, __builtin_riscv_pm4add_i16x4)
996__packed_binary_builtin_mixed(pm4addu_u16x4, uint64_t, uint16x4_t, uint16x4_t, __builtin_riscv_pm4addu_u16x4)
997__packed_binary_builtin_mixed(pm4addsu_i16x4, int64_t, int16x4_t, uint16x4_t, __builtin_riscv_pm4addsu_i16x4)
998
999/* Packed Absolute Difference Sum (32-bit) */
1000__packed_abdsum(pabdsumu_u8x4_u32, uint32_t, uint8x4_t, __builtin_riscv_pabdsumu_u8x4_u32)
1001__packed_ternary_builtin_cast(pabdsumau_u8x4_u32, uint32_t, uint8x4_t, __builtin_riscv_pabdsumau_u8x4_u32)
1002
1003/* Packed Absolute Difference Sum (64-bit) */
1004__packed_abdsum(pabdsumu_u8x8_u32, uint32_t, uint8x8_t, __builtin_riscv_pabdsumu_u8x8_u32)
1005__packed_abdsum(pabdsumu_u8x8_u64, uint64_t, uint8x8_t, __builtin_riscv_pabdsumu_u8x8_u64)
1006__packed_ternary_builtin_cast(pabdsumau_u8x8_u32, uint32_t, uint8x8_t, __builtin_riscv_pabdsumau_u8x8_u32)
1007__packed_ternary_builtin_cast(pabdsumau_u8x8_u64, uint64_t, uint8x8_t, __builtin_riscv_pabdsumau_u8x8_u64)
1008
1009/* Packed Saturating Absolute Value (32-bit) */
1010__packed_unary_builtin(psabs_i8x4, int8x4_t, __builtin_riscv_psabs_i8x4)
1011__packed_unary_builtin(psabs_i16x2, int16x2_t, __builtin_riscv_psabs_i16x2)
1012
1013/* Packed Saturating Absolute Value (64-bit) */
1014__packed_unary_builtin(psabs_i8x8, int8x8_t, __builtin_riscv_psabs_i8x8)
1015__packed_unary_builtin(psabs_i16x4, int16x4_t, __builtin_riscv_psabs_i16x4)
1016
1017/* Packed Sign and Zero Extend (32-bit) */
1018__packed_unary_builtin(psext_b_i16x2, int16x2_t, __builtin_riscv_psext_b_i16x2)
1019__packed_unary_builtin(pzext_b_u16x2, uint16x2_t, __builtin_riscv_pzext_b_u16x2)
1020
1021/* Packed Sign and Zero Extend (64-bit) */
1022__packed_unary_builtin(psext_b_i16x4, int16x4_t, __builtin_riscv_psext_b_i16x4)
1023__packed_unary_builtin(psext_b_i32x2, int32x2_t, __builtin_riscv_psext_b_i32x2)
1024__packed_unary_builtin(psext_h_i32x2, int32x2_t, __builtin_riscv_psext_h_i32x2)
1025__packed_unary_builtin(pzext_b_u16x4, uint16x4_t, __builtin_riscv_pzext_b_u16x4)
1026__packed_unary_builtin(pzext_h_u32x2, uint32x2_t, __builtin_riscv_pzext_h_u32x2)
1027
1028/* Packed "Q-format" Multiplication (32-bit) */
1029__packed_binary_builtin(pmulq_i16x2, int16x2_t, __builtin_riscv_pmulq_i16x2)
1030__packed_binary_builtin(pmulqr_i16x2, int16x2_t, __builtin_riscv_pmulqr_i16x2)
1031
1032/* Packed "Q-format" Multiplication (64-bit) */
1033__packed_binary_builtin(pmulq_i16x4, int16x4_t, __builtin_riscv_pmulq_i16x4)
1034__packed_binary_builtin(pmulqr_i16x4, int16x4_t, __builtin_riscv_pmulqr_i16x4)
1035__packed_binary_builtin(pmulq_i32x2, int32x2_t, __builtin_riscv_pmulq_i32x2)
1036__packed_binary_builtin(pmulqr_i32x2, int32x2_t, __builtin_riscv_pmulqr_i32x2)
1037
1038/* Packed Multiply Parts (32-bit) */
1039__packed_binary_builtin_mixed(pmul_b00_i16x2, int16x2_t, int8x4_t, int8x4_t, __builtin_riscv_pmul_b00_i16x2)
1040__packed_binary_builtin_mixed(pmul_b01_i16x2, int16x2_t, int8x4_t, int8x4_t, __builtin_riscv_pmul_b01_i16x2)
1041__packed_binary_builtin_mixed(pmul_b11_i16x2, int16x2_t, int8x4_t, int8x4_t, __builtin_riscv_pmul_b11_i16x2)
1042__packed_binary_builtin_mixed(pmulu_b00_u16x2, uint16x2_t, uint8x4_t, uint8x4_t, __builtin_riscv_pmulu_b00_u16x2)
1043__packed_binary_builtin_mixed(pmulu_b01_u16x2, uint16x2_t, uint8x4_t, uint8x4_t, __builtin_riscv_pmulu_b01_u16x2)
1044__packed_binary_builtin_mixed(pmulu_b11_u16x2, uint16x2_t, uint8x4_t, uint8x4_t, __builtin_riscv_pmulu_b11_u16x2)
1045__packed_binary_builtin_mixed(pmulsu_b00_i16x2, int16x2_t, int8x4_t, uint8x4_t, __builtin_riscv_pmulsu_b00_i16x2)
1046__packed_binary_builtin_mixed(pmulsu_b11_i16x2, int16x2_t, int8x4_t, uint8x4_t, __builtin_riscv_pmulsu_b11_i16x2)
1047__packed_binary_builtin_mixed(mul_h00_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_mul_h00_i32)
1048__packed_binary_builtin_mixed(mul_h01_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_mul_h01_i32)
1049__packed_binary_builtin_mixed(mul_h11_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_mul_h11_i32)
1050__packed_binary_builtin_mixed(mulu_h00_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_mulu_h00_u32)
1051__packed_binary_builtin_mixed(mulu_h01_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_mulu_h01_u32)
1052__packed_binary_builtin_mixed(mulu_h11_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_mulu_h11_u32)
1053__packed_binary_builtin_mixed(mulsu_h00_i32, int32_t, int16x2_t, uint16x2_t, __builtin_riscv_mulsu_h00_i32)
1054__packed_binary_builtin_mixed(mulsu_h11_i32, int32_t, int16x2_t, uint16x2_t, __builtin_riscv_mulsu_h11_i32)
1055
1056/* Packed Multiply Parts (64-bit) */
1057__packed_binary_builtin_mixed(pmul_b00_i16x4, int16x4_t, int8x8_t, int8x8_t, __builtin_riscv_pmul_b00_i16x4)
1058__packed_binary_builtin_mixed(pmul_b01_i16x4, int16x4_t, int8x8_t, int8x8_t, __builtin_riscv_pmul_b01_i16x4)
1059__packed_binary_builtin_mixed(pmul_b11_i16x4, int16x4_t, int8x8_t, int8x8_t, __builtin_riscv_pmul_b11_i16x4)
1060__packed_binary_builtin_mixed(pmulu_b00_u16x4, uint16x4_t, uint8x8_t, uint8x8_t, __builtin_riscv_pmulu_b00_u16x4)
1061__packed_binary_builtin_mixed(pmulu_b01_u16x4, uint16x4_t, uint8x8_t, uint8x8_t, __builtin_riscv_pmulu_b01_u16x4)
1062__packed_binary_builtin_mixed(pmulu_b11_u16x4, uint16x4_t, uint8x8_t, uint8x8_t, __builtin_riscv_pmulu_b11_u16x4)
1063__packed_binary_builtin_mixed(pmulsu_b00_i16x4, int16x4_t, int8x8_t, uint8x8_t, __builtin_riscv_pmulsu_b00_i16x4)
1064__packed_binary_builtin_mixed(pmulsu_b11_i16x4, int16x4_t, int8x8_t, uint8x8_t, __builtin_riscv_pmulsu_b11_i16x4)
1065__packed_binary_builtin_mixed(pmul_h00_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmul_h00_i32x2)
1066__packed_binary_builtin_mixed(pmul_h01_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmul_h01_i32x2)
1067__packed_binary_builtin_mixed(pmul_h11_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmul_h11_i32x2)
1068__packed_binary_builtin_mixed(pmulu_h00_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmulu_h00_u32x2)
1069__packed_binary_builtin_mixed(pmulu_h01_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmulu_h01_u32x2)
1070__packed_binary_builtin_mixed(pmulu_h11_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmulu_h11_u32x2)
1071__packed_binary_builtin_mixed(pmulsu_h00_i32x2, int32x2_t, int16x4_t, uint16x4_t, __builtin_riscv_pmulsu_h00_i32x2)
1072__packed_binary_builtin_mixed(pmulsu_h11_i32x2, int32x2_t, int16x4_t, uint16x4_t, __builtin_riscv_pmulsu_h11_i32x2)
1073__packed_binary_builtin_mixed(mul_w00_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_mul_w00_i64)
1074__packed_binary_builtin_mixed(mul_w01_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_mul_w01_i64)
1075__packed_binary_builtin_mixed(mul_w11_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_mul_w11_i64)
1076__packed_binary_builtin_mixed(mulu_w00_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_mulu_w00_u64)
1077__packed_binary_builtin_mixed(mulu_w01_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_mulu_w01_u64)
1078__packed_binary_builtin_mixed(mulu_w11_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_mulu_w11_u64)
1079__packed_binary_builtin_mixed(mulsu_w00_i64, int64_t, int32x2_t, uint32x2_t, __builtin_riscv_mulsu_w00_i64)
1080__packed_binary_builtin_mixed(mulsu_w11_i64, int64_t, int32x2_t, uint32x2_t, __builtin_riscv_mulsu_w11_i64)
1081
1082/* Packed "Q-format" Multiply Parts Accumulate (32-bit) */
1083__packed_ternary_builtin_cast(mqacc_h00_i32, int, int16x2_t, __builtin_riscv_mqacc_h00_i32)
1084__packed_ternary_builtin_cast(mqacc_h01_i32, int, int16x2_t, __builtin_riscv_mqacc_h01_i32)
1085__packed_ternary_builtin_cast(mqacc_h11_i32, int, int16x2_t, __builtin_riscv_mqacc_h11_i32)
1086__packed_ternary_builtin_cast(mqracc_h00_i32, int, int16x2_t, __builtin_riscv_mqracc_h00_i32)
1087__packed_ternary_builtin_cast(mqracc_h01_i32, int, int16x2_t, __builtin_riscv_mqracc_h01_i32)
1088__packed_ternary_builtin_cast(mqracc_h11_i32, int, int16x2_t, __builtin_riscv_mqracc_h11_i32)
1089
1090/* Packed "Q-format" Multiply Parts Accumulate (64-bit) */
1091__packed_ternary_builtin_cast(pmqacc_h00_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqacc_h00_i32x2)
1092__packed_ternary_builtin_cast(pmqacc_h01_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqacc_h01_i32x2)
1093__packed_ternary_builtin_cast(pmqacc_h11_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqacc_h11_i32x2)
1094__packed_ternary_builtin_cast(pmqracc_h00_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqracc_h00_i32x2)
1095__packed_ternary_builtin_cast(pmqracc_h01_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqracc_h01_i32x2)
1096__packed_ternary_builtin_cast(pmqracc_h11_i32x2, int32x2_t, int16x4_t, __builtin_riscv_pmqracc_h11_i32x2)
1097__packed_ternary_builtin_cast(mqacc_w00_i64, int64_t, int32x2_t, __builtin_riscv_mqacc_w00_i64)
1098__packed_ternary_builtin_cast(mqacc_w01_i64, int64_t, int32x2_t, __builtin_riscv_mqacc_w01_i64)
1099__packed_ternary_builtin_cast(mqacc_w11_i64, int64_t, int32x2_t, __builtin_riscv_mqacc_w11_i64)
1100__packed_ternary_builtin_cast(mqracc_w00_i64, int64_t, int32x2_t, __builtin_riscv_mqracc_w00_i64)
1101__packed_ternary_builtin_cast(mqracc_w01_i64, int64_t, int32x2_t, __builtin_riscv_mqracc_w01_i64)
1102__packed_ternary_builtin_cast(mqracc_w11_i64, int64_t, int32x2_t, __builtin_riscv_mqracc_w11_i64)
1103
1104/* Packed Multiply Parts Accumulate (32-bit) */
1105__packed_ternary_builtin_mixed(macc_h00_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_macc_h00_i32)
1106__packed_ternary_builtin_mixed(macc_h01_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_macc_h01_i32)
1107__packed_ternary_builtin_mixed(macc_h11_i32, int32_t, int16x2_t, int16x2_t, __builtin_riscv_macc_h11_i32)
1108__packed_ternary_builtin_mixed(maccu_h00_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_maccu_h00_u32)
1109__packed_ternary_builtin_mixed(maccu_h01_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_maccu_h01_u32)
1110__packed_ternary_builtin_mixed(maccu_h11_u32, uint32_t, uint16x2_t, uint16x2_t, __builtin_riscv_maccu_h11_u32)
1111__packed_ternary_builtin_mixed(maccsu_h00_i32, int32_t, int16x2_t, uint16x2_t, __builtin_riscv_maccsu_h00_i32)
1112__packed_ternary_builtin_mixed(maccsu_h11_i32, int32_t, int16x2_t, uint16x2_t, __builtin_riscv_maccsu_h11_i32)
1113
1114/* Packed Multiply Parts Accumulate (64-bit) */
1115__packed_ternary_builtin_mixed(pmacc_h00_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmacc_h00_i32x2)
1116__packed_ternary_builtin_mixed(pmacc_h01_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmacc_h01_i32x2)
1117__packed_ternary_builtin_mixed(pmacc_h11_i32x2, int32x2_t, int16x4_t, int16x4_t, __builtin_riscv_pmacc_h11_i32x2)
1118__packed_ternary_builtin_mixed(pmaccu_h00_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmaccu_h00_u32x2)
1119__packed_ternary_builtin_mixed(pmaccu_h01_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmaccu_h01_u32x2)
1120__packed_ternary_builtin_mixed(pmaccu_h11_u32x2, uint32x2_t, uint16x4_t, uint16x4_t, __builtin_riscv_pmaccu_h11_u32x2)
1121__packed_ternary_builtin_mixed(pmaccsu_h00_i32x2, int32x2_t, int16x4_t, uint16x4_t, __builtin_riscv_pmaccsu_h00_i32x2)
1122__packed_ternary_builtin_mixed(pmaccsu_h11_i32x2, int32x2_t, int16x4_t, uint16x4_t, __builtin_riscv_pmaccsu_h11_i32x2)
1123__packed_ternary_builtin_mixed(macc_w00_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_macc_w00_i64)
1124__packed_ternary_builtin_mixed(macc_w01_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_macc_w01_i64)
1125__packed_ternary_builtin_mixed(macc_w11_i64, int64_t, int32x2_t, int32x2_t, __builtin_riscv_macc_w11_i64)
1126__packed_ternary_builtin_mixed(maccu_w00_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_maccu_w00_u64)
1127__packed_ternary_builtin_mixed(maccu_w01_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_maccu_w01_u64)
1128__packed_ternary_builtin_mixed(maccu_w11_u64, uint64_t, uint32x2_t, uint32x2_t, __builtin_riscv_maccu_w11_u64)
1129__packed_ternary_builtin_mixed(maccsu_w00_i64, int64_t, int32x2_t, uint32x2_t, __builtin_riscv_maccsu_w00_i64)
1130__packed_ternary_builtin_mixed(maccsu_w11_i64, int64_t, int32x2_t, uint32x2_t, __builtin_riscv_maccsu_w11_i64)
1131
1132/* Packed Narrowing Clip Pair (32-bit) */
1133__packed_binary_builtin_cast(pnclipp_i8x4, int16x2_t, int8x4_t, __builtin_riscv_pnclipp_i8x4)
1134__packed_binary_builtin_cast(pnclipup_u8x4, uint16x2_t, uint8x4_t, __builtin_riscv_pnclipup_u8x4)
1135__packed_binary_builtin_cast(pnclipp_i16x2, int, int16x2_t, __builtin_riscv_pnclipp_i16x2)
1136__packed_binary_builtin_cast(pnclipup_u16x2, unsigned int, uint16x2_t, __builtin_riscv_pnclipup_u16x2)
1137
1138/* Packed Narrowing Clip Pair (64-bit) */
1139__packed_binary_builtin_cast(pnclipp_i8x8, int16x4_t, int8x8_t, __builtin_riscv_pnclipp_i8x8)
1140__packed_binary_builtin_cast(pnclipup_u8x8, uint16x4_t, uint8x8_t, __builtin_riscv_pnclipup_u8x8)
1141__packed_binary_builtin_cast(pnclipp_i16x4, int32x2_t, int16x4_t, __builtin_riscv_pnclipp_i16x4)
1142__packed_binary_builtin_cast(pnclipup_u16x4, uint32x2_t, uint16x4_t, __builtin_riscv_pnclipup_u16x4)
1143__packed_binary_builtin_cast(pnclipp_i32x2, int64_t, int32x2_t, __builtin_riscv_pnclipp_i32x2)
1144__packed_binary_builtin_cast(pnclipup_u32x2, uint64_t, uint32x2_t, __builtin_riscv_pnclipup_u32x2)
1145
1146/* Packed Subvector Join */
1147__packed_concat4(pjoin2_i8x8, int8x8_t, int8x4_t)
1149__packed_concat2(pjoin2_i16x4, int16x4_t, int16x2_t)
1151
1152/* Packed Subvector Extract */
1157
1158/* Packed Store (32-bit) */
1159__packed_store(pst_i8x4, int8x4_t, int8_t)
1161__packed_store(pst_i16x2, int16x2_t, int16_t)
1163
1164/* Packed Store (64-bit) */
1165__packed_store(pst_i8x8, int8x8_t, int8_t)
1167__packed_store(pst_i16x4, int16x4_t, int16_t)
1169__packed_store(pst_i32x2, int32x2_t, int32_t)
1171
1172/* Packed Element Extract (32-bit) */
1173__packed_extract(pget_i8x4_i8, int8_t, int8x4_t, 3)
1174__packed_extract(pget_u8x4_u8, uint8_t, uint8x4_t, 3)
1175__packed_extract(pget_i16x2_i16, int16_t, int16x2_t, 1)
1176__packed_extract(pget_u16x2_u16, uint16_t, uint16x2_t, 1)
1177
1178/* Packed Element Extract (64-bit) */
1179__packed_extract(pget_i8x8_i8, int8_t, int8x8_t, 7)
1180__packed_extract(pget_u8x8_u8, uint8_t, uint8x8_t, 7)
1181__packed_extract(pget_i16x4_i16, int16_t, int16x4_t, 3)
1182__packed_extract(pget_u16x4_u16, uint16_t, uint16x4_t, 3)
1183__packed_extract(pget_i32x2_i32, int32_t, int32x2_t, 1)
1184__packed_extract(pget_u32x2_u32, uint32_t, uint32x2_t, 1)
1185
1186/* Packed Load (32-bit) */
1187__packed_load(pld_i8x4, int8x4_t, int8_t)
1189__packed_load(pld_i16x2, int16x2_t, int16_t)
1191
1192/* Packed Load (64-bit) */
1193__packed_load(pld_i8x8, int8x8_t, int8_t)
1195__packed_load(pld_i16x4, int16x4_t, int16_t)
1197__packed_load(pld_i32x2, int32x2_t, int32_t)
1199
1200/* Reinterpret Casts, Packed <-> Scalar (32-bit) */
1217
1218/* Reinterpret Casts, Packed <-> Scalar (64-bit) */
1219__packed_reinterpret(u8x8_u64, uint64_t, uint8x8_t)
1220__packed_reinterpret(u16x4_u64, uint64_t, uint16x4_t)
1221__packed_reinterpret(u32x2_u64, uint64_t, uint32x2_t)
1222__packed_reinterpret(i8x8_u64, uint64_t, int8x8_t)
1223__packed_reinterpret(i16x4_u64, uint64_t, int16x4_t)
1224__packed_reinterpret(i32x2_u64, uint64_t, int32x2_t)
1225__packed_reinterpret(u8x8_i64, int64_t, uint8x8_t)
1226__packed_reinterpret(u16x4_i64, int64_t, uint16x4_t)
1227__packed_reinterpret(u32x2_i64, int64_t, uint32x2_t)
1228__packed_reinterpret(i8x8_i64, int64_t, int8x8_t)
1229__packed_reinterpret(i16x4_i64, int64_t, int16x4_t)
1230__packed_reinterpret(i32x2_i64, int64_t, int32x2_t)
1231__packed_reinterpret(u64_u8x8, uint8x8_t, uint64_t)
1232__packed_reinterpret(u64_u16x4, uint16x4_t, uint64_t)
1233__packed_reinterpret(u64_u32x2, uint32x2_t, uint64_t)
1234__packed_reinterpret(u64_i8x8, int8x8_t, uint64_t)
1235__packed_reinterpret(u64_i16x4, int16x4_t, uint64_t)
1236__packed_reinterpret(u64_i32x2, int32x2_t, uint64_t)
1237__packed_reinterpret(i64_u8x8, uint8x8_t, int64_t)
1238__packed_reinterpret(i64_u16x4, uint16x4_t, int64_t)
1239__packed_reinterpret(i64_u32x2, uint32x2_t, int64_t)
1240__packed_reinterpret(i64_i8x8, int8x8_t, int64_t)
1241__packed_reinterpret(i64_i16x4, int16x4_t, int64_t)
1242__packed_reinterpret(i64_i32x2, int32x2_t, int64_t)
1243
1244/* Reinterpret Casts, Packed <-> Packed (32-bit) */
1257
1258/* Reinterpret Casts, Packed <-> Packed (64-bit) */
1289
1290// clang-format on
1291
1292#undef __packed_splat2
1293#undef __packed_splat4
1294#undef __packed_splat8
1295#undef __packed_splat
1296#undef __packed_shift
1297#undef __packed_shift8
1298#undef __packed_shift16
1299#undef __packed_shift32
1300#undef __packed_scalar_binary_op
1301#undef __packed_binary_op
1302#undef __packed_unary_op
1303#undef __packed_store
1304#undef __packed_binary_builtin
1305#undef __packed_binary_builtin_mixed
1306#undef __packed_ternary_builtin
1307#undef __packed_ternary_builtin_mixed
1308#undef __packed_sh1add
1309#undef __packed_sh1sadd
1310#undef __packed_cmp
1311#undef __packed_pabs
1312#undef __packed_binary_builtin_cast
1313#undef __packed_reduction
1314#undef __packed_merge_builtin
1315#undef __packed_unary_builtin
1316#undef __packed_widen_convert
1317#undef __packed_widen_binary_op
1318#undef __packed_widen_binary_acc_op
1319#undef __packed_widen_mul
1320#undef __packed_widen_mulsu
1321#undef __packed_widen_high2
1322#undef __packed_widen_high4
1323#undef __packed_narrow_even2
1324#undef __packed_narrow_even4
1325#undef __packed_narrow_odd2
1326#undef __packed_narrow_odd4
1327#undef __packed_reverse2
1328#undef __packed_reverse4
1329#undef __packed_reverse8
1330#undef __packed_zip2
1331#undef __packed_zip4
1332#undef __packed_unzipe2
1333#undef __packed_unzipe4
1334#undef __packed_unzipo2
1335#undef __packed_unzipo4
1336#undef __packed_concat2
1337#undef __packed_concat4
1338#undef __packed_pair_ee4
1339#undef __packed_pair_eo4
1340#undef __packed_pair_oe4
1341#undef __packed_pair_oo4
1342#undef __packed_pair_ee8
1343#undef __packed_pair_eo8
1344#undef __packed_pair_oe8
1345#undef __packed_pair_oo8
1346#undef __packed_nzip2
1347#undef __packed_nzip4
1348#undef __packed_nziph2
1349#undef __packed_nziph4
1350#undef __packed_abdsum
1351#undef __packed_ternary_builtin_cast
1352#undef __packed_extract
1353#undef __packed_subvector_extract8
1354#undef __packed_subvector_extract4
1355#undef __packed_insert
1356#undef __packed_join2
1357#undef __packed_join4
1358#undef __packed_load
1359#undef __packed_reinterpret
1360#undef __DEFAULT_FN_ATTRS
1361
1362#if defined(__cplusplus)
1363}
1364#endif
1365
1366#endif /* __RISCV_PACKED_SIMD_H */
#define __packed_insert(name, ty, elt_ty, max_idx)
#define __packed_pair_oe8(name, ty)
#define __packed_cmp(name, ty, rty, op)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t int8x4_t
#define __packed_widen_convert(name, rty, ty)
#define __packed_subvector_extract8(name, rty, ty)
#define __packed_unary_builtin(name, ty, builtin)
#define __packed_widen_mulsu(name, rty, ty1, ty2, uty)
#define __packed_unzipo2(name, rty, ty)
#define __packed_binary_op(name, ty, op)
#define __packed_reinterpret(name, rty, ty)
#define __packed_splat2(ty, x)
int8_t int8x4_t __attribute__((__vector_size__(4)))
#define __packed_reduction(name, rty, ty, builtin)
#define __packed_shift8(name, ty, op)
#define __packed_binary_builtin_mixed(name, rty, ty1, ty2, builtin)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint32x2_t
#define __packed_nziph2(name, rty, ty)
#define __packed_reverse2(name, ty)
#define __packed_pair_ee4(name, ty)
#define __packed_splat8(ty, x)
#define __packed_merge_builtin(name, ty, mask_ty, builtin)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint8x4_t
#define __packed_scalar_binary_op(name, ty, scalar_ty, op, splat)
#define __packed_concat4(name, rty, ty)
#define __packed_shift16(name, ty, op)
#define __packed_pair_eo4(name, ty)
#define __packed_nzip2(name, rty, ty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 int16_t
#define __packed_pair_eo8(name, ty)
#define __packed_reverse8(name, ty)
#define __packed_binary_builtin(name, ty, builtin)
#define __packed_join4(name, ty, elt_ty)
#define __packed_pair_oe4(name, ty)
#define __packed_nziph4(name, rty, ty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint8x8_t
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t int8_t
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 int16x4_t
#define __packed_narrow_even2(name, rty, ty, sty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 int16x2_t
#define __packed_widen_high4(name, rty, ty)
#define __packed_ternary_builtin(name, ty, builtin)
#define __packed_concat2(name, rty, ty)
#define __packed_unary_op(name, ty, op)
#define __packed_extract(name, rty, ty, max_idx)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint16x4_t
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint8_t
#define __packed_pair_oo4(name, ty)
#define __packed_pair_ee8(name, ty)
#define __packed_unzipe4(name, rty, ty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 __packed_splat4 uint16_t
#define __packed_sh1add(name, ty)
#define __packed_pabs(name, ty, rty)
#define __packed_sh1sadd(name, ty)
#define __packed_unzipe2(name, rty, ty)
#define __packed_unzipo4(name, rty, ty)
#define __packed_widen_high2(name, rty, ty)
#define __packed_ternary_builtin_mixed(name, rty, ty1, ty2, builtin)
#define __packed_pair_oo8(name, ty)
#define __packed_shift32(name, ty, op)
#define __packed_nzip4(name, rty, ty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 int32x2_t
#define __packed_zip4(name, rty, ty)
#define __packed_splat(name, ty, scalar_ty, splat)
#define __packed_widen_binary_acc_op(name, rty, ty, op)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 int8x8_t
#define __packed_narrow_odd2(name, rty, ty, sty, uty)
#define __packed_abdsum(name, rty, ty, builtin)
#define __packed_widen_binary_op(name, rty, ty, op)
#define __packed_binary_builtin_cast(name, ty, rty, builtin)
#define __packed_ternary_builtin_cast(name, rty, ty, builtin)
#define __packed_subvector_extract4(name, rty, ty)
#define __packed_narrow_even4(name, rty, ty, sty)
#define __packed_narrow_odd4(name, rty, ty, sty, uty)
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 uint32_t
__builtin_elementwise_add_sat __builtin_elementwise_sub_sat uint32_t __packed_splat4 __packed_splat2 __packed_splat8 __packed_splat4 __packed_splat2 uint16x2_t
#define __packed_widen_mul(name, rty, ty)
#define __packed_zip2(name, rty, ty)
#define __packed_join2(name, ty, elt_ty)
#define __packed_store(name, ty, elt_ty)
#define __packed_splat4(ty, x)
#define __packed_load(name, ty, elt_ty)
#define __packed_reverse4(name, ty)