Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.