clang 20.0.0git
arm_neon_sve_bridge.h
Go to the documentation of this file.
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
18extern "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)))
28svint8_t svset_neonq(svint8_t, int8x16_t);
29__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16)))
30svint16_t svset_neonq(svint16_t, int16x8_t);
31__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32)))
32svint32_t svset_neonq(svint32_t, int32x4_t);
33__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64)))
34svint64_t svset_neonq(svint64_t, int64x2_t);
35__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8)))
36svuint8_t svset_neonq(svuint8_t, uint8x16_t);
37__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16)))
38svuint16_t svset_neonq(svuint16_t, uint16x8_t);
39__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32)))
40svuint32_t svset_neonq(svuint32_t, uint32x4_t);
41__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64)))
42svuint64_t svset_neonq(svuint64_t, uint64x2_t);
43__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16)))
44svfloat16_t svset_neonq(svfloat16_t, float16x8_t);
45__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32)))
46svfloat32_t svset_neonq(svfloat32_t, float32x4_t);
47__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64)))
48svfloat64_t svset_neonq(svfloat64_t, float64x2_t);
49__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s8)))
50svint8_t svset_neonq_s8(svint8_t, int8x16_t);
51__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s16)))
52svint16_t svset_neonq_s16(svint16_t, int16x8_t);
53__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s32)))
54svint32_t svset_neonq_s32(svint32_t, int32x4_t);
55__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_s64)))
56svint64_t svset_neonq_s64(svint64_t, int64x2_t);
57__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u8)))
58svuint8_t svset_neonq_u8(svuint8_t, uint8x16_t);
59__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u16)))
60svuint16_t svset_neonq_u16(svuint16_t, uint16x8_t);
61__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u32)))
62svuint32_t svset_neonq_u32(svuint32_t, uint32x4_t);
63__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_u64)))
64svuint64_t svset_neonq_u64(svuint64_t, uint64x2_t);
65__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f16)))
66svfloat16_t svset_neonq_f16(svfloat16_t, float16x8_t);
67__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f32)))
68svfloat32_t svset_neonq_f32(svfloat32_t, float32x4_t);
69__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_f64)))
70svfloat64_t svset_neonq_f64(svfloat64_t, float64x2_t);
71
72__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8)))
73int8x16_t svget_neonq(svint8_t);
74__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16)))
75int16x8_t svget_neonq(svint16_t);
76__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32)))
77int32x4_t svget_neonq(svint32_t);
78__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64)))
79int64x2_t svget_neonq(svint64_t);
80__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8)))
81uint8x16_t svget_neonq(svuint8_t);
82__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16)))
83uint16x8_t svget_neonq(svuint16_t);
84__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32)))
85uint32x4_t svget_neonq(svuint32_t);
86__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64)))
87uint64x2_t svget_neonq(svuint64_t);
88__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16)))
89float16x8_t svget_neonq(svfloat16_t);
90__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32)))
91float32x4_t svget_neonq(svfloat32_t);
92__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64)))
93float64x2_t svget_neonq(svfloat64_t);
94__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s8)))
95int8x16_t svget_neonq_s8(svint8_t);
96__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s16)))
97int16x8_t svget_neonq_s16(svint16_t);
98__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s32)))
99int32x4_t svget_neonq_s32(svint32_t);
100__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_s64)))
101int64x2_t svget_neonq_s64(svint64_t);
102__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u8)))
103uint8x16_t svget_neonq_u8(svuint8_t);
104__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u16)))
105uint16x8_t svget_neonq_u16(svuint16_t);
106__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u32)))
107uint32x4_t svget_neonq_u32(svuint32_t);
108__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_u64)))
109uint64x2_t svget_neonq_u64(svuint64_t);
110__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f16)))
111float16x8_t svget_neonq_f16(svfloat16_t);
112__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f32)))
113float32x4_t svget_neonq_f32(svfloat32_t);
114__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_f64)))
115float64x2_t svget_neonq_f64(svfloat64_t);
116
117__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8)))
118svint8_t svdup_neonq(int8x16_t);
119__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16)))
120svint16_t svdup_neonq(int16x8_t);
121__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32)))
122svint32_t svdup_neonq(int32x4_t);
123__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64)))
124svint64_t svdup_neonq(int64x2_t);
125__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8)))
126svuint8_t svdup_neonq(uint8x16_t);
127__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16)))
128svuint16_t svdup_neonq(uint16x8_t);
129__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32)))
130svuint32_t svdup_neonq(uint32x4_t);
131__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64)))
132svuint64_t svdup_neonq(uint64x2_t);
133__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16)))
134svfloat16_t svdup_neonq(float16x8_t);
135__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32)))
136svfloat32_t svdup_neonq(float32x4_t);
137__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64)))
138svfloat64_t svdup_neonq(float64x2_t);
139__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s8)))
140svint8_t svdup_neonq_s8(int8x16_t);
141__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s16)))
142svint16_t svdup_neonq_s16(int16x8_t);
143__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s32)))
144svint32_t svdup_neonq_s32(int32x4_t);
145__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_s64)))
146svint64_t svdup_neonq_s64(int64x2_t);
147__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u8)))
148svuint8_t svdup_neonq_u8(uint8x16_t);
149__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u16)))
150svuint16_t svdup_neonq_u16(uint16x8_t);
151__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u32)))
152svuint32_t svdup_neonq_u32(uint32x4_t);
153__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_u64)))
154svuint64_t svdup_neonq_u64(uint64x2_t);
155__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f16)))
156svfloat16_t svdup_neonq_f16(float16x8_t);
157__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f32)))
158svfloat32_t svdup_neonq_f32(float32x4_t);
159__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_f64)))
160svfloat64_t svdup_neonq_f64(float64x2_t);
161
162__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16)))
163svbfloat16_t svset_neonq(svbfloat16_t, bfloat16x8_t);
164__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svset_neonq_bf16)))
165svbfloat16_t svset_neonq_bf16(svbfloat16_t, bfloat16x8_t);
166__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16)))
167bfloat16x8_t svget_neonq(svbfloat16_t);
168__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svget_neonq_bf16)))
169bfloat16x8_t svget_neonq_bf16(svbfloat16_t);
170__aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16)))
171svbfloat16_t svdup_neonq(bfloat16x8_t);
172__ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_neonq_bf16)))
173svbfloat16_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
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
__aio int8x16_t
__aio uint32x4_t
__aio float16x8_t
__aio uint64x2_t
__aio int32x4_t
#define __aio
__aio bfloat16x8_t
__aio float32x4_t
#define __ai
__aio uint8x16_t
__aio int64x2_t
__aio float64x2_t
__aio int16x8_t
__aio uint16x8_t