Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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