1 /*===---- arm_neon_sve_bridge.h - ARM NEON SVE Bridge intrinsics -----------===
4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 * See https://llvm.org/LICENSE.txt for license information.
6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
8 *===-----------------------------------------------------------------------===
11 #ifndef __ARM_NEON_SVE_BRIDGE_H
12 #define __ARM_NEON_SVE_BRIDGE_H
21 /* Function attributes */
22 #define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))
25 __attribute__((__always_inline__, __nodebug__, __overloadable__))
27 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s8
)))
28 svint8_t
svset_neonq(svint8_t
, int8x16_t
);
29 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16
)))
30 svint16_t
svset_neonq(svint16_t
, int16x8_t
);
31 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32
)))
32 svint32_t
svset_neonq(svint32_t
, int32x4_t
);
33 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64
)))
34 svint64_t
svset_neonq(svint64_t
, int64x2_t
);
35 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8
)))
36 svuint8_t
svset_neonq(svuint8_t
, uint8x16_t
);
37 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16
)))
38 svuint16_t
svset_neonq(svuint16_t
, uint16x8_t
);
39 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32
)))
40 svuint32_t
svset_neonq(svuint32_t
, uint32x4_t
);
41 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64
)))
42 svuint64_t
svset_neonq(svuint64_t
, uint64x2_t
);
43 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16
)))
44 svfloat16_t
svset_neonq(svfloat16_t
, float16x8_t
);
45 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32
)))
46 svfloat32_t
svset_neonq(svfloat32_t
, float32x4_t
);
47 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64
)))
48 svfloat64_t
svset_neonq(svfloat64_t
, float64x2_t
);
49 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s8
)))
50 svint8_t
svset_neonq_s8(svint8_t
, int8x16_t
);
51 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16
)))
52 svint16_t
svset_neonq_s16(svint16_t
, int16x8_t
);
53 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32
)))
54 svint32_t
svset_neonq_s32(svint32_t
, int32x4_t
);
55 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64
)))
56 svint64_t
svset_neonq_s64(svint64_t
, int64x2_t
);
57 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8
)))
58 svuint8_t
svset_neonq_u8(svuint8_t
, uint8x16_t
);
59 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16
)))
60 svuint16_t
svset_neonq_u16(svuint16_t
, uint16x8_t
);
61 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32
)))
62 svuint32_t
svset_neonq_u32(svuint32_t
, uint32x4_t
);
63 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64
)))
64 svuint64_t
svset_neonq_u64(svuint64_t
, uint64x2_t
);
65 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16
)))
66 svfloat16_t
svset_neonq_f16(svfloat16_t
, float16x8_t
);
67 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32
)))
68 svfloat32_t
svset_neonq_f32(svfloat32_t
, float32x4_t
);
69 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64
)))
70 svfloat64_t
svset_neonq_f64(svfloat64_t
, float64x2_t
);
72 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8
)))
73 int8x16_t
svget_neonq(svint8_t
);
74 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16
)))
75 int16x8_t
svget_neonq(svint16_t
);
76 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32
)))
77 int32x4_t
svget_neonq(svint32_t
);
78 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64
)))
79 int64x2_t
svget_neonq(svint64_t
);
80 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8
)))
81 uint8x16_t
svget_neonq(svuint8_t
);
82 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16
)))
83 uint16x8_t
svget_neonq(svuint16_t
);
84 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32
)))
85 uint32x4_t
svget_neonq(svuint32_t
);
86 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64
)))
87 uint64x2_t
svget_neonq(svuint64_t
);
88 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16
)))
89 float16x8_t
svget_neonq(svfloat16_t
);
90 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32
)))
91 float32x4_t
svget_neonq(svfloat32_t
);
92 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64
)))
93 float64x2_t
svget_neonq(svfloat64_t
);
94 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8
)))
95 int8x16_t
svget_neonq_s8(svint8_t
);
96 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16
)))
97 int16x8_t
svget_neonq_s16(svint16_t
);
98 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32
)))
99 int32x4_t
svget_neonq_s32(svint32_t
);
100 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64
)))
101 int64x2_t
svget_neonq_s64(svint64_t
);
102 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8
)))
103 uint8x16_t
svget_neonq_u8(svuint8_t
);
104 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16
)))
105 uint16x8_t
svget_neonq_u16(svuint16_t
);
106 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32
)))
107 uint32x4_t
svget_neonq_u32(svuint32_t
);
108 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64
)))
109 uint64x2_t
svget_neonq_u64(svuint64_t
);
110 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16
)))
111 float16x8_t
svget_neonq_f16(svfloat16_t
);
112 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32
)))
113 float32x4_t
svget_neonq_f32(svfloat32_t
);
114 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64
)))
115 float64x2_t
svget_neonq_f64(svfloat64_t
);
117 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8
)))
118 svint8_t
svdup_neonq(int8x16_t
);
119 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16
)))
120 svint16_t
svdup_neonq(int16x8_t
);
121 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32
)))
122 svint32_t
svdup_neonq(int32x4_t
);
123 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64
)))
124 svint64_t
svdup_neonq(int64x2_t
);
125 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8
)))
126 svuint8_t
svdup_neonq(uint8x16_t
);
127 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16
)))
128 svuint16_t
svdup_neonq(uint16x8_t
);
129 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32
)))
130 svuint32_t
svdup_neonq(uint32x4_t
);
131 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64
)))
132 svuint64_t
svdup_neonq(uint64x2_t
);
133 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16
)))
134 svfloat16_t
svdup_neonq(float16x8_t
);
135 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32
)))
136 svfloat32_t
svdup_neonq(float32x4_t
);
137 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64
)))
138 svfloat64_t
svdup_neonq(float64x2_t
);
139 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8
)))
140 svint8_t
svdup_neonq_s8(int8x16_t
);
141 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16
)))
142 svint16_t
svdup_neonq_s16(int16x8_t
);
143 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32
)))
144 svint32_t
svdup_neonq_s32(int32x4_t
);
145 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64
)))
146 svint64_t
svdup_neonq_s64(int64x2_t
);
147 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8
)))
148 svuint8_t
svdup_neonq_u8(uint8x16_t
);
149 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16
)))
150 svuint16_t
svdup_neonq_u16(uint16x8_t
);
151 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32
)))
152 svuint32_t
svdup_neonq_u32(uint32x4_t
);
153 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64
)))
154 svuint64_t
svdup_neonq_u64(uint64x2_t
);
155 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16
)))
156 svfloat16_t
svdup_neonq_f16(float16x8_t
);
157 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32
)))
158 svfloat32_t
svdup_neonq_f32(float32x4_t
);
159 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64
)))
160 svfloat64_t
svdup_neonq_f64(float64x2_t
);
162 #if defined(__ARM_FEATURE_SVE_BF16)
163 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16
)))
164 svbfloat16_t
svset_neonq(svbfloat16_t
, bfloat16x8_t
);
165 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16
)))
166 svbfloat16_t
svset_neonq_bf16(svbfloat16_t
, bfloat16x8_t
);
167 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16
)))
168 bfloat16x8_t
svget_neonq(svbfloat16_t
);
169 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16
)))
170 bfloat16x8_t
svget_neonq_bf16(svbfloat16_t
);
171 __aio
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16
)))
172 svbfloat16_t
svdup_neonq(bfloat16x8_t
);
173 __ai
__attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16
)))
174 svbfloat16_t
svdup_neonq_bf16(bfloat16x8_t
);
175 #endif // defined(__ARM_FEATURE_SVE_BF16)
184 #endif //__ARM_NEON_SVE_BRIDGE_H