Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /*===---- arm_neon_sve_bridge.h - ARM NEON SVE Bridge intrinsics -----------=== |
---|---|
2 | * |
3 | * |
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 |
7 | * |
8 | *===-----------------------------------------------------------------------=== |
9 | */ |
10 | |
11 | #ifndef __ARM_NEON_SVE_BRIDGE_H |
12 | #define __ARM_NEON_SVE_BRIDGE_H |
13 | |
14 | #include <arm_neon.h> |
15 | #include <arm_sve.h> |
16 | |
17 | #ifdef __cplusplus |
18 | extern "C" { |
19 | #endif |
20 | |
21 | /* Function attributes */ |
22 | #define __ai static __inline__ __attribute__((__always_inline__, __nodebug__)) |
23 | #define __aio \ |
24 | static __inline__ \ |
25 | __attribute__((__always_inline__, __nodebug__, __overloadable__)) |
26 | |
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); |
71 | |
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); |
116 | |
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); |
161 | |
162 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16))) |
163 | svbfloat16_t svset_neonq(svbfloat16_t, bfloat16x8_t); |
164 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16))) |
165 | svbfloat16_t svset_neonq_bf16(svbfloat16_t, bfloat16x8_t); |
166 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16))) |
167 | bfloat16x8_t svget_neonq(svbfloat16_t); |
168 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16))) |
169 | bfloat16x8_t svget_neonq_bf16(svbfloat16_t); |
170 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16))) |
171 | svbfloat16_t svdup_neonq(bfloat16x8_t); |
172 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16))) |
173 | svbfloat16_t svdup_neonq_bf16(bfloat16x8_t); |
174 | |
175 | #undef __ai |
176 | #undef __aio |
177 | |
178 | #ifdef __cplusplus |
179 | } // extern "C" |
180 | #endif |
181 | |
182 | #endif //__ARM_NEON_SVE_BRIDGE_H |
183 |
Warning: This file is not a C or C++ file. It does not have highlighting.