Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
14 | pmbaty | 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 |