| author | |
| committer | |
| log | ce754724b31e141688e1203ba7bb0a2538f2b544 |
| tree | 2989b6fbb7ebb1ba5370ed9a7fc1317ff935f525 |
| parent | 0181cfe8adfab3e7a682aaec10f932cd3279f40a |
| signature |
80 files changed, 17990 insertions(+), 2925 deletions(-)
lib/include/adcintrin.h+5| ... | @@ -15,7 +15,12 @@ | ... | @@ -15,7 +15,12 @@ |
| 15 | #endif | 15 | #endif |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__)) constexpr | ||
| 21 | #else | ||
| 18 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) | 22 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) |
| 23 | #endif | ||
| 19 | 24 | ||
| 20 | /* Use C++ inline semantics in C++, GNU inline for C mode. */ | 25 | /* Use C++ inline semantics in C++, GNU inline for C mode. */ |
| 21 | #if defined(__cplusplus) | 26 | #if defined(__cplusplus) |
lib/include/adxintrin.h+5| ... | @@ -15,8 +15,13 @@ | ... | @@ -15,8 +15,13 @@ |
| 15 | #define __ADXINTRIN_H | 15 | #define __ADXINTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("adx"))) constexpr | ||
| 21 | #else | ||
| 18 | #define __DEFAULT_FN_ATTRS \ | 22 | #define __DEFAULT_FN_ATTRS \ |
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("adx"))) | 23 | __attribute__((__always_inline__, __nodebug__, __target__("adx"))) |
| 24 | #endif | ||
| 20 | 25 | ||
| 21 | /* Use C++ inline semantics in C++, GNU inline for C mode. */ | 26 | /* Use C++ inline semantics in C++, GNU inline for C mode. */ |
| 22 | #if defined(__cplusplus) | 27 | #if defined(__cplusplus) |
lib/include/altivec.h+8-8| ... | @@ -2502,37 +2502,37 @@ vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) { | ... | @@ -2502,37 +2502,37 @@ vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) { |
| 2502 | 2502 | ||
| 2503 | static __inline__ vector unsigned char __ATTRS_o_ai | 2503 | static __inline__ vector unsigned char __ATTRS_o_ai |
| 2504 | vec_popcnt(vector signed char __a) { | 2504 | vec_popcnt(vector signed char __a) { |
| 2505 | return (vector unsigned char)__builtin_altivec_vpopcntb( | 2505 | return (vector unsigned char)__builtin_elementwise_popcount( |
| 2506 | (vector unsigned char)__a); | 2506 | (vector unsigned char)__a); |
| 2507 | } | 2507 | } |
| 2508 | static __inline__ vector unsigned char __ATTRS_o_ai | 2508 | static __inline__ vector unsigned char __ATTRS_o_ai |
| 2509 | vec_popcnt(vector unsigned char __a) { | 2509 | vec_popcnt(vector unsigned char __a) { |
| 2510 | return __builtin_altivec_vpopcntb(__a); | 2510 | return __builtin_elementwise_popcount(__a); |
| 2511 | } | 2511 | } |
| 2512 | static __inline__ vector unsigned short __ATTRS_o_ai | 2512 | static __inline__ vector unsigned short __ATTRS_o_ai |
| 2513 | vec_popcnt(vector signed short __a) { | 2513 | vec_popcnt(vector signed short __a) { |
| 2514 | return (vector unsigned short)__builtin_altivec_vpopcnth( | 2514 | return (vector unsigned short)__builtin_elementwise_popcount( |
| 2515 | (vector unsigned short)__a); | 2515 | (vector unsigned short)__a); |
| 2516 | } | 2516 | } |
| 2517 | static __inline__ vector unsigned short __ATTRS_o_ai | 2517 | static __inline__ vector unsigned short __ATTRS_o_ai |
| 2518 | vec_popcnt(vector unsigned short __a) { | 2518 | vec_popcnt(vector unsigned short __a) { |
| 2519 | return __builtin_altivec_vpopcnth(__a); | 2519 | return __builtin_elementwise_popcount(__a); |
| 2520 | } | 2520 | } |
| 2521 | static __inline__ vector unsigned int __ATTRS_o_ai | 2521 | static __inline__ vector unsigned int __ATTRS_o_ai |
| 2522 | vec_popcnt(vector signed int __a) { | 2522 | vec_popcnt(vector signed int __a) { |
| 2523 | return __builtin_altivec_vpopcntw((vector unsigned int)__a); | 2523 | return __builtin_elementwise_popcount((vector unsigned int)__a); |
| 2524 | } | 2524 | } |
| 2525 | static __inline__ vector unsigned int __ATTRS_o_ai | 2525 | static __inline__ vector unsigned int __ATTRS_o_ai |
| 2526 | vec_popcnt(vector unsigned int __a) { | 2526 | vec_popcnt(vector unsigned int __a) { |
| 2527 | return __builtin_altivec_vpopcntw(__a); | 2527 | return __builtin_elementwise_popcount(__a); |
| 2528 | } | 2528 | } |
| 2529 | static __inline__ vector unsigned long long __ATTRS_o_ai | 2529 | static __inline__ vector unsigned long long __ATTRS_o_ai |
| 2530 | vec_popcnt(vector signed long long __a) { | 2530 | vec_popcnt(vector signed long long __a) { |
| 2531 | return __builtin_altivec_vpopcntd((vector unsigned long long)__a); | 2531 | return __builtin_elementwise_popcount((vector unsigned long long)__a); |
| 2532 | } | 2532 | } |
| 2533 | static __inline__ vector unsigned long long __ATTRS_o_ai | 2533 | static __inline__ vector unsigned long long __ATTRS_o_ai |
| 2534 | vec_popcnt(vector unsigned long long __a) { | 2534 | vec_popcnt(vector unsigned long long __a) { |
| 2535 | return __builtin_altivec_vpopcntd(__a); | 2535 | return __builtin_elementwise_popcount(__a); |
| 2536 | } | 2536 | } |
| 2537 | 2537 | ||
| 2538 | #define vec_vclz vec_cntlz | 2538 | #define vec_vclz vec_cntlz |
lib/include/amxavx512intrin.h created+382| ... | @@ -0,0 +1,382 @@ | ||
| 1 | /*===--------------------- amxavx512intrin.h - AMXAVX512 --------------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error "Never use <amxavx512intrin.h> directly; include <immintrin.h> instead." | ||
| 11 | #endif // __IMMINTRIN_H | ||
| 12 | |||
| 13 | #ifndef __AMX_AVX512INTRIN_H | ||
| 14 | #define __AMX_AVX512INTRIN_H | ||
| 15 | #if defined(__x86_64__) && defined(__SSE2__) | ||
| 16 | |||
| 17 | #define __DEFAULT_FN_ATTRS_AVX512 \ | ||
| 18 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 19 | __target__("amx-avx512,avx10.2-512"))) | ||
| 20 | |||
| 21 | /// Moves a row from a tile register to a zmm destination register, converting | ||
| 22 | /// the int32 source elements to fp32. The row of the tile is selected by a | ||
| 23 | /// 32b GPR. | ||
| 24 | /// | ||
| 25 | /// \headerfile <x86intrin.h> | ||
| 26 | /// | ||
| 27 | /// \code | ||
| 28 | /// __m512i _tile_cvtrowd2ps(__tile tsrc, unsigned int row); | ||
| 29 | /// \endcode | ||
| 30 | /// | ||
| 31 | /// \code{.operation} | ||
| 32 | /// VL := 512 | ||
| 33 | /// VL_bytes := VL >> 3 | ||
| 34 | /// row_index := row & 0xffff | ||
| 35 | /// row_chunk := ((row >> 16) & 0xffff) * VL_bytes | ||
| 36 | /// FOR i := 0 TO (VL_bytes / 4) - 1 | ||
| 37 | /// IF i + row_chunk / 4 >= tsrc.colsb / 4 | ||
| 38 | /// dst.dword[i] := 0 | ||
| 39 | /// ELSE | ||
| 40 | /// dst.f32[i] := CONVERT_INT32_TO_FP32(tsrc.row[row_index].dword[row_chunk/4+i], RNE) | ||
| 41 | /// FI | ||
| 42 | /// ENDFOR | ||
| 43 | /// dst[MAX_VL-1:VL] := 0 | ||
| 44 | /// zero_tileconfig_start() | ||
| 45 | /// \endcode | ||
| 46 | /// | ||
| 47 | /// This intrinsic corresponds to the \c TCVTROWD2PS instruction. | ||
| 48 | /// | ||
| 49 | /// \param tsrc | ||
| 50 | /// The source tile. Max size is 1024 Bytes. | ||
| 51 | /// \param row | ||
| 52 | /// The row of the source tile | ||
| 53 | #define _tile_cvtrowd2ps(tsrc, row) __builtin_ia32_tcvtrowd2ps(tsrc, row) | ||
| 54 | |||
| 55 | /// Moves a row from a tile register to a zmm destination register, converting | ||
| 56 | /// the fp32 source elements to bf16. It places the resulting bf16 elements | ||
| 57 | /// in the high 16 bits within each dword. The row of the tile is selected | ||
| 58 | /// by a 32b GPR. | ||
| 59 | /// | ||
| 60 | /// \headerfile <x86intrin.h> | ||
| 61 | /// | ||
| 62 | /// \code | ||
| 63 | /// __m512i _tile_cvtrowps2bf16h(__tile tsrc, unsigned int row); | ||
| 64 | /// \endcode | ||
| 65 | /// | ||
| 66 | /// \code{.operation} | ||
| 67 | /// VL := 512 | ||
| 68 | /// VL_bytes := VL >> 3 | ||
| 69 | /// row_index := row & 0xffff | ||
| 70 | /// row_chunk := ((row >> 16) & 0xffff) * VL_bytes | ||
| 71 | /// FOR i := 0 TO (VL_bytes / 4) - 1 | ||
| 72 | /// IF i + row_chunk / 4 >= tsrc.colsb / 4 | ||
| 73 | /// dst.dword[i] := 0 | ||
| 74 | /// ELSE | ||
| 75 | /// dst.word[2*i+0] := 0 | ||
| 76 | /// dst.bf16[2*i+1] := CONVERT_FP32_TO_BF16(tsrc.row[row_index].fp32[row_chunk/4+i], RNE) | ||
| 77 | /// FI | ||
| 78 | /// ENDFOR | ||
| 79 | /// dst[MAX_VL-1:VL] := 0 | ||
| 80 | /// zero_tileconfig_start() | ||
| 81 | /// \endcode | ||
| 82 | /// | ||
| 83 | /// This intrinsic corresponds to the \c TCVTROWPS2BF16H instruction. | ||
| 84 | /// | ||
| 85 | /// \param tsrc | ||
| 86 | /// The source tile. Max size is 1024 Bytes. | ||
| 87 | /// \param row | ||
| 88 | /// The the row of the source tile. | ||
| 89 | #define _tile_cvtrowps2bf16h(tsrc, row) \ | ||
| 90 | __builtin_ia32_tcvtrowps2bf16h(tsrc, row) | ||
| 91 | |||
| 92 | /// Moves a row from a tile register to a zmm destination register, converting | ||
| 93 | /// the fp32 source elements to bf16. It places the resulting bf16 elements | ||
| 94 | /// in the low 16 bits within each dword. The row of the tile is selected | ||
| 95 | /// by a 32b GPR. | ||
| 96 | /// | ||
| 97 | /// \headerfile <x86intrin.h> | ||
| 98 | /// | ||
| 99 | /// \code | ||
| 100 | /// __m512i _tile_cvtrowps2bf16l(__tile tsrc, unsigned int row); | ||
| 101 | /// \endcode | ||
| 102 | /// | ||
| 103 | /// \code{.operation} | ||
| 104 | /// VL := 512 | ||
| 105 | /// VL_bytes := VL >> 3 | ||
| 106 | /// row_index := row & 0xffff | ||
| 107 | /// row_chunk := ((row >> 16) & 0xffff) * VL_bytes | ||
| 108 | /// FOR i := 0 TO (VL_bytes / 4) - 1 | ||
| 109 | /// IF i + row_chunk / 4 >= tsrc.colsb / 4 | ||
| 110 | /// dst.dword[i] := 0 | ||
| 111 | /// ELSE | ||
| 112 | /// dst.word[2*i+1] := 0 | ||
| 113 | /// dst.bf16[2*i+0] := CONVERT_FP32_TO_BF16(tsrc.row[row_index].fp32[row_chunk/4+i], RNE) | ||
| 114 | /// FI | ||
| 115 | /// ENDFOR | ||
| 116 | /// dst[MAX_VL-1:VL] := 0 | ||
| 117 | /// zero_tileconfig_start() | ||
| 118 | /// \endcode | ||
| 119 | /// | ||
| 120 | /// This intrinsic corresponds to the \c TCVTROWPS2BF16L instruction. | ||
| 121 | /// | ||
| 122 | /// \param tsrc | ||
| 123 | /// The source tile. Max size is 1024 Bytes. | ||
| 124 | /// \param row | ||
| 125 | /// The the row of the source tile. | ||
| 126 | #define _tile_cvtrowps2bf16l(tsrc, row) \ | ||
| 127 | __builtin_ia32_tcvtrowps2bf16l(tsrc, row) | ||
| 128 | |||
| 129 | /// Moves a row from a tile register to a zmm destination register, converting | ||
| 130 | /// the fp32 source elements to fp16. It places the resulting fp16 elements | ||
| 131 | /// in the high 16 bits within each dword. The row of the tile is selected | ||
| 132 | /// by a 32b GPR. | ||
| 133 | /// | ||
| 134 | /// \headerfile <x86intrin.h> | ||
| 135 | /// | ||
| 136 | /// \code | ||
| 137 | /// __m512i _tile_cvtrowps2phh(__tile tsrc, unsigned int row); | ||
| 138 | /// \endcode | ||
| 139 | /// | ||
| 140 | /// \code{.operation} | ||
| 141 | /// VL := 512 | ||
| 142 | /// VL_bytes := VL >> 3 | ||
| 143 | /// row_index := row & 0xffff | ||
| 144 | /// row_chunk := ((row >> 16) & 0xffff) * VL_bytes | ||
| 145 | /// FOR i := 0 TO (VL_bytes / 4) - 1 | ||
| 146 | /// IF i + row_chunk / 4 >= tsrc.colsb / 4 | ||
| 147 | /// dst.dword[i] := 0 | ||
| 148 | /// ELSE | ||
| 149 | /// dst.word[2*i+0] := 0 | ||
| 150 | /// dst.fp16[2*i+1] := CONVERT_FP32_TO_FP16(tsrc.row[row_index].fp32[row_chunk/4+i], RNE) | ||
| 151 | /// FI | ||
| 152 | /// ENDFOR | ||
| 153 | /// dst[MAX_VL-1:VL] := 0 | ||
| 154 | /// zero_tileconfig_start() | ||
| 155 | /// \endcode | ||
| 156 | /// | ||
| 157 | /// This intrinsic corresponds to the \c TCVTROWPS2PHH instruction. | ||
| 158 | /// | ||
| 159 | /// \param tsrc | ||
| 160 | /// The source tile. Max size is 1024 Bytes. | ||
| 161 | /// \param row | ||
| 162 | /// The the row of the source tile. | ||
| 163 | #define _tile_cvtrowps2phh(tsrc, row) __builtin_ia32_tcvtrowps2phh(tsrc, row) | ||
| 164 | |||
| 165 | /// Moves a row from a tile register to a zmm destination register, converting | ||
| 166 | /// the fp32 source elements to fp16. It places the resulting fp16 elements | ||
| 167 | /// in the low 16 bits within each dword. The row of the tile is selected | ||
| 168 | /// by a 32b GPR. | ||
| 169 | /// | ||
| 170 | /// \headerfile <x86intrin.h> | ||
| 171 | /// | ||
| 172 | /// \code | ||
| 173 | /// __m512i _tile_cvtrowps2phl(__tile tsrc, unsigned int row); | ||
| 174 | /// \endcode | ||
| 175 | /// | ||
| 176 | /// \code{.operation} | ||
| 177 | /// VL := 512 | ||
| 178 | /// VL_bytes := VL >> 3 | ||
| 179 | /// row_index := row & 0xffff | ||
| 180 | /// row_chunk := ((row >> 16) & 0xffff) * VL_bytes | ||
| 181 | /// FOR i := 0 TO (VL_bytes / 4) - 1 | ||
| 182 | /// IF i + row_chunk / 4 >= tsrc.colsb / 4 | ||
| 183 | /// dst.dword[i] := 0 | ||
| 184 | /// ELSE | ||
| 185 | /// dst.word[2*i+1] := 0 | ||
| 186 | /// dst.fp16[2*i+0] := CONVERT_FP32_TO_FP16(tsrc.row[row_index].fp32[row_chunk/4+i], RNE) | ||
| 187 | /// FI | ||
| 188 | /// ENDFOR | ||
| 189 | /// dst[MAX_VL-1:VL] := 0 | ||
| 190 | /// zero_tileconfig_start() | ||
| 191 | /// \endcode | ||
| 192 | /// | ||
| 193 | /// This intrinsic corresponds to the \c TCVTROWPS2PHL instruction. | ||
| 194 | /// | ||
| 195 | /// \param tsrc | ||
| 196 | /// The source tile. Max size is 1024 Bytes. | ||
| 197 | /// \param row | ||
| 198 | /// The the row of the source tile. | ||
| 199 | #define _tile_cvtrowps2phl(tsrc, row) __builtin_ia32_tcvtrowps2phl(tsrc, row) | ||
| 200 | |||
| 201 | /// Move one row of a tile data to a v16f32 data. | ||
| 202 | /// The row of the tile is selected by a 32b GPR. | ||
| 203 | /// | ||
| 204 | /// \headerfile <immintrin.h> | ||
| 205 | /// | ||
| 206 | /// \code | ||
| 207 | /// __m512 _tile_movrow(__tile a, unsigned b); | ||
| 208 | /// \endcode | ||
| 209 | /// | ||
| 210 | /// This intrinsic corresponds to the <c> TILEMOVROW </c> instruction. | ||
| 211 | /// | ||
| 212 | /// \param a | ||
| 213 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 214 | /// \param b | ||
| 215 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 216 | /// \returns | ||
| 217 | /// The destination v16f32 data. Size is 64 Bytes. | ||
| 218 | /// | ||
| 219 | /// \code{.operation} | ||
| 220 | /// VL := 512 | ||
| 221 | /// VL_bytes := VL>>3 | ||
| 222 | /// row_index := b&0xffff | ||
| 223 | /// row_chunk := ((b>>16)&0xffff) * VL_bytes | ||
| 224 | /// FOR i := 0 TO (VL_bytes-1) | ||
| 225 | /// IF (row_chunk + i >= a.colsb) | ||
| 226 | /// dst.byte[i] := 0 | ||
| 227 | /// ELSE | ||
| 228 | /// dst.byte[i] := a.row[row_index].byte[row_chunk+i] | ||
| 229 | /// ENDFOR | ||
| 230 | /// \endcode | ||
| 231 | #define _tile_movrow(a, b) __builtin_ia32_tilemovrow(a, b) | ||
| 232 | |||
| 233 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 234 | |||
| 235 | static __inline__ __m512 __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowd2ps_internal( | ||
| 236 | unsigned short m, unsigned short n, _tile1024i src, unsigned u) { | ||
| 237 | return __builtin_ia32_tcvtrowd2ps_internal(m, n, src, u); | ||
| 238 | } | ||
| 239 | |||
| 240 | static __inline__ __m512bh __DEFAULT_FN_ATTRS_AVX512 | ||
| 241 | _tile_cvtrowps2bf16h_internal(unsigned short m, unsigned short n, | ||
| 242 | _tile1024i src, unsigned u) { | ||
| 243 | return __builtin_ia32_tcvtrowps2bf16h_internal(m, n, src, u); | ||
| 244 | } | ||
| 245 | |||
| 246 | static __inline__ __m512bh __DEFAULT_FN_ATTRS_AVX512 | ||
| 247 | _tile_cvtrowps2bf16l_internal(unsigned short m, unsigned short n, | ||
| 248 | _tile1024i src, unsigned u) { | ||
| 249 | return __builtin_ia32_tcvtrowps2bf16l_internal(m, n, src, u); | ||
| 250 | } | ||
| 251 | |||
| 252 | static __inline__ __m512h __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowps2phh_internal( | ||
| 253 | unsigned short m, unsigned short n, _tile1024i src, unsigned u) { | ||
| 254 | return __builtin_ia32_tcvtrowps2phh_internal(m, n, src, u); | ||
| 255 | } | ||
| 256 | |||
| 257 | static __inline__ __m512h __DEFAULT_FN_ATTRS_AVX512 _tile_cvtrowps2phl_internal( | ||
| 258 | unsigned short m, unsigned short n, _tile1024i src, unsigned u) { | ||
| 259 | return __builtin_ia32_tcvtrowps2phl_internal(m, n, src, u); | ||
| 260 | } | ||
| 261 | |||
| 262 | static __inline__ __m512i __DEFAULT_FN_ATTRS_AVX512 _tile_movrow_internal( | ||
| 263 | unsigned short m, unsigned short n, _tile1024i src, unsigned u) { | ||
| 264 | return (__m512i)__builtin_ia32_tilemovrow_internal(m, n, src, u); | ||
| 265 | } | ||
| 266 | |||
| 267 | /// Move a row from a tile (src0) to a v16f32 dst, converting the int32 source | ||
| 268 | /// elements to fp32. No SIMD exceptions are generated. Rounding is done as if | ||
| 269 | /// MXCSR.RC=RNE. Embedded rounding is not supported. | ||
| 270 | /// The row and chunk elements of tile is fetched from 32bit src1. | ||
| 271 | /// | ||
| 272 | /// \headerfile <immintrin.h> | ||
| 273 | /// | ||
| 274 | /// This intrinsic corresponds to the <c> TCVTROWD2PS </c> instruction. | ||
| 275 | /// | ||
| 276 | /// \param src0 | ||
| 277 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 278 | /// \param src1 | ||
| 279 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 280 | /// \returns | ||
| 281 | /// The destination v16f32 data. Size is 64 Bytes. | ||
| 282 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 283 | static __m512 __tile_cvtrowd2ps(__tile1024i src0, unsigned src1) { | ||
| 284 | return _tile_cvtrowd2ps_internal(src0.row, src0.col, src0.tile, src1); | ||
| 285 | } | ||
| 286 | |||
| 287 | /// Move a row from a tile (src0) to a v32bf16 dst, converting the fp32 source | ||
| 288 | /// elements to bf16 at high 16-bits of each dword. | ||
| 289 | /// The row and chunk elements of tile is fetched from 32bit src1. | ||
| 290 | /// | ||
| 291 | /// \headerfile <immintrin.h> | ||
| 292 | /// | ||
| 293 | /// This intrinsic corresponds to the <c> TCVTROWPS2BF16H </c> instruction. | ||
| 294 | /// | ||
| 295 | /// \param src0 | ||
| 296 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 297 | /// \param src1 | ||
| 298 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 299 | /// \returns | ||
| 300 | /// The destination v32bf16 data. Size is 64 Bytes. | ||
| 301 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 302 | static __m512bh __tile_cvtrowps2bf16h(__tile1024i src0, unsigned src1) { | ||
| 303 | return _tile_cvtrowps2bf16h_internal(src0.row, src0.col, src0.tile, src1); | ||
| 304 | } | ||
| 305 | |||
| 306 | /// Move a row from a tile (src0) to a v32bf16 dst, converting the fp32 source | ||
| 307 | /// elements to bf16 at low 16-bits of each dword. | ||
| 308 | /// The row and chunk elements of tile is fetched from 32bit src1. | ||
| 309 | /// | ||
| 310 | /// \headerfile <immintrin.h> | ||
| 311 | /// | ||
| 312 | /// This intrinsic corresponds to the <c> TCVTROWPS2BF16L </c> instruction. | ||
| 313 | /// | ||
| 314 | /// \param src0 | ||
| 315 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 316 | /// \param src1 | ||
| 317 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 318 | /// \returns | ||
| 319 | /// The destination v32bf16 data. Size is 64 Bytes. | ||
| 320 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 321 | static __m512bh __tile_cvtrowps2bf16l(__tile1024i src0, unsigned src1) { | ||
| 322 | return _tile_cvtrowps2bf16l_internal(src0.row, src0.col, src0.tile, src1); | ||
| 323 | } | ||
| 324 | |||
| 325 | /// Move a row from a tile (src0) to a v32fp16 dst, converting the fp32 source | ||
| 326 | /// elements to fp16 at high 16-bits of each dword. | ||
| 327 | /// The row and chunk elements of tile is fetched from 32bit src1. | ||
| 328 | /// | ||
| 329 | /// \headerfile <immintrin.h> | ||
| 330 | /// | ||
| 331 | /// This intrinsic corresponds to the <c> TCVTROWPS2PHH </c> instruction. | ||
| 332 | /// | ||
| 333 | /// \param src0 | ||
| 334 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 335 | /// \param src1 | ||
| 336 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 337 | /// \returns | ||
| 338 | /// The destination v32fp16 data. Size is 64 Bytes. | ||
| 339 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 340 | static __m512h __tile_cvtrowps2phh(__tile1024i src0, unsigned src1) { | ||
| 341 | return _tile_cvtrowps2phh_internal(src0.row, src0.col, src0.tile, src1); | ||
| 342 | } | ||
| 343 | |||
| 344 | /// Move a row from a tile (src0) to a v32fp16 dst, converting the fp32 source | ||
| 345 | /// elements to fp16 at low 16-bits of each dword. | ||
| 346 | /// The row and chunk elements of tile is fetched from 32bit src1. | ||
| 347 | /// | ||
| 348 | /// \headerfile <immintrin.h> | ||
| 349 | /// | ||
| 350 | /// This intrinsic corresponds to the <c> TCVTROWPS2PHL </c> instruction. | ||
| 351 | /// | ||
| 352 | /// \param src0 | ||
| 353 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 354 | /// \param src1 | ||
| 355 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 356 | /// \returns | ||
| 357 | /// The destination v32fp16 data. Size is 64 Bytes. | ||
| 358 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 359 | static __m512h __tile_cvtrowps2phl(__tile1024i src0, unsigned src1) { | ||
| 360 | return _tile_cvtrowps2phl_internal(src0.row, src0.col, src0.tile, src1); | ||
| 361 | } | ||
| 362 | |||
| 363 | /// Move one row of a tile data to a v16f32 data. | ||
| 364 | /// The row of the tile is selected by a 32b GPR. | ||
| 365 | /// | ||
| 366 | /// \headerfile <immintrin.h> | ||
| 367 | /// | ||
| 368 | /// This intrinsic corresponds to the <c> TILEMOVROW </c> instruction. | ||
| 369 | /// | ||
| 370 | /// \param src0 | ||
| 371 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 372 | /// \param src1 | ||
| 373 | /// The 2nd source r32. Size is 4 Bytes. | ||
| 374 | /// \returns | ||
| 375 | /// The destination v16i32 data. Size is 64 Bytes. | ||
| 376 | __DEFAULT_FN_ATTRS_AVX512 | ||
| 377 | static __m512i __tile_movrow(__tile1024i src0, unsigned src1) { | ||
| 378 | return (__m512i)_tile_movrow_internal(src0.row, src0.col, src0.tile, src1); | ||
| 379 | } | ||
| 380 | |||
| 381 | #endif // __x86_64__ && __SSE2__ | ||
| 382 | #endif // __AMX_AVX512INTRIN_H | ||
lib/include/amxbf16transposeintrin.h created+94| ... | @@ -0,0 +1,94 @@ | ||
| 1 | /*===----- amxbf16transposeintrin.h - AMX-BF16 and AMX-TRANSPOSE ------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error \ | ||
| 12 | "Never use <amxbf16transposeintrin.h> directly; use <immintrin.h> instead." | ||
| 13 | #endif /* __IMMINTRIN_H */ | ||
| 14 | |||
| 15 | #ifndef __AMX_BF16TRANSPOSEINTRIN_H | ||
| 16 | #define __AMX_BF16TRANSPOSEINTRIN_H | ||
| 17 | #ifdef __x86_64__ | ||
| 18 | |||
| 19 | /* Define the default attributes for the functions in this file. */ | ||
| 20 | #define __DEFAULT_FN_ATTRS \ | ||
| 21 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 22 | __target__("amx-bf16,amx-transpose"))) | ||
| 23 | |||
| 24 | /// Compute transpose and dot-product of BF16 (16-bit) floating-point pairs in | ||
| 25 | /// tiles \a a and \a b, accumulating the intermediate single-precision | ||
| 26 | /// (32-bit) floating-point elements with elements in \a dst, and store the | ||
| 27 | /// 32-bit result back to tile \a dst. | ||
| 28 | /// | ||
| 29 | /// \headerfile <immintrin.h> | ||
| 30 | /// | ||
| 31 | /// \code | ||
| 32 | /// void _tile_tdpbf16ps (__tile dst, __tile a, __tile b) | ||
| 33 | /// \endcode | ||
| 34 | /// | ||
| 35 | /// \code{.operation} | ||
| 36 | /// FOR m := 0 TO dst.rows - 1 | ||
| 37 | ///	tmp := dst.row[m] | ||
| 38 | ///	FOR k := 0 TO (a.colsb / 4) - 1 | ||
| 39 | ///		FOR n := 0 TO (dst.colsb / 4) - 1 | ||
| 40 | ///			tmp.bf32[n] += FP32(a.row[m].bf16[2*k+0]) * | ||
| 41 | ///					FP32(b.row[k].bf16[2*n+0]) | ||
| 42 | ///			tmp.bf32[n] += FP32(a.row[m].bf16[2*k+1]) * | ||
| 43 | ///					FP32(b.row[k].bf16[2*n+1]) | ||
| 44 | ///		ENDFOR | ||
| 45 | ///	ENDFOR | ||
| 46 | ///	write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 47 | /// ENDFOR | ||
| 48 | /// zero_upper_rows(dst, dst.rows) | ||
| 49 | /// zero_tileconfig_start() | ||
| 50 | /// \endcode | ||
| 51 | /// | ||
| 52 | /// This intrinsic corresponds to the \c TTDPBF16PS instruction. | ||
| 53 | /// | ||
| 54 | /// \param dst | ||
| 55 | /// The destination tile. Max size is 1024 Bytes. | ||
| 56 | /// \param a | ||
| 57 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 58 | /// \param b | ||
| 59 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 60 | #define _tile_tdpbf16ps(dst, a, b) __builtin_ia32_ttdpbf16ps((dst), (a), (b)) | ||
| 61 | |||
| 62 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 63 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS | ||
| 64 | _tile_tdpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 65 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 66 | return __builtin_ia32_ttdpbf16ps_internal(m, n, k, dst, src1, src2); | ||
| 67 | } | ||
| 68 | |||
| 69 | /// Compute transpose and dot-product of BF16 (16-bit) floating-point pairs in | ||
| 70 | /// tiles src0 and src1, accumulating the intermediate single-precision | ||
| 71 | /// (32-bit) floating-point elements with elements in "dst", and store the | ||
| 72 | /// 32-bit result back to tile "dst". | ||
| 73 | /// | ||
| 74 | /// \headerfile <immintrin.h> | ||
| 75 | /// | ||
| 76 | /// This intrinsic corresponds to the <c> TTDPBF16PS </c> instruction. | ||
| 77 | /// | ||
| 78 | /// \param dst | ||
| 79 | /// The destination tile. Max size is 1024 Bytes. | ||
| 80 | /// \param src0 | ||
| 81 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 82 | /// \param src1 | ||
| 83 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 84 | __DEFAULT_FN_ATTRS | ||
| 85 | static __inline__ void __tile_tdpbf16ps(__tile1024i *dst, __tile1024i src0, | ||
| 86 | __tile1024i src1) { | ||
| 87 | dst->tile = _tile_tdpbf16ps_internal(src0.row, src1.col, src0.col, dst->tile, | ||
| 88 | src0.tile, src1.tile); | ||
| 89 | } | ||
| 90 | |||
| 91 | #undef __DEFAULT_FN_ATTRS | ||
| 92 | |||
| 93 | #endif /* __x86_64__ */ | ||
| 94 | #endif /* __AMX_BF16TRANSPOSEINTRIN_H */ | ||
lib/include/amxcomplextransposeintrin.h created+303| ... | @@ -0,0 +1,303 @@ | ||
| 1 | /*===----- amxcomplextransposeintrin.h - AMX-COMPLEX and AMX-TRANSPOSE ------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error \ | ||
| 12 | "Never use <amxcomplextransposeintrin.h> directly; include <immintrin.h> instead." | ||
| 13 | #endif // __IMMINTRIN_H | ||
| 14 | |||
| 15 | #ifndef __AMX_COMPLEXTRANSPOSEINTRIN_H | ||
| 16 | #define __AMX_COMPLEXTRANSPOSEINTRIN_H | ||
| 17 | #ifdef __x86_64__ | ||
| 18 | |||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 21 | __target__("amx-complex,amx-transpose"))) | ||
| 22 | |||
| 23 | /// Perform matrix multiplication of two tiles containing complex elements and | ||
| 24 | /// accumulate the results into a packed single precision tile. Each dword | ||
| 25 | /// element in input tiles \a a and \a b is interpreted as a complex number | ||
| 26 | /// with FP16 real part and FP16 imaginary part. | ||
| 27 | /// Calculates the imaginary part of the result. For each possible combination | ||
| 28 | /// of (transposed column of \a a, column of \a b), it performs a set of | ||
| 29 | /// multiplication and accumulations on all corresponding complex numbers | ||
| 30 | /// (one from \a a and one from \a b). The imaginary part of the \a a element | ||
| 31 | /// is multiplied with the real part of the corresponding \a b element, and | ||
| 32 | /// the real part of the \a a element is multiplied with the imaginary part | ||
| 33 | /// of the corresponding \a b elements. The two accumulated results are | ||
| 34 | /// added, and then accumulated into the corresponding row and column of | ||
| 35 | /// \a dst. | ||
| 36 | /// | ||
| 37 | /// \headerfile <x86intrin.h> | ||
| 38 | /// | ||
| 39 | /// \code | ||
| 40 | /// void _tile_tcmmimfp16ps(__tile dst, __tile a, __tile b); | ||
| 41 | /// \endcode | ||
| 42 | /// | ||
| 43 | /// \code{.operation} | ||
| 44 | /// FOR m := 0 TO dst.rows - 1 | ||
| 45 | ///	tmp := dst.row[m] | ||
| 46 | ///	FOR k := 0 TO a.rows - 1 | ||
| 47 | ///		FOR n := 0 TO (dst.colsb / 4) - 1 | ||
| 48 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * FP32(b.row[k].fp16[2*n+1]) | ||
| 49 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+1]) * FP32(b.row[k].fp16[2*n+0]) | ||
| 50 | ///		ENDFOR | ||
| 51 | ///	ENDFOR | ||
| 52 | ///	write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 53 | /// ENDFOR | ||
| 54 | /// zero_upper_rows(dst, dst.rows) | ||
| 55 | /// zero_tileconfig_start() | ||
| 56 | /// \endcode | ||
| 57 | /// | ||
| 58 | /// This intrinsic corresponds to the \c TTCMMIMFP16PS instruction. | ||
| 59 | /// | ||
| 60 | /// \param dst | ||
| 61 | /// The destination tile. Max size is 1024 Bytes. | ||
| 62 | /// \param a | ||
| 63 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 64 | /// \param b | ||
| 65 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 66 | #define _tile_tcmmimfp16ps(dst, a, b) \ | ||
| 67 | __builtin_ia32_ttcmmimfp16ps((dst), (a), (b)) | ||
| 68 | |||
| 69 | /// Perform matrix multiplication of two tiles containing complex elements and | ||
| 70 | /// accumulate the results into a packed single precision tile. Each dword | ||
| 71 | /// element in input tiles \a a and \a b is interpreted as a complex number | ||
| 72 | /// with FP16 real part and FP16 imaginary part. | ||
| 73 | /// Calculates the real part of the result. For each possible combination | ||
| 74 | /// of (rtransposed colum of \a a, column of \a b), it performs a set of | ||
| 75 | /// multiplication and accumulations on all corresponding complex numbers | ||
| 76 | /// (one from \a a and one from \a b). The real part of the \a a element is | ||
| 77 | /// multiplied with the real part of the corresponding \a b element, and the | ||
| 78 | /// negated imaginary part of the \a a element is multiplied with the | ||
| 79 | /// imaginary part of the corresponding \a b elements. The two accumulated | ||
| 80 | /// results are added, and then accumulated into the corresponding row and | ||
| 81 | /// column of \a dst. | ||
| 82 | /// | ||
| 83 | /// \headerfile <x86intrin.h> | ||
| 84 | /// | ||
| 85 | /// \code | ||
| 86 | /// void _tile_tcmmrlfp16ps(__tile dst, __tile a, __tile b); | ||
| 87 | /// \endcode | ||
| 88 | /// | ||
| 89 | /// \code{.operation} | ||
| 90 | /// FOR m := 0 TO dst.rows - 1 | ||
| 91 | ///	tmp := dst.row[m] | ||
| 92 | ///	FOR k := 0 TO a.rows - 1 | ||
| 93 | ///		FOR n := 0 TO (dst.colsb / 4) - 1 | ||
| 94 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * FP32(b.row[k].fp16[2*n+0]) | ||
| 95 | ///			tmp.fp32[n] += FP32(-a.row[m].fp16[2*k+1]) * FP32(b.row[k].fp16[2*n+1]) | ||
| 96 | ///		ENDFOR | ||
| 97 | ///	ENDFOR | ||
| 98 | ///	write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 99 | /// ENDFOR | ||
| 100 | /// zero_upper_rows(dst, dst.rows) | ||
| 101 | /// zero_tileconfig_start() | ||
| 102 | /// \endcode | ||
| 103 | /// | ||
| 104 | /// This intrinsic corresponds to the \c TTCMMIMFP16PS instruction. | ||
| 105 | /// | ||
| 106 | /// \param dst | ||
| 107 | /// The destination tile. Max size is 1024 Bytes. | ||
| 108 | /// \param a | ||
| 109 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 110 | /// \param b | ||
| 111 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 112 | #define _tile_tcmmrlfp16ps(dst, a, b) \ | ||
| 113 | __builtin_ia32_ttcmmrlfp16ps((dst), (a), (b)) | ||
| 114 | |||
| 115 | /// Perform matrix conjugate transpose and multiplication of two tiles | ||
| 116 | /// containing complex elements and accumulate the results into a packed | ||
| 117 | /// single precision tile. Each dword element in input tiles \a a and \a b | ||
| 118 | /// is interpreted as a complex number with FP16 real part and FP16 imaginary | ||
| 119 | /// part. | ||
| 120 | /// Calculates the imaginary part of the result. For each possible combination | ||
| 121 | /// of (transposed column of \a a, column of \a b), it performs a set of | ||
| 122 | /// multiplication and accumulations on all corresponding complex numbers | ||
| 123 | /// (one from \a a and one from \a b). The negated imaginary part of the \a a | ||
| 124 | /// element is multiplied with the real part of the corresponding \a b | ||
| 125 | /// element, and the real part of the \a a element is multiplied with the | ||
| 126 | /// imaginary part of the corresponding \a b elements. The two accumulated | ||
| 127 | /// results are added, and then accumulated into the corresponding row and | ||
| 128 | /// column of \a dst. | ||
| 129 | /// | ||
| 130 | /// \headerfile <x86intrin.h> | ||
| 131 | /// | ||
| 132 | /// \code | ||
| 133 | /// void _tile_conjtcmmimfp16ps(__tile dst, __tile a, __tile b); | ||
| 134 | /// \endcode | ||
| 135 | /// | ||
| 136 | /// \code{.operation} | ||
| 137 | /// FOR m := 0 TO dst.rows - 1 | ||
| 138 | ///	tmp := dst.row[m] | ||
| 139 | ///	FOR k := 0 TO a.rows - 1 | ||
| 140 | ///		FOR n := 0 TO (dst.colsb / 4) - 1 | ||
| 141 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * FP32(b.row[k].fp16[2*n+1]) | ||
| 142 | ///			tmp.fp32[n] += FP32(-a.row[m].fp16[2*k+1]) * FP32(b.row[k].fp16[2*n+0]) | ||
| 143 | ///		ENDFOR | ||
| 144 | ///	ENDFOR | ||
| 145 | ///	write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 146 | /// ENDFOR | ||
| 147 | /// zero_upper_rows(dst, dst.rows) | ||
| 148 | /// zero_tileconfig_start() | ||
| 149 | /// \endcode | ||
| 150 | /// | ||
| 151 | /// This intrinsic corresponds to the \c TCONJTCMMIMFP16PS instruction. | ||
| 152 | /// | ||
| 153 | /// \param dst | ||
| 154 | /// The destination tile. Max size is 1024 Bytes. | ||
| 155 | /// \param a | ||
| 156 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 157 | /// \param b | ||
| 158 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 159 | #define _tile_conjtcmmimfp16ps(dst, a, b) \ | ||
| 160 | __builtin_ia32_tconjtcmmimfp16ps((dst), (a), (b)) | ||
| 161 | |||
| 162 | /// Perform conjugate transpose of an FP16-pair of complex elements from \a a | ||
| 163 | /// and writes the result to \a dst. | ||
| 164 | /// | ||
| 165 | /// \headerfile <x86intrin.h> | ||
| 166 | /// | ||
| 167 | /// \code | ||
| 168 | /// void _tile_conjtfp16(__tile dst, __tile a); | ||
| 169 | /// \endcode | ||
| 170 | /// | ||
| 171 | /// \code{.operation} | ||
| 172 | /// FOR i := 0 TO dst.rows - 1 | ||
| 173 | ///	FOR j := 0 TO (dst.colsb / 4) - 1 | ||
| 174 | ///		tmp.fp16[2*j+0] := a.row[j].fp16[2*i+0] | ||
| 175 | ///		tmp.fp16[2*j+1] := -a.row[j].fp16[2*i+1] | ||
| 176 | ///	ENDFOR | ||
| 177 | ///	write_row_and_zero(dst, i, tmp, dst.colsb) | ||
| 178 | /// ENDFOR | ||
| 179 | /// zero_upper_rows(dst, dst.rows) | ||
| 180 | /// zero_tileconfig_start() | ||
| 181 | /// \endcode | ||
| 182 | /// | ||
| 183 | /// This intrinsic corresponds to the \c TCONJTFP16 instruction. | ||
| 184 | /// | ||
| 185 | /// \param dst | ||
| 186 | /// The destination tile. Max size is 1024 Bytes. | ||
| 187 | /// \param a | ||
| 188 | /// The source tile. Max size is 1024 Bytes. | ||
| 189 | #define _tile_conjtfp16(dst, a) __builtin_ia32_tconjtfp16((dst), (a)) | ||
| 190 | |||
| 191 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS _tile_tcmmimfp16ps_internal( | ||
| 192 | unsigned short m, unsigned short n, unsigned short k, _tile1024i dst, | ||
| 193 | _tile1024i src1, _tile1024i src2) { | ||
| 194 | return __builtin_ia32_ttcmmimfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 195 | } | ||
| 196 | |||
| 197 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS _tile_tcmmrlfp16ps_internal( | ||
| 198 | unsigned short m, unsigned short n, unsigned short k, _tile1024i dst, | ||
| 199 | _tile1024i src1, _tile1024i src2) { | ||
| 200 | return __builtin_ia32_ttcmmrlfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 201 | } | ||
| 202 | |||
| 203 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS _tile_conjtcmmimfp16ps_internal( | ||
| 204 | unsigned short m, unsigned short n, unsigned short k, _tile1024i dst, | ||
| 205 | _tile1024i src1, _tile1024i src2) { | ||
| 206 | return __builtin_ia32_tconjtcmmimfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 207 | } | ||
| 208 | |||
| 209 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS | ||
| 210 | _tile_conjtfp16_internal(unsigned short m, unsigned short n, _tile1024i src) { | ||
| 211 | return __builtin_ia32_tconjtfp16_internal(m, n, src); | ||
| 212 | } | ||
| 213 | |||
| 214 | /// Perform matrix multiplication of two tiles containing complex elements and | ||
| 215 | /// accumulate the results into a packed single precision tile. Each dword | ||
| 216 | /// element in input tiles src0 and src1 is interpreted as a complex number | ||
| 217 | /// with FP16 real part and FP16 imaginary part. | ||
| 218 | /// This function calculates the imaginary part of the result. | ||
| 219 | /// | ||
| 220 | /// \headerfile <immintrin.h> | ||
| 221 | /// | ||
| 222 | /// This intrinsic corresponds to the <c> TTCMMIMFP16PS </c> instruction. | ||
| 223 | /// | ||
| 224 | /// \param dst | ||
| 225 | /// The destination tile. Max size is 1024 Bytes. | ||
| 226 | /// \param src0 | ||
| 227 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 228 | /// \param src1 | ||
| 229 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 230 | __DEFAULT_FN_ATTRS | ||
| 231 | static void __tile_tcmmimfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 232 | __tile1024i src1) { | ||
| 233 | dst->tile = _tile_tcmmimfp16ps_internal(src0.row, src1.col, src0.col, | ||
| 234 | dst->tile, src0.tile, src1.tile); | ||
| 235 | } | ||
| 236 | |||
| 237 | /// Perform matrix multiplication of two tiles containing complex elements and | ||
| 238 | /// accumulate the results into a packed single precision tile. Each dword | ||
| 239 | /// element in input tiles src0 and src1 is interpreted as a complex number | ||
| 240 | /// with FP16 real part and FP16 imaginary part. | ||
| 241 | /// This function calculates the real part of the result. | ||
| 242 | /// | ||
| 243 | /// \headerfile <immintrin.h> | ||
| 244 | /// | ||
| 245 | /// This intrinsic corresponds to the <c> TTCMMRLFP16PS </c> instruction. | ||
| 246 | /// | ||
| 247 | /// \param dst | ||
| 248 | /// The destination tile. Max size is 1024 Bytes. | ||
| 249 | /// \param src0 | ||
| 250 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 251 | /// \param src1 | ||
| 252 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 253 | __DEFAULT_FN_ATTRS | ||
| 254 | static void __tile_tcmmrlfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 255 | __tile1024i src1) { | ||
| 256 | dst->tile = _tile_tcmmrlfp16ps_internal(src0.row, src1.col, src0.col, | ||
| 257 | dst->tile, src0.tile, src1.tile); | ||
| 258 | } | ||
| 259 | |||
| 260 | /// Perform matrix conjugate transpose and multiplication of two tiles | ||
| 261 | /// containing complex elements and accumulate the results into a packed | ||
| 262 | /// single precision tile. Each dword element in input tiles src0 and src1 | ||
| 263 | /// is interpreted as a complex number with FP16 real part and FP16 imaginary | ||
| 264 | /// part. | ||
| 265 | /// This function calculates the imaginary part of the result. | ||
| 266 | /// | ||
| 267 | /// \headerfile <immintrin.h> | ||
| 268 | /// | ||
| 269 | /// This intrinsic corresponds to the <c> TCONJTCMMIMFP16PS </c> instruction. | ||
| 270 | /// | ||
| 271 | /// \param dst | ||
| 272 | /// The destination tile. Max size is 1024 Bytes. | ||
| 273 | /// \param src0 | ||
| 274 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 275 | /// \param src1 | ||
| 276 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 277 | __DEFAULT_FN_ATTRS | ||
| 278 | static void __tile_conjtcmmimfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 279 | __tile1024i src1) { | ||
| 280 | dst->tile = _tile_conjtcmmimfp16ps_internal(src0.row, src1.col, src0.col, | ||
| 281 | dst->tile, src0.tile, src1.tile); | ||
| 282 | } | ||
| 283 | |||
| 284 | /// Perform conjugate transpose of an FP16-pair of complex elements from src and | ||
| 285 | /// writes the result to dst. | ||
| 286 | /// | ||
| 287 | /// \headerfile <immintrin.h> | ||
| 288 | /// | ||
| 289 | /// This intrinsic corresponds to the <c> TCONJTFP16 </c> instruction. | ||
| 290 | /// | ||
| 291 | /// \param dst | ||
| 292 | /// The destination tile. Max size is 1024 Bytes. | ||
| 293 | /// \param src | ||
| 294 | /// The source tile. Max size is 1024 Bytes. | ||
| 295 | __DEFAULT_FN_ATTRS | ||
| 296 | static void __tile_conjtfp16(__tile1024i *dst, __tile1024i src) { | ||
| 297 | dst->tile = _tile_conjtfp16_internal(src.row, src.col, src.tile); | ||
| 298 | } | ||
| 299 | |||
| 300 | #undef __DEFAULT_FN_ATTRS | ||
| 301 | |||
| 302 | #endif // __x86_64__ | ||
| 303 | #endif // __AMX_COMPLEXTRANSPOSEINTRIN_H | ||
lib/include/amxfp16intrin.h+35| ... | @@ -15,6 +15,10 @@ | ... | @@ -15,6 +15,10 @@ |
| 15 | #define __AMX_FP16INTRIN_H | 15 | #define __AMX_FP16INTRIN_H |
| 16 | #ifdef __x86_64__ | 16 | #ifdef __x86_64__ |
| 17 | 17 | ||
| 18 | /* Define the default attributes for the functions in this file. */ | ||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("amx-fp16"))) | ||
| 21 | |||
| 18 | /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles \a a | 22 | /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles \a a |
| 19 | /// and \a b, accumulating the intermediate single-precision (32-bit) | 23 | /// and \a b, accumulating the intermediate single-precision (32-bit) |
| 20 | /// floating-point elements with elements in \a dst, and store the 32-bit | 24 | /// floating-point elements with elements in \a dst, and store the 32-bit |
| ... | @@ -54,5 +58,36 @@ | ... | @@ -54,5 +58,36 @@ |
| 54 | #define _tile_dpfp16ps(dst, a, b) \ | 58 | #define _tile_dpfp16ps(dst, a, b) \ |
| 55 | __builtin_ia32_tdpfp16ps(dst, a, b) | 59 | __builtin_ia32_tdpfp16ps(dst, a, b) |
| 56 | 60 | ||
| 61 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 62 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS | ||
| 63 | _tile_dpfp16ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 64 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 65 | return __builtin_ia32_tdpfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 66 | } | ||
| 67 | |||
| 68 | /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles src0 and | ||
| 69 | /// src1, accumulating the intermediate single-precision (32-bit) floating-point | ||
| 70 | /// elements with elements in "dst", and store the 32-bit result back to tile | ||
| 71 | /// "dst". | ||
| 72 | /// | ||
| 73 | /// \headerfile <immintrin.h> | ||
| 74 | /// | ||
| 75 | /// This intrinsic corresponds to the <c> TDPFP16PS </c> instruction. | ||
| 76 | /// | ||
| 77 | /// \param dst | ||
| 78 | /// The destination tile. Max size is 1024 Bytes. | ||
| 79 | /// \param src0 | ||
| 80 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 81 | /// \param src1 | ||
| 82 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 83 | __DEFAULT_FN_ATTRS | ||
| 84 | static __inline__ void __tile_dpfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 85 | __tile1024i src1) { | ||
| 86 | dst->tile = _tile_dpfp16ps_internal(src0.row, src1.col, src0.col, dst->tile, | ||
| 87 | src0.tile, src1.tile); | ||
| 88 | } | ||
| 89 | |||
| 90 | #undef __DEFAULT_FN_ATTRS | ||
| 91 | |||
| 57 | #endif /* __x86_64__ */ | 92 | #endif /* __x86_64__ */ |
| 58 | #endif /* __AMX_FP16INTRIN_H */ | 93 | #endif /* __AMX_FP16INTRIN_H */ |
lib/include/amxfp16transposeintrin.h created+94| ... | @@ -0,0 +1,94 @@ | ||
| 1 | /*===----- amxfp16transposeintrin.h - AMX-FP16 and AMX-TRANSPOSE ------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error \ | ||
| 12 | "Never use <amxfp16transposeintrin.h> directly; use <immintrin.h> instead." | ||
| 13 | #endif /* __IMMINTRIN_H */ | ||
| 14 | |||
| 15 | #ifndef __AMX_FP16TRANSPOSEINTRIN_H | ||
| 16 | #define __AMX_FP16TRANSPOSEINTRIN_H | ||
| 17 | #ifdef __x86_64__ | ||
| 18 | |||
| 19 | /* Define the default attributes for the functions in this file. */ | ||
| 20 | #define __DEFAULT_FN_ATTRS \ | ||
| 21 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 22 | __target__("amx-fp16,amx-transpose"))) | ||
| 23 | |||
| 24 | /// Compute transpose and dot-product of FP16 (16-bit) floating-point pairs in | ||
| 25 | /// tiles \a a and \a b, accumulating the intermediate single-precision | ||
| 26 | /// (32-bit) floating-point elements with elements in \a dst, and store the | ||
| 27 | /// 32-bit result back to tile \a dst. | ||
| 28 | /// | ||
| 29 | /// \headerfile <immintrin.h> | ||
| 30 | /// | ||
| 31 | /// \code | ||
| 32 | /// void _tile_tdpfp16ps (__tile dst, __tile a, __tile b) | ||
| 33 | /// \endcode | ||
| 34 | /// | ||
| 35 | /// \code{.operation} | ||
| 36 | /// FOR m := 0 TO dst.rows - 1 | ||
| 37 | ///	tmp := dst.row[m] | ||
| 38 | ///	FOR k := 0 TO (a.colsb / 4) - 1 | ||
| 39 | ///		FOR n := 0 TO (dst.colsb / 4) - 1 | ||
| 40 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * | ||
| 41 | ///					FP32(b.row[k].fp16[2*n+0]) | ||
| 42 | ///			tmp.fp32[n] += FP32(a.row[m].fp16[2*k+1]) * | ||
| 43 | ///					FP32(b.row[k].fp16[2*n+1]) | ||
| 44 | ///		ENDFOR | ||
| 45 | ///	ENDFOR | ||
| 46 | ///	write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 47 | /// ENDFOR | ||
| 48 | /// zero_upper_rows(dst, dst.rows) | ||
| 49 | /// zero_tileconfig_start() | ||
| 50 | /// \endcode | ||
| 51 | /// | ||
| 52 | /// This intrinsic corresponds to the \c TTDPFP16PS instruction. | ||
| 53 | /// | ||
| 54 | /// \param dst | ||
| 55 | /// The destination tile. Max size is 1024 Bytes. | ||
| 56 | /// \param a | ||
| 57 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 58 | /// \param b | ||
| 59 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 60 | #define _tile_tdpfp16ps(dst, a, b) __builtin_ia32_ttdpfp16ps((dst), (a), (b)) | ||
| 61 | |||
| 62 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 63 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS | ||
| 64 | _tile_tdpfp16ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 65 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 66 | return __builtin_ia32_ttdpfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 67 | } | ||
| 68 | |||
| 69 | /// Compute transpose and dot-product of FP16 (16-bit) floating-point pairs in | ||
| 70 | /// tiles src0 and src1, accumulating the intermediate single-precision | ||
| 71 | /// (32-bit) floating-point elements with elements in "dst", and store the | ||
| 72 | /// 32-bit result back to tile "dst". | ||
| 73 | /// | ||
| 74 | /// \headerfile <immintrin.h> | ||
| 75 | /// | ||
| 76 | /// This intrinsic corresponds to the <c> TTDPFP16PS </c> instruction. | ||
| 77 | /// | ||
| 78 | /// \param dst | ||
| 79 | /// The destination tile. Max size is 1024 Bytes. | ||
| 80 | /// \param src0 | ||
| 81 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 82 | /// \param src1 | ||
| 83 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 84 | __DEFAULT_FN_ATTRS | ||
| 85 | static __inline__ void __tile_tdpfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 86 | __tile1024i src1) { | ||
| 87 | dst->tile = _tile_tdpfp16ps_internal(src0.row, src1.col, src0.col, dst->tile, | ||
| 88 | src0.tile, src1.tile); | ||
| 89 | } | ||
| 90 | |||
| 91 | #undef __DEFAULT_FN_ATTRS | ||
| 92 | |||
| 93 | #endif /* __x86_64__ */ | ||
| 94 | #endif /* __AMX_FP16TRANSPOSEINTRIN_H */ | ||
lib/include/amxfp8intrin.h created+230| ... | @@ -0,0 +1,230 @@ | ||
| 1 | /*===------------- amxfp8intrin.h - AMX intrinsics -*- C++ -*----------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error "Never use <amxfp8intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif /* __IMMINTRIN_H */ | ||
| 13 | |||
| 14 | #ifndef __AMXFP8INTRIN_H | ||
| 15 | #define __AMXFP8INTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | #define __DEFAULT_FN_ATTRS_FP8 \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("amx-fp8"))) | ||
| 20 | |||
| 21 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP8 | ||
| 22 | _tile_dpbf8ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 23 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 24 | return __builtin_ia32_tdpbf8ps_internal(m, n, k, dst, src1, src2); | ||
| 25 | } | ||
| 26 | |||
| 27 | /// Perform the dot product of a BF8 value \a src1 by a BF8 value \a src2 | ||
| 28 | /// accumulating into a Single Precision (FP32) source/dest \a dst. | ||
| 29 | /// | ||
| 30 | /// \headerfile <immintrin.h> | ||
| 31 | /// | ||
| 32 | /// \code | ||
| 33 | /// void __tile_dpbf8ps (__tile1024i *dst, __tile1024i src1, __tile1024i src2) | ||
| 34 | /// \endcode | ||
| 35 | /// | ||
| 36 | /// \code{.operation} | ||
| 37 | /// FOR m := 0 TO dst.rows - 1 | ||
| 38 | /// temp1[(dst.colsb / 4 - 1) : 0] = 0 | ||
| 39 | /// FOR k := 0 TO src1.colsb / 4 - 1 | ||
| 40 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 41 | /// temp1[n] += | ||
| 42 | /// INT64(src1.row[m].float8[4*k+0]) * INT64(src2.row[k].float8[4*n+0]) | ||
| 43 | /// + INT64(src1.row[m].float8[4*k+1]) * INT64(src2.row[k].float8[4*n+1]) | ||
| 44 | /// + INT64(src1.row[m].float8[4*k+2]) * INT64(src2.row[k].float8[4*n+2]) | ||
| 45 | /// + INT64(src1.row[m].float8[4*k+3]) * INT64(src2.row[k].float8[4*n+3]) | ||
| 46 | /// ENDFOR | ||
| 47 | /// ENDFOR | ||
| 48 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 49 | /// tmp.row[m].fp32[n] = dst.row[m].fp32[n] + FP32(temp1[n]) | ||
| 50 | /// ENDFOR | ||
| 51 | /// write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 52 | /// zero_upper_rows(dst, dst.rows) | ||
| 53 | /// zero_tileconfig_start() | ||
| 54 | /// \endcode | ||
| 55 | /// | ||
| 56 | /// This intrinsic corresponds to the \c TDPBF8PS instruction. | ||
| 57 | /// | ||
| 58 | /// \param dst | ||
| 59 | /// The destination tile. Max size is 1024 Bytes. | ||
| 60 | /// \param src1 | ||
| 61 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 62 | /// \param src2 | ||
| 63 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 64 | __DEFAULT_FN_ATTRS_FP8 static void | ||
| 65 | __tile_dpbf8ps(__tile1024i *dst, __tile1024i src1, __tile1024i src2) { | ||
| 66 | dst->tile = _tile_dpbf8ps_internal(src1.row, src2.col, src1.col, dst->tile, | ||
| 67 | src1.tile, src2.tile); | ||
| 68 | } | ||
| 69 | |||
| 70 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP8 | ||
| 71 | _tile_dpbhf8ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 72 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 73 | return __builtin_ia32_tdpbhf8ps_internal(m, n, k, dst, src1, src2); | ||
| 74 | } | ||
| 75 | |||
| 76 | /// Perform the dot product of a BF8 value \a src1 by an HF8 value \a src2 | ||
| 77 | /// accumulating into a Single Precision (FP32) source/dest \a dst. | ||
| 78 | /// | ||
| 79 | /// \headerfile <immintrin.h> | ||
| 80 | /// | ||
| 81 | /// \code | ||
| 82 | /// void __tile_dpbhf8ps (__tile1024i dst, __tile1024i src1, __tile1024i src2) | ||
| 83 | /// \endcode | ||
| 84 | /// | ||
| 85 | /// \code{.operation} | ||
| 86 | /// FOR m := 0 TO dst.rows - 1 | ||
| 87 | /// temp1[(dst.colsb / 4 - 1) : 0] = 0 | ||
| 88 | /// FOR k := 0 TO src1.colsb / 4 - 1 | ||
| 89 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 90 | /// temp1[n] += | ||
| 91 | /// INT64(src1.row[m].float8[4*k+0]) * INT64(src2.row[k].float8[4*n+0]) | ||
| 92 | /// + INT64(src1.row[m].float8[4*k+1]) * INT64(src2.row[k].float8[4*n+1]) | ||
| 93 | /// + INT64(src1.row[m].float8[4*k+2]) * INT64(src2.row[k].float8[4*n+2]) | ||
| 94 | /// + INT64(src1.row[m].float8[4*k+3]) * INT64(src2.row[k].float8[4*n+3]) | ||
| 95 | /// ENDFOR | ||
| 96 | /// ENDFOR | ||
| 97 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 98 | /// tmp.row[m].fp32[n] = dst.row[m].fp32[n] + FP32(temp1[n]) | ||
| 99 | /// ENDFOR | ||
| 100 | /// write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 101 | /// zero_upper_rows(dst, dst.rows) | ||
| 102 | /// zero_tileconfig_start() | ||
| 103 | /// \endcode | ||
| 104 | /// | ||
| 105 | /// This intrinsic corresponds to the \c TDPBHF8PS instruction. | ||
| 106 | /// | ||
| 107 | /// \param dst | ||
| 108 | /// The destination tile. Max size is 1024 Bytes. | ||
| 109 | /// \param src1 | ||
| 110 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 111 | /// \param src2 | ||
| 112 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 113 | __DEFAULT_FN_ATTRS_FP8 static void | ||
| 114 | __tile_dpbhf8ps(__tile1024i *dst, __tile1024i src1, __tile1024i src2) { | ||
| 115 | dst->tile = _tile_dpbhf8ps_internal(src1.row, src2.col, src1.col, dst->tile, | ||
| 116 | src1.tile, src2.tile); | ||
| 117 | } | ||
| 118 | |||
| 119 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP8 | ||
| 120 | _tile_dphbf8ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 121 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 122 | return __builtin_ia32_tdphbf8ps_internal(m, n, k, dst, src1, src2); | ||
| 123 | } | ||
| 124 | |||
| 125 | /// Perform the dot product of an HF8 value \a src1 by a BF8 value \a src2 | ||
| 126 | /// accumulating into a Single Precision (FP32) source/dest \a dst. | ||
| 127 | /// | ||
| 128 | /// \headerfile <immintrin.h> | ||
| 129 | /// | ||
| 130 | /// \code | ||
| 131 | /// void __tile_dphbf8ps (__tile1024i dst, __tile1024i src1, __tile1024i src2) | ||
| 132 | /// \endcode | ||
| 133 | /// | ||
| 134 | /// \code{.operation} | ||
| 135 | /// FOR m := 0 TO dst.rows - 1 | ||
| 136 | /// temp1[(dst.colsb / 4 - 1) : 0] = 0 | ||
| 137 | /// FOR k := 0 TO src1.colsb / 4 - 1 | ||
| 138 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 139 | /// temp1[n] += | ||
| 140 | /// INT64(src1.row[m].float8[4*k+0]) * INT64(src2.row[k].float8[4*n+0]) | ||
| 141 | /// + INT64(src1.row[m].float8[4*k+1]) * INT64(src2.row[k].float8[4*n+1]) | ||
| 142 | /// + INT64(src1.row[m].float8[4*k+2]) * INT64(src2.row[k].float8[4*n+2]) | ||
| 143 | /// + INT64(src1.row[m].float8[4*k+3]) * INT64(src2.row[k].float8[4*n+3]) | ||
| 144 | /// ENDFOR | ||
| 145 | /// ENDFOR | ||
| 146 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 147 | /// tmp.row[m].fp32[n] = dst.row[m].fp32[n] + FP32(temp1[n]) | ||
| 148 | /// ENDFOR | ||
| 149 | /// write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 150 | /// zero_upper_rows(dst, dst.rows) | ||
| 151 | /// zero_tileconfig_start() | ||
| 152 | /// \endcode | ||
| 153 | /// | ||
| 154 | /// This intrinsic corresponds to the \c TDPHBF8PS instruction. | ||
| 155 | /// | ||
| 156 | /// \param dst | ||
| 157 | /// The destination tile. Max size is 1024 Bytes. | ||
| 158 | /// \param src1 | ||
| 159 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 160 | /// \param src2 | ||
| 161 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 162 | |||
| 163 | __DEFAULT_FN_ATTRS_FP8 static void | ||
| 164 | __tile_dphbf8ps(__tile1024i *dst, __tile1024i src1, __tile1024i src2) { | ||
| 165 | dst->tile = _tile_dphbf8ps_internal(src1.row, src2.col, src1.col, dst->tile, | ||
| 166 | src1.tile, src2.tile); | ||
| 167 | } | ||
| 168 | |||
| 169 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP8 | ||
| 170 | _tile_dphf8ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 171 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 172 | return __builtin_ia32_tdphf8ps_internal(m, n, k, dst, src1, src2); | ||
| 173 | } | ||
| 174 | |||
| 175 | /// Perform the dot product of an HF8 value \a src1 by an HF8 value \a src2 | ||
| 176 | /// accumulating into a Single Precision (FP32) source/dest \a dst. | ||
| 177 | /// | ||
| 178 | /// \headerfile <immintrin.h> | ||
| 179 | /// | ||
| 180 | /// \code | ||
| 181 | /// void __tile_dphf8ps (__tile1024i dst, __tile1024i src1, __tile1024i src2) | ||
| 182 | /// \endcode | ||
| 183 | /// | ||
| 184 | /// \code{.operation} | ||
| 185 | /// FOR m := 0 TO dst.rows - 1 | ||
| 186 | /// temp1[(dst.colsb / 4 - 1) : 0] = 0 | ||
| 187 | /// FOR k := 0 TO src1.colsb / 4 - 1 | ||
| 188 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 189 | /// temp1[n] += | ||
| 190 | /// INT64(src1.row[m].float8[4*k+0]) * INT64(src2.row[k].float8[4*n+0]) | ||
| 191 | /// + INT64(src1.row[m].float8[4*k+1]) * INT64(src2.row[k].float8[4*n+1]) | ||
| 192 | /// + INT64(src1.row[m].float8[4*k+2]) * INT64(src2.row[k].float8[4*n+2]) | ||
| 193 | /// + INT64(src1.row[m].float8[4*k+3]) * INT64(src2.row[k].float8[4*n+3]) | ||
| 194 | /// ENDFOR | ||
| 195 | /// ENDFOR | ||
| 196 | /// FOR n := 0 TO dst.colsb / 4 - 1 | ||
| 197 | /// tmp.row[m].fp32[n] = dst.row[m].fp32[n] + FP32(temp1[n]) | ||
| 198 | /// ENDFOR | ||
| 199 | /// write_row_and_zero(dst, m, tmp, dst.colsb) | ||
| 200 | /// zero_upper_rows(dst, dst.rows) | ||
| 201 | /// zero_tileconfig_start() | ||
| 202 | /// \endcode | ||
| 203 | /// | ||
| 204 | /// This intrinsic corresponds to the \c TDPHF8PS instruction. | ||
| 205 | /// | ||
| 206 | /// \param dst | ||
| 207 | /// The destination tile. Max size is 1024 Bytes. | ||
| 208 | /// \param src1 | ||
| 209 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 210 | /// \param src2 | ||
| 211 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 212 | __DEFAULT_FN_ATTRS_FP8 static void | ||
| 213 | __tile_dphf8ps(__tile1024i *dst, __tile1024i src1, __tile1024i src2) { | ||
| 214 | dst->tile = _tile_dphf8ps_internal(src1.row, src2.col, src1.col, dst->tile, | ||
| 215 | src1.tile, src2.tile); | ||
| 216 | } | ||
| 217 | |||
| 218 | #define _tile_dpbf8ps(dst, src1, src2) \ | ||
| 219 | __builtin_ia32_tdpbf8ps((dst), (src1), (src2)) | ||
| 220 | #define _tile_dpbhf8ps(dst, src1, src2) \ | ||
| 221 | __builtin_ia32_tdpbhf8ps((dst), (src1), (src2)) | ||
| 222 | #define _tile_dphbf8ps(dst, src1, src2) \ | ||
| 223 | __builtin_ia32_tdphbf8ps((dst), (src1), (src2)) | ||
| 224 | #define _tile_dphf8ps(dst, src1, src2) \ | ||
| 225 | __builtin_ia32_tdphf8ps((dst), (src1), (src2)) | ||
| 226 | |||
| 227 | #undef __DEFAULT_FN_ATTRS_FP8 | ||
| 228 | |||
| 229 | #endif /* __x86_64__ */ | ||
| 230 | #endif /* __AMXFP8INTRIN_H */ | ||
lib/include/amxintrin.h+5-35| ... | @@ -22,8 +22,6 @@ | ... | @@ -22,8 +22,6 @@ |
| 22 | __attribute__((__always_inline__, __nodebug__, __target__("amx-int8"))) | 22 | __attribute__((__always_inline__, __nodebug__, __target__("amx-int8"))) |
| 23 | #define __DEFAULT_FN_ATTRS_BF16 \ | 23 | #define __DEFAULT_FN_ATTRS_BF16 \ |
| 24 | __attribute__((__always_inline__, __nodebug__, __target__("amx-bf16"))) | 24 | __attribute__((__always_inline__, __nodebug__, __target__("amx-bf16"))) |
| 25 | #define __DEFAULT_FN_ATTRS_FP16 \ | ||
| 26 | __attribute__((__always_inline__, __nodebug__, __target__("amx-fp16"))) | ||
| 27 | 25 | ||
| 28 | /// Load tile configuration from a 64-byte memory location specified by | 26 | /// Load tile configuration from a 64-byte memory location specified by |
| 29 | /// "mem_addr". The tile configuration includes the tile type palette, the | 27 | /// "mem_addr". The tile configuration includes the tile type palette, the |
| ... | @@ -232,9 +230,11 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) { | ... | @@ -232,9 +230,11 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) { |
| 232 | /// bytes. Since there is no 2D type in llvm IR, we use vector type to | 230 | /// bytes. Since there is no 2D type in llvm IR, we use vector type to |
| 233 | /// represent 2D tile and the fixed size is maximum amx tile register size. | 231 | /// represent 2D tile and the fixed size is maximum amx tile register size. |
| 234 | typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64))); | 232 | typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64))); |
| 233 | typedef int _tile1024i_1024a | ||
| 234 | __attribute__((__vector_size__(1024), __aligned__(1024))); | ||
| 235 | 235 | ||
| 236 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | 236 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. |
| 237 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8 | 237 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE |
| 238 | _tile_loadd_internal(unsigned short m, unsigned short n, const void *base, | 238 | _tile_loadd_internal(unsigned short m, unsigned short n, const void *base, |
| 239 | __SIZE_TYPE__ stride) { | 239 | __SIZE_TYPE__ stride) { |
| 240 | return __builtin_ia32_tileloadd64_internal(m, n, base, | 240 | return __builtin_ia32_tileloadd64_internal(m, n, base, |
| ... | @@ -242,7 +242,7 @@ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base, | ... | @@ -242,7 +242,7 @@ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base, |
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | 244 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. |
| 245 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8 | 245 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE |
| 246 | _tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base, | 246 | _tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base, |
| 247 | __SIZE_TYPE__ stride) { | 247 | __SIZE_TYPE__ stride) { |
| 248 | return __builtin_ia32_tileloaddt164_internal(m, n, base, | 248 | return __builtin_ia32_tileloaddt164_internal(m, n, base, |
| ... | @@ -278,7 +278,7 @@ _tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k, | ... | @@ -278,7 +278,7 @@ _tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k, |
| 278 | } | 278 | } |
| 279 | 279 | ||
| 280 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | 280 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. |
| 281 | static __inline__ void __DEFAULT_FN_ATTRS_INT8 | 281 | static __inline__ void __DEFAULT_FN_ATTRS_TILE |
| 282 | _tile_stored_internal(unsigned short m, unsigned short n, void *base, | 282 | _tile_stored_internal(unsigned short m, unsigned short n, void *base, |
| 283 | __SIZE_TYPE__ stride, _tile1024i tile) { | 283 | __SIZE_TYPE__ stride, _tile1024i tile) { |
| 284 | return __builtin_ia32_tilestored64_internal(m, n, base, | 284 | return __builtin_ia32_tilestored64_internal(m, n, base, |
| ... | @@ -292,13 +292,6 @@ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k, | ... | @@ -292,13 +292,6 @@ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k, |
| 292 | return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2); | 292 | return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2); |
| 293 | } | 293 | } |
| 294 | 294 | ||
| 295 | /// This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 296 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP16 | ||
| 297 | _tile_dpfp16ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 298 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 299 | return __builtin_ia32_tdpfp16ps_internal(m, n, k, dst, src1, src2); | ||
| 300 | } | ||
| 301 | |||
| 302 | /// This struct pack the shape and tile data together for user. We suggest | 295 | /// This struct pack the shape and tile data together for user. We suggest |
| 303 | /// initializing the struct as early as possible, because compiler depends | 296 | /// initializing the struct as early as possible, because compiler depends |
| 304 | /// on the shape information to do configure. The constant value is preferred | 297 | /// on the shape information to do configure. The constant value is preferred |
| ... | @@ -493,32 +486,9 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0, | ... | @@ -493,32 +486,9 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0, |
| 493 | src0.tile, src1.tile); | 486 | src0.tile, src1.tile); |
| 494 | } | 487 | } |
| 495 | 488 | ||
| 496 | /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles src0 and | ||
| 497 | /// src1, accumulating the intermediate single-precision (32-bit) floating-point | ||
| 498 | /// elements with elements in "dst", and store the 32-bit result back to tile | ||
| 499 | /// "dst". | ||
| 500 | /// | ||
| 501 | /// \headerfile <immintrin.h> | ||
| 502 | /// | ||
| 503 | /// This intrinsic corresponds to the <c> TDPFP16PS </c> instruction. | ||
| 504 | /// | ||
| 505 | /// \param dst | ||
| 506 | /// The destination tile. Max size is 1024 Bytes. | ||
| 507 | /// \param src0 | ||
| 508 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 509 | /// \param src1 | ||
| 510 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 511 | __DEFAULT_FN_ATTRS_FP16 | ||
| 512 | static __inline__ void __tile_dpfp16ps(__tile1024i *dst, __tile1024i src0, | ||
| 513 | __tile1024i src1) { | ||
| 514 | dst->tile = _tile_dpfp16ps_internal(src0.row, src1.col, src0.col, dst->tile, | ||
| 515 | src0.tile, src1.tile); | ||
| 516 | } | ||
| 517 | |||
| 518 | #undef __DEFAULT_FN_ATTRS_TILE | 489 | #undef __DEFAULT_FN_ATTRS_TILE |
| 519 | #undef __DEFAULT_FN_ATTRS_INT8 | 490 | #undef __DEFAULT_FN_ATTRS_INT8 |
| 520 | #undef __DEFAULT_FN_ATTRS_BF16 | 491 | #undef __DEFAULT_FN_ATTRS_BF16 |
| 521 | #undef __DEFAULT_FN_ATTRS_FP16 | ||
| 522 | 492 | ||
| 523 | #endif /* __x86_64__ */ | 493 | #endif /* __x86_64__ */ |
| 524 | #endif /* __AMXINTRIN_H */ | 494 | #endif /* __AMXINTRIN_H */ |
lib/include/amxmovrsintrin.h created+48| ... | @@ -0,0 +1,48 @@ | ||
| 1 | /*===-------- amxmovrsintrin.h - AMX MOVRS intrinsics -*- C++ -*---------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | * ===-------------------------------------------------------------------=== */ | ||
| 8 | |||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error "Never use <amxmovrsintrin.h> directly; include <immintrin.h> instead." | ||
| 11 | #endif /* __IMMINTRIN_H */ | ||
| 12 | |||
| 13 | #ifndef __AMXMOVRSINTRIN_H | ||
| 14 | #define __AMXMOVRSINTRIN_H | ||
| 15 | #ifdef __x86_64__ | ||
| 16 | |||
| 17 | #define __DEFAULT_FN_ATTRS_MOVRS \ | ||
| 18 | __attribute__((__always_inline__, __nodebug__, __target__("amx-movrs"))) | ||
| 19 | |||
| 20 | #define _tile_loaddrs(dst, base, stride) \ | ||
| 21 | __builtin_ia32_tileloaddrs64((dst), ((const void *)(base)), \ | ||
| 22 | (__SIZE_TYPE__)(stride)) | ||
| 23 | #define _tile_stream_loaddrs(dst, base, stride) \ | ||
| 24 | __builtin_ia32_tileloaddrst164((dst), ((const void *)(base)), \ | ||
| 25 | (__SIZE_TYPE__)(stride)) | ||
| 26 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS | ||
| 27 | _tile_loaddrs_internal(unsigned short m, unsigned short n, const void *base, | ||
| 28 | __SIZE_TYPE__ stride) { | ||
| 29 | return __builtin_ia32_tileloaddrs64_internal(m, n, base, | ||
| 30 | (__SIZE_TYPE__)(stride)); | ||
| 31 | } | ||
| 32 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS | ||
| 33 | _tile_loaddrst1_internal(unsigned short m, unsigned short n, const void *base, | ||
| 34 | __SIZE_TYPE__ stride) { | ||
| 35 | return __builtin_ia32_tileloaddrst164_internal(m, n, base, | ||
| 36 | (__SIZE_TYPE__)(stride)); | ||
| 37 | } | ||
| 38 | static __inline__ void __DEFAULT_FN_ATTRS_MOVRS | ||
| 39 | __tile_loaddrs(__tile1024i *dst, const void *base, __SIZE_TYPE__ stride) { | ||
| 40 | dst->tile = _tile_loaddrs_internal(dst->row, dst->col, base, stride); | ||
| 41 | } | ||
| 42 | static __inline__ void __DEFAULT_FN_ATTRS_MOVRS __tile_stream_loaddrs( | ||
| 43 | __tile1024i *dst, const void *base, __SIZE_TYPE__ stride) { | ||
| 44 | dst->tile = _tile_loaddrst1_internal(dst->row, dst->col, base, stride); | ||
| 45 | } | ||
| 46 | #undef __DEFAULT_FN_ATTRS_MOVRS | ||
| 47 | #endif /* __x86_64__ */ | ||
| 48 | #endif /* __AMXMOVRSINTRIN_H */ | ||
lib/include/amxmovrstransposeintrin.h created+200| ... | @@ -0,0 +1,200 @@ | ||
| 1 | /* ===--- amxmovrstransposeintrin.h - AMX_MOVRS_TRANSPOSE intrinsics --------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | * ===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error \ | ||
| 12 | "Never use <amxmovrstransposeintrin.h> directly; use <immintrin.h> instead." | ||
| 13 | #endif /* __IMMINTRIN_H */ | ||
| 14 | |||
| 15 | #ifndef __AMX_MOVRS_TRANSPOSEINTRIN_H | ||
| 16 | #define __AMX_MOVRS_TRANSPOSEINTRIN_H | ||
| 17 | #ifdef __x86_64__ | ||
| 18 | |||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 21 | __target__("amx-transpose,amx-movrs"))) | ||
| 22 | |||
| 23 | #define _tile_2rpntlvwz0rs(tdst, base, stride) \ | ||
| 24 | __builtin_ia32_t2rpntlvwz0rs(tdst, base, stride) | ||
| 25 | #define _tile_2rpntlvwz0rst1(tdst, base, stride) \ | ||
| 26 | __builtin_ia32_t2rpntlvwz0rst1(tdst, base, stride) | ||
| 27 | #define _tile_2rpntlvwz1rs(tdst, base, stride) \ | ||
| 28 | __builtin_ia32_t2rpntlvwz1rs(tdst, base, stride) | ||
| 29 | #define _tile_2rpntlvwz1rst1(tdst, base, stride) \ | ||
| 30 | __builtin_ia32_t2rpntlvwz1rst1(tdst, base, stride) | ||
| 31 | |||
| 32 | static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz0rs_internal( | ||
| 33 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 34 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 35 | __SIZE_TYPE__ stride) { | ||
| 36 | // Use __tile1024i_1024a* to escape the alignment check in | ||
| 37 | // clang/test/Headers/x86-intrinsics-headers-clean.cpp | ||
| 38 | __builtin_ia32_t2rpntlvwz0rs_internal( | ||
| 39 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 40 | (__SIZE_TYPE__)(stride)); | ||
| 41 | } | ||
| 42 | |||
| 43 | static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz0rst1_internal( | ||
| 44 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 45 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 46 | __SIZE_TYPE__ stride) { | ||
| 47 | __builtin_ia32_t2rpntlvwz0rst1_internal( | ||
| 48 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 49 | (__SIZE_TYPE__)(stride)); | ||
| 50 | } | ||
| 51 | |||
| 52 | static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz1rs_internal( | ||
| 53 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 54 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 55 | __SIZE_TYPE__ stride) { | ||
| 56 | __builtin_ia32_t2rpntlvwz1rs_internal( | ||
| 57 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 58 | (__SIZE_TYPE__)(stride)); | ||
| 59 | } | ||
| 60 | |||
| 61 | static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz1rst1_internal( | ||
| 62 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 63 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 64 | __SIZE_TYPE__ stride) { | ||
| 65 | __builtin_ia32_t2rpntlvwz1rst1_internal( | ||
| 66 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 67 | (__SIZE_TYPE__)(stride)); | ||
| 68 | } | ||
| 69 | |||
| 70 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 71 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 72 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 73 | /// one, separated by the same stride that separates each row. | ||
| 74 | /// The tile configuration for the destination tiles indicates the amount | ||
| 75 | /// of data to read from memory. The instruction will load a number of rows | ||
| 76 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 77 | /// is equal to the average width of the destination tiles. If the second | ||
| 78 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 79 | /// be written. | ||
| 80 | /// Provides a hint to the implementation that the data will likely become | ||
| 81 | /// read shared in the near future and the data caching can be optimized. | ||
| 82 | /// | ||
| 83 | /// \headerfile <immintrin.h> | ||
| 84 | /// | ||
| 85 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ0RS </c> instruction. | ||
| 86 | /// | ||
| 87 | /// \param dst0 | ||
| 88 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 89 | /// \param dst1 | ||
| 90 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 91 | /// \param base | ||
| 92 | /// A pointer to base address. | ||
| 93 | /// \param stride | ||
| 94 | /// The stride between the rows' data to be loaded in memory. | ||
| 95 | __DEFAULT_FN_ATTRS | ||
| 96 | static void __tile_2rpntlvwz0rs(__tile1024i *dst0, __tile1024i *dst1, | ||
| 97 | const void *base, __SIZE_TYPE__ stride) { | ||
| 98 | _tile_2rpntlvwz0rs_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 99 | &dst1->tile, base, stride); | ||
| 100 | } | ||
| 101 | |||
| 102 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 103 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 104 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 105 | /// one, separated by the same stride that separates each row. | ||
| 106 | /// The tile configuration for the destination tiles indicates the amount | ||
| 107 | /// of data to read from memory. The instruction will load a number of rows | ||
| 108 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 109 | /// is equal to the average width of the destination tiles. If the second | ||
| 110 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 111 | /// be written. | ||
| 112 | /// | ||
| 113 | /// \headerfile <immintrin.h> | ||
| 114 | /// | ||
| 115 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ0T1RS </c> instruction. | ||
| 116 | /// | ||
| 117 | /// \param dst0 | ||
| 118 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 119 | /// \param dst1 | ||
| 120 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 121 | /// \param base | ||
| 122 | /// A pointer to base address. | ||
| 123 | /// \param stride | ||
| 124 | /// The stride between the rows' data to be loaded in memory. | ||
| 125 | __DEFAULT_FN_ATTRS | ||
| 126 | static void __tile_2rpntlvwz0rst1(__tile1024i *dst0, __tile1024i *dst1, | ||
| 127 | const void *base, __SIZE_TYPE__ stride) { | ||
| 128 | _tile_2rpntlvwz0rst1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 129 | &dst1->tile, base, stride); | ||
| 130 | } | ||
| 131 | |||
| 132 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 133 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 134 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 135 | /// one, separated by the same stride that separates each row. | ||
| 136 | /// The tile configuration for the destination tiles indicates the amount | ||
| 137 | /// of data to read from memory. The instruction will load a number of rows | ||
| 138 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 139 | /// is equal to the average width of the destination tiles. If the second | ||
| 140 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 141 | /// be written. The last row will be not be read from memory but instead | ||
| 142 | /// filled with zeros. | ||
| 143 | /// Provides a hint to the implementation that the data will likely become | ||
| 144 | /// read shared in the near future and the data caching can be optimized. | ||
| 145 | /// | ||
| 146 | /// \headerfile <immintrin.h> | ||
| 147 | /// | ||
| 148 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ1 </c> instruction. | ||
| 149 | /// | ||
| 150 | /// \param dst0 | ||
| 151 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 152 | /// \param dst1 | ||
| 153 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 154 | /// \param base | ||
| 155 | /// A pointer to base address. | ||
| 156 | /// \param stride | ||
| 157 | /// The stride between the rows' data to be loaded in memory. | ||
| 158 | __DEFAULT_FN_ATTRS | ||
| 159 | static void __tile_2rpntlvwz1rs(__tile1024i *dst0, __tile1024i *dst1, | ||
| 160 | const void *base, __SIZE_TYPE__ stride) { | ||
| 161 | _tile_2rpntlvwz1rs_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 162 | &dst1->tile, base, stride); | ||
| 163 | } | ||
| 164 | |||
| 165 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 166 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 167 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 168 | /// one, separated by the same stride that separates each row. | ||
| 169 | /// The tile configuration for the destination tiles indicates the amount | ||
| 170 | /// of data to read from memory. The instruction will load a number of rows | ||
| 171 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 172 | /// is equal to the average width of the destination tiles. If the second | ||
| 173 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 174 | /// be written. The last row will be not be read from memory but instead | ||
| 175 | /// filled with zeros. | ||
| 176 | /// Provides a hint to the implementation that the data will likely become | ||
| 177 | /// read shared in the near future and the data caching can be optimized. | ||
| 178 | /// | ||
| 179 | /// \headerfile <immintrin.h> | ||
| 180 | /// | ||
| 181 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ1T1RS </c> instruction. | ||
| 182 | /// | ||
| 183 | /// \param dst0 | ||
| 184 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 185 | /// \param dst1 | ||
| 186 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 187 | /// \param base | ||
| 188 | /// A pointer to base address. | ||
| 189 | /// \param stride | ||
| 190 | /// The stride between the rows' data to be loaded in memory. | ||
| 191 | __DEFAULT_FN_ATTRS | ||
| 192 | static void __tile_2rpntlvwz1rst1(__tile1024i *dst0, __tile1024i *dst1, | ||
| 193 | const void *base, __SIZE_TYPE__ stride) { | ||
| 194 | _tile_2rpntlvwz1rst1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 195 | &dst1->tile, base, stride); | ||
| 196 | } | ||
| 197 | |||
| 198 | #undef __DEFAULT_FN_ATTRS | ||
| 199 | #endif /* __x86_64__ */ | ||
| 200 | #endif /* __AMX_MOVRS_TRANSPOSEINTRIN_H */ | ||
| \ No newline at end of file | |||
lib/include/amxtf32intrin.h created+108| ... | @@ -0,0 +1,108 @@ | ||
| 1 | /*===------------- amxtf32intrin.h - AMX_TF32 intrinsics -*- C++ -*---------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error "Never use <amxtf32intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AMX_TF32INTRIN_H | ||
| 15 | #define __AMX_TF32INTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | #define __DEFAULT_FN_ATTRS_TF32 \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("amx-tf32"))) | ||
| 20 | |||
| 21 | /// Do Matrix Multiplication of \a a and \a b, and then do Matrix Plus | ||
| 22 | /// with \a srcdst. | ||
| 23 | /// All the calculation is base on float32 but with the lower 13-bit set to 0. | ||
| 24 | /// | ||
| 25 | /// \headerfile <immintrin.h> | ||
| 26 | /// | ||
| 27 | /// \code | ||
| 28 | /// void _tile_mmultf32ps(constexpr int srcdst, constexpr int a, \ | ||
| 29 | /// constexpr int b); | ||
| 30 | /// \endcode | ||
| 31 | /// | ||
| 32 | /// This intrinsic corresponds to the <c> TMMULTF32PS </c> instruction. | ||
| 33 | /// | ||
| 34 | /// \param srcdst | ||
| 35 | /// 	The destination tile. Max size is 1024 Bytes. | ||
| 36 | /// \param a | ||
| 37 | /// 	The 1st source tile. Max size is 1024 Bytes. | ||
| 38 | /// \param b | ||
| 39 | /// 	The 2nd source tile. Max size is 1024 Bytes. | ||
| 40 | /// | ||
| 41 | /// \code{.operation} | ||
| 42 | /// DEFINE zero_lower_mantissa_bits_fp32(x[31:0]) { | ||
| 43 | ///	dword[12:0] := 0 | ||
| 44 | ///	dword[31:13] := x[31:13] | ||
| 45 | ///	return dword | ||
| 46 | /// } | ||
| 47 | /// | ||
| 48 | /// DEFINE silence_snan_fp32(x[31:0]) { | ||
| 49 | /// 	IF (x.exponent == 255 and x.fraction != 0 and x.fraction[22] == 0) | ||
| 50 | /// 		x.fraction[22] := 1 | ||
| 51 | /// 	return x | ||
| 52 | /// } | ||
| 53 | /// | ||
| 54 | /// elements_a := a.colsb / 4 | ||
| 55 | /// elements_dest := srcdst.colsb / 4 | ||
| 56 | /// | ||
| 57 | /// FOR m = 0 TO (srcdst.rows-1) | ||
| 58 | /// 	tmp[511:0] := 0 | ||
| 59 | /// 	FOR k = 0 TO (elements_a-1) | ||
| 60 | /// 		FOR n = 0 TO (elements_dest-1) | ||
| 61 | /// 			af := silence_snan_fp32(a.row[m].fp32[k]) | ||
| 62 | /// 			bf := silence_snan_fp32(b.row[k].fp32[n]) | ||
| 63 | /// 			tmp.fp32[n] += zero_lower_mantissa_bits_fp32(af) | ||
| 64 | /// 					* zero_lower_mantissa_bits_fp32(bf) | ||
| 65 | /// 		ENDFOR | ||
| 66 | /// 	ENDFOR | ||
| 67 | /// | ||
| 68 | /// 	FOR n = 0 TO (elements_dest-1) | ||
| 69 | /// 		tmp.fp32[n] += srcdst.row[m].fp32[n] | ||
| 70 | /// 	ENDFOR | ||
| 71 | ///	write_row_and_zero(srcdst, m, tmp, srcdst.colsb) | ||
| 72 | /// | ||
| 73 | /// ENDFOR | ||
| 74 | /// | ||
| 75 | /// zero_upper_rows(srcdst, srcdst.rows) | ||
| 76 | /// zero_tileconfig_start() | ||
| 77 | /// \endcode | ||
| 78 | #define _tile_mmultf32ps(srcdst, a, b) \ | ||
| 79 | __builtin_ia32_tmmultf32ps((srcdst), (a), (b)) | ||
| 80 | |||
| 81 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TF32 | ||
| 82 | _tile_mmultf32ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 83 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 84 | return __builtin_ia32_tmmultf32ps_internal(m, n, k, dst, src1, src2); | ||
| 85 | } | ||
| 86 | |||
| 87 | /// Do Matrix Multiplication of src0 and src1, and then do Matrix Plus with dst. | ||
| 88 | /// All the calculation is base on float32 but with the lower 13-bit set to 0. | ||
| 89 | /// | ||
| 90 | /// \headerfile <immintrin.h> | ||
| 91 | /// | ||
| 92 | /// This intrinsic corresponds to the <c> TMMULTF32PS </c> instruction. | ||
| 93 | /// | ||
| 94 | /// \param dst | ||
| 95 | /// The destination tile. Max size is 1024 Bytes. | ||
| 96 | /// \param src0 | ||
| 97 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 98 | /// \param src1 | ||
| 99 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 100 | __DEFAULT_FN_ATTRS_TF32 | ||
| 101 | static void __tile_mmultf32ps(__tile1024i *dst, __tile1024i src0, | ||
| 102 | __tile1024i src1) { | ||
| 103 | dst->tile = _tile_mmultf32ps_internal(src0.row, src1.col, src0.col, dst->tile, | ||
| 104 | src0.tile, src1.tile); | ||
| 105 | } | ||
| 106 | |||
| 107 | #endif // __x86_64__ | ||
| 108 | #endif // __AMX_TF32INTRIN_H | ||
lib/include/amxtf32transposeintrin.h created+105| ... | @@ -0,0 +1,105 @@ | ||
| 1 | /*===--------- amxtf32transposeintrin.h - AMX-TF32 and AMX-TRANSPOSE --------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===------------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <amxtf32tranposeintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AMX_TF32TRANSPOSEINTRIN_H | ||
| 15 | #define __AMX_TF32TRANSPOSEINTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | #define __DEFAULT_FN_ATTRS_TF32_TRANSPOSE \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 20 | __target__("amx-tf32,amx-transpose"))) | ||
| 21 | |||
| 22 | /// \code | ||
| 23 | /// void _tile_tmmultf32ps(constexpr int srcdst, constexpr int a, \ | ||
| 24 | /// constexpr int b); | ||
| 25 | /// \endcode | ||
| 26 | /// | ||
| 27 | /// This intrinsic corresponds to the <c> TTMMULTF32PS </c> instruction. | ||
| 28 | /// | ||
| 29 | /// \param srcdst | ||
| 30 | /// 	The destination tile. Max size is 1024 Bytes. | ||
| 31 | /// \param a | ||
| 32 | /// 	The 1st source tile. Max size is 1024 Bytes. | ||
| 33 | /// \param b | ||
| 34 | /// 	The 2nd source tile. Max size is 1024 Bytes. | ||
| 35 | /// | ||
| 36 | /// \code{.operation} | ||
| 37 | /// DEFINE zero_lower_mantissa_bits_fp32(x[31:0]) { | ||
| 38 | /// 	dword[12:0] := 0 | ||
| 39 | /// 	dword[31:13] := x[31:13] | ||
| 40 | /// 	return dword | ||
| 41 | /// } | ||
| 42 | /// | ||
| 43 | /// DEFINE silence_snan_fp32(x[31:0]) { | ||
| 44 | /// 	IF (x.exponent == 255 and x.fraction != 0 and x.fraction[22] == 0) | ||
| 45 | /// 		x.fraction[22] := 1 | ||
| 46 | /// 	return x | ||
| 47 | /// } | ||
| 48 | /// | ||
| 49 | /// elements_dest:= srcdst.colsb/4 | ||
| 50 | /// | ||
| 51 | /// FOR m := 0 TO (srcdst.rows-1) | ||
| 52 | /// 	tmp[511:0] := 0 | ||
| 53 | /// 	FOR k := 0 TO (a.rows-1) | ||
| 54 | /// 		FOR n := 0 TO (elements_dest-1) | ||
| 55 | /// 			a1e := silence_snan_fp32(a.row[k].fp32[m]) | ||
| 56 | /// 			a2e := silence_snan_fp32(b.row[k].fp32[n]) | ||
| 57 | /// 			s1e := zero_lower_mantissa_bits_fp32(a1e) | ||
| 58 | /// 			s2e := zero_lower_mantissa_bits_fp32(a2e) | ||
| 59 | /// 			tmp.fp32[n] += s1e * s2e | ||
| 60 | /// 		ENDFOR | ||
| 61 | /// 	ENDFOR | ||
| 62 | /// | ||
| 63 | /// 	FOR n := 0 TO (elements_dest-1) | ||
| 64 | /// 		tmp.fp32[n] += srcdst.row[m].fp32[n] | ||
| 65 | /// 	ENDFOR | ||
| 66 | ///	write_row_and_zero(srcdst, m, tmp, srcdst.colsb) | ||
| 67 | /// | ||
| 68 | /// ENDFOR | ||
| 69 | /// | ||
| 70 | /// zero_upper_rows(srcdst, srcdst.rows) | ||
| 71 | /// zero_tileconfig_start() | ||
| 72 | /// \endcode | ||
| 73 | #define _tile_tmmultf32ps(srcdst, a, b) \ | ||
| 74 | __builtin_ia32_ttmmultf32ps((srcdst), (a), (b)) | ||
| 75 | |||
| 76 | // dst = m x n (srcdest), src1 = k x m, src2 = k x n | ||
| 77 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TF32_TRANSPOSE | ||
| 78 | _tile_tmmultf32ps_internal(unsigned short m, unsigned short n, unsigned short k, | ||
| 79 | _tile1024i dst, _tile1024i src1, _tile1024i src2) { | ||
| 80 | return __builtin_ia32_ttmmultf32ps_internal(m, n, k, dst, src1, src2); | ||
| 81 | } | ||
| 82 | |||
| 83 | /// Compute transpose and do Matrix Multiplication of src0 and src1, and then do | ||
| 84 | /// Matrix Plus with dst. All the calculation is base on float32 but with the | ||
| 85 | /// lower 13-bit set to 0. | ||
| 86 | /// | ||
| 87 | /// \headerfile <immintrin.h> | ||
| 88 | /// | ||
| 89 | /// This intrinsic corresponds to the <c> TTMMULTF32PS </c> instruction. | ||
| 90 | /// | ||
| 91 | /// \param dst | ||
| 92 | /// The destination tile. Max size is 1024 Bytes. | ||
| 93 | /// \param src0 | ||
| 94 | /// The 1st source tile. Max size is 1024 Bytes. | ||
| 95 | /// \param src1 | ||
| 96 | /// The 2nd source tile. Max size is 1024 Bytes. | ||
| 97 | __DEFAULT_FN_ATTRS_TF32_TRANSPOSE | ||
| 98 | static void __tile_tmmultf32ps(__tile1024i *dst, __tile1024i src0, | ||
| 99 | __tile1024i src1) { | ||
| 100 | dst->tile = _tile_tmmultf32ps_internal(src0.row, src1.col, src0.col, | ||
| 101 | dst->tile, src0.tile, src1.tile); | ||
| 102 | } | ||
| 103 | |||
| 104 | #endif // __x86_64__ | ||
| 105 | #endif // __AMX_TF32TRANSPOSEINTRIN_H | ||
lib/include/amxtransposeintrin.h created+248| ... | @@ -0,0 +1,248 @@ | ||
| 1 | /* ===--- amxtransposeintrin.h - AMX_TRANSPOSE intrinsics -*- C++ -*---------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | * ===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error "Never use <amxtransposeintrin.h> directly; use <immintrin.h> instead." | ||
| 12 | #endif /* __IMMINTRIN_H */ | ||
| 13 | |||
| 14 | #ifndef __AMX_TRANSPOSEINTRIN_H | ||
| 15 | #define __AMX_TRANSPOSEINTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | #define __DEFAULT_FN_ATTRS_TRANSPOSE \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("amx-transpose"))) | ||
| 20 | |||
| 21 | #define _tile_2rpntlvwz0(tdst, base, stride) \ | ||
| 22 | __builtin_ia32_t2rpntlvwz0(tdst, base, stride) | ||
| 23 | #define _tile_2rpntlvwz0t1(tdst, base, stride) \ | ||
| 24 | __builtin_ia32_t2rpntlvwz0t1(tdst, base, stride) | ||
| 25 | #define _tile_2rpntlvwz1(tdst, base, stride) \ | ||
| 26 | __builtin_ia32_t2rpntlvwz1(tdst, base, stride) | ||
| 27 | #define _tile_2rpntlvwz1t1(tdst, base, stride) \ | ||
| 28 | __builtin_ia32_t2rpntlvwz1t1(tdst, base, stride) | ||
| 29 | |||
| 30 | /// Transpose 32-bit elements from \a src and write the result to \a dst. | ||
| 31 | /// | ||
| 32 | /// \headerfile <immintrin.h> | ||
| 33 | /// | ||
| 34 | /// \code | ||
| 35 | /// void _tile_transposed(__tile dst, __tile src); | ||
| 36 | /// \endcode | ||
| 37 | /// | ||
| 38 | /// This intrinsic corresponds to the <c> TTRANSPOSED </c> instruction. | ||
| 39 | /// | ||
| 40 | /// \param dst | ||
| 41 | /// 	The destination tile. Max size is 1024 Bytes. | ||
| 42 | /// \param src | ||
| 43 | /// 	The source tile. Max size is 1024 Bytes. | ||
| 44 | /// | ||
| 45 | /// \code{.operation} | ||
| 46 | /// | ||
| 47 | /// FOR i := 0 TO (dst.rows-1) | ||
| 48 | /// 	tmp[511:0] := 0 | ||
| 49 | /// 	FOR j := 0 TO (dst.colsb/4-1) | ||
| 50 | /// 		tmp.dword[j] := src.row[j].dword[i] | ||
| 51 | /// 	ENDFOR | ||
| 52 | /// 	dst.row[i] := tmp | ||
| 53 | /// ENDFOR | ||
| 54 | /// | ||
| 55 | /// zero_upper_rows(dst, dst.rows) | ||
| 56 | /// zero_tileconfig_start() | ||
| 57 | /// \endcode | ||
| 58 | #define _tile_transposed(dst, src) __builtin_ia32_ttransposed(dst, src) | ||
| 59 | |||
| 60 | static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz0_internal( | ||
| 61 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 62 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 63 | __SIZE_TYPE__ stride) { | ||
| 64 | // Use __tile1024i_1024a* to escape the alignment check in | ||
| 65 | // clang/test/Headers/x86-intrinsics-headers-clean.cpp | ||
| 66 | __builtin_ia32_t2rpntlvwz0_internal(row, col0, col1, (_tile1024i_1024a *)dst0, | ||
| 67 | (_tile1024i_1024a *)dst1, base, | ||
| 68 | (__SIZE_TYPE__)(stride)); | ||
| 69 | } | ||
| 70 | |||
| 71 | static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz0t1_internal( | ||
| 72 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 73 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 74 | __SIZE_TYPE__ stride) { | ||
| 75 | __builtin_ia32_t2rpntlvwz0t1_internal( | ||
| 76 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 77 | (__SIZE_TYPE__)(stride)); | ||
| 78 | } | ||
| 79 | |||
| 80 | static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz1_internal( | ||
| 81 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 82 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 83 | __SIZE_TYPE__ stride) { | ||
| 84 | __builtin_ia32_t2rpntlvwz1_internal(row, col0, col1, (_tile1024i_1024a *)dst0, | ||
| 85 | (_tile1024i_1024a *)dst1, base, | ||
| 86 | (__SIZE_TYPE__)(stride)); | ||
| 87 | } | ||
| 88 | |||
| 89 | static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz1t1_internal( | ||
| 90 | unsigned short row, unsigned short col0, unsigned short col1, | ||
| 91 | _tile1024i *dst0, _tile1024i *dst1, const void *base, | ||
| 92 | __SIZE_TYPE__ stride) { | ||
| 93 | __builtin_ia32_t2rpntlvwz1t1_internal( | ||
| 94 | row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base, | ||
| 95 | (__SIZE_TYPE__)(stride)); | ||
| 96 | } | ||
| 97 | |||
| 98 | // This is internal intrinsic. C/C++ user should avoid calling it directly. | ||
| 99 | static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 100 | _tile_transposed_internal(unsigned short m, unsigned short n, _tile1024i src) { | ||
| 101 | return __builtin_ia32_ttransposed_internal(m, n, src); | ||
| 102 | } | ||
| 103 | |||
| 104 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 105 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 106 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 107 | /// one, separated by the same stride that separates each row. | ||
| 108 | /// The tile configuration for the destination tiles indicates the amount | ||
| 109 | /// of data to read from memory. The instruction will load a number of rows | ||
| 110 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 111 | /// is equal to the average width of the destination tiles. If the second | ||
| 112 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 113 | /// be written. | ||
| 114 | /// Provides a hint to the implementation that the data will likely not be | ||
| 115 | /// reused in the near future and the data caching can be optimized. | ||
| 116 | /// | ||
| 117 | /// \headerfile <immintrin.h> | ||
| 118 | /// | ||
| 119 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ0 </c> instruction. | ||
| 120 | /// | ||
| 121 | /// \param dst0 | ||
| 122 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 123 | /// \param dst1 | ||
| 124 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 125 | /// \param base | ||
| 126 | /// A pointer to base address. | ||
| 127 | /// \param stride | ||
| 128 | /// The stride between the rows' data to be loaded in memory. | ||
| 129 | __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 130 | static void __tile_2rpntlvwz0(__tile1024i *dst0, __tile1024i *dst1, | ||
| 131 | const void *base, __SIZE_TYPE__ stride) { | ||
| 132 | _tile_2rpntlvwz0_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 133 | &dst1->tile, base, stride); | ||
| 134 | } | ||
| 135 | |||
| 136 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 137 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 138 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 139 | /// one, separated by the same stride that separates each row. | ||
| 140 | /// The tile configuration for the destination tiles indicates the amount | ||
| 141 | /// of data to read from memory. The instruction will load a number of rows | ||
| 142 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 143 | /// is equal to the average width of the destination tiles. If the second | ||
| 144 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 145 | /// be written. | ||
| 146 | /// | ||
| 147 | /// \headerfile <immintrin.h> | ||
| 148 | /// | ||
| 149 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ0T1 </c> instruction. | ||
| 150 | /// | ||
| 151 | /// \param dst0 | ||
| 152 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 153 | /// \param dst1 | ||
| 154 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 155 | /// \param base | ||
| 156 | /// A pointer to base address. | ||
| 157 | /// \param stride | ||
| 158 | /// The stride between the rows' data to be loaded in memory. | ||
| 159 | __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 160 | static void __tile_2rpntlvwz0t1(__tile1024i *dst0, __tile1024i *dst1, | ||
| 161 | const void *base, __SIZE_TYPE__ stride) { | ||
| 162 | _tile_2rpntlvwz0t1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 163 | &dst1->tile, base, stride); | ||
| 164 | } | ||
| 165 | |||
| 166 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 167 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 168 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 169 | /// one, separated by the same stride that separates each row. | ||
| 170 | /// The tile configuration for the destination tiles indicates the amount | ||
| 171 | /// of data to read from memory. The instruction will load a number of rows | ||
| 172 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 173 | /// is equal to the average width of the destination tiles. If the second | ||
| 174 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 175 | /// be written. The last row will be not be read from memory but instead | ||
| 176 | /// filled with zeros. | ||
| 177 | /// Provides a hint to the implementation that the data will likely not be | ||
| 178 | /// reused in the near future and the data caching can be optimized. | ||
| 179 | /// | ||
| 180 | /// \headerfile <immintrin.h> | ||
| 181 | /// | ||
| 182 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ1 </c> instruction. | ||
| 183 | /// | ||
| 184 | /// \param dst0 | ||
| 185 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 186 | /// \param dst1 | ||
| 187 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 188 | /// \param base | ||
| 189 | /// A pointer to base address. | ||
| 190 | /// \param stride | ||
| 191 | /// The stride between the rows' data to be loaded in memory. | ||
| 192 | __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 193 | static void __tile_2rpntlvwz1(__tile1024i *dst0, __tile1024i *dst1, | ||
| 194 | const void *base, __SIZE_TYPE__ stride) { | ||
| 195 | _tile_2rpntlvwz1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 196 | &dst1->tile, base, stride); | ||
| 197 | } | ||
| 198 | |||
| 199 | /// Converts a pair of tiles from memory into VNNI format, and places the | ||
| 200 | /// results in a pair of destinations specified by dst. The pair of tiles | ||
| 201 | /// in memory is specified via a tsib; the second tile is after the first | ||
| 202 | /// one, separated by the same stride that separates each row. | ||
| 203 | /// The tile configuration for the destination tiles indicates the amount | ||
| 204 | /// of data to read from memory. The instruction will load a number of rows | ||
| 205 | /// that is equal to twice the number of rows in tmm1. The size of each row | ||
| 206 | /// is equal to the average width of the destination tiles. If the second | ||
| 207 | /// tile is configured with zero rows and columns, only the first tile will | ||
| 208 | /// be written. The last row will be not be read from memory but instead | ||
| 209 | /// filled with zeros. | ||
| 210 | /// Provides a hint to the implementation that the data will likely not be | ||
| 211 | /// reused in the near future and the data caching can be optimized. | ||
| 212 | /// | ||
| 213 | /// \headerfile <immintrin.h> | ||
| 214 | /// | ||
| 215 | /// This intrinsic corresponds to the <c> T2RPNTLVWZ1T1 </c> instruction. | ||
| 216 | /// | ||
| 217 | /// \param dst0 | ||
| 218 | /// First tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 219 | /// \param dst1 | ||
| 220 | /// Second tile of destination tile pair. Max size is 1024i*2 Bytes. | ||
| 221 | /// \param base | ||
| 222 | /// A pointer to base address. | ||
| 223 | /// \param stride | ||
| 224 | /// The stride between the rows' data to be loaded in memory. | ||
| 225 | __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 226 | static void __tile_2rpntlvwz1t1(__tile1024i *dst0, __tile1024i *dst1, | ||
| 227 | const void *base, __SIZE_TYPE__ stride) { | ||
| 228 | _tile_2rpntlvwz1t1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile, | ||
| 229 | &dst1->tile, base, stride); | ||
| 230 | } | ||
| 231 | |||
| 232 | /// Transpose 32-bit elements from src and write the result to dst. | ||
| 233 | /// | ||
| 234 | /// \headerfile <immintrin.h> | ||
| 235 | /// | ||
| 236 | /// This intrinsic corresponds to the <c> TTRANSPOSED </c> instruction. | ||
| 237 | /// | ||
| 238 | /// \param dst | ||
| 239 | /// The destination tile. Max size is 1024 Bytes. | ||
| 240 | /// \param src | ||
| 241 | /// The source tile. Max size is 1024 Bytes. | ||
| 242 | __DEFAULT_FN_ATTRS_TRANSPOSE | ||
| 243 | static void __tile_transposed(__tile1024i *dst, __tile1024i src) { | ||
| 244 | dst->tile = _tile_transposed_internal(dst->row, dst->col, src.tile); | ||
| 245 | } | ||
| 246 | |||
| 247 | #endif /* __x86_64__ */ | ||
| 248 | #endif /* __AMX_TRANSPOSEINTRIN_H */ | ||
lib/include/arm_acle.h+18-21| ... | @@ -264,28 +264,28 @@ __rbitl(unsigned long __t) { | ... | @@ -264,28 +264,28 @@ __rbitl(unsigned long __t) { |
| 264 | } | 264 | } |
| 265 | 265 | ||
| 266 | /* 8.3 16-bit multiplications */ | 266 | /* 8.3 16-bit multiplications */ |
| 267 | #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP | 267 | #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE |
| 268 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 268 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 269 | __smulbb(int32_t __a, int32_t __b) { | 269 | __smulbb(int32_t __a, int32_t __b) { |
| 270 | return __builtin_arm_smulbb(__a, __b); | 270 | return __builtin_arm_smulbb(__a, __b); |
| 271 | } | 271 | } |
| 272 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 272 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 273 | __smulbt(int32_t __a, int32_t __b) { | 273 | __smulbt(int32_t __a, int32_t __b) { |
| 274 | return __builtin_arm_smulbt(__a, __b); | 274 | return __builtin_arm_smulbt(__a, __b); |
| 275 | } | 275 | } |
| 276 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 276 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 277 | __smultb(int32_t __a, int32_t __b) { | 277 | __smultb(int32_t __a, int32_t __b) { |
| 278 | return __builtin_arm_smultb(__a, __b); | 278 | return __builtin_arm_smultb(__a, __b); |
| 279 | } | 279 | } |
| 280 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 280 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 281 | __smultt(int32_t __a, int32_t __b) { | 281 | __smultt(int32_t __a, int32_t __b) { |
| 282 | return __builtin_arm_smultt(__a, __b); | 282 | return __builtin_arm_smultt(__a, __b); |
| 283 | } | 283 | } |
| 284 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 284 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 285 | __smulwb(int32_t __a, int32_t __b) { | 285 | __smulwb(int32_t __a, int32_t __b) { |
| 286 | return __builtin_arm_smulwb(__a, __b); | 286 | return __builtin_arm_smulwb(__a, __b); |
| 287 | } | 287 | } |
| 288 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__)) | 288 | static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp"))) |
| 289 | __smulwt(int32_t __a, int32_t __b) { | 289 | __smulwt(int32_t __a, int32_t __b) { |
| 290 | return __builtin_arm_smulwt(__a, __b); | 290 | return __builtin_arm_smulwt(__a, __b); |
| 291 | } | 291 | } |
| ... | @@ -304,46 +304,46 @@ __smulwt(int32_t __a, int32_t __b) { | ... | @@ -304,46 +304,46 @@ __smulwt(int32_t __a, int32_t __b) { |
| 304 | #endif | 304 | #endif |
| 305 | 305 | ||
| 306 | /* 8.4.2 Saturating addition and subtraction intrinsics */ | 306 | /* 8.4.2 Saturating addition and subtraction intrinsics */ |
| 307 | #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP | 307 | #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE |
| 308 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 308 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 309 | __qadd(int32_t __t, int32_t __v) { | 309 | __qadd(int32_t __t, int32_t __v) { |
| 310 | return __builtin_arm_qadd(__t, __v); | 310 | return __builtin_arm_qadd(__t, __v); |
| 311 | } | 311 | } |
| 312 | 312 | ||
| 313 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 313 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 314 | __qsub(int32_t __t, int32_t __v) { | 314 | __qsub(int32_t __t, int32_t __v) { |
| 315 | return __builtin_arm_qsub(__t, __v); | 315 | return __builtin_arm_qsub(__t, __v); |
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 318 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 319 | __qdbl(int32_t __t) { | 319 | __qdbl(int32_t __t) { |
| 320 | return __builtin_arm_qadd(__t, __t); | 320 | return __builtin_arm_qadd(__t, __t); |
| 321 | } | 321 | } |
| 322 | #endif | 322 | #endif |
| 323 | 323 | ||
| 324 | /* 8.4.3 Accumulating multiplications */ | 324 | /* 8.4.3 Accumulating multiplications */ |
| 325 | #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP | 325 | #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE |
| 326 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 326 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 327 | __smlabb(int32_t __a, int32_t __b, int32_t __c) { | 327 | __smlabb(int32_t __a, int32_t __b, int32_t __c) { |
| 328 | return __builtin_arm_smlabb(__a, __b, __c); | 328 | return __builtin_arm_smlabb(__a, __b, __c); |
| 329 | } | 329 | } |
| 330 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 330 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 331 | __smlabt(int32_t __a, int32_t __b, int32_t __c) { | 331 | __smlabt(int32_t __a, int32_t __b, int32_t __c) { |
| 332 | return __builtin_arm_smlabt(__a, __b, __c); | 332 | return __builtin_arm_smlabt(__a, __b, __c); |
| 333 | } | 333 | } |
| 334 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 334 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 335 | __smlatb(int32_t __a, int32_t __b, int32_t __c) { | 335 | __smlatb(int32_t __a, int32_t __b, int32_t __c) { |
| 336 | return __builtin_arm_smlatb(__a, __b, __c); | 336 | return __builtin_arm_smlatb(__a, __b, __c); |
| 337 | } | 337 | } |
| 338 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 338 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 339 | __smlatt(int32_t __a, int32_t __b, int32_t __c) { | 339 | __smlatt(int32_t __a, int32_t __b, int32_t __c) { |
| 340 | return __builtin_arm_smlatt(__a, __b, __c); | 340 | return __builtin_arm_smlatt(__a, __b, __c); |
| 341 | } | 341 | } |
| 342 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 342 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 343 | __smlawb(int32_t __a, int32_t __b, int32_t __c) { | 343 | __smlawb(int32_t __a, int32_t __b, int32_t __c) { |
| 344 | return __builtin_arm_smlawb(__a, __b, __c); | 344 | return __builtin_arm_smlawb(__a, __b, __c); |
| 345 | } | 345 | } |
| 346 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__)) | 346 | static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp"))) |
| 347 | __smlawt(int32_t __a, int32_t __b, int32_t __c) { | 347 | __smlawt(int32_t __a, int32_t __b, int32_t __c) { |
| 348 | return __builtin_arm_smlawt(__a, __b, __c); | 348 | return __builtin_arm_smlawt(__a, __b, __c); |
| 349 | } | 349 | } |
| ... | @@ -621,8 +621,6 @@ __rintnf(float __a) { | ... | @@ -621,8 +621,6 @@ __rintnf(float __a) { |
| 621 | #endif | 621 | #endif |
| 622 | 622 | ||
| 623 | /* 8.8 CRC32 intrinsics */ | 623 | /* 8.8 CRC32 intrinsics */ |
| 624 | #if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \ | ||
| 625 | (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE) | ||
| 626 | static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc"))) | 624 | static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc"))) |
| 627 | __crc32b(uint32_t __a, uint8_t __b) { | 625 | __crc32b(uint32_t __a, uint8_t __b) { |
| 628 | return __builtin_arm_crc32b(__a, __b); | 626 | return __builtin_arm_crc32b(__a, __b); |
| ... | @@ -662,7 +660,6 @@ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target | ... | @@ -662,7 +660,6 @@ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target |
| 662 | __crc32cd(uint32_t __a, uint64_t __b) { | 660 | __crc32cd(uint32_t __a, uint64_t __b) { |
| 663 | return __builtin_arm_crc32cd(__a, __b); | 661 | return __builtin_arm_crc32cd(__a, __b); |
| 664 | } | 662 | } |
| 665 | #endif | ||
| 666 | 663 | ||
| 667 | /* 8.6 Floating-point data-processing intrinsics */ | 664 | /* 8.6 Floating-point data-processing intrinsics */ |
| 668 | /* Armv8.3-A Javascript conversion intrinsic */ | 665 | /* Armv8.3-A Javascript conversion intrinsic */ |
lib/include/arm_neon.h+3587-1696| ... | @@ -359,9 +359,7 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __noswap_vcombine_bf16(bf | ... | @@ -359,9 +359,7 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __noswap_vcombine_bf16(bf |
| 359 | }) | 359 | }) |
| 360 | __ai __attribute__((target("bf16,neon"))) float32_t vcvtah_f32_bf16(bfloat16_t __p0) { | 360 | __ai __attribute__((target("bf16,neon"))) float32_t vcvtah_f32_bf16(bfloat16_t __p0) { |
| 361 | float32_t __ret; | 361 | float32_t __ret; |
| 362 | bfloat16_t __reint = __p0; | 362 | __ret = __builtin_bit_cast(float32_t, (uint32_t)(__builtin_bit_cast(uint16_t, __p0)) << 16); |
| 363 | int32_t __reint1 = (int32_t)(*(int16_t *) &__reint) << 16; | ||
| 364 | __ret = *(float32_t *) &__reint1; | ||
| 365 | return __ret; | 363 | return __ret; |
| 366 | } | 364 | } |
| 367 | __ai __attribute__((target("bf16,neon"))) bfloat16_t vcvth_bf16_f32(float32_t __p0) { | 365 | __ai __attribute__((target("bf16,neon"))) bfloat16_t vcvth_bf16_f32(float32_t __p0) { |
| ... | @@ -35841,9 +35839,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_f | ... | @@ -35841,9 +35839,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_f |
| 35841 | float16x4_t __s0_150 = __p0_150; \ | 35839 | float16x4_t __s0_150 = __p0_150; \ |
| 35842 | float16x4_t __s1_150 = __p1_150; \ | 35840 | float16x4_t __s1_150 = __p1_150; \ |
| 35843 | float16x4_t __s2_150 = __p2_150; \ | 35841 | float16x4_t __s2_150 = __p2_150; \ |
| 35844 | float16x4_t __reint_150 = __s2_150; \ | 35842 | __ret_150 = vcmla_f16(__s0_150, __s1_150, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_150), __p3_150), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_150), __p3_150)})); \ |
| 35845 | uint32x2_t __reint1_150 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_150, __p3_150), vget_lane_u32(*(uint32x2_t *) &__reint_150, __p3_150)}; \ | ||
| 35846 | __ret_150 = vcmla_f16(__s0_150, __s1_150, *(float16x4_t *) &__reint1_150); \ | ||
| 35847 | __ret_150; \ | 35843 | __ret_150; \ |
| 35848 | }) | 35844 | }) |
| 35849 | #else | 35845 | #else |
| ... | @@ -35855,9 +35851,7 @@ uint32x2_t __reint1_150 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -35855,9 +35851,7 @@ uint32x2_t __reint1_150 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 35855 | float16x4_t __rev0_151; __rev0_151 = __builtin_shufflevector(__s0_151, __s0_151, 3, 2, 1, 0); \ | 35851 | float16x4_t __rev0_151; __rev0_151 = __builtin_shufflevector(__s0_151, __s0_151, 3, 2, 1, 0); \ |
| 35856 | float16x4_t __rev1_151; __rev1_151 = __builtin_shufflevector(__s1_151, __s1_151, 3, 2, 1, 0); \ | 35852 | float16x4_t __rev1_151; __rev1_151 = __builtin_shufflevector(__s1_151, __s1_151, 3, 2, 1, 0); \ |
| 35857 | float16x4_t __rev2_151; __rev2_151 = __builtin_shufflevector(__s2_151, __s2_151, 3, 2, 1, 0); \ | 35853 | float16x4_t __rev2_151; __rev2_151 = __builtin_shufflevector(__s2_151, __s2_151, 3, 2, 1, 0); \ |
| 35858 | float16x4_t __reint_151 = __rev2_151; \ | 35854 | __ret_151 = __noswap_vcmla_f16(__rev0_151, __rev1_151, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_151), __p3_151), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_151), __p3_151)})); \ |
| 35859 | uint32x2_t __reint1_151 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_151, __p3_151), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_151, __p3_151)}; \ | ||
| 35860 | __ret_151 = __noswap_vcmla_f16(__rev0_151, __rev1_151, *(float16x4_t *) &__reint1_151); \ | ||
| 35861 | __ret_151 = __builtin_shufflevector(__ret_151, __ret_151, 3, 2, 1, 0); \ | 35855 | __ret_151 = __builtin_shufflevector(__ret_151, __ret_151, 3, 2, 1, 0); \ |
| 35862 | __ret_151; \ | 35856 | __ret_151; \ |
| 35863 | }) | 35857 | }) |
| ... | @@ -35869,9 +35863,7 @@ uint32x2_t __reint1_151 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -35869,9 +35863,7 @@ uint32x2_t __reint1_151 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 35869 | float16x8_t __s0_152 = __p0_152; \ | 35863 | float16x8_t __s0_152 = __p0_152; \ |
| 35870 | float16x8_t __s1_152 = __p1_152; \ | 35864 | float16x8_t __s1_152 = __p1_152; \ |
| 35871 | float16x4_t __s2_152 = __p2_152; \ | 35865 | float16x4_t __s2_152 = __p2_152; \ |
| 35872 | float16x4_t __reint_152 = __s2_152; \ | 35866 | __ret_152 = vcmlaq_f16(__s0_152, __s1_152, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_152), __p3_152), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_152), __p3_152), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_152), __p3_152), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_152), __p3_152)})); \ |
| 35873 | uint32x4_t __reint1_152 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_152, __p3_152), vget_lane_u32(*(uint32x2_t *) &__reint_152, __p3_152), vget_lane_u32(*(uint32x2_t *) &__reint_152, __p3_152), vget_lane_u32(*(uint32x2_t *) &__reint_152, __p3_152)}; \ | ||
| 35874 | __ret_152 = vcmlaq_f16(__s0_152, __s1_152, *(float16x8_t *) &__reint1_152); \ | ||
| 35875 | __ret_152; \ | 35867 | __ret_152; \ |
| 35876 | }) | 35868 | }) |
| 35877 | #else | 35869 | #else |
| ... | @@ -35883,9 +35875,7 @@ uint32x4_t __reint1_152 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -35883,9 +35875,7 @@ uint32x4_t __reint1_152 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 35883 | float16x8_t __rev0_153; __rev0_153 = __builtin_shufflevector(__s0_153, __s0_153, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35875 | float16x8_t __rev0_153; __rev0_153 = __builtin_shufflevector(__s0_153, __s0_153, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35884 | float16x8_t __rev1_153; __rev1_153 = __builtin_shufflevector(__s1_153, __s1_153, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35876 | float16x8_t __rev1_153; __rev1_153 = __builtin_shufflevector(__s1_153, __s1_153, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35885 | float16x4_t __rev2_153; __rev2_153 = __builtin_shufflevector(__s2_153, __s2_153, 3, 2, 1, 0); \ | 35877 | float16x4_t __rev2_153; __rev2_153 = __builtin_shufflevector(__s2_153, __s2_153, 3, 2, 1, 0); \ |
| 35886 | float16x4_t __reint_153 = __rev2_153; \ | 35878 | __ret_153 = __noswap_vcmlaq_f16(__rev0_153, __rev1_153, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_153), __p3_153), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_153), __p3_153), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_153), __p3_153), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_153), __p3_153)})); \ |
| 35887 | uint32x4_t __reint1_153 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_153, __p3_153), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_153, __p3_153), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_153, __p3_153), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_153, __p3_153)}; \ | ||
| 35888 | __ret_153 = __noswap_vcmlaq_f16(__rev0_153, __rev1_153, *(float16x8_t *) &__reint1_153); \ | ||
| 35889 | __ret_153 = __builtin_shufflevector(__ret_153, __ret_153, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35879 | __ret_153 = __builtin_shufflevector(__ret_153, __ret_153, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35890 | __ret_153; \ | 35880 | __ret_153; \ |
| 35891 | }) | 35881 | }) |
| ... | @@ -35897,9 +35887,7 @@ uint32x4_t __reint1_153 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -35897,9 +35887,7 @@ uint32x4_t __reint1_153 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 35897 | float16x4_t __s0_154 = __p0_154; \ | 35887 | float16x4_t __s0_154 = __p0_154; \ |
| 35898 | float16x4_t __s1_154 = __p1_154; \ | 35888 | float16x4_t __s1_154 = __p1_154; \ |
| 35899 | float16x8_t __s2_154 = __p2_154; \ | 35889 | float16x8_t __s2_154 = __p2_154; \ |
| 35900 | float16x8_t __reint_154 = __s2_154; \ | 35890 | __ret_154 = vcmla_f16(__s0_154, __s1_154, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_154), __p3_154), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_154), __p3_154)})); \ |
| 35901 | uint32x2_t __reint1_154 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_154, __p3_154), vgetq_lane_u32(*(uint32x4_t *) &__reint_154, __p3_154)}; \ | ||
| 35902 | __ret_154 = vcmla_f16(__s0_154, __s1_154, *(float16x4_t *) &__reint1_154); \ | ||
| 35903 | __ret_154; \ | 35891 | __ret_154; \ |
| 35904 | }) | 35892 | }) |
| 35905 | #else | 35893 | #else |
| ... | @@ -35911,9 +35899,7 @@ uint32x2_t __reint1_154 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -35911,9 +35899,7 @@ uint32x2_t __reint1_154 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 35911 | float16x4_t __rev0_155; __rev0_155 = __builtin_shufflevector(__s0_155, __s0_155, 3, 2, 1, 0); \ | 35899 | float16x4_t __rev0_155; __rev0_155 = __builtin_shufflevector(__s0_155, __s0_155, 3, 2, 1, 0); \ |
| 35912 | float16x4_t __rev1_155; __rev1_155 = __builtin_shufflevector(__s1_155, __s1_155, 3, 2, 1, 0); \ | 35900 | float16x4_t __rev1_155; __rev1_155 = __builtin_shufflevector(__s1_155, __s1_155, 3, 2, 1, 0); \ |
| 35913 | float16x8_t __rev2_155; __rev2_155 = __builtin_shufflevector(__s2_155, __s2_155, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35901 | float16x8_t __rev2_155; __rev2_155 = __builtin_shufflevector(__s2_155, __s2_155, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35914 | float16x8_t __reint_155 = __rev2_155; \ | 35902 | __ret_155 = __noswap_vcmla_f16(__rev0_155, __rev1_155, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_155), __p3_155), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_155), __p3_155)})); \ |
| 35915 | uint32x2_t __reint1_155 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_155, __p3_155), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_155, __p3_155)}; \ | ||
| 35916 | __ret_155 = __noswap_vcmla_f16(__rev0_155, __rev1_155, *(float16x4_t *) &__reint1_155); \ | ||
| 35917 | __ret_155 = __builtin_shufflevector(__ret_155, __ret_155, 3, 2, 1, 0); \ | 35903 | __ret_155 = __builtin_shufflevector(__ret_155, __ret_155, 3, 2, 1, 0); \ |
| 35918 | __ret_155; \ | 35904 | __ret_155; \ |
| 35919 | }) | 35905 | }) |
| ... | @@ -35925,9 +35911,7 @@ uint32x2_t __reint1_155 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) | ... | @@ -35925,9 +35911,7 @@ uint32x2_t __reint1_155 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) |
| 35925 | float16x8_t __s0_156 = __p0_156; \ | 35911 | float16x8_t __s0_156 = __p0_156; \ |
| 35926 | float16x8_t __s1_156 = __p1_156; \ | 35912 | float16x8_t __s1_156 = __p1_156; \ |
| 35927 | float16x8_t __s2_156 = __p2_156; \ | 35913 | float16x8_t __s2_156 = __p2_156; \ |
| 35928 | float16x8_t __reint_156 = __s2_156; \ | 35914 | __ret_156 = vcmlaq_f16(__s0_156, __s1_156, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_156), __p3_156), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_156), __p3_156), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_156), __p3_156), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_156), __p3_156)})); \ |
| 35929 | uint32x4_t __reint1_156 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_156, __p3_156), vgetq_lane_u32(*(uint32x4_t *) &__reint_156, __p3_156), vgetq_lane_u32(*(uint32x4_t *) &__reint_156, __p3_156), vgetq_lane_u32(*(uint32x4_t *) &__reint_156, __p3_156)}; \ | ||
| 35930 | __ret_156 = vcmlaq_f16(__s0_156, __s1_156, *(float16x8_t *) &__reint1_156); \ | ||
| 35931 | __ret_156; \ | 35915 | __ret_156; \ |
| 35932 | }) | 35916 | }) |
| 35933 | #else | 35917 | #else |
| ... | @@ -35939,9 +35923,7 @@ uint32x4_t __reint1_156 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -35939,9 +35923,7 @@ uint32x4_t __reint1_156 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 35939 | float16x8_t __rev0_157; __rev0_157 = __builtin_shufflevector(__s0_157, __s0_157, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35923 | float16x8_t __rev0_157; __rev0_157 = __builtin_shufflevector(__s0_157, __s0_157, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35940 | float16x8_t __rev1_157; __rev1_157 = __builtin_shufflevector(__s1_157, __s1_157, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35924 | float16x8_t __rev1_157; __rev1_157 = __builtin_shufflevector(__s1_157, __s1_157, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35941 | float16x8_t __rev2_157; __rev2_157 = __builtin_shufflevector(__s2_157, __s2_157, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35925 | float16x8_t __rev2_157; __rev2_157 = __builtin_shufflevector(__s2_157, __s2_157, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35942 | float16x8_t __reint_157 = __rev2_157; \ | 35926 | __ret_157 = __noswap_vcmlaq_f16(__rev0_157, __rev1_157, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_157), __p3_157), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_157), __p3_157), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_157), __p3_157), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_157), __p3_157)})); \ |
| 35943 | uint32x4_t __reint1_157 = (uint32x4_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_157, __p3_157), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_157, __p3_157), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_157, __p3_157), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_157, __p3_157)}; \ | ||
| 35944 | __ret_157 = __noswap_vcmlaq_f16(__rev0_157, __rev1_157, *(float16x8_t *) &__reint1_157); \ | ||
| 35945 | __ret_157 = __builtin_shufflevector(__ret_157, __ret_157, 7, 6, 5, 4, 3, 2, 1, 0); \ | 35927 | __ret_157 = __builtin_shufflevector(__ret_157, __ret_157, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 35946 | __ret_157; \ | 35928 | __ret_157; \ |
| 35947 | }) | 35929 | }) |
| ... | @@ -35999,9 +35981,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r | ... | @@ -35999,9 +35981,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r |
| 35999 | float16x4_t __s0_158 = __p0_158; \ | 35981 | float16x4_t __s0_158 = __p0_158; \ |
| 36000 | float16x4_t __s1_158 = __p1_158; \ | 35982 | float16x4_t __s1_158 = __p1_158; \ |
| 36001 | float16x4_t __s2_158 = __p2_158; \ | 35983 | float16x4_t __s2_158 = __p2_158; \ |
| 36002 | float16x4_t __reint_158 = __s2_158; \ | 35984 | __ret_158 = vcmla_rot180_f16(__s0_158, __s1_158, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_158), __p3_158), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_158), __p3_158)})); \ |
| 36003 | uint32x2_t __reint1_158 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_158, __p3_158), vget_lane_u32(*(uint32x2_t *) &__reint_158, __p3_158)}; \ | ||
| 36004 | __ret_158 = vcmla_rot180_f16(__s0_158, __s1_158, *(float16x4_t *) &__reint1_158); \ | ||
| 36005 | __ret_158; \ | 35985 | __ret_158; \ |
| 36006 | }) | 35986 | }) |
| 36007 | #else | 35987 | #else |
| ... | @@ -36013,9 +35993,7 @@ uint32x2_t __reint1_158 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36013,9 +35993,7 @@ uint32x2_t __reint1_158 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36013 | float16x4_t __rev0_159; __rev0_159 = __builtin_shufflevector(__s0_159, __s0_159, 3, 2, 1, 0); \ | 35993 | float16x4_t __rev0_159; __rev0_159 = __builtin_shufflevector(__s0_159, __s0_159, 3, 2, 1, 0); \ |
| 36014 | float16x4_t __rev1_159; __rev1_159 = __builtin_shufflevector(__s1_159, __s1_159, 3, 2, 1, 0); \ | 35994 | float16x4_t __rev1_159; __rev1_159 = __builtin_shufflevector(__s1_159, __s1_159, 3, 2, 1, 0); \ |
| 36015 | float16x4_t __rev2_159; __rev2_159 = __builtin_shufflevector(__s2_159, __s2_159, 3, 2, 1, 0); \ | 35995 | float16x4_t __rev2_159; __rev2_159 = __builtin_shufflevector(__s2_159, __s2_159, 3, 2, 1, 0); \ |
| 36016 | float16x4_t __reint_159 = __rev2_159; \ | 35996 | __ret_159 = __noswap_vcmla_rot180_f16(__rev0_159, __rev1_159, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_159), __p3_159), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_159), __p3_159)})); \ |
| 36017 | uint32x2_t __reint1_159 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_159, __p3_159), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_159, __p3_159)}; \ | ||
| 36018 | __ret_159 = __noswap_vcmla_rot180_f16(__rev0_159, __rev1_159, *(float16x4_t *) &__reint1_159); \ | ||
| 36019 | __ret_159 = __builtin_shufflevector(__ret_159, __ret_159, 3, 2, 1, 0); \ | 35997 | __ret_159 = __builtin_shufflevector(__ret_159, __ret_159, 3, 2, 1, 0); \ |
| 36020 | __ret_159; \ | 35998 | __ret_159; \ |
| 36021 | }) | 35999 | }) |
| ... | @@ -36027,9 +36005,7 @@ uint32x2_t __reint1_159 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36027,9 +36005,7 @@ uint32x2_t __reint1_159 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36027 | float16x8_t __s0_160 = __p0_160; \ | 36005 | float16x8_t __s0_160 = __p0_160; \ |
| 36028 | float16x8_t __s1_160 = __p1_160; \ | 36006 | float16x8_t __s1_160 = __p1_160; \ |
| 36029 | float16x4_t __s2_160 = __p2_160; \ | 36007 | float16x4_t __s2_160 = __p2_160; \ |
| 36030 | float16x4_t __reint_160 = __s2_160; \ | 36008 | __ret_160 = vcmlaq_rot180_f16(__s0_160, __s1_160, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_160), __p3_160), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_160), __p3_160), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_160), __p3_160), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_160), __p3_160)})); \ |
| 36031 | uint32x4_t __reint1_160 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_160, __p3_160), vget_lane_u32(*(uint32x2_t *) &__reint_160, __p3_160), vget_lane_u32(*(uint32x2_t *) &__reint_160, __p3_160), vget_lane_u32(*(uint32x2_t *) &__reint_160, __p3_160)}; \ | ||
| 36032 | __ret_160 = vcmlaq_rot180_f16(__s0_160, __s1_160, *(float16x8_t *) &__reint1_160); \ | ||
| 36033 | __ret_160; \ | 36009 | __ret_160; \ |
| 36034 | }) | 36010 | }) |
| 36035 | #else | 36011 | #else |
| ... | @@ -36041,9 +36017,7 @@ uint32x4_t __reint1_160 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36041,9 +36017,7 @@ uint32x4_t __reint1_160 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36041 | float16x8_t __rev0_161; __rev0_161 = __builtin_shufflevector(__s0_161, __s0_161, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36017 | float16x8_t __rev0_161; __rev0_161 = __builtin_shufflevector(__s0_161, __s0_161, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36042 | float16x8_t __rev1_161; __rev1_161 = __builtin_shufflevector(__s1_161, __s1_161, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36018 | float16x8_t __rev1_161; __rev1_161 = __builtin_shufflevector(__s1_161, __s1_161, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36043 | float16x4_t __rev2_161; __rev2_161 = __builtin_shufflevector(__s2_161, __s2_161, 3, 2, 1, 0); \ | 36019 | float16x4_t __rev2_161; __rev2_161 = __builtin_shufflevector(__s2_161, __s2_161, 3, 2, 1, 0); \ |
| 36044 | float16x4_t __reint_161 = __rev2_161; \ | 36020 | __ret_161 = __noswap_vcmlaq_rot180_f16(__rev0_161, __rev1_161, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_161), __p3_161), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_161), __p3_161), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_161), __p3_161), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_161), __p3_161)})); \ |
| 36045 | uint32x4_t __reint1_161 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_161, __p3_161), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_161, __p3_161), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_161, __p3_161), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_161, __p3_161)}; \ | ||
| 36046 | __ret_161 = __noswap_vcmlaq_rot180_f16(__rev0_161, __rev1_161, *(float16x8_t *) &__reint1_161); \ | ||
| 36047 | __ret_161 = __builtin_shufflevector(__ret_161, __ret_161, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36021 | __ret_161 = __builtin_shufflevector(__ret_161, __ret_161, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36048 | __ret_161; \ | 36022 | __ret_161; \ |
| 36049 | }) | 36023 | }) |
| ... | @@ -36055,9 +36029,7 @@ uint32x4_t __reint1_161 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36055,9 +36029,7 @@ uint32x4_t __reint1_161 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36055 | float16x4_t __s0_162 = __p0_162; \ | 36029 | float16x4_t __s0_162 = __p0_162; \ |
| 36056 | float16x4_t __s1_162 = __p1_162; \ | 36030 | float16x4_t __s1_162 = __p1_162; \ |
| 36057 | float16x8_t __s2_162 = __p2_162; \ | 36031 | float16x8_t __s2_162 = __p2_162; \ |
| 36058 | float16x8_t __reint_162 = __s2_162; \ | 36032 | __ret_162 = vcmla_rot180_f16(__s0_162, __s1_162, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_162), __p3_162), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_162), __p3_162)})); \ |
| 36059 | uint32x2_t __reint1_162 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_162, __p3_162), vgetq_lane_u32(*(uint32x4_t *) &__reint_162, __p3_162)}; \ | ||
| 36060 | __ret_162 = vcmla_rot180_f16(__s0_162, __s1_162, *(float16x4_t *) &__reint1_162); \ | ||
| 36061 | __ret_162; \ | 36033 | __ret_162; \ |
| 36062 | }) | 36034 | }) |
| 36063 | #else | 36035 | #else |
| ... | @@ -36069,9 +36041,7 @@ uint32x2_t __reint1_162 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36069,9 +36041,7 @@ uint32x2_t __reint1_162 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36069 | float16x4_t __rev0_163; __rev0_163 = __builtin_shufflevector(__s0_163, __s0_163, 3, 2, 1, 0); \ | 36041 | float16x4_t __rev0_163; __rev0_163 = __builtin_shufflevector(__s0_163, __s0_163, 3, 2, 1, 0); \ |
| 36070 | float16x4_t __rev1_163; __rev1_163 = __builtin_shufflevector(__s1_163, __s1_163, 3, 2, 1, 0); \ | 36042 | float16x4_t __rev1_163; __rev1_163 = __builtin_shufflevector(__s1_163, __s1_163, 3, 2, 1, 0); \ |
| 36071 | float16x8_t __rev2_163; __rev2_163 = __builtin_shufflevector(__s2_163, __s2_163, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36043 | float16x8_t __rev2_163; __rev2_163 = __builtin_shufflevector(__s2_163, __s2_163, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36072 | float16x8_t __reint_163 = __rev2_163; \ | 36044 | __ret_163 = __noswap_vcmla_rot180_f16(__rev0_163, __rev1_163, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_163), __p3_163), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_163), __p3_163)})); \ |
| 36073 | uint32x2_t __reint1_163 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_163, __p3_163), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_163, __p3_163)}; \ | ||
| 36074 | __ret_163 = __noswap_vcmla_rot180_f16(__rev0_163, __rev1_163, *(float16x4_t *) &__reint1_163); \ | ||
| 36075 | __ret_163 = __builtin_shufflevector(__ret_163, __ret_163, 3, 2, 1, 0); \ | 36045 | __ret_163 = __builtin_shufflevector(__ret_163, __ret_163, 3, 2, 1, 0); \ |
| 36076 | __ret_163; \ | 36046 | __ret_163; \ |
| 36077 | }) | 36047 | }) |
| ... | @@ -36083,9 +36053,7 @@ uint32x2_t __reint1_163 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) | ... | @@ -36083,9 +36053,7 @@ uint32x2_t __reint1_163 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) |
| 36083 | float16x8_t __s0_164 = __p0_164; \ | 36053 | float16x8_t __s0_164 = __p0_164; \ |
| 36084 | float16x8_t __s1_164 = __p1_164; \ | 36054 | float16x8_t __s1_164 = __p1_164; \ |
| 36085 | float16x8_t __s2_164 = __p2_164; \ | 36055 | float16x8_t __s2_164 = __p2_164; \ |
| 36086 | float16x8_t __reint_164 = __s2_164; \ | 36056 | __ret_164 = vcmlaq_rot180_f16(__s0_164, __s1_164, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_164), __p3_164), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_164), __p3_164), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_164), __p3_164), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_164), __p3_164)})); \ |
| 36087 | uint32x4_t __reint1_164 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_164, __p3_164), vgetq_lane_u32(*(uint32x4_t *) &__reint_164, __p3_164), vgetq_lane_u32(*(uint32x4_t *) &__reint_164, __p3_164), vgetq_lane_u32(*(uint32x4_t *) &__reint_164, __p3_164)}; \ | ||
| 36088 | __ret_164 = vcmlaq_rot180_f16(__s0_164, __s1_164, *(float16x8_t *) &__reint1_164); \ | ||
| 36089 | __ret_164; \ | 36057 | __ret_164; \ |
| 36090 | }) | 36058 | }) |
| 36091 | #else | 36059 | #else |
| ... | @@ -36097,9 +36065,7 @@ uint32x4_t __reint1_164 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36097,9 +36065,7 @@ uint32x4_t __reint1_164 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36097 | float16x8_t __rev0_165; __rev0_165 = __builtin_shufflevector(__s0_165, __s0_165, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36065 | float16x8_t __rev0_165; __rev0_165 = __builtin_shufflevector(__s0_165, __s0_165, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36098 | float16x8_t __rev1_165; __rev1_165 = __builtin_shufflevector(__s1_165, __s1_165, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36066 | float16x8_t __rev1_165; __rev1_165 = __builtin_shufflevector(__s1_165, __s1_165, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36099 | float16x8_t __rev2_165; __rev2_165 = __builtin_shufflevector(__s2_165, __s2_165, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36067 | float16x8_t __rev2_165; __rev2_165 = __builtin_shufflevector(__s2_165, __s2_165, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36100 | float16x8_t __reint_165 = __rev2_165; \ | 36068 | __ret_165 = __noswap_vcmlaq_rot180_f16(__rev0_165, __rev1_165, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_165), __p3_165), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_165), __p3_165), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_165), __p3_165), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_165), __p3_165)})); \ |
| 36101 | uint32x4_t __reint1_165 = (uint32x4_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_165, __p3_165), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_165, __p3_165), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_165, __p3_165), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_165, __p3_165)}; \ | ||
| 36102 | __ret_165 = __noswap_vcmlaq_rot180_f16(__rev0_165, __rev1_165, *(float16x8_t *) &__reint1_165); \ | ||
| 36103 | __ret_165 = __builtin_shufflevector(__ret_165, __ret_165, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36069 | __ret_165 = __builtin_shufflevector(__ret_165, __ret_165, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36104 | __ret_165; \ | 36070 | __ret_165; \ |
| 36105 | }) | 36071 | }) |
| ... | @@ -36157,9 +36123,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r | ... | @@ -36157,9 +36123,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r |
| 36157 | float16x4_t __s0_166 = __p0_166; \ | 36123 | float16x4_t __s0_166 = __p0_166; \ |
| 36158 | float16x4_t __s1_166 = __p1_166; \ | 36124 | float16x4_t __s1_166 = __p1_166; \ |
| 36159 | float16x4_t __s2_166 = __p2_166; \ | 36125 | float16x4_t __s2_166 = __p2_166; \ |
| 36160 | float16x4_t __reint_166 = __s2_166; \ | 36126 | __ret_166 = vcmla_rot270_f16(__s0_166, __s1_166, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_166), __p3_166), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_166), __p3_166)})); \ |
| 36161 | uint32x2_t __reint1_166 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_166, __p3_166), vget_lane_u32(*(uint32x2_t *) &__reint_166, __p3_166)}; \ | ||
| 36162 | __ret_166 = vcmla_rot270_f16(__s0_166, __s1_166, *(float16x4_t *) &__reint1_166); \ | ||
| 36163 | __ret_166; \ | 36127 | __ret_166; \ |
| 36164 | }) | 36128 | }) |
| 36165 | #else | 36129 | #else |
| ... | @@ -36171,9 +36135,7 @@ uint32x2_t __reint1_166 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36171,9 +36135,7 @@ uint32x2_t __reint1_166 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36171 | float16x4_t __rev0_167; __rev0_167 = __builtin_shufflevector(__s0_167, __s0_167, 3, 2, 1, 0); \ | 36135 | float16x4_t __rev0_167; __rev0_167 = __builtin_shufflevector(__s0_167, __s0_167, 3, 2, 1, 0); \ |
| 36172 | float16x4_t __rev1_167; __rev1_167 = __builtin_shufflevector(__s1_167, __s1_167, 3, 2, 1, 0); \ | 36136 | float16x4_t __rev1_167; __rev1_167 = __builtin_shufflevector(__s1_167, __s1_167, 3, 2, 1, 0); \ |
| 36173 | float16x4_t __rev2_167; __rev2_167 = __builtin_shufflevector(__s2_167, __s2_167, 3, 2, 1, 0); \ | 36137 | float16x4_t __rev2_167; __rev2_167 = __builtin_shufflevector(__s2_167, __s2_167, 3, 2, 1, 0); \ |
| 36174 | float16x4_t __reint_167 = __rev2_167; \ | 36138 | __ret_167 = __noswap_vcmla_rot270_f16(__rev0_167, __rev1_167, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_167), __p3_167), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_167), __p3_167)})); \ |
| 36175 | uint32x2_t __reint1_167 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_167, __p3_167), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_167, __p3_167)}; \ | ||
| 36176 | __ret_167 = __noswap_vcmla_rot270_f16(__rev0_167, __rev1_167, *(float16x4_t *) &__reint1_167); \ | ||
| 36177 | __ret_167 = __builtin_shufflevector(__ret_167, __ret_167, 3, 2, 1, 0); \ | 36139 | __ret_167 = __builtin_shufflevector(__ret_167, __ret_167, 3, 2, 1, 0); \ |
| 36178 | __ret_167; \ | 36140 | __ret_167; \ |
| 36179 | }) | 36141 | }) |
| ... | @@ -36185,9 +36147,7 @@ uint32x2_t __reint1_167 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36185,9 +36147,7 @@ uint32x2_t __reint1_167 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36185 | float16x8_t __s0_168 = __p0_168; \ | 36147 | float16x8_t __s0_168 = __p0_168; \ |
| 36186 | float16x8_t __s1_168 = __p1_168; \ | 36148 | float16x8_t __s1_168 = __p1_168; \ |
| 36187 | float16x4_t __s2_168 = __p2_168; \ | 36149 | float16x4_t __s2_168 = __p2_168; \ |
| 36188 | float16x4_t __reint_168 = __s2_168; \ | 36150 | __ret_168 = vcmlaq_rot270_f16(__s0_168, __s1_168, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_168), __p3_168), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_168), __p3_168), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_168), __p3_168), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_168), __p3_168)})); \ |
| 36189 | uint32x4_t __reint1_168 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_168, __p3_168), vget_lane_u32(*(uint32x2_t *) &__reint_168, __p3_168), vget_lane_u32(*(uint32x2_t *) &__reint_168, __p3_168), vget_lane_u32(*(uint32x2_t *) &__reint_168, __p3_168)}; \ | ||
| 36190 | __ret_168 = vcmlaq_rot270_f16(__s0_168, __s1_168, *(float16x8_t *) &__reint1_168); \ | ||
| 36191 | __ret_168; \ | 36151 | __ret_168; \ |
| 36192 | }) | 36152 | }) |
| 36193 | #else | 36153 | #else |
| ... | @@ -36199,9 +36159,7 @@ uint32x4_t __reint1_168 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36199,9 +36159,7 @@ uint32x4_t __reint1_168 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36199 | float16x8_t __rev0_169; __rev0_169 = __builtin_shufflevector(__s0_169, __s0_169, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36159 | float16x8_t __rev0_169; __rev0_169 = __builtin_shufflevector(__s0_169, __s0_169, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36200 | float16x8_t __rev1_169; __rev1_169 = __builtin_shufflevector(__s1_169, __s1_169, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36160 | float16x8_t __rev1_169; __rev1_169 = __builtin_shufflevector(__s1_169, __s1_169, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36201 | float16x4_t __rev2_169; __rev2_169 = __builtin_shufflevector(__s2_169, __s2_169, 3, 2, 1, 0); \ | 36161 | float16x4_t __rev2_169; __rev2_169 = __builtin_shufflevector(__s2_169, __s2_169, 3, 2, 1, 0); \ |
| 36202 | float16x4_t __reint_169 = __rev2_169; \ | 36162 | __ret_169 = __noswap_vcmlaq_rot270_f16(__rev0_169, __rev1_169, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_169), __p3_169), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_169), __p3_169), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_169), __p3_169), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_169), __p3_169)})); \ |
| 36203 | uint32x4_t __reint1_169 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_169, __p3_169), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_169, __p3_169), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_169, __p3_169), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_169, __p3_169)}; \ | ||
| 36204 | __ret_169 = __noswap_vcmlaq_rot270_f16(__rev0_169, __rev1_169, *(float16x8_t *) &__reint1_169); \ | ||
| 36205 | __ret_169 = __builtin_shufflevector(__ret_169, __ret_169, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36163 | __ret_169 = __builtin_shufflevector(__ret_169, __ret_169, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36206 | __ret_169; \ | 36164 | __ret_169; \ |
| 36207 | }) | 36165 | }) |
| ... | @@ -36213,9 +36171,7 @@ uint32x4_t __reint1_169 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36213,9 +36171,7 @@ uint32x4_t __reint1_169 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36213 | float16x4_t __s0_170 = __p0_170; \ | 36171 | float16x4_t __s0_170 = __p0_170; \ |
| 36214 | float16x4_t __s1_170 = __p1_170; \ | 36172 | float16x4_t __s1_170 = __p1_170; \ |
| 36215 | float16x8_t __s2_170 = __p2_170; \ | 36173 | float16x8_t __s2_170 = __p2_170; \ |
| 36216 | float16x8_t __reint_170 = __s2_170; \ | 36174 | __ret_170 = vcmla_rot270_f16(__s0_170, __s1_170, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_170), __p3_170), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_170), __p3_170)})); \ |
| 36217 | uint32x2_t __reint1_170 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_170, __p3_170), vgetq_lane_u32(*(uint32x4_t *) &__reint_170, __p3_170)}; \ | ||
| 36218 | __ret_170 = vcmla_rot270_f16(__s0_170, __s1_170, *(float16x4_t *) &__reint1_170); \ | ||
| 36219 | __ret_170; \ | 36175 | __ret_170; \ |
| 36220 | }) | 36176 | }) |
| 36221 | #else | 36177 | #else |
| ... | @@ -36227,9 +36183,7 @@ uint32x2_t __reint1_170 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36227,9 +36183,7 @@ uint32x2_t __reint1_170 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36227 | float16x4_t __rev0_171; __rev0_171 = __builtin_shufflevector(__s0_171, __s0_171, 3, 2, 1, 0); \ | 36183 | float16x4_t __rev0_171; __rev0_171 = __builtin_shufflevector(__s0_171, __s0_171, 3, 2, 1, 0); \ |
| 36228 | float16x4_t __rev1_171; __rev1_171 = __builtin_shufflevector(__s1_171, __s1_171, 3, 2, 1, 0); \ | 36184 | float16x4_t __rev1_171; __rev1_171 = __builtin_shufflevector(__s1_171, __s1_171, 3, 2, 1, 0); \ |
| 36229 | float16x8_t __rev2_171; __rev2_171 = __builtin_shufflevector(__s2_171, __s2_171, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36185 | float16x8_t __rev2_171; __rev2_171 = __builtin_shufflevector(__s2_171, __s2_171, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36230 | float16x8_t __reint_171 = __rev2_171; \ | 36186 | __ret_171 = __noswap_vcmla_rot270_f16(__rev0_171, __rev1_171, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_171), __p3_171), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_171), __p3_171)})); \ |
| 36231 | uint32x2_t __reint1_171 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_171, __p3_171), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_171, __p3_171)}; \ | ||
| 36232 | __ret_171 = __noswap_vcmla_rot270_f16(__rev0_171, __rev1_171, *(float16x4_t *) &__reint1_171); \ | ||
| 36233 | __ret_171 = __builtin_shufflevector(__ret_171, __ret_171, 3, 2, 1, 0); \ | 36187 | __ret_171 = __builtin_shufflevector(__ret_171, __ret_171, 3, 2, 1, 0); \ |
| 36234 | __ret_171; \ | 36188 | __ret_171; \ |
| 36235 | }) | 36189 | }) |
| ... | @@ -36241,9 +36195,7 @@ uint32x2_t __reint1_171 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) | ... | @@ -36241,9 +36195,7 @@ uint32x2_t __reint1_171 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) |
| 36241 | float16x8_t __s0_172 = __p0_172; \ | 36195 | float16x8_t __s0_172 = __p0_172; \ |
| 36242 | float16x8_t __s1_172 = __p1_172; \ | 36196 | float16x8_t __s1_172 = __p1_172; \ |
| 36243 | float16x8_t __s2_172 = __p2_172; \ | 36197 | float16x8_t __s2_172 = __p2_172; \ |
| 36244 | float16x8_t __reint_172 = __s2_172; \ | 36198 | __ret_172 = vcmlaq_rot270_f16(__s0_172, __s1_172, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_172), __p3_172), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_172), __p3_172), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_172), __p3_172), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_172), __p3_172)})); \ |
| 36245 | uint32x4_t __reint1_172 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_172, __p3_172), vgetq_lane_u32(*(uint32x4_t *) &__reint_172, __p3_172), vgetq_lane_u32(*(uint32x4_t *) &__reint_172, __p3_172), vgetq_lane_u32(*(uint32x4_t *) &__reint_172, __p3_172)}; \ | ||
| 36246 | __ret_172 = vcmlaq_rot270_f16(__s0_172, __s1_172, *(float16x8_t *) &__reint1_172); \ | ||
| 36247 | __ret_172; \ | 36199 | __ret_172; \ |
| 36248 | }) | 36200 | }) |
| 36249 | #else | 36201 | #else |
| ... | @@ -36255,9 +36207,7 @@ uint32x4_t __reint1_172 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36255,9 +36207,7 @@ uint32x4_t __reint1_172 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36255 | float16x8_t __rev0_173; __rev0_173 = __builtin_shufflevector(__s0_173, __s0_173, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36207 | float16x8_t __rev0_173; __rev0_173 = __builtin_shufflevector(__s0_173, __s0_173, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36256 | float16x8_t __rev1_173; __rev1_173 = __builtin_shufflevector(__s1_173, __s1_173, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36208 | float16x8_t __rev1_173; __rev1_173 = __builtin_shufflevector(__s1_173, __s1_173, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36257 | float16x8_t __rev2_173; __rev2_173 = __builtin_shufflevector(__s2_173, __s2_173, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36209 | float16x8_t __rev2_173; __rev2_173 = __builtin_shufflevector(__s2_173, __s2_173, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36258 | float16x8_t __reint_173 = __rev2_173; \ | 36210 | __ret_173 = __noswap_vcmlaq_rot270_f16(__rev0_173, __rev1_173, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_173), __p3_173), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_173), __p3_173), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_173), __p3_173), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_173), __p3_173)})); \ |
| 36259 | uint32x4_t __reint1_173 = (uint32x4_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_173, __p3_173), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_173, __p3_173), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_173, __p3_173), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_173, __p3_173)}; \ | ||
| 36260 | __ret_173 = __noswap_vcmlaq_rot270_f16(__rev0_173, __rev1_173, *(float16x8_t *) &__reint1_173); \ | ||
| 36261 | __ret_173 = __builtin_shufflevector(__ret_173, __ret_173, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36211 | __ret_173 = __builtin_shufflevector(__ret_173, __ret_173, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36262 | __ret_173; \ | 36212 | __ret_173; \ |
| 36263 | }) | 36213 | }) |
| ... | @@ -36315,9 +36265,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r | ... | @@ -36315,9 +36265,7 @@ __ai __attribute__((target("v8.3a,fullfp16,neon"))) float16x4_t __noswap_vcmla_r |
| 36315 | float16x4_t __s0_174 = __p0_174; \ | 36265 | float16x4_t __s0_174 = __p0_174; \ |
| 36316 | float16x4_t __s1_174 = __p1_174; \ | 36266 | float16x4_t __s1_174 = __p1_174; \ |
| 36317 | float16x4_t __s2_174 = __p2_174; \ | 36267 | float16x4_t __s2_174 = __p2_174; \ |
| 36318 | float16x4_t __reint_174 = __s2_174; \ | 36268 | __ret_174 = vcmla_rot90_f16(__s0_174, __s1_174, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_174), __p3_174), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_174), __p3_174)})); \ |
| 36319 | uint32x2_t __reint1_174 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_174, __p3_174), vget_lane_u32(*(uint32x2_t *) &__reint_174, __p3_174)}; \ | ||
| 36320 | __ret_174 = vcmla_rot90_f16(__s0_174, __s1_174, *(float16x4_t *) &__reint1_174); \ | ||
| 36321 | __ret_174; \ | 36269 | __ret_174; \ |
| 36322 | }) | 36270 | }) |
| 36323 | #else | 36271 | #else |
| ... | @@ -36329,9 +36277,7 @@ uint32x2_t __reint1_174 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36329,9 +36277,7 @@ uint32x2_t __reint1_174 = (uint32x2_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36329 | float16x4_t __rev0_175; __rev0_175 = __builtin_shufflevector(__s0_175, __s0_175, 3, 2, 1, 0); \ | 36277 | float16x4_t __rev0_175; __rev0_175 = __builtin_shufflevector(__s0_175, __s0_175, 3, 2, 1, 0); \ |
| 36330 | float16x4_t __rev1_175; __rev1_175 = __builtin_shufflevector(__s1_175, __s1_175, 3, 2, 1, 0); \ | 36278 | float16x4_t __rev1_175; __rev1_175 = __builtin_shufflevector(__s1_175, __s1_175, 3, 2, 1, 0); \ |
| 36331 | float16x4_t __rev2_175; __rev2_175 = __builtin_shufflevector(__s2_175, __s2_175, 3, 2, 1, 0); \ | 36279 | float16x4_t __rev2_175; __rev2_175 = __builtin_shufflevector(__s2_175, __s2_175, 3, 2, 1, 0); \ |
| 36332 | float16x4_t __reint_175 = __rev2_175; \ | 36280 | __ret_175 = __noswap_vcmla_rot90_f16(__rev0_175, __rev1_175, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_175), __p3_175), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_175), __p3_175)})); \ |
| 36333 | uint32x2_t __reint1_175 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_175, __p3_175), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_175, __p3_175)}; \ | ||
| 36334 | __ret_175 = __noswap_vcmla_rot90_f16(__rev0_175, __rev1_175, *(float16x4_t *) &__reint1_175); \ | ||
| 36335 | __ret_175 = __builtin_shufflevector(__ret_175, __ret_175, 3, 2, 1, 0); \ | 36281 | __ret_175 = __builtin_shufflevector(__ret_175, __ret_175, 3, 2, 1, 0); \ |
| 36336 | __ret_175; \ | 36282 | __ret_175; \ |
| 36337 | }) | 36283 | }) |
| ... | @@ -36343,9 +36289,7 @@ uint32x2_t __reint1_175 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36343,9 +36289,7 @@ uint32x2_t __reint1_175 = (uint32x2_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36343 | float16x8_t __s0_176 = __p0_176; \ | 36289 | float16x8_t __s0_176 = __p0_176; \ |
| 36344 | float16x8_t __s1_176 = __p1_176; \ | 36290 | float16x8_t __s1_176 = __p1_176; \ |
| 36345 | float16x4_t __s2_176 = __p2_176; \ | 36291 | float16x4_t __s2_176 = __p2_176; \ |
| 36346 | float16x4_t __reint_176 = __s2_176; \ | 36292 | __ret_176 = vcmlaq_rot90_f16(__s0_176, __s1_176, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_176), __p3_176), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_176), __p3_176), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_176), __p3_176), vget_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_176), __p3_176)})); \ |
| 36347 | uint32x4_t __reint1_176 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_176, __p3_176), vget_lane_u32(*(uint32x2_t *) &__reint_176, __p3_176), vget_lane_u32(*(uint32x2_t *) &__reint_176, __p3_176), vget_lane_u32(*(uint32x2_t *) &__reint_176, __p3_176)}; \ | ||
| 36348 | __ret_176 = vcmlaq_rot90_f16(__s0_176, __s1_176, *(float16x8_t *) &__reint1_176); \ | ||
| 36349 | __ret_176; \ | 36293 | __ret_176; \ |
| 36350 | }) | 36294 | }) |
| 36351 | #else | 36295 | #else |
| ... | @@ -36357,9 +36301,7 @@ uint32x4_t __reint1_176 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 | ... | @@ -36357,9 +36301,7 @@ uint32x4_t __reint1_176 = (uint32x4_t) {vget_lane_u32(*(uint32x2_t *) &__reint_1 |
| 36357 | float16x8_t __rev0_177; __rev0_177 = __builtin_shufflevector(__s0_177, __s0_177, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36301 | float16x8_t __rev0_177; __rev0_177 = __builtin_shufflevector(__s0_177, __s0_177, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36358 | float16x8_t __rev1_177; __rev1_177 = __builtin_shufflevector(__s1_177, __s1_177, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36302 | float16x8_t __rev1_177; __rev1_177 = __builtin_shufflevector(__s1_177, __s1_177, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36359 | float16x4_t __rev2_177; __rev2_177 = __builtin_shufflevector(__s2_177, __s2_177, 3, 2, 1, 0); \ | 36303 | float16x4_t __rev2_177; __rev2_177 = __builtin_shufflevector(__s2_177, __s2_177, 3, 2, 1, 0); \ |
| 36360 | float16x4_t __reint_177 = __rev2_177; \ | 36304 | __ret_177 = __noswap_vcmlaq_rot90_f16(__rev0_177, __rev1_177, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_177), __p3_177), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_177), __p3_177), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_177), __p3_177), __noswap_vget_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_177), __p3_177)})); \ |
| 36361 | uint32x4_t __reint1_177 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) &__reint_177, __p3_177), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_177, __p3_177), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_177, __p3_177), __noswap_vget_lane_u32(*(uint32x2_t *) &__reint_177, __p3_177)}; \ | ||
| 36362 | __ret_177 = __noswap_vcmlaq_rot90_f16(__rev0_177, __rev1_177, *(float16x8_t *) &__reint1_177); \ | ||
| 36363 | __ret_177 = __builtin_shufflevector(__ret_177, __ret_177, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36305 | __ret_177 = __builtin_shufflevector(__ret_177, __ret_177, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36364 | __ret_177; \ | 36306 | __ret_177; \ |
| 36365 | }) | 36307 | }) |
| ... | @@ -36371,9 +36313,7 @@ uint32x4_t __reint1_177 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & | ... | @@ -36371,9 +36313,7 @@ uint32x4_t __reint1_177 = (uint32x4_t) {__noswap_vget_lane_u32(*(uint32x2_t *) & |
| 36371 | float16x4_t __s0_178 = __p0_178; \ | 36313 | float16x4_t __s0_178 = __p0_178; \ |
| 36372 | float16x4_t __s1_178 = __p1_178; \ | 36314 | float16x4_t __s1_178 = __p1_178; \ |
| 36373 | float16x8_t __s2_178 = __p2_178; \ | 36315 | float16x8_t __s2_178 = __p2_178; \ |
| 36374 | float16x8_t __reint_178 = __s2_178; \ | 36316 | __ret_178 = vcmla_rot90_f16(__s0_178, __s1_178, __builtin_bit_cast(float16x4_t, (uint32x2_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_178), __p3_178), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_178), __p3_178)})); \ |
| 36375 | uint32x2_t __reint1_178 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_178, __p3_178), vgetq_lane_u32(*(uint32x4_t *) &__reint_178, __p3_178)}; \ | ||
| 36376 | __ret_178 = vcmla_rot90_f16(__s0_178, __s1_178, *(float16x4_t *) &__reint1_178); \ | ||
| 36377 | __ret_178; \ | 36317 | __ret_178; \ |
| 36378 | }) | 36318 | }) |
| 36379 | #else | 36319 | #else |
| ... | @@ -36385,9 +36325,7 @@ uint32x2_t __reint1_178 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36385,9 +36325,7 @@ uint32x2_t __reint1_178 = (uint32x2_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36385 | float16x4_t __rev0_179; __rev0_179 = __builtin_shufflevector(__s0_179, __s0_179, 3, 2, 1, 0); \ | 36325 | float16x4_t __rev0_179; __rev0_179 = __builtin_shufflevector(__s0_179, __s0_179, 3, 2, 1, 0); \ |
| 36386 | float16x4_t __rev1_179; __rev1_179 = __builtin_shufflevector(__s1_179, __s1_179, 3, 2, 1, 0); \ | 36326 | float16x4_t __rev1_179; __rev1_179 = __builtin_shufflevector(__s1_179, __s1_179, 3, 2, 1, 0); \ |
| 36387 | float16x8_t __rev2_179; __rev2_179 = __builtin_shufflevector(__s2_179, __s2_179, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36327 | float16x8_t __rev2_179; __rev2_179 = __builtin_shufflevector(__s2_179, __s2_179, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36388 | float16x8_t __reint_179 = __rev2_179; \ | 36328 | __ret_179 = __noswap_vcmla_rot90_f16(__rev0_179, __rev1_179, __builtin_bit_cast(float16x4_t, (uint32x2_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_179), __p3_179), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_179), __p3_179)})); \ |
| 36389 | uint32x2_t __reint1_179 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_179, __p3_179), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_179, __p3_179)}; \ | ||
| 36390 | __ret_179 = __noswap_vcmla_rot90_f16(__rev0_179, __rev1_179, *(float16x4_t *) &__reint1_179); \ | ||
| 36391 | __ret_179 = __builtin_shufflevector(__ret_179, __ret_179, 3, 2, 1, 0); \ | 36329 | __ret_179 = __builtin_shufflevector(__ret_179, __ret_179, 3, 2, 1, 0); \ |
| 36392 | __ret_179; \ | 36330 | __ret_179; \ |
| 36393 | }) | 36331 | }) |
| ... | @@ -36399,9 +36337,7 @@ uint32x2_t __reint1_179 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) | ... | @@ -36399,9 +36337,7 @@ uint32x2_t __reint1_179 = (uint32x2_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) |
| 36399 | float16x8_t __s0_180 = __p0_180; \ | 36337 | float16x8_t __s0_180 = __p0_180; \ |
| 36400 | float16x8_t __s1_180 = __p1_180; \ | 36338 | float16x8_t __s1_180 = __p1_180; \ |
| 36401 | float16x8_t __s2_180 = __p2_180; \ | 36339 | float16x8_t __s2_180 = __p2_180; \ |
| 36402 | float16x8_t __reint_180 = __s2_180; \ | 36340 | __ret_180 = vcmlaq_rot90_f16(__s0_180, __s1_180, __builtin_bit_cast(float16x8_t, (uint32x4_t) {vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_180), __p3_180), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_180), __p3_180), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_180), __p3_180), vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __s2_180), __p3_180)})); \ |
| 36403 | uint32x4_t __reint1_180 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_180, __p3_180), vgetq_lane_u32(*(uint32x4_t *) &__reint_180, __p3_180), vgetq_lane_u32(*(uint32x4_t *) &__reint_180, __p3_180), vgetq_lane_u32(*(uint32x4_t *) &__reint_180, __p3_180)}; \ | ||
| 36404 | __ret_180 = vcmlaq_rot90_f16(__s0_180, __s1_180, *(float16x8_t *) &__reint1_180); \ | ||
| 36405 | __ret_180; \ | 36341 | __ret_180; \ |
| 36406 | }) | 36342 | }) |
| 36407 | #else | 36343 | #else |
| ... | @@ -36413,9 +36349,7 @@ uint32x4_t __reint1_180 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ | ... | @@ -36413,9 +36349,7 @@ uint32x4_t __reint1_180 = (uint32x4_t) {vgetq_lane_u32(*(uint32x4_t *) &__reint_ |
| 36413 | float16x8_t __rev0_181; __rev0_181 = __builtin_shufflevector(__s0_181, __s0_181, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36349 | float16x8_t __rev0_181; __rev0_181 = __builtin_shufflevector(__s0_181, __s0_181, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36414 | float16x8_t __rev1_181; __rev1_181 = __builtin_shufflevector(__s1_181, __s1_181, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36350 | float16x8_t __rev1_181; __rev1_181 = __builtin_shufflevector(__s1_181, __s1_181, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36415 | float16x8_t __rev2_181; __rev2_181 = __builtin_shufflevector(__s2_181, __s2_181, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36351 | float16x8_t __rev2_181; __rev2_181 = __builtin_shufflevector(__s2_181, __s2_181, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36416 | float16x8_t __reint_181 = __rev2_181; \ | 36352 | __ret_181 = __noswap_vcmlaq_rot90_f16(__rev0_181, __rev1_181, __builtin_bit_cast(float16x8_t, (uint32x4_t) {__noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_181), __p3_181), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_181), __p3_181), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_181), __p3_181), __noswap_vgetq_lane_u32(__builtin_bit_cast(uint32x4_t, __rev2_181), __p3_181)})); \ |
| 36417 | uint32x4_t __reint1_181 = (uint32x4_t) {__noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_181, __p3_181), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_181, __p3_181), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_181, __p3_181), __noswap_vgetq_lane_u32(*(uint32x4_t *) &__reint_181, __p3_181)}; \ | ||
| 36418 | __ret_181 = __noswap_vcmlaq_rot90_f16(__rev0_181, __rev1_181, *(float16x8_t *) &__reint1_181); \ | ||
| 36419 | __ret_181 = __builtin_shufflevector(__ret_181, __ret_181, 7, 6, 5, 4, 3, 2, 1, 0); \ | 36353 | __ret_181 = __builtin_shufflevector(__ret_181, __ret_181, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 36420 | __ret_181; \ | 36354 | __ret_181; \ |
| 36421 | }) | 36355 | }) |
| ... | @@ -36541,9 +36475,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_f32(float3 | ... | @@ -36541,9 +36475,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_f32(float3 |
| 36541 | float32x2_t __s0_182 = __p0_182; \ | 36475 | float32x2_t __s0_182 = __p0_182; \ |
| 36542 | float32x2_t __s1_182 = __p1_182; \ | 36476 | float32x2_t __s1_182 = __p1_182; \ |
| 36543 | float32x2_t __s2_182 = __p2_182; \ | 36477 | float32x2_t __s2_182 = __p2_182; \ |
| 36544 | float32x2_t __reint_182 = __s2_182; \ | 36478 | __ret_182 = vcmla_f32(__s0_182, __s1_182, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_182), __p3_182)})); \ |
| 36545 | uint64x1_t __reint1_182 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_182, __p3_182)}; \ | ||
| 36546 | __ret_182 = vcmla_f32(__s0_182, __s1_182, *(float32x2_t *) &__reint1_182); \ | ||
| 36547 | __ret_182; \ | 36479 | __ret_182; \ |
| 36548 | }) | 36480 | }) |
| 36549 | #else | 36481 | #else |
| ... | @@ -36555,9 +36487,7 @@ uint64x1_t __reint1_182 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36555,9 +36487,7 @@ uint64x1_t __reint1_182 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36555 | float32x2_t __rev0_183; __rev0_183 = __builtin_shufflevector(__s0_183, __s0_183, 1, 0); \ | 36487 | float32x2_t __rev0_183; __rev0_183 = __builtin_shufflevector(__s0_183, __s0_183, 1, 0); \ |
| 36556 | float32x2_t __rev1_183; __rev1_183 = __builtin_shufflevector(__s1_183, __s1_183, 1, 0); \ | 36488 | float32x2_t __rev1_183; __rev1_183 = __builtin_shufflevector(__s1_183, __s1_183, 1, 0); \ |
| 36557 | float32x2_t __rev2_183; __rev2_183 = __builtin_shufflevector(__s2_183, __s2_183, 1, 0); \ | 36489 | float32x2_t __rev2_183; __rev2_183 = __builtin_shufflevector(__s2_183, __s2_183, 1, 0); \ |
| 36558 | float32x2_t __reint_183 = __rev2_183; \ | 36490 | __ret_183 = __noswap_vcmla_f32(__rev0_183, __rev1_183, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_183), __p3_183)})); \ |
| 36559 | uint64x1_t __reint1_183 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_183, __p3_183)}; \ | ||
| 36560 | __ret_183 = __noswap_vcmla_f32(__rev0_183, __rev1_183, *(float32x2_t *) &__reint1_183); \ | ||
| 36561 | __ret_183 = __builtin_shufflevector(__ret_183, __ret_183, 1, 0); \ | 36491 | __ret_183 = __builtin_shufflevector(__ret_183, __ret_183, 1, 0); \ |
| 36562 | __ret_183; \ | 36492 | __ret_183; \ |
| 36563 | }) | 36493 | }) |
| ... | @@ -36569,9 +36499,7 @@ uint64x1_t __reint1_183 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36569,9 +36499,7 @@ uint64x1_t __reint1_183 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36569 | float32x4_t __s0_184 = __p0_184; \ | 36499 | float32x4_t __s0_184 = __p0_184; \ |
| 36570 | float32x4_t __s1_184 = __p1_184; \ | 36500 | float32x4_t __s1_184 = __p1_184; \ |
| 36571 | float32x2_t __s2_184 = __p2_184; \ | 36501 | float32x2_t __s2_184 = __p2_184; \ |
| 36572 | float32x2_t __reint_184 = __s2_184; \ | 36502 | __ret_184 = vcmlaq_f32(__s0_184, __s1_184, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_184), __p3_184), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_184), __p3_184)})); \ |
| 36573 | uint64x2_t __reint1_184 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_184, __p3_184), vget_lane_u64(*(uint64x1_t *) &__reint_184, __p3_184)}; \ | ||
| 36574 | __ret_184 = vcmlaq_f32(__s0_184, __s1_184, *(float32x4_t *) &__reint1_184); \ | ||
| 36575 | __ret_184; \ | 36503 | __ret_184; \ |
| 36576 | }) | 36504 | }) |
| 36577 | #else | 36505 | #else |
| ... | @@ -36583,9 +36511,7 @@ uint64x2_t __reint1_184 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36583,9 +36511,7 @@ uint64x2_t __reint1_184 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36583 | float32x4_t __rev0_185; __rev0_185 = __builtin_shufflevector(__s0_185, __s0_185, 3, 2, 1, 0); \ | 36511 | float32x4_t __rev0_185; __rev0_185 = __builtin_shufflevector(__s0_185, __s0_185, 3, 2, 1, 0); \ |
| 36584 | float32x4_t __rev1_185; __rev1_185 = __builtin_shufflevector(__s1_185, __s1_185, 3, 2, 1, 0); \ | 36512 | float32x4_t __rev1_185; __rev1_185 = __builtin_shufflevector(__s1_185, __s1_185, 3, 2, 1, 0); \ |
| 36585 | float32x2_t __rev2_185; __rev2_185 = __builtin_shufflevector(__s2_185, __s2_185, 1, 0); \ | 36513 | float32x2_t __rev2_185; __rev2_185 = __builtin_shufflevector(__s2_185, __s2_185, 1, 0); \ |
| 36586 | float32x2_t __reint_185 = __rev2_185; \ | 36514 | __ret_185 = __noswap_vcmlaq_f32(__rev0_185, __rev1_185, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_185), __p3_185), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_185), __p3_185)})); \ |
| 36587 | uint64x2_t __reint1_185 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_185, __p3_185), vget_lane_u64(*(uint64x1_t *) &__reint_185, __p3_185)}; \ | ||
| 36588 | __ret_185 = __noswap_vcmlaq_f32(__rev0_185, __rev1_185, *(float32x4_t *) &__reint1_185); \ | ||
| 36589 | __ret_185 = __builtin_shufflevector(__ret_185, __ret_185, 3, 2, 1, 0); \ | 36515 | __ret_185 = __builtin_shufflevector(__ret_185, __ret_185, 3, 2, 1, 0); \ |
| 36590 | __ret_185; \ | 36516 | __ret_185; \ |
| 36591 | }) | 36517 | }) |
| ... | @@ -36597,9 +36523,7 @@ uint64x2_t __reint1_185 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36597,9 +36523,7 @@ uint64x2_t __reint1_185 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36597 | float32x2_t __s0_186 = __p0_186; \ | 36523 | float32x2_t __s0_186 = __p0_186; \ |
| 36598 | float32x2_t __s1_186 = __p1_186; \ | 36524 | float32x2_t __s1_186 = __p1_186; \ |
| 36599 | float32x4_t __s2_186 = __p2_186; \ | 36525 | float32x4_t __s2_186 = __p2_186; \ |
| 36600 | float32x4_t __reint_186 = __s2_186; \ | 36526 | __ret_186 = vcmla_f32(__s0_186, __s1_186, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_186), __p3_186)})); \ |
| 36601 | uint64x1_t __reint1_186 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_186, __p3_186)}; \ | ||
| 36602 | __ret_186 = vcmla_f32(__s0_186, __s1_186, *(float32x2_t *) &__reint1_186); \ | ||
| 36603 | __ret_186; \ | 36527 | __ret_186; \ |
| 36604 | }) | 36528 | }) |
| 36605 | #else | 36529 | #else |
| ... | @@ -36611,9 +36535,7 @@ uint64x1_t __reint1_186 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36611,9 +36535,7 @@ uint64x1_t __reint1_186 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36611 | float32x2_t __rev0_187; __rev0_187 = __builtin_shufflevector(__s0_187, __s0_187, 1, 0); \ | 36535 | float32x2_t __rev0_187; __rev0_187 = __builtin_shufflevector(__s0_187, __s0_187, 1, 0); \ |
| 36612 | float32x2_t __rev1_187; __rev1_187 = __builtin_shufflevector(__s1_187, __s1_187, 1, 0); \ | 36536 | float32x2_t __rev1_187; __rev1_187 = __builtin_shufflevector(__s1_187, __s1_187, 1, 0); \ |
| 36613 | float32x4_t __rev2_187; __rev2_187 = __builtin_shufflevector(__s2_187, __s2_187, 3, 2, 1, 0); \ | 36537 | float32x4_t __rev2_187; __rev2_187 = __builtin_shufflevector(__s2_187, __s2_187, 3, 2, 1, 0); \ |
| 36614 | float32x4_t __reint_187 = __rev2_187; \ | 36538 | __ret_187 = __noswap_vcmla_f32(__rev0_187, __rev1_187, __builtin_bit_cast(float32x2_t, (uint64x1_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_187), __p3_187)})); \ |
| 36615 | uint64x1_t __reint1_187 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_187, __p3_187)}; \ | ||
| 36616 | __ret_187 = __noswap_vcmla_f32(__rev0_187, __rev1_187, *(float32x2_t *) &__reint1_187); \ | ||
| 36617 | __ret_187 = __builtin_shufflevector(__ret_187, __ret_187, 1, 0); \ | 36539 | __ret_187 = __builtin_shufflevector(__ret_187, __ret_187, 1, 0); \ |
| 36618 | __ret_187; \ | 36540 | __ret_187; \ |
| 36619 | }) | 36541 | }) |
| ... | @@ -36625,9 +36547,7 @@ uint64x1_t __reint1_187 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) | ... | @@ -36625,9 +36547,7 @@ uint64x1_t __reint1_187 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) |
| 36625 | float32x4_t __s0_188 = __p0_188; \ | 36547 | float32x4_t __s0_188 = __p0_188; \ |
| 36626 | float32x4_t __s1_188 = __p1_188; \ | 36548 | float32x4_t __s1_188 = __p1_188; \ |
| 36627 | float32x4_t __s2_188 = __p2_188; \ | 36549 | float32x4_t __s2_188 = __p2_188; \ |
| 36628 | float32x4_t __reint_188 = __s2_188; \ | 36550 | __ret_188 = vcmlaq_f32(__s0_188, __s1_188, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_188), __p3_188), vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_188), __p3_188)})); \ |
| 36629 | uint64x2_t __reint1_188 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_188, __p3_188), vgetq_lane_u64(*(uint64x2_t *) &__reint_188, __p3_188)}; \ | ||
| 36630 | __ret_188 = vcmlaq_f32(__s0_188, __s1_188, *(float32x4_t *) &__reint1_188); \ | ||
| 36631 | __ret_188; \ | 36551 | __ret_188; \ |
| 36632 | }) | 36552 | }) |
| 36633 | #else | 36553 | #else |
| ... | @@ -36639,9 +36559,7 @@ uint64x2_t __reint1_188 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36639,9 +36559,7 @@ uint64x2_t __reint1_188 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36639 | float32x4_t __rev0_189; __rev0_189 = __builtin_shufflevector(__s0_189, __s0_189, 3, 2, 1, 0); \ | 36559 | float32x4_t __rev0_189; __rev0_189 = __builtin_shufflevector(__s0_189, __s0_189, 3, 2, 1, 0); \ |
| 36640 | float32x4_t __rev1_189; __rev1_189 = __builtin_shufflevector(__s1_189, __s1_189, 3, 2, 1, 0); \ | 36560 | float32x4_t __rev1_189; __rev1_189 = __builtin_shufflevector(__s1_189, __s1_189, 3, 2, 1, 0); \ |
| 36641 | float32x4_t __rev2_189; __rev2_189 = __builtin_shufflevector(__s2_189, __s2_189, 3, 2, 1, 0); \ | 36561 | float32x4_t __rev2_189; __rev2_189 = __builtin_shufflevector(__s2_189, __s2_189, 3, 2, 1, 0); \ |
| 36642 | float32x4_t __reint_189 = __rev2_189; \ | 36562 | __ret_189 = __noswap_vcmlaq_f32(__rev0_189, __rev1_189, __builtin_bit_cast(float32x4_t, (uint64x2_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_189), __p3_189), __noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_189), __p3_189)})); \ |
| 36643 | uint64x2_t __reint1_189 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_189, __p3_189), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_189, __p3_189)}; \ | ||
| 36644 | __ret_189 = __noswap_vcmlaq_f32(__rev0_189, __rev1_189, *(float32x4_t *) &__reint1_189); \ | ||
| 36645 | __ret_189 = __builtin_shufflevector(__ret_189, __ret_189, 3, 2, 1, 0); \ | 36563 | __ret_189 = __builtin_shufflevector(__ret_189, __ret_189, 3, 2, 1, 0); \ |
| 36646 | __ret_189; \ | 36564 | __ret_189; \ |
| 36647 | }) | 36565 | }) |
| ... | @@ -36699,9 +36617,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot180_f32 | ... | @@ -36699,9 +36617,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot180_f32 |
| 36699 | float32x2_t __s0_190 = __p0_190; \ | 36617 | float32x2_t __s0_190 = __p0_190; \ |
| 36700 | float32x2_t __s1_190 = __p1_190; \ | 36618 | float32x2_t __s1_190 = __p1_190; \ |
| 36701 | float32x2_t __s2_190 = __p2_190; \ | 36619 | float32x2_t __s2_190 = __p2_190; \ |
| 36702 | float32x2_t __reint_190 = __s2_190; \ | 36620 | __ret_190 = vcmla_rot180_f32(__s0_190, __s1_190, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_190), __p3_190)})); \ |
| 36703 | uint64x1_t __reint1_190 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_190, __p3_190)}; \ | ||
| 36704 | __ret_190 = vcmla_rot180_f32(__s0_190, __s1_190, *(float32x2_t *) &__reint1_190); \ | ||
| 36705 | __ret_190; \ | 36621 | __ret_190; \ |
| 36706 | }) | 36622 | }) |
| 36707 | #else | 36623 | #else |
| ... | @@ -36713,9 +36629,7 @@ uint64x1_t __reint1_190 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36713,9 +36629,7 @@ uint64x1_t __reint1_190 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36713 | float32x2_t __rev0_191; __rev0_191 = __builtin_shufflevector(__s0_191, __s0_191, 1, 0); \ | 36629 | float32x2_t __rev0_191; __rev0_191 = __builtin_shufflevector(__s0_191, __s0_191, 1, 0); \ |
| 36714 | float32x2_t __rev1_191; __rev1_191 = __builtin_shufflevector(__s1_191, __s1_191, 1, 0); \ | 36630 | float32x2_t __rev1_191; __rev1_191 = __builtin_shufflevector(__s1_191, __s1_191, 1, 0); \ |
| 36715 | float32x2_t __rev2_191; __rev2_191 = __builtin_shufflevector(__s2_191, __s2_191, 1, 0); \ | 36631 | float32x2_t __rev2_191; __rev2_191 = __builtin_shufflevector(__s2_191, __s2_191, 1, 0); \ |
| 36716 | float32x2_t __reint_191 = __rev2_191; \ | 36632 | __ret_191 = __noswap_vcmla_rot180_f32(__rev0_191, __rev1_191, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_191), __p3_191)})); \ |
| 36717 | uint64x1_t __reint1_191 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_191, __p3_191)}; \ | ||
| 36718 | __ret_191 = __noswap_vcmla_rot180_f32(__rev0_191, __rev1_191, *(float32x2_t *) &__reint1_191); \ | ||
| 36719 | __ret_191 = __builtin_shufflevector(__ret_191, __ret_191, 1, 0); \ | 36633 | __ret_191 = __builtin_shufflevector(__ret_191, __ret_191, 1, 0); \ |
| 36720 | __ret_191; \ | 36634 | __ret_191; \ |
| 36721 | }) | 36635 | }) |
| ... | @@ -36727,9 +36641,7 @@ uint64x1_t __reint1_191 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36727,9 +36641,7 @@ uint64x1_t __reint1_191 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36727 | float32x4_t __s0_192 = __p0_192; \ | 36641 | float32x4_t __s0_192 = __p0_192; \ |
| 36728 | float32x4_t __s1_192 = __p1_192; \ | 36642 | float32x4_t __s1_192 = __p1_192; \ |
| 36729 | float32x2_t __s2_192 = __p2_192; \ | 36643 | float32x2_t __s2_192 = __p2_192; \ |
| 36730 | float32x2_t __reint_192 = __s2_192; \ | 36644 | __ret_192 = vcmlaq_rot180_f32(__s0_192, __s1_192, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_192), __p3_192), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_192), __p3_192)})); \ |
| 36731 | uint64x2_t __reint1_192 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_192, __p3_192), vget_lane_u64(*(uint64x1_t *) &__reint_192, __p3_192)}; \ | ||
| 36732 | __ret_192 = vcmlaq_rot180_f32(__s0_192, __s1_192, *(float32x4_t *) &__reint1_192); \ | ||
| 36733 | __ret_192; \ | 36645 | __ret_192; \ |
| 36734 | }) | 36646 | }) |
| 36735 | #else | 36647 | #else |
| ... | @@ -36741,9 +36653,7 @@ uint64x2_t __reint1_192 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36741,9 +36653,7 @@ uint64x2_t __reint1_192 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36741 | float32x4_t __rev0_193; __rev0_193 = __builtin_shufflevector(__s0_193, __s0_193, 3, 2, 1, 0); \ | 36653 | float32x4_t __rev0_193; __rev0_193 = __builtin_shufflevector(__s0_193, __s0_193, 3, 2, 1, 0); \ |
| 36742 | float32x4_t __rev1_193; __rev1_193 = __builtin_shufflevector(__s1_193, __s1_193, 3, 2, 1, 0); \ | 36654 | float32x4_t __rev1_193; __rev1_193 = __builtin_shufflevector(__s1_193, __s1_193, 3, 2, 1, 0); \ |
| 36743 | float32x2_t __rev2_193; __rev2_193 = __builtin_shufflevector(__s2_193, __s2_193, 1, 0); \ | 36655 | float32x2_t __rev2_193; __rev2_193 = __builtin_shufflevector(__s2_193, __s2_193, 1, 0); \ |
| 36744 | float32x2_t __reint_193 = __rev2_193; \ | 36656 | __ret_193 = __noswap_vcmlaq_rot180_f32(__rev0_193, __rev1_193, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_193), __p3_193), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_193), __p3_193)})); \ |
| 36745 | uint64x2_t __reint1_193 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_193, __p3_193), vget_lane_u64(*(uint64x1_t *) &__reint_193, __p3_193)}; \ | ||
| 36746 | __ret_193 = __noswap_vcmlaq_rot180_f32(__rev0_193, __rev1_193, *(float32x4_t *) &__reint1_193); \ | ||
| 36747 | __ret_193 = __builtin_shufflevector(__ret_193, __ret_193, 3, 2, 1, 0); \ | 36657 | __ret_193 = __builtin_shufflevector(__ret_193, __ret_193, 3, 2, 1, 0); \ |
| 36748 | __ret_193; \ | 36658 | __ret_193; \ |
| 36749 | }) | 36659 | }) |
| ... | @@ -36755,9 +36665,7 @@ uint64x2_t __reint1_193 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36755,9 +36665,7 @@ uint64x2_t __reint1_193 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36755 | float32x2_t __s0_194 = __p0_194; \ | 36665 | float32x2_t __s0_194 = __p0_194; \ |
| 36756 | float32x2_t __s1_194 = __p1_194; \ | 36666 | float32x2_t __s1_194 = __p1_194; \ |
| 36757 | float32x4_t __s2_194 = __p2_194; \ | 36667 | float32x4_t __s2_194 = __p2_194; \ |
| 36758 | float32x4_t __reint_194 = __s2_194; \ | 36668 | __ret_194 = vcmla_rot180_f32(__s0_194, __s1_194, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_194), __p3_194)})); \ |
| 36759 | uint64x1_t __reint1_194 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_194, __p3_194)}; \ | ||
| 36760 | __ret_194 = vcmla_rot180_f32(__s0_194, __s1_194, *(float32x2_t *) &__reint1_194); \ | ||
| 36761 | __ret_194; \ | 36669 | __ret_194; \ |
| 36762 | }) | 36670 | }) |
| 36763 | #else | 36671 | #else |
| ... | @@ -36769,9 +36677,7 @@ uint64x1_t __reint1_194 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36769,9 +36677,7 @@ uint64x1_t __reint1_194 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36769 | float32x2_t __rev0_195; __rev0_195 = __builtin_shufflevector(__s0_195, __s0_195, 1, 0); \ | 36677 | float32x2_t __rev0_195; __rev0_195 = __builtin_shufflevector(__s0_195, __s0_195, 1, 0); \ |
| 36770 | float32x2_t __rev1_195; __rev1_195 = __builtin_shufflevector(__s1_195, __s1_195, 1, 0); \ | 36678 | float32x2_t __rev1_195; __rev1_195 = __builtin_shufflevector(__s1_195, __s1_195, 1, 0); \ |
| 36771 | float32x4_t __rev2_195; __rev2_195 = __builtin_shufflevector(__s2_195, __s2_195, 3, 2, 1, 0); \ | 36679 | float32x4_t __rev2_195; __rev2_195 = __builtin_shufflevector(__s2_195, __s2_195, 3, 2, 1, 0); \ |
| 36772 | float32x4_t __reint_195 = __rev2_195; \ | 36680 | __ret_195 = __noswap_vcmla_rot180_f32(__rev0_195, __rev1_195, __builtin_bit_cast(float32x2_t, (uint64x1_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_195), __p3_195)})); \ |
| 36773 | uint64x1_t __reint1_195 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_195, __p3_195)}; \ | ||
| 36774 | __ret_195 = __noswap_vcmla_rot180_f32(__rev0_195, __rev1_195, *(float32x2_t *) &__reint1_195); \ | ||
| 36775 | __ret_195 = __builtin_shufflevector(__ret_195, __ret_195, 1, 0); \ | 36681 | __ret_195 = __builtin_shufflevector(__ret_195, __ret_195, 1, 0); \ |
| 36776 | __ret_195; \ | 36682 | __ret_195; \ |
| 36777 | }) | 36683 | }) |
| ... | @@ -36783,9 +36689,7 @@ uint64x1_t __reint1_195 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) | ... | @@ -36783,9 +36689,7 @@ uint64x1_t __reint1_195 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) |
| 36783 | float32x4_t __s0_196 = __p0_196; \ | 36689 | float32x4_t __s0_196 = __p0_196; \ |
| 36784 | float32x4_t __s1_196 = __p1_196; \ | 36690 | float32x4_t __s1_196 = __p1_196; \ |
| 36785 | float32x4_t __s2_196 = __p2_196; \ | 36691 | float32x4_t __s2_196 = __p2_196; \ |
| 36786 | float32x4_t __reint_196 = __s2_196; \ | 36692 | __ret_196 = vcmlaq_rot180_f32(__s0_196, __s1_196, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_196), __p3_196), vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_196), __p3_196)})); \ |
| 36787 | uint64x2_t __reint1_196 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_196, __p3_196), vgetq_lane_u64(*(uint64x2_t *) &__reint_196, __p3_196)}; \ | ||
| 36788 | __ret_196 = vcmlaq_rot180_f32(__s0_196, __s1_196, *(float32x4_t *) &__reint1_196); \ | ||
| 36789 | __ret_196; \ | 36693 | __ret_196; \ |
| 36790 | }) | 36694 | }) |
| 36791 | #else | 36695 | #else |
| ... | @@ -36797,9 +36701,7 @@ uint64x2_t __reint1_196 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36797,9 +36701,7 @@ uint64x2_t __reint1_196 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36797 | float32x4_t __rev0_197; __rev0_197 = __builtin_shufflevector(__s0_197, __s0_197, 3, 2, 1, 0); \ | 36701 | float32x4_t __rev0_197; __rev0_197 = __builtin_shufflevector(__s0_197, __s0_197, 3, 2, 1, 0); \ |
| 36798 | float32x4_t __rev1_197; __rev1_197 = __builtin_shufflevector(__s1_197, __s1_197, 3, 2, 1, 0); \ | 36702 | float32x4_t __rev1_197; __rev1_197 = __builtin_shufflevector(__s1_197, __s1_197, 3, 2, 1, 0); \ |
| 36799 | float32x4_t __rev2_197; __rev2_197 = __builtin_shufflevector(__s2_197, __s2_197, 3, 2, 1, 0); \ | 36703 | float32x4_t __rev2_197; __rev2_197 = __builtin_shufflevector(__s2_197, __s2_197, 3, 2, 1, 0); \ |
| 36800 | float32x4_t __reint_197 = __rev2_197; \ | 36704 | __ret_197 = __noswap_vcmlaq_rot180_f32(__rev0_197, __rev1_197, __builtin_bit_cast(float32x4_t, (uint64x2_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_197), __p3_197), __noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_197), __p3_197)})); \ |
| 36801 | uint64x2_t __reint1_197 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_197, __p3_197), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_197, __p3_197)}; \ | ||
| 36802 | __ret_197 = __noswap_vcmlaq_rot180_f32(__rev0_197, __rev1_197, *(float32x4_t *) &__reint1_197); \ | ||
| 36803 | __ret_197 = __builtin_shufflevector(__ret_197, __ret_197, 3, 2, 1, 0); \ | 36705 | __ret_197 = __builtin_shufflevector(__ret_197, __ret_197, 3, 2, 1, 0); \ |
| 36804 | __ret_197; \ | 36706 | __ret_197; \ |
| 36805 | }) | 36707 | }) |
| ... | @@ -36857,9 +36759,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot270_f32 | ... | @@ -36857,9 +36759,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot270_f32 |
| 36857 | float32x2_t __s0_198 = __p0_198; \ | 36759 | float32x2_t __s0_198 = __p0_198; \ |
| 36858 | float32x2_t __s1_198 = __p1_198; \ | 36760 | float32x2_t __s1_198 = __p1_198; \ |
| 36859 | float32x2_t __s2_198 = __p2_198; \ | 36761 | float32x2_t __s2_198 = __p2_198; \ |
| 36860 | float32x2_t __reint_198 = __s2_198; \ | 36762 | __ret_198 = vcmla_rot270_f32(__s0_198, __s1_198, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_198), __p3_198)})); \ |
| 36861 | uint64x1_t __reint1_198 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_198, __p3_198)}; \ | ||
| 36862 | __ret_198 = vcmla_rot270_f32(__s0_198, __s1_198, *(float32x2_t *) &__reint1_198); \ | ||
| 36863 | __ret_198; \ | 36763 | __ret_198; \ |
| 36864 | }) | 36764 | }) |
| 36865 | #else | 36765 | #else |
| ... | @@ -36871,9 +36771,7 @@ uint64x1_t __reint1_198 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36871,9 +36771,7 @@ uint64x1_t __reint1_198 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36871 | float32x2_t __rev0_199; __rev0_199 = __builtin_shufflevector(__s0_199, __s0_199, 1, 0); \ | 36771 | float32x2_t __rev0_199; __rev0_199 = __builtin_shufflevector(__s0_199, __s0_199, 1, 0); \ |
| 36872 | float32x2_t __rev1_199; __rev1_199 = __builtin_shufflevector(__s1_199, __s1_199, 1, 0); \ | 36772 | float32x2_t __rev1_199; __rev1_199 = __builtin_shufflevector(__s1_199, __s1_199, 1, 0); \ |
| 36873 | float32x2_t __rev2_199; __rev2_199 = __builtin_shufflevector(__s2_199, __s2_199, 1, 0); \ | 36773 | float32x2_t __rev2_199; __rev2_199 = __builtin_shufflevector(__s2_199, __s2_199, 1, 0); \ |
| 36874 | float32x2_t __reint_199 = __rev2_199; \ | 36774 | __ret_199 = __noswap_vcmla_rot270_f32(__rev0_199, __rev1_199, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_199), __p3_199)})); \ |
| 36875 | uint64x1_t __reint1_199 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_199, __p3_199)}; \ | ||
| 36876 | __ret_199 = __noswap_vcmla_rot270_f32(__rev0_199, __rev1_199, *(float32x2_t *) &__reint1_199); \ | ||
| 36877 | __ret_199 = __builtin_shufflevector(__ret_199, __ret_199, 1, 0); \ | 36775 | __ret_199 = __builtin_shufflevector(__ret_199, __ret_199, 1, 0); \ |
| 36878 | __ret_199; \ | 36776 | __ret_199; \ |
| 36879 | }) | 36777 | }) |
| ... | @@ -36885,9 +36783,7 @@ uint64x1_t __reint1_199 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 | ... | @@ -36885,9 +36783,7 @@ uint64x1_t __reint1_199 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_1 |
| 36885 | float32x4_t __s0_200 = __p0_200; \ | 36783 | float32x4_t __s0_200 = __p0_200; \ |
| 36886 | float32x4_t __s1_200 = __p1_200; \ | 36784 | float32x4_t __s1_200 = __p1_200; \ |
| 36887 | float32x2_t __s2_200 = __p2_200; \ | 36785 | float32x2_t __s2_200 = __p2_200; \ |
| 36888 | float32x2_t __reint_200 = __s2_200; \ | 36786 | __ret_200 = vcmlaq_rot270_f32(__s0_200, __s1_200, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_200), __p3_200), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_200), __p3_200)})); \ |
| 36889 | uint64x2_t __reint1_200 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_200, __p3_200), vget_lane_u64(*(uint64x1_t *) &__reint_200, __p3_200)}; \ | ||
| 36890 | __ret_200 = vcmlaq_rot270_f32(__s0_200, __s1_200, *(float32x4_t *) &__reint1_200); \ | ||
| 36891 | __ret_200; \ | 36787 | __ret_200; \ |
| 36892 | }) | 36788 | }) |
| 36893 | #else | 36789 | #else |
| ... | @@ -36899,9 +36795,7 @@ uint64x2_t __reint1_200 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -36899,9 +36795,7 @@ uint64x2_t __reint1_200 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 36899 | float32x4_t __rev0_201; __rev0_201 = __builtin_shufflevector(__s0_201, __s0_201, 3, 2, 1, 0); \ | 36795 | float32x4_t __rev0_201; __rev0_201 = __builtin_shufflevector(__s0_201, __s0_201, 3, 2, 1, 0); \ |
| 36900 | float32x4_t __rev1_201; __rev1_201 = __builtin_shufflevector(__s1_201, __s1_201, 3, 2, 1, 0); \ | 36796 | float32x4_t __rev1_201; __rev1_201 = __builtin_shufflevector(__s1_201, __s1_201, 3, 2, 1, 0); \ |
| 36901 | float32x2_t __rev2_201; __rev2_201 = __builtin_shufflevector(__s2_201, __s2_201, 1, 0); \ | 36797 | float32x2_t __rev2_201; __rev2_201 = __builtin_shufflevector(__s2_201, __s2_201, 1, 0); \ |
| 36902 | float32x2_t __reint_201 = __rev2_201; \ | 36798 | __ret_201 = __noswap_vcmlaq_rot270_f32(__rev0_201, __rev1_201, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_201), __p3_201), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_201), __p3_201)})); \ |
| 36903 | uint64x2_t __reint1_201 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_201, __p3_201), vget_lane_u64(*(uint64x1_t *) &__reint_201, __p3_201)}; \ | ||
| 36904 | __ret_201 = __noswap_vcmlaq_rot270_f32(__rev0_201, __rev1_201, *(float32x4_t *) &__reint1_201); \ | ||
| 36905 | __ret_201 = __builtin_shufflevector(__ret_201, __ret_201, 3, 2, 1, 0); \ | 36799 | __ret_201 = __builtin_shufflevector(__ret_201, __ret_201, 3, 2, 1, 0); \ |
| 36906 | __ret_201; \ | 36800 | __ret_201; \ |
| 36907 | }) | 36801 | }) |
| ... | @@ -36913,9 +36807,7 @@ uint64x2_t __reint1_201 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -36913,9 +36807,7 @@ uint64x2_t __reint1_201 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 36913 | float32x2_t __s0_202 = __p0_202; \ | 36807 | float32x2_t __s0_202 = __p0_202; \ |
| 36914 | float32x2_t __s1_202 = __p1_202; \ | 36808 | float32x2_t __s1_202 = __p1_202; \ |
| 36915 | float32x4_t __s2_202 = __p2_202; \ | 36809 | float32x4_t __s2_202 = __p2_202; \ |
| 36916 | float32x4_t __reint_202 = __s2_202; \ | 36810 | __ret_202 = vcmla_rot270_f32(__s0_202, __s1_202, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_202), __p3_202)})); \ |
| 36917 | uint64x1_t __reint1_202 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_202, __p3_202)}; \ | ||
| 36918 | __ret_202 = vcmla_rot270_f32(__s0_202, __s1_202, *(float32x2_t *) &__reint1_202); \ | ||
| 36919 | __ret_202; \ | 36811 | __ret_202; \ |
| 36920 | }) | 36812 | }) |
| 36921 | #else | 36813 | #else |
| ... | @@ -36927,9 +36819,7 @@ uint64x1_t __reint1_202 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36927,9 +36819,7 @@ uint64x1_t __reint1_202 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36927 | float32x2_t __rev0_203; __rev0_203 = __builtin_shufflevector(__s0_203, __s0_203, 1, 0); \ | 36819 | float32x2_t __rev0_203; __rev0_203 = __builtin_shufflevector(__s0_203, __s0_203, 1, 0); \ |
| 36928 | float32x2_t __rev1_203; __rev1_203 = __builtin_shufflevector(__s1_203, __s1_203, 1, 0); \ | 36820 | float32x2_t __rev1_203; __rev1_203 = __builtin_shufflevector(__s1_203, __s1_203, 1, 0); \ |
| 36929 | float32x4_t __rev2_203; __rev2_203 = __builtin_shufflevector(__s2_203, __s2_203, 3, 2, 1, 0); \ | 36821 | float32x4_t __rev2_203; __rev2_203 = __builtin_shufflevector(__s2_203, __s2_203, 3, 2, 1, 0); \ |
| 36930 | float32x4_t __reint_203 = __rev2_203; \ | 36822 | __ret_203 = __noswap_vcmla_rot270_f32(__rev0_203, __rev1_203, __builtin_bit_cast(float32x2_t, (uint64x1_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_203), __p3_203)})); \ |
| 36931 | uint64x1_t __reint1_203 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_203, __p3_203)}; \ | ||
| 36932 | __ret_203 = __noswap_vcmla_rot270_f32(__rev0_203, __rev1_203, *(float32x2_t *) &__reint1_203); \ | ||
| 36933 | __ret_203 = __builtin_shufflevector(__ret_203, __ret_203, 1, 0); \ | 36823 | __ret_203 = __builtin_shufflevector(__ret_203, __ret_203, 1, 0); \ |
| 36934 | __ret_203; \ | 36824 | __ret_203; \ |
| 36935 | }) | 36825 | }) |
| ... | @@ -36941,9 +36831,7 @@ uint64x1_t __reint1_203 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) | ... | @@ -36941,9 +36831,7 @@ uint64x1_t __reint1_203 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) |
| 36941 | float32x4_t __s0_204 = __p0_204; \ | 36831 | float32x4_t __s0_204 = __p0_204; \ |
| 36942 | float32x4_t __s1_204 = __p1_204; \ | 36832 | float32x4_t __s1_204 = __p1_204; \ |
| 36943 | float32x4_t __s2_204 = __p2_204; \ | 36833 | float32x4_t __s2_204 = __p2_204; \ |
| 36944 | float32x4_t __reint_204 = __s2_204; \ | 36834 | __ret_204 = vcmlaq_rot270_f32(__s0_204, __s1_204, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_204), __p3_204), vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_204), __p3_204)})); \ |
| 36945 | uint64x2_t __reint1_204 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_204, __p3_204), vgetq_lane_u64(*(uint64x2_t *) &__reint_204, __p3_204)}; \ | ||
| 36946 | __ret_204 = vcmlaq_rot270_f32(__s0_204, __s1_204, *(float32x4_t *) &__reint1_204); \ | ||
| 36947 | __ret_204; \ | 36835 | __ret_204; \ |
| 36948 | }) | 36836 | }) |
| 36949 | #else | 36837 | #else |
| ... | @@ -36955,9 +36843,7 @@ uint64x2_t __reint1_204 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -36955,9 +36843,7 @@ uint64x2_t __reint1_204 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 36955 | float32x4_t __rev0_205; __rev0_205 = __builtin_shufflevector(__s0_205, __s0_205, 3, 2, 1, 0); \ | 36843 | float32x4_t __rev0_205; __rev0_205 = __builtin_shufflevector(__s0_205, __s0_205, 3, 2, 1, 0); \ |
| 36956 | float32x4_t __rev1_205; __rev1_205 = __builtin_shufflevector(__s1_205, __s1_205, 3, 2, 1, 0); \ | 36844 | float32x4_t __rev1_205; __rev1_205 = __builtin_shufflevector(__s1_205, __s1_205, 3, 2, 1, 0); \ |
| 36957 | float32x4_t __rev2_205; __rev2_205 = __builtin_shufflevector(__s2_205, __s2_205, 3, 2, 1, 0); \ | 36845 | float32x4_t __rev2_205; __rev2_205 = __builtin_shufflevector(__s2_205, __s2_205, 3, 2, 1, 0); \ |
| 36958 | float32x4_t __reint_205 = __rev2_205; \ | 36846 | __ret_205 = __noswap_vcmlaq_rot270_f32(__rev0_205, __rev1_205, __builtin_bit_cast(float32x4_t, (uint64x2_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_205), __p3_205), __noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_205), __p3_205)})); \ |
| 36959 | uint64x2_t __reint1_205 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_205, __p3_205), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_205, __p3_205)}; \ | ||
| 36960 | __ret_205 = __noswap_vcmlaq_rot270_f32(__rev0_205, __rev1_205, *(float32x4_t *) &__reint1_205); \ | ||
| 36961 | __ret_205 = __builtin_shufflevector(__ret_205, __ret_205, 3, 2, 1, 0); \ | 36847 | __ret_205 = __builtin_shufflevector(__ret_205, __ret_205, 3, 2, 1, 0); \ |
| 36962 | __ret_205; \ | 36848 | __ret_205; \ |
| 36963 | }) | 36849 | }) |
| ... | @@ -37015,9 +36901,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot90_f32( | ... | @@ -37015,9 +36901,7 @@ __ai __attribute__((target("v8.3a,neon"))) float32x2_t __noswap_vcmla_rot90_f32( |
| 37015 | float32x2_t __s0_206 = __p0_206; \ | 36901 | float32x2_t __s0_206 = __p0_206; \ |
| 37016 | float32x2_t __s1_206 = __p1_206; \ | 36902 | float32x2_t __s1_206 = __p1_206; \ |
| 37017 | float32x2_t __s2_206 = __p2_206; \ | 36903 | float32x2_t __s2_206 = __p2_206; \ |
| 37018 | float32x2_t __reint_206 = __s2_206; \ | 36904 | __ret_206 = vcmla_rot90_f32(__s0_206, __s1_206, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_206), __p3_206)})); \ |
| 37019 | uint64x1_t __reint1_206 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_206, __p3_206)}; \ | ||
| 37020 | __ret_206 = vcmla_rot90_f32(__s0_206, __s1_206, *(float32x2_t *) &__reint1_206); \ | ||
| 37021 | __ret_206; \ | 36905 | __ret_206; \ |
| 37022 | }) | 36906 | }) |
| 37023 | #else | 36907 | #else |
| ... | @@ -37029,9 +36913,7 @@ uint64x1_t __reint1_206 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -37029,9 +36913,7 @@ uint64x1_t __reint1_206 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 37029 | float32x2_t __rev0_207; __rev0_207 = __builtin_shufflevector(__s0_207, __s0_207, 1, 0); \ | 36913 | float32x2_t __rev0_207; __rev0_207 = __builtin_shufflevector(__s0_207, __s0_207, 1, 0); \ |
| 37030 | float32x2_t __rev1_207; __rev1_207 = __builtin_shufflevector(__s1_207, __s1_207, 1, 0); \ | 36914 | float32x2_t __rev1_207; __rev1_207 = __builtin_shufflevector(__s1_207, __s1_207, 1, 0); \ |
| 37031 | float32x2_t __rev2_207; __rev2_207 = __builtin_shufflevector(__s2_207, __s2_207, 1, 0); \ | 36915 | float32x2_t __rev2_207; __rev2_207 = __builtin_shufflevector(__s2_207, __s2_207, 1, 0); \ |
| 37032 | float32x2_t __reint_207 = __rev2_207; \ | 36916 | __ret_207 = __noswap_vcmla_rot90_f32(__rev0_207, __rev1_207, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_207), __p3_207)})); \ |
| 37033 | uint64x1_t __reint1_207 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_207, __p3_207)}; \ | ||
| 37034 | __ret_207 = __noswap_vcmla_rot90_f32(__rev0_207, __rev1_207, *(float32x2_t *) &__reint1_207); \ | ||
| 37035 | __ret_207 = __builtin_shufflevector(__ret_207, __ret_207, 1, 0); \ | 36917 | __ret_207 = __builtin_shufflevector(__ret_207, __ret_207, 1, 0); \ |
| 37036 | __ret_207; \ | 36918 | __ret_207; \ |
| 37037 | }) | 36919 | }) |
| ... | @@ -37043,9 +36925,7 @@ uint64x1_t __reint1_207 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -37043,9 +36925,7 @@ uint64x1_t __reint1_207 = (uint64x1_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 37043 | float32x4_t __s0_208 = __p0_208; \ | 36925 | float32x4_t __s0_208 = __p0_208; \ |
| 37044 | float32x4_t __s1_208 = __p1_208; \ | 36926 | float32x4_t __s1_208 = __p1_208; \ |
| 37045 | float32x2_t __s2_208 = __p2_208; \ | 36927 | float32x2_t __s2_208 = __p2_208; \ |
| 37046 | float32x2_t __reint_208 = __s2_208; \ | 36928 | __ret_208 = vcmlaq_rot90_f32(__s0_208, __s1_208, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_208), __p3_208), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __s2_208), __p3_208)})); \ |
| 37047 | uint64x2_t __reint1_208 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_208, __p3_208), vget_lane_u64(*(uint64x1_t *) &__reint_208, __p3_208)}; \ | ||
| 37048 | __ret_208 = vcmlaq_rot90_f32(__s0_208, __s1_208, *(float32x4_t *) &__reint1_208); \ | ||
| 37049 | __ret_208; \ | 36929 | __ret_208; \ |
| 37050 | }) | 36930 | }) |
| 37051 | #else | 36931 | #else |
| ... | @@ -37057,9 +36937,7 @@ uint64x2_t __reint1_208 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -37057,9 +36937,7 @@ uint64x2_t __reint1_208 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 37057 | float32x4_t __rev0_209; __rev0_209 = __builtin_shufflevector(__s0_209, __s0_209, 3, 2, 1, 0); \ | 36937 | float32x4_t __rev0_209; __rev0_209 = __builtin_shufflevector(__s0_209, __s0_209, 3, 2, 1, 0); \ |
| 37058 | float32x4_t __rev1_209; __rev1_209 = __builtin_shufflevector(__s1_209, __s1_209, 3, 2, 1, 0); \ | 36938 | float32x4_t __rev1_209; __rev1_209 = __builtin_shufflevector(__s1_209, __s1_209, 3, 2, 1, 0); \ |
| 37059 | float32x2_t __rev2_209; __rev2_209 = __builtin_shufflevector(__s2_209, __s2_209, 1, 0); \ | 36939 | float32x2_t __rev2_209; __rev2_209 = __builtin_shufflevector(__s2_209, __s2_209, 1, 0); \ |
| 37060 | float32x2_t __reint_209 = __rev2_209; \ | 36940 | __ret_209 = __noswap_vcmlaq_rot90_f32(__rev0_209, __rev1_209, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_209), __p3_209), vget_lane_u64(__builtin_bit_cast(uint64x1_t, __rev2_209), __p3_209)})); \ |
| 37061 | uint64x2_t __reint1_209 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_209, __p3_209), vget_lane_u64(*(uint64x1_t *) &__reint_209, __p3_209)}; \ | ||
| 37062 | __ret_209 = __noswap_vcmlaq_rot90_f32(__rev0_209, __rev1_209, *(float32x4_t *) &__reint1_209); \ | ||
| 37063 | __ret_209 = __builtin_shufflevector(__ret_209, __ret_209, 3, 2, 1, 0); \ | 36941 | __ret_209 = __builtin_shufflevector(__ret_209, __ret_209, 3, 2, 1, 0); \ |
| 37064 | __ret_209; \ | 36942 | __ret_209; \ |
| 37065 | }) | 36943 | }) |
| ... | @@ -37071,9 +36949,7 @@ uint64x2_t __reint1_209 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 | ... | @@ -37071,9 +36949,7 @@ uint64x2_t __reint1_209 = (uint64x2_t) {vget_lane_u64(*(uint64x1_t *) &__reint_2 |
| 37071 | float32x2_t __s0_210 = __p0_210; \ | 36949 | float32x2_t __s0_210 = __p0_210; \ |
| 37072 | float32x2_t __s1_210 = __p1_210; \ | 36950 | float32x2_t __s1_210 = __p1_210; \ |
| 37073 | float32x4_t __s2_210 = __p2_210; \ | 36951 | float32x4_t __s2_210 = __p2_210; \ |
| 37074 | float32x4_t __reint_210 = __s2_210; \ | 36952 | __ret_210 = vcmla_rot90_f32(__s0_210, __s1_210, __builtin_bit_cast(float32x2_t, (uint64x1_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_210), __p3_210)})); \ |
| 37075 | uint64x1_t __reint1_210 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_210, __p3_210)}; \ | ||
| 37076 | __ret_210 = vcmla_rot90_f32(__s0_210, __s1_210, *(float32x2_t *) &__reint1_210); \ | ||
| 37077 | __ret_210; \ | 36953 | __ret_210; \ |
| 37078 | }) | 36954 | }) |
| 37079 | #else | 36955 | #else |
| ... | @@ -37085,9 +36961,7 @@ uint64x1_t __reint1_210 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -37085,9 +36961,7 @@ uint64x1_t __reint1_210 = (uint64x1_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 37085 | float32x2_t __rev0_211; __rev0_211 = __builtin_shufflevector(__s0_211, __s0_211, 1, 0); \ | 36961 | float32x2_t __rev0_211; __rev0_211 = __builtin_shufflevector(__s0_211, __s0_211, 1, 0); \ |
| 37086 | float32x2_t __rev1_211; __rev1_211 = __builtin_shufflevector(__s1_211, __s1_211, 1, 0); \ | 36962 | float32x2_t __rev1_211; __rev1_211 = __builtin_shufflevector(__s1_211, __s1_211, 1, 0); \ |
| 37087 | float32x4_t __rev2_211; __rev2_211 = __builtin_shufflevector(__s2_211, __s2_211, 3, 2, 1, 0); \ | 36963 | float32x4_t __rev2_211; __rev2_211 = __builtin_shufflevector(__s2_211, __s2_211, 3, 2, 1, 0); \ |
| 37088 | float32x4_t __reint_211 = __rev2_211; \ | 36964 | __ret_211 = __noswap_vcmla_rot90_f32(__rev0_211, __rev1_211, __builtin_bit_cast(float32x2_t, (uint64x1_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_211), __p3_211)})); \ |
| 37089 | uint64x1_t __reint1_211 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_211, __p3_211)}; \ | ||
| 37090 | __ret_211 = __noswap_vcmla_rot90_f32(__rev0_211, __rev1_211, *(float32x2_t *) &__reint1_211); \ | ||
| 37091 | __ret_211 = __builtin_shufflevector(__ret_211, __ret_211, 1, 0); \ | 36965 | __ret_211 = __builtin_shufflevector(__ret_211, __ret_211, 1, 0); \ |
| 37092 | __ret_211; \ | 36966 | __ret_211; \ |
| 37093 | }) | 36967 | }) |
| ... | @@ -37099,9 +36973,7 @@ uint64x1_t __reint1_211 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) | ... | @@ -37099,9 +36973,7 @@ uint64x1_t __reint1_211 = (uint64x1_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) |
| 37099 | float32x4_t __s0_212 = __p0_212; \ | 36973 | float32x4_t __s0_212 = __p0_212; \ |
| 37100 | float32x4_t __s1_212 = __p1_212; \ | 36974 | float32x4_t __s1_212 = __p1_212; \ |
| 37101 | float32x4_t __s2_212 = __p2_212; \ | 36975 | float32x4_t __s2_212 = __p2_212; \ |
| 37102 | float32x4_t __reint_212 = __s2_212; \ | 36976 | __ret_212 = vcmlaq_rot90_f32(__s0_212, __s1_212, __builtin_bit_cast(float32x4_t, (uint64x2_t) {vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_212), __p3_212), vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __s2_212), __p3_212)})); \ |
| 37103 | uint64x2_t __reint1_212 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_212, __p3_212), vgetq_lane_u64(*(uint64x2_t *) &__reint_212, __p3_212)}; \ | ||
| 37104 | __ret_212 = vcmlaq_rot90_f32(__s0_212, __s1_212, *(float32x4_t *) &__reint1_212); \ | ||
| 37105 | __ret_212; \ | 36977 | __ret_212; \ |
| 37106 | }) | 36978 | }) |
| 37107 | #else | 36979 | #else |
| ... | @@ -37113,9 +36985,7 @@ uint64x2_t __reint1_212 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ | ... | @@ -37113,9 +36985,7 @@ uint64x2_t __reint1_212 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_ |
| 37113 | float32x4_t __rev0_213; __rev0_213 = __builtin_shufflevector(__s0_213, __s0_213, 3, 2, 1, 0); \ | 36985 | float32x4_t __rev0_213; __rev0_213 = __builtin_shufflevector(__s0_213, __s0_213, 3, 2, 1, 0); \ |
| 37114 | float32x4_t __rev1_213; __rev1_213 = __builtin_shufflevector(__s1_213, __s1_213, 3, 2, 1, 0); \ | 36986 | float32x4_t __rev1_213; __rev1_213 = __builtin_shufflevector(__s1_213, __s1_213, 3, 2, 1, 0); \ |
| 37115 | float32x4_t __rev2_213; __rev2_213 = __builtin_shufflevector(__s2_213, __s2_213, 3, 2, 1, 0); \ | 36987 | float32x4_t __rev2_213; __rev2_213 = __builtin_shufflevector(__s2_213, __s2_213, 3, 2, 1, 0); \ |
| 37116 | float32x4_t __reint_213 = __rev2_213; \ | 36988 | __ret_213 = __noswap_vcmlaq_rot90_f32(__rev0_213, __rev1_213, __builtin_bit_cast(float32x4_t, (uint64x2_t) {__noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_213), __p3_213), __noswap_vgetq_lane_u64(__builtin_bit_cast(uint64x2_t, __rev2_213), __p3_213)})); \ |
| 37117 | uint64x2_t __reint1_213 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_213, __p3_213), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_213, __p3_213)}; \ | ||
| 37118 | __ret_213 = __noswap_vcmlaq_rot90_f32(__rev0_213, __rev1_213, *(float32x4_t *) &__reint1_213); \ | ||
| 37119 | __ret_213 = __builtin_shufflevector(__ret_213, __ret_213, 3, 2, 1, 0); \ | 36989 | __ret_213 = __builtin_shufflevector(__ret_213, __ret_213, 3, 2, 1, 0); \ |
| 37120 | __ret_213; \ | 36990 | __ret_213; \ |
| 37121 | }) | 36991 | }) |
| ... | @@ -41249,33 +41119,2258 @@ __ai __attribute__((target("neon"))) float32x2_t vfms_f32(float32x2_t __p0, floa | ... | @@ -41249,33 +41119,2258 @@ __ai __attribute__((target("neon"))) float32x2_t vfms_f32(float32x2_t __p0, floa |
| 41249 | #endif | 41119 | #endif |
| 41250 | 41120 | ||
| 41251 | #endif | 41121 | #endif |
| 41252 | #if defined(__aarch64__) || defined(__arm64ec__) | 41122 | #if defined(__aarch64__) |
| 41253 | __ai __attribute__((target("aes,neon"))) poly128_t vmull_p64(poly64_t __p0, poly64_t __p1) { | 41123 | #ifdef __LITTLE_ENDIAN__ |
| 41254 | poly128_t __ret; | 41124 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_bf16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { |
| 41255 | __ret = (poly128_t) __builtin_neon_vmull_p64(__p0, __p1); | 41125 | bfloat16x8_t __ret; |
| 41126 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_bf16_mf8_fpm(__p0, __p1); | ||
| 41127 | return __ret; | ||
| 41128 | } | ||
| 41129 | #else | ||
| 41130 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_bf16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41131 | bfloat16x8_t __ret; | ||
| 41132 | mfloat8x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41133 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_bf16_mf8_fpm(__rev0, __p1); | ||
| 41134 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41135 | return __ret; | ||
| 41136 | } | ||
| 41137 | #endif | ||
| 41138 | |||
| 41139 | #ifdef __LITTLE_ENDIAN__ | ||
| 41140 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_f16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41141 | float16x8_t __ret; | ||
| 41142 | __ret = (float16x8_t) __builtin_neon_vcvt1_f16_mf8_fpm(__p0, __p1); | ||
| 41143 | return __ret; | ||
| 41144 | } | ||
| 41145 | #else | ||
| 41146 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_f16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41147 | float16x8_t __ret; | ||
| 41148 | mfloat8x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41149 | __ret = (float16x8_t) __builtin_neon_vcvt1_f16_mf8_fpm(__rev0, __p1); | ||
| 41150 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41151 | return __ret; | ||
| 41152 | } | ||
| 41153 | #endif | ||
| 41154 | |||
| 41155 | #ifdef __LITTLE_ENDIAN__ | ||
| 41156 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_high_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41157 | bfloat16x8_t __ret; | ||
| 41158 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_high_bf16_mf8_fpm(__p0, __p1); | ||
| 41159 | return __ret; | ||
| 41160 | } | ||
| 41161 | #else | ||
| 41162 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_high_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41163 | bfloat16x8_t __ret; | ||
| 41164 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41165 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_high_bf16_mf8_fpm(__rev0, __p1); | ||
| 41166 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41167 | return __ret; | ||
| 41168 | } | ||
| 41169 | #endif | ||
| 41170 | |||
| 41171 | #ifdef __LITTLE_ENDIAN__ | ||
| 41172 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_high_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41173 | float16x8_t __ret; | ||
| 41174 | __ret = (float16x8_t) __builtin_neon_vcvt1_high_f16_mf8_fpm(__p0, __p1); | ||
| 41175 | return __ret; | ||
| 41176 | } | ||
| 41177 | #else | ||
| 41178 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_high_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41179 | float16x8_t __ret; | ||
| 41180 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41181 | __ret = (float16x8_t) __builtin_neon_vcvt1_high_f16_mf8_fpm(__rev0, __p1); | ||
| 41182 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41183 | return __ret; | ||
| 41184 | } | ||
| 41185 | #endif | ||
| 41186 | |||
| 41187 | #ifdef __LITTLE_ENDIAN__ | ||
| 41188 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_low_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41189 | bfloat16x8_t __ret; | ||
| 41190 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_low_bf16_mf8_fpm(__p0, __p1); | ||
| 41191 | return __ret; | ||
| 41192 | } | ||
| 41193 | #else | ||
| 41194 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt1_low_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41195 | bfloat16x8_t __ret; | ||
| 41196 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41197 | __ret = (bfloat16x8_t) __builtin_neon_vcvt1_low_bf16_mf8_fpm(__rev0, __p1); | ||
| 41198 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41199 | return __ret; | ||
| 41200 | } | ||
| 41201 | #endif | ||
| 41202 | |||
| 41203 | #ifdef __LITTLE_ENDIAN__ | ||
| 41204 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_low_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41205 | float16x8_t __ret; | ||
| 41206 | __ret = (float16x8_t) __builtin_neon_vcvt1_low_f16_mf8_fpm(__p0, __p1); | ||
| 41207 | return __ret; | ||
| 41208 | } | ||
| 41209 | #else | ||
| 41210 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt1_low_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41211 | float16x8_t __ret; | ||
| 41212 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41213 | __ret = (float16x8_t) __builtin_neon_vcvt1_low_f16_mf8_fpm(__rev0, __p1); | ||
| 41214 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41215 | return __ret; | ||
| 41216 | } | ||
| 41217 | #endif | ||
| 41218 | |||
| 41219 | #ifdef __LITTLE_ENDIAN__ | ||
| 41220 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_bf16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41221 | bfloat16x8_t __ret; | ||
| 41222 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_bf16_mf8_fpm(__p0, __p1); | ||
| 41223 | return __ret; | ||
| 41224 | } | ||
| 41225 | #else | ||
| 41226 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_bf16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41227 | bfloat16x8_t __ret; | ||
| 41228 | mfloat8x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41229 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_bf16_mf8_fpm(__rev0, __p1); | ||
| 41230 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41231 | return __ret; | ||
| 41232 | } | ||
| 41233 | #endif | ||
| 41234 | |||
| 41235 | #ifdef __LITTLE_ENDIAN__ | ||
| 41236 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_f16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41237 | float16x8_t __ret; | ||
| 41238 | __ret = (float16x8_t) __builtin_neon_vcvt2_f16_mf8_fpm(__p0, __p1); | ||
| 41239 | return __ret; | ||
| 41240 | } | ||
| 41241 | #else | ||
| 41242 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_f16_mf8_fpm(mfloat8x8_t __p0, fpm_t __p1) { | ||
| 41243 | float16x8_t __ret; | ||
| 41244 | mfloat8x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41245 | __ret = (float16x8_t) __builtin_neon_vcvt2_f16_mf8_fpm(__rev0, __p1); | ||
| 41246 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41247 | return __ret; | ||
| 41248 | } | ||
| 41249 | #endif | ||
| 41250 | |||
| 41251 | #ifdef __LITTLE_ENDIAN__ | ||
| 41252 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_high_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41253 | bfloat16x8_t __ret; | ||
| 41254 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_high_bf16_mf8_fpm(__p0, __p1); | ||
| 41255 | return __ret; | ||
| 41256 | } | ||
| 41257 | #else | ||
| 41258 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_high_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41259 | bfloat16x8_t __ret; | ||
| 41260 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41261 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_high_bf16_mf8_fpm(__rev0, __p1); | ||
| 41262 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41263 | return __ret; | ||
| 41264 | } | ||
| 41265 | #endif | ||
| 41266 | |||
| 41267 | #ifdef __LITTLE_ENDIAN__ | ||
| 41268 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_high_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41269 | float16x8_t __ret; | ||
| 41270 | __ret = (float16x8_t) __builtin_neon_vcvt2_high_f16_mf8_fpm(__p0, __p1); | ||
| 41271 | return __ret; | ||
| 41272 | } | ||
| 41273 | #else | ||
| 41274 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_high_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41275 | float16x8_t __ret; | ||
| 41276 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41277 | __ret = (float16x8_t) __builtin_neon_vcvt2_high_f16_mf8_fpm(__rev0, __p1); | ||
| 41278 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41279 | return __ret; | ||
| 41280 | } | ||
| 41281 | #endif | ||
| 41282 | |||
| 41283 | #ifdef __LITTLE_ENDIAN__ | ||
| 41284 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_low_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41285 | bfloat16x8_t __ret; | ||
| 41286 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_low_bf16_mf8_fpm(__p0, __p1); | ||
| 41287 | return __ret; | ||
| 41288 | } | ||
| 41289 | #else | ||
| 41290 | __ai __attribute__((target("fp8,neon"))) bfloat16x8_t vcvt2_low_bf16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41291 | bfloat16x8_t __ret; | ||
| 41292 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41293 | __ret = (bfloat16x8_t) __builtin_neon_vcvt2_low_bf16_mf8_fpm(__rev0, __p1); | ||
| 41294 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41295 | return __ret; | ||
| 41296 | } | ||
| 41297 | #endif | ||
| 41298 | |||
| 41299 | #ifdef __LITTLE_ENDIAN__ | ||
| 41300 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_low_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41301 | float16x8_t __ret; | ||
| 41302 | __ret = (float16x8_t) __builtin_neon_vcvt2_low_f16_mf8_fpm(__p0, __p1); | ||
| 41303 | return __ret; | ||
| 41304 | } | ||
| 41305 | #else | ||
| 41306 | __ai __attribute__((target("fp8,neon"))) float16x8_t vcvt2_low_f16_mf8_fpm(mfloat8x16_t __p0, fpm_t __p1) { | ||
| 41307 | float16x8_t __ret; | ||
| 41308 | mfloat8x16_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41309 | __ret = (float16x8_t) __builtin_neon_vcvt2_low_f16_mf8_fpm(__rev0, __p1); | ||
| 41310 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41311 | return __ret; | ||
| 41312 | } | ||
| 41313 | #endif | ||
| 41314 | |||
| 41315 | #ifdef __LITTLE_ENDIAN__ | ||
| 41316 | __ai __attribute__((target("fp8,neon"))) mfloat8x16_t vcvt_high_mf8_f32_fpm(mfloat8x8_t __p0, float32x4_t __p1, float32x4_t __p2, fpm_t __p3) { | ||
| 41317 | mfloat8x16_t __ret; | ||
| 41318 | __ret = (mfloat8x16_t) __builtin_neon_vcvt_high_mf8_f32_fpm(__p0, __p1, __p2, __p3); | ||
| 41319 | return __ret; | ||
| 41320 | } | ||
| 41321 | #else | ||
| 41322 | __ai __attribute__((target("fp8,neon"))) mfloat8x16_t vcvt_high_mf8_f32_fpm(mfloat8x8_t __p0, float32x4_t __p1, float32x4_t __p2, fpm_t __p3) { | ||
| 41323 | mfloat8x16_t __ret; | ||
| 41324 | mfloat8x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41325 | float32x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 41326 | float32x4_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 3, 2, 1, 0); | ||
| 41327 | __ret = (mfloat8x16_t) __builtin_neon_vcvt_high_mf8_f32_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41328 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41329 | return __ret; | ||
| 41330 | } | ||
| 41331 | #endif | ||
| 41332 | |||
| 41333 | #ifdef __LITTLE_ENDIAN__ | ||
| 41334 | __ai __attribute__((target("fp8,neon"))) mfloat8x16_t vcvtq_mf8_f16_fpm(float16x8_t __p0, float16x8_t __p1, fpm_t __p2) { | ||
| 41335 | mfloat8x16_t __ret; | ||
| 41336 | __ret = (mfloat8x16_t) __builtin_neon_vcvtq_mf8_f16_fpm((int8x16_t)__p0, (int8x16_t)__p1, __p2); | ||
| 41337 | return __ret; | ||
| 41338 | } | ||
| 41339 | #else | ||
| 41340 | __ai __attribute__((target("fp8,neon"))) mfloat8x16_t vcvtq_mf8_f16_fpm(float16x8_t __p0, float16x8_t __p1, fpm_t __p2) { | ||
| 41341 | mfloat8x16_t __ret; | ||
| 41342 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41343 | float16x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41344 | __ret = (mfloat8x16_t) __builtin_neon_vcvtq_mf8_f16_fpm((int8x16_t)__rev0, (int8x16_t)__rev1, __p2); | ||
| 41345 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41346 | return __ret; | ||
| 41347 | } | ||
| 41348 | #endif | ||
| 41349 | |||
| 41350 | #ifdef __LITTLE_ENDIAN__ | ||
| 41351 | __ai __attribute__((target("fp8,neon"))) mfloat8x8_t vcvt_mf8_f16_fpm(float16x4_t __p0, float16x4_t __p1, fpm_t __p2) { | ||
| 41352 | mfloat8x8_t __ret; | ||
| 41353 | __ret = (mfloat8x8_t) __builtin_neon_vcvt_mf8_f16_fpm((int8x8_t)__p0, (int8x8_t)__p1, __p2); | ||
| 41354 | return __ret; | ||
| 41355 | } | ||
| 41356 | #else | ||
| 41357 | __ai __attribute__((target("fp8,neon"))) mfloat8x8_t vcvt_mf8_f16_fpm(float16x4_t __p0, float16x4_t __p1, fpm_t __p2) { | ||
| 41358 | mfloat8x8_t __ret; | ||
| 41359 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41360 | float16x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 41361 | __ret = (mfloat8x8_t) __builtin_neon_vcvt_mf8_f16_fpm((int8x8_t)__rev0, (int8x8_t)__rev1, __p2); | ||
| 41362 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41363 | return __ret; | ||
| 41364 | } | ||
| 41365 | #endif | ||
| 41366 | |||
| 41367 | #ifdef __LITTLE_ENDIAN__ | ||
| 41368 | __ai __attribute__((target("fp8,neon"))) mfloat8x8_t vcvt_mf8_f32_fpm(float32x4_t __p0, float32x4_t __p1, fpm_t __p2) { | ||
| 41369 | mfloat8x8_t __ret; | ||
| 41370 | __ret = (mfloat8x8_t) __builtin_neon_vcvt_mf8_f32_fpm(__p0, __p1, __p2); | ||
| 41371 | return __ret; | ||
| 41372 | } | ||
| 41373 | #else | ||
| 41374 | __ai __attribute__((target("fp8,neon"))) mfloat8x8_t vcvt_mf8_f32_fpm(float32x4_t __p0, float32x4_t __p1, fpm_t __p2) { | ||
| 41375 | mfloat8x8_t __ret; | ||
| 41376 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41377 | float32x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 41378 | __ret = (mfloat8x8_t) __builtin_neon_vcvt_mf8_f32_fpm(__rev0, __rev1, __p2); | ||
| 41379 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41380 | return __ret; | ||
| 41381 | } | ||
| 41382 | #endif | ||
| 41383 | |||
| 41384 | #ifdef __LITTLE_ENDIAN__ | ||
| 41385 | __ai __attribute__((target("fp8,neon"))) float32x2_t vscale_f32(float32x2_t __p0, int32x2_t __p1) { | ||
| 41386 | float32x2_t __ret; | ||
| 41387 | __ret = (float32x2_t) __builtin_neon_vscale_f32((int8x8_t)__p0, (int8x8_t)__p1, 9); | ||
| 41388 | return __ret; | ||
| 41389 | } | ||
| 41390 | #else | ||
| 41391 | __ai __attribute__((target("fp8,neon"))) float32x2_t vscale_f32(float32x2_t __p0, int32x2_t __p1) { | ||
| 41392 | float32x2_t __ret; | ||
| 41393 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 41394 | int32x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 41395 | __ret = (float32x2_t) __builtin_neon_vscale_f32((int8x8_t)__rev0, (int8x8_t)__rev1, 9); | ||
| 41396 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 41397 | return __ret; | ||
| 41398 | } | ||
| 41399 | #endif | ||
| 41400 | |||
| 41401 | #ifdef __LITTLE_ENDIAN__ | ||
| 41402 | __ai __attribute__((target("fp8,neon"))) float16x4_t vscale_f16(float16x4_t __p0, int16x4_t __p1) { | ||
| 41403 | float16x4_t __ret; | ||
| 41404 | __ret = (float16x4_t) __builtin_neon_vscale_f16((int8x8_t)__p0, (int8x8_t)__p1, 8); | ||
| 41405 | return __ret; | ||
| 41406 | } | ||
| 41407 | #else | ||
| 41408 | __ai __attribute__((target("fp8,neon"))) float16x4_t vscale_f16(float16x4_t __p0, int16x4_t __p1) { | ||
| 41409 | float16x4_t __ret; | ||
| 41410 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41411 | int16x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 41412 | __ret = (float16x4_t) __builtin_neon_vscale_f16((int8x8_t)__rev0, (int8x8_t)__rev1, 8); | ||
| 41413 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41414 | return __ret; | ||
| 41415 | } | ||
| 41416 | #endif | ||
| 41417 | |||
| 41418 | #ifdef __LITTLE_ENDIAN__ | ||
| 41419 | __ai __attribute__((target("fp8,neon"))) float64x2_t vscaleq_f64(float64x2_t __p0, int64x2_t __p1) { | ||
| 41420 | float64x2_t __ret; | ||
| 41421 | __ret = (float64x2_t) __builtin_neon_vscaleq_f64((int8x16_t)__p0, (int8x16_t)__p1, 42); | ||
| 41422 | return __ret; | ||
| 41423 | } | ||
| 41424 | #else | ||
| 41425 | __ai __attribute__((target("fp8,neon"))) float64x2_t vscaleq_f64(float64x2_t __p0, int64x2_t __p1) { | ||
| 41426 | float64x2_t __ret; | ||
| 41427 | float64x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 41428 | int64x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 41429 | __ret = (float64x2_t) __builtin_neon_vscaleq_f64((int8x16_t)__rev0, (int8x16_t)__rev1, 42); | ||
| 41430 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 41431 | return __ret; | ||
| 41432 | } | ||
| 41433 | #endif | ||
| 41434 | |||
| 41435 | #ifdef __LITTLE_ENDIAN__ | ||
| 41436 | __ai __attribute__((target("fp8,neon"))) float32x4_t vscaleq_f32(float32x4_t __p0, int32x4_t __p1) { | ||
| 41437 | float32x4_t __ret; | ||
| 41438 | __ret = (float32x4_t) __builtin_neon_vscaleq_f32((int8x16_t)__p0, (int8x16_t)__p1, 41); | ||
| 41439 | return __ret; | ||
| 41440 | } | ||
| 41441 | #else | ||
| 41442 | __ai __attribute__((target("fp8,neon"))) float32x4_t vscaleq_f32(float32x4_t __p0, int32x4_t __p1) { | ||
| 41443 | float32x4_t __ret; | ||
| 41444 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41445 | int32x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 41446 | __ret = (float32x4_t) __builtin_neon_vscaleq_f32((int8x16_t)__rev0, (int8x16_t)__rev1, 41); | ||
| 41447 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41448 | return __ret; | ||
| 41449 | } | ||
| 41450 | #endif | ||
| 41451 | |||
| 41452 | #ifdef __LITTLE_ENDIAN__ | ||
| 41453 | __ai __attribute__((target("fp8,neon"))) float16x8_t vscaleq_f16(float16x8_t __p0, int16x8_t __p1) { | ||
| 41454 | float16x8_t __ret; | ||
| 41455 | __ret = (float16x8_t) __builtin_neon_vscaleq_f16((int8x16_t)__p0, (int8x16_t)__p1, 40); | ||
| 41456 | return __ret; | ||
| 41457 | } | ||
| 41458 | #else | ||
| 41459 | __ai __attribute__((target("fp8,neon"))) float16x8_t vscaleq_f16(float16x8_t __p0, int16x8_t __p1) { | ||
| 41460 | float16x8_t __ret; | ||
| 41461 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41462 | int16x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41463 | __ret = (float16x8_t) __builtin_neon_vscaleq_f16((int8x16_t)__rev0, (int8x16_t)__rev1, 40); | ||
| 41464 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41465 | return __ret; | ||
| 41466 | } | ||
| 41467 | #endif | ||
| 41468 | |||
| 41469 | #ifdef __LITTLE_ENDIAN__ | ||
| 41470 | __ai __attribute__((target("fp8dot2,neon"))) float16x8_t vdotq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41471 | float16x8_t __ret; | ||
| 41472 | __ret = (float16x8_t) __builtin_neon_vdotq_f16_mf8_fpm((int8x16_t)__p0, __p1, __p2, __p3); | ||
| 41473 | return __ret; | ||
| 41474 | } | ||
| 41475 | #else | ||
| 41476 | __ai __attribute__((target("fp8dot2,neon"))) float16x8_t vdotq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41477 | float16x8_t __ret; | ||
| 41478 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41479 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41480 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41481 | __ret = (float16x8_t) __builtin_neon_vdotq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3); | ||
| 41482 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41483 | return __ret; | ||
| 41484 | } | ||
| 41485 | #endif | ||
| 41486 | |||
| 41487 | #ifdef __LITTLE_ENDIAN__ | ||
| 41488 | __ai __attribute__((target("fp8dot2,neon"))) float16x4_t vdot_f16_mf8_fpm(float16x4_t __p0, mfloat8x8_t __p1, mfloat8x8_t __p2, fpm_t __p3) { | ||
| 41489 | float16x4_t __ret; | ||
| 41490 | __ret = (float16x4_t) __builtin_neon_vdot_f16_mf8_fpm((int8x8_t)__p0, __p1, __p2, __p3); | ||
| 41491 | return __ret; | ||
| 41492 | } | ||
| 41493 | #else | ||
| 41494 | __ai __attribute__((target("fp8dot2,neon"))) float16x4_t vdot_f16_mf8_fpm(float16x4_t __p0, mfloat8x8_t __p1, mfloat8x8_t __p2, fpm_t __p3) { | ||
| 41495 | float16x4_t __ret; | ||
| 41496 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41497 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41498 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41499 | __ret = (float16x4_t) __builtin_neon_vdot_f16_mf8_fpm((int8x8_t)__rev0, __rev1, __rev2, __p3); | ||
| 41500 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41501 | return __ret; | ||
| 41502 | } | ||
| 41503 | #endif | ||
| 41504 | |||
| 41505 | #ifdef __LITTLE_ENDIAN__ | ||
| 41506 | #define vdotq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41507 | float16x8_t __ret; \ | ||
| 41508 | float16x8_t __s0 = __p0; \ | ||
| 41509 | mfloat8x16_t __s1 = __p1; \ | ||
| 41510 | mfloat8x8_t __s2 = __p2; \ | ||
| 41511 | fpm_t __s4 = __p4; \ | ||
| 41512 | __ret = (float16x8_t) __builtin_neon_vdotq_lane_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41513 | __ret; \ | ||
| 41514 | }) | ||
| 41515 | #else | ||
| 41516 | #define vdotq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41517 | float16x8_t __ret; \ | ||
| 41518 | float16x8_t __s0 = __p0; \ | ||
| 41519 | mfloat8x16_t __s1 = __p1; \ | ||
| 41520 | mfloat8x8_t __s2 = __p2; \ | ||
| 41521 | fpm_t __s4 = __p4; \ | ||
| 41522 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41523 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41524 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41525 | __ret = (float16x8_t) __builtin_neon_vdotq_lane_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41526 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41527 | __ret; \ | ||
| 41528 | }) | ||
| 41529 | #endif | ||
| 41530 | |||
| 41531 | #ifdef __LITTLE_ENDIAN__ | ||
| 41532 | #define vdot_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41533 | float16x4_t __ret; \ | ||
| 41534 | float16x4_t __s0 = __p0; \ | ||
| 41535 | mfloat8x8_t __s1 = __p1; \ | ||
| 41536 | mfloat8x8_t __s2 = __p2; \ | ||
| 41537 | fpm_t __s4 = __p4; \ | ||
| 41538 | __ret = (float16x4_t) __builtin_neon_vdot_lane_f16_mf8_fpm((int8x8_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41539 | __ret; \ | ||
| 41540 | }) | ||
| 41541 | #else | ||
| 41542 | #define vdot_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41543 | float16x4_t __ret; \ | ||
| 41544 | float16x4_t __s0 = __p0; \ | ||
| 41545 | mfloat8x8_t __s1 = __p1; \ | ||
| 41546 | mfloat8x8_t __s2 = __p2; \ | ||
| 41547 | fpm_t __s4 = __p4; \ | ||
| 41548 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41549 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41550 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41551 | __ret = (float16x4_t) __builtin_neon_vdot_lane_f16_mf8_fpm((int8x8_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41552 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41553 | __ret; \ | ||
| 41554 | }) | ||
| 41555 | #endif | ||
| 41556 | |||
| 41557 | #ifdef __LITTLE_ENDIAN__ | ||
| 41558 | #define vdotq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41559 | float16x8_t __ret; \ | ||
| 41560 | float16x8_t __s0 = __p0; \ | ||
| 41561 | mfloat8x16_t __s1 = __p1; \ | ||
| 41562 | mfloat8x16_t __s2 = __p2; \ | ||
| 41563 | fpm_t __s4 = __p4; \ | ||
| 41564 | __ret = (float16x8_t) __builtin_neon_vdotq_laneq_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41565 | __ret; \ | ||
| 41566 | }) | ||
| 41567 | #else | ||
| 41568 | #define vdotq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41569 | float16x8_t __ret; \ | ||
| 41570 | float16x8_t __s0 = __p0; \ | ||
| 41571 | mfloat8x16_t __s1 = __p1; \ | ||
| 41572 | mfloat8x16_t __s2 = __p2; \ | ||
| 41573 | fpm_t __s4 = __p4; \ | ||
| 41574 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41575 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41576 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41577 | __ret = (float16x8_t) __builtin_neon_vdotq_laneq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41578 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41579 | __ret; \ | ||
| 41580 | }) | ||
| 41581 | #endif | ||
| 41582 | |||
| 41583 | #ifdef __LITTLE_ENDIAN__ | ||
| 41584 | #define vdot_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41585 | float16x4_t __ret; \ | ||
| 41586 | float16x4_t __s0 = __p0; \ | ||
| 41587 | mfloat8x8_t __s1 = __p1; \ | ||
| 41588 | mfloat8x16_t __s2 = __p2; \ | ||
| 41589 | fpm_t __s4 = __p4; \ | ||
| 41590 | __ret = (float16x4_t) __builtin_neon_vdot_laneq_f16_mf8_fpm((int8x8_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41591 | __ret; \ | ||
| 41592 | }) | ||
| 41593 | #else | ||
| 41594 | #define vdot_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41595 | float16x4_t __ret; \ | ||
| 41596 | float16x4_t __s0 = __p0; \ | ||
| 41597 | mfloat8x8_t __s1 = __p1; \ | ||
| 41598 | mfloat8x16_t __s2 = __p2; \ | ||
| 41599 | fpm_t __s4 = __p4; \ | ||
| 41600 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41601 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41602 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41603 | __ret = (float16x4_t) __builtin_neon_vdot_laneq_f16_mf8_fpm((int8x8_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41604 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41605 | __ret; \ | ||
| 41606 | }) | ||
| 41607 | #endif | ||
| 41608 | |||
| 41609 | #ifdef __LITTLE_ENDIAN__ | ||
| 41610 | __ai __attribute__((target("fp8dot4,neon"))) float32x4_t vdotq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41611 | float32x4_t __ret; | ||
| 41612 | __ret = (float32x4_t) __builtin_neon_vdotq_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 41613 | return __ret; | ||
| 41614 | } | ||
| 41615 | #else | ||
| 41616 | __ai __attribute__((target("fp8dot4,neon"))) float32x4_t vdotq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41617 | float32x4_t __ret; | ||
| 41618 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41619 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41620 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41621 | __ret = (float32x4_t) __builtin_neon_vdotq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41622 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41623 | return __ret; | ||
| 41624 | } | ||
| 41625 | #endif | ||
| 41626 | |||
| 41627 | #ifdef __LITTLE_ENDIAN__ | ||
| 41628 | __ai __attribute__((target("fp8dot4,neon"))) float32x2_t vdot_f32_mf8_fpm(float32x2_t __p0, mfloat8x8_t __p1, mfloat8x8_t __p2, fpm_t __p3) { | ||
| 41629 | float32x2_t __ret; | ||
| 41630 | __ret = (float32x2_t) __builtin_neon_vdot_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 41631 | return __ret; | ||
| 41632 | } | ||
| 41633 | #else | ||
| 41634 | __ai __attribute__((target("fp8dot4,neon"))) float32x2_t vdot_f32_mf8_fpm(float32x2_t __p0, mfloat8x8_t __p1, mfloat8x8_t __p2, fpm_t __p3) { | ||
| 41635 | float32x2_t __ret; | ||
| 41636 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 41637 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41638 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41639 | __ret = (float32x2_t) __builtin_neon_vdot_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41640 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 41641 | return __ret; | ||
| 41642 | } | ||
| 41643 | #endif | ||
| 41644 | |||
| 41645 | #ifdef __LITTLE_ENDIAN__ | ||
| 41646 | #define vdotq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41647 | float32x4_t __ret; \ | ||
| 41648 | float32x4_t __s0 = __p0; \ | ||
| 41649 | mfloat8x16_t __s1 = __p1; \ | ||
| 41650 | mfloat8x8_t __s2 = __p2; \ | ||
| 41651 | fpm_t __s4 = __p4; \ | ||
| 41652 | __ret = (float32x4_t) __builtin_neon_vdotq_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41653 | __ret; \ | ||
| 41654 | }) | ||
| 41655 | #else | ||
| 41656 | #define vdotq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41657 | float32x4_t __ret; \ | ||
| 41658 | float32x4_t __s0 = __p0; \ | ||
| 41659 | mfloat8x16_t __s1 = __p1; \ | ||
| 41660 | mfloat8x8_t __s2 = __p2; \ | ||
| 41661 | fpm_t __s4 = __p4; \ | ||
| 41662 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41663 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41664 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41665 | __ret = (float32x4_t) __builtin_neon_vdotq_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41666 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41667 | __ret; \ | ||
| 41668 | }) | ||
| 41669 | #endif | ||
| 41670 | |||
| 41671 | #ifdef __LITTLE_ENDIAN__ | ||
| 41672 | #define vdot_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41673 | float32x2_t __ret; \ | ||
| 41674 | float32x2_t __s0 = __p0; \ | ||
| 41675 | mfloat8x8_t __s1 = __p1; \ | ||
| 41676 | mfloat8x8_t __s2 = __p2; \ | ||
| 41677 | fpm_t __s4 = __p4; \ | ||
| 41678 | __ret = (float32x2_t) __builtin_neon_vdot_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41679 | __ret; \ | ||
| 41680 | }) | ||
| 41681 | #else | ||
| 41682 | #define vdot_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41683 | float32x2_t __ret; \ | ||
| 41684 | float32x2_t __s0 = __p0; \ | ||
| 41685 | mfloat8x8_t __s1 = __p1; \ | ||
| 41686 | mfloat8x8_t __s2 = __p2; \ | ||
| 41687 | fpm_t __s4 = __p4; \ | ||
| 41688 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 1, 0); \ | ||
| 41689 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41690 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41691 | __ret = (float32x2_t) __builtin_neon_vdot_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41692 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); \ | ||
| 41693 | __ret; \ | ||
| 41694 | }) | ||
| 41695 | #endif | ||
| 41696 | |||
| 41697 | #ifdef __LITTLE_ENDIAN__ | ||
| 41698 | #define vdotq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41699 | float32x4_t __ret; \ | ||
| 41700 | float32x4_t __s0 = __p0; \ | ||
| 41701 | mfloat8x16_t __s1 = __p1; \ | ||
| 41702 | mfloat8x16_t __s2 = __p2; \ | ||
| 41703 | fpm_t __s4 = __p4; \ | ||
| 41704 | __ret = (float32x4_t) __builtin_neon_vdotq_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41705 | __ret; \ | ||
| 41706 | }) | ||
| 41707 | #else | ||
| 41708 | #define vdotq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41709 | float32x4_t __ret; \ | ||
| 41710 | float32x4_t __s0 = __p0; \ | ||
| 41711 | mfloat8x16_t __s1 = __p1; \ | ||
| 41712 | mfloat8x16_t __s2 = __p2; \ | ||
| 41713 | fpm_t __s4 = __p4; \ | ||
| 41714 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41715 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41716 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41717 | __ret = (float32x4_t) __builtin_neon_vdotq_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41718 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41719 | __ret; \ | ||
| 41720 | }) | ||
| 41721 | #endif | ||
| 41722 | |||
| 41723 | #ifdef __LITTLE_ENDIAN__ | ||
| 41724 | #define vdot_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41725 | float32x2_t __ret; \ | ||
| 41726 | float32x2_t __s0 = __p0; \ | ||
| 41727 | mfloat8x8_t __s1 = __p1; \ | ||
| 41728 | mfloat8x16_t __s2 = __p2; \ | ||
| 41729 | fpm_t __s4 = __p4; \ | ||
| 41730 | __ret = (float32x2_t) __builtin_neon_vdot_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41731 | __ret; \ | ||
| 41732 | }) | ||
| 41733 | #else | ||
| 41734 | #define vdot_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41735 | float32x2_t __ret; \ | ||
| 41736 | float32x2_t __s0 = __p0; \ | ||
| 41737 | mfloat8x8_t __s1 = __p1; \ | ||
| 41738 | mfloat8x16_t __s2 = __p2; \ | ||
| 41739 | fpm_t __s4 = __p4; \ | ||
| 41740 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 1, 0); \ | ||
| 41741 | mfloat8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41742 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41743 | __ret = (float32x2_t) __builtin_neon_vdot_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41744 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); \ | ||
| 41745 | __ret; \ | ||
| 41746 | }) | ||
| 41747 | #endif | ||
| 41748 | |||
| 41749 | #ifdef __LITTLE_ENDIAN__ | ||
| 41750 | __ai __attribute__((target("fp8fma,neon"))) float16x8_t vmlalbq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41751 | float16x8_t __ret; | ||
| 41752 | __ret = (float16x8_t) __builtin_neon_vmlalbq_f16_mf8_fpm((int8x16_t)__p0, __p1, __p2, __p3); | ||
| 41753 | return __ret; | ||
| 41754 | } | ||
| 41755 | #else | ||
| 41756 | __ai __attribute__((target("fp8fma,neon"))) float16x8_t vmlalbq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41757 | float16x8_t __ret; | ||
| 41758 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41759 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41760 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41761 | __ret = (float16x8_t) __builtin_neon_vmlalbq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3); | ||
| 41762 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41763 | return __ret; | ||
| 41764 | } | ||
| 41765 | #endif | ||
| 41766 | |||
| 41767 | #ifdef __LITTLE_ENDIAN__ | ||
| 41768 | #define vmlalbq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41769 | float16x8_t __ret; \ | ||
| 41770 | float16x8_t __s0 = __p0; \ | ||
| 41771 | mfloat8x16_t __s1 = __p1; \ | ||
| 41772 | mfloat8x8_t __s2 = __p2; \ | ||
| 41773 | fpm_t __s4 = __p4; \ | ||
| 41774 | __ret = (float16x8_t) __builtin_neon_vmlalbq_lane_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41775 | __ret; \ | ||
| 41776 | }) | ||
| 41777 | #else | ||
| 41778 | #define vmlalbq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41779 | float16x8_t __ret; \ | ||
| 41780 | float16x8_t __s0 = __p0; \ | ||
| 41781 | mfloat8x16_t __s1 = __p1; \ | ||
| 41782 | mfloat8x8_t __s2 = __p2; \ | ||
| 41783 | fpm_t __s4 = __p4; \ | ||
| 41784 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41785 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41786 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41787 | __ret = (float16x8_t) __builtin_neon_vmlalbq_lane_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41788 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41789 | __ret; \ | ||
| 41790 | }) | ||
| 41791 | #endif | ||
| 41792 | |||
| 41793 | #ifdef __LITTLE_ENDIAN__ | ||
| 41794 | #define vmlalbq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41795 | float16x8_t __ret; \ | ||
| 41796 | float16x8_t __s0 = __p0; \ | ||
| 41797 | mfloat8x16_t __s1 = __p1; \ | ||
| 41798 | mfloat8x16_t __s2 = __p2; \ | ||
| 41799 | fpm_t __s4 = __p4; \ | ||
| 41800 | __ret = (float16x8_t) __builtin_neon_vmlalbq_laneq_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 41801 | __ret; \ | ||
| 41802 | }) | ||
| 41803 | #else | ||
| 41804 | #define vmlalbq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41805 | float16x8_t __ret; \ | ||
| 41806 | float16x8_t __s0 = __p0; \ | ||
| 41807 | mfloat8x16_t __s1 = __p1; \ | ||
| 41808 | mfloat8x16_t __s2 = __p2; \ | ||
| 41809 | fpm_t __s4 = __p4; \ | ||
| 41810 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41811 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41812 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41813 | __ret = (float16x8_t) __builtin_neon_vmlalbq_laneq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41814 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41815 | __ret; \ | ||
| 41816 | }) | ||
| 41817 | #endif | ||
| 41818 | |||
| 41819 | #ifdef __LITTLE_ENDIAN__ | ||
| 41820 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallbbq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41821 | float32x4_t __ret; | ||
| 41822 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 41823 | return __ret; | ||
| 41824 | } | ||
| 41825 | #else | ||
| 41826 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallbbq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41827 | float32x4_t __ret; | ||
| 41828 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41829 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41830 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41831 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41832 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41833 | return __ret; | ||
| 41834 | } | ||
| 41835 | #endif | ||
| 41836 | |||
| 41837 | #ifdef __LITTLE_ENDIAN__ | ||
| 41838 | #define vmlallbbq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41839 | float32x4_t __ret; \ | ||
| 41840 | float32x4_t __s0 = __p0; \ | ||
| 41841 | mfloat8x16_t __s1 = __p1; \ | ||
| 41842 | mfloat8x8_t __s2 = __p2; \ | ||
| 41843 | fpm_t __s4 = __p4; \ | ||
| 41844 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41845 | __ret; \ | ||
| 41846 | }) | ||
| 41847 | #else | ||
| 41848 | #define vmlallbbq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41849 | float32x4_t __ret; \ | ||
| 41850 | float32x4_t __s0 = __p0; \ | ||
| 41851 | mfloat8x16_t __s1 = __p1; \ | ||
| 41852 | mfloat8x8_t __s2 = __p2; \ | ||
| 41853 | fpm_t __s4 = __p4; \ | ||
| 41854 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41855 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41856 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41857 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41858 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41859 | __ret; \ | ||
| 41860 | }) | ||
| 41861 | #endif | ||
| 41862 | |||
| 41863 | #ifdef __LITTLE_ENDIAN__ | ||
| 41864 | #define vmlallbbq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41865 | float32x4_t __ret; \ | ||
| 41866 | float32x4_t __s0 = __p0; \ | ||
| 41867 | mfloat8x16_t __s1 = __p1; \ | ||
| 41868 | mfloat8x16_t __s2 = __p2; \ | ||
| 41869 | fpm_t __s4 = __p4; \ | ||
| 41870 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41871 | __ret; \ | ||
| 41872 | }) | ||
| 41873 | #else | ||
| 41874 | #define vmlallbbq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41875 | float32x4_t __ret; \ | ||
| 41876 | float32x4_t __s0 = __p0; \ | ||
| 41877 | mfloat8x16_t __s1 = __p1; \ | ||
| 41878 | mfloat8x16_t __s2 = __p2; \ | ||
| 41879 | fpm_t __s4 = __p4; \ | ||
| 41880 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41881 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41882 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41883 | __ret = (float32x4_t) __builtin_neon_vmlallbbq_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41884 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41885 | __ret; \ | ||
| 41886 | }) | ||
| 41887 | #endif | ||
| 41888 | |||
| 41889 | #ifdef __LITTLE_ENDIAN__ | ||
| 41890 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallbtq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41891 | float32x4_t __ret; | ||
| 41892 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 41893 | return __ret; | ||
| 41894 | } | ||
| 41895 | #else | ||
| 41896 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallbtq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41897 | float32x4_t __ret; | ||
| 41898 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41899 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41900 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41901 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41902 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41903 | return __ret; | ||
| 41904 | } | ||
| 41905 | #endif | ||
| 41906 | |||
| 41907 | #ifdef __LITTLE_ENDIAN__ | ||
| 41908 | #define vmlallbtq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41909 | float32x4_t __ret; \ | ||
| 41910 | float32x4_t __s0 = __p0; \ | ||
| 41911 | mfloat8x16_t __s1 = __p1; \ | ||
| 41912 | mfloat8x8_t __s2 = __p2; \ | ||
| 41913 | fpm_t __s4 = __p4; \ | ||
| 41914 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41915 | __ret; \ | ||
| 41916 | }) | ||
| 41917 | #else | ||
| 41918 | #define vmlallbtq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41919 | float32x4_t __ret; \ | ||
| 41920 | float32x4_t __s0 = __p0; \ | ||
| 41921 | mfloat8x16_t __s1 = __p1; \ | ||
| 41922 | mfloat8x8_t __s2 = __p2; \ | ||
| 41923 | fpm_t __s4 = __p4; \ | ||
| 41924 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41925 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41926 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41927 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41928 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41929 | __ret; \ | ||
| 41930 | }) | ||
| 41931 | #endif | ||
| 41932 | |||
| 41933 | #ifdef __LITTLE_ENDIAN__ | ||
| 41934 | #define vmlallbtq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41935 | float32x4_t __ret; \ | ||
| 41936 | float32x4_t __s0 = __p0; \ | ||
| 41937 | mfloat8x16_t __s1 = __p1; \ | ||
| 41938 | mfloat8x16_t __s2 = __p2; \ | ||
| 41939 | fpm_t __s4 = __p4; \ | ||
| 41940 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41941 | __ret; \ | ||
| 41942 | }) | ||
| 41943 | #else | ||
| 41944 | #define vmlallbtq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41945 | float32x4_t __ret; \ | ||
| 41946 | float32x4_t __s0 = __p0; \ | ||
| 41947 | mfloat8x16_t __s1 = __p1; \ | ||
| 41948 | mfloat8x16_t __s2 = __p2; \ | ||
| 41949 | fpm_t __s4 = __p4; \ | ||
| 41950 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41951 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41952 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41953 | __ret = (float32x4_t) __builtin_neon_vmlallbtq_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41954 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41955 | __ret; \ | ||
| 41956 | }) | ||
| 41957 | #endif | ||
| 41958 | |||
| 41959 | #ifdef __LITTLE_ENDIAN__ | ||
| 41960 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlalltbq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41961 | float32x4_t __ret; | ||
| 41962 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 41963 | return __ret; | ||
| 41964 | } | ||
| 41965 | #else | ||
| 41966 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlalltbq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 41967 | float32x4_t __ret; | ||
| 41968 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 41969 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41970 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 41971 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 41972 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 41973 | return __ret; | ||
| 41974 | } | ||
| 41975 | #endif | ||
| 41976 | |||
| 41977 | #ifdef __LITTLE_ENDIAN__ | ||
| 41978 | #define vmlalltbq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41979 | float32x4_t __ret; \ | ||
| 41980 | float32x4_t __s0 = __p0; \ | ||
| 41981 | mfloat8x16_t __s1 = __p1; \ | ||
| 41982 | mfloat8x8_t __s2 = __p2; \ | ||
| 41983 | fpm_t __s4 = __p4; \ | ||
| 41984 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 41985 | __ret; \ | ||
| 41986 | }) | ||
| 41987 | #else | ||
| 41988 | #define vmlalltbq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 41989 | float32x4_t __ret; \ | ||
| 41990 | float32x4_t __s0 = __p0; \ | ||
| 41991 | mfloat8x16_t __s1 = __p1; \ | ||
| 41992 | mfloat8x8_t __s2 = __p2; \ | ||
| 41993 | fpm_t __s4 = __p4; \ | ||
| 41994 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 41995 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41996 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 41997 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 41998 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 41999 | __ret; \ | ||
| 42000 | }) | ||
| 42001 | #endif | ||
| 42002 | |||
| 42003 | #ifdef __LITTLE_ENDIAN__ | ||
| 42004 | #define vmlalltbq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42005 | float32x4_t __ret; \ | ||
| 42006 | float32x4_t __s0 = __p0; \ | ||
| 42007 | mfloat8x16_t __s1 = __p1; \ | ||
| 42008 | mfloat8x16_t __s2 = __p2; \ | ||
| 42009 | fpm_t __s4 = __p4; \ | ||
| 42010 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 42011 | __ret; \ | ||
| 42012 | }) | ||
| 42013 | #else | ||
| 42014 | #define vmlalltbq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42015 | float32x4_t __ret; \ | ||
| 42016 | float32x4_t __s0 = __p0; \ | ||
| 42017 | mfloat8x16_t __s1 = __p1; \ | ||
| 42018 | mfloat8x16_t __s2 = __p2; \ | ||
| 42019 | fpm_t __s4 = __p4; \ | ||
| 42020 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42021 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42022 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42023 | __ret = (float32x4_t) __builtin_neon_vmlalltbq_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 42024 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 42025 | __ret; \ | ||
| 42026 | }) | ||
| 42027 | #endif | ||
| 42028 | |||
| 42029 | #ifdef __LITTLE_ENDIAN__ | ||
| 42030 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallttq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 42031 | float32x4_t __ret; | ||
| 42032 | __ret = (float32x4_t) __builtin_neon_vmlallttq_f32_mf8_fpm(__p0, __p1, __p2, __p3); | ||
| 42033 | return __ret; | ||
| 42034 | } | ||
| 42035 | #else | ||
| 42036 | __ai __attribute__((target("fp8fma,neon"))) float32x4_t vmlallttq_f32_mf8_fpm(float32x4_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 42037 | float32x4_t __ret; | ||
| 42038 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 42039 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42040 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42041 | __ret = (float32x4_t) __builtin_neon_vmlallttq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3); | ||
| 42042 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 42043 | return __ret; | ||
| 42044 | } | ||
| 42045 | #endif | ||
| 42046 | |||
| 42047 | #ifdef __LITTLE_ENDIAN__ | ||
| 42048 | #define vmlallttq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42049 | float32x4_t __ret; \ | ||
| 42050 | float32x4_t __s0 = __p0; \ | ||
| 42051 | mfloat8x16_t __s1 = __p1; \ | ||
| 42052 | mfloat8x8_t __s2 = __p2; \ | ||
| 42053 | fpm_t __s4 = __p4; \ | ||
| 42054 | __ret = (float32x4_t) __builtin_neon_vmlallttq_lane_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 42055 | __ret; \ | ||
| 42056 | }) | ||
| 42057 | #else | ||
| 42058 | #define vmlallttq_lane_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42059 | float32x4_t __ret; \ | ||
| 42060 | float32x4_t __s0 = __p0; \ | ||
| 42061 | mfloat8x16_t __s1 = __p1; \ | ||
| 42062 | mfloat8x8_t __s2 = __p2; \ | ||
| 42063 | fpm_t __s4 = __p4; \ | ||
| 42064 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42065 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42066 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42067 | __ret = (float32x4_t) __builtin_neon_vmlallttq_lane_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 42068 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 42069 | __ret; \ | ||
| 42070 | }) | ||
| 42071 | #endif | ||
| 42072 | |||
| 42073 | #ifdef __LITTLE_ENDIAN__ | ||
| 42074 | #define vmlallttq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42075 | float32x4_t __ret; \ | ||
| 42076 | float32x4_t __s0 = __p0; \ | ||
| 42077 | mfloat8x16_t __s1 = __p1; \ | ||
| 42078 | mfloat8x16_t __s2 = __p2; \ | ||
| 42079 | fpm_t __s4 = __p4; \ | ||
| 42080 | __ret = (float32x4_t) __builtin_neon_vmlallttq_laneq_f32_mf8_fpm(__s0, __s1, __s2, __p3, __s4); \ | ||
| 42081 | __ret; \ | ||
| 42082 | }) | ||
| 42083 | #else | ||
| 42084 | #define vmlallttq_laneq_f32_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42085 | float32x4_t __ret; \ | ||
| 42086 | float32x4_t __s0 = __p0; \ | ||
| 42087 | mfloat8x16_t __s1 = __p1; \ | ||
| 42088 | mfloat8x16_t __s2 = __p2; \ | ||
| 42089 | fpm_t __s4 = __p4; \ | ||
| 42090 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42091 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42092 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42093 | __ret = (float32x4_t) __builtin_neon_vmlallttq_laneq_f32_mf8_fpm(__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 42094 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); \ | ||
| 42095 | __ret; \ | ||
| 42096 | }) | ||
| 42097 | #endif | ||
| 42098 | |||
| 42099 | #ifdef __LITTLE_ENDIAN__ | ||
| 42100 | __ai __attribute__((target("fp8fma,neon"))) float16x8_t vmlaltq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 42101 | float16x8_t __ret; | ||
| 42102 | __ret = (float16x8_t) __builtin_neon_vmlaltq_f16_mf8_fpm((int8x16_t)__p0, __p1, __p2, __p3); | ||
| 42103 | return __ret; | ||
| 42104 | } | ||
| 42105 | #else | ||
| 42106 | __ai __attribute__((target("fp8fma,neon"))) float16x8_t vmlaltq_f16_mf8_fpm(float16x8_t __p0, mfloat8x16_t __p1, mfloat8x16_t __p2, fpm_t __p3) { | ||
| 42107 | float16x8_t __ret; | ||
| 42108 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42109 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42110 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__p2, __p2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42111 | __ret = (float16x8_t) __builtin_neon_vmlaltq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3); | ||
| 42112 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 42113 | return __ret; | ||
| 42114 | } | ||
| 42115 | #endif | ||
| 42116 | |||
| 42117 | #ifdef __LITTLE_ENDIAN__ | ||
| 42118 | #define vmlaltq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42119 | float16x8_t __ret; \ | ||
| 42120 | float16x8_t __s0 = __p0; \ | ||
| 42121 | mfloat8x16_t __s1 = __p1; \ | ||
| 42122 | mfloat8x8_t __s2 = __p2; \ | ||
| 42123 | fpm_t __s4 = __p4; \ | ||
| 42124 | __ret = (float16x8_t) __builtin_neon_vmlaltq_lane_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 42125 | __ret; \ | ||
| 42126 | }) | ||
| 42127 | #else | ||
| 42128 | #define vmlaltq_lane_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42129 | float16x8_t __ret; \ | ||
| 42130 | float16x8_t __s0 = __p0; \ | ||
| 42131 | mfloat8x16_t __s1 = __p1; \ | ||
| 42132 | mfloat8x8_t __s2 = __p2; \ | ||
| 42133 | fpm_t __s4 = __p4; \ | ||
| 42134 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42135 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42136 | mfloat8x8_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42137 | __ret = (float16x8_t) __builtin_neon_vmlaltq_lane_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 42138 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42139 | __ret; \ | ||
| 42140 | }) | ||
| 42141 | #endif | ||
| 42142 | |||
| 42143 | #ifdef __LITTLE_ENDIAN__ | ||
| 42144 | #define vmlaltq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42145 | float16x8_t __ret; \ | ||
| 42146 | float16x8_t __s0 = __p0; \ | ||
| 42147 | mfloat8x16_t __s1 = __p1; \ | ||
| 42148 | mfloat8x16_t __s2 = __p2; \ | ||
| 42149 | fpm_t __s4 = __p4; \ | ||
| 42150 | __ret = (float16x8_t) __builtin_neon_vmlaltq_laneq_f16_mf8_fpm((int8x16_t)__s0, __s1, __s2, __p3, __s4); \ | ||
| 42151 | __ret; \ | ||
| 42152 | }) | ||
| 42153 | #else | ||
| 42154 | #define vmlaltq_laneq_f16_mf8_fpm(__p0, __p1, __p2, __p3, __p4) __extension__ ({ \ | ||
| 42155 | float16x8_t __ret; \ | ||
| 42156 | float16x8_t __s0 = __p0; \ | ||
| 42157 | mfloat8x16_t __s1 = __p1; \ | ||
| 42158 | mfloat8x16_t __s2 = __p2; \ | ||
| 42159 | fpm_t __s4 = __p4; \ | ||
| 42160 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42161 | mfloat8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42162 | mfloat8x16_t __rev2; __rev2 = __builtin_shufflevector(__s2, __s2, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42163 | __ret = (float16x8_t) __builtin_neon_vmlaltq_laneq_f16_mf8_fpm((int8x16_t)__rev0, __rev1, __rev2, __p3, __s4); \ | ||
| 42164 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42165 | __ret; \ | ||
| 42166 | }) | ||
| 42167 | #endif | ||
| 42168 | |||
| 42169 | #ifdef __LITTLE_ENDIAN__ | ||
| 42170 | #define vluti2_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42171 | poly8x16_t __ret; \ | ||
| 42172 | poly8x8_t __s0 = __p0; \ | ||
| 42173 | uint8x8_t __s1 = __p1; \ | ||
| 42174 | __ret = (poly8x16_t) __builtin_neon_vluti2_lane_p8((int8x8_t)__s0, (int8x8_t)__s1, __p2, 36); \ | ||
| 42175 | __ret; \ | ||
| 42176 | }) | ||
| 42177 | #else | ||
| 42178 | #define vluti2_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42179 | poly8x16_t __ret; \ | ||
| 42180 | poly8x8_t __s0 = __p0; \ | ||
| 42181 | uint8x8_t __s1 = __p1; \ | ||
| 42182 | poly8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42183 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42184 | __ret = (poly8x16_t) __builtin_neon_vluti2_lane_p8((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 36); \ | ||
| 42185 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42186 | __ret; \ | ||
| 42187 | }) | ||
| 42188 | #endif | ||
| 42189 | |||
| 42190 | #ifdef __LITTLE_ENDIAN__ | ||
| 42191 | #define vluti2q_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42192 | poly8x16_t __ret; \ | ||
| 42193 | poly8x16_t __s0 = __p0; \ | ||
| 42194 | uint8x8_t __s1 = __p1; \ | ||
| 42195 | __ret = (poly8x16_t) __builtin_neon_vluti2q_lane_p8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 36); \ | ||
| 42196 | __ret; \ | ||
| 42197 | }) | ||
| 42198 | #else | ||
| 42199 | #define vluti2q_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42200 | poly8x16_t __ret; \ | ||
| 42201 | poly8x16_t __s0 = __p0; \ | ||
| 42202 | uint8x8_t __s1 = __p1; \ | ||
| 42203 | poly8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42204 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42205 | __ret = (poly8x16_t) __builtin_neon_vluti2q_lane_p8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 36); \ | ||
| 42206 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42207 | __ret; \ | ||
| 42208 | }) | ||
| 42209 | #endif | ||
| 42210 | |||
| 42211 | #ifdef __LITTLE_ENDIAN__ | ||
| 42212 | #define vluti2q_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42213 | uint8x16_t __ret; \ | ||
| 42214 | uint8x16_t __s0 = __p0; \ | ||
| 42215 | uint8x8_t __s1 = __p1; \ | ||
| 42216 | __ret = (uint8x16_t) __builtin_neon_vluti2q_lane_u8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 48); \ | ||
| 42217 | __ret; \ | ||
| 42218 | }) | ||
| 42219 | #else | ||
| 42220 | #define vluti2q_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42221 | uint8x16_t __ret; \ | ||
| 42222 | uint8x16_t __s0 = __p0; \ | ||
| 42223 | uint8x8_t __s1 = __p1; \ | ||
| 42224 | uint8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42225 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42226 | __ret = (uint8x16_t) __builtin_neon_vluti2q_lane_u8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 48); \ | ||
| 42227 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42228 | __ret; \ | ||
| 42229 | }) | ||
| 42230 | #endif | ||
| 42231 | |||
| 42232 | #ifdef __LITTLE_ENDIAN__ | ||
| 42233 | #define vluti2q_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42234 | int8x16_t __ret; \ | ||
| 42235 | int8x16_t __s0 = __p0; \ | ||
| 42236 | uint8x8_t __s1 = __p1; \ | ||
| 42237 | __ret = (int8x16_t) __builtin_neon_vluti2q_lane_s8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 32); \ | ||
| 42238 | __ret; \ | ||
| 42239 | }) | ||
| 42240 | #else | ||
| 42241 | #define vluti2q_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42242 | int8x16_t __ret; \ | ||
| 42243 | int8x16_t __s0 = __p0; \ | ||
| 42244 | uint8x8_t __s1 = __p1; \ | ||
| 42245 | int8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42246 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42247 | __ret = (int8x16_t) __builtin_neon_vluti2q_lane_s8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 32); \ | ||
| 42248 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42249 | __ret; \ | ||
| 42250 | }) | ||
| 42251 | #endif | ||
| 42252 | |||
| 42253 | #ifdef __LITTLE_ENDIAN__ | ||
| 42254 | #define vluti2_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42255 | uint8x16_t __ret; \ | ||
| 42256 | uint8x8_t __s0 = __p0; \ | ||
| 42257 | uint8x8_t __s1 = __p1; \ | ||
| 42258 | __ret = (uint8x16_t) __builtin_neon_vluti2_lane_u8((int8x8_t)__s0, (int8x8_t)__s1, __p2, 48); \ | ||
| 42259 | __ret; \ | ||
| 42260 | }) | ||
| 42261 | #else | ||
| 42262 | #define vluti2_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42263 | uint8x16_t __ret; \ | ||
| 42264 | uint8x8_t __s0 = __p0; \ | ||
| 42265 | uint8x8_t __s1 = __p1; \ | ||
| 42266 | uint8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42267 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42268 | __ret = (uint8x16_t) __builtin_neon_vluti2_lane_u8((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 48); \ | ||
| 42269 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42270 | __ret; \ | ||
| 42271 | }) | ||
| 42272 | #endif | ||
| 42273 | |||
| 42274 | #ifdef __LITTLE_ENDIAN__ | ||
| 42275 | #define vluti2_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42276 | int8x16_t __ret; \ | ||
| 42277 | int8x8_t __s0 = __p0; \ | ||
| 42278 | uint8x8_t __s1 = __p1; \ | ||
| 42279 | __ret = (int8x16_t) __builtin_neon_vluti2_lane_s8((int8x8_t)__s0, (int8x8_t)__s1, __p2, 32); \ | ||
| 42280 | __ret; \ | ||
| 42281 | }) | ||
| 42282 | #else | ||
| 42283 | #define vluti2_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42284 | int8x16_t __ret; \ | ||
| 42285 | int8x8_t __s0 = __p0; \ | ||
| 42286 | uint8x8_t __s1 = __p1; \ | ||
| 42287 | int8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42288 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42289 | __ret = (int8x16_t) __builtin_neon_vluti2_lane_s8((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 32); \ | ||
| 42290 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42291 | __ret; \ | ||
| 42292 | }) | ||
| 42293 | #endif | ||
| 42294 | |||
| 42295 | #ifdef __LITTLE_ENDIAN__ | ||
| 42296 | #define vluti2_lane_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42297 | poly16x8_t __ret; \ | ||
| 42298 | poly16x4_t __s0 = __p0; \ | ||
| 42299 | uint8x8_t __s1 = __p1; \ | ||
| 42300 | __ret = (poly16x8_t) __builtin_neon_vluti2_lane_p16((int8x8_t)__s0, (int8x8_t)__s1, __p2, 37); \ | ||
| 42301 | __ret; \ | ||
| 42302 | }) | ||
| 42303 | #else | ||
| 42304 | #define vluti2_lane_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42305 | poly16x8_t __ret; \ | ||
| 42306 | poly16x4_t __s0 = __p0; \ | ||
| 42307 | uint8x8_t __s1 = __p1; \ | ||
| 42308 | poly16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42309 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42310 | __ret = (poly16x8_t) __builtin_neon_vluti2_lane_p16((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 37); \ | ||
| 42311 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42312 | __ret; \ | ||
| 42313 | }) | ||
| 42314 | #endif | ||
| 42315 | |||
| 42316 | #ifdef __LITTLE_ENDIAN__ | ||
| 42317 | #define vluti2q_lane_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42318 | poly16x8_t __ret; \ | ||
| 42319 | poly16x8_t __s0 = __p0; \ | ||
| 42320 | uint8x8_t __s1 = __p1; \ | ||
| 42321 | __ret = (poly16x8_t) __builtin_neon_vluti2q_lane_p16((int8x16_t)__s0, (int8x8_t)__s1, __p2, 37); \ | ||
| 42322 | __ret; \ | ||
| 42323 | }) | ||
| 42324 | #else | ||
| 42325 | #define vluti2q_lane_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42326 | poly16x8_t __ret; \ | ||
| 42327 | poly16x8_t __s0 = __p0; \ | ||
| 42328 | uint8x8_t __s1 = __p1; \ | ||
| 42329 | poly16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42330 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42331 | __ret = (poly16x8_t) __builtin_neon_vluti2q_lane_p16((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 37); \ | ||
| 42332 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42333 | __ret; \ | ||
| 42334 | }) | ||
| 42335 | #endif | ||
| 42336 | |||
| 42337 | #ifdef __LITTLE_ENDIAN__ | ||
| 42338 | #define vluti2q_lane_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42339 | uint16x8_t __ret; \ | ||
| 42340 | uint16x8_t __s0 = __p0; \ | ||
| 42341 | uint8x8_t __s1 = __p1; \ | ||
| 42342 | __ret = (uint16x8_t) __builtin_neon_vluti2q_lane_u16((int8x16_t)__s0, (int8x8_t)__s1, __p2, 49); \ | ||
| 42343 | __ret; \ | ||
| 42344 | }) | ||
| 42345 | #else | ||
| 42346 | #define vluti2q_lane_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42347 | uint16x8_t __ret; \ | ||
| 42348 | uint16x8_t __s0 = __p0; \ | ||
| 42349 | uint8x8_t __s1 = __p1; \ | ||
| 42350 | uint16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42351 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42352 | __ret = (uint16x8_t) __builtin_neon_vluti2q_lane_u16((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 49); \ | ||
| 42353 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42354 | __ret; \ | ||
| 42355 | }) | ||
| 42356 | #endif | ||
| 42357 | |||
| 42358 | #ifdef __LITTLE_ENDIAN__ | ||
| 42359 | #define vluti2q_lane_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42360 | float16x8_t __ret; \ | ||
| 42361 | float16x8_t __s0 = __p0; \ | ||
| 42362 | uint8x8_t __s1 = __p1; \ | ||
| 42363 | __ret = (float16x8_t) __builtin_neon_vluti2q_lane_f16((int8x16_t)__s0, (int8x8_t)__s1, __p2, 40); \ | ||
| 42364 | __ret; \ | ||
| 42365 | }) | ||
| 42366 | #else | ||
| 42367 | #define vluti2q_lane_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42368 | float16x8_t __ret; \ | ||
| 42369 | float16x8_t __s0 = __p0; \ | ||
| 42370 | uint8x8_t __s1 = __p1; \ | ||
| 42371 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42372 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42373 | __ret = (float16x8_t) __builtin_neon_vluti2q_lane_f16((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 40); \ | ||
| 42374 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42375 | __ret; \ | ||
| 42376 | }) | ||
| 42377 | #endif | ||
| 42378 | |||
| 42379 | #ifdef __LITTLE_ENDIAN__ | ||
| 42380 | #define vluti2q_lane_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42381 | int16x8_t __ret; \ | ||
| 42382 | int16x8_t __s0 = __p0; \ | ||
| 42383 | uint8x8_t __s1 = __p1; \ | ||
| 42384 | __ret = (int16x8_t) __builtin_neon_vluti2q_lane_s16((int8x16_t)__s0, (int8x8_t)__s1, __p2, 33); \ | ||
| 42385 | __ret; \ | ||
| 42386 | }) | ||
| 42387 | #else | ||
| 42388 | #define vluti2q_lane_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42389 | int16x8_t __ret; \ | ||
| 42390 | int16x8_t __s0 = __p0; \ | ||
| 42391 | uint8x8_t __s1 = __p1; \ | ||
| 42392 | int16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42393 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42394 | __ret = (int16x8_t) __builtin_neon_vluti2q_lane_s16((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 33); \ | ||
| 42395 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42396 | __ret; \ | ||
| 42397 | }) | ||
| 42398 | #endif | ||
| 42399 | |||
| 42400 | #ifdef __LITTLE_ENDIAN__ | ||
| 42401 | #define vluti2_lane_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42402 | uint16x8_t __ret; \ | ||
| 42403 | uint16x4_t __s0 = __p0; \ | ||
| 42404 | uint8x8_t __s1 = __p1; \ | ||
| 42405 | __ret = (uint16x8_t) __builtin_neon_vluti2_lane_u16((int8x8_t)__s0, (int8x8_t)__s1, __p2, 49); \ | ||
| 42406 | __ret; \ | ||
| 42407 | }) | ||
| 42408 | #else | ||
| 42409 | #define vluti2_lane_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42410 | uint16x8_t __ret; \ | ||
| 42411 | uint16x4_t __s0 = __p0; \ | ||
| 42412 | uint8x8_t __s1 = __p1; \ | ||
| 42413 | uint16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42414 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42415 | __ret = (uint16x8_t) __builtin_neon_vluti2_lane_u16((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 49); \ | ||
| 42416 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42417 | __ret; \ | ||
| 42418 | }) | ||
| 42419 | #endif | ||
| 42420 | |||
| 42421 | #ifdef __LITTLE_ENDIAN__ | ||
| 42422 | #define vluti2_lane_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42423 | float16x8_t __ret; \ | ||
| 42424 | float16x4_t __s0 = __p0; \ | ||
| 42425 | uint8x8_t __s1 = __p1; \ | ||
| 42426 | __ret = (float16x8_t) __builtin_neon_vluti2_lane_f16((int8x8_t)__s0, (int8x8_t)__s1, __p2, 40); \ | ||
| 42427 | __ret; \ | ||
| 42428 | }) | ||
| 42429 | #else | ||
| 42430 | #define vluti2_lane_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42431 | float16x8_t __ret; \ | ||
| 42432 | float16x4_t __s0 = __p0; \ | ||
| 42433 | uint8x8_t __s1 = __p1; \ | ||
| 42434 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42435 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42436 | __ret = (float16x8_t) __builtin_neon_vluti2_lane_f16((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 40); \ | ||
| 42437 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42438 | __ret; \ | ||
| 42439 | }) | ||
| 42440 | #endif | ||
| 42441 | |||
| 42442 | #ifdef __LITTLE_ENDIAN__ | ||
| 42443 | #define vluti2_lane_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42444 | int16x8_t __ret; \ | ||
| 42445 | int16x4_t __s0 = __p0; \ | ||
| 42446 | uint8x8_t __s1 = __p1; \ | ||
| 42447 | __ret = (int16x8_t) __builtin_neon_vluti2_lane_s16((int8x8_t)__s0, (int8x8_t)__s1, __p2, 33); \ | ||
| 42448 | __ret; \ | ||
| 42449 | }) | ||
| 42450 | #else | ||
| 42451 | #define vluti2_lane_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42452 | int16x8_t __ret; \ | ||
| 42453 | int16x4_t __s0 = __p0; \ | ||
| 42454 | uint8x8_t __s1 = __p1; \ | ||
| 42455 | int16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42456 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42457 | __ret = (int16x8_t) __builtin_neon_vluti2_lane_s16((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 33); \ | ||
| 42458 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42459 | __ret; \ | ||
| 42460 | }) | ||
| 42461 | #endif | ||
| 42462 | |||
| 42463 | #ifdef __LITTLE_ENDIAN__ | ||
| 42464 | #define vluti2_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42465 | poly8x16_t __ret; \ | ||
| 42466 | poly8x8_t __s0 = __p0; \ | ||
| 42467 | uint8x16_t __s1 = __p1; \ | ||
| 42468 | __ret = (poly8x16_t) __builtin_neon_vluti2_laneq_p8((int8x8_t)__s0, (int8x16_t)__s1, __p2, 36); \ | ||
| 42469 | __ret; \ | ||
| 42470 | }) | ||
| 42471 | #else | ||
| 42472 | #define vluti2_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42473 | poly8x16_t __ret; \ | ||
| 42474 | poly8x8_t __s0 = __p0; \ | ||
| 42475 | uint8x16_t __s1 = __p1; \ | ||
| 42476 | poly8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42477 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42478 | __ret = (poly8x16_t) __builtin_neon_vluti2_laneq_p8((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 36); \ | ||
| 42479 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42480 | __ret; \ | ||
| 42481 | }) | ||
| 42482 | #endif | ||
| 42483 | |||
| 42484 | #ifdef __LITTLE_ENDIAN__ | ||
| 42485 | #define vluti2q_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42486 | poly8x16_t __ret; \ | ||
| 42487 | poly8x16_t __s0 = __p0; \ | ||
| 42488 | uint8x16_t __s1 = __p1; \ | ||
| 42489 | __ret = (poly8x16_t) __builtin_neon_vluti2q_laneq_p8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 36); \ | ||
| 42490 | __ret; \ | ||
| 42491 | }) | ||
| 42492 | #else | ||
| 42493 | #define vluti2q_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42494 | poly8x16_t __ret; \ | ||
| 42495 | poly8x16_t __s0 = __p0; \ | ||
| 42496 | uint8x16_t __s1 = __p1; \ | ||
| 42497 | poly8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42498 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42499 | __ret = (poly8x16_t) __builtin_neon_vluti2q_laneq_p8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 36); \ | ||
| 42500 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42501 | __ret; \ | ||
| 42502 | }) | ||
| 42503 | #endif | ||
| 42504 | |||
| 42505 | #ifdef __LITTLE_ENDIAN__ | ||
| 42506 | #define vluti2q_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42507 | uint8x16_t __ret; \ | ||
| 42508 | uint8x16_t __s0 = __p0; \ | ||
| 42509 | uint8x16_t __s1 = __p1; \ | ||
| 42510 | __ret = (uint8x16_t) __builtin_neon_vluti2q_laneq_u8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 48); \ | ||
| 42511 | __ret; \ | ||
| 42512 | }) | ||
| 42513 | #else | ||
| 42514 | #define vluti2q_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42515 | uint8x16_t __ret; \ | ||
| 42516 | uint8x16_t __s0 = __p0; \ | ||
| 42517 | uint8x16_t __s1 = __p1; \ | ||
| 42518 | uint8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42519 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42520 | __ret = (uint8x16_t) __builtin_neon_vluti2q_laneq_u8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 48); \ | ||
| 42521 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42522 | __ret; \ | ||
| 42523 | }) | ||
| 42524 | #endif | ||
| 42525 | |||
| 42526 | #ifdef __LITTLE_ENDIAN__ | ||
| 42527 | #define vluti2q_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42528 | int8x16_t __ret; \ | ||
| 42529 | int8x16_t __s0 = __p0; \ | ||
| 42530 | uint8x16_t __s1 = __p1; \ | ||
| 42531 | __ret = (int8x16_t) __builtin_neon_vluti2q_laneq_s8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 32); \ | ||
| 42532 | __ret; \ | ||
| 42533 | }) | ||
| 42534 | #else | ||
| 42535 | #define vluti2q_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42536 | int8x16_t __ret; \ | ||
| 42537 | int8x16_t __s0 = __p0; \ | ||
| 42538 | uint8x16_t __s1 = __p1; \ | ||
| 42539 | int8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42540 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42541 | __ret = (int8x16_t) __builtin_neon_vluti2q_laneq_s8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 32); \ | ||
| 42542 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42543 | __ret; \ | ||
| 42544 | }) | ||
| 42545 | #endif | ||
| 42546 | |||
| 42547 | #ifdef __LITTLE_ENDIAN__ | ||
| 42548 | #define vluti2_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42549 | uint8x16_t __ret; \ | ||
| 42550 | uint8x8_t __s0 = __p0; \ | ||
| 42551 | uint8x16_t __s1 = __p1; \ | ||
| 42552 | __ret = (uint8x16_t) __builtin_neon_vluti2_laneq_u8((int8x8_t)__s0, (int8x16_t)__s1, __p2, 48); \ | ||
| 42553 | __ret; \ | ||
| 42554 | }) | ||
| 42555 | #else | ||
| 42556 | #define vluti2_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42557 | uint8x16_t __ret; \ | ||
| 42558 | uint8x8_t __s0 = __p0; \ | ||
| 42559 | uint8x16_t __s1 = __p1; \ | ||
| 42560 | uint8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42561 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42562 | __ret = (uint8x16_t) __builtin_neon_vluti2_laneq_u8((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 48); \ | ||
| 42563 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42564 | __ret; \ | ||
| 42565 | }) | ||
| 42566 | #endif | ||
| 42567 | |||
| 42568 | #ifdef __LITTLE_ENDIAN__ | ||
| 42569 | #define vluti2_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42570 | int8x16_t __ret; \ | ||
| 42571 | int8x8_t __s0 = __p0; \ | ||
| 42572 | uint8x16_t __s1 = __p1; \ | ||
| 42573 | __ret = (int8x16_t) __builtin_neon_vluti2_laneq_s8((int8x8_t)__s0, (int8x16_t)__s1, __p2, 32); \ | ||
| 42574 | __ret; \ | ||
| 42575 | }) | ||
| 42576 | #else | ||
| 42577 | #define vluti2_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42578 | int8x16_t __ret; \ | ||
| 42579 | int8x8_t __s0 = __p0; \ | ||
| 42580 | uint8x16_t __s1 = __p1; \ | ||
| 42581 | int8x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42582 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42583 | __ret = (int8x16_t) __builtin_neon_vluti2_laneq_s8((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 32); \ | ||
| 42584 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42585 | __ret; \ | ||
| 42586 | }) | ||
| 42587 | #endif | ||
| 42588 | |||
| 42589 | #ifdef __LITTLE_ENDIAN__ | ||
| 42590 | #define vluti2_laneq_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42591 | poly16x8_t __ret; \ | ||
| 42592 | poly16x4_t __s0 = __p0; \ | ||
| 42593 | uint8x16_t __s1 = __p1; \ | ||
| 42594 | __ret = (poly16x8_t) __builtin_neon_vluti2_laneq_p16((int8x8_t)__s0, (int8x16_t)__s1, __p2, 37); \ | ||
| 42595 | __ret; \ | ||
| 42596 | }) | ||
| 42597 | #else | ||
| 42598 | #define vluti2_laneq_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42599 | poly16x8_t __ret; \ | ||
| 42600 | poly16x4_t __s0 = __p0; \ | ||
| 42601 | uint8x16_t __s1 = __p1; \ | ||
| 42602 | poly16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42603 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42604 | __ret = (poly16x8_t) __builtin_neon_vluti2_laneq_p16((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 37); \ | ||
| 42605 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42606 | __ret; \ | ||
| 42607 | }) | ||
| 42608 | #endif | ||
| 42609 | |||
| 42610 | #ifdef __LITTLE_ENDIAN__ | ||
| 42611 | #define vluti2q_laneq_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42612 | poly16x8_t __ret; \ | ||
| 42613 | poly16x8_t __s0 = __p0; \ | ||
| 42614 | uint8x16_t __s1 = __p1; \ | ||
| 42615 | __ret = (poly16x8_t) __builtin_neon_vluti2q_laneq_p16((int8x16_t)__s0, (int8x16_t)__s1, __p2, 37); \ | ||
| 42616 | __ret; \ | ||
| 42617 | }) | ||
| 42618 | #else | ||
| 42619 | #define vluti2q_laneq_p16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42620 | poly16x8_t __ret; \ | ||
| 42621 | poly16x8_t __s0 = __p0; \ | ||
| 42622 | uint8x16_t __s1 = __p1; \ | ||
| 42623 | poly16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42624 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42625 | __ret = (poly16x8_t) __builtin_neon_vluti2q_laneq_p16((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 37); \ | ||
| 42626 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42627 | __ret; \ | ||
| 42628 | }) | ||
| 42629 | #endif | ||
| 42630 | |||
| 42631 | #ifdef __LITTLE_ENDIAN__ | ||
| 42632 | #define vluti2q_laneq_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42633 | uint16x8_t __ret; \ | ||
| 42634 | uint16x8_t __s0 = __p0; \ | ||
| 42635 | uint8x16_t __s1 = __p1; \ | ||
| 42636 | __ret = (uint16x8_t) __builtin_neon_vluti2q_laneq_u16((int8x16_t)__s0, (int8x16_t)__s1, __p2, 49); \ | ||
| 42637 | __ret; \ | ||
| 42638 | }) | ||
| 42639 | #else | ||
| 42640 | #define vluti2q_laneq_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42641 | uint16x8_t __ret; \ | ||
| 42642 | uint16x8_t __s0 = __p0; \ | ||
| 42643 | uint8x16_t __s1 = __p1; \ | ||
| 42644 | uint16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42645 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42646 | __ret = (uint16x8_t) __builtin_neon_vluti2q_laneq_u16((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 49); \ | ||
| 42647 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42648 | __ret; \ | ||
| 42649 | }) | ||
| 42650 | #endif | ||
| 42651 | |||
| 42652 | #ifdef __LITTLE_ENDIAN__ | ||
| 42653 | #define vluti2q_laneq_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42654 | float16x8_t __ret; \ | ||
| 42655 | float16x8_t __s0 = __p0; \ | ||
| 42656 | uint8x16_t __s1 = __p1; \ | ||
| 42657 | __ret = (float16x8_t) __builtin_neon_vluti2q_laneq_f16((int8x16_t)__s0, (int8x16_t)__s1, __p2, 40); \ | ||
| 42658 | __ret; \ | ||
| 42659 | }) | ||
| 42660 | #else | ||
| 42661 | #define vluti2q_laneq_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42662 | float16x8_t __ret; \ | ||
| 42663 | float16x8_t __s0 = __p0; \ | ||
| 42664 | uint8x16_t __s1 = __p1; \ | ||
| 42665 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42666 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42667 | __ret = (float16x8_t) __builtin_neon_vluti2q_laneq_f16((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 40); \ | ||
| 42668 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42669 | __ret; \ | ||
| 42670 | }) | ||
| 42671 | #endif | ||
| 42672 | |||
| 42673 | #ifdef __LITTLE_ENDIAN__ | ||
| 42674 | #define vluti2q_laneq_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42675 | int16x8_t __ret; \ | ||
| 42676 | int16x8_t __s0 = __p0; \ | ||
| 42677 | uint8x16_t __s1 = __p1; \ | ||
| 42678 | __ret = (int16x8_t) __builtin_neon_vluti2q_laneq_s16((int8x16_t)__s0, (int8x16_t)__s1, __p2, 33); \ | ||
| 42679 | __ret; \ | ||
| 42680 | }) | ||
| 42681 | #else | ||
| 42682 | #define vluti2q_laneq_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42683 | int16x8_t __ret; \ | ||
| 42684 | int16x8_t __s0 = __p0; \ | ||
| 42685 | uint8x16_t __s1 = __p1; \ | ||
| 42686 | int16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42687 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42688 | __ret = (int16x8_t) __builtin_neon_vluti2q_laneq_s16((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 33); \ | ||
| 42689 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42690 | __ret; \ | ||
| 42691 | }) | ||
| 42692 | #endif | ||
| 42693 | |||
| 42694 | #ifdef __LITTLE_ENDIAN__ | ||
| 42695 | #define vluti2_laneq_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42696 | uint16x8_t __ret; \ | ||
| 42697 | uint16x4_t __s0 = __p0; \ | ||
| 42698 | uint8x16_t __s1 = __p1; \ | ||
| 42699 | __ret = (uint16x8_t) __builtin_neon_vluti2_laneq_u16((int8x8_t)__s0, (int8x16_t)__s1, __p2, 49); \ | ||
| 42700 | __ret; \ | ||
| 42701 | }) | ||
| 42702 | #else | ||
| 42703 | #define vluti2_laneq_u16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42704 | uint16x8_t __ret; \ | ||
| 42705 | uint16x4_t __s0 = __p0; \ | ||
| 42706 | uint8x16_t __s1 = __p1; \ | ||
| 42707 | uint16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42708 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42709 | __ret = (uint16x8_t) __builtin_neon_vluti2_laneq_u16((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 49); \ | ||
| 42710 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42711 | __ret; \ | ||
| 42712 | }) | ||
| 42713 | #endif | ||
| 42714 | |||
| 42715 | #ifdef __LITTLE_ENDIAN__ | ||
| 42716 | #define vluti2_laneq_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42717 | float16x8_t __ret; \ | ||
| 42718 | float16x4_t __s0 = __p0; \ | ||
| 42719 | uint8x16_t __s1 = __p1; \ | ||
| 42720 | __ret = (float16x8_t) __builtin_neon_vluti2_laneq_f16((int8x8_t)__s0, (int8x16_t)__s1, __p2, 40); \ | ||
| 42721 | __ret; \ | ||
| 42722 | }) | ||
| 42723 | #else | ||
| 42724 | #define vluti2_laneq_f16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42725 | float16x8_t __ret; \ | ||
| 42726 | float16x4_t __s0 = __p0; \ | ||
| 42727 | uint8x16_t __s1 = __p1; \ | ||
| 42728 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42729 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42730 | __ret = (float16x8_t) __builtin_neon_vluti2_laneq_f16((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 40); \ | ||
| 42731 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42732 | __ret; \ | ||
| 42733 | }) | ||
| 42734 | #endif | ||
| 42735 | |||
| 42736 | #ifdef __LITTLE_ENDIAN__ | ||
| 42737 | #define vluti2_laneq_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42738 | int16x8_t __ret; \ | ||
| 42739 | int16x4_t __s0 = __p0; \ | ||
| 42740 | uint8x16_t __s1 = __p1; \ | ||
| 42741 | __ret = (int16x8_t) __builtin_neon_vluti2_laneq_s16((int8x8_t)__s0, (int8x16_t)__s1, __p2, 33); \ | ||
| 42742 | __ret; \ | ||
| 42743 | }) | ||
| 42744 | #else | ||
| 42745 | #define vluti2_laneq_s16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42746 | int16x8_t __ret; \ | ||
| 42747 | int16x4_t __s0 = __p0; \ | ||
| 42748 | uint8x16_t __s1 = __p1; \ | ||
| 42749 | int16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 42750 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42751 | __ret = (int16x8_t) __builtin_neon_vluti2_laneq_s16((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 33); \ | ||
| 42752 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42753 | __ret; \ | ||
| 42754 | }) | ||
| 42755 | #endif | ||
| 42756 | |||
| 42757 | #ifdef __LITTLE_ENDIAN__ | ||
| 42758 | #define vluti4q_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42759 | poly8x16_t __ret; \ | ||
| 42760 | poly8x16_t __s0 = __p0; \ | ||
| 42761 | uint8x8_t __s1 = __p1; \ | ||
| 42762 | __ret = (poly8x16_t) __builtin_neon_vluti4q_lane_p8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 36); \ | ||
| 42763 | __ret; \ | ||
| 42764 | }) | ||
| 42765 | #else | ||
| 42766 | #define vluti4q_lane_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42767 | poly8x16_t __ret; \ | ||
| 42768 | poly8x16_t __s0 = __p0; \ | ||
| 42769 | uint8x8_t __s1 = __p1; \ | ||
| 42770 | poly8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42771 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42772 | __ret = (poly8x16_t) __builtin_neon_vluti4q_lane_p8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 36); \ | ||
| 42773 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42774 | __ret; \ | ||
| 42775 | }) | ||
| 42776 | #endif | ||
| 42777 | |||
| 42778 | #ifdef __LITTLE_ENDIAN__ | ||
| 42779 | #define vluti4q_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42780 | uint8x16_t __ret; \ | ||
| 42781 | uint8x16_t __s0 = __p0; \ | ||
| 42782 | uint8x8_t __s1 = __p1; \ | ||
| 42783 | __ret = (uint8x16_t) __builtin_neon_vluti4q_lane_u8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 48); \ | ||
| 42784 | __ret; \ | ||
| 42785 | }) | ||
| 42786 | #else | ||
| 42787 | #define vluti4q_lane_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42788 | uint8x16_t __ret; \ | ||
| 42789 | uint8x16_t __s0 = __p0; \ | ||
| 42790 | uint8x8_t __s1 = __p1; \ | ||
| 42791 | uint8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42792 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42793 | __ret = (uint8x16_t) __builtin_neon_vluti4q_lane_u8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 48); \ | ||
| 42794 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42795 | __ret; \ | ||
| 42796 | }) | ||
| 42797 | #endif | ||
| 42798 | |||
| 42799 | #ifdef __LITTLE_ENDIAN__ | ||
| 42800 | #define vluti4q_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42801 | int8x16_t __ret; \ | ||
| 42802 | int8x16_t __s0 = __p0; \ | ||
| 42803 | uint8x8_t __s1 = __p1; \ | ||
| 42804 | __ret = (int8x16_t) __builtin_neon_vluti4q_lane_s8((int8x16_t)__s0, (int8x8_t)__s1, __p2, 32); \ | ||
| 42805 | __ret; \ | ||
| 42806 | }) | ||
| 42807 | #else | ||
| 42808 | #define vluti4q_lane_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42809 | int8x16_t __ret; \ | ||
| 42810 | int8x16_t __s0 = __p0; \ | ||
| 42811 | uint8x8_t __s1 = __p1; \ | ||
| 42812 | int8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42813 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42814 | __ret = (int8x16_t) __builtin_neon_vluti4q_lane_s8((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 32); \ | ||
| 42815 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42816 | __ret; \ | ||
| 42817 | }) | ||
| 42818 | #endif | ||
| 42819 | |||
| 42820 | #ifdef __LITTLE_ENDIAN__ | ||
| 42821 | #define vluti4q_lane_p16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42822 | poly16x8_t __ret; \ | ||
| 42823 | poly16x8x2_t __s0 = __p0; \ | ||
| 42824 | uint8x8_t __s1 = __p1; \ | ||
| 42825 | __ret = (poly16x8_t) __builtin_neon_vluti4q_lane_p16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x8_t)__s1, __p2, 37); \ | ||
| 42826 | __ret; \ | ||
| 42827 | }) | ||
| 42828 | #else | ||
| 42829 | #define vluti4q_lane_p16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42830 | poly16x8_t __ret; \ | ||
| 42831 | poly16x8x2_t __s0 = __p0; \ | ||
| 42832 | uint8x8_t __s1 = __p1; \ | ||
| 42833 | poly16x8x2_t __rev0; \ | ||
| 42834 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42835 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42836 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42837 | __ret = (poly16x8_t) __builtin_neon_vluti4q_lane_p16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x8_t)__rev1, __p2, 37); \ | ||
| 42838 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42839 | __ret; \ | ||
| 42840 | }) | ||
| 42841 | #endif | ||
| 42842 | |||
| 42843 | #ifdef __LITTLE_ENDIAN__ | ||
| 42844 | #define vluti4q_lane_u16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42845 | uint16x8_t __ret; \ | ||
| 42846 | uint16x8x2_t __s0 = __p0; \ | ||
| 42847 | uint8x8_t __s1 = __p1; \ | ||
| 42848 | __ret = (uint16x8_t) __builtin_neon_vluti4q_lane_u16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x8_t)__s1, __p2, 49); \ | ||
| 42849 | __ret; \ | ||
| 42850 | }) | ||
| 42851 | #else | ||
| 42852 | #define vluti4q_lane_u16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42853 | uint16x8_t __ret; \ | ||
| 42854 | uint16x8x2_t __s0 = __p0; \ | ||
| 42855 | uint8x8_t __s1 = __p1; \ | ||
| 42856 | uint16x8x2_t __rev0; \ | ||
| 42857 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42858 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42859 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42860 | __ret = (uint16x8_t) __builtin_neon_vluti4q_lane_u16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x8_t)__rev1, __p2, 49); \ | ||
| 42861 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42862 | __ret; \ | ||
| 42863 | }) | ||
| 42864 | #endif | ||
| 42865 | |||
| 42866 | #ifdef __LITTLE_ENDIAN__ | ||
| 42867 | #define vluti4q_lane_f16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42868 | float16x8_t __ret; \ | ||
| 42869 | float16x8x2_t __s0 = __p0; \ | ||
| 42870 | uint8x8_t __s1 = __p1; \ | ||
| 42871 | __ret = (float16x8_t) __builtin_neon_vluti4q_lane_f16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x8_t)__s1, __p2, 40); \ | ||
| 42872 | __ret; \ | ||
| 42873 | }) | ||
| 42874 | #else | ||
| 42875 | #define vluti4q_lane_f16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42876 | float16x8_t __ret; \ | ||
| 42877 | float16x8x2_t __s0 = __p0; \ | ||
| 42878 | uint8x8_t __s1 = __p1; \ | ||
| 42879 | float16x8x2_t __rev0; \ | ||
| 42880 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42881 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42882 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42883 | __ret = (float16x8_t) __builtin_neon_vluti4q_lane_f16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x8_t)__rev1, __p2, 40); \ | ||
| 42884 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42885 | __ret; \ | ||
| 42886 | }) | ||
| 42887 | #endif | ||
| 42888 | |||
| 42889 | #ifdef __LITTLE_ENDIAN__ | ||
| 42890 | #define vluti4q_lane_s16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42891 | int16x8_t __ret; \ | ||
| 42892 | int16x8x2_t __s0 = __p0; \ | ||
| 42893 | uint8x8_t __s1 = __p1; \ | ||
| 42894 | __ret = (int16x8_t) __builtin_neon_vluti4q_lane_s16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x8_t)__s1, __p2, 33); \ | ||
| 42895 | __ret; \ | ||
| 42896 | }) | ||
| 42897 | #else | ||
| 42898 | #define vluti4q_lane_s16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42899 | int16x8_t __ret; \ | ||
| 42900 | int16x8x2_t __s0 = __p0; \ | ||
| 42901 | uint8x8_t __s1 = __p1; \ | ||
| 42902 | int16x8x2_t __rev0; \ | ||
| 42903 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42904 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42905 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42906 | __ret = (int16x8_t) __builtin_neon_vluti4q_lane_s16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x8_t)__rev1, __p2, 33); \ | ||
| 42907 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42908 | __ret; \ | ||
| 42909 | }) | ||
| 42910 | #endif | ||
| 42911 | |||
| 42912 | #ifdef __LITTLE_ENDIAN__ | ||
| 42913 | #define vluti4q_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42914 | poly8x16_t __ret; \ | ||
| 42915 | poly8x16_t __s0 = __p0; \ | ||
| 42916 | uint8x16_t __s1 = __p1; \ | ||
| 42917 | __ret = (poly8x16_t) __builtin_neon_vluti4q_laneq_p8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 36); \ | ||
| 42918 | __ret; \ | ||
| 42919 | }) | ||
| 42920 | #else | ||
| 42921 | #define vluti4q_laneq_p8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42922 | poly8x16_t __ret; \ | ||
| 42923 | poly8x16_t __s0 = __p0; \ | ||
| 42924 | uint8x16_t __s1 = __p1; \ | ||
| 42925 | poly8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42926 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42927 | __ret = (poly8x16_t) __builtin_neon_vluti4q_laneq_p8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 36); \ | ||
| 42928 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42929 | __ret; \ | ||
| 42930 | }) | ||
| 42931 | #endif | ||
| 42932 | |||
| 42933 | #ifdef __LITTLE_ENDIAN__ | ||
| 42934 | #define vluti4q_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42935 | uint8x16_t __ret; \ | ||
| 42936 | uint8x16_t __s0 = __p0; \ | ||
| 42937 | uint8x16_t __s1 = __p1; \ | ||
| 42938 | __ret = (uint8x16_t) __builtin_neon_vluti4q_laneq_u8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 48); \ | ||
| 42939 | __ret; \ | ||
| 42940 | }) | ||
| 42941 | #else | ||
| 42942 | #define vluti4q_laneq_u8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42943 | uint8x16_t __ret; \ | ||
| 42944 | uint8x16_t __s0 = __p0; \ | ||
| 42945 | uint8x16_t __s1 = __p1; \ | ||
| 42946 | uint8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42947 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42948 | __ret = (uint8x16_t) __builtin_neon_vluti4q_laneq_u8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 48); \ | ||
| 42949 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42950 | __ret; \ | ||
| 42951 | }) | ||
| 42952 | #endif | ||
| 42953 | |||
| 42954 | #ifdef __LITTLE_ENDIAN__ | ||
| 42955 | #define vluti4q_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42956 | int8x16_t __ret; \ | ||
| 42957 | int8x16_t __s0 = __p0; \ | ||
| 42958 | uint8x16_t __s1 = __p1; \ | ||
| 42959 | __ret = (int8x16_t) __builtin_neon_vluti4q_laneq_s8((int8x16_t)__s0, (int8x16_t)__s1, __p2, 32); \ | ||
| 42960 | __ret; \ | ||
| 42961 | }) | ||
| 42962 | #else | ||
| 42963 | #define vluti4q_laneq_s8(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42964 | int8x16_t __ret; \ | ||
| 42965 | int8x16_t __s0 = __p0; \ | ||
| 42966 | uint8x16_t __s1 = __p1; \ | ||
| 42967 | int8x16_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42968 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42969 | __ret = (int8x16_t) __builtin_neon_vluti4q_laneq_s8((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 32); \ | ||
| 42970 | __ret = __builtin_shufflevector(__ret, __ret, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42971 | __ret; \ | ||
| 42972 | }) | ||
| 42973 | #endif | ||
| 42974 | |||
| 42975 | #ifdef __LITTLE_ENDIAN__ | ||
| 42976 | #define vluti4q_laneq_p16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42977 | poly16x8_t __ret; \ | ||
| 42978 | poly16x8x2_t __s0 = __p0; \ | ||
| 42979 | uint8x16_t __s1 = __p1; \ | ||
| 42980 | __ret = (poly16x8_t) __builtin_neon_vluti4q_laneq_p16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x16_t)__s1, __p2, 37); \ | ||
| 42981 | __ret; \ | ||
| 42982 | }) | ||
| 42983 | #else | ||
| 42984 | #define vluti4q_laneq_p16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 42985 | poly16x8_t __ret; \ | ||
| 42986 | poly16x8x2_t __s0 = __p0; \ | ||
| 42987 | uint8x16_t __s1 = __p1; \ | ||
| 42988 | poly16x8x2_t __rev0; \ | ||
| 42989 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42990 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42991 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42992 | __ret = (poly16x8_t) __builtin_neon_vluti4q_laneq_p16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x16_t)__rev1, __p2, 37); \ | ||
| 42993 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 42994 | __ret; \ | ||
| 42995 | }) | ||
| 42996 | #endif | ||
| 42997 | |||
| 42998 | #ifdef __LITTLE_ENDIAN__ | ||
| 42999 | #define vluti4q_laneq_u16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43000 | uint16x8_t __ret; \ | ||
| 43001 | uint16x8x2_t __s0 = __p0; \ | ||
| 43002 | uint8x16_t __s1 = __p1; \ | ||
| 43003 | __ret = (uint16x8_t) __builtin_neon_vluti4q_laneq_u16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x16_t)__s1, __p2, 49); \ | ||
| 43004 | __ret; \ | ||
| 43005 | }) | ||
| 43006 | #else | ||
| 43007 | #define vluti4q_laneq_u16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43008 | uint16x8_t __ret; \ | ||
| 43009 | uint16x8x2_t __s0 = __p0; \ | ||
| 43010 | uint8x16_t __s1 = __p1; \ | ||
| 43011 | uint16x8x2_t __rev0; \ | ||
| 43012 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43013 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43014 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43015 | __ret = (uint16x8_t) __builtin_neon_vluti4q_laneq_u16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x16_t)__rev1, __p2, 49); \ | ||
| 43016 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43017 | __ret; \ | ||
| 43018 | }) | ||
| 43019 | #endif | ||
| 43020 | |||
| 43021 | #ifdef __LITTLE_ENDIAN__ | ||
| 43022 | #define vluti4q_laneq_f16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43023 | float16x8_t __ret; \ | ||
| 43024 | float16x8x2_t __s0 = __p0; \ | ||
| 43025 | uint8x16_t __s1 = __p1; \ | ||
| 43026 | __ret = (float16x8_t) __builtin_neon_vluti4q_laneq_f16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x16_t)__s1, __p2, 40); \ | ||
| 43027 | __ret; \ | ||
| 43028 | }) | ||
| 43029 | #else | ||
| 43030 | #define vluti4q_laneq_f16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43031 | float16x8_t __ret; \ | ||
| 43032 | float16x8x2_t __s0 = __p0; \ | ||
| 43033 | uint8x16_t __s1 = __p1; \ | ||
| 43034 | float16x8x2_t __rev0; \ | ||
| 43035 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43036 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43037 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43038 | __ret = (float16x8_t) __builtin_neon_vluti4q_laneq_f16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x16_t)__rev1, __p2, 40); \ | ||
| 43039 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43040 | __ret; \ | ||
| 43041 | }) | ||
| 43042 | #endif | ||
| 43043 | |||
| 43044 | #ifdef __LITTLE_ENDIAN__ | ||
| 43045 | #define vluti4q_laneq_s16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43046 | int16x8_t __ret; \ | ||
| 43047 | int16x8x2_t __s0 = __p0; \ | ||
| 43048 | uint8x16_t __s1 = __p1; \ | ||
| 43049 | __ret = (int16x8_t) __builtin_neon_vluti4q_laneq_s16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x16_t)__s1, __p2, 33); \ | ||
| 43050 | __ret; \ | ||
| 43051 | }) | ||
| 43052 | #else | ||
| 43053 | #define vluti4q_laneq_s16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43054 | int16x8_t __ret; \ | ||
| 43055 | int16x8x2_t __s0 = __p0; \ | ||
| 43056 | uint8x16_t __s1 = __p1; \ | ||
| 43057 | int16x8x2_t __rev0; \ | ||
| 43058 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43059 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43060 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43061 | __ret = (int16x8_t) __builtin_neon_vluti4q_laneq_s16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x16_t)__rev1, __p2, 33); \ | ||
| 43062 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43063 | __ret; \ | ||
| 43064 | }) | ||
| 43065 | #endif | ||
| 43066 | |||
| 43067 | #ifdef __LITTLE_ENDIAN__ | ||
| 43068 | #define vluti2q_lane_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43069 | bfloat16x8_t __ret; \ | ||
| 43070 | bfloat16x8_t __s0 = __p0; \ | ||
| 43071 | uint8x8_t __s1 = __p1; \ | ||
| 43072 | __ret = (bfloat16x8_t) __builtin_neon_vluti2q_lane_bf16((int8x16_t)__s0, (int8x8_t)__s1, __p2, 43); \ | ||
| 43073 | __ret; \ | ||
| 43074 | }) | ||
| 43075 | #else | ||
| 43076 | #define vluti2q_lane_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43077 | bfloat16x8_t __ret; \ | ||
| 43078 | bfloat16x8_t __s0 = __p0; \ | ||
| 43079 | uint8x8_t __s1 = __p1; \ | ||
| 43080 | bfloat16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43081 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43082 | __ret = (bfloat16x8_t) __builtin_neon_vluti2q_lane_bf16((int8x16_t)__rev0, (int8x8_t)__rev1, __p2, 43); \ | ||
| 43083 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43084 | __ret; \ | ||
| 43085 | }) | ||
| 43086 | #endif | ||
| 43087 | |||
| 43088 | #ifdef __LITTLE_ENDIAN__ | ||
| 43089 | #define vluti2_lane_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43090 | bfloat16x8_t __ret; \ | ||
| 43091 | bfloat16x4_t __s0 = __p0; \ | ||
| 43092 | uint8x8_t __s1 = __p1; \ | ||
| 43093 | __ret = (bfloat16x8_t) __builtin_neon_vluti2_lane_bf16((int8x8_t)__s0, (int8x8_t)__s1, __p2, 43); \ | ||
| 43094 | __ret; \ | ||
| 43095 | }) | ||
| 43096 | #else | ||
| 43097 | #define vluti2_lane_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43098 | bfloat16x8_t __ret; \ | ||
| 43099 | bfloat16x4_t __s0 = __p0; \ | ||
| 43100 | uint8x8_t __s1 = __p1; \ | ||
| 43101 | bfloat16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 43102 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43103 | __ret = (bfloat16x8_t) __builtin_neon_vluti2_lane_bf16((int8x8_t)__rev0, (int8x8_t)__rev1, __p2, 43); \ | ||
| 43104 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43105 | __ret; \ | ||
| 43106 | }) | ||
| 43107 | #endif | ||
| 43108 | |||
| 43109 | #ifdef __LITTLE_ENDIAN__ | ||
| 43110 | #define vluti2q_laneq_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43111 | bfloat16x8_t __ret; \ | ||
| 43112 | bfloat16x8_t __s0 = __p0; \ | ||
| 43113 | uint8x16_t __s1 = __p1; \ | ||
| 43114 | __ret = (bfloat16x8_t) __builtin_neon_vluti2q_laneq_bf16((int8x16_t)__s0, (int8x16_t)__s1, __p2, 43); \ | ||
| 43115 | __ret; \ | ||
| 43116 | }) | ||
| 43117 | #else | ||
| 43118 | #define vluti2q_laneq_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43119 | bfloat16x8_t __ret; \ | ||
| 43120 | bfloat16x8_t __s0 = __p0; \ | ||
| 43121 | uint8x16_t __s1 = __p1; \ | ||
| 43122 | bfloat16x8_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43123 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43124 | __ret = (bfloat16x8_t) __builtin_neon_vluti2q_laneq_bf16((int8x16_t)__rev0, (int8x16_t)__rev1, __p2, 43); \ | ||
| 43125 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43126 | __ret; \ | ||
| 43127 | }) | ||
| 43128 | #endif | ||
| 43129 | |||
| 43130 | #ifdef __LITTLE_ENDIAN__ | ||
| 43131 | #define vluti2_laneq_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43132 | bfloat16x8_t __ret; \ | ||
| 43133 | bfloat16x4_t __s0 = __p0; \ | ||
| 43134 | uint8x16_t __s1 = __p1; \ | ||
| 43135 | __ret = (bfloat16x8_t) __builtin_neon_vluti2_laneq_bf16((int8x8_t)__s0, (int8x16_t)__s1, __p2, 43); \ | ||
| 43136 | __ret; \ | ||
| 43137 | }) | ||
| 43138 | #else | ||
| 43139 | #define vluti2_laneq_bf16(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43140 | bfloat16x8_t __ret; \ | ||
| 43141 | bfloat16x4_t __s0 = __p0; \ | ||
| 43142 | uint8x16_t __s1 = __p1; \ | ||
| 43143 | bfloat16x4_t __rev0; __rev0 = __builtin_shufflevector(__s0, __s0, 3, 2, 1, 0); \ | ||
| 43144 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43145 | __ret = (bfloat16x8_t) __builtin_neon_vluti2_laneq_bf16((int8x8_t)__rev0, (int8x16_t)__rev1, __p2, 43); \ | ||
| 43146 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43147 | __ret; \ | ||
| 43148 | }) | ||
| 43149 | #endif | ||
| 43150 | |||
| 43151 | #ifdef __LITTLE_ENDIAN__ | ||
| 43152 | #define vluti4q_lane_bf16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43153 | bfloat16x8_t __ret; \ | ||
| 43154 | bfloat16x8x2_t __s0 = __p0; \ | ||
| 43155 | uint8x8_t __s1 = __p1; \ | ||
| 43156 | __ret = (bfloat16x8_t) __builtin_neon_vluti4q_lane_bf16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x8_t)__s1, __p2, 43); \ | ||
| 43157 | __ret; \ | ||
| 43158 | }) | ||
| 43159 | #else | ||
| 43160 | #define vluti4q_lane_bf16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43161 | bfloat16x8_t __ret; \ | ||
| 43162 | bfloat16x8x2_t __s0 = __p0; \ | ||
| 43163 | uint8x8_t __s1 = __p1; \ | ||
| 43164 | bfloat16x8x2_t __rev0; \ | ||
| 43165 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43166 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43167 | uint8x8_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43168 | __ret = (bfloat16x8_t) __builtin_neon_vluti4q_lane_bf16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x8_t)__rev1, __p2, 43); \ | ||
| 43169 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43170 | __ret; \ | ||
| 43171 | }) | ||
| 43172 | #endif | ||
| 43173 | |||
| 43174 | #ifdef __LITTLE_ENDIAN__ | ||
| 43175 | #define vluti4q_laneq_bf16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43176 | bfloat16x8_t __ret; \ | ||
| 43177 | bfloat16x8x2_t __s0 = __p0; \ | ||
| 43178 | uint8x16_t __s1 = __p1; \ | ||
| 43179 | __ret = (bfloat16x8_t) __builtin_neon_vluti4q_laneq_bf16_x2((int8x16_t)__s0.val[0], (int8x16_t)__s0.val[1], (int8x16_t)__s1, __p2, 43); \ | ||
| 43180 | __ret; \ | ||
| 43181 | }) | ||
| 43182 | #else | ||
| 43183 | #define vluti4q_laneq_bf16_x2(__p0, __p1, __p2) __extension__ ({ \ | ||
| 43184 | bfloat16x8_t __ret; \ | ||
| 43185 | bfloat16x8x2_t __s0 = __p0; \ | ||
| 43186 | uint8x16_t __s1 = __p1; \ | ||
| 43187 | bfloat16x8x2_t __rev0; \ | ||
| 43188 | __rev0.val[0] = __builtin_shufflevector(__s0.val[0], __s0.val[0], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43189 | __rev0.val[1] = __builtin_shufflevector(__s0.val[1], __s0.val[1], 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43190 | uint8x16_t __rev1; __rev1 = __builtin_shufflevector(__s1, __s1, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43191 | __ret = (bfloat16x8_t) __builtin_neon_vluti4q_laneq_bf16_x2((int8x16_t)__rev0.val[0], (int8x16_t)__rev0.val[1], (int8x16_t)__rev1, __p2, 43); \ | ||
| 43192 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 43193 | __ret; \ | ||
| 43194 | }) | ||
| 43195 | #endif | ||
| 43196 | |||
| 43197 | #ifdef __LITTLE_ENDIAN__ | ||
| 43198 | __ai __attribute__((target("neon,faminmax"))) float64x2_t vamaxq_f64(float64x2_t __p0, float64x2_t __p1) { | ||
| 43199 | float64x2_t __ret; | ||
| 43200 | __ret = (float64x2_t) __builtin_neon_vamaxq_f64((int8x16_t)__p0, (int8x16_t)__p1, 42); | ||
| 41256 | return __ret; | 43201 | return __ret; |
| 41257 | } | 43202 | } |
| 43203 | #else | ||
| 43204 | __ai __attribute__((target("neon,faminmax"))) float64x2_t vamaxq_f64(float64x2_t __p0, float64x2_t __p1) { | ||
| 43205 | float64x2_t __ret; | ||
| 43206 | float64x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 43207 | float64x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 43208 | __ret = (float64x2_t) __builtin_neon_vamaxq_f64((int8x16_t)__rev0, (int8x16_t)__rev1, 42); | ||
| 43209 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 43210 | return __ret; | ||
| 43211 | } | ||
| 43212 | #endif | ||
| 43213 | |||
| 41258 | #ifdef __LITTLE_ENDIAN__ | 43214 | #ifdef __LITTLE_ENDIAN__ |
| 41259 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __a64_vcvtq_low_bf16_f32(float32x4_t __p0) { | 43215 | __ai __attribute__((target("neon,faminmax"))) float32x4_t vamaxq_f32(float32x4_t __p0, float32x4_t __p1) { |
| 41260 | bfloat16x8_t __ret; | 43216 | float32x4_t __ret; |
| 41261 | __ret = (bfloat16x8_t) __builtin_neon___a64_vcvtq_low_bf16_f32((int8x16_t)__p0, 43); | 43217 | __ret = (float32x4_t) __builtin_neon_vamaxq_f32((int8x16_t)__p0, (int8x16_t)__p1, 41); |
| 41262 | return __ret; | 43218 | return __ret; |
| 41263 | } | 43219 | } |
| 41264 | #else | 43220 | #else |
| 41265 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __a64_vcvtq_low_bf16_f32(float32x4_t __p0) { | 43221 | __ai __attribute__((target("neon,faminmax"))) float32x4_t vamaxq_f32(float32x4_t __p0, float32x4_t __p1) { |
| 41266 | bfloat16x8_t __ret; | 43222 | float32x4_t __ret; |
| 41267 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | 43223 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); |
| 41268 | __ret = (bfloat16x8_t) __builtin_neon___a64_vcvtq_low_bf16_f32((int8x16_t)__rev0, 43); | 43224 | float32x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); |
| 43225 | __ret = (float32x4_t) __builtin_neon_vamaxq_f32((int8x16_t)__rev0, (int8x16_t)__rev1, 41); | ||
| 43226 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 43227 | return __ret; | ||
| 43228 | } | ||
| 43229 | #endif | ||
| 43230 | |||
| 43231 | #ifdef __LITTLE_ENDIAN__ | ||
| 43232 | __ai __attribute__((target("neon,faminmax"))) float16x8_t vamaxq_f16(float16x8_t __p0, float16x8_t __p1) { | ||
| 43233 | float16x8_t __ret; | ||
| 43234 | __ret = (float16x8_t) __builtin_neon_vamaxq_f16((int8x16_t)__p0, (int8x16_t)__p1, 40); | ||
| 43235 | return __ret; | ||
| 43236 | } | ||
| 43237 | #else | ||
| 43238 | __ai __attribute__((target("neon,faminmax"))) float16x8_t vamaxq_f16(float16x8_t __p0, float16x8_t __p1) { | ||
| 43239 | float16x8_t __ret; | ||
| 43240 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 43241 | float16x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 43242 | __ret = (float16x8_t) __builtin_neon_vamaxq_f16((int8x16_t)__rev0, (int8x16_t)__rev1, 40); | ||
| 41269 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | 43243 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); |
| 41270 | return __ret; | 43244 | return __ret; |
| 41271 | } | 43245 | } |
| 41272 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __noswap___a64_vcvtq_low_bf16_f32(float32x4_t __p0) { | 43246 | #endif |
| 41273 | bfloat16x8_t __ret; | 43247 | |
| 41274 | __ret = (bfloat16x8_t) __builtin_neon___a64_vcvtq_low_bf16_f32((int8x16_t)__p0, 43); | 43248 | #ifdef __LITTLE_ENDIAN__ |
| 43249 | __ai __attribute__((target("neon,faminmax"))) float32x2_t vamax_f32(float32x2_t __p0, float32x2_t __p1) { | ||
| 43250 | float32x2_t __ret; | ||
| 43251 | __ret = (float32x2_t) __builtin_neon_vamax_f32((int8x8_t)__p0, (int8x8_t)__p1, 9); | ||
| 43252 | return __ret; | ||
| 43253 | } | ||
| 43254 | #else | ||
| 43255 | __ai __attribute__((target("neon,faminmax"))) float32x2_t vamax_f32(float32x2_t __p0, float32x2_t __p1) { | ||
| 43256 | float32x2_t __ret; | ||
| 43257 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 43258 | float32x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 43259 | __ret = (float32x2_t) __builtin_neon_vamax_f32((int8x8_t)__rev0, (int8x8_t)__rev1, 9); | ||
| 43260 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 43261 | return __ret; | ||
| 43262 | } | ||
| 43263 | #endif | ||
| 43264 | |||
| 43265 | #ifdef __LITTLE_ENDIAN__ | ||
| 43266 | __ai __attribute__((target("neon,faminmax"))) float16x4_t vamax_f16(float16x4_t __p0, float16x4_t __p1) { | ||
| 43267 | float16x4_t __ret; | ||
| 43268 | __ret = (float16x4_t) __builtin_neon_vamax_f16((int8x8_t)__p0, (int8x8_t)__p1, 8); | ||
| 43269 | return __ret; | ||
| 43270 | } | ||
| 43271 | #else | ||
| 43272 | __ai __attribute__((target("neon,faminmax"))) float16x4_t vamax_f16(float16x4_t __p0, float16x4_t __p1) { | ||
| 43273 | float16x4_t __ret; | ||
| 43274 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 43275 | float16x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 43276 | __ret = (float16x4_t) __builtin_neon_vamax_f16((int8x8_t)__rev0, (int8x8_t)__rev1, 8); | ||
| 43277 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 43278 | return __ret; | ||
| 43279 | } | ||
| 43280 | #endif | ||
| 43281 | |||
| 43282 | #ifdef __LITTLE_ENDIAN__ | ||
| 43283 | __ai __attribute__((target("neon,faminmax"))) float64x2_t vaminq_f64(float64x2_t __p0, float64x2_t __p1) { | ||
| 43284 | float64x2_t __ret; | ||
| 43285 | __ret = (float64x2_t) __builtin_neon_vaminq_f64((int8x16_t)__p0, (int8x16_t)__p1, 42); | ||
| 43286 | return __ret; | ||
| 43287 | } | ||
| 43288 | #else | ||
| 43289 | __ai __attribute__((target("neon,faminmax"))) float64x2_t vaminq_f64(float64x2_t __p0, float64x2_t __p1) { | ||
| 43290 | float64x2_t __ret; | ||
| 43291 | float64x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 43292 | float64x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 43293 | __ret = (float64x2_t) __builtin_neon_vaminq_f64((int8x16_t)__rev0, (int8x16_t)__rev1, 42); | ||
| 43294 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 43295 | return __ret; | ||
| 43296 | } | ||
| 43297 | #endif | ||
| 43298 | |||
| 43299 | #ifdef __LITTLE_ENDIAN__ | ||
| 43300 | __ai __attribute__((target("neon,faminmax"))) float32x4_t vaminq_f32(float32x4_t __p0, float32x4_t __p1) { | ||
| 43301 | float32x4_t __ret; | ||
| 43302 | __ret = (float32x4_t) __builtin_neon_vaminq_f32((int8x16_t)__p0, (int8x16_t)__p1, 41); | ||
| 43303 | return __ret; | ||
| 43304 | } | ||
| 43305 | #else | ||
| 43306 | __ai __attribute__((target("neon,faminmax"))) float32x4_t vaminq_f32(float32x4_t __p0, float32x4_t __p1) { | ||
| 43307 | float32x4_t __ret; | ||
| 43308 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 43309 | float32x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 43310 | __ret = (float32x4_t) __builtin_neon_vaminq_f32((int8x16_t)__rev0, (int8x16_t)__rev1, 41); | ||
| 43311 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 43312 | return __ret; | ||
| 43313 | } | ||
| 43314 | #endif | ||
| 43315 | |||
| 43316 | #ifdef __LITTLE_ENDIAN__ | ||
| 43317 | __ai __attribute__((target("neon,faminmax"))) float16x8_t vaminq_f16(float16x8_t __p0, float16x8_t __p1) { | ||
| 43318 | float16x8_t __ret; | ||
| 43319 | __ret = (float16x8_t) __builtin_neon_vaminq_f16((int8x16_t)__p0, (int8x16_t)__p1, 40); | ||
| 43320 | return __ret; | ||
| 43321 | } | ||
| 43322 | #else | ||
| 43323 | __ai __attribute__((target("neon,faminmax"))) float16x8_t vaminq_f16(float16x8_t __p0, float16x8_t __p1) { | ||
| 43324 | float16x8_t __ret; | ||
| 43325 | float16x8_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 43326 | float16x8_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 43327 | __ret = (float16x8_t) __builtin_neon_vaminq_f16((int8x16_t)__rev0, (int8x16_t)__rev1, 40); | ||
| 43328 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | ||
| 43329 | return __ret; | ||
| 43330 | } | ||
| 43331 | #endif | ||
| 43332 | |||
| 43333 | #ifdef __LITTLE_ENDIAN__ | ||
| 43334 | __ai __attribute__((target("neon,faminmax"))) float32x2_t vamin_f32(float32x2_t __p0, float32x2_t __p1) { | ||
| 43335 | float32x2_t __ret; | ||
| 43336 | __ret = (float32x2_t) __builtin_neon_vamin_f32((int8x8_t)__p0, (int8x8_t)__p1, 9); | ||
| 43337 | return __ret; | ||
| 43338 | } | ||
| 43339 | #else | ||
| 43340 | __ai __attribute__((target("neon,faminmax"))) float32x2_t vamin_f32(float32x2_t __p0, float32x2_t __p1) { | ||
| 43341 | float32x2_t __ret; | ||
| 43342 | float32x2_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 1, 0); | ||
| 43343 | float32x2_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 1, 0); | ||
| 43344 | __ret = (float32x2_t) __builtin_neon_vamin_f32((int8x8_t)__rev0, (int8x8_t)__rev1, 9); | ||
| 43345 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | ||
| 41275 | return __ret; | 43346 | return __ret; |
| 41276 | } | 43347 | } |
| 41277 | #endif | 43348 | #endif |
| 41278 | 43349 | ||
| 43350 | #ifdef __LITTLE_ENDIAN__ | ||
| 43351 | __ai __attribute__((target("neon,faminmax"))) float16x4_t vamin_f16(float16x4_t __p0, float16x4_t __p1) { | ||
| 43352 | float16x4_t __ret; | ||
| 43353 | __ret = (float16x4_t) __builtin_neon_vamin_f16((int8x8_t)__p0, (int8x8_t)__p1, 8); | ||
| 43354 | return __ret; | ||
| 43355 | } | ||
| 43356 | #else | ||
| 43357 | __ai __attribute__((target("neon,faminmax"))) float16x4_t vamin_f16(float16x4_t __p0, float16x4_t __p1) { | ||
| 43358 | float16x4_t __ret; | ||
| 43359 | float16x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | ||
| 43360 | float16x4_t __rev1; __rev1 = __builtin_shufflevector(__p1, __p1, 3, 2, 1, 0); | ||
| 43361 | __ret = (float16x4_t) __builtin_neon_vamin_f16((int8x8_t)__rev0, (int8x8_t)__rev1, 8); | ||
| 43362 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | ||
| 43363 | return __ret; | ||
| 43364 | } | ||
| 43365 | #endif | ||
| 43366 | |||
| 43367 | #endif | ||
| 43368 | #if defined(__aarch64__) || defined(__arm64ec__) | ||
| 43369 | __ai __attribute__((target("aes,neon"))) poly128_t vmull_p64(poly64_t __p0, poly64_t __p1) { | ||
| 43370 | poly128_t __ret; | ||
| 43371 | __ret = (poly128_t) __builtin_neon_vmull_p64(__p0, __p1); | ||
| 43372 | return __ret; | ||
| 43373 | } | ||
| 41279 | #ifdef __LITTLE_ENDIAN__ | 43374 | #ifdef __LITTLE_ENDIAN__ |
| 41280 | #define vcopyq_lane_bf16(__p0_230, __p1_230, __p2_230, __p3_230) __extension__ ({ \ | 43375 | #define vcopyq_lane_bf16(__p0_230, __p1_230, __p2_230, __p3_230) __extension__ ({ \ |
| 41281 | bfloat16x8_t __ret_230; \ | 43376 | bfloat16x8_t __ret_230; \ |
| ... | @@ -41363,14 +43458,14 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __noswap___a64_vcvtq_low_ | ... | @@ -41363,14 +43458,14 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t __noswap___a64_vcvtq_low_ |
| 41363 | #ifdef __LITTLE_ENDIAN__ | 43458 | #ifdef __LITTLE_ENDIAN__ |
| 41364 | __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vcvt_bf16_f32(float32x4_t __p0) { | 43459 | __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vcvt_bf16_f32(float32x4_t __p0) { |
| 41365 | bfloat16x4_t __ret; | 43460 | bfloat16x4_t __ret; |
| 41366 | __ret = vget_low_bf16(__a64_vcvtq_low_bf16_f32(__p0)); | 43461 | __ret = (bfloat16x4_t) __builtin_neon_vcvt_bf16_f32((int8x16_t)__p0, 11); |
| 41367 | return __ret; | 43462 | return __ret; |
| 41368 | } | 43463 | } |
| 41369 | #else | 43464 | #else |
| 41370 | __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vcvt_bf16_f32(float32x4_t __p0) { | 43465 | __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vcvt_bf16_f32(float32x4_t __p0) { |
| 41371 | bfloat16x4_t __ret; | 43466 | bfloat16x4_t __ret; |
| 41372 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | 43467 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); |
| 41373 | __ret = __noswap_vget_low_bf16(__noswap___a64_vcvtq_low_bf16_f32(__rev0)); | 43468 | __ret = (bfloat16x4_t) __builtin_neon_vcvt_bf16_f32((int8x16_t)__rev0, 11); |
| 41374 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); | 43469 | __ret = __builtin_shufflevector(__ret, __ret, 3, 2, 1, 0); |
| 41375 | return __ret; | 43470 | return __ret; |
| 41376 | } | 43471 | } |
| ... | @@ -41396,14 +43491,14 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_high_bf16_f32(bfloa | ... | @@ -41396,14 +43491,14 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_high_bf16_f32(bfloa |
| 41396 | #ifdef __LITTLE_ENDIAN__ | 43491 | #ifdef __LITTLE_ENDIAN__ |
| 41397 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_low_bf16_f32(float32x4_t __p0) { | 43492 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_low_bf16_f32(float32x4_t __p0) { |
| 41398 | bfloat16x8_t __ret; | 43493 | bfloat16x8_t __ret; |
| 41399 | __ret = __a64_vcvtq_low_bf16_f32(__p0); | 43494 | __ret = (bfloat16x8_t) __builtin_neon_vcvtq_low_bf16_f32((int8x16_t)__p0, 43); |
| 41400 | return __ret; | 43495 | return __ret; |
| 41401 | } | 43496 | } |
| 41402 | #else | 43497 | #else |
| 41403 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_low_bf16_f32(float32x4_t __p0) { | 43498 | __ai __attribute__((target("bf16,neon"))) bfloat16x8_t vcvtq_low_bf16_f32(float32x4_t __p0) { |
| 41404 | bfloat16x8_t __ret; | 43499 | bfloat16x8_t __ret; |
| 41405 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); | 43500 | float32x4_t __rev0; __rev0 = __builtin_shufflevector(__p0, __p0, 3, 2, 1, 0); |
| 41406 | __ret = __noswap___a64_vcvtq_low_bf16_f32(__rev0); | 43501 | __ret = (bfloat16x8_t) __builtin_neon_vcvtq_low_bf16_f32((int8x16_t)__rev0, 43); |
| 41407 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); | 43502 | __ret = __builtin_shufflevector(__ret, __ret, 7, 6, 5, 4, 3, 2, 1, 0); |
| 41408 | return __ret; | 43503 | return __ret; |
| 41409 | } | 43504 | } |
| ... | @@ -41705,9 +43800,7 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vreinterpret_bf16_s16(int | ... | @@ -41705,9 +43800,7 @@ __ai __attribute__((target("bf16,neon"))) bfloat16x4_t vreinterpret_bf16_s16(int |
| 41705 | uint32x4_t __s0_238 = __p0_238; \ | 43800 | uint32x4_t __s0_238 = __p0_238; \ |
| 41706 | uint8x16_t __s1_238 = __p1_238; \ | 43801 | uint8x16_t __s1_238 = __p1_238; \ |
| 41707 | uint8x16_t __s2_238 = __p2_238; \ | 43802 | uint8x16_t __s2_238 = __p2_238; \ |
| 41708 | uint8x16_t __reint_238 = __s2_238; \ | 43803 | __ret_238 = vdotq_u32(__s0_238, __s1_238, __builtin_bit_cast(uint8x16_t, splatq_laneq_u32(__builtin_bit_cast(uint32x4_t, __s2_238), __p3_238))); \ |
| 41709 | uint32x4_t __reint1_238 = splatq_laneq_u32(*(uint32x4_t *) &__reint_238, __p3_238); \ | ||
| 41710 | __ret_238 = vdotq_u32(__s0_238, __s1_238, *(uint8x16_t *) &__reint1_238); \ | ||
| 41711 | __ret_238; \ | 43804 | __ret_238; \ |
| 41712 | }) | 43805 | }) |
| 41713 | #else | 43806 | #else |
| ... | @@ -41719,9 +43812,7 @@ uint32x4_t __reint1_238 = splatq_laneq_u32(*(uint32x4_t *) &__reint_238, __p3_23 | ... | @@ -41719,9 +43812,7 @@ uint32x4_t __reint1_238 = splatq_laneq_u32(*(uint32x4_t *) &__reint_238, __p3_23 |
| 41719 | uint32x4_t __rev0_239; __rev0_239 = __builtin_shufflevector(__s0_239, __s0_239, 3, 2, 1, 0); \ | 43812 | uint32x4_t __rev0_239; __rev0_239 = __builtin_shufflevector(__s0_239, __s0_239, 3, 2, 1, 0); \ |
| 41720 | uint8x16_t __rev1_239; __rev1_239 = __builtin_shufflevector(__s1_239, __s1_239, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43813 | uint8x16_t __rev1_239; __rev1_239 = __builtin_shufflevector(__s1_239, __s1_239, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41721 | uint8x16_t __rev2_239; __rev2_239 = __builtin_shufflevector(__s2_239, __s2_239, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43814 | uint8x16_t __rev2_239; __rev2_239 = __builtin_shufflevector(__s2_239, __s2_239, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41722 | uint8x16_t __reint_239 = __rev2_239; \ | 43815 | __ret_239 = __noswap_vdotq_u32(__rev0_239, __rev1_239, __builtin_bit_cast(uint8x16_t, __noswap_splatq_laneq_u32(__builtin_bit_cast(uint32x4_t, __rev2_239), __p3_239))); \ |
| 41723 | uint32x4_t __reint1_239 = __noswap_splatq_laneq_u32(*(uint32x4_t *) &__reint_239, __p3_239); \ | ||
| 41724 | __ret_239 = __noswap_vdotq_u32(__rev0_239, __rev1_239, *(uint8x16_t *) &__reint1_239); \ | ||
| 41725 | __ret_239 = __builtin_shufflevector(__ret_239, __ret_239, 3, 2, 1, 0); \ | 43816 | __ret_239 = __builtin_shufflevector(__ret_239, __ret_239, 3, 2, 1, 0); \ |
| 41726 | __ret_239; \ | 43817 | __ret_239; \ |
| 41727 | }) | 43818 | }) |
| ... | @@ -41733,9 +43824,7 @@ uint32x4_t __reint1_239 = __noswap_splatq_laneq_u32(*(uint32x4_t *) &__reint_239 | ... | @@ -41733,9 +43824,7 @@ uint32x4_t __reint1_239 = __noswap_splatq_laneq_u32(*(uint32x4_t *) &__reint_239 |
| 41733 | int32x4_t __s0_240 = __p0_240; \ | 43824 | int32x4_t __s0_240 = __p0_240; \ |
| 41734 | int8x16_t __s1_240 = __p1_240; \ | 43825 | int8x16_t __s1_240 = __p1_240; \ |
| 41735 | int8x16_t __s2_240 = __p2_240; \ | 43826 | int8x16_t __s2_240 = __p2_240; \ |
| 41736 | int8x16_t __reint_240 = __s2_240; \ | 43827 | __ret_240 = vdotq_s32(__s0_240, __s1_240, __builtin_bit_cast(int8x16_t, splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_240), __p3_240))); \ |
| 41737 | int32x4_t __reint1_240 = splatq_laneq_s32(*(int32x4_t *) &__reint_240, __p3_240); \ | ||
| 41738 | __ret_240 = vdotq_s32(__s0_240, __s1_240, *(int8x16_t *) &__reint1_240); \ | ||
| 41739 | __ret_240; \ | 43828 | __ret_240; \ |
| 41740 | }) | 43829 | }) |
| 41741 | #else | 43830 | #else |
| ... | @@ -41747,9 +43836,7 @@ int32x4_t __reint1_240 = splatq_laneq_s32(*(int32x4_t *) &__reint_240, __p3_240) | ... | @@ -41747,9 +43836,7 @@ int32x4_t __reint1_240 = splatq_laneq_s32(*(int32x4_t *) &__reint_240, __p3_240) |
| 41747 | int32x4_t __rev0_241; __rev0_241 = __builtin_shufflevector(__s0_241, __s0_241, 3, 2, 1, 0); \ | 43836 | int32x4_t __rev0_241; __rev0_241 = __builtin_shufflevector(__s0_241, __s0_241, 3, 2, 1, 0); \ |
| 41748 | int8x16_t __rev1_241; __rev1_241 = __builtin_shufflevector(__s1_241, __s1_241, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43837 | int8x16_t __rev1_241; __rev1_241 = __builtin_shufflevector(__s1_241, __s1_241, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41749 | int8x16_t __rev2_241; __rev2_241 = __builtin_shufflevector(__s2_241, __s2_241, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43838 | int8x16_t __rev2_241; __rev2_241 = __builtin_shufflevector(__s2_241, __s2_241, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41750 | int8x16_t __reint_241 = __rev2_241; \ | 43839 | __ret_241 = __noswap_vdotq_s32(__rev0_241, __rev1_241, __builtin_bit_cast(int8x16_t, __noswap_splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_241), __p3_241))); \ |
| 41751 | int32x4_t __reint1_241 = __noswap_splatq_laneq_s32(*(int32x4_t *) &__reint_241, __p3_241); \ | ||
| 41752 | __ret_241 = __noswap_vdotq_s32(__rev0_241, __rev1_241, *(int8x16_t *) &__reint1_241); \ | ||
| 41753 | __ret_241 = __builtin_shufflevector(__ret_241, __ret_241, 3, 2, 1, 0); \ | 43840 | __ret_241 = __builtin_shufflevector(__ret_241, __ret_241, 3, 2, 1, 0); \ |
| 41754 | __ret_241; \ | 43841 | __ret_241; \ |
| 41755 | }) | 43842 | }) |
| ... | @@ -41761,9 +43848,7 @@ int32x4_t __reint1_241 = __noswap_splatq_laneq_s32(*(int32x4_t *) &__reint_241, | ... | @@ -41761,9 +43848,7 @@ int32x4_t __reint1_241 = __noswap_splatq_laneq_s32(*(int32x4_t *) &__reint_241, |
| 41761 | uint32x2_t __s0_242 = __p0_242; \ | 43848 | uint32x2_t __s0_242 = __p0_242; \ |
| 41762 | uint8x8_t __s1_242 = __p1_242; \ | 43849 | uint8x8_t __s1_242 = __p1_242; \ |
| 41763 | uint8x16_t __s2_242 = __p2_242; \ | 43850 | uint8x16_t __s2_242 = __p2_242; \ |
| 41764 | uint8x16_t __reint_242 = __s2_242; \ | 43851 | __ret_242 = vdot_u32(__s0_242, __s1_242, __builtin_bit_cast(uint8x8_t, splat_laneq_u32(__builtin_bit_cast(uint32x4_t, __s2_242), __p3_242))); \ |
| 41765 | uint32x2_t __reint1_242 = splat_laneq_u32(*(uint32x4_t *) &__reint_242, __p3_242); \ | ||
| 41766 | __ret_242 = vdot_u32(__s0_242, __s1_242, *(uint8x8_t *) &__reint1_242); \ | ||
| 41767 | __ret_242; \ | 43852 | __ret_242; \ |
| 41768 | }) | 43853 | }) |
| 41769 | #else | 43854 | #else |
| ... | @@ -41775,9 +43860,7 @@ uint32x2_t __reint1_242 = splat_laneq_u32(*(uint32x4_t *) &__reint_242, __p3_242 | ... | @@ -41775,9 +43860,7 @@ uint32x2_t __reint1_242 = splat_laneq_u32(*(uint32x4_t *) &__reint_242, __p3_242 |
| 41775 | uint32x2_t __rev0_243; __rev0_243 = __builtin_shufflevector(__s0_243, __s0_243, 1, 0); \ | 43860 | uint32x2_t __rev0_243; __rev0_243 = __builtin_shufflevector(__s0_243, __s0_243, 1, 0); \ |
| 41776 | uint8x8_t __rev1_243; __rev1_243 = __builtin_shufflevector(__s1_243, __s1_243, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43861 | uint8x8_t __rev1_243; __rev1_243 = __builtin_shufflevector(__s1_243, __s1_243, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41777 | uint8x16_t __rev2_243; __rev2_243 = __builtin_shufflevector(__s2_243, __s2_243, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43862 | uint8x16_t __rev2_243; __rev2_243 = __builtin_shufflevector(__s2_243, __s2_243, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41778 | uint8x16_t __reint_243 = __rev2_243; \ | 43863 | __ret_243 = __noswap_vdot_u32(__rev0_243, __rev1_243, __builtin_bit_cast(uint8x8_t, __noswap_splat_laneq_u32(__builtin_bit_cast(uint32x4_t, __rev2_243), __p3_243))); \ |
| 41779 | uint32x2_t __reint1_243 = __noswap_splat_laneq_u32(*(uint32x4_t *) &__reint_243, __p3_243); \ | ||
| 41780 | __ret_243 = __noswap_vdot_u32(__rev0_243, __rev1_243, *(uint8x8_t *) &__reint1_243); \ | ||
| 41781 | __ret_243 = __builtin_shufflevector(__ret_243, __ret_243, 1, 0); \ | 43864 | __ret_243 = __builtin_shufflevector(__ret_243, __ret_243, 1, 0); \ |
| 41782 | __ret_243; \ | 43865 | __ret_243; \ |
| 41783 | }) | 43866 | }) |
| ... | @@ -41789,9 +43872,7 @@ uint32x2_t __reint1_243 = __noswap_splat_laneq_u32(*(uint32x4_t *) &__reint_243, | ... | @@ -41789,9 +43872,7 @@ uint32x2_t __reint1_243 = __noswap_splat_laneq_u32(*(uint32x4_t *) &__reint_243, |
| 41789 | int32x2_t __s0_244 = __p0_244; \ | 43872 | int32x2_t __s0_244 = __p0_244; \ |
| 41790 | int8x8_t __s1_244 = __p1_244; \ | 43873 | int8x8_t __s1_244 = __p1_244; \ |
| 41791 | int8x16_t __s2_244 = __p2_244; \ | 43874 | int8x16_t __s2_244 = __p2_244; \ |
| 41792 | int8x16_t __reint_244 = __s2_244; \ | 43875 | __ret_244 = vdot_s32(__s0_244, __s1_244, __builtin_bit_cast(int8x8_t, splat_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_244), __p3_244))); \ |
| 41793 | int32x2_t __reint1_244 = splat_laneq_s32(*(int32x4_t *) &__reint_244, __p3_244); \ | ||
| 41794 | __ret_244 = vdot_s32(__s0_244, __s1_244, *(int8x8_t *) &__reint1_244); \ | ||
| 41795 | __ret_244; \ | 43876 | __ret_244; \ |
| 41796 | }) | 43877 | }) |
| 41797 | #else | 43878 | #else |
| ... | @@ -41803,9 +43884,7 @@ int32x2_t __reint1_244 = splat_laneq_s32(*(int32x4_t *) &__reint_244, __p3_244); | ... | @@ -41803,9 +43884,7 @@ int32x2_t __reint1_244 = splat_laneq_s32(*(int32x4_t *) &__reint_244, __p3_244); |
| 41803 | int32x2_t __rev0_245; __rev0_245 = __builtin_shufflevector(__s0_245, __s0_245, 1, 0); \ | 43884 | int32x2_t __rev0_245; __rev0_245 = __builtin_shufflevector(__s0_245, __s0_245, 1, 0); \ |
| 41804 | int8x8_t __rev1_245; __rev1_245 = __builtin_shufflevector(__s1_245, __s1_245, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43885 | int8x8_t __rev1_245; __rev1_245 = __builtin_shufflevector(__s1_245, __s1_245, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41805 | int8x16_t __rev2_245; __rev2_245 = __builtin_shufflevector(__s2_245, __s2_245, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 43886 | int8x16_t __rev2_245; __rev2_245 = __builtin_shufflevector(__s2_245, __s2_245, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 41806 | int8x16_t __reint_245 = __rev2_245; \ | 43887 | __ret_245 = __noswap_vdot_s32(__rev0_245, __rev1_245, __builtin_bit_cast(int8x8_t, __noswap_splat_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_245), __p3_245))); \ |
| 41807 | int32x2_t __reint1_245 = __noswap_splat_laneq_s32(*(int32x4_t *) &__reint_245, __p3_245); \ | ||
| 41808 | __ret_245 = __noswap_vdot_s32(__rev0_245, __rev1_245, *(int8x8_t *) &__reint1_245); \ | ||
| 41809 | __ret_245 = __builtin_shufflevector(__ret_245, __ret_245, 1, 0); \ | 43888 | __ret_245 = __builtin_shufflevector(__ret_245, __ret_245, 1, 0); \ |
| 41810 | __ret_245; \ | 43889 | __ret_245; \ |
| 41811 | }) | 43890 | }) |
| ... | @@ -43018,8 +45097,7 @@ __ai __attribute__((target("fullfp16,neon"))) float16x4_t vsqrt_f16(float16x4_t | ... | @@ -43018,8 +45097,7 @@ __ai __attribute__((target("fullfp16,neon"))) float16x4_t vsqrt_f16(float16x4_t |
| 43018 | int32x4_t __s0_270 = __p0_270; \ | 45097 | int32x4_t __s0_270 = __p0_270; \ |
| 43019 | int8x16_t __s1_270 = __p1_270; \ | 45098 | int8x16_t __s1_270 = __p1_270; \ |
| 43020 | uint8x16_t __s2_270 = __p2_270; \ | 45099 | uint8x16_t __s2_270 = __p2_270; \ |
| 43021 | uint8x16_t __reint_270 = __s2_270; \ | 45100 | __ret_270 = vusdotq_s32(__s0_270, (uint8x16_t)(splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_270), __p3_270)), __s1_270); \ |
| 43022 | __ret_270 = vusdotq_s32(__s0_270, (uint8x16_t)(splatq_laneq_s32(*(int32x4_t *) &__reint_270, __p3_270)), __s1_270); \ | ||
| 43023 | __ret_270; \ | 45101 | __ret_270; \ |
| 43024 | }) | 45102 | }) |
| 43025 | #else | 45103 | #else |
| ... | @@ -43031,8 +45109,7 @@ uint8x16_t __reint_270 = __s2_270; \ | ... | @@ -43031,8 +45109,7 @@ uint8x16_t __reint_270 = __s2_270; \ |
| 43031 | int32x4_t __rev0_271; __rev0_271 = __builtin_shufflevector(__s0_271, __s0_271, 3, 2, 1, 0); \ | 45109 | int32x4_t __rev0_271; __rev0_271 = __builtin_shufflevector(__s0_271, __s0_271, 3, 2, 1, 0); \ |
| 43032 | int8x16_t __rev1_271; __rev1_271 = __builtin_shufflevector(__s1_271, __s1_271, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45110 | int8x16_t __rev1_271; __rev1_271 = __builtin_shufflevector(__s1_271, __s1_271, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43033 | uint8x16_t __rev2_271; __rev2_271 = __builtin_shufflevector(__s2_271, __s2_271, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45111 | uint8x16_t __rev2_271; __rev2_271 = __builtin_shufflevector(__s2_271, __s2_271, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43034 | uint8x16_t __reint_271 = __rev2_271; \ | 45112 | __ret_271 = __noswap_vusdotq_s32(__rev0_271, (uint8x16_t)(__noswap_splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_271), __p3_271)), __rev1_271); \ |
| 43035 | __ret_271 = __noswap_vusdotq_s32(__rev0_271, (uint8x16_t)(__noswap_splatq_laneq_s32(*(int32x4_t *) &__reint_271, __p3_271)), __rev1_271); \ | ||
| 43036 | __ret_271 = __builtin_shufflevector(__ret_271, __ret_271, 3, 2, 1, 0); \ | 45113 | __ret_271 = __builtin_shufflevector(__ret_271, __ret_271, 3, 2, 1, 0); \ |
| 43037 | __ret_271; \ | 45114 | __ret_271; \ |
| 43038 | }) | 45115 | }) |
| ... | @@ -43044,8 +45121,7 @@ uint8x16_t __reint_271 = __rev2_271; \ | ... | @@ -43044,8 +45121,7 @@ uint8x16_t __reint_271 = __rev2_271; \ |
| 43044 | int32x2_t __s0_272 = __p0_272; \ | 45121 | int32x2_t __s0_272 = __p0_272; \ |
| 43045 | int8x8_t __s1_272 = __p1_272; \ | 45122 | int8x8_t __s1_272 = __p1_272; \ |
| 43046 | uint8x16_t __s2_272 = __p2_272; \ | 45123 | uint8x16_t __s2_272 = __p2_272; \ |
| 43047 | uint8x16_t __reint_272 = __s2_272; \ | 45124 | __ret_272 = vusdot_s32(__s0_272, (uint8x8_t)(splat_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_272), __p3_272)), __s1_272); \ |
| 43048 | __ret_272 = vusdot_s32(__s0_272, (uint8x8_t)(splat_laneq_s32(*(int32x4_t *) &__reint_272, __p3_272)), __s1_272); \ | ||
| 43049 | __ret_272; \ | 45125 | __ret_272; \ |
| 43050 | }) | 45126 | }) |
| 43051 | #else | 45127 | #else |
| ... | @@ -43057,8 +45133,7 @@ uint8x16_t __reint_272 = __s2_272; \ | ... | @@ -43057,8 +45133,7 @@ uint8x16_t __reint_272 = __s2_272; \ |
| 43057 | int32x2_t __rev0_273; __rev0_273 = __builtin_shufflevector(__s0_273, __s0_273, 1, 0); \ | 45133 | int32x2_t __rev0_273; __rev0_273 = __builtin_shufflevector(__s0_273, __s0_273, 1, 0); \ |
| 43058 | int8x8_t __rev1_273; __rev1_273 = __builtin_shufflevector(__s1_273, __s1_273, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45134 | int8x8_t __rev1_273; __rev1_273 = __builtin_shufflevector(__s1_273, __s1_273, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43059 | uint8x16_t __rev2_273; __rev2_273 = __builtin_shufflevector(__s2_273, __s2_273, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45135 | uint8x16_t __rev2_273; __rev2_273 = __builtin_shufflevector(__s2_273, __s2_273, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43060 | uint8x16_t __reint_273 = __rev2_273; \ | 45136 | __ret_273 = __noswap_vusdot_s32(__rev0_273, (uint8x8_t)(__noswap_splat_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_273), __p3_273)), __rev1_273); \ |
| 43061 | __ret_273 = __noswap_vusdot_s32(__rev0_273, (uint8x8_t)(__noswap_splat_laneq_s32(*(int32x4_t *) &__reint_273, __p3_273)), __rev1_273); \ | ||
| 43062 | __ret_273 = __builtin_shufflevector(__ret_273, __ret_273, 1, 0); \ | 45137 | __ret_273 = __builtin_shufflevector(__ret_273, __ret_273, 1, 0); \ |
| 43063 | __ret_273; \ | 45138 | __ret_273; \ |
| 43064 | }) | 45139 | }) |
| ... | @@ -43070,8 +45145,7 @@ uint8x16_t __reint_273 = __rev2_273; \ | ... | @@ -43070,8 +45145,7 @@ uint8x16_t __reint_273 = __rev2_273; \ |
| 43070 | int32x4_t __s0_274 = __p0_274; \ | 45145 | int32x4_t __s0_274 = __p0_274; \ |
| 43071 | uint8x16_t __s1_274 = __p1_274; \ | 45146 | uint8x16_t __s1_274 = __p1_274; \ |
| 43072 | int8x16_t __s2_274 = __p2_274; \ | 45147 | int8x16_t __s2_274 = __p2_274; \ |
| 43073 | int8x16_t __reint_274 = __s2_274; \ | 45148 | __ret_274 = vusdotq_s32(__s0_274, __s1_274, (int8x16_t)(splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_274), __p3_274))); \ |
| 43074 | __ret_274 = vusdotq_s32(__s0_274, __s1_274, (int8x16_t)(splatq_laneq_s32(*(int32x4_t *) &__reint_274, __p3_274))); \ | ||
| 43075 | __ret_274; \ | 45149 | __ret_274; \ |
| 43076 | }) | 45150 | }) |
| 43077 | #else | 45151 | #else |
| ... | @@ -43083,8 +45157,7 @@ int8x16_t __reint_274 = __s2_274; \ | ... | @@ -43083,8 +45157,7 @@ int8x16_t __reint_274 = __s2_274; \ |
| 43083 | int32x4_t __rev0_275; __rev0_275 = __builtin_shufflevector(__s0_275, __s0_275, 3, 2, 1, 0); \ | 45157 | int32x4_t __rev0_275; __rev0_275 = __builtin_shufflevector(__s0_275, __s0_275, 3, 2, 1, 0); \ |
| 43084 | uint8x16_t __rev1_275; __rev1_275 = __builtin_shufflevector(__s1_275, __s1_275, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45158 | uint8x16_t __rev1_275; __rev1_275 = __builtin_shufflevector(__s1_275, __s1_275, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43085 | int8x16_t __rev2_275; __rev2_275 = __builtin_shufflevector(__s2_275, __s2_275, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45159 | int8x16_t __rev2_275; __rev2_275 = __builtin_shufflevector(__s2_275, __s2_275, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43086 | int8x16_t __reint_275 = __rev2_275; \ | 45160 | __ret_275 = __noswap_vusdotq_s32(__rev0_275, __rev1_275, (int8x16_t)(__noswap_splatq_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_275), __p3_275))); \ |
| 43087 | __ret_275 = __noswap_vusdotq_s32(__rev0_275, __rev1_275, (int8x16_t)(__noswap_splatq_laneq_s32(*(int32x4_t *) &__reint_275, __p3_275))); \ | ||
| 43088 | __ret_275 = __builtin_shufflevector(__ret_275, __ret_275, 3, 2, 1, 0); \ | 45161 | __ret_275 = __builtin_shufflevector(__ret_275, __ret_275, 3, 2, 1, 0); \ |
| 43089 | __ret_275; \ | 45162 | __ret_275; \ |
| 43090 | }) | 45163 | }) |
| ... | @@ -43096,8 +45169,7 @@ int8x16_t __reint_275 = __rev2_275; \ | ... | @@ -43096,8 +45169,7 @@ int8x16_t __reint_275 = __rev2_275; \ |
| 43096 | int32x2_t __s0_276 = __p0_276; \ | 45169 | int32x2_t __s0_276 = __p0_276; \ |
| 43097 | uint8x8_t __s1_276 = __p1_276; \ | 45170 | uint8x8_t __s1_276 = __p1_276; \ |
| 43098 | int8x16_t __s2_276 = __p2_276; \ | 45171 | int8x16_t __s2_276 = __p2_276; \ |
| 43099 | int8x16_t __reint_276 = __s2_276; \ | 45172 | __ret_276 = vusdot_s32(__s0_276, __s1_276, (int8x8_t)(splat_laneq_s32(__builtin_bit_cast(int32x4_t, __s2_276), __p3_276))); \ |
| 43100 | __ret_276 = vusdot_s32(__s0_276, __s1_276, (int8x8_t)(splat_laneq_s32(*(int32x4_t *) &__reint_276, __p3_276))); \ | ||
| 43101 | __ret_276; \ | 45173 | __ret_276; \ |
| 43102 | }) | 45174 | }) |
| 43103 | #else | 45175 | #else |
| ... | @@ -43109,8 +45181,7 @@ int8x16_t __reint_276 = __s2_276; \ | ... | @@ -43109,8 +45181,7 @@ int8x16_t __reint_276 = __s2_276; \ |
| 43109 | int32x2_t __rev0_277; __rev0_277 = __builtin_shufflevector(__s0_277, __s0_277, 1, 0); \ | 45181 | int32x2_t __rev0_277; __rev0_277 = __builtin_shufflevector(__s0_277, __s0_277, 1, 0); \ |
| 43110 | uint8x8_t __rev1_277; __rev1_277 = __builtin_shufflevector(__s1_277, __s1_277, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45182 | uint8x8_t __rev1_277; __rev1_277 = __builtin_shufflevector(__s1_277, __s1_277, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43111 | int8x16_t __rev2_277; __rev2_277 = __builtin_shufflevector(__s2_277, __s2_277, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 45183 | int8x16_t __rev2_277; __rev2_277 = __builtin_shufflevector(__s2_277, __s2_277, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 43112 | int8x16_t __reint_277 = __rev2_277; \ | 45184 | __ret_277 = __noswap_vusdot_s32(__rev0_277, __rev1_277, (int8x8_t)(__noswap_splat_laneq_s32(__builtin_bit_cast(int32x4_t, __rev2_277), __p3_277))); \ |
| 43113 | __ret_277 = __noswap_vusdot_s32(__rev0_277, __rev1_277, (int8x8_t)(__noswap_splat_laneq_s32(*(int32x4_t *) &__reint_277, __p3_277))); \ | ||
| 43114 | __ret_277 = __builtin_shufflevector(__ret_277, __ret_277, 1, 0); \ | 45185 | __ret_277 = __builtin_shufflevector(__ret_277, __ret_277, 1, 0); \ |
| 43115 | __ret_277; \ | 45186 | __ret_277; \ |
| 43116 | }) | 45187 | }) |
| ... | @@ -57773,6 +59844,11 @@ __ai __attribute__((target("neon"))) poly8x8_t vreinterpret_p8_s64(int64x1_t __p | ... | @@ -57773,6 +59844,11 @@ __ai __attribute__((target("neon"))) poly8x8_t vreinterpret_p8_s64(int64x1_t __p |
| 57773 | __ret = (poly8x8_t)(__p0); | 59844 | __ret = (poly8x8_t)(__p0); |
| 57774 | return __ret; | 59845 | return __ret; |
| 57775 | } | 59846 | } |
| 59847 | __ai __attribute__((target("neon"))) poly8x8_t vreinterpret_p8_mf8(mfloat8x8_t __p0) { | ||
| 59848 | poly8x8_t __ret; | ||
| 59849 | __ret = (poly8x8_t)(__p0); | ||
| 59850 | return __ret; | ||
| 59851 | } | ||
| 57776 | __ai __attribute__((target("neon"))) poly8x8_t vreinterpret_p8_s16(int16x4_t __p0) { | 59852 | __ai __attribute__((target("neon"))) poly8x8_t vreinterpret_p8_s16(int16x4_t __p0) { |
| 57777 | poly8x8_t __ret; | 59853 | poly8x8_t __ret; |
| 57778 | __ret = (poly8x8_t)(__p0); | 59854 | __ret = (poly8x8_t)(__p0); |
| ... | @@ -57838,6 +59914,11 @@ __ai __attribute__((target("neon"))) poly64x1_t vreinterpret_p64_s64(int64x1_t _ | ... | @@ -57838,6 +59914,11 @@ __ai __attribute__((target("neon"))) poly64x1_t vreinterpret_p64_s64(int64x1_t _ |
| 57838 | __ret = (poly64x1_t)(__p0); | 59914 | __ret = (poly64x1_t)(__p0); |
| 57839 | return __ret; | 59915 | return __ret; |
| 57840 | } | 59916 | } |
| 59917 | __ai __attribute__((target("neon"))) poly64x1_t vreinterpret_p64_mf8(mfloat8x8_t __p0) { | ||
| 59918 | poly64x1_t __ret; | ||
| 59919 | __ret = (poly64x1_t)(__p0); | ||
| 59920 | return __ret; | ||
| 59921 | } | ||
| 57841 | __ai __attribute__((target("neon"))) poly64x1_t vreinterpret_p64_s16(int16x4_t __p0) { | 59922 | __ai __attribute__((target("neon"))) poly64x1_t vreinterpret_p64_s16(int16x4_t __p0) { |
| 57842 | poly64x1_t __ret; | 59923 | poly64x1_t __ret; |
| 57843 | __ret = (poly64x1_t)(__p0); | 59924 | __ret = (poly64x1_t)(__p0); |
| ... | @@ -57903,6 +59984,11 @@ __ai __attribute__((target("neon"))) poly16x4_t vreinterpret_p16_s64(int64x1_t _ | ... | @@ -57903,6 +59984,11 @@ __ai __attribute__((target("neon"))) poly16x4_t vreinterpret_p16_s64(int64x1_t _ |
| 57903 | __ret = (poly16x4_t)(__p0); | 59984 | __ret = (poly16x4_t)(__p0); |
| 57904 | return __ret; | 59985 | return __ret; |
| 57905 | } | 59986 | } |
| 59987 | __ai __attribute__((target("neon"))) poly16x4_t vreinterpret_p16_mf8(mfloat8x8_t __p0) { | ||
| 59988 | poly16x4_t __ret; | ||
| 59989 | __ret = (poly16x4_t)(__p0); | ||
| 59990 | return __ret; | ||
| 59991 | } | ||
| 57906 | __ai __attribute__((target("neon"))) poly16x4_t vreinterpret_p16_s16(int16x4_t __p0) { | 59992 | __ai __attribute__((target("neon"))) poly16x4_t vreinterpret_p16_s16(int16x4_t __p0) { |
| 57907 | poly16x4_t __ret; | 59993 | poly16x4_t __ret; |
| 57908 | __ret = (poly16x4_t)(__p0); | 59994 | __ret = (poly16x4_t)(__p0); |
| ... | @@ -57973,6 +60059,11 @@ __ai __attribute__((target("neon"))) poly8x16_t vreinterpretq_p8_s64(int64x2_t _ | ... | @@ -57973,6 +60059,11 @@ __ai __attribute__((target("neon"))) poly8x16_t vreinterpretq_p8_s64(int64x2_t _ |
| 57973 | __ret = (poly8x16_t)(__p0); | 60059 | __ret = (poly8x16_t)(__p0); |
| 57974 | return __ret; | 60060 | return __ret; |
| 57975 | } | 60061 | } |
| 60062 | __ai __attribute__((target("neon"))) poly8x16_t vreinterpretq_p8_mf8(mfloat8x16_t __p0) { | ||
| 60063 | poly8x16_t __ret; | ||
| 60064 | __ret = (poly8x16_t)(__p0); | ||
| 60065 | return __ret; | ||
| 60066 | } | ||
| 57976 | __ai __attribute__((target("neon"))) poly8x16_t vreinterpretq_p8_s16(int16x8_t __p0) { | 60067 | __ai __attribute__((target("neon"))) poly8x16_t vreinterpretq_p8_s16(int16x8_t __p0) { |
| 57977 | poly8x16_t __ret; | 60068 | poly8x16_t __ret; |
| 57978 | __ret = (poly8x16_t)(__p0); | 60069 | __ret = (poly8x16_t)(__p0); |
| ... | @@ -58043,6 +60134,11 @@ __ai __attribute__((target("neon"))) poly128_t vreinterpretq_p128_s64(int64x2_t | ... | @@ -58043,6 +60134,11 @@ __ai __attribute__((target("neon"))) poly128_t vreinterpretq_p128_s64(int64x2_t |
| 58043 | __ret = (poly128_t)(__p0); | 60134 | __ret = (poly128_t)(__p0); |
| 58044 | return __ret; | 60135 | return __ret; |
| 58045 | } | 60136 | } |
| 60137 | __ai __attribute__((target("neon"))) poly128_t vreinterpretq_p128_mf8(mfloat8x16_t __p0) { | ||
| 60138 | poly128_t __ret; | ||
| 60139 | __ret = (poly128_t)(__p0); | ||
| 60140 | return __ret; | ||
| 60141 | } | ||
| 58046 | __ai __attribute__((target("neon"))) poly128_t vreinterpretq_p128_s16(int16x8_t __p0) { | 60142 | __ai __attribute__((target("neon"))) poly128_t vreinterpretq_p128_s16(int16x8_t __p0) { |
| 58047 | poly128_t __ret; | 60143 | poly128_t __ret; |
| 58048 | __ret = (poly128_t)(__p0); | 60144 | __ret = (poly128_t)(__p0); |
| ... | @@ -58113,6 +60209,11 @@ __ai __attribute__((target("neon"))) poly64x2_t vreinterpretq_p64_s64(int64x2_t | ... | @@ -58113,6 +60209,11 @@ __ai __attribute__((target("neon"))) poly64x2_t vreinterpretq_p64_s64(int64x2_t |
| 58113 | __ret = (poly64x2_t)(__p0); | 60209 | __ret = (poly64x2_t)(__p0); |
| 58114 | return __ret; | 60210 | return __ret; |
| 58115 | } | 60211 | } |
| 60212 | __ai __attribute__((target("neon"))) poly64x2_t vreinterpretq_p64_mf8(mfloat8x16_t __p0) { | ||
| 60213 | poly64x2_t __ret; | ||
| 60214 | __ret = (poly64x2_t)(__p0); | ||
| 60215 | return __ret; | ||
| 60216 | } | ||
| 58116 | __ai __attribute__((target("neon"))) poly64x2_t vreinterpretq_p64_s16(int16x8_t __p0) { | 60217 | __ai __attribute__((target("neon"))) poly64x2_t vreinterpretq_p64_s16(int16x8_t __p0) { |
| 58117 | poly64x2_t __ret; | 60218 | poly64x2_t __ret; |
| 58118 | __ret = (poly64x2_t)(__p0); | 60219 | __ret = (poly64x2_t)(__p0); |
| ... | @@ -58183,6 +60284,11 @@ __ai __attribute__((target("neon"))) poly16x8_t vreinterpretq_p16_s64(int64x2_t | ... | @@ -58183,6 +60284,11 @@ __ai __attribute__((target("neon"))) poly16x8_t vreinterpretq_p16_s64(int64x2_t |
| 58183 | __ret = (poly16x8_t)(__p0); | 60284 | __ret = (poly16x8_t)(__p0); |
| 58184 | return __ret; | 60285 | return __ret; |
| 58185 | } | 60286 | } |
| 60287 | __ai __attribute__((target("neon"))) poly16x8_t vreinterpretq_p16_mf8(mfloat8x16_t __p0) { | ||
| 60288 | poly16x8_t __ret; | ||
| 60289 | __ret = (poly16x8_t)(__p0); | ||
| 60290 | return __ret; | ||
| 60291 | } | ||
| 58186 | __ai __attribute__((target("neon"))) poly16x8_t vreinterpretq_p16_s16(int16x8_t __p0) { | 60292 | __ai __attribute__((target("neon"))) poly16x8_t vreinterpretq_p16_s16(int16x8_t __p0) { |
| 58187 | poly16x8_t __ret; | 60293 | poly16x8_t __ret; |
| 58188 | __ret = (poly16x8_t)(__p0); | 60294 | __ret = (poly16x8_t)(__p0); |
| ... | @@ -58253,6 +60359,11 @@ __ai __attribute__((target("neon"))) uint8x16_t vreinterpretq_u8_s64(int64x2_t _ | ... | @@ -58253,6 +60359,11 @@ __ai __attribute__((target("neon"))) uint8x16_t vreinterpretq_u8_s64(int64x2_t _ |
| 58253 | __ret = (uint8x16_t)(__p0); | 60359 | __ret = (uint8x16_t)(__p0); |
| 58254 | return __ret; | 60360 | return __ret; |
| 58255 | } | 60361 | } |
| 60362 | __ai __attribute__((target("neon"))) uint8x16_t vreinterpretq_u8_mf8(mfloat8x16_t __p0) { | ||
| 60363 | uint8x16_t __ret; | ||
| 60364 | __ret = (uint8x16_t)(__p0); | ||
| 60365 | return __ret; | ||
| 60366 | } | ||
| 58256 | __ai __attribute__((target("neon"))) uint8x16_t vreinterpretq_u8_s16(int16x8_t __p0) { | 60367 | __ai __attribute__((target("neon"))) uint8x16_t vreinterpretq_u8_s16(int16x8_t __p0) { |
| 58257 | uint8x16_t __ret; | 60368 | uint8x16_t __ret; |
| 58258 | __ret = (uint8x16_t)(__p0); | 60369 | __ret = (uint8x16_t)(__p0); |
| ... | @@ -58323,6 +60434,11 @@ __ai __attribute__((target("neon"))) uint32x4_t vreinterpretq_u32_s64(int64x2_t | ... | @@ -58323,6 +60434,11 @@ __ai __attribute__((target("neon"))) uint32x4_t vreinterpretq_u32_s64(int64x2_t |
| 58323 | __ret = (uint32x4_t)(__p0); | 60434 | __ret = (uint32x4_t)(__p0); |
| 58324 | return __ret; | 60435 | return __ret; |
| 58325 | } | 60436 | } |
| 60437 | __ai __attribute__((target("neon"))) uint32x4_t vreinterpretq_u32_mf8(mfloat8x16_t __p0) { | ||
| 60438 | uint32x4_t __ret; | ||
| 60439 | __ret = (uint32x4_t)(__p0); | ||
| 60440 | return __ret; | ||
| 60441 | } | ||
| 58326 | __ai __attribute__((target("neon"))) uint32x4_t vreinterpretq_u32_s16(int16x8_t __p0) { | 60442 | __ai __attribute__((target("neon"))) uint32x4_t vreinterpretq_u32_s16(int16x8_t __p0) { |
| 58327 | uint32x4_t __ret; | 60443 | uint32x4_t __ret; |
| 58328 | __ret = (uint32x4_t)(__p0); | 60444 | __ret = (uint32x4_t)(__p0); |
| ... | @@ -58393,6 +60509,11 @@ __ai __attribute__((target("neon"))) uint64x2_t vreinterpretq_u64_s64(int64x2_t | ... | @@ -58393,6 +60509,11 @@ __ai __attribute__((target("neon"))) uint64x2_t vreinterpretq_u64_s64(int64x2_t |
| 58393 | __ret = (uint64x2_t)(__p0); | 60509 | __ret = (uint64x2_t)(__p0); |
| 58394 | return __ret; | 60510 | return __ret; |
| 58395 | } | 60511 | } |
| 60512 | __ai __attribute__((target("neon"))) uint64x2_t vreinterpretq_u64_mf8(mfloat8x16_t __p0) { | ||
| 60513 | uint64x2_t __ret; | ||
| 60514 | __ret = (uint64x2_t)(__p0); | ||
| 60515 | return __ret; | ||
| 60516 | } | ||
| 58396 | __ai __attribute__((target("neon"))) uint64x2_t vreinterpretq_u64_s16(int16x8_t __p0) { | 60517 | __ai __attribute__((target("neon"))) uint64x2_t vreinterpretq_u64_s16(int16x8_t __p0) { |
| 58397 | uint64x2_t __ret; | 60518 | uint64x2_t __ret; |
| 58398 | __ret = (uint64x2_t)(__p0); | 60519 | __ret = (uint64x2_t)(__p0); |
| ... | @@ -58463,6 +60584,11 @@ __ai __attribute__((target("neon"))) uint16x8_t vreinterpretq_u16_s64(int64x2_t | ... | @@ -58463,6 +60584,11 @@ __ai __attribute__((target("neon"))) uint16x8_t vreinterpretq_u16_s64(int64x2_t |
| 58463 | __ret = (uint16x8_t)(__p0); | 60584 | __ret = (uint16x8_t)(__p0); |
| 58464 | return __ret; | 60585 | return __ret; |
| 58465 | } | 60586 | } |
| 60587 | __ai __attribute__((target("neon"))) uint16x8_t vreinterpretq_u16_mf8(mfloat8x16_t __p0) { | ||
| 60588 | uint16x8_t __ret; | ||
| 60589 | __ret = (uint16x8_t)(__p0); | ||
| 60590 | return __ret; | ||
| 60591 | } | ||
| 58466 | __ai __attribute__((target("neon"))) uint16x8_t vreinterpretq_u16_s16(int16x8_t __p0) { | 60592 | __ai __attribute__((target("neon"))) uint16x8_t vreinterpretq_u16_s16(int16x8_t __p0) { |
| 58467 | uint16x8_t __ret; | 60593 | uint16x8_t __ret; |
| 58468 | __ret = (uint16x8_t)(__p0); | 60594 | __ret = (uint16x8_t)(__p0); |
| ... | @@ -58533,6 +60659,11 @@ __ai __attribute__((target("neon"))) int8x16_t vreinterpretq_s8_s64(int64x2_t __ | ... | @@ -58533,6 +60659,11 @@ __ai __attribute__((target("neon"))) int8x16_t vreinterpretq_s8_s64(int64x2_t __ |
| 58533 | __ret = (int8x16_t)(__p0); | 60659 | __ret = (int8x16_t)(__p0); |
| 58534 | return __ret; | 60660 | return __ret; |
| 58535 | } | 60661 | } |
| 60662 | __ai __attribute__((target("neon"))) int8x16_t vreinterpretq_s8_mf8(mfloat8x16_t __p0) { | ||
| 60663 | int8x16_t __ret; | ||
| 60664 | __ret = (int8x16_t)(__p0); | ||
| 60665 | return __ret; | ||
| 60666 | } | ||
| 58536 | __ai __attribute__((target("neon"))) int8x16_t vreinterpretq_s8_s16(int16x8_t __p0) { | 60667 | __ai __attribute__((target("neon"))) int8x16_t vreinterpretq_s8_s16(int16x8_t __p0) { |
| 58537 | int8x16_t __ret; | 60668 | int8x16_t __ret; |
| 58538 | __ret = (int8x16_t)(__p0); | 60669 | __ret = (int8x16_t)(__p0); |
| ... | @@ -58603,6 +60734,11 @@ __ai __attribute__((target("neon"))) float64x2_t vreinterpretq_f64_s64(int64x2_t | ... | @@ -58603,6 +60734,11 @@ __ai __attribute__((target("neon"))) float64x2_t vreinterpretq_f64_s64(int64x2_t |
| 58603 | __ret = (float64x2_t)(__p0); | 60734 | __ret = (float64x2_t)(__p0); |
| 58604 | return __ret; | 60735 | return __ret; |
| 58605 | } | 60736 | } |
| 60737 | __ai __attribute__((target("neon"))) float64x2_t vreinterpretq_f64_mf8(mfloat8x16_t __p0) { | ||
| 60738 | float64x2_t __ret; | ||
| 60739 | __ret = (float64x2_t)(__p0); | ||
| 60740 | return __ret; | ||
| 60741 | } | ||
| 58606 | __ai __attribute__((target("neon"))) float64x2_t vreinterpretq_f64_s16(int16x8_t __p0) { | 60742 | __ai __attribute__((target("neon"))) float64x2_t vreinterpretq_f64_s16(int16x8_t __p0) { |
| 58607 | float64x2_t __ret; | 60743 | float64x2_t __ret; |
| 58608 | __ret = (float64x2_t)(__p0); | 60744 | __ret = (float64x2_t)(__p0); |
| ... | @@ -58673,6 +60809,11 @@ __ai __attribute__((target("neon"))) float32x4_t vreinterpretq_f32_s64(int64x2_t | ... | @@ -58673,6 +60809,11 @@ __ai __attribute__((target("neon"))) float32x4_t vreinterpretq_f32_s64(int64x2_t |
| 58673 | __ret = (float32x4_t)(__p0); | 60809 | __ret = (float32x4_t)(__p0); |
| 58674 | return __ret; | 60810 | return __ret; |
| 58675 | } | 60811 | } |
| 60812 | __ai __attribute__((target("neon"))) float32x4_t vreinterpretq_f32_mf8(mfloat8x16_t __p0) { | ||
| 60813 | float32x4_t __ret; | ||
| 60814 | __ret = (float32x4_t)(__p0); | ||
| 60815 | return __ret; | ||
| 60816 | } | ||
| 58676 | __ai __attribute__((target("neon"))) float32x4_t vreinterpretq_f32_s16(int16x8_t __p0) { | 60817 | __ai __attribute__((target("neon"))) float32x4_t vreinterpretq_f32_s16(int16x8_t __p0) { |
| 58677 | float32x4_t __ret; | 60818 | float32x4_t __ret; |
| 58678 | __ret = (float32x4_t)(__p0); | 60819 | __ret = (float32x4_t)(__p0); |
| ... | @@ -58743,6 +60884,11 @@ __ai __attribute__((target("neon"))) float16x8_t vreinterpretq_f16_s64(int64x2_t | ... | @@ -58743,6 +60884,11 @@ __ai __attribute__((target("neon"))) float16x8_t vreinterpretq_f16_s64(int64x2_t |
| 58743 | __ret = (float16x8_t)(__p0); | 60884 | __ret = (float16x8_t)(__p0); |
| 58744 | return __ret; | 60885 | return __ret; |
| 58745 | } | 60886 | } |
| 60887 | __ai __attribute__((target("neon"))) float16x8_t vreinterpretq_f16_mf8(mfloat8x16_t __p0) { | ||
| 60888 | float16x8_t __ret; | ||
| 60889 | __ret = (float16x8_t)(__p0); | ||
| 60890 | return __ret; | ||
| 60891 | } | ||
| 58746 | __ai __attribute__((target("neon"))) float16x8_t vreinterpretq_f16_s16(int16x8_t __p0) { | 60892 | __ai __attribute__((target("neon"))) float16x8_t vreinterpretq_f16_s16(int16x8_t __p0) { |
| 58747 | float16x8_t __ret; | 60893 | float16x8_t __ret; |
| 58748 | __ret = (float16x8_t)(__p0); | 60894 | __ret = (float16x8_t)(__p0); |
| ... | @@ -58813,6 +60959,11 @@ __ai __attribute__((target("neon"))) int32x4_t vreinterpretq_s32_s64(int64x2_t _ | ... | @@ -58813,6 +60959,11 @@ __ai __attribute__((target("neon"))) int32x4_t vreinterpretq_s32_s64(int64x2_t _ |
| 58813 | __ret = (int32x4_t)(__p0); | 60959 | __ret = (int32x4_t)(__p0); |
| 58814 | return __ret; | 60960 | return __ret; |
| 58815 | } | 60961 | } |
| 60962 | __ai __attribute__((target("neon"))) int32x4_t vreinterpretq_s32_mf8(mfloat8x16_t __p0) { | ||
| 60963 | int32x4_t __ret; | ||
| 60964 | __ret = (int32x4_t)(__p0); | ||
| 60965 | return __ret; | ||
| 60966 | } | ||
| 58816 | __ai __attribute__((target("neon"))) int32x4_t vreinterpretq_s32_s16(int16x8_t __p0) { | 60967 | __ai __attribute__((target("neon"))) int32x4_t vreinterpretq_s32_s16(int16x8_t __p0) { |
| 58817 | int32x4_t __ret; | 60968 | int32x4_t __ret; |
| 58818 | __ret = (int32x4_t)(__p0); | 60969 | __ret = (int32x4_t)(__p0); |
| ... | @@ -58883,11 +61034,91 @@ __ai __attribute__((target("neon"))) int64x2_t vreinterpretq_s64_s32(int32x4_t _ | ... | @@ -58883,11 +61034,91 @@ __ai __attribute__((target("neon"))) int64x2_t vreinterpretq_s64_s32(int32x4_t _ |
| 58883 | __ret = (int64x2_t)(__p0); | 61034 | __ret = (int64x2_t)(__p0); |
| 58884 | return __ret; | 61035 | return __ret; |
| 58885 | } | 61036 | } |
| 61037 | __ai __attribute__((target("neon"))) int64x2_t vreinterpretq_s64_mf8(mfloat8x16_t __p0) { | ||
| 61038 | int64x2_t __ret; | ||
| 61039 | __ret = (int64x2_t)(__p0); | ||
| 61040 | return __ret; | ||
| 61041 | } | ||
| 58886 | __ai __attribute__((target("neon"))) int64x2_t vreinterpretq_s64_s16(int16x8_t __p0) { | 61042 | __ai __attribute__((target("neon"))) int64x2_t vreinterpretq_s64_s16(int16x8_t __p0) { |
| 58887 | int64x2_t __ret; | 61043 | int64x2_t __ret; |
| 58888 | __ret = (int64x2_t)(__p0); | 61044 | __ret = (int64x2_t)(__p0); |
| 58889 | return __ret; | 61045 | return __ret; |
| 58890 | } | 61046 | } |
| 61047 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_p8(poly8x16_t __p0) { | ||
| 61048 | mfloat8x16_t __ret; | ||
| 61049 | __ret = (mfloat8x16_t)(__p0); | ||
| 61050 | return __ret; | ||
| 61051 | } | ||
| 61052 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_p128(poly128_t __p0) { | ||
| 61053 | mfloat8x16_t __ret; | ||
| 61054 | __ret = (mfloat8x16_t)(__p0); | ||
| 61055 | return __ret; | ||
| 61056 | } | ||
| 61057 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_p64(poly64x2_t __p0) { | ||
| 61058 | mfloat8x16_t __ret; | ||
| 61059 | __ret = (mfloat8x16_t)(__p0); | ||
| 61060 | return __ret; | ||
| 61061 | } | ||
| 61062 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_p16(poly16x8_t __p0) { | ||
| 61063 | mfloat8x16_t __ret; | ||
| 61064 | __ret = (mfloat8x16_t)(__p0); | ||
| 61065 | return __ret; | ||
| 61066 | } | ||
| 61067 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_u8(uint8x16_t __p0) { | ||
| 61068 | mfloat8x16_t __ret; | ||
| 61069 | __ret = (mfloat8x16_t)(__p0); | ||
| 61070 | return __ret; | ||
| 61071 | } | ||
| 61072 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_u32(uint32x4_t __p0) { | ||
| 61073 | mfloat8x16_t __ret; | ||
| 61074 | __ret = (mfloat8x16_t)(__p0); | ||
| 61075 | return __ret; | ||
| 61076 | } | ||
| 61077 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_u64(uint64x2_t __p0) { | ||
| 61078 | mfloat8x16_t __ret; | ||
| 61079 | __ret = (mfloat8x16_t)(__p0); | ||
| 61080 | return __ret; | ||
| 61081 | } | ||
| 61082 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_u16(uint16x8_t __p0) { | ||
| 61083 | mfloat8x16_t __ret; | ||
| 61084 | __ret = (mfloat8x16_t)(__p0); | ||
| 61085 | return __ret; | ||
| 61086 | } | ||
| 61087 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_s8(int8x16_t __p0) { | ||
| 61088 | mfloat8x16_t __ret; | ||
| 61089 | __ret = (mfloat8x16_t)(__p0); | ||
| 61090 | return __ret; | ||
| 61091 | } | ||
| 61092 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_f64(float64x2_t __p0) { | ||
| 61093 | mfloat8x16_t __ret; | ||
| 61094 | __ret = (mfloat8x16_t)(__p0); | ||
| 61095 | return __ret; | ||
| 61096 | } | ||
| 61097 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_f32(float32x4_t __p0) { | ||
| 61098 | mfloat8x16_t __ret; | ||
| 61099 | __ret = (mfloat8x16_t)(__p0); | ||
| 61100 | return __ret; | ||
| 61101 | } | ||
| 61102 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_f16(float16x8_t __p0) { | ||
| 61103 | mfloat8x16_t __ret; | ||
| 61104 | __ret = (mfloat8x16_t)(__p0); | ||
| 61105 | return __ret; | ||
| 61106 | } | ||
| 61107 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_s32(int32x4_t __p0) { | ||
| 61108 | mfloat8x16_t __ret; | ||
| 61109 | __ret = (mfloat8x16_t)(__p0); | ||
| 61110 | return __ret; | ||
| 61111 | } | ||
| 61112 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_s64(int64x2_t __p0) { | ||
| 61113 | mfloat8x16_t __ret; | ||
| 61114 | __ret = (mfloat8x16_t)(__p0); | ||
| 61115 | return __ret; | ||
| 61116 | } | ||
| 61117 | __ai __attribute__((target("neon"))) mfloat8x16_t vreinterpretq_mf8_s16(int16x8_t __p0) { | ||
| 61118 | mfloat8x16_t __ret; | ||
| 61119 | __ret = (mfloat8x16_t)(__p0); | ||
| 61120 | return __ret; | ||
| 61121 | } | ||
| 58891 | __ai __attribute__((target("neon"))) int16x8_t vreinterpretq_s16_p8(poly8x16_t __p0) { | 61122 | __ai __attribute__((target("neon"))) int16x8_t vreinterpretq_s16_p8(poly8x16_t __p0) { |
| 58892 | int16x8_t __ret; | 61123 | int16x8_t __ret; |
| 58893 | __ret = (int16x8_t)(__p0); | 61124 | __ret = (int16x8_t)(__p0); |
| ... | @@ -58958,6 +61189,11 @@ __ai __attribute__((target("neon"))) int16x8_t vreinterpretq_s16_s64(int64x2_t _ | ... | @@ -58958,6 +61189,11 @@ __ai __attribute__((target("neon"))) int16x8_t vreinterpretq_s16_s64(int64x2_t _ |
| 58958 | __ret = (int16x8_t)(__p0); | 61189 | __ret = (int16x8_t)(__p0); |
| 58959 | return __ret; | 61190 | return __ret; |
| 58960 | } | 61191 | } |
| 61192 | __ai __attribute__((target("neon"))) int16x8_t vreinterpretq_s16_mf8(mfloat8x16_t __p0) { | ||
| 61193 | int16x8_t __ret; | ||
| 61194 | __ret = (int16x8_t)(__p0); | ||
| 61195 | return __ret; | ||
| 61196 | } | ||
| 58961 | __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_p8(poly8x8_t __p0) { | 61197 | __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_p8(poly8x8_t __p0) { |
| 58962 | uint8x8_t __ret; | 61198 | uint8x8_t __ret; |
| 58963 | __ret = (uint8x8_t)(__p0); | 61199 | __ret = (uint8x8_t)(__p0); |
| ... | @@ -59018,6 +61254,11 @@ __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_s64(int64x1_t __p | ... | @@ -59018,6 +61254,11 @@ __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_s64(int64x1_t __p |
| 59018 | __ret = (uint8x8_t)(__p0); | 61254 | __ret = (uint8x8_t)(__p0); |
| 59019 | return __ret; | 61255 | return __ret; |
| 59020 | } | 61256 | } |
| 61257 | __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_mf8(mfloat8x8_t __p0) { | ||
| 61258 | uint8x8_t __ret; | ||
| 61259 | __ret = (uint8x8_t)(__p0); | ||
| 61260 | return __ret; | ||
| 61261 | } | ||
| 59021 | __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_s16(int16x4_t __p0) { | 61262 | __ai __attribute__((target("neon"))) uint8x8_t vreinterpret_u8_s16(int16x4_t __p0) { |
| 59022 | uint8x8_t __ret; | 61263 | uint8x8_t __ret; |
| 59023 | __ret = (uint8x8_t)(__p0); | 61264 | __ret = (uint8x8_t)(__p0); |
| ... | @@ -59083,6 +61324,11 @@ __ai __attribute__((target("neon"))) uint32x2_t vreinterpret_u32_s64(int64x1_t _ | ... | @@ -59083,6 +61324,11 @@ __ai __attribute__((target("neon"))) uint32x2_t vreinterpret_u32_s64(int64x1_t _ |
| 59083 | __ret = (uint32x2_t)(__p0); | 61324 | __ret = (uint32x2_t)(__p0); |
| 59084 | return __ret; | 61325 | return __ret; |
| 59085 | } | 61326 | } |
| 61327 | __ai __attribute__((target("neon"))) uint32x2_t vreinterpret_u32_mf8(mfloat8x8_t __p0) { | ||
| 61328 | uint32x2_t __ret; | ||
| 61329 | __ret = (uint32x2_t)(__p0); | ||
| 61330 | return __ret; | ||
| 61331 | } | ||
| 59086 | __ai __attribute__((target("neon"))) uint32x2_t vreinterpret_u32_s16(int16x4_t __p0) { | 61332 | __ai __attribute__((target("neon"))) uint32x2_t vreinterpret_u32_s16(int16x4_t __p0) { |
| 59087 | uint32x2_t __ret; | 61333 | uint32x2_t __ret; |
| 59088 | __ret = (uint32x2_t)(__p0); | 61334 | __ret = (uint32x2_t)(__p0); |
| ... | @@ -59148,6 +61394,11 @@ __ai __attribute__((target("neon"))) uint64x1_t vreinterpret_u64_s64(int64x1_t _ | ... | @@ -59148,6 +61394,11 @@ __ai __attribute__((target("neon"))) uint64x1_t vreinterpret_u64_s64(int64x1_t _ |
| 59148 | __ret = (uint64x1_t)(__p0); | 61394 | __ret = (uint64x1_t)(__p0); |
| 59149 | return __ret; | 61395 | return __ret; |
| 59150 | } | 61396 | } |
| 61397 | __ai __attribute__((target("neon"))) uint64x1_t vreinterpret_u64_mf8(mfloat8x8_t __p0) { | ||
| 61398 | uint64x1_t __ret; | ||
| 61399 | __ret = (uint64x1_t)(__p0); | ||
| 61400 | return __ret; | ||
| 61401 | } | ||
| 59151 | __ai __attribute__((target("neon"))) uint64x1_t vreinterpret_u64_s16(int16x4_t __p0) { | 61402 | __ai __attribute__((target("neon"))) uint64x1_t vreinterpret_u64_s16(int16x4_t __p0) { |
| 59152 | uint64x1_t __ret; | 61403 | uint64x1_t __ret; |
| 59153 | __ret = (uint64x1_t)(__p0); | 61404 | __ret = (uint64x1_t)(__p0); |
| ... | @@ -59213,6 +61464,11 @@ __ai __attribute__((target("neon"))) uint16x4_t vreinterpret_u16_s64(int64x1_t _ | ... | @@ -59213,6 +61464,11 @@ __ai __attribute__((target("neon"))) uint16x4_t vreinterpret_u16_s64(int64x1_t _ |
| 59213 | __ret = (uint16x4_t)(__p0); | 61464 | __ret = (uint16x4_t)(__p0); |
| 59214 | return __ret; | 61465 | return __ret; |
| 59215 | } | 61466 | } |
| 61467 | __ai __attribute__((target("neon"))) uint16x4_t vreinterpret_u16_mf8(mfloat8x8_t __p0) { | ||
| 61468 | uint16x4_t __ret; | ||
| 61469 | __ret = (uint16x4_t)(__p0); | ||
| 61470 | return __ret; | ||
| 61471 | } | ||
| 59216 | __ai __attribute__((target("neon"))) uint16x4_t vreinterpret_u16_s16(int16x4_t __p0) { | 61472 | __ai __attribute__((target("neon"))) uint16x4_t vreinterpret_u16_s16(int16x4_t __p0) { |
| 59217 | uint16x4_t __ret; | 61473 | uint16x4_t __ret; |
| 59218 | __ret = (uint16x4_t)(__p0); | 61474 | __ret = (uint16x4_t)(__p0); |
| ... | @@ -59278,6 +61534,11 @@ __ai __attribute__((target("neon"))) int8x8_t vreinterpret_s8_s64(int64x1_t __p0 | ... | @@ -59278,6 +61534,11 @@ __ai __attribute__((target("neon"))) int8x8_t vreinterpret_s8_s64(int64x1_t __p0 |
| 59278 | __ret = (int8x8_t)(__p0); | 61534 | __ret = (int8x8_t)(__p0); |
| 59279 | return __ret; | 61535 | return __ret; |
| 59280 | } | 61536 | } |
| 61537 | __ai __attribute__((target("neon"))) int8x8_t vreinterpret_s8_mf8(mfloat8x8_t __p0) { | ||
| 61538 | int8x8_t __ret; | ||
| 61539 | __ret = (int8x8_t)(__p0); | ||
| 61540 | return __ret; | ||
| 61541 | } | ||
| 59281 | __ai __attribute__((target("neon"))) int8x8_t vreinterpret_s8_s16(int16x4_t __p0) { | 61542 | __ai __attribute__((target("neon"))) int8x8_t vreinterpret_s8_s16(int16x4_t __p0) { |
| 59282 | int8x8_t __ret; | 61543 | int8x8_t __ret; |
| 59283 | __ret = (int8x8_t)(__p0); | 61544 | __ret = (int8x8_t)(__p0); |
| ... | @@ -59343,6 +61604,11 @@ __ai __attribute__((target("neon"))) float64x1_t vreinterpret_f64_s64(int64x1_t | ... | @@ -59343,6 +61604,11 @@ __ai __attribute__((target("neon"))) float64x1_t vreinterpret_f64_s64(int64x1_t |
| 59343 | __ret = (float64x1_t)(__p0); | 61604 | __ret = (float64x1_t)(__p0); |
| 59344 | return __ret; | 61605 | return __ret; |
| 59345 | } | 61606 | } |
| 61607 | __ai __attribute__((target("neon"))) float64x1_t vreinterpret_f64_mf8(mfloat8x8_t __p0) { | ||
| 61608 | float64x1_t __ret; | ||
| 61609 | __ret = (float64x1_t)(__p0); | ||
| 61610 | return __ret; | ||
| 61611 | } | ||
| 59346 | __ai __attribute__((target("neon"))) float64x1_t vreinterpret_f64_s16(int16x4_t __p0) { | 61612 | __ai __attribute__((target("neon"))) float64x1_t vreinterpret_f64_s16(int16x4_t __p0) { |
| 59347 | float64x1_t __ret; | 61613 | float64x1_t __ret; |
| 59348 | __ret = (float64x1_t)(__p0); | 61614 | __ret = (float64x1_t)(__p0); |
| ... | @@ -59408,6 +61674,11 @@ __ai __attribute__((target("neon"))) float32x2_t vreinterpret_f32_s64(int64x1_t | ... | @@ -59408,6 +61674,11 @@ __ai __attribute__((target("neon"))) float32x2_t vreinterpret_f32_s64(int64x1_t |
| 59408 | __ret = (float32x2_t)(__p0); | 61674 | __ret = (float32x2_t)(__p0); |
| 59409 | return __ret; | 61675 | return __ret; |
| 59410 | } | 61676 | } |
| 61677 | __ai __attribute__((target("neon"))) float32x2_t vreinterpret_f32_mf8(mfloat8x8_t __p0) { | ||
| 61678 | float32x2_t __ret; | ||
| 61679 | __ret = (float32x2_t)(__p0); | ||
| 61680 | return __ret; | ||
| 61681 | } | ||
| 59411 | __ai __attribute__((target("neon"))) float32x2_t vreinterpret_f32_s16(int16x4_t __p0) { | 61682 | __ai __attribute__((target("neon"))) float32x2_t vreinterpret_f32_s16(int16x4_t __p0) { |
| 59412 | float32x2_t __ret; | 61683 | float32x2_t __ret; |
| 59413 | __ret = (float32x2_t)(__p0); | 61684 | __ret = (float32x2_t)(__p0); |
| ... | @@ -59473,6 +61744,11 @@ __ai __attribute__((target("neon"))) float16x4_t vreinterpret_f16_s64(int64x1_t | ... | @@ -59473,6 +61744,11 @@ __ai __attribute__((target("neon"))) float16x4_t vreinterpret_f16_s64(int64x1_t |
| 59473 | __ret = (float16x4_t)(__p0); | 61744 | __ret = (float16x4_t)(__p0); |
| 59474 | return __ret; | 61745 | return __ret; |
| 59475 | } | 61746 | } |
| 61747 | __ai __attribute__((target("neon"))) float16x4_t vreinterpret_f16_mf8(mfloat8x8_t __p0) { | ||
| 61748 | float16x4_t __ret; | ||
| 61749 | __ret = (float16x4_t)(__p0); | ||
| 61750 | return __ret; | ||
| 61751 | } | ||
| 59476 | __ai __attribute__((target("neon"))) float16x4_t vreinterpret_f16_s16(int16x4_t __p0) { | 61752 | __ai __attribute__((target("neon"))) float16x4_t vreinterpret_f16_s16(int16x4_t __p0) { |
| 59477 | float16x4_t __ret; | 61753 | float16x4_t __ret; |
| 59478 | __ret = (float16x4_t)(__p0); | 61754 | __ret = (float16x4_t)(__p0); |
| ... | @@ -59538,6 +61814,11 @@ __ai __attribute__((target("neon"))) int32x2_t vreinterpret_s32_s64(int64x1_t __ | ... | @@ -59538,6 +61814,11 @@ __ai __attribute__((target("neon"))) int32x2_t vreinterpret_s32_s64(int64x1_t __ |
| 59538 | __ret = (int32x2_t)(__p0); | 61814 | __ret = (int32x2_t)(__p0); |
| 59539 | return __ret; | 61815 | return __ret; |
| 59540 | } | 61816 | } |
| 61817 | __ai __attribute__((target("neon"))) int32x2_t vreinterpret_s32_mf8(mfloat8x8_t __p0) { | ||
| 61818 | int32x2_t __ret; | ||
| 61819 | __ret = (int32x2_t)(__p0); | ||
| 61820 | return __ret; | ||
| 61821 | } | ||
| 59541 | __ai __attribute__((target("neon"))) int32x2_t vreinterpret_s32_s16(int16x4_t __p0) { | 61822 | __ai __attribute__((target("neon"))) int32x2_t vreinterpret_s32_s16(int16x4_t __p0) { |
| 59542 | int32x2_t __ret; | 61823 | int32x2_t __ret; |
| 59543 | __ret = (int32x2_t)(__p0); | 61824 | __ret = (int32x2_t)(__p0); |
| ... | @@ -59603,11 +61884,86 @@ __ai __attribute__((target("neon"))) int64x1_t vreinterpret_s64_s32(int32x2_t __ | ... | @@ -59603,11 +61884,86 @@ __ai __attribute__((target("neon"))) int64x1_t vreinterpret_s64_s32(int32x2_t __ |
| 59603 | __ret = (int64x1_t)(__p0); | 61884 | __ret = (int64x1_t)(__p0); |
| 59604 | return __ret; | 61885 | return __ret; |
| 59605 | } | 61886 | } |
| 61887 | __ai __attribute__((target("neon"))) int64x1_t vreinterpret_s64_mf8(mfloat8x8_t __p0) { | ||
| 61888 | int64x1_t __ret; | ||
| 61889 | __ret = (int64x1_t)(__p0); | ||
| 61890 | return __ret; | ||
| 61891 | } | ||
| 59606 | __ai __attribute__((target("neon"))) int64x1_t vreinterpret_s64_s16(int16x4_t __p0) { | 61892 | __ai __attribute__((target("neon"))) int64x1_t vreinterpret_s64_s16(int16x4_t __p0) { |
| 59607 | int64x1_t __ret; | 61893 | int64x1_t __ret; |
| 59608 | __ret = (int64x1_t)(__p0); | 61894 | __ret = (int64x1_t)(__p0); |
| 59609 | return __ret; | 61895 | return __ret; |
| 59610 | } | 61896 | } |
| 61897 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_p8(poly8x8_t __p0) { | ||
| 61898 | mfloat8x8_t __ret; | ||
| 61899 | __ret = (mfloat8x8_t)(__p0); | ||
| 61900 | return __ret; | ||
| 61901 | } | ||
| 61902 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_p64(poly64x1_t __p0) { | ||
| 61903 | mfloat8x8_t __ret; | ||
| 61904 | __ret = (mfloat8x8_t)(__p0); | ||
| 61905 | return __ret; | ||
| 61906 | } | ||
| 61907 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_p16(poly16x4_t __p0) { | ||
| 61908 | mfloat8x8_t __ret; | ||
| 61909 | __ret = (mfloat8x8_t)(__p0); | ||
| 61910 | return __ret; | ||
| 61911 | } | ||
| 61912 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_u8(uint8x8_t __p0) { | ||
| 61913 | mfloat8x8_t __ret; | ||
| 61914 | __ret = (mfloat8x8_t)(__p0); | ||
| 61915 | return __ret; | ||
| 61916 | } | ||
| 61917 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_u32(uint32x2_t __p0) { | ||
| 61918 | mfloat8x8_t __ret; | ||
| 61919 | __ret = (mfloat8x8_t)(__p0); | ||
| 61920 | return __ret; | ||
| 61921 | } | ||
| 61922 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_u64(uint64x1_t __p0) { | ||
| 61923 | mfloat8x8_t __ret; | ||
| 61924 | __ret = (mfloat8x8_t)(__p0); | ||
| 61925 | return __ret; | ||
| 61926 | } | ||
| 61927 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_u16(uint16x4_t __p0) { | ||
| 61928 | mfloat8x8_t __ret; | ||
| 61929 | __ret = (mfloat8x8_t)(__p0); | ||
| 61930 | return __ret; | ||
| 61931 | } | ||
| 61932 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_s8(int8x8_t __p0) { | ||
| 61933 | mfloat8x8_t __ret; | ||
| 61934 | __ret = (mfloat8x8_t)(__p0); | ||
| 61935 | return __ret; | ||
| 61936 | } | ||
| 61937 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_f64(float64x1_t __p0) { | ||
| 61938 | mfloat8x8_t __ret; | ||
| 61939 | __ret = (mfloat8x8_t)(__p0); | ||
| 61940 | return __ret; | ||
| 61941 | } | ||
| 61942 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_f32(float32x2_t __p0) { | ||
| 61943 | mfloat8x8_t __ret; | ||
| 61944 | __ret = (mfloat8x8_t)(__p0); | ||
| 61945 | return __ret; | ||
| 61946 | } | ||
| 61947 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_f16(float16x4_t __p0) { | ||
| 61948 | mfloat8x8_t __ret; | ||
| 61949 | __ret = (mfloat8x8_t)(__p0); | ||
| 61950 | return __ret; | ||
| 61951 | } | ||
| 61952 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_s32(int32x2_t __p0) { | ||
| 61953 | mfloat8x8_t __ret; | ||
| 61954 | __ret = (mfloat8x8_t)(__p0); | ||
| 61955 | return __ret; | ||
| 61956 | } | ||
| 61957 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_s64(int64x1_t __p0) { | ||
| 61958 | mfloat8x8_t __ret; | ||
| 61959 | __ret = (mfloat8x8_t)(__p0); | ||
| 61960 | return __ret; | ||
| 61961 | } | ||
| 61962 | __ai __attribute__((target("neon"))) mfloat8x8_t vreinterpret_mf8_s16(int16x4_t __p0) { | ||
| 61963 | mfloat8x8_t __ret; | ||
| 61964 | __ret = (mfloat8x8_t)(__p0); | ||
| 61965 | return __ret; | ||
| 61966 | } | ||
| 59611 | __ai __attribute__((target("neon"))) int16x4_t vreinterpret_s16_p8(poly8x8_t __p0) { | 61967 | __ai __attribute__((target("neon"))) int16x4_t vreinterpret_s16_p8(poly8x8_t __p0) { |
| 59612 | int16x4_t __ret; | 61968 | int16x4_t __ret; |
| 59613 | __ret = (int16x4_t)(__p0); | 61969 | __ret = (int16x4_t)(__p0); |
| ... | @@ -59673,6 +62029,11 @@ __ai __attribute__((target("neon"))) int16x4_t vreinterpret_s16_s64(int64x1_t __ | ... | @@ -59673,6 +62029,11 @@ __ai __attribute__((target("neon"))) int16x4_t vreinterpret_s16_s64(int64x1_t __ |
| 59673 | __ret = (int16x4_t)(__p0); | 62029 | __ret = (int16x4_t)(__p0); |
| 59674 | return __ret; | 62030 | return __ret; |
| 59675 | } | 62031 | } |
| 62032 | __ai __attribute__((target("neon"))) int16x4_t vreinterpret_s16_mf8(mfloat8x8_t __p0) { | ||
| 62033 | int16x4_t __ret; | ||
| 62034 | __ret = (int16x4_t)(__p0); | ||
| 62035 | return __ret; | ||
| 62036 | } | ||
| 59676 | __ai __attribute__((target("neon"))) uint64_t vrshld_u64(uint64_t __p0, int64_t __p1) { | 62037 | __ai __attribute__((target("neon"))) uint64_t vrshld_u64(uint64_t __p0, int64_t __p1) { |
| 59677 | uint64_t __ret; | 62038 | uint64_t __ret; |
| 59678 | __ret = (uint64_t) __builtin_neon_vrshld_u64(__p0, __p1); | 62039 | __ret = (uint64_t) __builtin_neon_vrshld_u64(__p0, __p1); |
| ... | @@ -65616,106 +67977,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_f64(float64x2_t __ | ... | @@ -65616,106 +67977,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_f64(float64x2_t __ |
| 65616 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | 67977 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); |
| 65617 | return __ret; | 67978 | return __ret; |
| 65618 | } | 67979 | } |
| 65619 | __ai __attribute__((target("v8.3a,neon"))) float64x2_t __noswap_vcmlaq_f64(float64x2_t __p0, float64x2_t __p1, float64x2_t __p2) { | ||
| 65620 | float64x2_t __ret; | ||
| 65621 | __ret = (float64x2_t) __builtin_neon_vcmlaq_f64((int8x16_t)__p0, (int8x16_t)__p1, (int8x16_t)__p2, 42); | ||
| 65622 | return __ret; | ||
| 65623 | } | ||
| 65624 | #endif | ||
| 65625 | |||
| 65626 | __ai __attribute__((target("v8.3a,neon"))) float64x1_t vcmla_f64(float64x1_t __p0, float64x1_t __p1, float64x1_t __p2) { | ||
| 65627 | float64x1_t __ret; | ||
| 65628 | __ret = (float64x1_t) __builtin_neon_vcmla_f64((int8x8_t)__p0, (int8x8_t)__p1, (int8x8_t)__p2, 10); | ||
| 65629 | return __ret; | ||
| 65630 | } | ||
| 65631 | #define vcmla_lane_f64(__p0_792, __p1_792, __p2_792, __p3_792) __extension__ ({ \ | ||
| 65632 | float64x1_t __ret_792; \ | ||
| 65633 | float64x1_t __s0_792 = __p0_792; \ | ||
| 65634 | float64x1_t __s1_792 = __p1_792; \ | ||
| 65635 | float64x1_t __s2_792 = __p2_792; \ | ||
| 65636 | float64x1_t __reint_792 = __s2_792; \ | ||
| 65637 | uint64x2_t __reint1_792 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_792, __p3_792), vgetq_lane_u64(*(uint64x2_t *) &__reint_792, __p3_792)}; \ | ||
| 65638 | __ret_792 = vcmla_f64(__s0_792, __s1_792, *(float64x1_t *) &__reint1_792); \ | ||
| 65639 | __ret_792; \ | ||
| 65640 | }) | ||
| 65641 | #ifdef __LITTLE_ENDIAN__ | ||
| 65642 | #define vcmlaq_lane_f64(__p0_793, __p1_793, __p2_793, __p3_793) __extension__ ({ \ | ||
| 65643 | float64x2_t __ret_793; \ | ||
| 65644 | float64x2_t __s0_793 = __p0_793; \ | ||
| 65645 | float64x2_t __s1_793 = __p1_793; \ | ||
| 65646 | float64x1_t __s2_793 = __p2_793; \ | ||
| 65647 | float64x1_t __reint_793 = __s2_793; \ | ||
| 65648 | uint64x2_t __reint1_793 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_793, __p3_793), vgetq_lane_u64(*(uint64x2_t *) &__reint_793, __p3_793)}; \ | ||
| 65649 | __ret_793 = vcmlaq_f64(__s0_793, __s1_793, *(float64x2_t *) &__reint1_793); \ | ||
| 65650 | __ret_793; \ | ||
| 65651 | }) | ||
| 65652 | #else | ||
| 65653 | #define vcmlaq_lane_f64(__p0_794, __p1_794, __p2_794, __p3_794) __extension__ ({ \ | ||
| 65654 | float64x2_t __ret_794; \ | ||
| 65655 | float64x2_t __s0_794 = __p0_794; \ | ||
| 65656 | float64x2_t __s1_794 = __p1_794; \ | ||
| 65657 | float64x1_t __s2_794 = __p2_794; \ | ||
| 65658 | float64x2_t __rev0_794; __rev0_794 = __builtin_shufflevector(__s0_794, __s0_794, 1, 0); \ | ||
| 65659 | float64x2_t __rev1_794; __rev1_794 = __builtin_shufflevector(__s1_794, __s1_794, 1, 0); \ | ||
| 65660 | float64x1_t __reint_794 = __s2_794; \ | ||
| 65661 | uint64x2_t __reint1_794 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_794, __p3_794), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_794, __p3_794)}; \ | ||
| 65662 | __ret_794 = __noswap_vcmlaq_f64(__rev0_794, __rev1_794, *(float64x2_t *) &__reint1_794); \ | ||
| 65663 | __ret_794 = __builtin_shufflevector(__ret_794, __ret_794, 1, 0); \ | ||
| 65664 | __ret_794; \ | ||
| 65665 | }) | ||
| 65666 | #endif | ||
| 65667 | |||
| 65668 | #ifdef __LITTLE_ENDIAN__ | ||
| 65669 | #define vcmla_laneq_f64(__p0_795, __p1_795, __p2_795, __p3_795) __extension__ ({ \ | ||
| 65670 | float64x1_t __ret_795; \ | ||
| 65671 | float64x1_t __s0_795 = __p0_795; \ | ||
| 65672 | float64x1_t __s1_795 = __p1_795; \ | ||
| 65673 | float64x2_t __s2_795 = __p2_795; \ | ||
| 65674 | float64x2_t __reint_795 = __s2_795; \ | ||
| 65675 | uint64x2_t __reint1_795 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_795, __p3_795), vgetq_lane_u64(*(uint64x2_t *) &__reint_795, __p3_795)}; \ | ||
| 65676 | __ret_795 = vcmla_f64(__s0_795, __s1_795, *(float64x1_t *) &__reint1_795); \ | ||
| 65677 | __ret_795; \ | ||
| 65678 | }) | ||
| 65679 | #else | ||
| 65680 | #define vcmla_laneq_f64(__p0_796, __p1_796, __p2_796, __p3_796) __extension__ ({ \ | ||
| 65681 | float64x1_t __ret_796; \ | ||
| 65682 | float64x1_t __s0_796 = __p0_796; \ | ||
| 65683 | float64x1_t __s1_796 = __p1_796; \ | ||
| 65684 | float64x2_t __s2_796 = __p2_796; \ | ||
| 65685 | float64x2_t __rev2_796; __rev2_796 = __builtin_shufflevector(__s2_796, __s2_796, 1, 0); \ | ||
| 65686 | float64x2_t __reint_796 = __rev2_796; \ | ||
| 65687 | uint64x2_t __reint1_796 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_796, __p3_796), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_796, __p3_796)}; \ | ||
| 65688 | __ret_796 = vcmla_f64(__s0_796, __s1_796, *(float64x1_t *) &__reint1_796); \ | ||
| 65689 | __ret_796; \ | ||
| 65690 | }) | ||
| 65691 | #endif | ||
| 65692 | |||
| 65693 | #ifdef __LITTLE_ENDIAN__ | ||
| 65694 | #define vcmlaq_laneq_f64(__p0_797, __p1_797, __p2_797, __p3_797) __extension__ ({ \ | ||
| 65695 | float64x2_t __ret_797; \ | ||
| 65696 | float64x2_t __s0_797 = __p0_797; \ | ||
| 65697 | float64x2_t __s1_797 = __p1_797; \ | ||
| 65698 | float64x2_t __s2_797 = __p2_797; \ | ||
| 65699 | float64x2_t __reint_797 = __s2_797; \ | ||
| 65700 | uint64x2_t __reint1_797 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_797, __p3_797), vgetq_lane_u64(*(uint64x2_t *) &__reint_797, __p3_797)}; \ | ||
| 65701 | __ret_797 = vcmlaq_f64(__s0_797, __s1_797, *(float64x2_t *) &__reint1_797); \ | ||
| 65702 | __ret_797; \ | ||
| 65703 | }) | ||
| 65704 | #else | ||
| 65705 | #define vcmlaq_laneq_f64(__p0_798, __p1_798, __p2_798, __p3_798) __extension__ ({ \ | ||
| 65706 | float64x2_t __ret_798; \ | ||
| 65707 | float64x2_t __s0_798 = __p0_798; \ | ||
| 65708 | float64x2_t __s1_798 = __p1_798; \ | ||
| 65709 | float64x2_t __s2_798 = __p2_798; \ | ||
| 65710 | float64x2_t __rev0_798; __rev0_798 = __builtin_shufflevector(__s0_798, __s0_798, 1, 0); \ | ||
| 65711 | float64x2_t __rev1_798; __rev1_798 = __builtin_shufflevector(__s1_798, __s1_798, 1, 0); \ | ||
| 65712 | float64x2_t __rev2_798; __rev2_798 = __builtin_shufflevector(__s2_798, __s2_798, 1, 0); \ | ||
| 65713 | float64x2_t __reint_798 = __rev2_798; \ | ||
| 65714 | uint64x2_t __reint1_798 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_798, __p3_798), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_798, __p3_798)}; \ | ||
| 65715 | __ret_798 = __noswap_vcmlaq_f64(__rev0_798, __rev1_798, *(float64x2_t *) &__reint1_798); \ | ||
| 65716 | __ret_798 = __builtin_shufflevector(__ret_798, __ret_798, 1, 0); \ | ||
| 65717 | __ret_798; \ | ||
| 65718 | }) | ||
| 65719 | #endif | 67980 | #endif |
| 65720 | 67981 | ||
| 65721 | #ifdef __LITTLE_ENDIAN__ | 67982 | #ifdef __LITTLE_ENDIAN__ |
| ... | @@ -65734,106 +67995,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot180_f64(float64 | ... | @@ -65734,106 +67995,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot180_f64(float64 |
| 65734 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | 67995 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); |
| 65735 | return __ret; | 67996 | return __ret; |
| 65736 | } | 67997 | } |
| 65737 | __ai __attribute__((target("v8.3a,neon"))) float64x2_t __noswap_vcmlaq_rot180_f64(float64x2_t __p0, float64x2_t __p1, float64x2_t __p2) { | ||
| 65738 | float64x2_t __ret; | ||
| 65739 | __ret = (float64x2_t) __builtin_neon_vcmlaq_rot180_f64((int8x16_t)__p0, (int8x16_t)__p1, (int8x16_t)__p2, 42); | ||
| 65740 | return __ret; | ||
| 65741 | } | ||
| 65742 | #endif | ||
| 65743 | |||
| 65744 | __ai __attribute__((target("v8.3a,neon"))) float64x1_t vcmla_rot180_f64(float64x1_t __p0, float64x1_t __p1, float64x1_t __p2) { | ||
| 65745 | float64x1_t __ret; | ||
| 65746 | __ret = (float64x1_t) __builtin_neon_vcmla_rot180_f64((int8x8_t)__p0, (int8x8_t)__p1, (int8x8_t)__p2, 10); | ||
| 65747 | return __ret; | ||
| 65748 | } | ||
| 65749 | #define vcmla_rot180_lane_f64(__p0_799, __p1_799, __p2_799, __p3_799) __extension__ ({ \ | ||
| 65750 | float64x1_t __ret_799; \ | ||
| 65751 | float64x1_t __s0_799 = __p0_799; \ | ||
| 65752 | float64x1_t __s1_799 = __p1_799; \ | ||
| 65753 | float64x1_t __s2_799 = __p2_799; \ | ||
| 65754 | float64x1_t __reint_799 = __s2_799; \ | ||
| 65755 | uint64x2_t __reint1_799 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_799, __p3_799), vgetq_lane_u64(*(uint64x2_t *) &__reint_799, __p3_799)}; \ | ||
| 65756 | __ret_799 = vcmla_rot180_f64(__s0_799, __s1_799, *(float64x1_t *) &__reint1_799); \ | ||
| 65757 | __ret_799; \ | ||
| 65758 | }) | ||
| 65759 | #ifdef __LITTLE_ENDIAN__ | ||
| 65760 | #define vcmlaq_rot180_lane_f64(__p0_800, __p1_800, __p2_800, __p3_800) __extension__ ({ \ | ||
| 65761 | float64x2_t __ret_800; \ | ||
| 65762 | float64x2_t __s0_800 = __p0_800; \ | ||
| 65763 | float64x2_t __s1_800 = __p1_800; \ | ||
| 65764 | float64x1_t __s2_800 = __p2_800; \ | ||
| 65765 | float64x1_t __reint_800 = __s2_800; \ | ||
| 65766 | uint64x2_t __reint1_800 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_800, __p3_800), vgetq_lane_u64(*(uint64x2_t *) &__reint_800, __p3_800)}; \ | ||
| 65767 | __ret_800 = vcmlaq_rot180_f64(__s0_800, __s1_800, *(float64x2_t *) &__reint1_800); \ | ||
| 65768 | __ret_800; \ | ||
| 65769 | }) | ||
| 65770 | #else | ||
| 65771 | #define vcmlaq_rot180_lane_f64(__p0_801, __p1_801, __p2_801, __p3_801) __extension__ ({ \ | ||
| 65772 | float64x2_t __ret_801; \ | ||
| 65773 | float64x2_t __s0_801 = __p0_801; \ | ||
| 65774 | float64x2_t __s1_801 = __p1_801; \ | ||
| 65775 | float64x1_t __s2_801 = __p2_801; \ | ||
| 65776 | float64x2_t __rev0_801; __rev0_801 = __builtin_shufflevector(__s0_801, __s0_801, 1, 0); \ | ||
| 65777 | float64x2_t __rev1_801; __rev1_801 = __builtin_shufflevector(__s1_801, __s1_801, 1, 0); \ | ||
| 65778 | float64x1_t __reint_801 = __s2_801; \ | ||
| 65779 | uint64x2_t __reint1_801 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_801, __p3_801), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_801, __p3_801)}; \ | ||
| 65780 | __ret_801 = __noswap_vcmlaq_rot180_f64(__rev0_801, __rev1_801, *(float64x2_t *) &__reint1_801); \ | ||
| 65781 | __ret_801 = __builtin_shufflevector(__ret_801, __ret_801, 1, 0); \ | ||
| 65782 | __ret_801; \ | ||
| 65783 | }) | ||
| 65784 | #endif | ||
| 65785 | |||
| 65786 | #ifdef __LITTLE_ENDIAN__ | ||
| 65787 | #define vcmla_rot180_laneq_f64(__p0_802, __p1_802, __p2_802, __p3_802) __extension__ ({ \ | ||
| 65788 | float64x1_t __ret_802; \ | ||
| 65789 | float64x1_t __s0_802 = __p0_802; \ | ||
| 65790 | float64x1_t __s1_802 = __p1_802; \ | ||
| 65791 | float64x2_t __s2_802 = __p2_802; \ | ||
| 65792 | float64x2_t __reint_802 = __s2_802; \ | ||
| 65793 | uint64x2_t __reint1_802 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_802, __p3_802), vgetq_lane_u64(*(uint64x2_t *) &__reint_802, __p3_802)}; \ | ||
| 65794 | __ret_802 = vcmla_rot180_f64(__s0_802, __s1_802, *(float64x1_t *) &__reint1_802); \ | ||
| 65795 | __ret_802; \ | ||
| 65796 | }) | ||
| 65797 | #else | ||
| 65798 | #define vcmla_rot180_laneq_f64(__p0_803, __p1_803, __p2_803, __p3_803) __extension__ ({ \ | ||
| 65799 | float64x1_t __ret_803; \ | ||
| 65800 | float64x1_t __s0_803 = __p0_803; \ | ||
| 65801 | float64x1_t __s1_803 = __p1_803; \ | ||
| 65802 | float64x2_t __s2_803 = __p2_803; \ | ||
| 65803 | float64x2_t __rev2_803; __rev2_803 = __builtin_shufflevector(__s2_803, __s2_803, 1, 0); \ | ||
| 65804 | float64x2_t __reint_803 = __rev2_803; \ | ||
| 65805 | uint64x2_t __reint1_803 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_803, __p3_803), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_803, __p3_803)}; \ | ||
| 65806 | __ret_803 = vcmla_rot180_f64(__s0_803, __s1_803, *(float64x1_t *) &__reint1_803); \ | ||
| 65807 | __ret_803; \ | ||
| 65808 | }) | ||
| 65809 | #endif | ||
| 65810 | |||
| 65811 | #ifdef __LITTLE_ENDIAN__ | ||
| 65812 | #define vcmlaq_rot180_laneq_f64(__p0_804, __p1_804, __p2_804, __p3_804) __extension__ ({ \ | ||
| 65813 | float64x2_t __ret_804; \ | ||
| 65814 | float64x2_t __s0_804 = __p0_804; \ | ||
| 65815 | float64x2_t __s1_804 = __p1_804; \ | ||
| 65816 | float64x2_t __s2_804 = __p2_804; \ | ||
| 65817 | float64x2_t __reint_804 = __s2_804; \ | ||
| 65818 | uint64x2_t __reint1_804 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_804, __p3_804), vgetq_lane_u64(*(uint64x2_t *) &__reint_804, __p3_804)}; \ | ||
| 65819 | __ret_804 = vcmlaq_rot180_f64(__s0_804, __s1_804, *(float64x2_t *) &__reint1_804); \ | ||
| 65820 | __ret_804; \ | ||
| 65821 | }) | ||
| 65822 | #else | ||
| 65823 | #define vcmlaq_rot180_laneq_f64(__p0_805, __p1_805, __p2_805, __p3_805) __extension__ ({ \ | ||
| 65824 | float64x2_t __ret_805; \ | ||
| 65825 | float64x2_t __s0_805 = __p0_805; \ | ||
| 65826 | float64x2_t __s1_805 = __p1_805; \ | ||
| 65827 | float64x2_t __s2_805 = __p2_805; \ | ||
| 65828 | float64x2_t __rev0_805; __rev0_805 = __builtin_shufflevector(__s0_805, __s0_805, 1, 0); \ | ||
| 65829 | float64x2_t __rev1_805; __rev1_805 = __builtin_shufflevector(__s1_805, __s1_805, 1, 0); \ | ||
| 65830 | float64x2_t __rev2_805; __rev2_805 = __builtin_shufflevector(__s2_805, __s2_805, 1, 0); \ | ||
| 65831 | float64x2_t __reint_805 = __rev2_805; \ | ||
| 65832 | uint64x2_t __reint1_805 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_805, __p3_805), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_805, __p3_805)}; \ | ||
| 65833 | __ret_805 = __noswap_vcmlaq_rot180_f64(__rev0_805, __rev1_805, *(float64x2_t *) &__reint1_805); \ | ||
| 65834 | __ret_805 = __builtin_shufflevector(__ret_805, __ret_805, 1, 0); \ | ||
| 65835 | __ret_805; \ | ||
| 65836 | }) | ||
| 65837 | #endif | 67998 | #endif |
| 65838 | 67999 | ||
| 65839 | #ifdef __LITTLE_ENDIAN__ | 68000 | #ifdef __LITTLE_ENDIAN__ |
| ... | @@ -65852,106 +68013,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot270_f64(float64 | ... | @@ -65852,106 +68013,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot270_f64(float64 |
| 65852 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | 68013 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); |
| 65853 | return __ret; | 68014 | return __ret; |
| 65854 | } | 68015 | } |
| 65855 | __ai __attribute__((target("v8.3a,neon"))) float64x2_t __noswap_vcmlaq_rot270_f64(float64x2_t __p0, float64x2_t __p1, float64x2_t __p2) { | ||
| 65856 | float64x2_t __ret; | ||
| 65857 | __ret = (float64x2_t) __builtin_neon_vcmlaq_rot270_f64((int8x16_t)__p0, (int8x16_t)__p1, (int8x16_t)__p2, 42); | ||
| 65858 | return __ret; | ||
| 65859 | } | ||
| 65860 | #endif | ||
| 65861 | |||
| 65862 | __ai __attribute__((target("v8.3a,neon"))) float64x1_t vcmla_rot270_f64(float64x1_t __p0, float64x1_t __p1, float64x1_t __p2) { | ||
| 65863 | float64x1_t __ret; | ||
| 65864 | __ret = (float64x1_t) __builtin_neon_vcmla_rot270_f64((int8x8_t)__p0, (int8x8_t)__p1, (int8x8_t)__p2, 10); | ||
| 65865 | return __ret; | ||
| 65866 | } | ||
| 65867 | #define vcmla_rot270_lane_f64(__p0_806, __p1_806, __p2_806, __p3_806) __extension__ ({ \ | ||
| 65868 | float64x1_t __ret_806; \ | ||
| 65869 | float64x1_t __s0_806 = __p0_806; \ | ||
| 65870 | float64x1_t __s1_806 = __p1_806; \ | ||
| 65871 | float64x1_t __s2_806 = __p2_806; \ | ||
| 65872 | float64x1_t __reint_806 = __s2_806; \ | ||
| 65873 | uint64x2_t __reint1_806 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_806, __p3_806), vgetq_lane_u64(*(uint64x2_t *) &__reint_806, __p3_806)}; \ | ||
| 65874 | __ret_806 = vcmla_rot270_f64(__s0_806, __s1_806, *(float64x1_t *) &__reint1_806); \ | ||
| 65875 | __ret_806; \ | ||
| 65876 | }) | ||
| 65877 | #ifdef __LITTLE_ENDIAN__ | ||
| 65878 | #define vcmlaq_rot270_lane_f64(__p0_807, __p1_807, __p2_807, __p3_807) __extension__ ({ \ | ||
| 65879 | float64x2_t __ret_807; \ | ||
| 65880 | float64x2_t __s0_807 = __p0_807; \ | ||
| 65881 | float64x2_t __s1_807 = __p1_807; \ | ||
| 65882 | float64x1_t __s2_807 = __p2_807; \ | ||
| 65883 | float64x1_t __reint_807 = __s2_807; \ | ||
| 65884 | uint64x2_t __reint1_807 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_807, __p3_807), vgetq_lane_u64(*(uint64x2_t *) &__reint_807, __p3_807)}; \ | ||
| 65885 | __ret_807 = vcmlaq_rot270_f64(__s0_807, __s1_807, *(float64x2_t *) &__reint1_807); \ | ||
| 65886 | __ret_807; \ | ||
| 65887 | }) | ||
| 65888 | #else | ||
| 65889 | #define vcmlaq_rot270_lane_f64(__p0_808, __p1_808, __p2_808, __p3_808) __extension__ ({ \ | ||
| 65890 | float64x2_t __ret_808; \ | ||
| 65891 | float64x2_t __s0_808 = __p0_808; \ | ||
| 65892 | float64x2_t __s1_808 = __p1_808; \ | ||
| 65893 | float64x1_t __s2_808 = __p2_808; \ | ||
| 65894 | float64x2_t __rev0_808; __rev0_808 = __builtin_shufflevector(__s0_808, __s0_808, 1, 0); \ | ||
| 65895 | float64x2_t __rev1_808; __rev1_808 = __builtin_shufflevector(__s1_808, __s1_808, 1, 0); \ | ||
| 65896 | float64x1_t __reint_808 = __s2_808; \ | ||
| 65897 | uint64x2_t __reint1_808 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_808, __p3_808), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_808, __p3_808)}; \ | ||
| 65898 | __ret_808 = __noswap_vcmlaq_rot270_f64(__rev0_808, __rev1_808, *(float64x2_t *) &__reint1_808); \ | ||
| 65899 | __ret_808 = __builtin_shufflevector(__ret_808, __ret_808, 1, 0); \ | ||
| 65900 | __ret_808; \ | ||
| 65901 | }) | ||
| 65902 | #endif | ||
| 65903 | |||
| 65904 | #ifdef __LITTLE_ENDIAN__ | ||
| 65905 | #define vcmla_rot270_laneq_f64(__p0_809, __p1_809, __p2_809, __p3_809) __extension__ ({ \ | ||
| 65906 | float64x1_t __ret_809; \ | ||
| 65907 | float64x1_t __s0_809 = __p0_809; \ | ||
| 65908 | float64x1_t __s1_809 = __p1_809; \ | ||
| 65909 | float64x2_t __s2_809 = __p2_809; \ | ||
| 65910 | float64x2_t __reint_809 = __s2_809; \ | ||
| 65911 | uint64x2_t __reint1_809 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_809, __p3_809), vgetq_lane_u64(*(uint64x2_t *) &__reint_809, __p3_809)}; \ | ||
| 65912 | __ret_809 = vcmla_rot270_f64(__s0_809, __s1_809, *(float64x1_t *) &__reint1_809); \ | ||
| 65913 | __ret_809; \ | ||
| 65914 | }) | ||
| 65915 | #else | ||
| 65916 | #define vcmla_rot270_laneq_f64(__p0_810, __p1_810, __p2_810, __p3_810) __extension__ ({ \ | ||
| 65917 | float64x1_t __ret_810; \ | ||
| 65918 | float64x1_t __s0_810 = __p0_810; \ | ||
| 65919 | float64x1_t __s1_810 = __p1_810; \ | ||
| 65920 | float64x2_t __s2_810 = __p2_810; \ | ||
| 65921 | float64x2_t __rev2_810; __rev2_810 = __builtin_shufflevector(__s2_810, __s2_810, 1, 0); \ | ||
| 65922 | float64x2_t __reint_810 = __rev2_810; \ | ||
| 65923 | uint64x2_t __reint1_810 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_810, __p3_810), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_810, __p3_810)}; \ | ||
| 65924 | __ret_810 = vcmla_rot270_f64(__s0_810, __s1_810, *(float64x1_t *) &__reint1_810); \ | ||
| 65925 | __ret_810; \ | ||
| 65926 | }) | ||
| 65927 | #endif | ||
| 65928 | |||
| 65929 | #ifdef __LITTLE_ENDIAN__ | ||
| 65930 | #define vcmlaq_rot270_laneq_f64(__p0_811, __p1_811, __p2_811, __p3_811) __extension__ ({ \ | ||
| 65931 | float64x2_t __ret_811; \ | ||
| 65932 | float64x2_t __s0_811 = __p0_811; \ | ||
| 65933 | float64x2_t __s1_811 = __p1_811; \ | ||
| 65934 | float64x2_t __s2_811 = __p2_811; \ | ||
| 65935 | float64x2_t __reint_811 = __s2_811; \ | ||
| 65936 | uint64x2_t __reint1_811 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_811, __p3_811), vgetq_lane_u64(*(uint64x2_t *) &__reint_811, __p3_811)}; \ | ||
| 65937 | __ret_811 = vcmlaq_rot270_f64(__s0_811, __s1_811, *(float64x2_t *) &__reint1_811); \ | ||
| 65938 | __ret_811; \ | ||
| 65939 | }) | ||
| 65940 | #else | ||
| 65941 | #define vcmlaq_rot270_laneq_f64(__p0_812, __p1_812, __p2_812, __p3_812) __extension__ ({ \ | ||
| 65942 | float64x2_t __ret_812; \ | ||
| 65943 | float64x2_t __s0_812 = __p0_812; \ | ||
| 65944 | float64x2_t __s1_812 = __p1_812; \ | ||
| 65945 | float64x2_t __s2_812 = __p2_812; \ | ||
| 65946 | float64x2_t __rev0_812; __rev0_812 = __builtin_shufflevector(__s0_812, __s0_812, 1, 0); \ | ||
| 65947 | float64x2_t __rev1_812; __rev1_812 = __builtin_shufflevector(__s1_812, __s1_812, 1, 0); \ | ||
| 65948 | float64x2_t __rev2_812; __rev2_812 = __builtin_shufflevector(__s2_812, __s2_812, 1, 0); \ | ||
| 65949 | float64x2_t __reint_812 = __rev2_812; \ | ||
| 65950 | uint64x2_t __reint1_812 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_812, __p3_812), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_812, __p3_812)}; \ | ||
| 65951 | __ret_812 = __noswap_vcmlaq_rot270_f64(__rev0_812, __rev1_812, *(float64x2_t *) &__reint1_812); \ | ||
| 65952 | __ret_812 = __builtin_shufflevector(__ret_812, __ret_812, 1, 0); \ | ||
| 65953 | __ret_812; \ | ||
| 65954 | }) | ||
| 65955 | #endif | 68016 | #endif |
| 65956 | 68017 | ||
| 65957 | #ifdef __LITTLE_ENDIAN__ | 68018 | #ifdef __LITTLE_ENDIAN__ |
| ... | @@ -65970,106 +68031,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot90_f64(float64x | ... | @@ -65970,106 +68031,6 @@ __ai __attribute__((target("v8.3a,neon"))) float64x2_t vcmlaq_rot90_f64(float64x |
| 65970 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); | 68031 | __ret = __builtin_shufflevector(__ret, __ret, 1, 0); |
| 65971 | return __ret; | 68032 | return __ret; |
| 65972 | } | 68033 | } |
| 65973 | __ai __attribute__((target("v8.3a,neon"))) float64x2_t __noswap_vcmlaq_rot90_f64(float64x2_t __p0, float64x2_t __p1, float64x2_t __p2) { | ||
| 65974 | float64x2_t __ret; | ||
| 65975 | __ret = (float64x2_t) __builtin_neon_vcmlaq_rot90_f64((int8x16_t)__p0, (int8x16_t)__p1, (int8x16_t)__p2, 42); | ||
| 65976 | return __ret; | ||
| 65977 | } | ||
| 65978 | #endif | ||
| 65979 | |||
| 65980 | __ai __attribute__((target("v8.3a,neon"))) float64x1_t vcmla_rot90_f64(float64x1_t __p0, float64x1_t __p1, float64x1_t __p2) { | ||
| 65981 | float64x1_t __ret; | ||
| 65982 | __ret = (float64x1_t) __builtin_neon_vcmla_rot90_f64((int8x8_t)__p0, (int8x8_t)__p1, (int8x8_t)__p2, 10); | ||
| 65983 | return __ret; | ||
| 65984 | } | ||
| 65985 | #define vcmla_rot90_lane_f64(__p0_813, __p1_813, __p2_813, __p3_813) __extension__ ({ \ | ||
| 65986 | float64x1_t __ret_813; \ | ||
| 65987 | float64x1_t __s0_813 = __p0_813; \ | ||
| 65988 | float64x1_t __s1_813 = __p1_813; \ | ||
| 65989 | float64x1_t __s2_813 = __p2_813; \ | ||
| 65990 | float64x1_t __reint_813 = __s2_813; \ | ||
| 65991 | uint64x2_t __reint1_813 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_813, __p3_813), vgetq_lane_u64(*(uint64x2_t *) &__reint_813, __p3_813)}; \ | ||
| 65992 | __ret_813 = vcmla_rot90_f64(__s0_813, __s1_813, *(float64x1_t *) &__reint1_813); \ | ||
| 65993 | __ret_813; \ | ||
| 65994 | }) | ||
| 65995 | #ifdef __LITTLE_ENDIAN__ | ||
| 65996 | #define vcmlaq_rot90_lane_f64(__p0_814, __p1_814, __p2_814, __p3_814) __extension__ ({ \ | ||
| 65997 | float64x2_t __ret_814; \ | ||
| 65998 | float64x2_t __s0_814 = __p0_814; \ | ||
| 65999 | float64x2_t __s1_814 = __p1_814; \ | ||
| 66000 | float64x1_t __s2_814 = __p2_814; \ | ||
| 66001 | float64x1_t __reint_814 = __s2_814; \ | ||
| 66002 | uint64x2_t __reint1_814 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_814, __p3_814), vgetq_lane_u64(*(uint64x2_t *) &__reint_814, __p3_814)}; \ | ||
| 66003 | __ret_814 = vcmlaq_rot90_f64(__s0_814, __s1_814, *(float64x2_t *) &__reint1_814); \ | ||
| 66004 | __ret_814; \ | ||
| 66005 | }) | ||
| 66006 | #else | ||
| 66007 | #define vcmlaq_rot90_lane_f64(__p0_815, __p1_815, __p2_815, __p3_815) __extension__ ({ \ | ||
| 66008 | float64x2_t __ret_815; \ | ||
| 66009 | float64x2_t __s0_815 = __p0_815; \ | ||
| 66010 | float64x2_t __s1_815 = __p1_815; \ | ||
| 66011 | float64x1_t __s2_815 = __p2_815; \ | ||
| 66012 | float64x2_t __rev0_815; __rev0_815 = __builtin_shufflevector(__s0_815, __s0_815, 1, 0); \ | ||
| 66013 | float64x2_t __rev1_815; __rev1_815 = __builtin_shufflevector(__s1_815, __s1_815, 1, 0); \ | ||
| 66014 | float64x1_t __reint_815 = __s2_815; \ | ||
| 66015 | uint64x2_t __reint1_815 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_815, __p3_815), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_815, __p3_815)}; \ | ||
| 66016 | __ret_815 = __noswap_vcmlaq_rot90_f64(__rev0_815, __rev1_815, *(float64x2_t *) &__reint1_815); \ | ||
| 66017 | __ret_815 = __builtin_shufflevector(__ret_815, __ret_815, 1, 0); \ | ||
| 66018 | __ret_815; \ | ||
| 66019 | }) | ||
| 66020 | #endif | ||
| 66021 | |||
| 66022 | #ifdef __LITTLE_ENDIAN__ | ||
| 66023 | #define vcmla_rot90_laneq_f64(__p0_816, __p1_816, __p2_816, __p3_816) __extension__ ({ \ | ||
| 66024 | float64x1_t __ret_816; \ | ||
| 66025 | float64x1_t __s0_816 = __p0_816; \ | ||
| 66026 | float64x1_t __s1_816 = __p1_816; \ | ||
| 66027 | float64x2_t __s2_816 = __p2_816; \ | ||
| 66028 | float64x2_t __reint_816 = __s2_816; \ | ||
| 66029 | uint64x2_t __reint1_816 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_816, __p3_816), vgetq_lane_u64(*(uint64x2_t *) &__reint_816, __p3_816)}; \ | ||
| 66030 | __ret_816 = vcmla_rot90_f64(__s0_816, __s1_816, *(float64x1_t *) &__reint1_816); \ | ||
| 66031 | __ret_816; \ | ||
| 66032 | }) | ||
| 66033 | #else | ||
| 66034 | #define vcmla_rot90_laneq_f64(__p0_817, __p1_817, __p2_817, __p3_817) __extension__ ({ \ | ||
| 66035 | float64x1_t __ret_817; \ | ||
| 66036 | float64x1_t __s0_817 = __p0_817; \ | ||
| 66037 | float64x1_t __s1_817 = __p1_817; \ | ||
| 66038 | float64x2_t __s2_817 = __p2_817; \ | ||
| 66039 | float64x2_t __rev2_817; __rev2_817 = __builtin_shufflevector(__s2_817, __s2_817, 1, 0); \ | ||
| 66040 | float64x2_t __reint_817 = __rev2_817; \ | ||
| 66041 | uint64x2_t __reint1_817 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_817, __p3_817), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_817, __p3_817)}; \ | ||
| 66042 | __ret_817 = vcmla_rot90_f64(__s0_817, __s1_817, *(float64x1_t *) &__reint1_817); \ | ||
| 66043 | __ret_817; \ | ||
| 66044 | }) | ||
| 66045 | #endif | ||
| 66046 | |||
| 66047 | #ifdef __LITTLE_ENDIAN__ | ||
| 66048 | #define vcmlaq_rot90_laneq_f64(__p0_818, __p1_818, __p2_818, __p3_818) __extension__ ({ \ | ||
| 66049 | float64x2_t __ret_818; \ | ||
| 66050 | float64x2_t __s0_818 = __p0_818; \ | ||
| 66051 | float64x2_t __s1_818 = __p1_818; \ | ||
| 66052 | float64x2_t __s2_818 = __p2_818; \ | ||
| 66053 | float64x2_t __reint_818 = __s2_818; \ | ||
| 66054 | uint64x2_t __reint1_818 = (uint64x2_t) {vgetq_lane_u64(*(uint64x2_t *) &__reint_818, __p3_818), vgetq_lane_u64(*(uint64x2_t *) &__reint_818, __p3_818)}; \ | ||
| 66055 | __ret_818 = vcmlaq_rot90_f64(__s0_818, __s1_818, *(float64x2_t *) &__reint1_818); \ | ||
| 66056 | __ret_818; \ | ||
| 66057 | }) | ||
| 66058 | #else | ||
| 66059 | #define vcmlaq_rot90_laneq_f64(__p0_819, __p1_819, __p2_819, __p3_819) __extension__ ({ \ | ||
| 66060 | float64x2_t __ret_819; \ | ||
| 66061 | float64x2_t __s0_819 = __p0_819; \ | ||
| 66062 | float64x2_t __s1_819 = __p1_819; \ | ||
| 66063 | float64x2_t __s2_819 = __p2_819; \ | ||
| 66064 | float64x2_t __rev0_819; __rev0_819 = __builtin_shufflevector(__s0_819, __s0_819, 1, 0); \ | ||
| 66065 | float64x2_t __rev1_819; __rev1_819 = __builtin_shufflevector(__s1_819, __s1_819, 1, 0); \ | ||
| 66066 | float64x2_t __rev2_819; __rev2_819 = __builtin_shufflevector(__s2_819, __s2_819, 1, 0); \ | ||
| 66067 | float64x2_t __reint_819 = __rev2_819; \ | ||
| 66068 | uint64x2_t __reint1_819 = (uint64x2_t) {__noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_819, __p3_819), __noswap_vgetq_lane_u64(*(uint64x2_t *) &__reint_819, __p3_819)}; \ | ||
| 66069 | __ret_819 = __noswap_vcmlaq_rot90_f64(__rev0_819, __rev1_819, *(float64x2_t *) &__reint1_819); \ | ||
| 66070 | __ret_819 = __builtin_shufflevector(__ret_819, __ret_819, 1, 0); \ | ||
| 66071 | __ret_819; \ | ||
| 66072 | }) | ||
| 66073 | #endif | 68034 | #endif |
| 66074 | 68035 | ||
| 66075 | #ifdef __LITTLE_ENDIAN__ | 68036 | #ifdef __LITTLE_ENDIAN__ |
| ... | @@ -66286,237 +68247,215 @@ __ai __attribute__((target("v8.5a,neon"))) float64x1_t vrnd64z_f64(float64x1_t _ | ... | @@ -66286,237 +68247,215 @@ __ai __attribute__((target("v8.5a,neon"))) float64x1_t vrnd64z_f64(float64x1_t _ |
| 66286 | } | 68247 | } |
| 66287 | #endif | 68248 | #endif |
| 66288 | #ifdef __LITTLE_ENDIAN__ | 68249 | #ifdef __LITTLE_ENDIAN__ |
| 66289 | #define vbfdotq_lane_f32(__p0_820, __p1_820, __p2_820, __p3_820) __extension__ ({ \ | 68250 | #define vbfdotq_lane_f32(__p0_792, __p1_792, __p2_792, __p3_792) __extension__ ({ \ |
| 66290 | float32x4_t __ret_820; \ | 68251 | float32x4_t __ret_792; \ |
| 66291 | float32x4_t __s0_820 = __p0_820; \ | 68252 | float32x4_t __s0_792 = __p0_792; \ |
| 66292 | bfloat16x8_t __s1_820 = __p1_820; \ | 68253 | bfloat16x8_t __s1_792 = __p1_792; \ |
| 66293 | bfloat16x4_t __s2_820 = __p2_820; \ | 68254 | bfloat16x4_t __s2_792 = __p2_792; \ |
| 66294 | bfloat16x4_t __reint_820 = __s2_820; \ | 68255 | __ret_792 = vbfdotq_f32(__s0_792, __s1_792, __builtin_bit_cast(bfloat16x8_t, splatq_lane_f32(__builtin_bit_cast(float32x2_t, __s2_792), __p3_792))); \ |
| 66295 | float32x4_t __reint1_820 = splatq_lane_f32(*(float32x2_t *) &__reint_820, __p3_820); \ | 68256 | __ret_792; \ |
| 66296 | __ret_820 = vbfdotq_f32(__s0_820, __s1_820, *(bfloat16x8_t *) &__reint1_820); \ | ||
| 66297 | __ret_820; \ | ||
| 66298 | }) | 68257 | }) |
| 66299 | #else | 68258 | #else |
| 66300 | #define vbfdotq_lane_f32(__p0_821, __p1_821, __p2_821, __p3_821) __extension__ ({ \ | 68259 | #define vbfdotq_lane_f32(__p0_793, __p1_793, __p2_793, __p3_793) __extension__ ({ \ |
| 66301 | float32x4_t __ret_821; \ | 68260 | float32x4_t __ret_793; \ |
| 66302 | float32x4_t __s0_821 = __p0_821; \ | 68261 | float32x4_t __s0_793 = __p0_793; \ |
| 66303 | bfloat16x8_t __s1_821 = __p1_821; \ | 68262 | bfloat16x8_t __s1_793 = __p1_793; \ |
| 66304 | bfloat16x4_t __s2_821 = __p2_821; \ | 68263 | bfloat16x4_t __s2_793 = __p2_793; \ |
| 66305 | float32x4_t __rev0_821; __rev0_821 = __builtin_shufflevector(__s0_821, __s0_821, 3, 2, 1, 0); \ | 68264 | float32x4_t __rev0_793; __rev0_793 = __builtin_shufflevector(__s0_793, __s0_793, 3, 2, 1, 0); \ |
| 66306 | bfloat16x8_t __rev1_821; __rev1_821 = __builtin_shufflevector(__s1_821, __s1_821, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68265 | bfloat16x8_t __rev1_793; __rev1_793 = __builtin_shufflevector(__s1_793, __s1_793, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66307 | bfloat16x4_t __rev2_821; __rev2_821 = __builtin_shufflevector(__s2_821, __s2_821, 3, 2, 1, 0); \ | 68266 | bfloat16x4_t __rev2_793; __rev2_793 = __builtin_shufflevector(__s2_793, __s2_793, 3, 2, 1, 0); \ |
| 66308 | bfloat16x4_t __reint_821 = __rev2_821; \ | 68267 | __ret_793 = __noswap_vbfdotq_f32(__rev0_793, __rev1_793, __builtin_bit_cast(bfloat16x8_t, __noswap_splatq_lane_f32(__builtin_bit_cast(float32x2_t, __rev2_793), __p3_793))); \ |
| 66309 | float32x4_t __reint1_821 = __noswap_splatq_lane_f32(*(float32x2_t *) &__reint_821, __p3_821); \ | 68268 | __ret_793 = __builtin_shufflevector(__ret_793, __ret_793, 3, 2, 1, 0); \ |
| 66310 | __ret_821 = __noswap_vbfdotq_f32(__rev0_821, __rev1_821, *(bfloat16x8_t *) &__reint1_821); \ | 68269 | __ret_793; \ |
| 66311 | __ret_821 = __builtin_shufflevector(__ret_821, __ret_821, 3, 2, 1, 0); \ | ||
| 66312 | __ret_821; \ | ||
| 66313 | }) | 68270 | }) |
| 66314 | #endif | 68271 | #endif |
| 66315 | 68272 | ||
| 66316 | #ifdef __LITTLE_ENDIAN__ | 68273 | #ifdef __LITTLE_ENDIAN__ |
| 66317 | #define vbfdot_lane_f32(__p0_822, __p1_822, __p2_822, __p3_822) __extension__ ({ \ | 68274 | #define vbfdot_lane_f32(__p0_794, __p1_794, __p2_794, __p3_794) __extension__ ({ \ |
| 66318 | float32x2_t __ret_822; \ | 68275 | float32x2_t __ret_794; \ |
| 66319 | float32x2_t __s0_822 = __p0_822; \ | 68276 | float32x2_t __s0_794 = __p0_794; \ |
| 66320 | bfloat16x4_t __s1_822 = __p1_822; \ | 68277 | bfloat16x4_t __s1_794 = __p1_794; \ |
| 66321 | bfloat16x4_t __s2_822 = __p2_822; \ | 68278 | bfloat16x4_t __s2_794 = __p2_794; \ |
| 66322 | bfloat16x4_t __reint_822 = __s2_822; \ | 68279 | __ret_794 = vbfdot_f32(__s0_794, __s1_794, __builtin_bit_cast(bfloat16x4_t, splat_lane_f32(__builtin_bit_cast(float32x2_t, __s2_794), __p3_794))); \ |
| 66323 | float32x2_t __reint1_822 = splat_lane_f32(*(float32x2_t *) &__reint_822, __p3_822); \ | 68280 | __ret_794; \ |
| 66324 | __ret_822 = vbfdot_f32(__s0_822, __s1_822, *(bfloat16x4_t *) &__reint1_822); \ | ||
| 66325 | __ret_822; \ | ||
| 66326 | }) | 68281 | }) |
| 66327 | #else | 68282 | #else |
| 66328 | #define vbfdot_lane_f32(__p0_823, __p1_823, __p2_823, __p3_823) __extension__ ({ \ | 68283 | #define vbfdot_lane_f32(__p0_795, __p1_795, __p2_795, __p3_795) __extension__ ({ \ |
| 66329 | float32x2_t __ret_823; \ | 68284 | float32x2_t __ret_795; \ |
| 66330 | float32x2_t __s0_823 = __p0_823; \ | 68285 | float32x2_t __s0_795 = __p0_795; \ |
| 66331 | bfloat16x4_t __s1_823 = __p1_823; \ | 68286 | bfloat16x4_t __s1_795 = __p1_795; \ |
| 66332 | bfloat16x4_t __s2_823 = __p2_823; \ | 68287 | bfloat16x4_t __s2_795 = __p2_795; \ |
| 66333 | float32x2_t __rev0_823; __rev0_823 = __builtin_shufflevector(__s0_823, __s0_823, 1, 0); \ | 68288 | float32x2_t __rev0_795; __rev0_795 = __builtin_shufflevector(__s0_795, __s0_795, 1, 0); \ |
| 66334 | bfloat16x4_t __rev1_823; __rev1_823 = __builtin_shufflevector(__s1_823, __s1_823, 3, 2, 1, 0); \ | 68289 | bfloat16x4_t __rev1_795; __rev1_795 = __builtin_shufflevector(__s1_795, __s1_795, 3, 2, 1, 0); \ |
| 66335 | bfloat16x4_t __rev2_823; __rev2_823 = __builtin_shufflevector(__s2_823, __s2_823, 3, 2, 1, 0); \ | 68290 | bfloat16x4_t __rev2_795; __rev2_795 = __builtin_shufflevector(__s2_795, __s2_795, 3, 2, 1, 0); \ |
| 66336 | bfloat16x4_t __reint_823 = __rev2_823; \ | 68291 | __ret_795 = __noswap_vbfdot_f32(__rev0_795, __rev1_795, __builtin_bit_cast(bfloat16x4_t, __noswap_splat_lane_f32(__builtin_bit_cast(float32x2_t, __rev2_795), __p3_795))); \ |
| 66337 | float32x2_t __reint1_823 = __noswap_splat_lane_f32(*(float32x2_t *) &__reint_823, __p3_823); \ | 68292 | __ret_795 = __builtin_shufflevector(__ret_795, __ret_795, 1, 0); \ |
| 66338 | __ret_823 = __noswap_vbfdot_f32(__rev0_823, __rev1_823, *(bfloat16x4_t *) &__reint1_823); \ | 68293 | __ret_795; \ |
| 66339 | __ret_823 = __builtin_shufflevector(__ret_823, __ret_823, 1, 0); \ | ||
| 66340 | __ret_823; \ | ||
| 66341 | }) | 68294 | }) |
| 66342 | #endif | 68295 | #endif |
| 66343 | 68296 | ||
| 66344 | #ifdef __LITTLE_ENDIAN__ | 68297 | #ifdef __LITTLE_ENDIAN__ |
| 66345 | #define vbfdotq_laneq_f32(__p0_824, __p1_824, __p2_824, __p3_824) __extension__ ({ \ | 68298 | #define vbfdotq_laneq_f32(__p0_796, __p1_796, __p2_796, __p3_796) __extension__ ({ \ |
| 66346 | float32x4_t __ret_824; \ | 68299 | float32x4_t __ret_796; \ |
| 66347 | float32x4_t __s0_824 = __p0_824; \ | 68300 | float32x4_t __s0_796 = __p0_796; \ |
| 66348 | bfloat16x8_t __s1_824 = __p1_824; \ | 68301 | bfloat16x8_t __s1_796 = __p1_796; \ |
| 66349 | bfloat16x8_t __s2_824 = __p2_824; \ | 68302 | bfloat16x8_t __s2_796 = __p2_796; \ |
| 66350 | bfloat16x8_t __reint_824 = __s2_824; \ | 68303 | __ret_796 = vbfdotq_f32(__s0_796, __s1_796, __builtin_bit_cast(bfloat16x8_t, splatq_laneq_f32(__builtin_bit_cast(float32x4_t, __s2_796), __p3_796))); \ |
| 66351 | float32x4_t __reint1_824 = splatq_laneq_f32(*(float32x4_t *) &__reint_824, __p3_824); \ | 68304 | __ret_796; \ |
| 66352 | __ret_824 = vbfdotq_f32(__s0_824, __s1_824, *(bfloat16x8_t *) &__reint1_824); \ | ||
| 66353 | __ret_824; \ | ||
| 66354 | }) | 68305 | }) |
| 66355 | #else | 68306 | #else |
| 66356 | #define vbfdotq_laneq_f32(__p0_825, __p1_825, __p2_825, __p3_825) __extension__ ({ \ | 68307 | #define vbfdotq_laneq_f32(__p0_797, __p1_797, __p2_797, __p3_797) __extension__ ({ \ |
| 66357 | float32x4_t __ret_825; \ | 68308 | float32x4_t __ret_797; \ |
| 66358 | float32x4_t __s0_825 = __p0_825; \ | 68309 | float32x4_t __s0_797 = __p0_797; \ |
| 66359 | bfloat16x8_t __s1_825 = __p1_825; \ | 68310 | bfloat16x8_t __s1_797 = __p1_797; \ |
| 66360 | bfloat16x8_t __s2_825 = __p2_825; \ | 68311 | bfloat16x8_t __s2_797 = __p2_797; \ |
| 66361 | float32x4_t __rev0_825; __rev0_825 = __builtin_shufflevector(__s0_825, __s0_825, 3, 2, 1, 0); \ | 68312 | float32x4_t __rev0_797; __rev0_797 = __builtin_shufflevector(__s0_797, __s0_797, 3, 2, 1, 0); \ |
| 66362 | bfloat16x8_t __rev1_825; __rev1_825 = __builtin_shufflevector(__s1_825, __s1_825, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68313 | bfloat16x8_t __rev1_797; __rev1_797 = __builtin_shufflevector(__s1_797, __s1_797, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66363 | bfloat16x8_t __rev2_825; __rev2_825 = __builtin_shufflevector(__s2_825, __s2_825, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68314 | bfloat16x8_t __rev2_797; __rev2_797 = __builtin_shufflevector(__s2_797, __s2_797, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66364 | bfloat16x8_t __reint_825 = __rev2_825; \ | 68315 | __ret_797 = __noswap_vbfdotq_f32(__rev0_797, __rev1_797, __builtin_bit_cast(bfloat16x8_t, __noswap_splatq_laneq_f32(__builtin_bit_cast(float32x4_t, __rev2_797), __p3_797))); \ |
| 66365 | float32x4_t __reint1_825 = __noswap_splatq_laneq_f32(*(float32x4_t *) &__reint_825, __p3_825); \ | 68316 | __ret_797 = __builtin_shufflevector(__ret_797, __ret_797, 3, 2, 1, 0); \ |
| 66366 | __ret_825 = __noswap_vbfdotq_f32(__rev0_825, __rev1_825, *(bfloat16x8_t *) &__reint1_825); \ | 68317 | __ret_797; \ |
| 66367 | __ret_825 = __builtin_shufflevector(__ret_825, __ret_825, 3, 2, 1, 0); \ | ||
| 66368 | __ret_825; \ | ||
| 66369 | }) | 68318 | }) |
| 66370 | #endif | 68319 | #endif |
| 66371 | 68320 | ||
| 66372 | #ifdef __LITTLE_ENDIAN__ | 68321 | #ifdef __LITTLE_ENDIAN__ |
| 66373 | #define vbfdot_laneq_f32(__p0_826, __p1_826, __p2_826, __p3_826) __extension__ ({ \ | 68322 | #define vbfdot_laneq_f32(__p0_798, __p1_798, __p2_798, __p3_798) __extension__ ({ \ |
| 66374 | float32x2_t __ret_826; \ | 68323 | float32x2_t __ret_798; \ |
| 66375 | float32x2_t __s0_826 = __p0_826; \ | 68324 | float32x2_t __s0_798 = __p0_798; \ |
| 66376 | bfloat16x4_t __s1_826 = __p1_826; \ | 68325 | bfloat16x4_t __s1_798 = __p1_798; \ |
| 66377 | bfloat16x8_t __s2_826 = __p2_826; \ | 68326 | bfloat16x8_t __s2_798 = __p2_798; \ |
| 66378 | bfloat16x8_t __reint_826 = __s2_826; \ | 68327 | __ret_798 = vbfdot_f32(__s0_798, __s1_798, __builtin_bit_cast(bfloat16x4_t, splat_laneq_f32(__builtin_bit_cast(float32x4_t, __s2_798), __p3_798))); \ |
| 66379 | float32x2_t __reint1_826 = splat_laneq_f32(*(float32x4_t *) &__reint_826, __p3_826); \ | 68328 | __ret_798; \ |
| 66380 | __ret_826 = vbfdot_f32(__s0_826, __s1_826, *(bfloat16x4_t *) &__reint1_826); \ | ||
| 66381 | __ret_826; \ | ||
| 66382 | }) | 68329 | }) |
| 66383 | #else | 68330 | #else |
| 66384 | #define vbfdot_laneq_f32(__p0_827, __p1_827, __p2_827, __p3_827) __extension__ ({ \ | 68331 | #define vbfdot_laneq_f32(__p0_799, __p1_799, __p2_799, __p3_799) __extension__ ({ \ |
| 66385 | float32x2_t __ret_827; \ | 68332 | float32x2_t __ret_799; \ |
| 66386 | float32x2_t __s0_827 = __p0_827; \ | 68333 | float32x2_t __s0_799 = __p0_799; \ |
| 66387 | bfloat16x4_t __s1_827 = __p1_827; \ | 68334 | bfloat16x4_t __s1_799 = __p1_799; \ |
| 66388 | bfloat16x8_t __s2_827 = __p2_827; \ | 68335 | bfloat16x8_t __s2_799 = __p2_799; \ |
| 66389 | float32x2_t __rev0_827; __rev0_827 = __builtin_shufflevector(__s0_827, __s0_827, 1, 0); \ | 68336 | float32x2_t __rev0_799; __rev0_799 = __builtin_shufflevector(__s0_799, __s0_799, 1, 0); \ |
| 66390 | bfloat16x4_t __rev1_827; __rev1_827 = __builtin_shufflevector(__s1_827, __s1_827, 3, 2, 1, 0); \ | 68337 | bfloat16x4_t __rev1_799; __rev1_799 = __builtin_shufflevector(__s1_799, __s1_799, 3, 2, 1, 0); \ |
| 66391 | bfloat16x8_t __rev2_827; __rev2_827 = __builtin_shufflevector(__s2_827, __s2_827, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68338 | bfloat16x8_t __rev2_799; __rev2_799 = __builtin_shufflevector(__s2_799, __s2_799, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66392 | bfloat16x8_t __reint_827 = __rev2_827; \ | 68339 | __ret_799 = __noswap_vbfdot_f32(__rev0_799, __rev1_799, __builtin_bit_cast(bfloat16x4_t, __noswap_splat_laneq_f32(__builtin_bit_cast(float32x4_t, __rev2_799), __p3_799))); \ |
| 66393 | float32x2_t __reint1_827 = __noswap_splat_laneq_f32(*(float32x4_t *) &__reint_827, __p3_827); \ | 68340 | __ret_799 = __builtin_shufflevector(__ret_799, __ret_799, 1, 0); \ |
| 66394 | __ret_827 = __noswap_vbfdot_f32(__rev0_827, __rev1_827, *(bfloat16x4_t *) &__reint1_827); \ | 68341 | __ret_799; \ |
| 66395 | __ret_827 = __builtin_shufflevector(__ret_827, __ret_827, 1, 0); \ | ||
| 66396 | __ret_827; \ | ||
| 66397 | }) | 68342 | }) |
| 66398 | #endif | 68343 | #endif |
| 66399 | 68344 | ||
| 66400 | #ifdef __LITTLE_ENDIAN__ | 68345 | #ifdef __LITTLE_ENDIAN__ |
| 66401 | #define vbfmlalbq_lane_f32(__p0_828, __p1_828, __p2_828, __p3_828) __extension__ ({ \ | 68346 | #define vbfmlalbq_lane_f32(__p0_800, __p1_800, __p2_800, __p3_800) __extension__ ({ \ |
| 66402 | float32x4_t __ret_828; \ | 68347 | float32x4_t __ret_800; \ |
| 66403 | float32x4_t __s0_828 = __p0_828; \ | 68348 | float32x4_t __s0_800 = __p0_800; \ |
| 66404 | bfloat16x8_t __s1_828 = __p1_828; \ | 68349 | bfloat16x8_t __s1_800 = __p1_800; \ |
| 66405 | bfloat16x4_t __s2_828 = __p2_828; \ | 68350 | bfloat16x4_t __s2_800 = __p2_800; \ |
| 66406 | __ret_828 = vbfmlalbq_f32(__s0_828, __s1_828, (bfloat16x8_t) {vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828), vget_lane_bf16(__s2_828, __p3_828)}); \ | 68351 | __ret_800 = vbfmlalbq_f32(__s0_800, __s1_800, (bfloat16x8_t) {vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800), vget_lane_bf16(__s2_800, __p3_800)}); \ |
| 66407 | __ret_828; \ | 68352 | __ret_800; \ |
| 66408 | }) | 68353 | }) |
| 66409 | #else | 68354 | #else |
| 66410 | #define vbfmlalbq_lane_f32(__p0_829, __p1_829, __p2_829, __p3_829) __extension__ ({ \ | 68355 | #define vbfmlalbq_lane_f32(__p0_801, __p1_801, __p2_801, __p3_801) __extension__ ({ \ |
| 66411 | float32x4_t __ret_829; \ | 68356 | float32x4_t __ret_801; \ |
| 66412 | float32x4_t __s0_829 = __p0_829; \ | 68357 | float32x4_t __s0_801 = __p0_801; \ |
| 66413 | bfloat16x8_t __s1_829 = __p1_829; \ | 68358 | bfloat16x8_t __s1_801 = __p1_801; \ |
| 66414 | bfloat16x4_t __s2_829 = __p2_829; \ | 68359 | bfloat16x4_t __s2_801 = __p2_801; \ |
| 66415 | float32x4_t __rev0_829; __rev0_829 = __builtin_shufflevector(__s0_829, __s0_829, 3, 2, 1, 0); \ | 68360 | float32x4_t __rev0_801; __rev0_801 = __builtin_shufflevector(__s0_801, __s0_801, 3, 2, 1, 0); \ |
| 66416 | bfloat16x8_t __rev1_829; __rev1_829 = __builtin_shufflevector(__s1_829, __s1_829, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68361 | bfloat16x8_t __rev1_801; __rev1_801 = __builtin_shufflevector(__s1_801, __s1_801, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66417 | bfloat16x4_t __rev2_829; __rev2_829 = __builtin_shufflevector(__s2_829, __s2_829, 3, 2, 1, 0); \ | 68362 | bfloat16x4_t __rev2_801; __rev2_801 = __builtin_shufflevector(__s2_801, __s2_801, 3, 2, 1, 0); \ |
| 66418 | __ret_829 = __noswap_vbfmlalbq_f32(__rev0_829, __rev1_829, (bfloat16x8_t) {__noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829), __noswap_vget_lane_bf16(__rev2_829, __p3_829)}); \ | 68363 | __ret_801 = __noswap_vbfmlalbq_f32(__rev0_801, __rev1_801, (bfloat16x8_t) {__noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801), __noswap_vget_lane_bf16(__rev2_801, __p3_801)}); \ |
| 66419 | __ret_829 = __builtin_shufflevector(__ret_829, __ret_829, 3, 2, 1, 0); \ | 68364 | __ret_801 = __builtin_shufflevector(__ret_801, __ret_801, 3, 2, 1, 0); \ |
| 66420 | __ret_829; \ | 68365 | __ret_801; \ |
| 66421 | }) | 68366 | }) |
| 66422 | #endif | 68367 | #endif |
| 66423 | 68368 | ||
| 66424 | #ifdef __LITTLE_ENDIAN__ | 68369 | #ifdef __LITTLE_ENDIAN__ |
| 66425 | #define vbfmlalbq_laneq_f32(__p0_830, __p1_830, __p2_830, __p3_830) __extension__ ({ \ | 68370 | #define vbfmlalbq_laneq_f32(__p0_802, __p1_802, __p2_802, __p3_802) __extension__ ({ \ |
| 66426 | float32x4_t __ret_830; \ | 68371 | float32x4_t __ret_802; \ |
| 66427 | float32x4_t __s0_830 = __p0_830; \ | 68372 | float32x4_t __s0_802 = __p0_802; \ |
| 66428 | bfloat16x8_t __s1_830 = __p1_830; \ | 68373 | bfloat16x8_t __s1_802 = __p1_802; \ |
| 66429 | bfloat16x8_t __s2_830 = __p2_830; \ | 68374 | bfloat16x8_t __s2_802 = __p2_802; \ |
| 66430 | __ret_830 = vbfmlalbq_f32(__s0_830, __s1_830, (bfloat16x8_t) {vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830), vgetq_lane_bf16(__s2_830, __p3_830)}); \ | 68375 | __ret_802 = vbfmlalbq_f32(__s0_802, __s1_802, (bfloat16x8_t) {vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802), vgetq_lane_bf16(__s2_802, __p3_802)}); \ |
| 66431 | __ret_830; \ | 68376 | __ret_802; \ |
| 66432 | }) | 68377 | }) |
| 66433 | #else | 68378 | #else |
| 66434 | #define vbfmlalbq_laneq_f32(__p0_831, __p1_831, __p2_831, __p3_831) __extension__ ({ \ | 68379 | #define vbfmlalbq_laneq_f32(__p0_803, __p1_803, __p2_803, __p3_803) __extension__ ({ \ |
| 66435 | float32x4_t __ret_831; \ | 68380 | float32x4_t __ret_803; \ |
| 66436 | float32x4_t __s0_831 = __p0_831; \ | 68381 | float32x4_t __s0_803 = __p0_803; \ |
| 66437 | bfloat16x8_t __s1_831 = __p1_831; \ | 68382 | bfloat16x8_t __s1_803 = __p1_803; \ |
| 66438 | bfloat16x8_t __s2_831 = __p2_831; \ | 68383 | bfloat16x8_t __s2_803 = __p2_803; \ |
| 66439 | float32x4_t __rev0_831; __rev0_831 = __builtin_shufflevector(__s0_831, __s0_831, 3, 2, 1, 0); \ | 68384 | float32x4_t __rev0_803; __rev0_803 = __builtin_shufflevector(__s0_803, __s0_803, 3, 2, 1, 0); \ |
| 66440 | bfloat16x8_t __rev1_831; __rev1_831 = __builtin_shufflevector(__s1_831, __s1_831, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68385 | bfloat16x8_t __rev1_803; __rev1_803 = __builtin_shufflevector(__s1_803, __s1_803, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66441 | bfloat16x8_t __rev2_831; __rev2_831 = __builtin_shufflevector(__s2_831, __s2_831, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68386 | bfloat16x8_t __rev2_803; __rev2_803 = __builtin_shufflevector(__s2_803, __s2_803, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66442 | __ret_831 = __noswap_vbfmlalbq_f32(__rev0_831, __rev1_831, (bfloat16x8_t) {__noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831), __noswap_vgetq_lane_bf16(__rev2_831, __p3_831)}); \ | 68387 | __ret_803 = __noswap_vbfmlalbq_f32(__rev0_803, __rev1_803, (bfloat16x8_t) {__noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803), __noswap_vgetq_lane_bf16(__rev2_803, __p3_803)}); \ |
| 66443 | __ret_831 = __builtin_shufflevector(__ret_831, __ret_831, 3, 2, 1, 0); \ | 68388 | __ret_803 = __builtin_shufflevector(__ret_803, __ret_803, 3, 2, 1, 0); \ |
| 66444 | __ret_831; \ | 68389 | __ret_803; \ |
| 66445 | }) | 68390 | }) |
| 66446 | #endif | 68391 | #endif |
| 66447 | 68392 | ||
| 66448 | #ifdef __LITTLE_ENDIAN__ | 68393 | #ifdef __LITTLE_ENDIAN__ |
| 66449 | #define vbfmlaltq_lane_f32(__p0_832, __p1_832, __p2_832, __p3_832) __extension__ ({ \ | 68394 | #define vbfmlaltq_lane_f32(__p0_804, __p1_804, __p2_804, __p3_804) __extension__ ({ \ |
| 66450 | float32x4_t __ret_832; \ | 68395 | float32x4_t __ret_804; \ |
| 66451 | float32x4_t __s0_832 = __p0_832; \ | 68396 | float32x4_t __s0_804 = __p0_804; \ |
| 66452 | bfloat16x8_t __s1_832 = __p1_832; \ | 68397 | bfloat16x8_t __s1_804 = __p1_804; \ |
| 66453 | bfloat16x4_t __s2_832 = __p2_832; \ | 68398 | bfloat16x4_t __s2_804 = __p2_804; \ |
| 66454 | __ret_832 = vbfmlaltq_f32(__s0_832, __s1_832, (bfloat16x8_t) {vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832), vget_lane_bf16(__s2_832, __p3_832)}); \ | 68399 | __ret_804 = vbfmlaltq_f32(__s0_804, __s1_804, (bfloat16x8_t) {vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804), vget_lane_bf16(__s2_804, __p3_804)}); \ |
| 66455 | __ret_832; \ | 68400 | __ret_804; \ |
| 66456 | }) | 68401 | }) |
| 66457 | #else | 68402 | #else |
| 66458 | #define vbfmlaltq_lane_f32(__p0_833, __p1_833, __p2_833, __p3_833) __extension__ ({ \ | 68403 | #define vbfmlaltq_lane_f32(__p0_805, __p1_805, __p2_805, __p3_805) __extension__ ({ \ |
| 66459 | float32x4_t __ret_833; \ | 68404 | float32x4_t __ret_805; \ |
| 66460 | float32x4_t __s0_833 = __p0_833; \ | 68405 | float32x4_t __s0_805 = __p0_805; \ |
| 66461 | bfloat16x8_t __s1_833 = __p1_833; \ | 68406 | bfloat16x8_t __s1_805 = __p1_805; \ |
| 66462 | bfloat16x4_t __s2_833 = __p2_833; \ | 68407 | bfloat16x4_t __s2_805 = __p2_805; \ |
| 66463 | float32x4_t __rev0_833; __rev0_833 = __builtin_shufflevector(__s0_833, __s0_833, 3, 2, 1, 0); \ | 68408 | float32x4_t __rev0_805; __rev0_805 = __builtin_shufflevector(__s0_805, __s0_805, 3, 2, 1, 0); \ |
| 66464 | bfloat16x8_t __rev1_833; __rev1_833 = __builtin_shufflevector(__s1_833, __s1_833, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68409 | bfloat16x8_t __rev1_805; __rev1_805 = __builtin_shufflevector(__s1_805, __s1_805, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66465 | bfloat16x4_t __rev2_833; __rev2_833 = __builtin_shufflevector(__s2_833, __s2_833, 3, 2, 1, 0); \ | 68410 | bfloat16x4_t __rev2_805; __rev2_805 = __builtin_shufflevector(__s2_805, __s2_805, 3, 2, 1, 0); \ |
| 66466 | __ret_833 = __noswap_vbfmlaltq_f32(__rev0_833, __rev1_833, (bfloat16x8_t) {__noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833), __noswap_vget_lane_bf16(__rev2_833, __p3_833)}); \ | 68411 | __ret_805 = __noswap_vbfmlaltq_f32(__rev0_805, __rev1_805, (bfloat16x8_t) {__noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805), __noswap_vget_lane_bf16(__rev2_805, __p3_805)}); \ |
| 66467 | __ret_833 = __builtin_shufflevector(__ret_833, __ret_833, 3, 2, 1, 0); \ | 68412 | __ret_805 = __builtin_shufflevector(__ret_805, __ret_805, 3, 2, 1, 0); \ |
| 66468 | __ret_833; \ | 68413 | __ret_805; \ |
| 66469 | }) | 68414 | }) |
| 66470 | #endif | 68415 | #endif |
| 66471 | 68416 | ||
| 66472 | #ifdef __LITTLE_ENDIAN__ | 68417 | #ifdef __LITTLE_ENDIAN__ |
| 66473 | #define vbfmlaltq_laneq_f32(__p0_834, __p1_834, __p2_834, __p3_834) __extension__ ({ \ | 68418 | #define vbfmlaltq_laneq_f32(__p0_806, __p1_806, __p2_806, __p3_806) __extension__ ({ \ |
| 66474 | float32x4_t __ret_834; \ | 68419 | float32x4_t __ret_806; \ |
| 66475 | float32x4_t __s0_834 = __p0_834; \ | 68420 | float32x4_t __s0_806 = __p0_806; \ |
| 66476 | bfloat16x8_t __s1_834 = __p1_834; \ | 68421 | bfloat16x8_t __s1_806 = __p1_806; \ |
| 66477 | bfloat16x8_t __s2_834 = __p2_834; \ | 68422 | bfloat16x8_t __s2_806 = __p2_806; \ |
| 66478 | __ret_834 = vbfmlaltq_f32(__s0_834, __s1_834, (bfloat16x8_t) {vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834), vgetq_lane_bf16(__s2_834, __p3_834)}); \ | 68423 | __ret_806 = vbfmlaltq_f32(__s0_806, __s1_806, (bfloat16x8_t) {vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806), vgetq_lane_bf16(__s2_806, __p3_806)}); \ |
| 66479 | __ret_834; \ | 68424 | __ret_806; \ |
| 66480 | }) | 68425 | }) |
| 66481 | #else | 68426 | #else |
| 66482 | #define vbfmlaltq_laneq_f32(__p0_835, __p1_835, __p2_835, __p3_835) __extension__ ({ \ | 68427 | #define vbfmlaltq_laneq_f32(__p0_807, __p1_807, __p2_807, __p3_807) __extension__ ({ \ |
| 66483 | float32x4_t __ret_835; \ | 68428 | float32x4_t __ret_807; \ |
| 66484 | float32x4_t __s0_835 = __p0_835; \ | 68429 | float32x4_t __s0_807 = __p0_807; \ |
| 66485 | bfloat16x8_t __s1_835 = __p1_835; \ | 68430 | bfloat16x8_t __s1_807 = __p1_807; \ |
| 66486 | bfloat16x8_t __s2_835 = __p2_835; \ | 68431 | bfloat16x8_t __s2_807 = __p2_807; \ |
| 66487 | float32x4_t __rev0_835; __rev0_835 = __builtin_shufflevector(__s0_835, __s0_835, 3, 2, 1, 0); \ | 68432 | float32x4_t __rev0_807; __rev0_807 = __builtin_shufflevector(__s0_807, __s0_807, 3, 2, 1, 0); \ |
| 66488 | bfloat16x8_t __rev1_835; __rev1_835 = __builtin_shufflevector(__s1_835, __s1_835, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68433 | bfloat16x8_t __rev1_807; __rev1_807 = __builtin_shufflevector(__s1_807, __s1_807, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66489 | bfloat16x8_t __rev2_835; __rev2_835 = __builtin_shufflevector(__s2_835, __s2_835, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68434 | bfloat16x8_t __rev2_807; __rev2_807 = __builtin_shufflevector(__s2_807, __s2_807, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66490 | __ret_835 = __noswap_vbfmlaltq_f32(__rev0_835, __rev1_835, (bfloat16x8_t) {__noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835), __noswap_vgetq_lane_bf16(__rev2_835, __p3_835)}); \ | 68435 | __ret_807 = __noswap_vbfmlaltq_f32(__rev0_807, __rev1_807, (bfloat16x8_t) {__noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807), __noswap_vgetq_lane_bf16(__rev2_807, __p3_807)}); \ |
| 66491 | __ret_835 = __builtin_shufflevector(__ret_835, __ret_835, 3, 2, 1, 0); \ | 68436 | __ret_807 = __builtin_shufflevector(__ret_807, __ret_807, 3, 2, 1, 0); \ |
| 66492 | __ret_835; \ | 68437 | __ret_807; \ |
| 66493 | }) | 68438 | }) |
| 66494 | #endif | 68439 | #endif |
| 66495 | 68440 | ||
| 66496 | #ifdef __LITTLE_ENDIAN__ | 68441 | #ifdef __LITTLE_ENDIAN__ |
| 66497 | __ai __attribute__((target("bf16,neon"))) float32x4_t vcvt_f32_bf16(bfloat16x4_t __p0_836) { | 68442 | __ai __attribute__((target("bf16,neon"))) float32x4_t vcvt_f32_bf16(bfloat16x4_t __p0_808) { |
| 66498 | float32x4_t __ret_836; | 68443 | float32x4_t __ret_808; |
| 66499 | bfloat16x4_t __reint_836 = __p0_836; | 68444 | __ret_808 = __builtin_bit_cast(float32x4_t, vshll_n_u16(__builtin_bit_cast(uint16x4_t, __p0_808), 16)); |
| 66500 | int32x4_t __reint1_836 = vshll_n_s16(*(int16x4_t *) &__reint_836, 16); | 68445 | return __ret_808; |
| 66501 | __ret_836 = *(float32x4_t *) &__reint1_836; | ||
| 66502 | return __ret_836; | ||
| 66503 | } | 68446 | } |
| 66504 | #else | 68447 | #else |
| 66505 | __ai __attribute__((target("bf16,neon"))) float32x4_t vcvt_f32_bf16(bfloat16x4_t __p0_837) { | 68448 | __ai __attribute__((target("bf16,neon"))) float32x4_t vcvt_f32_bf16(bfloat16x4_t __p0_809) { |
| 66506 | float32x4_t __ret_837; | 68449 | float32x4_t __ret_809; |
| 66507 | bfloat16x4_t __rev0_837; __rev0_837 = __builtin_shufflevector(__p0_837, __p0_837, 3, 2, 1, 0); | 68450 | bfloat16x4_t __rev0_809; __rev0_809 = __builtin_shufflevector(__p0_809, __p0_809, 3, 2, 1, 0); |
| 66508 | bfloat16x4_t __reint_837 = __rev0_837; | 68451 | __ret_809 = __builtin_bit_cast(float32x4_t, __noswap_vshll_n_u16(__builtin_bit_cast(uint16x4_t, __rev0_809), 16)); |
| 66509 | int32x4_t __reint1_837 = __noswap_vshll_n_s16(*(int16x4_t *) &__reint_837, 16); | 68452 | __ret_809 = __builtin_shufflevector(__ret_809, __ret_809, 3, 2, 1, 0); |
| 66510 | __ret_837 = *(float32x4_t *) &__reint1_837; | 68453 | return __ret_809; |
| 66511 | __ret_837 = __builtin_shufflevector(__ret_837, __ret_837, 3, 2, 1, 0); | ||
| 66512 | return __ret_837; | ||
| 66513 | } | 68454 | } |
| 66514 | __ai __attribute__((target("bf16,neon"))) float32x4_t __noswap_vcvt_f32_bf16(bfloat16x4_t __p0_838) { | 68455 | __ai __attribute__((target("bf16,neon"))) float32x4_t __noswap_vcvt_f32_bf16(bfloat16x4_t __p0_810) { |
| 66515 | float32x4_t __ret_838; | 68456 | float32x4_t __ret_810; |
| 66516 | bfloat16x4_t __reint_838 = __p0_838; | 68457 | __ret_810 = __builtin_bit_cast(float32x4_t, __noswap_vshll_n_u16(__builtin_bit_cast(uint16x4_t, __p0_810), 16)); |
| 66517 | int32x4_t __reint1_838 = __noswap_vshll_n_s16(*(int16x4_t *) &__reint_838, 16); | 68458 | return __ret_810; |
| 66518 | __ret_838 = *(float32x4_t *) &__reint1_838; | ||
| 66519 | return __ret_838; | ||
| 66520 | } | 68459 | } |
| 66521 | #endif | 68460 | #endif |
| 66522 | 68461 | ||
| ... | @@ -66553,260 +68492,236 @@ __ai __attribute__((target("bf16,neon"))) float32x4_t vcvtq_low_f32_bf16(bfloat1 | ... | @@ -66553,260 +68492,236 @@ __ai __attribute__((target("bf16,neon"))) float32x4_t vcvtq_low_f32_bf16(bfloat1 |
| 66553 | #endif | 68492 | #endif |
| 66554 | 68493 | ||
| 66555 | #ifdef __LITTLE_ENDIAN__ | 68494 | #ifdef __LITTLE_ENDIAN__ |
| 66556 | #define vdotq_lane_u32(__p0_839, __p1_839, __p2_839, __p3_839) __extension__ ({ \ | 68495 | #define vdotq_lane_u32(__p0_811, __p1_811, __p2_811, __p3_811) __extension__ ({ \ |
| 66557 | uint32x4_t __ret_839; \ | 68496 | uint32x4_t __ret_811; \ |
| 66558 | uint32x4_t __s0_839 = __p0_839; \ | 68497 | uint32x4_t __s0_811 = __p0_811; \ |
| 66559 | uint8x16_t __s1_839 = __p1_839; \ | 68498 | uint8x16_t __s1_811 = __p1_811; \ |
| 66560 | uint8x8_t __s2_839 = __p2_839; \ | 68499 | uint8x8_t __s2_811 = __p2_811; \ |
| 66561 | uint8x8_t __reint_839 = __s2_839; \ | 68500 | __ret_811 = vdotq_u32(__s0_811, __s1_811, __builtin_bit_cast(uint8x16_t, splatq_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_811), __p3_811))); \ |
| 66562 | uint32x4_t __reint1_839 = splatq_lane_u32(*(uint32x2_t *) &__reint_839, __p3_839); \ | 68501 | __ret_811; \ |
| 66563 | __ret_839 = vdotq_u32(__s0_839, __s1_839, *(uint8x16_t *) &__reint1_839); \ | ||
| 66564 | __ret_839; \ | ||
| 66565 | }) | 68502 | }) |
| 66566 | #else | 68503 | #else |
| 66567 | #define vdotq_lane_u32(__p0_840, __p1_840, __p2_840, __p3_840) __extension__ ({ \ | 68504 | #define vdotq_lane_u32(__p0_812, __p1_812, __p2_812, __p3_812) __extension__ ({ \ |
| 66568 | uint32x4_t __ret_840; \ | 68505 | uint32x4_t __ret_812; \ |
| 66569 | uint32x4_t __s0_840 = __p0_840; \ | 68506 | uint32x4_t __s0_812 = __p0_812; \ |
| 66570 | uint8x16_t __s1_840 = __p1_840; \ | 68507 | uint8x16_t __s1_812 = __p1_812; \ |
| 66571 | uint8x8_t __s2_840 = __p2_840; \ | 68508 | uint8x8_t __s2_812 = __p2_812; \ |
| 66572 | uint32x4_t __rev0_840; __rev0_840 = __builtin_shufflevector(__s0_840, __s0_840, 3, 2, 1, 0); \ | 68509 | uint32x4_t __rev0_812; __rev0_812 = __builtin_shufflevector(__s0_812, __s0_812, 3, 2, 1, 0); \ |
| 66573 | uint8x16_t __rev1_840; __rev1_840 = __builtin_shufflevector(__s1_840, __s1_840, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68510 | uint8x16_t __rev1_812; __rev1_812 = __builtin_shufflevector(__s1_812, __s1_812, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66574 | uint8x8_t __rev2_840; __rev2_840 = __builtin_shufflevector(__s2_840, __s2_840, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68511 | uint8x8_t __rev2_812; __rev2_812 = __builtin_shufflevector(__s2_812, __s2_812, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66575 | uint8x8_t __reint_840 = __rev2_840; \ | 68512 | __ret_812 = __noswap_vdotq_u32(__rev0_812, __rev1_812, __builtin_bit_cast(uint8x16_t, __noswap_splatq_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_812), __p3_812))); \ |
| 66576 | uint32x4_t __reint1_840 = __noswap_splatq_lane_u32(*(uint32x2_t *) &__reint_840, __p3_840); \ | 68513 | __ret_812 = __builtin_shufflevector(__ret_812, __ret_812, 3, 2, 1, 0); \ |
| 66577 | __ret_840 = __noswap_vdotq_u32(__rev0_840, __rev1_840, *(uint8x16_t *) &__reint1_840); \ | 68514 | __ret_812; \ |
| 66578 | __ret_840 = __builtin_shufflevector(__ret_840, __ret_840, 3, 2, 1, 0); \ | ||
| 66579 | __ret_840; \ | ||
| 66580 | }) | 68515 | }) |
| 66581 | #endif | 68516 | #endif |
| 66582 | 68517 | ||
| 66583 | #ifdef __LITTLE_ENDIAN__ | 68518 | #ifdef __LITTLE_ENDIAN__ |
| 66584 | #define vdotq_lane_s32(__p0_841, __p1_841, __p2_841, __p3_841) __extension__ ({ \ | 68519 | #define vdotq_lane_s32(__p0_813, __p1_813, __p2_813, __p3_813) __extension__ ({ \ |
| 66585 | int32x4_t __ret_841; \ | 68520 | int32x4_t __ret_813; \ |
| 66586 | int32x4_t __s0_841 = __p0_841; \ | 68521 | int32x4_t __s0_813 = __p0_813; \ |
| 66587 | int8x16_t __s1_841 = __p1_841; \ | 68522 | int8x16_t __s1_813 = __p1_813; \ |
| 66588 | int8x8_t __s2_841 = __p2_841; \ | 68523 | int8x8_t __s2_813 = __p2_813; \ |
| 66589 | int8x8_t __reint_841 = __s2_841; \ | 68524 | __ret_813 = vdotq_s32(__s0_813, __s1_813, __builtin_bit_cast(int8x16_t, splatq_lane_s32(__builtin_bit_cast(int32x2_t, __s2_813), __p3_813))); \ |
| 66590 | int32x4_t __reint1_841 = splatq_lane_s32(*(int32x2_t *) &__reint_841, __p3_841); \ | 68525 | __ret_813; \ |
| 66591 | __ret_841 = vdotq_s32(__s0_841, __s1_841, *(int8x16_t *) &__reint1_841); \ | ||
| 66592 | __ret_841; \ | ||
| 66593 | }) | 68526 | }) |
| 66594 | #else | 68527 | #else |
| 66595 | #define vdotq_lane_s32(__p0_842, __p1_842, __p2_842, __p3_842) __extension__ ({ \ | 68528 | #define vdotq_lane_s32(__p0_814, __p1_814, __p2_814, __p3_814) __extension__ ({ \ |
| 66596 | int32x4_t __ret_842; \ | 68529 | int32x4_t __ret_814; \ |
| 66597 | int32x4_t __s0_842 = __p0_842; \ | 68530 | int32x4_t __s0_814 = __p0_814; \ |
| 66598 | int8x16_t __s1_842 = __p1_842; \ | 68531 | int8x16_t __s1_814 = __p1_814; \ |
| 66599 | int8x8_t __s2_842 = __p2_842; \ | 68532 | int8x8_t __s2_814 = __p2_814; \ |
| 66600 | int32x4_t __rev0_842; __rev0_842 = __builtin_shufflevector(__s0_842, __s0_842, 3, 2, 1, 0); \ | 68533 | int32x4_t __rev0_814; __rev0_814 = __builtin_shufflevector(__s0_814, __s0_814, 3, 2, 1, 0); \ |
| 66601 | int8x16_t __rev1_842; __rev1_842 = __builtin_shufflevector(__s1_842, __s1_842, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68534 | int8x16_t __rev1_814; __rev1_814 = __builtin_shufflevector(__s1_814, __s1_814, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66602 | int8x8_t __rev2_842; __rev2_842 = __builtin_shufflevector(__s2_842, __s2_842, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68535 | int8x8_t __rev2_814; __rev2_814 = __builtin_shufflevector(__s2_814, __s2_814, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66603 | int8x8_t __reint_842 = __rev2_842; \ | 68536 | __ret_814 = __noswap_vdotq_s32(__rev0_814, __rev1_814, __builtin_bit_cast(int8x16_t, __noswap_splatq_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_814), __p3_814))); \ |
| 66604 | int32x4_t __reint1_842 = __noswap_splatq_lane_s32(*(int32x2_t *) &__reint_842, __p3_842); \ | 68537 | __ret_814 = __builtin_shufflevector(__ret_814, __ret_814, 3, 2, 1, 0); \ |
| 66605 | __ret_842 = __noswap_vdotq_s32(__rev0_842, __rev1_842, *(int8x16_t *) &__reint1_842); \ | 68538 | __ret_814; \ |
| 66606 | __ret_842 = __builtin_shufflevector(__ret_842, __ret_842, 3, 2, 1, 0); \ | ||
| 66607 | __ret_842; \ | ||
| 66608 | }) | 68539 | }) |
| 66609 | #endif | 68540 | #endif |
| 66610 | 68541 | ||
| 66611 | #ifdef __LITTLE_ENDIAN__ | 68542 | #ifdef __LITTLE_ENDIAN__ |
| 66612 | #define vdot_lane_u32(__p0_843, __p1_843, __p2_843, __p3_843) __extension__ ({ \ | 68543 | #define vdot_lane_u32(__p0_815, __p1_815, __p2_815, __p3_815) __extension__ ({ \ |
| 66613 | uint32x2_t __ret_843; \ | 68544 | uint32x2_t __ret_815; \ |
| 66614 | uint32x2_t __s0_843 = __p0_843; \ | 68545 | uint32x2_t __s0_815 = __p0_815; \ |
| 66615 | uint8x8_t __s1_843 = __p1_843; \ | 68546 | uint8x8_t __s1_815 = __p1_815; \ |
| 66616 | uint8x8_t __s2_843 = __p2_843; \ | 68547 | uint8x8_t __s2_815 = __p2_815; \ |
| 66617 | uint8x8_t __reint_843 = __s2_843; \ | 68548 | __ret_815 = vdot_u32(__s0_815, __s1_815, __builtin_bit_cast(uint8x8_t, splat_lane_u32(__builtin_bit_cast(uint32x2_t, __s2_815), __p3_815))); \ |
| 66618 | uint32x2_t __reint1_843 = splat_lane_u32(*(uint32x2_t *) &__reint_843, __p3_843); \ | 68549 | __ret_815; \ |
| 66619 | __ret_843 = vdot_u32(__s0_843, __s1_843, *(uint8x8_t *) &__reint1_843); \ | ||
| 66620 | __ret_843; \ | ||
| 66621 | }) | 68550 | }) |
| 66622 | #else | 68551 | #else |
| 66623 | #define vdot_lane_u32(__p0_844, __p1_844, __p2_844, __p3_844) __extension__ ({ \ | 68552 | #define vdot_lane_u32(__p0_816, __p1_816, __p2_816, __p3_816) __extension__ ({ \ |
| 66624 | uint32x2_t __ret_844; \ | 68553 | uint32x2_t __ret_816; \ |
| 66625 | uint32x2_t __s0_844 = __p0_844; \ | 68554 | uint32x2_t __s0_816 = __p0_816; \ |
| 66626 | uint8x8_t __s1_844 = __p1_844; \ | 68555 | uint8x8_t __s1_816 = __p1_816; \ |
| 66627 | uint8x8_t __s2_844 = __p2_844; \ | 68556 | uint8x8_t __s2_816 = __p2_816; \ |
| 66628 | uint32x2_t __rev0_844; __rev0_844 = __builtin_shufflevector(__s0_844, __s0_844, 1, 0); \ | 68557 | uint32x2_t __rev0_816; __rev0_816 = __builtin_shufflevector(__s0_816, __s0_816, 1, 0); \ |
| 66629 | uint8x8_t __rev1_844; __rev1_844 = __builtin_shufflevector(__s1_844, __s1_844, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68558 | uint8x8_t __rev1_816; __rev1_816 = __builtin_shufflevector(__s1_816, __s1_816, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66630 | uint8x8_t __rev2_844; __rev2_844 = __builtin_shufflevector(__s2_844, __s2_844, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68559 | uint8x8_t __rev2_816; __rev2_816 = __builtin_shufflevector(__s2_816, __s2_816, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66631 | uint8x8_t __reint_844 = __rev2_844; \ | 68560 | __ret_816 = __noswap_vdot_u32(__rev0_816, __rev1_816, __builtin_bit_cast(uint8x8_t, __noswap_splat_lane_u32(__builtin_bit_cast(uint32x2_t, __rev2_816), __p3_816))); \ |
| 66632 | uint32x2_t __reint1_844 = __noswap_splat_lane_u32(*(uint32x2_t *) &__reint_844, __p3_844); \ | 68561 | __ret_816 = __builtin_shufflevector(__ret_816, __ret_816, 1, 0); \ |
| 66633 | __ret_844 = __noswap_vdot_u32(__rev0_844, __rev1_844, *(uint8x8_t *) &__reint1_844); \ | 68562 | __ret_816; \ |
| 66634 | __ret_844 = __builtin_shufflevector(__ret_844, __ret_844, 1, 0); \ | ||
| 66635 | __ret_844; \ | ||
| 66636 | }) | 68563 | }) |
| 66637 | #endif | 68564 | #endif |
| 66638 | 68565 | ||
| 66639 | #ifdef __LITTLE_ENDIAN__ | 68566 | #ifdef __LITTLE_ENDIAN__ |
| 66640 | #define vdot_lane_s32(__p0_845, __p1_845, __p2_845, __p3_845) __extension__ ({ \ | 68567 | #define vdot_lane_s32(__p0_817, __p1_817, __p2_817, __p3_817) __extension__ ({ \ |
| 66641 | int32x2_t __ret_845; \ | 68568 | int32x2_t __ret_817; \ |
| 66642 | int32x2_t __s0_845 = __p0_845; \ | 68569 | int32x2_t __s0_817 = __p0_817; \ |
| 66643 | int8x8_t __s1_845 = __p1_845; \ | 68570 | int8x8_t __s1_817 = __p1_817; \ |
| 66644 | int8x8_t __s2_845 = __p2_845; \ | 68571 | int8x8_t __s2_817 = __p2_817; \ |
| 66645 | int8x8_t __reint_845 = __s2_845; \ | 68572 | __ret_817 = vdot_s32(__s0_817, __s1_817, __builtin_bit_cast(int8x8_t, splat_lane_s32(__builtin_bit_cast(int32x2_t, __s2_817), __p3_817))); \ |
| 66646 | int32x2_t __reint1_845 = splat_lane_s32(*(int32x2_t *) &__reint_845, __p3_845); \ | 68573 | __ret_817; \ |
| 66647 | __ret_845 = vdot_s32(__s0_845, __s1_845, *(int8x8_t *) &__reint1_845); \ | ||
| 66648 | __ret_845; \ | ||
| 66649 | }) | 68574 | }) |
| 66650 | #else | 68575 | #else |
| 66651 | #define vdot_lane_s32(__p0_846, __p1_846, __p2_846, __p3_846) __extension__ ({ \ | 68576 | #define vdot_lane_s32(__p0_818, __p1_818, __p2_818, __p3_818) __extension__ ({ \ |
| 66652 | int32x2_t __ret_846; \ | 68577 | int32x2_t __ret_818; \ |
| 66653 | int32x2_t __s0_846 = __p0_846; \ | 68578 | int32x2_t __s0_818 = __p0_818; \ |
| 66654 | int8x8_t __s1_846 = __p1_846; \ | 68579 | int8x8_t __s1_818 = __p1_818; \ |
| 66655 | int8x8_t __s2_846 = __p2_846; \ | 68580 | int8x8_t __s2_818 = __p2_818; \ |
| 66656 | int32x2_t __rev0_846; __rev0_846 = __builtin_shufflevector(__s0_846, __s0_846, 1, 0); \ | 68581 | int32x2_t __rev0_818; __rev0_818 = __builtin_shufflevector(__s0_818, __s0_818, 1, 0); \ |
| 66657 | int8x8_t __rev1_846; __rev1_846 = __builtin_shufflevector(__s1_846, __s1_846, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68582 | int8x8_t __rev1_818; __rev1_818 = __builtin_shufflevector(__s1_818, __s1_818, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66658 | int8x8_t __rev2_846; __rev2_846 = __builtin_shufflevector(__s2_846, __s2_846, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68583 | int8x8_t __rev2_818; __rev2_818 = __builtin_shufflevector(__s2_818, __s2_818, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66659 | int8x8_t __reint_846 = __rev2_846; \ | 68584 | __ret_818 = __noswap_vdot_s32(__rev0_818, __rev1_818, __builtin_bit_cast(int8x8_t, __noswap_splat_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_818), __p3_818))); \ |
| 66660 | int32x2_t __reint1_846 = __noswap_splat_lane_s32(*(int32x2_t *) &__reint_846, __p3_846); \ | 68585 | __ret_818 = __builtin_shufflevector(__ret_818, __ret_818, 1, 0); \ |
| 66661 | __ret_846 = __noswap_vdot_s32(__rev0_846, __rev1_846, *(int8x8_t *) &__reint1_846); \ | 68586 | __ret_818; \ |
| 66662 | __ret_846 = __builtin_shufflevector(__ret_846, __ret_846, 1, 0); \ | ||
| 66663 | __ret_846; \ | ||
| 66664 | }) | 68587 | }) |
| 66665 | #endif | 68588 | #endif |
| 66666 | 68589 | ||
| 66667 | #ifdef __LITTLE_ENDIAN__ | 68590 | #ifdef __LITTLE_ENDIAN__ |
| 66668 | #define vmulq_lane_f16(__p0_847, __p1_847, __p2_847) __extension__ ({ \ | 68591 | #define vmulq_lane_f16(__p0_819, __p1_819, __p2_819) __extension__ ({ \ |
| 66669 | float16x8_t __ret_847; \ | 68592 | float16x8_t __ret_819; \ |
| 66670 | float16x8_t __s0_847 = __p0_847; \ | 68593 | float16x8_t __s0_819 = __p0_819; \ |
| 66671 | float16x4_t __s1_847 = __p1_847; \ | 68594 | float16x4_t __s1_819 = __p1_819; \ |
| 66672 | __ret_847 = __s0_847 * splatq_lane_f16(__s1_847, __p2_847); \ | 68595 | __ret_819 = __s0_819 * splatq_lane_f16(__s1_819, __p2_819); \ |
| 66673 | __ret_847; \ | 68596 | __ret_819; \ |
| 66674 | }) | 68597 | }) |
| 66675 | #else | 68598 | #else |
| 66676 | #define vmulq_lane_f16(__p0_848, __p1_848, __p2_848) __extension__ ({ \ | 68599 | #define vmulq_lane_f16(__p0_820, __p1_820, __p2_820) __extension__ ({ \ |
| 66677 | float16x8_t __ret_848; \ | 68600 | float16x8_t __ret_820; \ |
| 66678 | float16x8_t __s0_848 = __p0_848; \ | 68601 | float16x8_t __s0_820 = __p0_820; \ |
| 66679 | float16x4_t __s1_848 = __p1_848; \ | 68602 | float16x4_t __s1_820 = __p1_820; \ |
| 66680 | float16x8_t __rev0_848; __rev0_848 = __builtin_shufflevector(__s0_848, __s0_848, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68603 | float16x8_t __rev0_820; __rev0_820 = __builtin_shufflevector(__s0_820, __s0_820, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66681 | float16x4_t __rev1_848; __rev1_848 = __builtin_shufflevector(__s1_848, __s1_848, 3, 2, 1, 0); \ | 68604 | float16x4_t __rev1_820; __rev1_820 = __builtin_shufflevector(__s1_820, __s1_820, 3, 2, 1, 0); \ |
| 66682 | __ret_848 = __rev0_848 * __noswap_splatq_lane_f16(__rev1_848, __p2_848); \ | 68605 | __ret_820 = __rev0_820 * __noswap_splatq_lane_f16(__rev1_820, __p2_820); \ |
| 66683 | __ret_848 = __builtin_shufflevector(__ret_848, __ret_848, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68606 | __ret_820 = __builtin_shufflevector(__ret_820, __ret_820, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66684 | __ret_848; \ | 68607 | __ret_820; \ |
| 66685 | }) | 68608 | }) |
| 66686 | #endif | 68609 | #endif |
| 66687 | 68610 | ||
| 66688 | #ifdef __LITTLE_ENDIAN__ | 68611 | #ifdef __LITTLE_ENDIAN__ |
| 66689 | #define vmul_lane_f16(__p0_849, __p1_849, __p2_849) __extension__ ({ \ | 68612 | #define vmul_lane_f16(__p0_821, __p1_821, __p2_821) __extension__ ({ \ |
| 66690 | float16x4_t __ret_849; \ | 68613 | float16x4_t __ret_821; \ |
| 66691 | float16x4_t __s0_849 = __p0_849; \ | 68614 | float16x4_t __s0_821 = __p0_821; \ |
| 66692 | float16x4_t __s1_849 = __p1_849; \ | 68615 | float16x4_t __s1_821 = __p1_821; \ |
| 66693 | __ret_849 = __s0_849 * splat_lane_f16(__s1_849, __p2_849); \ | 68616 | __ret_821 = __s0_821 * splat_lane_f16(__s1_821, __p2_821); \ |
| 66694 | __ret_849; \ | 68617 | __ret_821; \ |
| 66695 | }) | 68618 | }) |
| 66696 | #else | 68619 | #else |
| 66697 | #define vmul_lane_f16(__p0_850, __p1_850, __p2_850) __extension__ ({ \ | 68620 | #define vmul_lane_f16(__p0_822, __p1_822, __p2_822) __extension__ ({ \ |
| 66698 | float16x4_t __ret_850; \ | 68621 | float16x4_t __ret_822; \ |
| 66699 | float16x4_t __s0_850 = __p0_850; \ | 68622 | float16x4_t __s0_822 = __p0_822; \ |
| 66700 | float16x4_t __s1_850 = __p1_850; \ | 68623 | float16x4_t __s1_822 = __p1_822; \ |
| 66701 | float16x4_t __rev0_850; __rev0_850 = __builtin_shufflevector(__s0_850, __s0_850, 3, 2, 1, 0); \ | 68624 | float16x4_t __rev0_822; __rev0_822 = __builtin_shufflevector(__s0_822, __s0_822, 3, 2, 1, 0); \ |
| 66702 | float16x4_t __rev1_850; __rev1_850 = __builtin_shufflevector(__s1_850, __s1_850, 3, 2, 1, 0); \ | 68625 | float16x4_t __rev1_822; __rev1_822 = __builtin_shufflevector(__s1_822, __s1_822, 3, 2, 1, 0); \ |
| 66703 | __ret_850 = __rev0_850 * __noswap_splat_lane_f16(__rev1_850, __p2_850); \ | 68626 | __ret_822 = __rev0_822 * __noswap_splat_lane_f16(__rev1_822, __p2_822); \ |
| 66704 | __ret_850 = __builtin_shufflevector(__ret_850, __ret_850, 3, 2, 1, 0); \ | 68627 | __ret_822 = __builtin_shufflevector(__ret_822, __ret_822, 3, 2, 1, 0); \ |
| 66705 | __ret_850; \ | 68628 | __ret_822; \ |
| 66706 | }) | 68629 | }) |
| 66707 | #endif | 68630 | #endif |
| 66708 | 68631 | ||
| 66709 | #ifdef __LITTLE_ENDIAN__ | 68632 | #ifdef __LITTLE_ENDIAN__ |
| 66710 | #define vsudotq_lane_s32(__p0_851, __p1_851, __p2_851, __p3_851) __extension__ ({ \ | 68633 | #define vsudotq_lane_s32(__p0_823, __p1_823, __p2_823, __p3_823) __extension__ ({ \ |
| 66711 | int32x4_t __ret_851; \ | 68634 | int32x4_t __ret_823; \ |
| 66712 | int32x4_t __s0_851 = __p0_851; \ | 68635 | int32x4_t __s0_823 = __p0_823; \ |
| 66713 | int8x16_t __s1_851 = __p1_851; \ | 68636 | int8x16_t __s1_823 = __p1_823; \ |
| 66714 | uint8x8_t __s2_851 = __p2_851; \ | 68637 | uint8x8_t __s2_823 = __p2_823; \ |
| 66715 | uint8x8_t __reint_851 = __s2_851; \ | 68638 | __ret_823 = vusdotq_s32(__s0_823, (uint8x16_t)(splatq_lane_s32(__builtin_bit_cast(int32x2_t, __s2_823), __p3_823)), __s1_823); \ |
| 66716 | __ret_851 = vusdotq_s32(__s0_851, (uint8x16_t)(splatq_lane_s32(*(int32x2_t *) &__reint_851, __p3_851)), __s1_851); \ | 68639 | __ret_823; \ |
| 66717 | __ret_851; \ | ||
| 66718 | }) | 68640 | }) |
| 66719 | #else | 68641 | #else |
| 66720 | #define vsudotq_lane_s32(__p0_852, __p1_852, __p2_852, __p3_852) __extension__ ({ \ | 68642 | #define vsudotq_lane_s32(__p0_824, __p1_824, __p2_824, __p3_824) __extension__ ({ \ |
| 66721 | int32x4_t __ret_852; \ | 68643 | int32x4_t __ret_824; \ |
| 66722 | int32x4_t __s0_852 = __p0_852; \ | 68644 | int32x4_t __s0_824 = __p0_824; \ |
| 66723 | int8x16_t __s1_852 = __p1_852; \ | 68645 | int8x16_t __s1_824 = __p1_824; \ |
| 66724 | uint8x8_t __s2_852 = __p2_852; \ | 68646 | uint8x8_t __s2_824 = __p2_824; \ |
| 66725 | int32x4_t __rev0_852; __rev0_852 = __builtin_shufflevector(__s0_852, __s0_852, 3, 2, 1, 0); \ | 68647 | int32x4_t __rev0_824; __rev0_824 = __builtin_shufflevector(__s0_824, __s0_824, 3, 2, 1, 0); \ |
| 66726 | int8x16_t __rev1_852; __rev1_852 = __builtin_shufflevector(__s1_852, __s1_852, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68648 | int8x16_t __rev1_824; __rev1_824 = __builtin_shufflevector(__s1_824, __s1_824, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66727 | uint8x8_t __rev2_852; __rev2_852 = __builtin_shufflevector(__s2_852, __s2_852, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68649 | uint8x8_t __rev2_824; __rev2_824 = __builtin_shufflevector(__s2_824, __s2_824, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66728 | uint8x8_t __reint_852 = __rev2_852; \ | 68650 | __ret_824 = __noswap_vusdotq_s32(__rev0_824, (uint8x16_t)(__noswap_splatq_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_824), __p3_824)), __rev1_824); \ |
| 66729 | __ret_852 = __noswap_vusdotq_s32(__rev0_852, (uint8x16_t)(__noswap_splatq_lane_s32(*(int32x2_t *) &__reint_852, __p3_852)), __rev1_852); \ | 68651 | __ret_824 = __builtin_shufflevector(__ret_824, __ret_824, 3, 2, 1, 0); \ |
| 66730 | __ret_852 = __builtin_shufflevector(__ret_852, __ret_852, 3, 2, 1, 0); \ | 68652 | __ret_824; \ |
| 66731 | __ret_852; \ | ||
| 66732 | }) | 68653 | }) |
| 66733 | #endif | 68654 | #endif |
| 66734 | 68655 | ||
| 66735 | #ifdef __LITTLE_ENDIAN__ | 68656 | #ifdef __LITTLE_ENDIAN__ |
| 66736 | #define vsudot_lane_s32(__p0_853, __p1_853, __p2_853, __p3_853) __extension__ ({ \ | 68657 | #define vsudot_lane_s32(__p0_825, __p1_825, __p2_825, __p3_825) __extension__ ({ \ |
| 66737 | int32x2_t __ret_853; \ | 68658 | int32x2_t __ret_825; \ |
| 66738 | int32x2_t __s0_853 = __p0_853; \ | 68659 | int32x2_t __s0_825 = __p0_825; \ |
| 66739 | int8x8_t __s1_853 = __p1_853; \ | 68660 | int8x8_t __s1_825 = __p1_825; \ |
| 66740 | uint8x8_t __s2_853 = __p2_853; \ | 68661 | uint8x8_t __s2_825 = __p2_825; \ |
| 66741 | uint8x8_t __reint_853 = __s2_853; \ | 68662 | __ret_825 = vusdot_s32(__s0_825, (uint8x8_t)(splat_lane_s32(__builtin_bit_cast(int32x2_t, __s2_825), __p3_825)), __s1_825); \ |
| 66742 | __ret_853 = vusdot_s32(__s0_853, (uint8x8_t)(splat_lane_s32(*(int32x2_t *) &__reint_853, __p3_853)), __s1_853); \ | 68663 | __ret_825; \ |
| 66743 | __ret_853; \ | ||
| 66744 | }) | 68664 | }) |
| 66745 | #else | 68665 | #else |
| 66746 | #define vsudot_lane_s32(__p0_854, __p1_854, __p2_854, __p3_854) __extension__ ({ \ | 68666 | #define vsudot_lane_s32(__p0_826, __p1_826, __p2_826, __p3_826) __extension__ ({ \ |
| 66747 | int32x2_t __ret_854; \ | 68667 | int32x2_t __ret_826; \ |
| 66748 | int32x2_t __s0_854 = __p0_854; \ | 68668 | int32x2_t __s0_826 = __p0_826; \ |
| 66749 | int8x8_t __s1_854 = __p1_854; \ | 68669 | int8x8_t __s1_826 = __p1_826; \ |
| 66750 | uint8x8_t __s2_854 = __p2_854; \ | 68670 | uint8x8_t __s2_826 = __p2_826; \ |
| 66751 | int32x2_t __rev0_854; __rev0_854 = __builtin_shufflevector(__s0_854, __s0_854, 1, 0); \ | 68671 | int32x2_t __rev0_826; __rev0_826 = __builtin_shufflevector(__s0_826, __s0_826, 1, 0); \ |
| 66752 | int8x8_t __rev1_854; __rev1_854 = __builtin_shufflevector(__s1_854, __s1_854, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68672 | int8x8_t __rev1_826; __rev1_826 = __builtin_shufflevector(__s1_826, __s1_826, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66753 | uint8x8_t __rev2_854; __rev2_854 = __builtin_shufflevector(__s2_854, __s2_854, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68673 | uint8x8_t __rev2_826; __rev2_826 = __builtin_shufflevector(__s2_826, __s2_826, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66754 | uint8x8_t __reint_854 = __rev2_854; \ | 68674 | __ret_826 = __noswap_vusdot_s32(__rev0_826, (uint8x8_t)(__noswap_splat_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_826), __p3_826)), __rev1_826); \ |
| 66755 | __ret_854 = __noswap_vusdot_s32(__rev0_854, (uint8x8_t)(__noswap_splat_lane_s32(*(int32x2_t *) &__reint_854, __p3_854)), __rev1_854); \ | 68675 | __ret_826 = __builtin_shufflevector(__ret_826, __ret_826, 1, 0); \ |
| 66756 | __ret_854 = __builtin_shufflevector(__ret_854, __ret_854, 1, 0); \ | 68676 | __ret_826; \ |
| 66757 | __ret_854; \ | ||
| 66758 | }) | 68677 | }) |
| 66759 | #endif | 68678 | #endif |
| 66760 | 68679 | ||
| 66761 | #ifdef __LITTLE_ENDIAN__ | 68680 | #ifdef __LITTLE_ENDIAN__ |
| 66762 | #define vusdotq_lane_s32(__p0_855, __p1_855, __p2_855, __p3_855) __extension__ ({ \ | 68681 | #define vusdotq_lane_s32(__p0_827, __p1_827, __p2_827, __p3_827) __extension__ ({ \ |
| 66763 | int32x4_t __ret_855; \ | 68682 | int32x4_t __ret_827; \ |
| 66764 | int32x4_t __s0_855 = __p0_855; \ | 68683 | int32x4_t __s0_827 = __p0_827; \ |
| 66765 | uint8x16_t __s1_855 = __p1_855; \ | 68684 | uint8x16_t __s1_827 = __p1_827; \ |
| 66766 | int8x8_t __s2_855 = __p2_855; \ | 68685 | int8x8_t __s2_827 = __p2_827; \ |
| 66767 | int8x8_t __reint_855 = __s2_855; \ | 68686 | __ret_827 = vusdotq_s32(__s0_827, __s1_827, (int8x16_t)(splatq_lane_s32(__builtin_bit_cast(int32x2_t, __s2_827), __p3_827))); \ |
| 66768 | __ret_855 = vusdotq_s32(__s0_855, __s1_855, (int8x16_t)(splatq_lane_s32(*(int32x2_t *) &__reint_855, __p3_855))); \ | 68687 | __ret_827; \ |
| 66769 | __ret_855; \ | ||
| 66770 | }) | 68688 | }) |
| 66771 | #else | 68689 | #else |
| 66772 | #define vusdotq_lane_s32(__p0_856, __p1_856, __p2_856, __p3_856) __extension__ ({ \ | 68690 | #define vusdotq_lane_s32(__p0_828, __p1_828, __p2_828, __p3_828) __extension__ ({ \ |
| 66773 | int32x4_t __ret_856; \ | 68691 | int32x4_t __ret_828; \ |
| 66774 | int32x4_t __s0_856 = __p0_856; \ | 68692 | int32x4_t __s0_828 = __p0_828; \ |
| 66775 | uint8x16_t __s1_856 = __p1_856; \ | 68693 | uint8x16_t __s1_828 = __p1_828; \ |
| 66776 | int8x8_t __s2_856 = __p2_856; \ | 68694 | int8x8_t __s2_828 = __p2_828; \ |
| 66777 | int32x4_t __rev0_856; __rev0_856 = __builtin_shufflevector(__s0_856, __s0_856, 3, 2, 1, 0); \ | 68695 | int32x4_t __rev0_828; __rev0_828 = __builtin_shufflevector(__s0_828, __s0_828, 3, 2, 1, 0); \ |
| 66778 | uint8x16_t __rev1_856; __rev1_856 = __builtin_shufflevector(__s1_856, __s1_856, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68696 | uint8x16_t __rev1_828; __rev1_828 = __builtin_shufflevector(__s1_828, __s1_828, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66779 | int8x8_t __rev2_856; __rev2_856 = __builtin_shufflevector(__s2_856, __s2_856, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68697 | int8x8_t __rev2_828; __rev2_828 = __builtin_shufflevector(__s2_828, __s2_828, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66780 | int8x8_t __reint_856 = __rev2_856; \ | 68698 | __ret_828 = __noswap_vusdotq_s32(__rev0_828, __rev1_828, (int8x16_t)(__noswap_splatq_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_828), __p3_828))); \ |
| 66781 | __ret_856 = __noswap_vusdotq_s32(__rev0_856, __rev1_856, (int8x16_t)(__noswap_splatq_lane_s32(*(int32x2_t *) &__reint_856, __p3_856))); \ | 68699 | __ret_828 = __builtin_shufflevector(__ret_828, __ret_828, 3, 2, 1, 0); \ |
| 66782 | __ret_856 = __builtin_shufflevector(__ret_856, __ret_856, 3, 2, 1, 0); \ | 68700 | __ret_828; \ |
| 66783 | __ret_856; \ | ||
| 66784 | }) | 68701 | }) |
| 66785 | #endif | 68702 | #endif |
| 66786 | 68703 | ||
| 66787 | #ifdef __LITTLE_ENDIAN__ | 68704 | #ifdef __LITTLE_ENDIAN__ |
| 66788 | #define vusdot_lane_s32(__p0_857, __p1_857, __p2_857, __p3_857) __extension__ ({ \ | 68705 | #define vusdot_lane_s32(__p0_829, __p1_829, __p2_829, __p3_829) __extension__ ({ \ |
| 66789 | int32x2_t __ret_857; \ | 68706 | int32x2_t __ret_829; \ |
| 66790 | int32x2_t __s0_857 = __p0_857; \ | 68707 | int32x2_t __s0_829 = __p0_829; \ |
| 66791 | uint8x8_t __s1_857 = __p1_857; \ | 68708 | uint8x8_t __s1_829 = __p1_829; \ |
| 66792 | int8x8_t __s2_857 = __p2_857; \ | 68709 | int8x8_t __s2_829 = __p2_829; \ |
| 66793 | int8x8_t __reint_857 = __s2_857; \ | 68710 | __ret_829 = vusdot_s32(__s0_829, __s1_829, (int8x8_t)(splat_lane_s32(__builtin_bit_cast(int32x2_t, __s2_829), __p3_829))); \ |
| 66794 | __ret_857 = vusdot_s32(__s0_857, __s1_857, (int8x8_t)(splat_lane_s32(*(int32x2_t *) &__reint_857, __p3_857))); \ | 68711 | __ret_829; \ |
| 66795 | __ret_857; \ | ||
| 66796 | }) | 68712 | }) |
| 66797 | #else | 68713 | #else |
| 66798 | #define vusdot_lane_s32(__p0_858, __p1_858, __p2_858, __p3_858) __extension__ ({ \ | 68714 | #define vusdot_lane_s32(__p0_830, __p1_830, __p2_830, __p3_830) __extension__ ({ \ |
| 66799 | int32x2_t __ret_858; \ | 68715 | int32x2_t __ret_830; \ |
| 66800 | int32x2_t __s0_858 = __p0_858; \ | 68716 | int32x2_t __s0_830 = __p0_830; \ |
| 66801 | uint8x8_t __s1_858 = __p1_858; \ | 68717 | uint8x8_t __s1_830 = __p1_830; \ |
| 66802 | int8x8_t __s2_858 = __p2_858; \ | 68718 | int8x8_t __s2_830 = __p2_830; \ |
| 66803 | int32x2_t __rev0_858; __rev0_858 = __builtin_shufflevector(__s0_858, __s0_858, 1, 0); \ | 68719 | int32x2_t __rev0_830; __rev0_830 = __builtin_shufflevector(__s0_830, __s0_830, 1, 0); \ |
| 66804 | uint8x8_t __rev1_858; __rev1_858 = __builtin_shufflevector(__s1_858, __s1_858, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68720 | uint8x8_t __rev1_830; __rev1_830 = __builtin_shufflevector(__s1_830, __s1_830, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66805 | int8x8_t __rev2_858; __rev2_858 = __builtin_shufflevector(__s2_858, __s2_858, 7, 6, 5, 4, 3, 2, 1, 0); \ | 68721 | int8x8_t __rev2_830; __rev2_830 = __builtin_shufflevector(__s2_830, __s2_830, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 66806 | int8x8_t __reint_858 = __rev2_858; \ | 68722 | __ret_830 = __noswap_vusdot_s32(__rev0_830, __rev1_830, (int8x8_t)(__noswap_splat_lane_s32(__builtin_bit_cast(int32x2_t, __rev2_830), __p3_830))); \ |
| 66807 | __ret_858 = __noswap_vusdot_s32(__rev0_858, __rev1_858, (int8x8_t)(__noswap_splat_lane_s32(*(int32x2_t *) &__reint_858, __p3_858))); \ | 68723 | __ret_830 = __builtin_shufflevector(__ret_830, __ret_830, 1, 0); \ |
| 66808 | __ret_858 = __builtin_shufflevector(__ret_858, __ret_858, 1, 0); \ | 68724 | __ret_830; \ |
| 66809 | __ret_858; \ | ||
| 66810 | }) | 68725 | }) |
| 66811 | #endif | 68726 | #endif |
| 66812 | 68727 | ||
| ... | @@ -67363,60 +69278,48 @@ __ai __attribute__((target("neon"))) int32x4_t vaddw_s16(int32x4_t __p0, int16x4 | ... | @@ -67363,60 +69278,48 @@ __ai __attribute__((target("neon"))) int32x4_t vaddw_s16(int32x4_t __p0, int16x4 |
| 67363 | #endif | 69278 | #endif |
| 67364 | 69279 | ||
| 67365 | #ifdef __LITTLE_ENDIAN__ | 69280 | #ifdef __LITTLE_ENDIAN__ |
| 67366 | #define vget_lane_f16(__p0_859, __p1_859) __extension__ ({ \ | 69281 | #define vget_lane_f16(__p0_831, __p1_831) __extension__ ({ \ |
| 67367 | float16_t __ret_859; \ | 69282 | float16_t __ret_831; \ |
| 67368 | float16x4_t __s0_859 = __p0_859; \ | 69283 | float16x4_t __s0_831 = __p0_831; \ |
| 67369 | float16x4_t __reint_859 = __s0_859; \ | 69284 | __ret_831 = __builtin_bit_cast(float16_t, vget_lane_s16(__builtin_bit_cast(int16x4_t, __s0_831), __p1_831)); \ |
| 67370 | int16_t __reint1_859 = vget_lane_s16(*(int16x4_t *) &__reint_859, __p1_859); \ | 69285 | __ret_831; \ |
| 67371 | __ret_859 = *(float16_t *) &__reint1_859; \ | ||
| 67372 | __ret_859; \ | ||
| 67373 | }) | 69286 | }) |
| 67374 | #else | 69287 | #else |
| 67375 | #define vget_lane_f16(__p0_860, __p1_860) __extension__ ({ \ | 69288 | #define vget_lane_f16(__p0_832, __p1_832) __extension__ ({ \ |
| 67376 | float16_t __ret_860; \ | 69289 | float16_t __ret_832; \ |
| 67377 | float16x4_t __s0_860 = __p0_860; \ | 69290 | float16x4_t __s0_832 = __p0_832; \ |
| 67378 | float16x4_t __rev0_860; __rev0_860 = __builtin_shufflevector(__s0_860, __s0_860, 3, 2, 1, 0); \ | 69291 | float16x4_t __rev0_832; __rev0_832 = __builtin_shufflevector(__s0_832, __s0_832, 3, 2, 1, 0); \ |
| 67379 | float16x4_t __reint_860 = __rev0_860; \ | 69292 | __ret_832 = __builtin_bit_cast(float16_t, __noswap_vget_lane_s16(__builtin_bit_cast(int16x4_t, __rev0_832), __p1_832)); \ |
| 67380 | int16_t __reint1_860 = __noswap_vget_lane_s16(*(int16x4_t *) &__reint_860, __p1_860); \ | 69293 | __ret_832; \ |
| 67381 | __ret_860 = *(float16_t *) &__reint1_860; \ | ||
| 67382 | __ret_860; \ | ||
| 67383 | }) | 69294 | }) |
| 67384 | #define __noswap_vget_lane_f16(__p0_861, __p1_861) __extension__ ({ \ | 69295 | #define __noswap_vget_lane_f16(__p0_833, __p1_833) __extension__ ({ \ |
| 67385 | float16_t __ret_861; \ | 69296 | float16_t __ret_833; \ |
| 67386 | float16x4_t __s0_861 = __p0_861; \ | 69297 | float16x4_t __s0_833 = __p0_833; \ |
| 67387 | float16x4_t __reint_861 = __s0_861; \ | 69298 | __ret_833 = __builtin_bit_cast(float16_t, __noswap_vget_lane_s16(__builtin_bit_cast(int16x4_t, __s0_833), __p1_833)); \ |
| 67388 | int16_t __reint1_861 = __noswap_vget_lane_s16(*(int16x4_t *) &__reint_861, __p1_861); \ | 69299 | __ret_833; \ |
| 67389 | __ret_861 = *(float16_t *) &__reint1_861; \ | ||
| 67390 | __ret_861; \ | ||
| 67391 | }) | 69300 | }) |
| 67392 | #endif | 69301 | #endif |
| 67393 | 69302 | ||
| 67394 | #ifdef __LITTLE_ENDIAN__ | 69303 | #ifdef __LITTLE_ENDIAN__ |
| 67395 | #define vgetq_lane_f16(__p0_862, __p1_862) __extension__ ({ \ | 69304 | #define vgetq_lane_f16(__p0_834, __p1_834) __extension__ ({ \ |
| 67396 | float16_t __ret_862; \ | 69305 | float16_t __ret_834; \ |
| 67397 | float16x8_t __s0_862 = __p0_862; \ | 69306 | float16x8_t __s0_834 = __p0_834; \ |
| 67398 | float16x8_t __reint_862 = __s0_862; \ | 69307 | __ret_834 = __builtin_bit_cast(float16_t, vgetq_lane_s16(__builtin_bit_cast(int16x8_t, __s0_834), __p1_834)); \ |
| 67399 | int16_t __reint1_862 = vgetq_lane_s16(*(int16x8_t *) &__reint_862, __p1_862); \ | 69308 | __ret_834; \ |
| 67400 | __ret_862 = *(float16_t *) &__reint1_862; \ | ||
| 67401 | __ret_862; \ | ||
| 67402 | }) | 69309 | }) |
| 67403 | #else | 69310 | #else |
| 67404 | #define vgetq_lane_f16(__p0_863, __p1_863) __extension__ ({ \ | 69311 | #define vgetq_lane_f16(__p0_835, __p1_835) __extension__ ({ \ |
| 67405 | float16_t __ret_863; \ | 69312 | float16_t __ret_835; \ |
| 67406 | float16x8_t __s0_863 = __p0_863; \ | 69313 | float16x8_t __s0_835 = __p0_835; \ |
| 67407 | float16x8_t __rev0_863; __rev0_863 = __builtin_shufflevector(__s0_863, __s0_863, 7, 6, 5, 4, 3, 2, 1, 0); \ | 69314 | float16x8_t __rev0_835; __rev0_835 = __builtin_shufflevector(__s0_835, __s0_835, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 67408 | float16x8_t __reint_863 = __rev0_863; \ | 69315 | __ret_835 = __builtin_bit_cast(float16_t, __noswap_vgetq_lane_s16(__builtin_bit_cast(int16x8_t, __rev0_835), __p1_835)); \ |
| 67409 | int16_t __reint1_863 = __noswap_vgetq_lane_s16(*(int16x8_t *) &__reint_863, __p1_863); \ | 69316 | __ret_835; \ |
| 67410 | __ret_863 = *(float16_t *) &__reint1_863; \ | ||
| 67411 | __ret_863; \ | ||
| 67412 | }) | 69317 | }) |
| 67413 | #define __noswap_vgetq_lane_f16(__p0_864, __p1_864) __extension__ ({ \ | 69318 | #define __noswap_vgetq_lane_f16(__p0_836, __p1_836) __extension__ ({ \ |
| 67414 | float16_t __ret_864; \ | 69319 | float16_t __ret_836; \ |
| 67415 | float16x8_t __s0_864 = __p0_864; \ | 69320 | float16x8_t __s0_836 = __p0_836; \ |
| 67416 | float16x8_t __reint_864 = __s0_864; \ | 69321 | __ret_836 = __builtin_bit_cast(float16_t, __noswap_vgetq_lane_s16(__builtin_bit_cast(int16x8_t, __s0_836), __p1_836)); \ |
| 67417 | int16_t __reint1_864 = __noswap_vgetq_lane_s16(*(int16x8_t *) &__reint_864, __p1_864); \ | 69322 | __ret_836; \ |
| 67418 | __ret_864 = *(float16_t *) &__reint1_864; \ | ||
| 67419 | __ret_864; \ | ||
| 67420 | }) | 69323 | }) |
| 67421 | #endif | 69324 | #endif |
| 67422 | 69325 | ||
| ... | @@ -67559,98 +69462,98 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlal_s16(int32x4_t __p0 | ... | @@ -67559,98 +69462,98 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlal_s16(int32x4_t __p0 |
| 67559 | #endif | 69462 | #endif |
| 67560 | 69463 | ||
| 67561 | #ifdef __LITTLE_ENDIAN__ | 69464 | #ifdef __LITTLE_ENDIAN__ |
| 67562 | #define vmlal_lane_u32(__p0_865, __p1_865, __p2_865, __p3_865) __extension__ ({ \ | 69465 | #define vmlal_lane_u32(__p0_837, __p1_837, __p2_837, __p3_837) __extension__ ({ \ |
| 67563 | uint64x2_t __ret_865; \ | 69466 | uint64x2_t __ret_837; \ |
| 67564 | uint64x2_t __s0_865 = __p0_865; \ | 69467 | uint64x2_t __s0_837 = __p0_837; \ |
| 67565 | uint32x2_t __s1_865 = __p1_865; \ | 69468 | uint32x2_t __s1_837 = __p1_837; \ |
| 67566 | uint32x2_t __s2_865 = __p2_865; \ | 69469 | uint32x2_t __s2_837 = __p2_837; \ |
| 67567 | __ret_865 = __s0_865 + vmull_u32(__s1_865, splat_lane_u32(__s2_865, __p3_865)); \ | 69470 | __ret_837 = __s0_837 + vmull_u32(__s1_837, splat_lane_u32(__s2_837, __p3_837)); \ |
| 67568 | __ret_865; \ | 69471 | __ret_837; \ |
| 67569 | }) | 69472 | }) |
| 67570 | #else | 69473 | #else |
| 67571 | #define vmlal_lane_u32(__p0_866, __p1_866, __p2_866, __p3_866) __extension__ ({ \ | 69474 | #define vmlal_lane_u32(__p0_838, __p1_838, __p2_838, __p3_838) __extension__ ({ \ |
| 67572 | uint64x2_t __ret_866; \ | 69475 | uint64x2_t __ret_838; \ |
| 67573 | uint64x2_t __s0_866 = __p0_866; \ | 69476 | uint64x2_t __s0_838 = __p0_838; \ |
| 67574 | uint32x2_t __s1_866 = __p1_866; \ | 69477 | uint32x2_t __s1_838 = __p1_838; \ |
| 67575 | uint32x2_t __s2_866 = __p2_866; \ | 69478 | uint32x2_t __s2_838 = __p2_838; \ |
| 67576 | uint64x2_t __rev0_866; __rev0_866 = __builtin_shufflevector(__s0_866, __s0_866, 1, 0); \ | 69479 | uint64x2_t __rev0_838; __rev0_838 = __builtin_shufflevector(__s0_838, __s0_838, 1, 0); \ |
| 67577 | uint32x2_t __rev1_866; __rev1_866 = __builtin_shufflevector(__s1_866, __s1_866, 1, 0); \ | 69480 | uint32x2_t __rev1_838; __rev1_838 = __builtin_shufflevector(__s1_838, __s1_838, 1, 0); \ |
| 67578 | uint32x2_t __rev2_866; __rev2_866 = __builtin_shufflevector(__s2_866, __s2_866, 1, 0); \ | 69481 | uint32x2_t __rev2_838; __rev2_838 = __builtin_shufflevector(__s2_838, __s2_838, 1, 0); \ |
| 67579 | __ret_866 = __rev0_866 + __noswap_vmull_u32(__rev1_866, __noswap_splat_lane_u32(__rev2_866, __p3_866)); \ | 69482 | __ret_838 = __rev0_838 + __noswap_vmull_u32(__rev1_838, __noswap_splat_lane_u32(__rev2_838, __p3_838)); \ |
| 67580 | __ret_866 = __builtin_shufflevector(__ret_866, __ret_866, 1, 0); \ | 69483 | __ret_838 = __builtin_shufflevector(__ret_838, __ret_838, 1, 0); \ |
| 67581 | __ret_866; \ | 69484 | __ret_838; \ |
| 67582 | }) | 69485 | }) |
| 67583 | #endif | 69486 | #endif |
| 67584 | 69487 | ||
| 67585 | #ifdef __LITTLE_ENDIAN__ | 69488 | #ifdef __LITTLE_ENDIAN__ |
| 67586 | #define vmlal_lane_u16(__p0_867, __p1_867, __p2_867, __p3_867) __extension__ ({ \ | 69489 | #define vmlal_lane_u16(__p0_839, __p1_839, __p2_839, __p3_839) __extension__ ({ \ |
| 67587 | uint32x4_t __ret_867; \ | 69490 | uint32x4_t __ret_839; \ |
| 67588 | uint32x4_t __s0_867 = __p0_867; \ | 69491 | uint32x4_t __s0_839 = __p0_839; \ |
| 67589 | uint16x4_t __s1_867 = __p1_867; \ | 69492 | uint16x4_t __s1_839 = __p1_839; \ |
| 67590 | uint16x4_t __s2_867 = __p2_867; \ | 69493 | uint16x4_t __s2_839 = __p2_839; \ |
| 67591 | __ret_867 = __s0_867 + vmull_u16(__s1_867, splat_lane_u16(__s2_867, __p3_867)); \ | 69494 | __ret_839 = __s0_839 + vmull_u16(__s1_839, splat_lane_u16(__s2_839, __p3_839)); \ |
| 67592 | __ret_867; \ | 69495 | __ret_839; \ |
| 67593 | }) | 69496 | }) |
| 67594 | #else | 69497 | #else |
| 67595 | #define vmlal_lane_u16(__p0_868, __p1_868, __p2_868, __p3_868) __extension__ ({ \ | 69498 | #define vmlal_lane_u16(__p0_840, __p1_840, __p2_840, __p3_840) __extension__ ({ \ |
| 67596 | uint32x4_t __ret_868; \ | 69499 | uint32x4_t __ret_840; \ |
| 67597 | uint32x4_t __s0_868 = __p0_868; \ | 69500 | uint32x4_t __s0_840 = __p0_840; \ |
| 67598 | uint16x4_t __s1_868 = __p1_868; \ | 69501 | uint16x4_t __s1_840 = __p1_840; \ |
| 67599 | uint16x4_t __s2_868 = __p2_868; \ | 69502 | uint16x4_t __s2_840 = __p2_840; \ |
| 67600 | uint32x4_t __rev0_868; __rev0_868 = __builtin_shufflevector(__s0_868, __s0_868, 3, 2, 1, 0); \ | 69503 | uint32x4_t __rev0_840; __rev0_840 = __builtin_shufflevector(__s0_840, __s0_840, 3, 2, 1, 0); \ |
| 67601 | uint16x4_t __rev1_868; __rev1_868 = __builtin_shufflevector(__s1_868, __s1_868, 3, 2, 1, 0); \ | 69504 | uint16x4_t __rev1_840; __rev1_840 = __builtin_shufflevector(__s1_840, __s1_840, 3, 2, 1, 0); \ |
| 67602 | uint16x4_t __rev2_868; __rev2_868 = __builtin_shufflevector(__s2_868, __s2_868, 3, 2, 1, 0); \ | 69505 | uint16x4_t __rev2_840; __rev2_840 = __builtin_shufflevector(__s2_840, __s2_840, 3, 2, 1, 0); \ |
| 67603 | __ret_868 = __rev0_868 + __noswap_vmull_u16(__rev1_868, __noswap_splat_lane_u16(__rev2_868, __p3_868)); \ | 69506 | __ret_840 = __rev0_840 + __noswap_vmull_u16(__rev1_840, __noswap_splat_lane_u16(__rev2_840, __p3_840)); \ |
| 67604 | __ret_868 = __builtin_shufflevector(__ret_868, __ret_868, 3, 2, 1, 0); \ | 69507 | __ret_840 = __builtin_shufflevector(__ret_840, __ret_840, 3, 2, 1, 0); \ |
| 67605 | __ret_868; \ | 69508 | __ret_840; \ |
| 67606 | }) | 69509 | }) |
| 67607 | #endif | 69510 | #endif |
| 67608 | 69511 | ||
| 67609 | #ifdef __LITTLE_ENDIAN__ | 69512 | #ifdef __LITTLE_ENDIAN__ |
| 67610 | #define vmlal_lane_s32(__p0_869, __p1_869, __p2_869, __p3_869) __extension__ ({ \ | 69513 | #define vmlal_lane_s32(__p0_841, __p1_841, __p2_841, __p3_841) __extension__ ({ \ |
| 67611 | int64x2_t __ret_869; \ | 69514 | int64x2_t __ret_841; \ |
| 67612 | int64x2_t __s0_869 = __p0_869; \ | 69515 | int64x2_t __s0_841 = __p0_841; \ |
| 67613 | int32x2_t __s1_869 = __p1_869; \ | 69516 | int32x2_t __s1_841 = __p1_841; \ |
| 67614 | int32x2_t __s2_869 = __p2_869; \ | 69517 | int32x2_t __s2_841 = __p2_841; \ |
| 67615 | __ret_869 = __s0_869 + vmull_s32(__s1_869, splat_lane_s32(__s2_869, __p3_869)); \ | 69518 | __ret_841 = __s0_841 + vmull_s32(__s1_841, splat_lane_s32(__s2_841, __p3_841)); \ |
| 67616 | __ret_869; \ | 69519 | __ret_841; \ |
| 67617 | }) | 69520 | }) |
| 67618 | #else | 69521 | #else |
| 67619 | #define vmlal_lane_s32(__p0_870, __p1_870, __p2_870, __p3_870) __extension__ ({ \ | 69522 | #define vmlal_lane_s32(__p0_842, __p1_842, __p2_842, __p3_842) __extension__ ({ \ |
| 67620 | int64x2_t __ret_870; \ | 69523 | int64x2_t __ret_842; \ |
| 67621 | int64x2_t __s0_870 = __p0_870; \ | 69524 | int64x2_t __s0_842 = __p0_842; \ |
| 67622 | int32x2_t __s1_870 = __p1_870; \ | 69525 | int32x2_t __s1_842 = __p1_842; \ |
| 67623 | int32x2_t __s2_870 = __p2_870; \ | 69526 | int32x2_t __s2_842 = __p2_842; \ |
| 67624 | int64x2_t __rev0_870; __rev0_870 = __builtin_shufflevector(__s0_870, __s0_870, 1, 0); \ | 69527 | int64x2_t __rev0_842; __rev0_842 = __builtin_shufflevector(__s0_842, __s0_842, 1, 0); \ |
| 67625 | int32x2_t __rev1_870; __rev1_870 = __builtin_shufflevector(__s1_870, __s1_870, 1, 0); \ | 69528 | int32x2_t __rev1_842; __rev1_842 = __builtin_shufflevector(__s1_842, __s1_842, 1, 0); \ |
| 67626 | int32x2_t __rev2_870; __rev2_870 = __builtin_shufflevector(__s2_870, __s2_870, 1, 0); \ | 69529 | int32x2_t __rev2_842; __rev2_842 = __builtin_shufflevector(__s2_842, __s2_842, 1, 0); \ |
| 67627 | __ret_870 = __rev0_870 + __noswap_vmull_s32(__rev1_870, __noswap_splat_lane_s32(__rev2_870, __p3_870)); \ | 69530 | __ret_842 = __rev0_842 + __noswap_vmull_s32(__rev1_842, __noswap_splat_lane_s32(__rev2_842, __p3_842)); \ |
| 67628 | __ret_870 = __builtin_shufflevector(__ret_870, __ret_870, 1, 0); \ | 69531 | __ret_842 = __builtin_shufflevector(__ret_842, __ret_842, 1, 0); \ |
| 67629 | __ret_870; \ | 69532 | __ret_842; \ |
| 67630 | }) | 69533 | }) |
| 67631 | #endif | 69534 | #endif |
| 67632 | 69535 | ||
| 67633 | #ifdef __LITTLE_ENDIAN__ | 69536 | #ifdef __LITTLE_ENDIAN__ |
| 67634 | #define vmlal_lane_s16(__p0_871, __p1_871, __p2_871, __p3_871) __extension__ ({ \ | 69537 | #define vmlal_lane_s16(__p0_843, __p1_843, __p2_843, __p3_843) __extension__ ({ \ |
| 67635 | int32x4_t __ret_871; \ | 69538 | int32x4_t __ret_843; \ |
| 67636 | int32x4_t __s0_871 = __p0_871; \ | 69539 | int32x4_t __s0_843 = __p0_843; \ |
| 67637 | int16x4_t __s1_871 = __p1_871; \ | 69540 | int16x4_t __s1_843 = __p1_843; \ |
| 67638 | int16x4_t __s2_871 = __p2_871; \ | 69541 | int16x4_t __s2_843 = __p2_843; \ |
| 67639 | __ret_871 = __s0_871 + vmull_s16(__s1_871, splat_lane_s16(__s2_871, __p3_871)); \ | 69542 | __ret_843 = __s0_843 + vmull_s16(__s1_843, splat_lane_s16(__s2_843, __p3_843)); \ |
| 67640 | __ret_871; \ | 69543 | __ret_843; \ |
| 67641 | }) | 69544 | }) |
| 67642 | #else | 69545 | #else |
| 67643 | #define vmlal_lane_s16(__p0_872, __p1_872, __p2_872, __p3_872) __extension__ ({ \ | 69546 | #define vmlal_lane_s16(__p0_844, __p1_844, __p2_844, __p3_844) __extension__ ({ \ |
| 67644 | int32x4_t __ret_872; \ | 69547 | int32x4_t __ret_844; \ |
| 67645 | int32x4_t __s0_872 = __p0_872; \ | 69548 | int32x4_t __s0_844 = __p0_844; \ |
| 67646 | int16x4_t __s1_872 = __p1_872; \ | 69549 | int16x4_t __s1_844 = __p1_844; \ |
| 67647 | int16x4_t __s2_872 = __p2_872; \ | 69550 | int16x4_t __s2_844 = __p2_844; \ |
| 67648 | int32x4_t __rev0_872; __rev0_872 = __builtin_shufflevector(__s0_872, __s0_872, 3, 2, 1, 0); \ | 69551 | int32x4_t __rev0_844; __rev0_844 = __builtin_shufflevector(__s0_844, __s0_844, 3, 2, 1, 0); \ |
| 67649 | int16x4_t __rev1_872; __rev1_872 = __builtin_shufflevector(__s1_872, __s1_872, 3, 2, 1, 0); \ | 69552 | int16x4_t __rev1_844; __rev1_844 = __builtin_shufflevector(__s1_844, __s1_844, 3, 2, 1, 0); \ |
| 67650 | int16x4_t __rev2_872; __rev2_872 = __builtin_shufflevector(__s2_872, __s2_872, 3, 2, 1, 0); \ | 69553 | int16x4_t __rev2_844; __rev2_844 = __builtin_shufflevector(__s2_844, __s2_844, 3, 2, 1, 0); \ |
| 67651 | __ret_872 = __rev0_872 + __noswap_vmull_s16(__rev1_872, __noswap_splat_lane_s16(__rev2_872, __p3_872)); \ | 69554 | __ret_844 = __rev0_844 + __noswap_vmull_s16(__rev1_844, __noswap_splat_lane_s16(__rev2_844, __p3_844)); \ |
| 67652 | __ret_872 = __builtin_shufflevector(__ret_872, __ret_872, 3, 2, 1, 0); \ | 69555 | __ret_844 = __builtin_shufflevector(__ret_844, __ret_844, 3, 2, 1, 0); \ |
| 67653 | __ret_872; \ | 69556 | __ret_844; \ |
| 67654 | }) | 69557 | }) |
| 67655 | #endif | 69558 | #endif |
| 67656 | 69559 | ||
| ... | @@ -67881,98 +69784,98 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlsl_s16(int32x4_t __p0 | ... | @@ -67881,98 +69784,98 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlsl_s16(int32x4_t __p0 |
| 67881 | #endif | 69784 | #endif |
| 67882 | 69785 | ||
| 67883 | #ifdef __LITTLE_ENDIAN__ | 69786 | #ifdef __LITTLE_ENDIAN__ |
| 67884 | #define vmlsl_lane_u32(__p0_873, __p1_873, __p2_873, __p3_873) __extension__ ({ \ | 69787 | #define vmlsl_lane_u32(__p0_845, __p1_845, __p2_845, __p3_845) __extension__ ({ \ |
| 67885 | uint64x2_t __ret_873; \ | 69788 | uint64x2_t __ret_845; \ |
| 67886 | uint64x2_t __s0_873 = __p0_873; \ | 69789 | uint64x2_t __s0_845 = __p0_845; \ |
| 67887 | uint32x2_t __s1_873 = __p1_873; \ | 69790 | uint32x2_t __s1_845 = __p1_845; \ |
| 67888 | uint32x2_t __s2_873 = __p2_873; \ | 69791 | uint32x2_t __s2_845 = __p2_845; \ |
| 67889 | __ret_873 = __s0_873 - vmull_u32(__s1_873, splat_lane_u32(__s2_873, __p3_873)); \ | 69792 | __ret_845 = __s0_845 - vmull_u32(__s1_845, splat_lane_u32(__s2_845, __p3_845)); \ |
| 67890 | __ret_873; \ | 69793 | __ret_845; \ |
| 67891 | }) | 69794 | }) |
| 67892 | #else | 69795 | #else |
| 67893 | #define vmlsl_lane_u32(__p0_874, __p1_874, __p2_874, __p3_874) __extension__ ({ \ | 69796 | #define vmlsl_lane_u32(__p0_846, __p1_846, __p2_846, __p3_846) __extension__ ({ \ |
| 67894 | uint64x2_t __ret_874; \ | 69797 | uint64x2_t __ret_846; \ |
| 67895 | uint64x2_t __s0_874 = __p0_874; \ | 69798 | uint64x2_t __s0_846 = __p0_846; \ |
| 67896 | uint32x2_t __s1_874 = __p1_874; \ | 69799 | uint32x2_t __s1_846 = __p1_846; \ |
| 67897 | uint32x2_t __s2_874 = __p2_874; \ | 69800 | uint32x2_t __s2_846 = __p2_846; \ |
| 67898 | uint64x2_t __rev0_874; __rev0_874 = __builtin_shufflevector(__s0_874, __s0_874, 1, 0); \ | 69801 | uint64x2_t __rev0_846; __rev0_846 = __builtin_shufflevector(__s0_846, __s0_846, 1, 0); \ |
| 67899 | uint32x2_t __rev1_874; __rev1_874 = __builtin_shufflevector(__s1_874, __s1_874, 1, 0); \ | 69802 | uint32x2_t __rev1_846; __rev1_846 = __builtin_shufflevector(__s1_846, __s1_846, 1, 0); \ |
| 67900 | uint32x2_t __rev2_874; __rev2_874 = __builtin_shufflevector(__s2_874, __s2_874, 1, 0); \ | 69803 | uint32x2_t __rev2_846; __rev2_846 = __builtin_shufflevector(__s2_846, __s2_846, 1, 0); \ |
| 67901 | __ret_874 = __rev0_874 - __noswap_vmull_u32(__rev1_874, __noswap_splat_lane_u32(__rev2_874, __p3_874)); \ | 69804 | __ret_846 = __rev0_846 - __noswap_vmull_u32(__rev1_846, __noswap_splat_lane_u32(__rev2_846, __p3_846)); \ |
| 67902 | __ret_874 = __builtin_shufflevector(__ret_874, __ret_874, 1, 0); \ | 69805 | __ret_846 = __builtin_shufflevector(__ret_846, __ret_846, 1, 0); \ |
| 67903 | __ret_874; \ | 69806 | __ret_846; \ |
| 67904 | }) | 69807 | }) |
| 67905 | #endif | 69808 | #endif |
| 67906 | 69809 | ||
| 67907 | #ifdef __LITTLE_ENDIAN__ | 69810 | #ifdef __LITTLE_ENDIAN__ |
| 67908 | #define vmlsl_lane_u16(__p0_875, __p1_875, __p2_875, __p3_875) __extension__ ({ \ | 69811 | #define vmlsl_lane_u16(__p0_847, __p1_847, __p2_847, __p3_847) __extension__ ({ \ |
| 67909 | uint32x4_t __ret_875; \ | 69812 | uint32x4_t __ret_847; \ |
| 67910 | uint32x4_t __s0_875 = __p0_875; \ | 69813 | uint32x4_t __s0_847 = __p0_847; \ |
| 67911 | uint16x4_t __s1_875 = __p1_875; \ | 69814 | uint16x4_t __s1_847 = __p1_847; \ |
| 67912 | uint16x4_t __s2_875 = __p2_875; \ | 69815 | uint16x4_t __s2_847 = __p2_847; \ |
| 67913 | __ret_875 = __s0_875 - vmull_u16(__s1_875, splat_lane_u16(__s2_875, __p3_875)); \ | 69816 | __ret_847 = __s0_847 - vmull_u16(__s1_847, splat_lane_u16(__s2_847, __p3_847)); \ |
| 67914 | __ret_875; \ | 69817 | __ret_847; \ |
| 67915 | }) | 69818 | }) |
| 67916 | #else | 69819 | #else |
| 67917 | #define vmlsl_lane_u16(__p0_876, __p1_876, __p2_876, __p3_876) __extension__ ({ \ | 69820 | #define vmlsl_lane_u16(__p0_848, __p1_848, __p2_848, __p3_848) __extension__ ({ \ |
| 67918 | uint32x4_t __ret_876; \ | 69821 | uint32x4_t __ret_848; \ |
| 67919 | uint32x4_t __s0_876 = __p0_876; \ | 69822 | uint32x4_t __s0_848 = __p0_848; \ |
| 67920 | uint16x4_t __s1_876 = __p1_876; \ | 69823 | uint16x4_t __s1_848 = __p1_848; \ |
| 67921 | uint16x4_t __s2_876 = __p2_876; \ | 69824 | uint16x4_t __s2_848 = __p2_848; \ |
| 67922 | uint32x4_t __rev0_876; __rev0_876 = __builtin_shufflevector(__s0_876, __s0_876, 3, 2, 1, 0); \ | 69825 | uint32x4_t __rev0_848; __rev0_848 = __builtin_shufflevector(__s0_848, __s0_848, 3, 2, 1, 0); \ |
| 67923 | uint16x4_t __rev1_876; __rev1_876 = __builtin_shufflevector(__s1_876, __s1_876, 3, 2, 1, 0); \ | 69826 | uint16x4_t __rev1_848; __rev1_848 = __builtin_shufflevector(__s1_848, __s1_848, 3, 2, 1, 0); \ |
| 67924 | uint16x4_t __rev2_876; __rev2_876 = __builtin_shufflevector(__s2_876, __s2_876, 3, 2, 1, 0); \ | 69827 | uint16x4_t __rev2_848; __rev2_848 = __builtin_shufflevector(__s2_848, __s2_848, 3, 2, 1, 0); \ |
| 67925 | __ret_876 = __rev0_876 - __noswap_vmull_u16(__rev1_876, __noswap_splat_lane_u16(__rev2_876, __p3_876)); \ | 69828 | __ret_848 = __rev0_848 - __noswap_vmull_u16(__rev1_848, __noswap_splat_lane_u16(__rev2_848, __p3_848)); \ |
| 67926 | __ret_876 = __builtin_shufflevector(__ret_876, __ret_876, 3, 2, 1, 0); \ | 69829 | __ret_848 = __builtin_shufflevector(__ret_848, __ret_848, 3, 2, 1, 0); \ |
| 67927 | __ret_876; \ | 69830 | __ret_848; \ |
| 67928 | }) | 69831 | }) |
| 67929 | #endif | 69832 | #endif |
| 67930 | 69833 | ||
| 67931 | #ifdef __LITTLE_ENDIAN__ | 69834 | #ifdef __LITTLE_ENDIAN__ |
| 67932 | #define vmlsl_lane_s32(__p0_877, __p1_877, __p2_877, __p3_877) __extension__ ({ \ | 69835 | #define vmlsl_lane_s32(__p0_849, __p1_849, __p2_849, __p3_849) __extension__ ({ \ |
| 67933 | int64x2_t __ret_877; \ | 69836 | int64x2_t __ret_849; \ |
| 67934 | int64x2_t __s0_877 = __p0_877; \ | 69837 | int64x2_t __s0_849 = __p0_849; \ |
| 67935 | int32x2_t __s1_877 = __p1_877; \ | 69838 | int32x2_t __s1_849 = __p1_849; \ |
| 67936 | int32x2_t __s2_877 = __p2_877; \ | 69839 | int32x2_t __s2_849 = __p2_849; \ |
| 67937 | __ret_877 = __s0_877 - vmull_s32(__s1_877, splat_lane_s32(__s2_877, __p3_877)); \ | 69840 | __ret_849 = __s0_849 - vmull_s32(__s1_849, splat_lane_s32(__s2_849, __p3_849)); \ |
| 67938 | __ret_877; \ | 69841 | __ret_849; \ |
| 67939 | }) | 69842 | }) |
| 67940 | #else | 69843 | #else |
| 67941 | #define vmlsl_lane_s32(__p0_878, __p1_878, __p2_878, __p3_878) __extension__ ({ \ | 69844 | #define vmlsl_lane_s32(__p0_850, __p1_850, __p2_850, __p3_850) __extension__ ({ \ |
| 67942 | int64x2_t __ret_878; \ | 69845 | int64x2_t __ret_850; \ |
| 67943 | int64x2_t __s0_878 = __p0_878; \ | 69846 | int64x2_t __s0_850 = __p0_850; \ |
| 67944 | int32x2_t __s1_878 = __p1_878; \ | 69847 | int32x2_t __s1_850 = __p1_850; \ |
| 67945 | int32x2_t __s2_878 = __p2_878; \ | 69848 | int32x2_t __s2_850 = __p2_850; \ |
| 67946 | int64x2_t __rev0_878; __rev0_878 = __builtin_shufflevector(__s0_878, __s0_878, 1, 0); \ | 69849 | int64x2_t __rev0_850; __rev0_850 = __builtin_shufflevector(__s0_850, __s0_850, 1, 0); \ |
| 67947 | int32x2_t __rev1_878; __rev1_878 = __builtin_shufflevector(__s1_878, __s1_878, 1, 0); \ | 69850 | int32x2_t __rev1_850; __rev1_850 = __builtin_shufflevector(__s1_850, __s1_850, 1, 0); \ |
| 67948 | int32x2_t __rev2_878; __rev2_878 = __builtin_shufflevector(__s2_878, __s2_878, 1, 0); \ | 69851 | int32x2_t __rev2_850; __rev2_850 = __builtin_shufflevector(__s2_850, __s2_850, 1, 0); \ |
| 67949 | __ret_878 = __rev0_878 - __noswap_vmull_s32(__rev1_878, __noswap_splat_lane_s32(__rev2_878, __p3_878)); \ | 69852 | __ret_850 = __rev0_850 - __noswap_vmull_s32(__rev1_850, __noswap_splat_lane_s32(__rev2_850, __p3_850)); \ |
| 67950 | __ret_878 = __builtin_shufflevector(__ret_878, __ret_878, 1, 0); \ | 69853 | __ret_850 = __builtin_shufflevector(__ret_850, __ret_850, 1, 0); \ |
| 67951 | __ret_878; \ | 69854 | __ret_850; \ |
| 67952 | }) | 69855 | }) |
| 67953 | #endif | 69856 | #endif |
| 67954 | 69857 | ||
| 67955 | #ifdef __LITTLE_ENDIAN__ | 69858 | #ifdef __LITTLE_ENDIAN__ |
| 67956 | #define vmlsl_lane_s16(__p0_879, __p1_879, __p2_879, __p3_879) __extension__ ({ \ | 69859 | #define vmlsl_lane_s16(__p0_851, __p1_851, __p2_851, __p3_851) __extension__ ({ \ |
| 67957 | int32x4_t __ret_879; \ | 69860 | int32x4_t __ret_851; \ |
| 67958 | int32x4_t __s0_879 = __p0_879; \ | 69861 | int32x4_t __s0_851 = __p0_851; \ |
| 67959 | int16x4_t __s1_879 = __p1_879; \ | 69862 | int16x4_t __s1_851 = __p1_851; \ |
| 67960 | int16x4_t __s2_879 = __p2_879; \ | 69863 | int16x4_t __s2_851 = __p2_851; \ |
| 67961 | __ret_879 = __s0_879 - vmull_s16(__s1_879, splat_lane_s16(__s2_879, __p3_879)); \ | 69864 | __ret_851 = __s0_851 - vmull_s16(__s1_851, splat_lane_s16(__s2_851, __p3_851)); \ |
| 67962 | __ret_879; \ | 69865 | __ret_851; \ |
| 67963 | }) | 69866 | }) |
| 67964 | #else | 69867 | #else |
| 67965 | #define vmlsl_lane_s16(__p0_880, __p1_880, __p2_880, __p3_880) __extension__ ({ \ | 69868 | #define vmlsl_lane_s16(__p0_852, __p1_852, __p2_852, __p3_852) __extension__ ({ \ |
| 67966 | int32x4_t __ret_880; \ | 69869 | int32x4_t __ret_852; \ |
| 67967 | int32x4_t __s0_880 = __p0_880; \ | 69870 | int32x4_t __s0_852 = __p0_852; \ |
| 67968 | int16x4_t __s1_880 = __p1_880; \ | 69871 | int16x4_t __s1_852 = __p1_852; \ |
| 67969 | int16x4_t __s2_880 = __p2_880; \ | 69872 | int16x4_t __s2_852 = __p2_852; \ |
| 67970 | int32x4_t __rev0_880; __rev0_880 = __builtin_shufflevector(__s0_880, __s0_880, 3, 2, 1, 0); \ | 69873 | int32x4_t __rev0_852; __rev0_852 = __builtin_shufflevector(__s0_852, __s0_852, 3, 2, 1, 0); \ |
| 67971 | int16x4_t __rev1_880; __rev1_880 = __builtin_shufflevector(__s1_880, __s1_880, 3, 2, 1, 0); \ | 69874 | int16x4_t __rev1_852; __rev1_852 = __builtin_shufflevector(__s1_852, __s1_852, 3, 2, 1, 0); \ |
| 67972 | int16x4_t __rev2_880; __rev2_880 = __builtin_shufflevector(__s2_880, __s2_880, 3, 2, 1, 0); \ | 69875 | int16x4_t __rev2_852; __rev2_852 = __builtin_shufflevector(__s2_852, __s2_852, 3, 2, 1, 0); \ |
| 67973 | __ret_880 = __rev0_880 - __noswap_vmull_s16(__rev1_880, __noswap_splat_lane_s16(__rev2_880, __p3_880)); \ | 69876 | __ret_852 = __rev0_852 - __noswap_vmull_s16(__rev1_852, __noswap_splat_lane_s16(__rev2_852, __p3_852)); \ |
| 67974 | __ret_880 = __builtin_shufflevector(__ret_880, __ret_880, 3, 2, 1, 0); \ | 69877 | __ret_852 = __builtin_shufflevector(__ret_852, __ret_852, 3, 2, 1, 0); \ |
| 67975 | __ret_880; \ | 69878 | __ret_852; \ |
| 67976 | }) | 69879 | }) |
| 67977 | #endif | 69880 | #endif |
| 67978 | 69881 | ||
| ... | @@ -68065,54 +69968,42 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlsl_n_s16(int32x4_t __ | ... | @@ -68065,54 +69968,42 @@ __ai __attribute__((target("neon"))) int32x4_t __noswap_vmlsl_n_s16(int32x4_t __ |
| 68065 | #endif | 69968 | #endif |
| 68066 | 69969 | ||
| 68067 | #ifdef __LITTLE_ENDIAN__ | 69970 | #ifdef __LITTLE_ENDIAN__ |
| 68068 | #define vset_lane_f16(__p0_881, __p1_881, __p2_881) __extension__ ({ \ | 69971 | #define vset_lane_f16(__p0_853, __p1_853, __p2_853) __extension__ ({ \ |
| 68069 | float16x4_t __ret_881; \ | 69972 | float16x4_t __ret_853; \ |
| 68070 | float16_t __s0_881 = __p0_881; \ | 69973 | float16_t __s0_853 = __p0_853; \ |
| 68071 | float16x4_t __s1_881 = __p1_881; \ | 69974 | float16x4_t __s1_853 = __p1_853; \ |
| 68072 | float16_t __reint_881 = __s0_881; \ | 69975 | __ret_853 = __builtin_bit_cast(float16x4_t, vset_lane_s16(__builtin_bit_cast(int16_t, __s0_853), __builtin_bit_cast(int16x4_t, __s1_853), __p2_853)); \ |
| 68073 | float16x4_t __reint1_881 = __s1_881; \ | 69976 | __ret_853; \ |
| 68074 | int16x4_t __reint2_881 = vset_lane_s16(*(int16_t *) &__reint_881, *(int16x4_t *) &__reint1_881, __p2_881); \ | ||
| 68075 | __ret_881 = *(float16x4_t *) &__reint2_881; \ | ||
| 68076 | __ret_881; \ | ||
| 68077 | }) | 69977 | }) |
| 68078 | #else | 69978 | #else |
| 68079 | #define vset_lane_f16(__p0_882, __p1_882, __p2_882) __extension__ ({ \ | 69979 | #define vset_lane_f16(__p0_854, __p1_854, __p2_854) __extension__ ({ \ |
| 68080 | float16x4_t __ret_882; \ | 69980 | float16x4_t __ret_854; \ |
| 68081 | float16_t __s0_882 = __p0_882; \ | 69981 | float16_t __s0_854 = __p0_854; \ |
| 68082 | float16x4_t __s1_882 = __p1_882; \ | 69982 | float16x4_t __s1_854 = __p1_854; \ |
| 68083 | float16x4_t __rev1_882; __rev1_882 = __builtin_shufflevector(__s1_882, __s1_882, 3, 2, 1, 0); \ | 69983 | float16x4_t __rev1_854; __rev1_854 = __builtin_shufflevector(__s1_854, __s1_854, 3, 2, 1, 0); \ |
| 68084 | float16_t __reint_882 = __s0_882; \ | 69984 | __ret_854 = __builtin_bit_cast(float16x4_t, __noswap_vset_lane_s16(__builtin_bit_cast(int16_t, __s0_854), __builtin_bit_cast(int16x4_t, __rev1_854), __p2_854)); \ |
| 68085 | float16x4_t __reint1_882 = __rev1_882; \ | 69985 | __ret_854 = __builtin_shufflevector(__ret_854, __ret_854, 3, 2, 1, 0); \ |
| 68086 | int16x4_t __reint2_882 = __noswap_vset_lane_s16(*(int16_t *) &__reint_882, *(int16x4_t *) &__reint1_882, __p2_882); \ | 69986 | __ret_854; \ |
| 68087 | __ret_882 = *(float16x4_t *) &__reint2_882; \ | ||
| 68088 | __ret_882 = __builtin_shufflevector(__ret_882, __ret_882, 3, 2, 1, 0); \ | ||
| 68089 | __ret_882; \ | ||
| 68090 | }) | 69987 | }) |
| 68091 | #endif | 69988 | #endif |
| 68092 | 69989 | ||
| 68093 | #ifdef __LITTLE_ENDIAN__ | 69990 | #ifdef __LITTLE_ENDIAN__ |
| 68094 | #define vsetq_lane_f16(__p0_883, __p1_883, __p2_883) __extension__ ({ \ | 69991 | #define vsetq_lane_f16(__p0_855, __p1_855, __p2_855) __extension__ ({ \ |
| 68095 | float16x8_t __ret_883; \ | 69992 | float16x8_t __ret_855; \ |
| 68096 | float16_t __s0_883 = __p0_883; \ | 69993 | float16_t __s0_855 = __p0_855; \ |
| 68097 | float16x8_t __s1_883 = __p1_883; \ | 69994 | float16x8_t __s1_855 = __p1_855; \ |
| 68098 | float16_t __reint_883 = __s0_883; \ | 69995 | __ret_855 = __builtin_bit_cast(float16x8_t, vsetq_lane_s16(__builtin_bit_cast(int16_t, __s0_855), __builtin_bit_cast(int16x8_t, __s1_855), __p2_855)); \ |
| 68099 | float16x8_t __reint1_883 = __s1_883; \ | 69996 | __ret_855; \ |
| 68100 | int16x8_t __reint2_883 = vsetq_lane_s16(*(int16_t *) &__reint_883, *(int16x8_t *) &__reint1_883, __p2_883); \ | ||
| 68101 | __ret_883 = *(float16x8_t *) &__reint2_883; \ | ||
| 68102 | __ret_883; \ | ||
| 68103 | }) | 69997 | }) |
| 68104 | #else | 69998 | #else |
| 68105 | #define vsetq_lane_f16(__p0_884, __p1_884, __p2_884) __extension__ ({ \ | 69999 | #define vsetq_lane_f16(__p0_856, __p1_856, __p2_856) __extension__ ({ \ |
| 68106 | float16x8_t __ret_884; \ | 70000 | float16x8_t __ret_856; \ |
| 68107 | float16_t __s0_884 = __p0_884; \ | 70001 | float16_t __s0_856 = __p0_856; \ |
| 68108 | float16x8_t __s1_884 = __p1_884; \ | 70002 | float16x8_t __s1_856 = __p1_856; \ |
| 68109 | float16x8_t __rev1_884; __rev1_884 = __builtin_shufflevector(__s1_884, __s1_884, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70003 | float16x8_t __rev1_856; __rev1_856 = __builtin_shufflevector(__s1_856, __s1_856, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68110 | float16_t __reint_884 = __s0_884; \ | 70004 | __ret_856 = __builtin_bit_cast(float16x8_t, __noswap_vsetq_lane_s16(__builtin_bit_cast(int16_t, __s0_856), __builtin_bit_cast(int16x8_t, __rev1_856), __p2_856)); \ |
| 68111 | float16x8_t __reint1_884 = __rev1_884; \ | 70005 | __ret_856 = __builtin_shufflevector(__ret_856, __ret_856, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68112 | int16x8_t __reint2_884 = __noswap_vsetq_lane_s16(*(int16_t *) &__reint_884, *(int16x8_t *) &__reint1_884, __p2_884); \ | 70006 | __ret_856; \ |
| 68113 | __ret_884 = *(float16x8_t *) &__reint2_884; \ | ||
| 68114 | __ret_884 = __builtin_shufflevector(__ret_884, __ret_884, 7, 6, 5, 4, 3, 2, 1, 0); \ | ||
| 68115 | __ret_884; \ | ||
| 68116 | }) | 70007 | }) |
| 68117 | #endif | 70008 | #endif |
| 68118 | 70009 | ||
| ... | @@ -68134,424 +70025,424 @@ __ai __attribute__((target("aes,neon"))) poly128_t vmull_high_p64(poly64x2_t __p | ... | @@ -68134,424 +70025,424 @@ __ai __attribute__((target("aes,neon"))) poly128_t vmull_high_p64(poly64x2_t __p |
| 68134 | #endif | 70025 | #endif |
| 68135 | 70026 | ||
| 68136 | #ifdef __LITTLE_ENDIAN__ | 70027 | #ifdef __LITTLE_ENDIAN__ |
| 68137 | #define vfmlalq_lane_high_f16(__p0_885, __p1_885, __p2_885, __p3_885) __extension__ ({ \ | 70028 | #define vfmlalq_lane_high_f16(__p0_857, __p1_857, __p2_857, __p3_857) __extension__ ({ \ |
| 68138 | float32x4_t __ret_885; \ | 70029 | float32x4_t __ret_857; \ |
| 68139 | float32x4_t __s0_885 = __p0_885; \ | 70030 | float32x4_t __s0_857 = __p0_857; \ |
| 68140 | float16x8_t __s1_885 = __p1_885; \ | 70031 | float16x8_t __s1_857 = __p1_857; \ |
| 68141 | float16x4_t __s2_885 = __p2_885; \ | 70032 | float16x4_t __s2_857 = __p2_857; \ |
| 68142 | __ret_885 = vfmlalq_high_f16(__s0_885, __s1_885, (float16x8_t) {vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885), vget_lane_f16(__s2_885, __p3_885)}); \ | 70033 | __ret_857 = vfmlalq_high_f16(__s0_857, __s1_857, (float16x8_t) {vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857), vget_lane_f16(__s2_857, __p3_857)}); \ |
| 68143 | __ret_885; \ | 70034 | __ret_857; \ |
| 68144 | }) | 70035 | }) |
| 68145 | #else | 70036 | #else |
| 68146 | #define vfmlalq_lane_high_f16(__p0_886, __p1_886, __p2_886, __p3_886) __extension__ ({ \ | 70037 | #define vfmlalq_lane_high_f16(__p0_858, __p1_858, __p2_858, __p3_858) __extension__ ({ \ |
| 68147 | float32x4_t __ret_886; \ | 70038 | float32x4_t __ret_858; \ |
| 68148 | float32x4_t __s0_886 = __p0_886; \ | 70039 | float32x4_t __s0_858 = __p0_858; \ |
| 68149 | float16x8_t __s1_886 = __p1_886; \ | 70040 | float16x8_t __s1_858 = __p1_858; \ |
| 68150 | float16x4_t __s2_886 = __p2_886; \ | 70041 | float16x4_t __s2_858 = __p2_858; \ |
| 68151 | float32x4_t __rev0_886; __rev0_886 = __builtin_shufflevector(__s0_886, __s0_886, 3, 2, 1, 0); \ | 70042 | float32x4_t __rev0_858; __rev0_858 = __builtin_shufflevector(__s0_858, __s0_858, 3, 2, 1, 0); \ |
| 68152 | float16x8_t __rev1_886; __rev1_886 = __builtin_shufflevector(__s1_886, __s1_886, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70043 | float16x8_t __rev1_858; __rev1_858 = __builtin_shufflevector(__s1_858, __s1_858, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68153 | float16x4_t __rev2_886; __rev2_886 = __builtin_shufflevector(__s2_886, __s2_886, 3, 2, 1, 0); \ | 70044 | float16x4_t __rev2_858; __rev2_858 = __builtin_shufflevector(__s2_858, __s2_858, 3, 2, 1, 0); \ |
| 68154 | __ret_886 = __noswap_vfmlalq_high_f16(__rev0_886, __rev1_886, (float16x8_t) {__noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886), __noswap_vget_lane_f16(__rev2_886, __p3_886)}); \ | 70045 | __ret_858 = __noswap_vfmlalq_high_f16(__rev0_858, __rev1_858, (float16x8_t) {__noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858), __noswap_vget_lane_f16(__rev2_858, __p3_858)}); \ |
| 68155 | __ret_886 = __builtin_shufflevector(__ret_886, __ret_886, 3, 2, 1, 0); \ | 70046 | __ret_858 = __builtin_shufflevector(__ret_858, __ret_858, 3, 2, 1, 0); \ |
| 68156 | __ret_886; \ | 70047 | __ret_858; \ |
| 68157 | }) | 70048 | }) |
| 68158 | #endif | 70049 | #endif |
| 68159 | 70050 | ||
| 68160 | #ifdef __LITTLE_ENDIAN__ | 70051 | #ifdef __LITTLE_ENDIAN__ |
| 68161 | #define vfmlal_lane_high_f16(__p0_887, __p1_887, __p2_887, __p3_887) __extension__ ({ \ | 70052 | #define vfmlal_lane_high_f16(__p0_859, __p1_859, __p2_859, __p3_859) __extension__ ({ \ |
| 68162 | float32x2_t __ret_887; \ | 70053 | float32x2_t __ret_859; \ |
| 68163 | float32x2_t __s0_887 = __p0_887; \ | 70054 | float32x2_t __s0_859 = __p0_859; \ |
| 68164 | float16x4_t __s1_887 = __p1_887; \ | 70055 | float16x4_t __s1_859 = __p1_859; \ |
| 68165 | float16x4_t __s2_887 = __p2_887; \ | 70056 | float16x4_t __s2_859 = __p2_859; \ |
| 68166 | __ret_887 = vfmlal_high_f16(__s0_887, __s1_887, (float16x4_t) {vget_lane_f16(__s2_887, __p3_887), vget_lane_f16(__s2_887, __p3_887), vget_lane_f16(__s2_887, __p3_887), vget_lane_f16(__s2_887, __p3_887)}); \ | 70057 | __ret_859 = vfmlal_high_f16(__s0_859, __s1_859, (float16x4_t) {vget_lane_f16(__s2_859, __p3_859), vget_lane_f16(__s2_859, __p3_859), vget_lane_f16(__s2_859, __p3_859), vget_lane_f16(__s2_859, __p3_859)}); \ |
| 68167 | __ret_887; \ | 70058 | __ret_859; \ |
| 68168 | }) | 70059 | }) |
| 68169 | #else | 70060 | #else |
| 68170 | #define vfmlal_lane_high_f16(__p0_888, __p1_888, __p2_888, __p3_888) __extension__ ({ \ | 70061 | #define vfmlal_lane_high_f16(__p0_860, __p1_860, __p2_860, __p3_860) __extension__ ({ \ |
| 68171 | float32x2_t __ret_888; \ | 70062 | float32x2_t __ret_860; \ |
| 68172 | float32x2_t __s0_888 = __p0_888; \ | 70063 | float32x2_t __s0_860 = __p0_860; \ |
| 68173 | float16x4_t __s1_888 = __p1_888; \ | 70064 | float16x4_t __s1_860 = __p1_860; \ |
| 68174 | float16x4_t __s2_888 = __p2_888; \ | 70065 | float16x4_t __s2_860 = __p2_860; \ |
| 68175 | float32x2_t __rev0_888; __rev0_888 = __builtin_shufflevector(__s0_888, __s0_888, 1, 0); \ | 70066 | float32x2_t __rev0_860; __rev0_860 = __builtin_shufflevector(__s0_860, __s0_860, 1, 0); \ |
| 68176 | float16x4_t __rev1_888; __rev1_888 = __builtin_shufflevector(__s1_888, __s1_888, 3, 2, 1, 0); \ | 70067 | float16x4_t __rev1_860; __rev1_860 = __builtin_shufflevector(__s1_860, __s1_860, 3, 2, 1, 0); \ |
| 68177 | float16x4_t __rev2_888; __rev2_888 = __builtin_shufflevector(__s2_888, __s2_888, 3, 2, 1, 0); \ | 70068 | float16x4_t __rev2_860; __rev2_860 = __builtin_shufflevector(__s2_860, __s2_860, 3, 2, 1, 0); \ |
| 68178 | __ret_888 = __noswap_vfmlal_high_f16(__rev0_888, __rev1_888, (float16x4_t) {__noswap_vget_lane_f16(__rev2_888, __p3_888), __noswap_vget_lane_f16(__rev2_888, __p3_888), __noswap_vget_lane_f16(__rev2_888, __p3_888), __noswap_vget_lane_f16(__rev2_888, __p3_888)}); \ | 70069 | __ret_860 = __noswap_vfmlal_high_f16(__rev0_860, __rev1_860, (float16x4_t) {__noswap_vget_lane_f16(__rev2_860, __p3_860), __noswap_vget_lane_f16(__rev2_860, __p3_860), __noswap_vget_lane_f16(__rev2_860, __p3_860), __noswap_vget_lane_f16(__rev2_860, __p3_860)}); \ |
| 68179 | __ret_888 = __builtin_shufflevector(__ret_888, __ret_888, 1, 0); \ | 70070 | __ret_860 = __builtin_shufflevector(__ret_860, __ret_860, 1, 0); \ |
| 68180 | __ret_888; \ | 70071 | __ret_860; \ |
| 68181 | }) | 70072 | }) |
| 68182 | #endif | 70073 | #endif |
| 68183 | 70074 | ||
| 68184 | #ifdef __LITTLE_ENDIAN__ | 70075 | #ifdef __LITTLE_ENDIAN__ |
| 68185 | #define vfmlalq_lane_low_f16(__p0_889, __p1_889, __p2_889, __p3_889) __extension__ ({ \ | 70076 | #define vfmlalq_lane_low_f16(__p0_861, __p1_861, __p2_861, __p3_861) __extension__ ({ \ |
| 68186 | float32x4_t __ret_889; \ | 70077 | float32x4_t __ret_861; \ |
| 68187 | float32x4_t __s0_889 = __p0_889; \ | 70078 | float32x4_t __s0_861 = __p0_861; \ |
| 68188 | float16x8_t __s1_889 = __p1_889; \ | 70079 | float16x8_t __s1_861 = __p1_861; \ |
| 68189 | float16x4_t __s2_889 = __p2_889; \ | 70080 | float16x4_t __s2_861 = __p2_861; \ |
| 68190 | __ret_889 = vfmlalq_low_f16(__s0_889, __s1_889, (float16x8_t) {vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889), vget_lane_f16(__s2_889, __p3_889)}); \ | 70081 | __ret_861 = vfmlalq_low_f16(__s0_861, __s1_861, (float16x8_t) {vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861), vget_lane_f16(__s2_861, __p3_861)}); \ |
| 68191 | __ret_889; \ | 70082 | __ret_861; \ |
| 68192 | }) | 70083 | }) |
| 68193 | #else | 70084 | #else |
| 68194 | #define vfmlalq_lane_low_f16(__p0_890, __p1_890, __p2_890, __p3_890) __extension__ ({ \ | 70085 | #define vfmlalq_lane_low_f16(__p0_862, __p1_862, __p2_862, __p3_862) __extension__ ({ \ |
| 68195 | float32x4_t __ret_890; \ | 70086 | float32x4_t __ret_862; \ |
| 68196 | float32x4_t __s0_890 = __p0_890; \ | 70087 | float32x4_t __s0_862 = __p0_862; \ |
| 68197 | float16x8_t __s1_890 = __p1_890; \ | 70088 | float16x8_t __s1_862 = __p1_862; \ |
| 68198 | float16x4_t __s2_890 = __p2_890; \ | 70089 | float16x4_t __s2_862 = __p2_862; \ |
| 68199 | float32x4_t __rev0_890; __rev0_890 = __builtin_shufflevector(__s0_890, __s0_890, 3, 2, 1, 0); \ | 70090 | float32x4_t __rev0_862; __rev0_862 = __builtin_shufflevector(__s0_862, __s0_862, 3, 2, 1, 0); \ |
| 68200 | float16x8_t __rev1_890; __rev1_890 = __builtin_shufflevector(__s1_890, __s1_890, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70091 | float16x8_t __rev1_862; __rev1_862 = __builtin_shufflevector(__s1_862, __s1_862, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68201 | float16x4_t __rev2_890; __rev2_890 = __builtin_shufflevector(__s2_890, __s2_890, 3, 2, 1, 0); \ | 70092 | float16x4_t __rev2_862; __rev2_862 = __builtin_shufflevector(__s2_862, __s2_862, 3, 2, 1, 0); \ |
| 68202 | __ret_890 = __noswap_vfmlalq_low_f16(__rev0_890, __rev1_890, (float16x8_t) {__noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890), __noswap_vget_lane_f16(__rev2_890, __p3_890)}); \ | 70093 | __ret_862 = __noswap_vfmlalq_low_f16(__rev0_862, __rev1_862, (float16x8_t) {__noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862), __noswap_vget_lane_f16(__rev2_862, __p3_862)}); \ |
| 68203 | __ret_890 = __builtin_shufflevector(__ret_890, __ret_890, 3, 2, 1, 0); \ | 70094 | __ret_862 = __builtin_shufflevector(__ret_862, __ret_862, 3, 2, 1, 0); \ |
| 68204 | __ret_890; \ | 70095 | __ret_862; \ |
| 68205 | }) | 70096 | }) |
| 68206 | #endif | 70097 | #endif |
| 68207 | 70098 | ||
| 68208 | #ifdef __LITTLE_ENDIAN__ | 70099 | #ifdef __LITTLE_ENDIAN__ |
| 68209 | #define vfmlal_lane_low_f16(__p0_891, __p1_891, __p2_891, __p3_891) __extension__ ({ \ | 70100 | #define vfmlal_lane_low_f16(__p0_863, __p1_863, __p2_863, __p3_863) __extension__ ({ \ |
| 68210 | float32x2_t __ret_891; \ | 70101 | float32x2_t __ret_863; \ |
| 68211 | float32x2_t __s0_891 = __p0_891; \ | 70102 | float32x2_t __s0_863 = __p0_863; \ |
| 68212 | float16x4_t __s1_891 = __p1_891; \ | 70103 | float16x4_t __s1_863 = __p1_863; \ |
| 68213 | float16x4_t __s2_891 = __p2_891; \ | 70104 | float16x4_t __s2_863 = __p2_863; \ |
| 68214 | __ret_891 = vfmlal_low_f16(__s0_891, __s1_891, (float16x4_t) {vget_lane_f16(__s2_891, __p3_891), vget_lane_f16(__s2_891, __p3_891), vget_lane_f16(__s2_891, __p3_891), vget_lane_f16(__s2_891, __p3_891)}); \ | 70105 | __ret_863 = vfmlal_low_f16(__s0_863, __s1_863, (float16x4_t) {vget_lane_f16(__s2_863, __p3_863), vget_lane_f16(__s2_863, __p3_863), vget_lane_f16(__s2_863, __p3_863), vget_lane_f16(__s2_863, __p3_863)}); \ |
| 68215 | __ret_891; \ | 70106 | __ret_863; \ |
| 68216 | }) | 70107 | }) |
| 68217 | #else | 70108 | #else |
| 68218 | #define vfmlal_lane_low_f16(__p0_892, __p1_892, __p2_892, __p3_892) __extension__ ({ \ | 70109 | #define vfmlal_lane_low_f16(__p0_864, __p1_864, __p2_864, __p3_864) __extension__ ({ \ |
| 68219 | float32x2_t __ret_892; \ | 70110 | float32x2_t __ret_864; \ |
| 68220 | float32x2_t __s0_892 = __p0_892; \ | 70111 | float32x2_t __s0_864 = __p0_864; \ |
| 68221 | float16x4_t __s1_892 = __p1_892; \ | 70112 | float16x4_t __s1_864 = __p1_864; \ |
| 68222 | float16x4_t __s2_892 = __p2_892; \ | 70113 | float16x4_t __s2_864 = __p2_864; \ |
| 68223 | float32x2_t __rev0_892; __rev0_892 = __builtin_shufflevector(__s0_892, __s0_892, 1, 0); \ | 70114 | float32x2_t __rev0_864; __rev0_864 = __builtin_shufflevector(__s0_864, __s0_864, 1, 0); \ |
| 68224 | float16x4_t __rev1_892; __rev1_892 = __builtin_shufflevector(__s1_892, __s1_892, 3, 2, 1, 0); \ | 70115 | float16x4_t __rev1_864; __rev1_864 = __builtin_shufflevector(__s1_864, __s1_864, 3, 2, 1, 0); \ |
| 68225 | float16x4_t __rev2_892; __rev2_892 = __builtin_shufflevector(__s2_892, __s2_892, 3, 2, 1, 0); \ | 70116 | float16x4_t __rev2_864; __rev2_864 = __builtin_shufflevector(__s2_864, __s2_864, 3, 2, 1, 0); \ |
| 68226 | __ret_892 = __noswap_vfmlal_low_f16(__rev0_892, __rev1_892, (float16x4_t) {__noswap_vget_lane_f16(__rev2_892, __p3_892), __noswap_vget_lane_f16(__rev2_892, __p3_892), __noswap_vget_lane_f16(__rev2_892, __p3_892), __noswap_vget_lane_f16(__rev2_892, __p3_892)}); \ | 70117 | __ret_864 = __noswap_vfmlal_low_f16(__rev0_864, __rev1_864, (float16x4_t) {__noswap_vget_lane_f16(__rev2_864, __p3_864), __noswap_vget_lane_f16(__rev2_864, __p3_864), __noswap_vget_lane_f16(__rev2_864, __p3_864), __noswap_vget_lane_f16(__rev2_864, __p3_864)}); \ |
| 68227 | __ret_892 = __builtin_shufflevector(__ret_892, __ret_892, 1, 0); \ | 70118 | __ret_864 = __builtin_shufflevector(__ret_864, __ret_864, 1, 0); \ |
| 68228 | __ret_892; \ | 70119 | __ret_864; \ |
| 68229 | }) | 70120 | }) |
| 68230 | #endif | 70121 | #endif |
| 68231 | 70122 | ||
| 68232 | #ifdef __LITTLE_ENDIAN__ | 70123 | #ifdef __LITTLE_ENDIAN__ |
| 68233 | #define vfmlalq_laneq_high_f16(__p0_893, __p1_893, __p2_893, __p3_893) __extension__ ({ \ | 70124 | #define vfmlalq_laneq_high_f16(__p0_865, __p1_865, __p2_865, __p3_865) __extension__ ({ \ |
| 68234 | float32x4_t __ret_893; \ | 70125 | float32x4_t __ret_865; \ |
| 68235 | float32x4_t __s0_893 = __p0_893; \ | 70126 | float32x4_t __s0_865 = __p0_865; \ |
| 68236 | float16x8_t __s1_893 = __p1_893; \ | 70127 | float16x8_t __s1_865 = __p1_865; \ |
| 68237 | float16x8_t __s2_893 = __p2_893; \ | 70128 | float16x8_t __s2_865 = __p2_865; \ |
| 68238 | __ret_893 = vfmlalq_high_f16(__s0_893, __s1_893, (float16x8_t) {vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893), vgetq_lane_f16(__s2_893, __p3_893)}); \ | 70129 | __ret_865 = vfmlalq_high_f16(__s0_865, __s1_865, (float16x8_t) {vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865), vgetq_lane_f16(__s2_865, __p3_865)}); \ |
| 68239 | __ret_893; \ | 70130 | __ret_865; \ |
| 68240 | }) | 70131 | }) |
| 68241 | #else | 70132 | #else |
| 68242 | #define vfmlalq_laneq_high_f16(__p0_894, __p1_894, __p2_894, __p3_894) __extension__ ({ \ | 70133 | #define vfmlalq_laneq_high_f16(__p0_866, __p1_866, __p2_866, __p3_866) __extension__ ({ \ |
| 68243 | float32x4_t __ret_894; \ | 70134 | float32x4_t __ret_866; \ |
| 68244 | float32x4_t __s0_894 = __p0_894; \ | 70135 | float32x4_t __s0_866 = __p0_866; \ |
| 68245 | float16x8_t __s1_894 = __p1_894; \ | 70136 | float16x8_t __s1_866 = __p1_866; \ |
| 68246 | float16x8_t __s2_894 = __p2_894; \ | 70137 | float16x8_t __s2_866 = __p2_866; \ |
| 68247 | float32x4_t __rev0_894; __rev0_894 = __builtin_shufflevector(__s0_894, __s0_894, 3, 2, 1, 0); \ | 70138 | float32x4_t __rev0_866; __rev0_866 = __builtin_shufflevector(__s0_866, __s0_866, 3, 2, 1, 0); \ |
| 68248 | float16x8_t __rev1_894; __rev1_894 = __builtin_shufflevector(__s1_894, __s1_894, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70139 | float16x8_t __rev1_866; __rev1_866 = __builtin_shufflevector(__s1_866, __s1_866, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68249 | float16x8_t __rev2_894; __rev2_894 = __builtin_shufflevector(__s2_894, __s2_894, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70140 | float16x8_t __rev2_866; __rev2_866 = __builtin_shufflevector(__s2_866, __s2_866, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68250 | __ret_894 = __noswap_vfmlalq_high_f16(__rev0_894, __rev1_894, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894), __noswap_vgetq_lane_f16(__rev2_894, __p3_894)}); \ | 70141 | __ret_866 = __noswap_vfmlalq_high_f16(__rev0_866, __rev1_866, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866), __noswap_vgetq_lane_f16(__rev2_866, __p3_866)}); \ |
| 68251 | __ret_894 = __builtin_shufflevector(__ret_894, __ret_894, 3, 2, 1, 0); \ | 70142 | __ret_866 = __builtin_shufflevector(__ret_866, __ret_866, 3, 2, 1, 0); \ |
| 68252 | __ret_894; \ | 70143 | __ret_866; \ |
| 68253 | }) | 70144 | }) |
| 68254 | #endif | 70145 | #endif |
| 68255 | 70146 | ||
| 68256 | #ifdef __LITTLE_ENDIAN__ | 70147 | #ifdef __LITTLE_ENDIAN__ |
| 68257 | #define vfmlal_laneq_high_f16(__p0_895, __p1_895, __p2_895, __p3_895) __extension__ ({ \ | 70148 | #define vfmlal_laneq_high_f16(__p0_867, __p1_867, __p2_867, __p3_867) __extension__ ({ \ |
| 68258 | float32x2_t __ret_895; \ | 70149 | float32x2_t __ret_867; \ |
| 68259 | float32x2_t __s0_895 = __p0_895; \ | 70150 | float32x2_t __s0_867 = __p0_867; \ |
| 68260 | float16x4_t __s1_895 = __p1_895; \ | 70151 | float16x4_t __s1_867 = __p1_867; \ |
| 68261 | float16x8_t __s2_895 = __p2_895; \ | 70152 | float16x8_t __s2_867 = __p2_867; \ |
| 68262 | __ret_895 = vfmlal_high_f16(__s0_895, __s1_895, (float16x4_t) {vgetq_lane_f16(__s2_895, __p3_895), vgetq_lane_f16(__s2_895, __p3_895), vgetq_lane_f16(__s2_895, __p3_895), vgetq_lane_f16(__s2_895, __p3_895)}); \ | 70153 | __ret_867 = vfmlal_high_f16(__s0_867, __s1_867, (float16x4_t) {vgetq_lane_f16(__s2_867, __p3_867), vgetq_lane_f16(__s2_867, __p3_867), vgetq_lane_f16(__s2_867, __p3_867), vgetq_lane_f16(__s2_867, __p3_867)}); \ |
| 68263 | __ret_895; \ | 70154 | __ret_867; \ |
| 68264 | }) | 70155 | }) |
| 68265 | #else | 70156 | #else |
| 68266 | #define vfmlal_laneq_high_f16(__p0_896, __p1_896, __p2_896, __p3_896) __extension__ ({ \ | 70157 | #define vfmlal_laneq_high_f16(__p0_868, __p1_868, __p2_868, __p3_868) __extension__ ({ \ |
| 68267 | float32x2_t __ret_896; \ | 70158 | float32x2_t __ret_868; \ |
| 68268 | float32x2_t __s0_896 = __p0_896; \ | 70159 | float32x2_t __s0_868 = __p0_868; \ |
| 68269 | float16x4_t __s1_896 = __p1_896; \ | 70160 | float16x4_t __s1_868 = __p1_868; \ |
| 68270 | float16x8_t __s2_896 = __p2_896; \ | 70161 | float16x8_t __s2_868 = __p2_868; \ |
| 68271 | float32x2_t __rev0_896; __rev0_896 = __builtin_shufflevector(__s0_896, __s0_896, 1, 0); \ | 70162 | float32x2_t __rev0_868; __rev0_868 = __builtin_shufflevector(__s0_868, __s0_868, 1, 0); \ |
| 68272 | float16x4_t __rev1_896; __rev1_896 = __builtin_shufflevector(__s1_896, __s1_896, 3, 2, 1, 0); \ | 70163 | float16x4_t __rev1_868; __rev1_868 = __builtin_shufflevector(__s1_868, __s1_868, 3, 2, 1, 0); \ |
| 68273 | float16x8_t __rev2_896; __rev2_896 = __builtin_shufflevector(__s2_896, __s2_896, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70164 | float16x8_t __rev2_868; __rev2_868 = __builtin_shufflevector(__s2_868, __s2_868, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68274 | __ret_896 = __noswap_vfmlal_high_f16(__rev0_896, __rev1_896, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_896, __p3_896), __noswap_vgetq_lane_f16(__rev2_896, __p3_896), __noswap_vgetq_lane_f16(__rev2_896, __p3_896), __noswap_vgetq_lane_f16(__rev2_896, __p3_896)}); \ | 70165 | __ret_868 = __noswap_vfmlal_high_f16(__rev0_868, __rev1_868, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_868, __p3_868), __noswap_vgetq_lane_f16(__rev2_868, __p3_868), __noswap_vgetq_lane_f16(__rev2_868, __p3_868), __noswap_vgetq_lane_f16(__rev2_868, __p3_868)}); \ |
| 68275 | __ret_896 = __builtin_shufflevector(__ret_896, __ret_896, 1, 0); \ | 70166 | __ret_868 = __builtin_shufflevector(__ret_868, __ret_868, 1, 0); \ |
| 68276 | __ret_896; \ | 70167 | __ret_868; \ |
| 68277 | }) | 70168 | }) |
| 68278 | #endif | 70169 | #endif |
| 68279 | 70170 | ||
| 68280 | #ifdef __LITTLE_ENDIAN__ | 70171 | #ifdef __LITTLE_ENDIAN__ |
| 68281 | #define vfmlalq_laneq_low_f16(__p0_897, __p1_897, __p2_897, __p3_897) __extension__ ({ \ | 70172 | #define vfmlalq_laneq_low_f16(__p0_869, __p1_869, __p2_869, __p3_869) __extension__ ({ \ |
| 68282 | float32x4_t __ret_897; \ | 70173 | float32x4_t __ret_869; \ |
| 68283 | float32x4_t __s0_897 = __p0_897; \ | 70174 | float32x4_t __s0_869 = __p0_869; \ |
| 68284 | float16x8_t __s1_897 = __p1_897; \ | 70175 | float16x8_t __s1_869 = __p1_869; \ |
| 68285 | float16x8_t __s2_897 = __p2_897; \ | 70176 | float16x8_t __s2_869 = __p2_869; \ |
| 68286 | __ret_897 = vfmlalq_low_f16(__s0_897, __s1_897, (float16x8_t) {vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897), vgetq_lane_f16(__s2_897, __p3_897)}); \ | 70177 | __ret_869 = vfmlalq_low_f16(__s0_869, __s1_869, (float16x8_t) {vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869), vgetq_lane_f16(__s2_869, __p3_869)}); \ |
| 68287 | __ret_897; \ | 70178 | __ret_869; \ |
| 68288 | }) | 70179 | }) |
| 68289 | #else | 70180 | #else |
| 68290 | #define vfmlalq_laneq_low_f16(__p0_898, __p1_898, __p2_898, __p3_898) __extension__ ({ \ | 70181 | #define vfmlalq_laneq_low_f16(__p0_870, __p1_870, __p2_870, __p3_870) __extension__ ({ \ |
| 68291 | float32x4_t __ret_898; \ | 70182 | float32x4_t __ret_870; \ |
| 68292 | float32x4_t __s0_898 = __p0_898; \ | 70183 | float32x4_t __s0_870 = __p0_870; \ |
| 68293 | float16x8_t __s1_898 = __p1_898; \ | 70184 | float16x8_t __s1_870 = __p1_870; \ |
| 68294 | float16x8_t __s2_898 = __p2_898; \ | 70185 | float16x8_t __s2_870 = __p2_870; \ |
| 68295 | float32x4_t __rev0_898; __rev0_898 = __builtin_shufflevector(__s0_898, __s0_898, 3, 2, 1, 0); \ | 70186 | float32x4_t __rev0_870; __rev0_870 = __builtin_shufflevector(__s0_870, __s0_870, 3, 2, 1, 0); \ |
| 68296 | float16x8_t __rev1_898; __rev1_898 = __builtin_shufflevector(__s1_898, __s1_898, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70187 | float16x8_t __rev1_870; __rev1_870 = __builtin_shufflevector(__s1_870, __s1_870, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68297 | float16x8_t __rev2_898; __rev2_898 = __builtin_shufflevector(__s2_898, __s2_898, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70188 | float16x8_t __rev2_870; __rev2_870 = __builtin_shufflevector(__s2_870, __s2_870, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68298 | __ret_898 = __noswap_vfmlalq_low_f16(__rev0_898, __rev1_898, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898), __noswap_vgetq_lane_f16(__rev2_898, __p3_898)}); \ | 70189 | __ret_870 = __noswap_vfmlalq_low_f16(__rev0_870, __rev1_870, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870), __noswap_vgetq_lane_f16(__rev2_870, __p3_870)}); \ |
| 68299 | __ret_898 = __builtin_shufflevector(__ret_898, __ret_898, 3, 2, 1, 0); \ | 70190 | __ret_870 = __builtin_shufflevector(__ret_870, __ret_870, 3, 2, 1, 0); \ |
| 68300 | __ret_898; \ | 70191 | __ret_870; \ |
| 68301 | }) | 70192 | }) |
| 68302 | #endif | 70193 | #endif |
| 68303 | 70194 | ||
| 68304 | #ifdef __LITTLE_ENDIAN__ | 70195 | #ifdef __LITTLE_ENDIAN__ |
| 68305 | #define vfmlal_laneq_low_f16(__p0_899, __p1_899, __p2_899, __p3_899) __extension__ ({ \ | 70196 | #define vfmlal_laneq_low_f16(__p0_871, __p1_871, __p2_871, __p3_871) __extension__ ({ \ |
| 68306 | float32x2_t __ret_899; \ | 70197 | float32x2_t __ret_871; \ |
| 68307 | float32x2_t __s0_899 = __p0_899; \ | 70198 | float32x2_t __s0_871 = __p0_871; \ |
| 68308 | float16x4_t __s1_899 = __p1_899; \ | 70199 | float16x4_t __s1_871 = __p1_871; \ |
| 68309 | float16x8_t __s2_899 = __p2_899; \ | 70200 | float16x8_t __s2_871 = __p2_871; \ |
| 68310 | __ret_899 = vfmlal_low_f16(__s0_899, __s1_899, (float16x4_t) {vgetq_lane_f16(__s2_899, __p3_899), vgetq_lane_f16(__s2_899, __p3_899), vgetq_lane_f16(__s2_899, __p3_899), vgetq_lane_f16(__s2_899, __p3_899)}); \ | 70201 | __ret_871 = vfmlal_low_f16(__s0_871, __s1_871, (float16x4_t) {vgetq_lane_f16(__s2_871, __p3_871), vgetq_lane_f16(__s2_871, __p3_871), vgetq_lane_f16(__s2_871, __p3_871), vgetq_lane_f16(__s2_871, __p3_871)}); \ |
| 68311 | __ret_899; \ | 70202 | __ret_871; \ |
| 68312 | }) | 70203 | }) |
| 68313 | #else | 70204 | #else |
| 68314 | #define vfmlal_laneq_low_f16(__p0_900, __p1_900, __p2_900, __p3_900) __extension__ ({ \ | 70205 | #define vfmlal_laneq_low_f16(__p0_872, __p1_872, __p2_872, __p3_872) __extension__ ({ \ |
| 68315 | float32x2_t __ret_900; \ | 70206 | float32x2_t __ret_872; \ |
| 68316 | float32x2_t __s0_900 = __p0_900; \ | 70207 | float32x2_t __s0_872 = __p0_872; \ |
| 68317 | float16x4_t __s1_900 = __p1_900; \ | 70208 | float16x4_t __s1_872 = __p1_872; \ |
| 68318 | float16x8_t __s2_900 = __p2_900; \ | 70209 | float16x8_t __s2_872 = __p2_872; \ |
| 68319 | float32x2_t __rev0_900; __rev0_900 = __builtin_shufflevector(__s0_900, __s0_900, 1, 0); \ | 70210 | float32x2_t __rev0_872; __rev0_872 = __builtin_shufflevector(__s0_872, __s0_872, 1, 0); \ |
| 68320 | float16x4_t __rev1_900; __rev1_900 = __builtin_shufflevector(__s1_900, __s1_900, 3, 2, 1, 0); \ | 70211 | float16x4_t __rev1_872; __rev1_872 = __builtin_shufflevector(__s1_872, __s1_872, 3, 2, 1, 0); \ |
| 68321 | float16x8_t __rev2_900; __rev2_900 = __builtin_shufflevector(__s2_900, __s2_900, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70212 | float16x8_t __rev2_872; __rev2_872 = __builtin_shufflevector(__s2_872, __s2_872, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68322 | __ret_900 = __noswap_vfmlal_low_f16(__rev0_900, __rev1_900, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_900, __p3_900), __noswap_vgetq_lane_f16(__rev2_900, __p3_900), __noswap_vgetq_lane_f16(__rev2_900, __p3_900), __noswap_vgetq_lane_f16(__rev2_900, __p3_900)}); \ | 70213 | __ret_872 = __noswap_vfmlal_low_f16(__rev0_872, __rev1_872, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_872, __p3_872), __noswap_vgetq_lane_f16(__rev2_872, __p3_872), __noswap_vgetq_lane_f16(__rev2_872, __p3_872), __noswap_vgetq_lane_f16(__rev2_872, __p3_872)}); \ |
| 68323 | __ret_900 = __builtin_shufflevector(__ret_900, __ret_900, 1, 0); \ | 70214 | __ret_872 = __builtin_shufflevector(__ret_872, __ret_872, 1, 0); \ |
| 68324 | __ret_900; \ | 70215 | __ret_872; \ |
| 68325 | }) | 70216 | }) |
| 68326 | #endif | 70217 | #endif |
| 68327 | 70218 | ||
| 68328 | #ifdef __LITTLE_ENDIAN__ | 70219 | #ifdef __LITTLE_ENDIAN__ |
| 68329 | #define vfmlslq_lane_high_f16(__p0_901, __p1_901, __p2_901, __p3_901) __extension__ ({ \ | 70220 | #define vfmlslq_lane_high_f16(__p0_873, __p1_873, __p2_873, __p3_873) __extension__ ({ \ |
| 68330 | float32x4_t __ret_901; \ | 70221 | float32x4_t __ret_873; \ |
| 68331 | float32x4_t __s0_901 = __p0_901; \ | 70222 | float32x4_t __s0_873 = __p0_873; \ |
| 68332 | float16x8_t __s1_901 = __p1_901; \ | 70223 | float16x8_t __s1_873 = __p1_873; \ |
| 68333 | float16x4_t __s2_901 = __p2_901; \ | 70224 | float16x4_t __s2_873 = __p2_873; \ |
| 68334 | __ret_901 = vfmlslq_high_f16(__s0_901, __s1_901, (float16x8_t) {vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901), vget_lane_f16(__s2_901, __p3_901)}); \ | 70225 | __ret_873 = vfmlslq_high_f16(__s0_873, __s1_873, (float16x8_t) {vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873), vget_lane_f16(__s2_873, __p3_873)}); \ |
| 68335 | __ret_901; \ | 70226 | __ret_873; \ |
| 68336 | }) | 70227 | }) |
| 68337 | #else | 70228 | #else |
| 68338 | #define vfmlslq_lane_high_f16(__p0_902, __p1_902, __p2_902, __p3_902) __extension__ ({ \ | 70229 | #define vfmlslq_lane_high_f16(__p0_874, __p1_874, __p2_874, __p3_874) __extension__ ({ \ |
| 68339 | float32x4_t __ret_902; \ | 70230 | float32x4_t __ret_874; \ |
| 68340 | float32x4_t __s0_902 = __p0_902; \ | 70231 | float32x4_t __s0_874 = __p0_874; \ |
| 68341 | float16x8_t __s1_902 = __p1_902; \ | 70232 | float16x8_t __s1_874 = __p1_874; \ |
| 68342 | float16x4_t __s2_902 = __p2_902; \ | 70233 | float16x4_t __s2_874 = __p2_874; \ |
| 68343 | float32x4_t __rev0_902; __rev0_902 = __builtin_shufflevector(__s0_902, __s0_902, 3, 2, 1, 0); \ | 70234 | float32x4_t __rev0_874; __rev0_874 = __builtin_shufflevector(__s0_874, __s0_874, 3, 2, 1, 0); \ |
| 68344 | float16x8_t __rev1_902; __rev1_902 = __builtin_shufflevector(__s1_902, __s1_902, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70235 | float16x8_t __rev1_874; __rev1_874 = __builtin_shufflevector(__s1_874, __s1_874, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68345 | float16x4_t __rev2_902; __rev2_902 = __builtin_shufflevector(__s2_902, __s2_902, 3, 2, 1, 0); \ | 70236 | float16x4_t __rev2_874; __rev2_874 = __builtin_shufflevector(__s2_874, __s2_874, 3, 2, 1, 0); \ |
| 68346 | __ret_902 = __noswap_vfmlslq_high_f16(__rev0_902, __rev1_902, (float16x8_t) {__noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902), __noswap_vget_lane_f16(__rev2_902, __p3_902)}); \ | 70237 | __ret_874 = __noswap_vfmlslq_high_f16(__rev0_874, __rev1_874, (float16x8_t) {__noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874), __noswap_vget_lane_f16(__rev2_874, __p3_874)}); \ |
| 68347 | __ret_902 = __builtin_shufflevector(__ret_902, __ret_902, 3, 2, 1, 0); \ | 70238 | __ret_874 = __builtin_shufflevector(__ret_874, __ret_874, 3, 2, 1, 0); \ |
| 68348 | __ret_902; \ | 70239 | __ret_874; \ |
| 68349 | }) | 70240 | }) |
| 68350 | #endif | 70241 | #endif |
| 68351 | 70242 | ||
| 68352 | #ifdef __LITTLE_ENDIAN__ | 70243 | #ifdef __LITTLE_ENDIAN__ |
| 68353 | #define vfmlsl_lane_high_f16(__p0_903, __p1_903, __p2_903, __p3_903) __extension__ ({ \ | 70244 | #define vfmlsl_lane_high_f16(__p0_875, __p1_875, __p2_875, __p3_875) __extension__ ({ \ |
| 68354 | float32x2_t __ret_903; \ | 70245 | float32x2_t __ret_875; \ |
| 68355 | float32x2_t __s0_903 = __p0_903; \ | 70246 | float32x2_t __s0_875 = __p0_875; \ |
| 68356 | float16x4_t __s1_903 = __p1_903; \ | 70247 | float16x4_t __s1_875 = __p1_875; \ |
| 68357 | float16x4_t __s2_903 = __p2_903; \ | 70248 | float16x4_t __s2_875 = __p2_875; \ |
| 68358 | __ret_903 = vfmlsl_high_f16(__s0_903, __s1_903, (float16x4_t) {vget_lane_f16(__s2_903, __p3_903), vget_lane_f16(__s2_903, __p3_903), vget_lane_f16(__s2_903, __p3_903), vget_lane_f16(__s2_903, __p3_903)}); \ | 70249 | __ret_875 = vfmlsl_high_f16(__s0_875, __s1_875, (float16x4_t) {vget_lane_f16(__s2_875, __p3_875), vget_lane_f16(__s2_875, __p3_875), vget_lane_f16(__s2_875, __p3_875), vget_lane_f16(__s2_875, __p3_875)}); \ |
| 68359 | __ret_903; \ | 70250 | __ret_875; \ |
| 68360 | }) | 70251 | }) |
| 68361 | #else | 70252 | #else |
| 68362 | #define vfmlsl_lane_high_f16(__p0_904, __p1_904, __p2_904, __p3_904) __extension__ ({ \ | 70253 | #define vfmlsl_lane_high_f16(__p0_876, __p1_876, __p2_876, __p3_876) __extension__ ({ \ |
| 68363 | float32x2_t __ret_904; \ | 70254 | float32x2_t __ret_876; \ |
| 68364 | float32x2_t __s0_904 = __p0_904; \ | 70255 | float32x2_t __s0_876 = __p0_876; \ |
| 68365 | float16x4_t __s1_904 = __p1_904; \ | 70256 | float16x4_t __s1_876 = __p1_876; \ |
| 68366 | float16x4_t __s2_904 = __p2_904; \ | 70257 | float16x4_t __s2_876 = __p2_876; \ |
| 68367 | float32x2_t __rev0_904; __rev0_904 = __builtin_shufflevector(__s0_904, __s0_904, 1, 0); \ | 70258 | float32x2_t __rev0_876; __rev0_876 = __builtin_shufflevector(__s0_876, __s0_876, 1, 0); \ |
| 68368 | float16x4_t __rev1_904; __rev1_904 = __builtin_shufflevector(__s1_904, __s1_904, 3, 2, 1, 0); \ | 70259 | float16x4_t __rev1_876; __rev1_876 = __builtin_shufflevector(__s1_876, __s1_876, 3, 2, 1, 0); \ |
| 68369 | float16x4_t __rev2_904; __rev2_904 = __builtin_shufflevector(__s2_904, __s2_904, 3, 2, 1, 0); \ | 70260 | float16x4_t __rev2_876; __rev2_876 = __builtin_shufflevector(__s2_876, __s2_876, 3, 2, 1, 0); \ |
| 68370 | __ret_904 = __noswap_vfmlsl_high_f16(__rev0_904, __rev1_904, (float16x4_t) {__noswap_vget_lane_f16(__rev2_904, __p3_904), __noswap_vget_lane_f16(__rev2_904, __p3_904), __noswap_vget_lane_f16(__rev2_904, __p3_904), __noswap_vget_lane_f16(__rev2_904, __p3_904)}); \ | 70261 | __ret_876 = __noswap_vfmlsl_high_f16(__rev0_876, __rev1_876, (float16x4_t) {__noswap_vget_lane_f16(__rev2_876, __p3_876), __noswap_vget_lane_f16(__rev2_876, __p3_876), __noswap_vget_lane_f16(__rev2_876, __p3_876), __noswap_vget_lane_f16(__rev2_876, __p3_876)}); \ |
| 68371 | __ret_904 = __builtin_shufflevector(__ret_904, __ret_904, 1, 0); \ | 70262 | __ret_876 = __builtin_shufflevector(__ret_876, __ret_876, 1, 0); \ |
| 68372 | __ret_904; \ | 70263 | __ret_876; \ |
| 68373 | }) | 70264 | }) |
| 68374 | #endif | 70265 | #endif |
| 68375 | 70266 | ||
| 68376 | #ifdef __LITTLE_ENDIAN__ | 70267 | #ifdef __LITTLE_ENDIAN__ |
| 68377 | #define vfmlslq_lane_low_f16(__p0_905, __p1_905, __p2_905, __p3_905) __extension__ ({ \ | 70268 | #define vfmlslq_lane_low_f16(__p0_877, __p1_877, __p2_877, __p3_877) __extension__ ({ \ |
| 68378 | float32x4_t __ret_905; \ | 70269 | float32x4_t __ret_877; \ |
| 68379 | float32x4_t __s0_905 = __p0_905; \ | 70270 | float32x4_t __s0_877 = __p0_877; \ |
| 68380 | float16x8_t __s1_905 = __p1_905; \ | 70271 | float16x8_t __s1_877 = __p1_877; \ |
| 68381 | float16x4_t __s2_905 = __p2_905; \ | 70272 | float16x4_t __s2_877 = __p2_877; \ |
| 68382 | __ret_905 = vfmlslq_low_f16(__s0_905, __s1_905, (float16x8_t) {vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905), vget_lane_f16(__s2_905, __p3_905)}); \ | 70273 | __ret_877 = vfmlslq_low_f16(__s0_877, __s1_877, (float16x8_t) {vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877), vget_lane_f16(__s2_877, __p3_877)}); \ |
| 68383 | __ret_905; \ | 70274 | __ret_877; \ |
| 68384 | }) | 70275 | }) |
| 68385 | #else | 70276 | #else |
| 68386 | #define vfmlslq_lane_low_f16(__p0_906, __p1_906, __p2_906, __p3_906) __extension__ ({ \ | 70277 | #define vfmlslq_lane_low_f16(__p0_878, __p1_878, __p2_878, __p3_878) __extension__ ({ \ |
| 68387 | float32x4_t __ret_906; \ | 70278 | float32x4_t __ret_878; \ |
| 68388 | float32x4_t __s0_906 = __p0_906; \ | 70279 | float32x4_t __s0_878 = __p0_878; \ |
| 68389 | float16x8_t __s1_906 = __p1_906; \ | 70280 | float16x8_t __s1_878 = __p1_878; \ |
| 68390 | float16x4_t __s2_906 = __p2_906; \ | 70281 | float16x4_t __s2_878 = __p2_878; \ |
| 68391 | float32x4_t __rev0_906; __rev0_906 = __builtin_shufflevector(__s0_906, __s0_906, 3, 2, 1, 0); \ | 70282 | float32x4_t __rev0_878; __rev0_878 = __builtin_shufflevector(__s0_878, __s0_878, 3, 2, 1, 0); \ |
| 68392 | float16x8_t __rev1_906; __rev1_906 = __builtin_shufflevector(__s1_906, __s1_906, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70283 | float16x8_t __rev1_878; __rev1_878 = __builtin_shufflevector(__s1_878, __s1_878, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68393 | float16x4_t __rev2_906; __rev2_906 = __builtin_shufflevector(__s2_906, __s2_906, 3, 2, 1, 0); \ | 70284 | float16x4_t __rev2_878; __rev2_878 = __builtin_shufflevector(__s2_878, __s2_878, 3, 2, 1, 0); \ |
| 68394 | __ret_906 = __noswap_vfmlslq_low_f16(__rev0_906, __rev1_906, (float16x8_t) {__noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906), __noswap_vget_lane_f16(__rev2_906, __p3_906)}); \ | 70285 | __ret_878 = __noswap_vfmlslq_low_f16(__rev0_878, __rev1_878, (float16x8_t) {__noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878), __noswap_vget_lane_f16(__rev2_878, __p3_878)}); \ |
| 68395 | __ret_906 = __builtin_shufflevector(__ret_906, __ret_906, 3, 2, 1, 0); \ | 70286 | __ret_878 = __builtin_shufflevector(__ret_878, __ret_878, 3, 2, 1, 0); \ |
| 68396 | __ret_906; \ | 70287 | __ret_878; \ |
| 68397 | }) | 70288 | }) |
| 68398 | #endif | 70289 | #endif |
| 68399 | 70290 | ||
| 68400 | #ifdef __LITTLE_ENDIAN__ | 70291 | #ifdef __LITTLE_ENDIAN__ |
| 68401 | #define vfmlsl_lane_low_f16(__p0_907, __p1_907, __p2_907, __p3_907) __extension__ ({ \ | 70292 | #define vfmlsl_lane_low_f16(__p0_879, __p1_879, __p2_879, __p3_879) __extension__ ({ \ |
| 68402 | float32x2_t __ret_907; \ | 70293 | float32x2_t __ret_879; \ |
| 68403 | float32x2_t __s0_907 = __p0_907; \ | 70294 | float32x2_t __s0_879 = __p0_879; \ |
| 68404 | float16x4_t __s1_907 = __p1_907; \ | 70295 | float16x4_t __s1_879 = __p1_879; \ |
| 68405 | float16x4_t __s2_907 = __p2_907; \ | 70296 | float16x4_t __s2_879 = __p2_879; \ |
| 68406 | __ret_907 = vfmlsl_low_f16(__s0_907, __s1_907, (float16x4_t) {vget_lane_f16(__s2_907, __p3_907), vget_lane_f16(__s2_907, __p3_907), vget_lane_f16(__s2_907, __p3_907), vget_lane_f16(__s2_907, __p3_907)}); \ | 70297 | __ret_879 = vfmlsl_low_f16(__s0_879, __s1_879, (float16x4_t) {vget_lane_f16(__s2_879, __p3_879), vget_lane_f16(__s2_879, __p3_879), vget_lane_f16(__s2_879, __p3_879), vget_lane_f16(__s2_879, __p3_879)}); \ |
| 68407 | __ret_907; \ | 70298 | __ret_879; \ |
| 68408 | }) | 70299 | }) |
| 68409 | #else | 70300 | #else |
| 68410 | #define vfmlsl_lane_low_f16(__p0_908, __p1_908, __p2_908, __p3_908) __extension__ ({ \ | 70301 | #define vfmlsl_lane_low_f16(__p0_880, __p1_880, __p2_880, __p3_880) __extension__ ({ \ |
| 68411 | float32x2_t __ret_908; \ | 70302 | float32x2_t __ret_880; \ |
| 68412 | float32x2_t __s0_908 = __p0_908; \ | 70303 | float32x2_t __s0_880 = __p0_880; \ |
| 68413 | float16x4_t __s1_908 = __p1_908; \ | 70304 | float16x4_t __s1_880 = __p1_880; \ |
| 68414 | float16x4_t __s2_908 = __p2_908; \ | 70305 | float16x4_t __s2_880 = __p2_880; \ |
| 68415 | float32x2_t __rev0_908; __rev0_908 = __builtin_shufflevector(__s0_908, __s0_908, 1, 0); \ | 70306 | float32x2_t __rev0_880; __rev0_880 = __builtin_shufflevector(__s0_880, __s0_880, 1, 0); \ |
| 68416 | float16x4_t __rev1_908; __rev1_908 = __builtin_shufflevector(__s1_908, __s1_908, 3, 2, 1, 0); \ | 70307 | float16x4_t __rev1_880; __rev1_880 = __builtin_shufflevector(__s1_880, __s1_880, 3, 2, 1, 0); \ |
| 68417 | float16x4_t __rev2_908; __rev2_908 = __builtin_shufflevector(__s2_908, __s2_908, 3, 2, 1, 0); \ | 70308 | float16x4_t __rev2_880; __rev2_880 = __builtin_shufflevector(__s2_880, __s2_880, 3, 2, 1, 0); \ |
| 68418 | __ret_908 = __noswap_vfmlsl_low_f16(__rev0_908, __rev1_908, (float16x4_t) {__noswap_vget_lane_f16(__rev2_908, __p3_908), __noswap_vget_lane_f16(__rev2_908, __p3_908), __noswap_vget_lane_f16(__rev2_908, __p3_908), __noswap_vget_lane_f16(__rev2_908, __p3_908)}); \ | 70309 | __ret_880 = __noswap_vfmlsl_low_f16(__rev0_880, __rev1_880, (float16x4_t) {__noswap_vget_lane_f16(__rev2_880, __p3_880), __noswap_vget_lane_f16(__rev2_880, __p3_880), __noswap_vget_lane_f16(__rev2_880, __p3_880), __noswap_vget_lane_f16(__rev2_880, __p3_880)}); \ |
| 68419 | __ret_908 = __builtin_shufflevector(__ret_908, __ret_908, 1, 0); \ | 70310 | __ret_880 = __builtin_shufflevector(__ret_880, __ret_880, 1, 0); \ |
| 68420 | __ret_908; \ | 70311 | __ret_880; \ |
| 68421 | }) | 70312 | }) |
| 68422 | #endif | 70313 | #endif |
| 68423 | 70314 | ||
| 68424 | #ifdef __LITTLE_ENDIAN__ | 70315 | #ifdef __LITTLE_ENDIAN__ |
| 68425 | #define vfmlslq_laneq_high_f16(__p0_909, __p1_909, __p2_909, __p3_909) __extension__ ({ \ | 70316 | #define vfmlslq_laneq_high_f16(__p0_881, __p1_881, __p2_881, __p3_881) __extension__ ({ \ |
| 68426 | float32x4_t __ret_909; \ | 70317 | float32x4_t __ret_881; \ |
| 68427 | float32x4_t __s0_909 = __p0_909; \ | 70318 | float32x4_t __s0_881 = __p0_881; \ |
| 68428 | float16x8_t __s1_909 = __p1_909; \ | 70319 | float16x8_t __s1_881 = __p1_881; \ |
| 68429 | float16x8_t __s2_909 = __p2_909; \ | 70320 | float16x8_t __s2_881 = __p2_881; \ |
| 68430 | __ret_909 = vfmlslq_high_f16(__s0_909, __s1_909, (float16x8_t) {vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909), vgetq_lane_f16(__s2_909, __p3_909)}); \ | 70321 | __ret_881 = vfmlslq_high_f16(__s0_881, __s1_881, (float16x8_t) {vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881), vgetq_lane_f16(__s2_881, __p3_881)}); \ |
| 68431 | __ret_909; \ | 70322 | __ret_881; \ |
| 68432 | }) | 70323 | }) |
| 68433 | #else | 70324 | #else |
| 68434 | #define vfmlslq_laneq_high_f16(__p0_910, __p1_910, __p2_910, __p3_910) __extension__ ({ \ | 70325 | #define vfmlslq_laneq_high_f16(__p0_882, __p1_882, __p2_882, __p3_882) __extension__ ({ \ |
| 68435 | float32x4_t __ret_910; \ | 70326 | float32x4_t __ret_882; \ |
| 68436 | float32x4_t __s0_910 = __p0_910; \ | 70327 | float32x4_t __s0_882 = __p0_882; \ |
| 68437 | float16x8_t __s1_910 = __p1_910; \ | 70328 | float16x8_t __s1_882 = __p1_882; \ |
| 68438 | float16x8_t __s2_910 = __p2_910; \ | 70329 | float16x8_t __s2_882 = __p2_882; \ |
| 68439 | float32x4_t __rev0_910; __rev0_910 = __builtin_shufflevector(__s0_910, __s0_910, 3, 2, 1, 0); \ | 70330 | float32x4_t __rev0_882; __rev0_882 = __builtin_shufflevector(__s0_882, __s0_882, 3, 2, 1, 0); \ |
| 68440 | float16x8_t __rev1_910; __rev1_910 = __builtin_shufflevector(__s1_910, __s1_910, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70331 | float16x8_t __rev1_882; __rev1_882 = __builtin_shufflevector(__s1_882, __s1_882, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68441 | float16x8_t __rev2_910; __rev2_910 = __builtin_shufflevector(__s2_910, __s2_910, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70332 | float16x8_t __rev2_882; __rev2_882 = __builtin_shufflevector(__s2_882, __s2_882, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68442 | __ret_910 = __noswap_vfmlslq_high_f16(__rev0_910, __rev1_910, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910), __noswap_vgetq_lane_f16(__rev2_910, __p3_910)}); \ | 70333 | __ret_882 = __noswap_vfmlslq_high_f16(__rev0_882, __rev1_882, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882), __noswap_vgetq_lane_f16(__rev2_882, __p3_882)}); \ |
| 68443 | __ret_910 = __builtin_shufflevector(__ret_910, __ret_910, 3, 2, 1, 0); \ | 70334 | __ret_882 = __builtin_shufflevector(__ret_882, __ret_882, 3, 2, 1, 0); \ |
| 68444 | __ret_910; \ | 70335 | __ret_882; \ |
| 68445 | }) | 70336 | }) |
| 68446 | #endif | 70337 | #endif |
| 68447 | 70338 | ||
| 68448 | #ifdef __LITTLE_ENDIAN__ | 70339 | #ifdef __LITTLE_ENDIAN__ |
| 68449 | #define vfmlsl_laneq_high_f16(__p0_911, __p1_911, __p2_911, __p3_911) __extension__ ({ \ | 70340 | #define vfmlsl_laneq_high_f16(__p0_883, __p1_883, __p2_883, __p3_883) __extension__ ({ \ |
| 68450 | float32x2_t __ret_911; \ | 70341 | float32x2_t __ret_883; \ |
| 68451 | float32x2_t __s0_911 = __p0_911; \ | 70342 | float32x2_t __s0_883 = __p0_883; \ |
| 68452 | float16x4_t __s1_911 = __p1_911; \ | 70343 | float16x4_t __s1_883 = __p1_883; \ |
| 68453 | float16x8_t __s2_911 = __p2_911; \ | 70344 | float16x8_t __s2_883 = __p2_883; \ |
| 68454 | __ret_911 = vfmlsl_high_f16(__s0_911, __s1_911, (float16x4_t) {vgetq_lane_f16(__s2_911, __p3_911), vgetq_lane_f16(__s2_911, __p3_911), vgetq_lane_f16(__s2_911, __p3_911), vgetq_lane_f16(__s2_911, __p3_911)}); \ | 70345 | __ret_883 = vfmlsl_high_f16(__s0_883, __s1_883, (float16x4_t) {vgetq_lane_f16(__s2_883, __p3_883), vgetq_lane_f16(__s2_883, __p3_883), vgetq_lane_f16(__s2_883, __p3_883), vgetq_lane_f16(__s2_883, __p3_883)}); \ |
| 68455 | __ret_911; \ | 70346 | __ret_883; \ |
| 68456 | }) | 70347 | }) |
| 68457 | #else | 70348 | #else |
| 68458 | #define vfmlsl_laneq_high_f16(__p0_912, __p1_912, __p2_912, __p3_912) __extension__ ({ \ | 70349 | #define vfmlsl_laneq_high_f16(__p0_884, __p1_884, __p2_884, __p3_884) __extension__ ({ \ |
| 68459 | float32x2_t __ret_912; \ | 70350 | float32x2_t __ret_884; \ |
| 68460 | float32x2_t __s0_912 = __p0_912; \ | 70351 | float32x2_t __s0_884 = __p0_884; \ |
| 68461 | float16x4_t __s1_912 = __p1_912; \ | 70352 | float16x4_t __s1_884 = __p1_884; \ |
| 68462 | float16x8_t __s2_912 = __p2_912; \ | 70353 | float16x8_t __s2_884 = __p2_884; \ |
| 68463 | float32x2_t __rev0_912; __rev0_912 = __builtin_shufflevector(__s0_912, __s0_912, 1, 0); \ | 70354 | float32x2_t __rev0_884; __rev0_884 = __builtin_shufflevector(__s0_884, __s0_884, 1, 0); \ |
| 68464 | float16x4_t __rev1_912; __rev1_912 = __builtin_shufflevector(__s1_912, __s1_912, 3, 2, 1, 0); \ | 70355 | float16x4_t __rev1_884; __rev1_884 = __builtin_shufflevector(__s1_884, __s1_884, 3, 2, 1, 0); \ |
| 68465 | float16x8_t __rev2_912; __rev2_912 = __builtin_shufflevector(__s2_912, __s2_912, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70356 | float16x8_t __rev2_884; __rev2_884 = __builtin_shufflevector(__s2_884, __s2_884, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68466 | __ret_912 = __noswap_vfmlsl_high_f16(__rev0_912, __rev1_912, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_912, __p3_912), __noswap_vgetq_lane_f16(__rev2_912, __p3_912), __noswap_vgetq_lane_f16(__rev2_912, __p3_912), __noswap_vgetq_lane_f16(__rev2_912, __p3_912)}); \ | 70357 | __ret_884 = __noswap_vfmlsl_high_f16(__rev0_884, __rev1_884, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_884, __p3_884), __noswap_vgetq_lane_f16(__rev2_884, __p3_884), __noswap_vgetq_lane_f16(__rev2_884, __p3_884), __noswap_vgetq_lane_f16(__rev2_884, __p3_884)}); \ |
| 68467 | __ret_912 = __builtin_shufflevector(__ret_912, __ret_912, 1, 0); \ | 70358 | __ret_884 = __builtin_shufflevector(__ret_884, __ret_884, 1, 0); \ |
| 68468 | __ret_912; \ | 70359 | __ret_884; \ |
| 68469 | }) | 70360 | }) |
| 68470 | #endif | 70361 | #endif |
| 68471 | 70362 | ||
| 68472 | #ifdef __LITTLE_ENDIAN__ | 70363 | #ifdef __LITTLE_ENDIAN__ |
| 68473 | #define vfmlslq_laneq_low_f16(__p0_913, __p1_913, __p2_913, __p3_913) __extension__ ({ \ | 70364 | #define vfmlslq_laneq_low_f16(__p0_885, __p1_885, __p2_885, __p3_885) __extension__ ({ \ |
| 68474 | float32x4_t __ret_913; \ | 70365 | float32x4_t __ret_885; \ |
| 68475 | float32x4_t __s0_913 = __p0_913; \ | 70366 | float32x4_t __s0_885 = __p0_885; \ |
| 68476 | float16x8_t __s1_913 = __p1_913; \ | 70367 | float16x8_t __s1_885 = __p1_885; \ |
| 68477 | float16x8_t __s2_913 = __p2_913; \ | 70368 | float16x8_t __s2_885 = __p2_885; \ |
| 68478 | __ret_913 = vfmlslq_low_f16(__s0_913, __s1_913, (float16x8_t) {vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913), vgetq_lane_f16(__s2_913, __p3_913)}); \ | 70369 | __ret_885 = vfmlslq_low_f16(__s0_885, __s1_885, (float16x8_t) {vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885), vgetq_lane_f16(__s2_885, __p3_885)}); \ |
| 68479 | __ret_913; \ | 70370 | __ret_885; \ |
| 68480 | }) | 70371 | }) |
| 68481 | #else | 70372 | #else |
| 68482 | #define vfmlslq_laneq_low_f16(__p0_914, __p1_914, __p2_914, __p3_914) __extension__ ({ \ | 70373 | #define vfmlslq_laneq_low_f16(__p0_886, __p1_886, __p2_886, __p3_886) __extension__ ({ \ |
| 68483 | float32x4_t __ret_914; \ | 70374 | float32x4_t __ret_886; \ |
| 68484 | float32x4_t __s0_914 = __p0_914; \ | 70375 | float32x4_t __s0_886 = __p0_886; \ |
| 68485 | float16x8_t __s1_914 = __p1_914; \ | 70376 | float16x8_t __s1_886 = __p1_886; \ |
| 68486 | float16x8_t __s2_914 = __p2_914; \ | 70377 | float16x8_t __s2_886 = __p2_886; \ |
| 68487 | float32x4_t __rev0_914; __rev0_914 = __builtin_shufflevector(__s0_914, __s0_914, 3, 2, 1, 0); \ | 70378 | float32x4_t __rev0_886; __rev0_886 = __builtin_shufflevector(__s0_886, __s0_886, 3, 2, 1, 0); \ |
| 68488 | float16x8_t __rev1_914; __rev1_914 = __builtin_shufflevector(__s1_914, __s1_914, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70379 | float16x8_t __rev1_886; __rev1_886 = __builtin_shufflevector(__s1_886, __s1_886, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68489 | float16x8_t __rev2_914; __rev2_914 = __builtin_shufflevector(__s2_914, __s2_914, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70380 | float16x8_t __rev2_886; __rev2_886 = __builtin_shufflevector(__s2_886, __s2_886, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68490 | __ret_914 = __noswap_vfmlslq_low_f16(__rev0_914, __rev1_914, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914), __noswap_vgetq_lane_f16(__rev2_914, __p3_914)}); \ | 70381 | __ret_886 = __noswap_vfmlslq_low_f16(__rev0_886, __rev1_886, (float16x8_t) {__noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886), __noswap_vgetq_lane_f16(__rev2_886, __p3_886)}); \ |
| 68491 | __ret_914 = __builtin_shufflevector(__ret_914, __ret_914, 3, 2, 1, 0); \ | 70382 | __ret_886 = __builtin_shufflevector(__ret_886, __ret_886, 3, 2, 1, 0); \ |
| 68492 | __ret_914; \ | 70383 | __ret_886; \ |
| 68493 | }) | 70384 | }) |
| 68494 | #endif | 70385 | #endif |
| 68495 | 70386 | ||
| 68496 | #ifdef __LITTLE_ENDIAN__ | 70387 | #ifdef __LITTLE_ENDIAN__ |
| 68497 | #define vfmlsl_laneq_low_f16(__p0_915, __p1_915, __p2_915, __p3_915) __extension__ ({ \ | 70388 | #define vfmlsl_laneq_low_f16(__p0_887, __p1_887, __p2_887, __p3_887) __extension__ ({ \ |
| 68498 | float32x2_t __ret_915; \ | 70389 | float32x2_t __ret_887; \ |
| 68499 | float32x2_t __s0_915 = __p0_915; \ | 70390 | float32x2_t __s0_887 = __p0_887; \ |
| 68500 | float16x4_t __s1_915 = __p1_915; \ | 70391 | float16x4_t __s1_887 = __p1_887; \ |
| 68501 | float16x8_t __s2_915 = __p2_915; \ | 70392 | float16x8_t __s2_887 = __p2_887; \ |
| 68502 | __ret_915 = vfmlsl_low_f16(__s0_915, __s1_915, (float16x4_t) {vgetq_lane_f16(__s2_915, __p3_915), vgetq_lane_f16(__s2_915, __p3_915), vgetq_lane_f16(__s2_915, __p3_915), vgetq_lane_f16(__s2_915, __p3_915)}); \ | 70393 | __ret_887 = vfmlsl_low_f16(__s0_887, __s1_887, (float16x4_t) {vgetq_lane_f16(__s2_887, __p3_887), vgetq_lane_f16(__s2_887, __p3_887), vgetq_lane_f16(__s2_887, __p3_887), vgetq_lane_f16(__s2_887, __p3_887)}); \ |
| 68503 | __ret_915; \ | 70394 | __ret_887; \ |
| 68504 | }) | 70395 | }) |
| 68505 | #else | 70396 | #else |
| 68506 | #define vfmlsl_laneq_low_f16(__p0_916, __p1_916, __p2_916, __p3_916) __extension__ ({ \ | 70397 | #define vfmlsl_laneq_low_f16(__p0_888, __p1_888, __p2_888, __p3_888) __extension__ ({ \ |
| 68507 | float32x2_t __ret_916; \ | 70398 | float32x2_t __ret_888; \ |
| 68508 | float32x2_t __s0_916 = __p0_916; \ | 70399 | float32x2_t __s0_888 = __p0_888; \ |
| 68509 | float16x4_t __s1_916 = __p1_916; \ | 70400 | float16x4_t __s1_888 = __p1_888; \ |
| 68510 | float16x8_t __s2_916 = __p2_916; \ | 70401 | float16x8_t __s2_888 = __p2_888; \ |
| 68511 | float32x2_t __rev0_916; __rev0_916 = __builtin_shufflevector(__s0_916, __s0_916, 1, 0); \ | 70402 | float32x2_t __rev0_888; __rev0_888 = __builtin_shufflevector(__s0_888, __s0_888, 1, 0); \ |
| 68512 | float16x4_t __rev1_916; __rev1_916 = __builtin_shufflevector(__s1_916, __s1_916, 3, 2, 1, 0); \ | 70403 | float16x4_t __rev1_888; __rev1_888 = __builtin_shufflevector(__s1_888, __s1_888, 3, 2, 1, 0); \ |
| 68513 | float16x8_t __rev2_916; __rev2_916 = __builtin_shufflevector(__s2_916, __s2_916, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70404 | float16x8_t __rev2_888; __rev2_888 = __builtin_shufflevector(__s2_888, __s2_888, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68514 | __ret_916 = __noswap_vfmlsl_low_f16(__rev0_916, __rev1_916, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_916, __p3_916), __noswap_vgetq_lane_f16(__rev2_916, __p3_916), __noswap_vgetq_lane_f16(__rev2_916, __p3_916), __noswap_vgetq_lane_f16(__rev2_916, __p3_916)}); \ | 70405 | __ret_888 = __noswap_vfmlsl_low_f16(__rev0_888, __rev1_888, (float16x4_t) {__noswap_vgetq_lane_f16(__rev2_888, __p3_888), __noswap_vgetq_lane_f16(__rev2_888, __p3_888), __noswap_vgetq_lane_f16(__rev2_888, __p3_888), __noswap_vgetq_lane_f16(__rev2_888, __p3_888)}); \ |
| 68515 | __ret_916 = __builtin_shufflevector(__ret_916, __ret_916, 1, 0); \ | 70406 | __ret_888 = __builtin_shufflevector(__ret_888, __ret_888, 1, 0); \ |
| 68516 | __ret_916; \ | 70407 | __ret_888; \ |
| 68517 | }) | 70408 | }) |
| 68518 | #endif | 70409 | #endif |
| 68519 | 70410 | ||
| 68520 | #ifdef __LITTLE_ENDIAN__ | 70411 | #ifdef __LITTLE_ENDIAN__ |
| 68521 | #define vmulh_lane_f16(__p0_917, __p1_917, __p2_917) __extension__ ({ \ | 70412 | #define vmulh_lane_f16(__p0_889, __p1_889, __p2_889) __extension__ ({ \ |
| 68522 | float16_t __ret_917; \ | 70413 | float16_t __ret_889; \ |
| 68523 | float16_t __s0_917 = __p0_917; \ | 70414 | float16_t __s0_889 = __p0_889; \ |
| 68524 | float16x4_t __s1_917 = __p1_917; \ | 70415 | float16x4_t __s1_889 = __p1_889; \ |
| 68525 | __ret_917 = __s0_917 * vget_lane_f16(__s1_917, __p2_917); \ | 70416 | __ret_889 = __s0_889 * vget_lane_f16(__s1_889, __p2_889); \ |
| 68526 | __ret_917; \ | 70417 | __ret_889; \ |
| 68527 | }) | 70418 | }) |
| 68528 | #else | 70419 | #else |
| 68529 | #define vmulh_lane_f16(__p0_918, __p1_918, __p2_918) __extension__ ({ \ | 70420 | #define vmulh_lane_f16(__p0_890, __p1_890, __p2_890) __extension__ ({ \ |
| 68530 | float16_t __ret_918; \ | 70421 | float16_t __ret_890; \ |
| 68531 | float16_t __s0_918 = __p0_918; \ | 70422 | float16_t __s0_890 = __p0_890; \ |
| 68532 | float16x4_t __s1_918 = __p1_918; \ | 70423 | float16x4_t __s1_890 = __p1_890; \ |
| 68533 | float16x4_t __rev1_918; __rev1_918 = __builtin_shufflevector(__s1_918, __s1_918, 3, 2, 1, 0); \ | 70424 | float16x4_t __rev1_890; __rev1_890 = __builtin_shufflevector(__s1_890, __s1_890, 3, 2, 1, 0); \ |
| 68534 | __ret_918 = __s0_918 * __noswap_vget_lane_f16(__rev1_918, __p2_918); \ | 70425 | __ret_890 = __s0_890 * __noswap_vget_lane_f16(__rev1_890, __p2_890); \ |
| 68535 | __ret_918; \ | 70426 | __ret_890; \ |
| 68536 | }) | 70427 | }) |
| 68537 | #endif | 70428 | #endif |
| 68538 | 70429 | ||
| 68539 | #ifdef __LITTLE_ENDIAN__ | 70430 | #ifdef __LITTLE_ENDIAN__ |
| 68540 | #define vmulh_laneq_f16(__p0_919, __p1_919, __p2_919) __extension__ ({ \ | 70431 | #define vmulh_laneq_f16(__p0_891, __p1_891, __p2_891) __extension__ ({ \ |
| 68541 | float16_t __ret_919; \ | 70432 | float16_t __ret_891; \ |
| 68542 | float16_t __s0_919 = __p0_919; \ | 70433 | float16_t __s0_891 = __p0_891; \ |
| 68543 | float16x8_t __s1_919 = __p1_919; \ | 70434 | float16x8_t __s1_891 = __p1_891; \ |
| 68544 | __ret_919 = __s0_919 * vgetq_lane_f16(__s1_919, __p2_919); \ | 70435 | __ret_891 = __s0_891 * vgetq_lane_f16(__s1_891, __p2_891); \ |
| 68545 | __ret_919; \ | 70436 | __ret_891; \ |
| 68546 | }) | 70437 | }) |
| 68547 | #else | 70438 | #else |
| 68548 | #define vmulh_laneq_f16(__p0_920, __p1_920, __p2_920) __extension__ ({ \ | 70439 | #define vmulh_laneq_f16(__p0_892, __p1_892, __p2_892) __extension__ ({ \ |
| 68549 | float16_t __ret_920; \ | 70440 | float16_t __ret_892; \ |
| 68550 | float16_t __s0_920 = __p0_920; \ | 70441 | float16_t __s0_892 = __p0_892; \ |
| 68551 | float16x8_t __s1_920 = __p1_920; \ | 70442 | float16x8_t __s1_892 = __p1_892; \ |
| 68552 | float16x8_t __rev1_920; __rev1_920 = __builtin_shufflevector(__s1_920, __s1_920, 7, 6, 5, 4, 3, 2, 1, 0); \ | 70443 | float16x8_t __rev1_892; __rev1_892 = __builtin_shufflevector(__s1_892, __s1_892, 7, 6, 5, 4, 3, 2, 1, 0); \ |
| 68553 | __ret_920 = __s0_920 * __noswap_vgetq_lane_f16(__rev1_920, __p2_920); \ | 70444 | __ret_892 = __s0_892 * __noswap_vgetq_lane_f16(__rev1_892, __p2_892); \ |
| 68554 | __ret_920; \ | 70445 | __ret_892; \ |
| 68555 | }) | 70446 | }) |
| 68556 | #endif | 70447 | #endif |
| 68557 | 70448 | ||
| ... | @@ -68862,136 +70753,136 @@ __ai __attribute__((target("neon"))) int32x4_t vaddw_high_s16(int32x4_t __p0, in | ... | @@ -68862,136 +70753,136 @@ __ai __attribute__((target("neon"))) int32x4_t vaddw_high_s16(int32x4_t __p0, in |
| 68862 | #endif | 70753 | #endif |
| 68863 | 70754 | ||
| 68864 | #ifdef __LITTLE_ENDIAN__ | 70755 | #ifdef __LITTLE_ENDIAN__ |
| 68865 | #define vcopyq_lane_p64(__p0_921, __p1_921, __p2_921, __p3_921) __extension__ ({ \ | 70756 | #define vcopyq_lane_p64(__p0_893, __p1_893, __p2_893, __p3_893) __extension__ ({ \ |
| 68866 | poly64x2_t __ret_921; \ | 70757 | poly64x2_t __ret_893; \ |
| 68867 | poly64x2_t __s0_921 = __p0_921; \ | 70758 | poly64x2_t __s0_893 = __p0_893; \ |
| 68868 | poly64x1_t __s2_921 = __p2_921; \ | 70759 | poly64x1_t __s2_893 = __p2_893; \ |
| 68869 | __ret_921 = vsetq_lane_p64(vget_lane_p64(__s2_921, __p3_921), __s0_921, __p1_921); \ | 70760 | __ret_893 = vsetq_lane_p64(vget_lane_p64(__s2_893, __p3_893), __s0_893, __p1_893); \ |
| 68870 | __ret_921; \ | 70761 | __ret_893; \ |
| 68871 | }) | 70762 | }) |
| 68872 | #else | 70763 | #else |
| 68873 | #define vcopyq_lane_p64(__p0_922, __p1_922, __p2_922, __p3_922) __extension__ ({ \ | 70764 | #define vcopyq_lane_p64(__p0_894, __p1_894, __p2_894, __p3_894) __extension__ ({ \ |
| 68874 | poly64x2_t __ret_922; \ | 70765 | poly64x2_t __ret_894; \ |
| 68875 | poly64x2_t __s0_922 = __p0_922; \ | 70766 | poly64x2_t __s0_894 = __p0_894; \ |
| 68876 | poly64x1_t __s2_922 = __p2_922; \ | 70767 | poly64x1_t __s2_894 = __p2_894; \ |
| 68877 | poly64x2_t __rev0_922; __rev0_922 = __builtin_shufflevector(__s0_922, __s0_922, 1, 0); \ | 70768 | poly64x2_t __rev0_894; __rev0_894 = __builtin_shufflevector(__s0_894, __s0_894, 1, 0); \ |
| 68878 | __ret_922 = __noswap_vsetq_lane_p64(vget_lane_p64(__s2_922, __p3_922), __rev0_922, __p1_922); \ | 70769 | __ret_894 = __noswap_vsetq_lane_p64(vget_lane_p64(__s2_894, __p3_894), __rev0_894, __p1_894); \ |
| 68879 | __ret_922 = __builtin_shufflevector(__ret_922, __ret_922, 1, 0); \ | 70770 | __ret_894 = __builtin_shufflevector(__ret_894, __ret_894, 1, 0); \ |
| 68880 | __ret_922; \ | 70771 | __ret_894; \ |
| 68881 | }) | 70772 | }) |
| 68882 | #endif | 70773 | #endif |
| 68883 | 70774 | ||
| 68884 | #ifdef __LITTLE_ENDIAN__ | 70775 | #ifdef __LITTLE_ENDIAN__ |
| 68885 | #define vcopyq_lane_f64(__p0_923, __p1_923, __p2_923, __p3_923) __extension__ ({ \ | 70776 | #define vcopyq_lane_f64(__p0_895, __p1_895, __p2_895, __p3_895) __extension__ ({ \ |
| 68886 | float64x2_t __ret_923; \ | 70777 | float64x2_t __ret_895; \ |
| 68887 | float64x2_t __s0_923 = __p0_923; \ | 70778 | float64x2_t __s0_895 = __p0_895; \ |
| 68888 | float64x1_t __s2_923 = __p2_923; \ | 70779 | float64x1_t __s2_895 = __p2_895; \ |
| 68889 | __ret_923 = vsetq_lane_f64(vget_lane_f64(__s2_923, __p3_923), __s0_923, __p1_923); \ | 70780 | __ret_895 = vsetq_lane_f64(vget_lane_f64(__s2_895, __p3_895), __s0_895, __p1_895); \ |
| 68890 | __ret_923; \ | 70781 | __ret_895; \ |
| 68891 | }) | 70782 | }) |
| 68892 | #else | 70783 | #else |
| 68893 | #define vcopyq_lane_f64(__p0_924, __p1_924, __p2_924, __p3_924) __extension__ ({ \ | 70784 | #define vcopyq_lane_f64(__p0_896, __p1_896, __p2_896, __p3_896) __extension__ ({ \ |
| 68894 | float64x2_t __ret_924; \ | 70785 | float64x2_t __ret_896; \ |
| 68895 | float64x2_t __s0_924 = __p0_924; \ | 70786 | float64x2_t __s0_896 = __p0_896; \ |
| 68896 | float64x1_t __s2_924 = __p2_924; \ | 70787 | float64x1_t __s2_896 = __p2_896; \ |
| 68897 | float64x2_t __rev0_924; __rev0_924 = __builtin_shufflevector(__s0_924, __s0_924, 1, 0); \ | 70788 | float64x2_t __rev0_896; __rev0_896 = __builtin_shufflevector(__s0_896, __s0_896, 1, 0); \ |
| 68898 | __ret_924 = __noswap_vsetq_lane_f64(vget_lane_f64(__s2_924, __p3_924), __rev0_924, __p1_924); \ | 70789 | __ret_896 = __noswap_vsetq_lane_f64(vget_lane_f64(__s2_896, __p3_896), __rev0_896, __p1_896); \ |
| 68899 | __ret_924 = __builtin_shufflevector(__ret_924, __ret_924, 1, 0); \ | 70790 | __ret_896 = __builtin_shufflevector(__ret_896, __ret_896, 1, 0); \ |
| 68900 | __ret_924; \ | 70791 | __ret_896; \ |
| 68901 | }) | 70792 | }) |
| 68902 | #endif | 70793 | #endif |
| 68903 | 70794 | ||
| 68904 | #define vcopy_lane_p64(__p0_925, __p1_925, __p2_925, __p3_925) __extension__ ({ \ | 70795 | #define vcopy_lane_p64(__p0_897, __p1_897, __p2_897, __p3_897) __extension__ ({ \ |
| 68905 | poly64x1_t __ret_925; \ | 70796 | poly64x1_t __ret_897; \ |
| 68906 | poly64x1_t __s0_925 = __p0_925; \ | 70797 | poly64x1_t __s0_897 = __p0_897; \ |
| 68907 | poly64x1_t __s2_925 = __p2_925; \ | 70798 | poly64x1_t __s2_897 = __p2_897; \ |
| 68908 | __ret_925 = vset_lane_p64(vget_lane_p64(__s2_925, __p3_925), __s0_925, __p1_925); \ | 70799 | __ret_897 = vset_lane_p64(vget_lane_p64(__s2_897, __p3_897), __s0_897, __p1_897); \ |
| 68909 | __ret_925; \ | 70800 | __ret_897; \ |
| 68910 | }) | 70801 | }) |
| 68911 | #define vcopy_lane_f64(__p0_926, __p1_926, __p2_926, __p3_926) __extension__ ({ \ | 70802 | #define vcopy_lane_f64(__p0_898, __p1_898, __p2_898, __p3_898) __extension__ ({ \ |
| 68912 | float64x1_t __ret_926; \ | 70803 | float64x1_t __ret_898; \ |
| 68913 | float64x1_t __s0_926 = __p0_926; \ | 70804 | float64x1_t __s0_898 = __p0_898; \ |
| 68914 | float64x1_t __s2_926 = __p2_926; \ | 70805 | float64x1_t __s2_898 = __p2_898; \ |
| 68915 | __ret_926 = vset_lane_f64(vget_lane_f64(__s2_926, __p3_926), __s0_926, __p1_926); \ | 70806 | __ret_898 = vset_lane_f64(vget_lane_f64(__s2_898, __p3_898), __s0_898, __p1_898); \ |
| 68916 | __ret_926; \ | 70807 | __ret_898; \ |
| 68917 | }) | 70808 | }) |
| 68918 | #ifdef __LITTLE_ENDIAN__ | 70809 | #ifdef __LITTLE_ENDIAN__ |
| 68919 | #define vcopyq_laneq_p64(__p0_927, __p1_927, __p2_927, __p3_927) __extension__ ({ \ | 70810 | #define vcopyq_laneq_p64(__p0_899, __p1_899, __p2_899, __p3_899) __extension__ ({ \ |
| 68920 | poly64x2_t __ret_927; \ | 70811 | poly64x2_t __ret_899; \ |
| 68921 | poly64x2_t __s0_927 = __p0_927; \ | 70812 | poly64x2_t __s0_899 = __p0_899; \ |
| 68922 | poly64x2_t __s2_927 = __p2_927; \ | 70813 | poly64x2_t __s2_899 = __p2_899; \ |
| 68923 | __ret_927 = vsetq_lane_p64(vgetq_lane_p64(__s2_927, __p3_927), __s0_927, __p1_927); \ | 70814 | __ret_899 = vsetq_lane_p64(vgetq_lane_p64(__s2_899, __p3_899), __s0_899, __p1_899); \ |
| 68924 | __ret_927; \ | 70815 | __ret_899; \ |
| 68925 | }) | 70816 | }) |
| 68926 | #else | 70817 | #else |
| 68927 | #define vcopyq_laneq_p64(__p0_928, __p1_928, __p2_928, __p3_928) __extension__ ({ \ | 70818 | #define vcopyq_laneq_p64(__p0_900, __p1_900, __p2_900, __p3_900) __extension__ ({ \ |
| 68928 | poly64x2_t __ret_928; \ | 70819 | poly64x2_t __ret_900; \ |
| 68929 | poly64x2_t __s0_928 = __p0_928; \ | 70820 | poly64x2_t __s0_900 = __p0_900; \ |
| 68930 | poly64x2_t __s2_928 = __p2_928; \ | 70821 | poly64x2_t __s2_900 = __p2_900; \ |
| 68931 | poly64x2_t __rev0_928; __rev0_928 = __builtin_shufflevector(__s0_928, __s0_928, 1, 0); \ | 70822 | poly64x2_t __rev0_900; __rev0_900 = __builtin_shufflevector(__s0_900, __s0_900, 1, 0); \ |
| 68932 | poly64x2_t __rev2_928; __rev2_928 = __builtin_shufflevector(__s2_928, __s2_928, 1, 0); \ | 70823 | poly64x2_t __rev2_900; __rev2_900 = __builtin_shufflevector(__s2_900, __s2_900, 1, 0); \ |
| 68933 | __ret_928 = __noswap_vsetq_lane_p64(__noswap_vgetq_lane_p64(__rev2_928, __p3_928), __rev0_928, __p1_928); \ | 70824 | __ret_900 = __noswap_vsetq_lane_p64(__noswap_vgetq_lane_p64(__rev2_900, __p3_900), __rev0_900, __p1_900); \ |
| 68934 | __ret_928 = __builtin_shufflevector(__ret_928, __ret_928, 1, 0); \ | 70825 | __ret_900 = __builtin_shufflevector(__ret_900, __ret_900, 1, 0); \ |
| 68935 | __ret_928; \ | 70826 | __ret_900; \ |
| 68936 | }) | 70827 | }) |
| 68937 | #endif | 70828 | #endif |
| 68938 | 70829 | ||
| 68939 | #ifdef __LITTLE_ENDIAN__ | 70830 | #ifdef __LITTLE_ENDIAN__ |
| 68940 | #define vcopyq_laneq_f64(__p0_929, __p1_929, __p2_929, __p3_929) __extension__ ({ \ | 70831 | #define vcopyq_laneq_f64(__p0_901, __p1_901, __p2_901, __p3_901) __extension__ ({ \ |
| 68941 | float64x2_t __ret_929; \ | 70832 | float64x2_t __ret_901; \ |
| 68942 | float64x2_t __s0_929 = __p0_929; \ | 70833 | float64x2_t __s0_901 = __p0_901; \ |
| 68943 | float64x2_t __s2_929 = __p2_929; \ | 70834 | float64x2_t __s2_901 = __p2_901; \ |
| 68944 | __ret_929 = vsetq_lane_f64(vgetq_lane_f64(__s2_929, __p3_929), __s0_929, __p1_929); \ | 70835 | __ret_901 = vsetq_lane_f64(vgetq_lane_f64(__s2_901, __p3_901), __s0_901, __p1_901); \ |
| 68945 | __ret_929; \ | 70836 | __ret_901; \ |
| 68946 | }) | 70837 | }) |
| 68947 | #else | 70838 | #else |
| 68948 | #define vcopyq_laneq_f64(__p0_930, __p1_930, __p2_930, __p3_930) __extension__ ({ \ | 70839 | #define vcopyq_laneq_f64(__p0_902, __p1_902, __p2_902, __p3_902) __extension__ ({ \ |
| 68949 | float64x2_t __ret_930; \ | 70840 | float64x2_t __ret_902; \ |
| 68950 | float64x2_t __s0_930 = __p0_930; \ | 70841 | float64x2_t __s0_902 = __p0_902; \ |
| 68951 | float64x2_t __s2_930 = __p2_930; \ | 70842 | float64x2_t __s2_902 = __p2_902; \ |
| 68952 | float64x2_t __rev0_930; __rev0_930 = __builtin_shufflevector(__s0_930, __s0_930, 1, 0); \ | 70843 | float64x2_t __rev0_902; __rev0_902 = __builtin_shufflevector(__s0_902, __s0_902, 1, 0); \ |
| 68953 | float64x2_t __rev2_930; __rev2_930 = __builtin_shufflevector(__s2_930, __s2_930, 1, 0); \ | 70844 | float64x2_t __rev2_902; __rev2_902 = __builtin_shufflevector(__s2_902, __s2_902, 1, 0); \ |
| 68954 | __ret_930 = __noswap_vsetq_lane_f64(__noswap_vgetq_lane_f64(__rev2_930, __p3_930), __rev0_930, __p1_930); \ | 70845 | __ret_902 = __noswap_vsetq_lane_f64(__noswap_vgetq_lane_f64(__rev2_902, __p3_902), __rev0_902, __p1_902); \ |
| 68955 | __ret_930 = __builtin_shufflevector(__ret_930, __ret_930, 1, 0); \ | 70846 | __ret_902 = __builtin_shufflevector(__ret_902, __ret_902, 1, 0); \ |
| 68956 | __ret_930; \ | 70847 | __ret_902; \ |
| 68957 | }) | 70848 | }) |
| 68958 | #endif | 70849 | #endif |
| 68959 | 70850 | ||
| 68960 | #ifdef __LITTLE_ENDIAN__ | 70851 | #ifdef __LITTLE_ENDIAN__ |
| 68961 | #define vcopy_laneq_p64(__p0_931, __p1_931, __p2_931, __p3_931) __extension__ ({ \ | 70852 | #define vcopy_laneq_p64(__p0_903, __p1_903, __p2_903, __p3_903) __extension__ ({ \ |
| 68962 | poly64x1_t __ret_931; \ | 70853 | poly64x1_t __ret_903; \ |
| 68963 | poly64x1_t __s0_931 = __p0_931; \ | 70854 | poly64x1_t __s0_903 = __p0_903; \ |
| 68964 | poly64x2_t __s2_931 = __p2_931; \ | 70855 | poly64x2_t __s2_903 = __p2_903; \ |
| 68965 | __ret_931 = vset_lane_p64(vgetq_lane_p64(__s2_931, __p3_931), __s0_931, __p1_931); \ | 70856 | __ret_903 = vset_lane_p64(vgetq_lane_p64(__s2_903, __p3_903), __s0_903, __p1_903); \ |
| 68966 | __ret_931; \ | 70857 | __ret_903; \ |
| 68967 | }) | 70858 | }) |
| 68968 | #else | 70859 | #else |
| 68969 | #define vcopy_laneq_p64(__p0_932, __p1_932, __p2_932, __p3_932) __extension__ ({ \ | 70860 | #define vcopy_laneq_p64(__p0_904, __p1_904, __p2_904, __p3_904) __extension__ ({ \ |
| 68970 | poly64x1_t __ret_932; \ | 70861 | poly64x1_t __ret_904; \ |
| 68971 | poly64x1_t __s0_932 = __p0_932; \ | 70862 | poly64x1_t __s0_904 = __p0_904; \ |
| 68972 | poly64x2_t __s2_932 = __p2_932; \ | 70863 | poly64x2_t __s2_904 = __p2_904; \ |
| 68973 | poly64x2_t __rev2_932; __rev2_932 = __builtin_shufflevector(__s2_932, __s2_932, 1, 0); \ | 70864 | poly64x2_t __rev2_904; __rev2_904 = __builtin_shufflevector(__s2_904, __s2_904, 1, 0); \ |
| 68974 | __ret_932 = vset_lane_p64(__noswap_vgetq_lane_p64(__rev2_932, __p3_932), __s0_932, __p1_932); \ | 70865 | __ret_904 = vset_lane_p64(__noswap_vgetq_lane_p64(__rev2_904, __p3_904), __s0_904, __p1_904); \ |
| 68975 | __ret_932; \ | 70866 | __ret_904; \ |
| 68976 | }) | 70867 | }) |
| 68977 | #endif | 70868 | #endif |
| 68978 | 70869 | ||
| 68979 | #ifdef __LITTLE_ENDIAN__ | 70870 | #ifdef __LITTLE_ENDIAN__ |
| 68980 | #define vcopy_laneq_f64(__p0_933, __p1_933, __p2_933, __p3_933) __extension__ ({ \ | 70871 | #define vcopy_laneq_f64(__p0_905, __p1_905, __p2_905, __p3_905) __extension__ ({ \ |
| 68981 | float64x1_t __ret_933; \ | 70872 | float64x1_t __ret_905; \ |
| 68982 | float64x1_t __s0_933 = __p0_933; \ | 70873 | float64x1_t __s0_905 = __p0_905; \ |
| 68983 | float64x2_t __s2_933 = __p2_933; \ | 70874 | float64x2_t __s2_905 = __p2_905; \ |
| 68984 | __ret_933 = vset_lane_f64(vgetq_lane_f64(__s2_933, __p3_933), __s0_933, __p1_933); \ | 70875 | __ret_905 = vset_lane_f64(vgetq_lane_f64(__s2_905, __p3_905), __s0_905, __p1_905); \ |
| 68985 | __ret_933; \ | 70876 | __ret_905; \ |
| 68986 | }) | 70877 | }) |
| 68987 | #else | 70878 | #else |
| 68988 | #define vcopy_laneq_f64(__p0_934, __p1_934, __p2_934, __p3_934) __extension__ ({ \ | 70879 | #define vcopy_laneq_f64(__p0_906, __p1_906, __p2_906, __p3_906) __extension__ ({ \ |
| 68989 | float64x1_t __ret_934; \ | 70880 | float64x1_t __ret_906; \ |
| 68990 | float64x1_t __s0_934 = __p0_934; \ | 70881 | float64x1_t __s0_906 = __p0_906; \ |
| 68991 | float64x2_t __s2_934 = __p2_934; \ | 70882 | float64x2_t __s2_906 = __p2_906; \ |
| 68992 | float64x2_t __rev2_934; __rev2_934 = __builtin_shufflevector(__s2_934, __s2_934, 1, 0); \ | 70883 | float64x2_t __rev2_906; __rev2_906 = __builtin_shufflevector(__s2_906, __s2_906, 1, 0); \ |
| 68993 | __ret_934 = vset_lane_f64(__noswap_vgetq_lane_f64(__rev2_934, __p3_934), __s0_934, __p1_934); \ | 70884 | __ret_906 = vset_lane_f64(__noswap_vgetq_lane_f64(__rev2_906, __p3_906), __s0_906, __p1_906); \ |
| 68994 | __ret_934; \ | 70885 | __ret_906; \ |
| 68995 | }) | 70886 | }) |
| 68996 | #endif | 70887 | #endif |
| 68997 | 70888 | ||
| ... | @@ -69347,38 +71238,38 @@ __ai __attribute__((target("neon"))) int32x4_t vmlsl_high_n_s16(int32x4_t __p0, | ... | @@ -69347,38 +71238,38 @@ __ai __attribute__((target("neon"))) int32x4_t vmlsl_high_n_s16(int32x4_t __p0, |
| 69347 | } | 71238 | } |
| 69348 | #endif | 71239 | #endif |
| 69349 | 71240 | ||
| 69350 | #define vmulx_lane_f64(__p0_935, __p1_935, __p2_935) __extension__ ({ \ | 71241 | #define vmulx_lane_f64(__p0_907, __p1_907, __p2_907) __extension__ ({ \ |
| 69351 | float64x1_t __ret_935; \ | 71242 | float64x1_t __ret_907; \ |
| 69352 | float64x1_t __s0_935 = __p0_935; \ | 71243 | float64x1_t __s0_907 = __p0_907; \ |
| 69353 | float64x1_t __s1_935 = __p1_935; \ | 71244 | float64x1_t __s1_907 = __p1_907; \ |
| 69354 | float64_t __x_935 = vget_lane_f64(__s0_935, 0); \ | 71245 | float64_t __x_907 = vget_lane_f64(__s0_907, 0); \ |
| 69355 | float64_t __y_935 = vget_lane_f64(__s1_935, __p2_935); \ | 71246 | float64_t __y_907 = vget_lane_f64(__s1_907, __p2_907); \ |
| 69356 | float64_t __z_935 = vmulxd_f64(__x_935, __y_935); \ | 71247 | float64_t __z_907 = vmulxd_f64(__x_907, __y_907); \ |
| 69357 | __ret_935 = vset_lane_f64(__z_935, __s0_935, __p2_935); \ | 71248 | __ret_907 = vset_lane_f64(__z_907, __s0_907, __p2_907); \ |
| 69358 | __ret_935; \ | 71249 | __ret_907; \ |
| 69359 | }) | 71250 | }) |
| 69360 | #ifdef __LITTLE_ENDIAN__ | 71251 | #ifdef __LITTLE_ENDIAN__ |
| 69361 | #define vmulx_laneq_f64(__p0_936, __p1_936, __p2_936) __extension__ ({ \ | 71252 | #define vmulx_laneq_f64(__p0_908, __p1_908, __p2_908) __extension__ ({ \ |
| 69362 | float64x1_t __ret_936; \ | 71253 | float64x1_t __ret_908; \ |
| 69363 | float64x1_t __s0_936 = __p0_936; \ | 71254 | float64x1_t __s0_908 = __p0_908; \ |
| 69364 | float64x2_t __s1_936 = __p1_936; \ | 71255 | float64x2_t __s1_908 = __p1_908; \ |
| 69365 | float64_t __x_936 = vget_lane_f64(__s0_936, 0); \ | 71256 | float64_t __x_908 = vget_lane_f64(__s0_908, 0); \ |
| 69366 | float64_t __y_936 = vgetq_lane_f64(__s1_936, __p2_936); \ | 71257 | float64_t __y_908 = vgetq_lane_f64(__s1_908, __p2_908); \ |
| 69367 | float64_t __z_936 = vmulxd_f64(__x_936, __y_936); \ | 71258 | float64_t __z_908 = vmulxd_f64(__x_908, __y_908); \ |
| 69368 | __ret_936 = vset_lane_f64(__z_936, __s0_936, 0); \ | 71259 | __ret_908 = vset_lane_f64(__z_908, __s0_908, 0); \ |
| 69369 | __ret_936; \ | 71260 | __ret_908; \ |
| 69370 | }) | 71261 | }) |
| 69371 | #else | 71262 | #else |
| 69372 | #define vmulx_laneq_f64(__p0_937, __p1_937, __p2_937) __extension__ ({ \ | 71263 | #define vmulx_laneq_f64(__p0_909, __p1_909, __p2_909) __extension__ ({ \ |
| 69373 | float64x1_t __ret_937; \ | 71264 | float64x1_t __ret_909; \ |
| 69374 | float64x1_t __s0_937 = __p0_937; \ | 71265 | float64x1_t __s0_909 = __p0_909; \ |
| 69375 | float64x2_t __s1_937 = __p1_937; \ | 71266 | float64x2_t __s1_909 = __p1_909; \ |
| 69376 | float64x2_t __rev1_937; __rev1_937 = __builtin_shufflevector(__s1_937, __s1_937, 1, 0); \ | 71267 | float64x2_t __rev1_909; __rev1_909 = __builtin_shufflevector(__s1_909, __s1_909, 1, 0); \ |
| 69377 | float64_t __x_937 = vget_lane_f64(__s0_937, 0); \ | 71268 | float64_t __x_909 = vget_lane_f64(__s0_909, 0); \ |
| 69378 | float64_t __y_937 = __noswap_vgetq_lane_f64(__rev1_937, __p2_937); \ | 71269 | float64_t __y_909 = __noswap_vgetq_lane_f64(__rev1_909, __p2_909); \ |
| 69379 | float64_t __z_937 = vmulxd_f64(__x_937, __y_937); \ | 71270 | float64_t __z_909 = vmulxd_f64(__x_909, __y_909); \ |
| 69380 | __ret_937 = vset_lane_f64(__z_937, __s0_937, 0); \ | 71271 | __ret_909 = vset_lane_f64(__z_909, __s0_909, 0); \ |
| 69381 | __ret_937; \ | 71272 | __ret_909; \ |
| 69382 | }) | 71273 | }) |
| 69383 | #endif | 71274 | #endif |
| 69384 | 71275 |
lib/include/arm_sme.h+322-94| ... | @@ -35,12 +35,6 @@ __ai bool __arm_has_sme(void) __arm_streaming_compatible { | ... | @@ -35,12 +35,6 @@ __ai bool __arm_has_sme(void) __arm_streaming_compatible { |
| 35 | return x0 & (1ULL << 63); | 35 | return x0 & (1ULL << 63); |
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | __ai bool __arm_in_streaming_mode(void) __arm_streaming_compatible { | ||
| 39 | uint64_t x0, x1; | ||
| 40 | __builtin_arm_get_sme_state(&x0, &x1); | ||
| 41 | return x0 & 1; | ||
| 42 | } | ||
| 43 | |||
| 44 | void *__arm_sc_memcpy(void *dest, const void *src, size_t n) __arm_streaming_compatible; | 38 | void *__arm_sc_memcpy(void *dest, const void *src, size_t n) __arm_streaming_compatible; |
| 45 | void *__arm_sc_memmove(void *dest, const void *src, size_t n) __arm_streaming_compatible; | 39 | void *__arm_sc_memmove(void *dest, const void *src, size_t n) __arm_streaming_compatible; |
| 46 | void *__arm_sc_memset(void *s, int c, size_t n) __arm_streaming_compatible; | 40 | void *__arm_sc_memset(void *s, int c, size_t n) __arm_streaming_compatible; |
| ... | @@ -48,6 +42,8 @@ void *__arm_sc_memchr(void *s, int c, size_t n) __arm_streaming_compatible; | ... | @@ -48,6 +42,8 @@ void *__arm_sc_memchr(void *s, int c, size_t n) __arm_streaming_compatible; |
| 48 | 42 | ||
| 49 | __ai __attribute__((target("sme"))) void svundef_za(void) __arm_streaming_compatible __arm_out("za") { } | 43 | __ai __attribute__((target("sme"))) void svundef_za(void) __arm_streaming_compatible __arm_out("za") { } |
| 50 | 44 | ||
| 45 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme___arm_in_streaming_mode))) | ||
| 46 | bool __arm_in_streaming_mode(void); | ||
| 51 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za32_u32_m))) | 47 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za32_u32_m))) |
| 52 | void svaddha_za32_u32_m(uint64_t, svbool_t, svbool_t, svuint32_t); | 48 | void svaddha_za32_u32_m(uint64_t, svbool_t, svbool_t, svuint32_t); |
| 53 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za32_s32_m))) | 49 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za32_s32_m))) |
| ... | @@ -604,6 +600,94 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_ver_za8_u8_ | ... | @@ -604,6 +600,94 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_ver_za8_u8_ |
| 604 | void svwrite_ver_za8_m(uint64_t, uint32_t, svbool_t, svuint8_t); | 600 | void svwrite_ver_za8_m(uint64_t, uint32_t, svbool_t, svuint8_t); |
| 605 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_ver_za8_s8_m))) | 601 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_ver_za8_s8_m))) |
| 606 | void svwrite_ver_za8_m(uint64_t, uint32_t, svbool_t, svint8_t); | 602 | void svwrite_ver_za8_m(uint64_t, uint32_t, svbool_t, svint8_t); |
| 603 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x2))) | ||
| 604 | void svadd_za16_f16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 605 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x4))) | ||
| 606 | void svadd_za16_f16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 607 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x2))) | ||
| 608 | void svsub_za16_f16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 609 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x4))) | ||
| 610 | void svsub_za16_f16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 611 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x2))) | ||
| 612 | void svadd_za16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 613 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x4))) | ||
| 614 | void svadd_za16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 615 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x2))) | ||
| 616 | void svsub_za16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 617 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x4))) | ||
| 618 | void svsub_za16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 619 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x2))) | ||
| 620 | void svadd_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 621 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x4))) | ||
| 622 | void svadd_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 623 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x2))) | ||
| 624 | void svmla_single_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 625 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x4))) | ||
| 626 | void svmla_single_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 627 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x2))) | ||
| 628 | void svmla_lane_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 629 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x4))) | ||
| 630 | void svmla_lane_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 631 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x2))) | ||
| 632 | void svmla_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 633 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x4))) | ||
| 634 | void svmla_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 635 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x2))) | ||
| 636 | void svmls_single_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 637 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x4))) | ||
| 638 | void svmls_single_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 639 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x2))) | ||
| 640 | void svmls_lane_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 641 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x4))) | ||
| 642 | void svmls_lane_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 643 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x2))) | ||
| 644 | void svmls_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 645 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x4))) | ||
| 646 | void svmls_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 647 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_bf16_m))) | ||
| 648 | void svmopa_za16_bf16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 649 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_bf16_m))) | ||
| 650 | void svmops_za16_bf16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 651 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x2))) | ||
| 652 | void svsub_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 653 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x4))) | ||
| 654 | void svsub_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 655 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x2))) | ||
| 656 | void svadd_za16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 657 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x4))) | ||
| 658 | void svadd_za16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 659 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x2))) | ||
| 660 | void svmla_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 661 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x4))) | ||
| 662 | void svmla_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 663 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x2))) | ||
| 664 | void svmla_lane_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 665 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x4))) | ||
| 666 | void svmla_lane_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 667 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x2))) | ||
| 668 | void svmla_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 669 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x4))) | ||
| 670 | void svmla_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 671 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x2))) | ||
| 672 | void svmls_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 673 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x4))) | ||
| 674 | void svmls_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 675 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x2))) | ||
| 676 | void svmls_lane_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 677 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x4))) | ||
| 678 | void svmls_lane_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 679 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x2))) | ||
| 680 | void svmls_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 681 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x4))) | ||
| 682 | void svmls_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 683 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_bf16_m))) | ||
| 684 | void svmopa_za16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 685 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_bf16_m))) | ||
| 686 | void svmops_za16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 687 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x2))) | ||
| 688 | void svsub_za16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 689 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x4))) | ||
| 690 | void svsub_za16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 607 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_f16_vg1x2))) | 691 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_f16_vg1x2))) |
| 608 | void svmla_single_za16_f16_vg1x2(uint32_t, svfloat16x2_t, svfloat16_t); | 692 | void svmla_single_za16_f16_vg1x2(uint32_t, svfloat16x2_t, svfloat16_t); |
| 609 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_f16_vg1x4))) | 693 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_f16_vg1x4))) |
| ... | @@ -660,22 +744,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_f16_m)) | ... | @@ -660,22 +744,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_f16_m)) |
| 660 | void svmopa_za16_m(uint64_t, svbool_t, svbool_t, svfloat16_t, svfloat16_t); | 744 | void svmopa_za16_m(uint64_t, svbool_t, svbool_t, svfloat16_t, svfloat16_t); |
| 661 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_f16_m))) | 745 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_f16_m))) |
| 662 | void svmops_za16_m(uint64_t, svbool_t, svbool_t, svfloat16_t, svfloat16_t); | 746 | void svmops_za16_m(uint64_t, svbool_t, svbool_t, svfloat16_t, svfloat16_t); |
| 663 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x2))) | ||
| 664 | void svadd_za16_f16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 665 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x4))) | ||
| 666 | void svadd_za16_f16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 667 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x2))) | ||
| 668 | void svsub_za16_f16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 669 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x4))) | ||
| 670 | void svsub_za16_f16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 671 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x2))) | ||
| 672 | void svadd_za16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 673 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_f16_vg1x4))) | ||
| 674 | void svadd_za16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 675 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x2))) | ||
| 676 | void svsub_za16_vg1x2(uint32_t, svfloat16x2_t); | ||
| 677 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_f16_vg1x4))) | ||
| 678 | void svsub_za16_vg1x4(uint32_t, svfloat16x4_t); | ||
| 679 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za64_f64_m))) | 747 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za64_f64_m))) |
| 680 | void svmopa_za64_f64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); | 748 | void svmopa_za64_f64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); |
| 681 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za64_f64_m))) | 749 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za64_f64_m))) |
| ... | @@ -684,6 +752,138 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za64_f64_m)) | ... | @@ -684,6 +752,138 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za64_f64_m)) |
| 684 | void svmopa_za64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); | 752 | void svmopa_za64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); |
| 685 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za64_f64_m))) | 753 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za64_f64_m))) |
| 686 | void svmops_za64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); | 754 | void svmops_za64_m(uint64_t, svbool_t, svbool_t, svfloat64_t, svfloat64_t); |
| 755 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za16_mf8_vg1x2_fpm))) | ||
| 756 | void svdot_single_za16_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 757 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za16_mf8_vg1x4_fpm))) | ||
| 758 | void svdot_single_za16_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 759 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za16_mf8_vg1x2_fpm))) | ||
| 760 | void svdot_lane_za16_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 761 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za16_mf8_vg1x4_fpm))) | ||
| 762 | void svdot_lane_za16_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 763 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za16_mf8_vg1x2_fpm))) | ||
| 764 | void svdot_za16_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 765 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za16_mf8_vg1x4_fpm))) | ||
| 766 | void svdot_za16_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 767 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x1_fpm))) | ||
| 768 | void svmla_single_za16_mf8_vg2x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 769 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x2_fpm))) | ||
| 770 | void svmla_single_za16_mf8_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 771 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x4_fpm))) | ||
| 772 | void svmla_single_za16_mf8_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 773 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x1_fpm))) | ||
| 774 | void svmla_lane_za16_mf8_vg2x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 775 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x2_fpm))) | ||
| 776 | void svmla_lane_za16_mf8_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 777 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x4_fpm))) | ||
| 778 | void svmla_lane_za16_mf8_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 779 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_mf8_vg2x2_fpm))) | ||
| 780 | void svmla_za16_mf8_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 781 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_mf8_vg2x4_fpm))) | ||
| 782 | void svmla_za16_mf8_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 783 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_mf8_m_fpm))) | ||
| 784 | void svmopa_za16_mf8_m_fpm(uint64_t, svbool_t, svbool_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 785 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdot_lane_za16_mf8_vg1x2_fpm))) | ||
| 786 | void svvdot_lane_za16_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 787 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za16_mf8_vg1x2_fpm))) | ||
| 788 | void svdot_za16_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 789 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za16_mf8_vg1x4_fpm))) | ||
| 790 | void svdot_za16_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 791 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za16_mf8_vg1x2_fpm))) | ||
| 792 | void svdot_lane_za16_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 793 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za16_mf8_vg1x4_fpm))) | ||
| 794 | void svdot_lane_za16_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 795 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za16_mf8_vg1x2_fpm))) | ||
| 796 | void svdot_za16_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 797 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za16_mf8_vg1x4_fpm))) | ||
| 798 | void svdot_za16_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 799 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x1_fpm))) | ||
| 800 | void svmla_za16_vg2x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 801 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x2_fpm))) | ||
| 802 | void svmla_za16_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 803 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_mf8_vg2x4_fpm))) | ||
| 804 | void svmla_za16_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 805 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x1_fpm))) | ||
| 806 | void svmla_lane_za16_vg2x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 807 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x2_fpm))) | ||
| 808 | void svmla_lane_za16_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 809 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_mf8_vg2x4_fpm))) | ||
| 810 | void svmla_lane_za16_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 811 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_mf8_vg2x2_fpm))) | ||
| 812 | void svmla_za16_vg2x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 813 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_mf8_vg2x4_fpm))) | ||
| 814 | void svmla_za16_vg2x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 815 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_mf8_m_fpm))) | ||
| 816 | void svmopa_za16_m_fpm(uint64_t, svbool_t, svbool_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 817 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdot_lane_za16_mf8_vg1x2_fpm))) | ||
| 818 | void svvdot_lane_za16_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 819 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za32_mf8_vg1x2_fpm))) | ||
| 820 | void svdot_single_za32_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 821 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za32_mf8_vg1x4_fpm))) | ||
| 822 | void svdot_single_za32_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 823 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za32_mf8_vg1x2_fpm))) | ||
| 824 | void svdot_lane_za32_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 825 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za32_mf8_vg1x4_fpm))) | ||
| 826 | void svdot_lane_za32_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 827 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za32_mf8_vg1x2_fpm))) | ||
| 828 | void svdot_za32_mf8_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 829 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za32_mf8_vg1x4_fpm))) | ||
| 830 | void svdot_za32_mf8_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 831 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x1_fpm))) | ||
| 832 | void svmla_single_za32_mf8_vg4x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 833 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x2_fpm))) | ||
| 834 | void svmla_single_za32_mf8_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 835 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x4_fpm))) | ||
| 836 | void svmla_single_za32_mf8_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 837 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x1_fpm))) | ||
| 838 | void svmla_lane_za32_mf8_vg4x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 839 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x2_fpm))) | ||
| 840 | void svmla_lane_za32_mf8_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 841 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x4_fpm))) | ||
| 842 | void svmla_lane_za32_mf8_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 843 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za32_mf8_vg4x2_fpm))) | ||
| 844 | void svmla_za32_mf8_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 845 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za32_mf8_vg4x4_fpm))) | ||
| 846 | void svmla_za32_mf8_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 847 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za32_mf8_m_fpm))) | ||
| 848 | void svmopa_za32_mf8_m_fpm(uint64_t, svbool_t, svbool_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 849 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdotb_lane_za32_mf8_vg1x4_fpm))) | ||
| 850 | void svvdotb_lane_za32_mf8_vg1x4_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 851 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdott_lane_za32_mf8_vg1x4_fpm))) | ||
| 852 | void svvdott_lane_za32_mf8_vg1x4_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 853 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za32_mf8_vg1x2_fpm))) | ||
| 854 | void svdot_za32_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 855 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_single_za32_mf8_vg1x4_fpm))) | ||
| 856 | void svdot_za32_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 857 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za32_mf8_vg1x2_fpm))) | ||
| 858 | void svdot_lane_za32_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 859 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_lane_za32_mf8_vg1x4_fpm))) | ||
| 860 | void svdot_lane_za32_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 861 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za32_mf8_vg1x2_fpm))) | ||
| 862 | void svdot_za32_vg1x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 863 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svdot_za32_mf8_vg1x4_fpm))) | ||
| 864 | void svdot_za32_vg1x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 865 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x1_fpm))) | ||
| 866 | void svmla_za32_vg4x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 867 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x2_fpm))) | ||
| 868 | void svmla_za32_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, fpm_t); | ||
| 869 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za32_mf8_vg4x4_fpm))) | ||
| 870 | void svmla_za32_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, fpm_t); | ||
| 871 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x1_fpm))) | ||
| 872 | void svmla_lane_za32_vg4x1_fpm(uint32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 873 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x2_fpm))) | ||
| 874 | void svmla_lane_za32_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 875 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za32_mf8_vg4x4_fpm))) | ||
| 876 | void svmla_lane_za32_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 877 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za32_mf8_vg4x2_fpm))) | ||
| 878 | void svmla_za32_vg4x2_fpm(uint32_t, svmfloat8x2_t, svmfloat8x2_t, fpm_t); | ||
| 879 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za32_mf8_vg4x4_fpm))) | ||
| 880 | void svmla_za32_vg4x4_fpm(uint32_t, svmfloat8x4_t, svmfloat8x4_t, fpm_t); | ||
| 881 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za32_mf8_m_fpm))) | ||
| 882 | void svmopa_za32_m_fpm(uint64_t, svbool_t, svbool_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 883 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdotb_lane_za32_mf8_vg1x4_fpm))) | ||
| 884 | void svvdotb_lane_za32_vg1x4_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 885 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svvdott_lane_za32_mf8_vg1x4_fpm))) | ||
| 886 | void svvdott_lane_za32_vg1x4_fpm(uint32_t, svmfloat8x2_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 687 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za64_u64_m))) | 887 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za64_u64_m))) |
| 688 | void svaddha_za64_u64_m(uint64_t, svbool_t, svbool_t, svuint64_t); | 888 | void svaddha_za64_u64_m(uint64_t, svbool_t, svbool_t, svuint64_t); |
| 689 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za64_s64_m))) | 889 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svaddha_za64_s64_m))) |
| ... | @@ -732,6 +932,106 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svusmopa_za64_u16_m | ... | @@ -732,6 +932,106 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svusmopa_za64_u16_m |
| 732 | void svusmopa_za64_m(uint64_t, svbool_t, svbool_t, svuint16_t, svint16_t); | 932 | void svusmopa_za64_m(uint64_t, svbool_t, svbool_t, svuint16_t, svint16_t); |
| 733 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svusmops_za64_u16_m))) | 933 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svusmops_za64_u16_m))) |
| 734 | void svusmops_za64_m(uint64_t, svbool_t, svbool_t, svuint16_t, svint16_t); | 934 | void svusmops_za64_m(uint64_t, svbool_t, svbool_t, svuint16_t, svint16_t); |
| 935 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svluti4_zt_u8_x4))) | ||
| 936 | svuint8x4_t svluti4_zt_u8_x4(uint64_t, svuint8x2_t); | ||
| 937 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svluti4_zt_s8_x4))) | ||
| 938 | svint8x4_t svluti4_zt_s8_x4(uint64_t, svuint8x2_t); | ||
| 939 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u8))) | ||
| 940 | void svwrite_lane_zt_u8(uint64_t, svuint8_t, uint64_t); | ||
| 941 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u32))) | ||
| 942 | void svwrite_lane_zt_u32(uint64_t, svuint32_t, uint64_t); | ||
| 943 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u64))) | ||
| 944 | void svwrite_lane_zt_u64(uint64_t, svuint64_t, uint64_t); | ||
| 945 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u16))) | ||
| 946 | void svwrite_lane_zt_u16(uint64_t, svuint16_t, uint64_t); | ||
| 947 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_bf16))) | ||
| 948 | void svwrite_lane_zt_bf16(uint64_t, svbfloat16_t, uint64_t); | ||
| 949 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s8))) | ||
| 950 | void svwrite_lane_zt_s8(uint64_t, svint8_t, uint64_t); | ||
| 951 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f64))) | ||
| 952 | void svwrite_lane_zt_f64(uint64_t, svfloat64_t, uint64_t); | ||
| 953 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f32))) | ||
| 954 | void svwrite_lane_zt_f32(uint64_t, svfloat32_t, uint64_t); | ||
| 955 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f16))) | ||
| 956 | void svwrite_lane_zt_f16(uint64_t, svfloat16_t, uint64_t); | ||
| 957 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s32))) | ||
| 958 | void svwrite_lane_zt_s32(uint64_t, svint32_t, uint64_t); | ||
| 959 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s64))) | ||
| 960 | void svwrite_lane_zt_s64(uint64_t, svint64_t, uint64_t); | ||
| 961 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s16))) | ||
| 962 | void svwrite_lane_zt_s16(uint64_t, svint16_t, uint64_t); | ||
| 963 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u8))) | ||
| 964 | void svwrite_zt_u8(uint64_t, svuint8_t); | ||
| 965 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u32))) | ||
| 966 | void svwrite_zt_u32(uint64_t, svuint32_t); | ||
| 967 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u64))) | ||
| 968 | void svwrite_zt_u64(uint64_t, svuint64_t); | ||
| 969 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u16))) | ||
| 970 | void svwrite_zt_u16(uint64_t, svuint16_t); | ||
| 971 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_bf16))) | ||
| 972 | void svwrite_zt_bf16(uint64_t, svbfloat16_t); | ||
| 973 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s8))) | ||
| 974 | void svwrite_zt_s8(uint64_t, svint8_t); | ||
| 975 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f64))) | ||
| 976 | void svwrite_zt_f64(uint64_t, svfloat64_t); | ||
| 977 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f32))) | ||
| 978 | void svwrite_zt_f32(uint64_t, svfloat32_t); | ||
| 979 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f16))) | ||
| 980 | void svwrite_zt_f16(uint64_t, svfloat16_t); | ||
| 981 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s32))) | ||
| 982 | void svwrite_zt_s32(uint64_t, svint32_t); | ||
| 983 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s64))) | ||
| 984 | void svwrite_zt_s64(uint64_t, svint64_t); | ||
| 985 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s16))) | ||
| 986 | void svwrite_zt_s16(uint64_t, svint16_t); | ||
| 987 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u8))) | ||
| 988 | void svwrite_lane_zt(uint64_t, svuint8_t, uint64_t); | ||
| 989 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u32))) | ||
| 990 | void svwrite_lane_zt(uint64_t, svuint32_t, uint64_t); | ||
| 991 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u64))) | ||
| 992 | void svwrite_lane_zt(uint64_t, svuint64_t, uint64_t); | ||
| 993 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_u16))) | ||
| 994 | void svwrite_lane_zt(uint64_t, svuint16_t, uint64_t); | ||
| 995 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_bf16))) | ||
| 996 | void svwrite_lane_zt(uint64_t, svbfloat16_t, uint64_t); | ||
| 997 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s8))) | ||
| 998 | void svwrite_lane_zt(uint64_t, svint8_t, uint64_t); | ||
| 999 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f64))) | ||
| 1000 | void svwrite_lane_zt(uint64_t, svfloat64_t, uint64_t); | ||
| 1001 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f32))) | ||
| 1002 | void svwrite_lane_zt(uint64_t, svfloat32_t, uint64_t); | ||
| 1003 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_f16))) | ||
| 1004 | void svwrite_lane_zt(uint64_t, svfloat16_t, uint64_t); | ||
| 1005 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s32))) | ||
| 1006 | void svwrite_lane_zt(uint64_t, svint32_t, uint64_t); | ||
| 1007 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s64))) | ||
| 1008 | void svwrite_lane_zt(uint64_t, svint64_t, uint64_t); | ||
| 1009 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_lane_zt_s16))) | ||
| 1010 | void svwrite_lane_zt(uint64_t, svint16_t, uint64_t); | ||
| 1011 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u8))) | ||
| 1012 | void svwrite_zt(uint64_t, svuint8_t); | ||
| 1013 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u32))) | ||
| 1014 | void svwrite_zt(uint64_t, svuint32_t); | ||
| 1015 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u64))) | ||
| 1016 | void svwrite_zt(uint64_t, svuint64_t); | ||
| 1017 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_u16))) | ||
| 1018 | void svwrite_zt(uint64_t, svuint16_t); | ||
| 1019 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_bf16))) | ||
| 1020 | void svwrite_zt(uint64_t, svbfloat16_t); | ||
| 1021 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s8))) | ||
| 1022 | void svwrite_zt(uint64_t, svint8_t); | ||
| 1023 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f64))) | ||
| 1024 | void svwrite_zt(uint64_t, svfloat64_t); | ||
| 1025 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f32))) | ||
| 1026 | void svwrite_zt(uint64_t, svfloat32_t); | ||
| 1027 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_f16))) | ||
| 1028 | void svwrite_zt(uint64_t, svfloat16_t); | ||
| 1029 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s32))) | ||
| 1030 | void svwrite_zt(uint64_t, svint32_t); | ||
| 1031 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s64))) | ||
| 1032 | void svwrite_zt(uint64_t, svint64_t); | ||
| 1033 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_zt_s16))) | ||
| 1034 | void svwrite_zt(uint64_t, svint16_t); | ||
| 735 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_write_single_za32_u32_vg1x2))) | 1035 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_write_single_za32_u32_vg1x2))) |
| 736 | void svadd_write_single_za32_u32_vg1x2(uint32_t, svuint32x2_t, svuint32_t); | 1036 | void svadd_write_single_za32_u32_vg1x2(uint32_t, svuint32x2_t, svuint32_t); |
| 737 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_write_single_za32_s32_vg1x2))) | 1037 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_write_single_za32_s32_vg1x2))) |
| ... | @@ -2138,78 +2438,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_za8_u8_vg1x | ... | @@ -2138,78 +2438,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_za8_u8_vg1x |
| 2138 | void svwrite_za8_vg1x4(uint32_t, svuint8x4_t); | 2438 | void svwrite_za8_vg1x4(uint32_t, svuint8x4_t); |
| 2139 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_za8_s8_vg1x4))) | 2439 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svwrite_za8_s8_vg1x4))) |
| 2140 | void svwrite_za8_vg1x4(uint32_t, svint8x4_t); | 2440 | void svwrite_za8_vg1x4(uint32_t, svint8x4_t); |
| 2141 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x2))) | ||
| 2142 | void svadd_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 2143 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x4))) | ||
| 2144 | void svadd_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 2145 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x2))) | ||
| 2146 | void svmla_single_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 2147 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x4))) | ||
| 2148 | void svmla_single_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 2149 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x2))) | ||
| 2150 | void svmla_lane_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 2151 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x4))) | ||
| 2152 | void svmla_lane_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 2153 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x2))) | ||
| 2154 | void svmla_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 2155 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x4))) | ||
| 2156 | void svmla_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 2157 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x2))) | ||
| 2158 | void svmls_single_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 2159 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x4))) | ||
| 2160 | void svmls_single_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 2161 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x2))) | ||
| 2162 | void svmls_lane_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 2163 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x4))) | ||
| 2164 | void svmls_lane_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 2165 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x2))) | ||
| 2166 | void svmls_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 2167 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x4))) | ||
| 2168 | void svmls_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 2169 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_bf16_m))) | ||
| 2170 | void svmopa_za16_bf16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 2171 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_bf16_m))) | ||
| 2172 | void svmops_za16_bf16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 2173 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x2))) | ||
| 2174 | void svsub_za16_bf16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 2175 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x4))) | ||
| 2176 | void svsub_za16_bf16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 2177 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x2))) | ||
| 2178 | void svadd_za16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 2179 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za16_bf16_vg1x4))) | ||
| 2180 | void svadd_za16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 2181 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x2))) | ||
| 2182 | void svmla_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 2183 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_single_za16_bf16_vg1x4))) | ||
| 2184 | void svmla_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 2185 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x2))) | ||
| 2186 | void svmla_lane_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 2187 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_lane_za16_bf16_vg1x4))) | ||
| 2188 | void svmla_lane_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 2189 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x2))) | ||
| 2190 | void svmla_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 2191 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmla_za16_bf16_vg1x4))) | ||
| 2192 | void svmla_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 2193 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x2))) | ||
| 2194 | void svmls_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t); | ||
| 2195 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_single_za16_bf16_vg1x4))) | ||
| 2196 | void svmls_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t); | ||
| 2197 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x2))) | ||
| 2198 | void svmls_lane_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16_t, uint64_t); | ||
| 2199 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_lane_za16_bf16_vg1x4))) | ||
| 2200 | void svmls_lane_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16_t, uint64_t); | ||
| 2201 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x2))) | ||
| 2202 | void svmls_za16_vg1x2(uint32_t, svbfloat16x2_t, svbfloat16x2_t); | ||
| 2203 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmls_za16_bf16_vg1x4))) | ||
| 2204 | void svmls_za16_vg1x4(uint32_t, svbfloat16x4_t, svbfloat16x4_t); | ||
| 2205 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmopa_za16_bf16_m))) | ||
| 2206 | void svmopa_za16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 2207 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svmops_za16_bf16_m))) | ||
| 2208 | void svmops_za16_m(uint64_t, svbool_t, svbool_t, svbfloat16_t, svbfloat16_t); | ||
| 2209 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x2))) | ||
| 2210 | void svsub_za16_vg1x2(uint32_t, svbfloat16x2_t); | ||
| 2211 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sme_svsub_za16_bf16_vg1x4))) | ||
| 2212 | void svsub_za16_vg1x4(uint32_t, svbfloat16x4_t); | ||
| 2213 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za64_f64_vg1x2))) | 2441 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za64_f64_vg1x2))) |
| 2214 | void svadd_za64_f64_vg1x2(uint32_t, svfloat64x2_t); | 2442 | void svadd_za64_f64_vg1x2(uint32_t, svfloat64x2_t); |
| 2215 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za64_f64_vg1x4))) | 2443 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sme_svadd_za64_f64_vg1x4))) |
lib/include/arm_sve.h+1105-84| ... | @@ -38,6 +38,8 @@ typedef __SVFloat16_t svfloat16_t; | ... | @@ -38,6 +38,8 @@ typedef __SVFloat16_t svfloat16_t; |
| 38 | typedef __SVBfloat16_t svbfloat16_t; | 38 | typedef __SVBfloat16_t svbfloat16_t; |
| 39 | #include <arm_bf16.h> | 39 | #include <arm_bf16.h> |
| 40 | #include <arm_vector_types.h> | 40 | #include <arm_vector_types.h> |
| 41 | typedef __SVMfloat8_t svmfloat8_t; | ||
| 42 | |||
| 41 | typedef __SVFloat32_t svfloat32_t; | 43 | typedef __SVFloat32_t svfloat32_t; |
| 42 | typedef __SVFloat64_t svfloat64_t; | 44 | typedef __SVFloat64_t svfloat64_t; |
| 43 | typedef __clang_svint8x2_t svint8x2_t; | 45 | typedef __clang_svint8x2_t svint8x2_t; |
| ... | @@ -80,6 +82,9 @@ typedef __clang_svboolx4_t svboolx4_t; | ... | @@ -80,6 +82,9 @@ typedef __clang_svboolx4_t svboolx4_t; |
| 80 | typedef __clang_svbfloat16x2_t svbfloat16x2_t; | 82 | typedef __clang_svbfloat16x2_t svbfloat16x2_t; |
| 81 | typedef __clang_svbfloat16x3_t svbfloat16x3_t; | 83 | typedef __clang_svbfloat16x3_t svbfloat16x3_t; |
| 82 | typedef __clang_svbfloat16x4_t svbfloat16x4_t; | 84 | typedef __clang_svbfloat16x4_t svbfloat16x4_t; |
| 85 | typedef __clang_svmfloat8x2_t svmfloat8x2_t; | ||
| 86 | typedef __clang_svmfloat8x3_t svmfloat8x3_t; | ||
| 87 | typedef __clang_svmfloat8x4_t svmfloat8x4_t; | ||
| 83 | typedef __SVCount_t svcount_t; | 88 | typedef __SVCount_t svcount_t; |
| 84 | 89 | ||
| 85 | enum svpattern | 90 | enum svpattern |
| ... | @@ -128,6 +133,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8)) | ... | @@ -128,6 +133,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8)) |
| 128 | svint8_t svreinterpret_s8_s8(svint8_t op); | 133 | svint8_t svreinterpret_s8_s8(svint8_t op); |
| 129 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8))) | 134 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8))) |
| 130 | svint8_t svreinterpret_s8_u8(svuint8_t op); | 135 | svint8_t svreinterpret_s8_u8(svuint8_t op); |
| 136 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8))) | ||
| 137 | svint8_t svreinterpret_s8_mf8(svmfloat8_t op); | ||
| 131 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16))) | 138 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16))) |
| 132 | svint8_t svreinterpret_s8_s16(svint16_t op); | 139 | svint8_t svreinterpret_s8_s16(svint16_t op); |
| 133 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16))) | 140 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16))) |
| ... | @@ -152,6 +159,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8)) | ... | @@ -152,6 +159,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8)) |
| 152 | svuint8_t svreinterpret_u8_s8(svint8_t op); | 159 | svuint8_t svreinterpret_u8_s8(svint8_t op); |
| 153 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8))) | 160 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8))) |
| 154 | svuint8_t svreinterpret_u8_u8(svuint8_t op); | 161 | svuint8_t svreinterpret_u8_u8(svuint8_t op); |
| 162 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8))) | ||
| 163 | svuint8_t svreinterpret_u8_mf8(svmfloat8_t op); | ||
| 155 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16))) | 164 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16))) |
| 156 | svuint8_t svreinterpret_u8_s16(svint16_t op); | 165 | svuint8_t svreinterpret_u8_s16(svint16_t op); |
| 157 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16))) | 166 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16))) |
| ... | @@ -172,10 +181,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32) | ... | @@ -172,10 +181,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32) |
| 172 | svuint8_t svreinterpret_u8_f32(svfloat32_t op); | 181 | svuint8_t svreinterpret_u8_f32(svfloat32_t op); |
| 173 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64))) | 182 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64))) |
| 174 | svuint8_t svreinterpret_u8_f64(svfloat64_t op); | 183 | svuint8_t svreinterpret_u8_f64(svfloat64_t op); |
| 184 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8))) | ||
| 185 | svmfloat8_t svreinterpret_mf8_s8(svint8_t op); | ||
| 186 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8))) | ||
| 187 | svmfloat8_t svreinterpret_mf8_u8(svuint8_t op); | ||
| 188 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8))) | ||
| 189 | svmfloat8_t svreinterpret_mf8_mf8(svmfloat8_t op); | ||
| 190 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16))) | ||
| 191 | svmfloat8_t svreinterpret_mf8_s16(svint16_t op); | ||
| 192 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16))) | ||
| 193 | svmfloat8_t svreinterpret_mf8_u16(svuint16_t op); | ||
| 194 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32))) | ||
| 195 | svmfloat8_t svreinterpret_mf8_s32(svint32_t op); | ||
| 196 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32))) | ||
| 197 | svmfloat8_t svreinterpret_mf8_u32(svuint32_t op); | ||
| 198 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64))) | ||
| 199 | svmfloat8_t svreinterpret_mf8_s64(svint64_t op); | ||
| 200 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64))) | ||
| 201 | svmfloat8_t svreinterpret_mf8_u64(svuint64_t op); | ||
| 202 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16))) | ||
| 203 | svmfloat8_t svreinterpret_mf8_f16(svfloat16_t op); | ||
| 204 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16))) | ||
| 205 | svmfloat8_t svreinterpret_mf8_bf16(svbfloat16_t op); | ||
| 206 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32))) | ||
| 207 | svmfloat8_t svreinterpret_mf8_f32(svfloat32_t op); | ||
| 208 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64))) | ||
| 209 | svmfloat8_t svreinterpret_mf8_f64(svfloat64_t op); | ||
| 175 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8))) | 210 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8))) |
| 176 | svint16_t svreinterpret_s16_s8(svint8_t op); | 211 | svint16_t svreinterpret_s16_s8(svint8_t op); |
| 177 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8))) | 212 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8))) |
| 178 | svint16_t svreinterpret_s16_u8(svuint8_t op); | 213 | svint16_t svreinterpret_s16_u8(svuint8_t op); |
| 214 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8))) | ||
| 215 | svint16_t svreinterpret_s16_mf8(svmfloat8_t op); | ||
| 179 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16))) | 216 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16))) |
| 180 | svint16_t svreinterpret_s16_s16(svint16_t op); | 217 | svint16_t svreinterpret_s16_s16(svint16_t op); |
| 181 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16))) | 218 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16))) |
| ... | @@ -200,6 +237,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8) | ... | @@ -200,6 +237,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8) |
| 200 | svuint16_t svreinterpret_u16_s8(svint8_t op); | 237 | svuint16_t svreinterpret_u16_s8(svint8_t op); |
| 201 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8))) | 238 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8))) |
| 202 | svuint16_t svreinterpret_u16_u8(svuint8_t op); | 239 | svuint16_t svreinterpret_u16_u8(svuint8_t op); |
| 240 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8))) | ||
| 241 | svuint16_t svreinterpret_u16_mf8(svmfloat8_t op); | ||
| 203 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16))) | 242 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16))) |
| 204 | svuint16_t svreinterpret_u16_s16(svint16_t op); | 243 | svuint16_t svreinterpret_u16_s16(svint16_t op); |
| 205 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16))) | 244 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16))) |
| ... | @@ -224,6 +263,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8) | ... | @@ -224,6 +263,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8) |
| 224 | svint32_t svreinterpret_s32_s8(svint8_t op); | 263 | svint32_t svreinterpret_s32_s8(svint8_t op); |
| 225 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8))) | 264 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8))) |
| 226 | svint32_t svreinterpret_s32_u8(svuint8_t op); | 265 | svint32_t svreinterpret_s32_u8(svuint8_t op); |
| 266 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8))) | ||
| 267 | svint32_t svreinterpret_s32_mf8(svmfloat8_t op); | ||
| 227 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16))) | 268 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16))) |
| 228 | svint32_t svreinterpret_s32_s16(svint16_t op); | 269 | svint32_t svreinterpret_s32_s16(svint16_t op); |
| 229 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16))) | 270 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16))) |
| ... | @@ -248,6 +289,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8) | ... | @@ -248,6 +289,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8) |
| 248 | svuint32_t svreinterpret_u32_s8(svint8_t op); | 289 | svuint32_t svreinterpret_u32_s8(svint8_t op); |
| 249 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8))) | 290 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8))) |
| 250 | svuint32_t svreinterpret_u32_u8(svuint8_t op); | 291 | svuint32_t svreinterpret_u32_u8(svuint8_t op); |
| 292 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8))) | ||
| 293 | svuint32_t svreinterpret_u32_mf8(svmfloat8_t op); | ||
| 251 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16))) | 294 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16))) |
| 252 | svuint32_t svreinterpret_u32_s16(svint16_t op); | 295 | svuint32_t svreinterpret_u32_s16(svint16_t op); |
| 253 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16))) | 296 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16))) |
| ... | @@ -272,6 +315,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8) | ... | @@ -272,6 +315,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8) |
| 272 | svint64_t svreinterpret_s64_s8(svint8_t op); | 315 | svint64_t svreinterpret_s64_s8(svint8_t op); |
| 273 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8))) | 316 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8))) |
| 274 | svint64_t svreinterpret_s64_u8(svuint8_t op); | 317 | svint64_t svreinterpret_s64_u8(svuint8_t op); |
| 318 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8))) | ||
| 319 | svint64_t svreinterpret_s64_mf8(svmfloat8_t op); | ||
| 275 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16))) | 320 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16))) |
| 276 | svint64_t svreinterpret_s64_s16(svint16_t op); | 321 | svint64_t svreinterpret_s64_s16(svint16_t op); |
| 277 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16))) | 322 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16))) |
| ... | @@ -296,6 +341,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8) | ... | @@ -296,6 +341,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8) |
| 296 | svuint64_t svreinterpret_u64_s8(svint8_t op); | 341 | svuint64_t svreinterpret_u64_s8(svint8_t op); |
| 297 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8))) | 342 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8))) |
| 298 | svuint64_t svreinterpret_u64_u8(svuint8_t op); | 343 | svuint64_t svreinterpret_u64_u8(svuint8_t op); |
| 344 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8))) | ||
| 345 | svuint64_t svreinterpret_u64_mf8(svmfloat8_t op); | ||
| 299 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16))) | 346 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16))) |
| 300 | svuint64_t svreinterpret_u64_s16(svint16_t op); | 347 | svuint64_t svreinterpret_u64_s16(svint16_t op); |
| 301 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16))) | 348 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16))) |
| ... | @@ -320,6 +367,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8) | ... | @@ -320,6 +367,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8) |
| 320 | svfloat16_t svreinterpret_f16_s8(svint8_t op); | 367 | svfloat16_t svreinterpret_f16_s8(svint8_t op); |
| 321 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8))) | 368 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8))) |
| 322 | svfloat16_t svreinterpret_f16_u8(svuint8_t op); | 369 | svfloat16_t svreinterpret_f16_u8(svuint8_t op); |
| 370 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8))) | ||
| 371 | svfloat16_t svreinterpret_f16_mf8(svmfloat8_t op); | ||
| 323 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16))) | 372 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16))) |
| 324 | svfloat16_t svreinterpret_f16_s16(svint16_t op); | 373 | svfloat16_t svreinterpret_f16_s16(svint16_t op); |
| 325 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16))) | 374 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16))) |
| ... | @@ -344,6 +393,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -344,6 +393,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 344 | svbfloat16_t svreinterpret_bf16_s8(svint8_t op); | 393 | svbfloat16_t svreinterpret_bf16_s8(svint8_t op); |
| 345 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8))) | 394 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8))) |
| 346 | svbfloat16_t svreinterpret_bf16_u8(svuint8_t op); | 395 | svbfloat16_t svreinterpret_bf16_u8(svuint8_t op); |
| 396 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8))) | ||
| 397 | svbfloat16_t svreinterpret_bf16_mf8(svmfloat8_t op); | ||
| 347 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16))) | 398 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16))) |
| 348 | svbfloat16_t svreinterpret_bf16_s16(svint16_t op); | 399 | svbfloat16_t svreinterpret_bf16_s16(svint16_t op); |
| 349 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16))) | 400 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16))) |
| ... | @@ -368,6 +419,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8) | ... | @@ -368,6 +419,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8) |
| 368 | svfloat32_t svreinterpret_f32_s8(svint8_t op); | 419 | svfloat32_t svreinterpret_f32_s8(svint8_t op); |
| 369 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8))) | 420 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8))) |
| 370 | svfloat32_t svreinterpret_f32_u8(svuint8_t op); | 421 | svfloat32_t svreinterpret_f32_u8(svuint8_t op); |
| 422 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8))) | ||
| 423 | svfloat32_t svreinterpret_f32_mf8(svmfloat8_t op); | ||
| 371 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16))) | 424 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16))) |
| 372 | svfloat32_t svreinterpret_f32_s16(svint16_t op); | 425 | svfloat32_t svreinterpret_f32_s16(svint16_t op); |
| 373 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16))) | 426 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16))) |
| ... | @@ -392,6 +445,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8) | ... | @@ -392,6 +445,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8) |
| 392 | svfloat64_t svreinterpret_f64_s8(svint8_t op); | 445 | svfloat64_t svreinterpret_f64_s8(svint8_t op); |
| 393 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8))) | 446 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8))) |
| 394 | svfloat64_t svreinterpret_f64_u8(svuint8_t op); | 447 | svfloat64_t svreinterpret_f64_u8(svuint8_t op); |
| 448 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8))) | ||
| 449 | svfloat64_t svreinterpret_f64_mf8(svmfloat8_t op); | ||
| 395 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16))) | 450 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16))) |
| 396 | svfloat64_t svreinterpret_f64_s16(svint16_t op); | 451 | svfloat64_t svreinterpret_f64_s16(svint16_t op); |
| 397 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16))) | 452 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16))) |
| ... | @@ -416,6 +471,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8)) | ... | @@ -416,6 +471,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8)) |
| 416 | svint8_t svreinterpret_s8(svint8_t op); | 471 | svint8_t svreinterpret_s8(svint8_t op); |
| 417 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8))) | 472 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8))) |
| 418 | svint8_t svreinterpret_s8(svuint8_t op); | 473 | svint8_t svreinterpret_s8(svuint8_t op); |
| 474 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8))) | ||
| 475 | svint8_t svreinterpret_s8(svmfloat8_t op); | ||
| 419 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16))) | 476 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16))) |
| 420 | svint8_t svreinterpret_s8(svint16_t op); | 477 | svint8_t svreinterpret_s8(svint16_t op); |
| 421 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16))) | 478 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16))) |
| ... | @@ -440,6 +497,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8)) | ... | @@ -440,6 +497,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8)) |
| 440 | svuint8_t svreinterpret_u8(svint8_t op); | 497 | svuint8_t svreinterpret_u8(svint8_t op); |
| 441 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8))) | 498 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8))) |
| 442 | svuint8_t svreinterpret_u8(svuint8_t op); | 499 | svuint8_t svreinterpret_u8(svuint8_t op); |
| 500 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8))) | ||
| 501 | svuint8_t svreinterpret_u8(svmfloat8_t op); | ||
| 443 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16))) | 502 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16))) |
| 444 | svuint8_t svreinterpret_u8(svint16_t op); | 503 | svuint8_t svreinterpret_u8(svint16_t op); |
| 445 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16))) | 504 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16))) |
| ... | @@ -460,10 +519,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32) | ... | @@ -460,10 +519,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32) |
| 460 | svuint8_t svreinterpret_u8(svfloat32_t op); | 519 | svuint8_t svreinterpret_u8(svfloat32_t op); |
| 461 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64))) | 520 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64))) |
| 462 | svuint8_t svreinterpret_u8(svfloat64_t op); | 521 | svuint8_t svreinterpret_u8(svfloat64_t op); |
| 522 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8))) | ||
| 523 | svmfloat8_t svreinterpret_mf8(svint8_t op); | ||
| 524 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8))) | ||
| 525 | svmfloat8_t svreinterpret_mf8(svuint8_t op); | ||
| 526 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8))) | ||
| 527 | svmfloat8_t svreinterpret_mf8(svmfloat8_t op); | ||
| 528 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16))) | ||
| 529 | svmfloat8_t svreinterpret_mf8(svint16_t op); | ||
| 530 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16))) | ||
| 531 | svmfloat8_t svreinterpret_mf8(svuint16_t op); | ||
| 532 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32))) | ||
| 533 | svmfloat8_t svreinterpret_mf8(svint32_t op); | ||
| 534 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32))) | ||
| 535 | svmfloat8_t svreinterpret_mf8(svuint32_t op); | ||
| 536 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64))) | ||
| 537 | svmfloat8_t svreinterpret_mf8(svint64_t op); | ||
| 538 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64))) | ||
| 539 | svmfloat8_t svreinterpret_mf8(svuint64_t op); | ||
| 540 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16))) | ||
| 541 | svmfloat8_t svreinterpret_mf8(svfloat16_t op); | ||
| 542 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16))) | ||
| 543 | svmfloat8_t svreinterpret_mf8(svbfloat16_t op); | ||
| 544 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32))) | ||
| 545 | svmfloat8_t svreinterpret_mf8(svfloat32_t op); | ||
| 546 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64))) | ||
| 547 | svmfloat8_t svreinterpret_mf8(svfloat64_t op); | ||
| 463 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8))) | 548 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8))) |
| 464 | svint16_t svreinterpret_s16(svint8_t op); | 549 | svint16_t svreinterpret_s16(svint8_t op); |
| 465 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8))) | 550 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8))) |
| 466 | svint16_t svreinterpret_s16(svuint8_t op); | 551 | svint16_t svreinterpret_s16(svuint8_t op); |
| 552 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8))) | ||
| 553 | svint16_t svreinterpret_s16(svmfloat8_t op); | ||
| 467 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16))) | 554 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16))) |
| 468 | svint16_t svreinterpret_s16(svint16_t op); | 555 | svint16_t svreinterpret_s16(svint16_t op); |
| 469 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16))) | 556 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16))) |
| ... | @@ -488,6 +575,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8) | ... | @@ -488,6 +575,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8) |
| 488 | svuint16_t svreinterpret_u16(svint8_t op); | 575 | svuint16_t svreinterpret_u16(svint8_t op); |
| 489 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8))) | 576 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8))) |
| 490 | svuint16_t svreinterpret_u16(svuint8_t op); | 577 | svuint16_t svreinterpret_u16(svuint8_t op); |
| 578 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8))) | ||
| 579 | svuint16_t svreinterpret_u16(svmfloat8_t op); | ||
| 491 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16))) | 580 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16))) |
| 492 | svuint16_t svreinterpret_u16(svint16_t op); | 581 | svuint16_t svreinterpret_u16(svint16_t op); |
| 493 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16))) | 582 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16))) |
| ... | @@ -512,6 +601,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8) | ... | @@ -512,6 +601,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8) |
| 512 | svint32_t svreinterpret_s32(svint8_t op); | 601 | svint32_t svreinterpret_s32(svint8_t op); |
| 513 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8))) | 602 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8))) |
| 514 | svint32_t svreinterpret_s32(svuint8_t op); | 603 | svint32_t svreinterpret_s32(svuint8_t op); |
| 604 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8))) | ||
| 605 | svint32_t svreinterpret_s32(svmfloat8_t op); | ||
| 515 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16))) | 606 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16))) |
| 516 | svint32_t svreinterpret_s32(svint16_t op); | 607 | svint32_t svreinterpret_s32(svint16_t op); |
| 517 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16))) | 608 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16))) |
| ... | @@ -536,6 +627,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8) | ... | @@ -536,6 +627,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8) |
| 536 | svuint32_t svreinterpret_u32(svint8_t op); | 627 | svuint32_t svreinterpret_u32(svint8_t op); |
| 537 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8))) | 628 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8))) |
| 538 | svuint32_t svreinterpret_u32(svuint8_t op); | 629 | svuint32_t svreinterpret_u32(svuint8_t op); |
| 630 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8))) | ||
| 631 | svuint32_t svreinterpret_u32(svmfloat8_t op); | ||
| 539 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16))) | 632 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16))) |
| 540 | svuint32_t svreinterpret_u32(svint16_t op); | 633 | svuint32_t svreinterpret_u32(svint16_t op); |
| 541 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16))) | 634 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16))) |
| ... | @@ -560,6 +653,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8) | ... | @@ -560,6 +653,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8) |
| 560 | svint64_t svreinterpret_s64(svint8_t op); | 653 | svint64_t svreinterpret_s64(svint8_t op); |
| 561 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8))) | 654 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8))) |
| 562 | svint64_t svreinterpret_s64(svuint8_t op); | 655 | svint64_t svreinterpret_s64(svuint8_t op); |
| 656 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8))) | ||
| 657 | svint64_t svreinterpret_s64(svmfloat8_t op); | ||
| 563 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16))) | 658 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16))) |
| 564 | svint64_t svreinterpret_s64(svint16_t op); | 659 | svint64_t svreinterpret_s64(svint16_t op); |
| 565 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16))) | 660 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16))) |
| ... | @@ -584,6 +679,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8) | ... | @@ -584,6 +679,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8) |
| 584 | svuint64_t svreinterpret_u64(svint8_t op); | 679 | svuint64_t svreinterpret_u64(svint8_t op); |
| 585 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8))) | 680 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8))) |
| 586 | svuint64_t svreinterpret_u64(svuint8_t op); | 681 | svuint64_t svreinterpret_u64(svuint8_t op); |
| 682 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8))) | ||
| 683 | svuint64_t svreinterpret_u64(svmfloat8_t op); | ||
| 587 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16))) | 684 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16))) |
| 588 | svuint64_t svreinterpret_u64(svint16_t op); | 685 | svuint64_t svreinterpret_u64(svint16_t op); |
| 589 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16))) | 686 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16))) |
| ... | @@ -608,6 +705,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8) | ... | @@ -608,6 +705,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8) |
| 608 | svfloat16_t svreinterpret_f16(svint8_t op); | 705 | svfloat16_t svreinterpret_f16(svint8_t op); |
| 609 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8))) | 706 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8))) |
| 610 | svfloat16_t svreinterpret_f16(svuint8_t op); | 707 | svfloat16_t svreinterpret_f16(svuint8_t op); |
| 708 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8))) | ||
| 709 | svfloat16_t svreinterpret_f16(svmfloat8_t op); | ||
| 611 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16))) | 710 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16))) |
| 612 | svfloat16_t svreinterpret_f16(svint16_t op); | 711 | svfloat16_t svreinterpret_f16(svint16_t op); |
| 613 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16))) | 712 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16))) |
| ... | @@ -632,6 +731,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -632,6 +731,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 632 | svbfloat16_t svreinterpret_bf16(svint8_t op); | 731 | svbfloat16_t svreinterpret_bf16(svint8_t op); |
| 633 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8))) | 732 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8))) |
| 634 | svbfloat16_t svreinterpret_bf16(svuint8_t op); | 733 | svbfloat16_t svreinterpret_bf16(svuint8_t op); |
| 734 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8))) | ||
| 735 | svbfloat16_t svreinterpret_bf16(svmfloat8_t op); | ||
| 635 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16))) | 736 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16))) |
| 636 | svbfloat16_t svreinterpret_bf16(svint16_t op); | 737 | svbfloat16_t svreinterpret_bf16(svint16_t op); |
| 637 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16))) | 738 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16))) |
| ... | @@ -656,6 +757,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8) | ... | @@ -656,6 +757,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8) |
| 656 | svfloat32_t svreinterpret_f32(svint8_t op); | 757 | svfloat32_t svreinterpret_f32(svint8_t op); |
| 657 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8))) | 758 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8))) |
| 658 | svfloat32_t svreinterpret_f32(svuint8_t op); | 759 | svfloat32_t svreinterpret_f32(svuint8_t op); |
| 760 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8))) | ||
| 761 | svfloat32_t svreinterpret_f32(svmfloat8_t op); | ||
| 659 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16))) | 762 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16))) |
| 660 | svfloat32_t svreinterpret_f32(svint16_t op); | 763 | svfloat32_t svreinterpret_f32(svint16_t op); |
| 661 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16))) | 764 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16))) |
| ... | @@ -680,6 +783,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8) | ... | @@ -680,6 +783,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8) |
| 680 | svfloat64_t svreinterpret_f64(svint8_t op); | 783 | svfloat64_t svreinterpret_f64(svint8_t op); |
| 681 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8))) | 784 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8))) |
| 682 | svfloat64_t svreinterpret_f64(svuint8_t op); | 785 | svfloat64_t svreinterpret_f64(svuint8_t op); |
| 786 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8))) | ||
| 787 | svfloat64_t svreinterpret_f64(svmfloat8_t op); | ||
| 683 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16))) | 788 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16))) |
| 684 | svfloat64_t svreinterpret_f64(svint16_t op); | 789 | svfloat64_t svreinterpret_f64(svint16_t op); |
| 685 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16))) | 790 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16))) |
| ... | @@ -704,6 +809,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -704,6 +809,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 704 | svint8x2_t svreinterpret_s8_s8_x2(svint8x2_t op); | 809 | svint8x2_t svreinterpret_s8_s8_x2(svint8x2_t op); |
| 705 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x2))) | 810 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x2))) |
| 706 | svint8x2_t svreinterpret_s8_u8_x2(svuint8x2_t op); | 811 | svint8x2_t svreinterpret_s8_u8_x2(svuint8x2_t op); |
| 812 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x2))) | ||
| 813 | svint8x2_t svreinterpret_s8_mf8_x2(svmfloat8x2_t op); | ||
| 707 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x2))) | 814 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x2))) |
| 708 | svint8x2_t svreinterpret_s8_s16_x2(svint16x2_t op); | 815 | svint8x2_t svreinterpret_s8_s16_x2(svint16x2_t op); |
| 709 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x2))) | 816 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x2))) |
| ... | @@ -728,6 +835,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -728,6 +835,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 728 | svuint8x2_t svreinterpret_u8_s8_x2(svint8x2_t op); | 835 | svuint8x2_t svreinterpret_u8_s8_x2(svint8x2_t op); |
| 729 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x2))) | 836 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x2))) |
| 730 | svuint8x2_t svreinterpret_u8_u8_x2(svuint8x2_t op); | 837 | svuint8x2_t svreinterpret_u8_u8_x2(svuint8x2_t op); |
| 838 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x2))) | ||
| 839 | svuint8x2_t svreinterpret_u8_mf8_x2(svmfloat8x2_t op); | ||
| 731 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x2))) | 840 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x2))) |
| 732 | svuint8x2_t svreinterpret_u8_s16_x2(svint16x2_t op); | 841 | svuint8x2_t svreinterpret_u8_s16_x2(svint16x2_t op); |
| 733 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x2))) | 842 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x2))) |
| ... | @@ -748,10 +857,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -748,10 +857,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 748 | svuint8x2_t svreinterpret_u8_f32_x2(svfloat32x2_t op); | 857 | svuint8x2_t svreinterpret_u8_f32_x2(svfloat32x2_t op); |
| 749 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x2))) | 858 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x2))) |
| 750 | svuint8x2_t svreinterpret_u8_f64_x2(svfloat64x2_t op); | 859 | svuint8x2_t svreinterpret_u8_f64_x2(svfloat64x2_t op); |
| 860 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x2))) | ||
| 861 | svmfloat8x2_t svreinterpret_mf8_s8_x2(svint8x2_t op); | ||
| 862 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x2))) | ||
| 863 | svmfloat8x2_t svreinterpret_mf8_u8_x2(svuint8x2_t op); | ||
| 864 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x2))) | ||
| 865 | svmfloat8x2_t svreinterpret_mf8_mf8_x2(svmfloat8x2_t op); | ||
| 866 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x2))) | ||
| 867 | svmfloat8x2_t svreinterpret_mf8_s16_x2(svint16x2_t op); | ||
| 868 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x2))) | ||
| 869 | svmfloat8x2_t svreinterpret_mf8_u16_x2(svuint16x2_t op); | ||
| 870 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x2))) | ||
| 871 | svmfloat8x2_t svreinterpret_mf8_s32_x2(svint32x2_t op); | ||
| 872 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x2))) | ||
| 873 | svmfloat8x2_t svreinterpret_mf8_u32_x2(svuint32x2_t op); | ||
| 874 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x2))) | ||
| 875 | svmfloat8x2_t svreinterpret_mf8_s64_x2(svint64x2_t op); | ||
| 876 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x2))) | ||
| 877 | svmfloat8x2_t svreinterpret_mf8_u64_x2(svuint64x2_t op); | ||
| 878 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x2))) | ||
| 879 | svmfloat8x2_t svreinterpret_mf8_f16_x2(svfloat16x2_t op); | ||
| 880 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x2))) | ||
| 881 | svmfloat8x2_t svreinterpret_mf8_bf16_x2(svbfloat16x2_t op); | ||
| 882 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x2))) | ||
| 883 | svmfloat8x2_t svreinterpret_mf8_f32_x2(svfloat32x2_t op); | ||
| 884 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x2))) | ||
| 885 | svmfloat8x2_t svreinterpret_mf8_f64_x2(svfloat64x2_t op); | ||
| 751 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x2))) | 886 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x2))) |
| 752 | svint16x2_t svreinterpret_s16_s8_x2(svint8x2_t op); | 887 | svint16x2_t svreinterpret_s16_s8_x2(svint8x2_t op); |
| 753 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x2))) | 888 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x2))) |
| 754 | svint16x2_t svreinterpret_s16_u8_x2(svuint8x2_t op); | 889 | svint16x2_t svreinterpret_s16_u8_x2(svuint8x2_t op); |
| 890 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x2))) | ||
| 891 | svint16x2_t svreinterpret_s16_mf8_x2(svmfloat8x2_t op); | ||
| 755 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x2))) | 892 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x2))) |
| 756 | svint16x2_t svreinterpret_s16_s16_x2(svint16x2_t op); | 893 | svint16x2_t svreinterpret_s16_s16_x2(svint16x2_t op); |
| 757 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x2))) | 894 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x2))) |
| ... | @@ -776,6 +913,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -776,6 +913,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 776 | svuint16x2_t svreinterpret_u16_s8_x2(svint8x2_t op); | 913 | svuint16x2_t svreinterpret_u16_s8_x2(svint8x2_t op); |
| 777 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x2))) | 914 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x2))) |
| 778 | svuint16x2_t svreinterpret_u16_u8_x2(svuint8x2_t op); | 915 | svuint16x2_t svreinterpret_u16_u8_x2(svuint8x2_t op); |
| 916 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x2))) | ||
| 917 | svuint16x2_t svreinterpret_u16_mf8_x2(svmfloat8x2_t op); | ||
| 779 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x2))) | 918 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x2))) |
| 780 | svuint16x2_t svreinterpret_u16_s16_x2(svint16x2_t op); | 919 | svuint16x2_t svreinterpret_u16_s16_x2(svint16x2_t op); |
| 781 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x2))) | 920 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x2))) |
| ... | @@ -800,6 +939,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -800,6 +939,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 800 | svint32x2_t svreinterpret_s32_s8_x2(svint8x2_t op); | 939 | svint32x2_t svreinterpret_s32_s8_x2(svint8x2_t op); |
| 801 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x2))) | 940 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x2))) |
| 802 | svint32x2_t svreinterpret_s32_u8_x2(svuint8x2_t op); | 941 | svint32x2_t svreinterpret_s32_u8_x2(svuint8x2_t op); |
| 942 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x2))) | ||
| 943 | svint32x2_t svreinterpret_s32_mf8_x2(svmfloat8x2_t op); | ||
| 803 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x2))) | 944 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x2))) |
| 804 | svint32x2_t svreinterpret_s32_s16_x2(svint16x2_t op); | 945 | svint32x2_t svreinterpret_s32_s16_x2(svint16x2_t op); |
| 805 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x2))) | 946 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x2))) |
| ... | @@ -824,6 +965,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -824,6 +965,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 824 | svuint32x2_t svreinterpret_u32_s8_x2(svint8x2_t op); | 965 | svuint32x2_t svreinterpret_u32_s8_x2(svint8x2_t op); |
| 825 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x2))) | 966 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x2))) |
| 826 | svuint32x2_t svreinterpret_u32_u8_x2(svuint8x2_t op); | 967 | svuint32x2_t svreinterpret_u32_u8_x2(svuint8x2_t op); |
| 968 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x2))) | ||
| 969 | svuint32x2_t svreinterpret_u32_mf8_x2(svmfloat8x2_t op); | ||
| 827 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x2))) | 970 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x2))) |
| 828 | svuint32x2_t svreinterpret_u32_s16_x2(svint16x2_t op); | 971 | svuint32x2_t svreinterpret_u32_s16_x2(svint16x2_t op); |
| 829 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x2))) | 972 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x2))) |
| ... | @@ -848,6 +991,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -848,6 +991,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 848 | svint64x2_t svreinterpret_s64_s8_x2(svint8x2_t op); | 991 | svint64x2_t svreinterpret_s64_s8_x2(svint8x2_t op); |
| 849 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x2))) | 992 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x2))) |
| 850 | svint64x2_t svreinterpret_s64_u8_x2(svuint8x2_t op); | 993 | svint64x2_t svreinterpret_s64_u8_x2(svuint8x2_t op); |
| 994 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x2))) | ||
| 995 | svint64x2_t svreinterpret_s64_mf8_x2(svmfloat8x2_t op); | ||
| 851 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x2))) | 996 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x2))) |
| 852 | svint64x2_t svreinterpret_s64_s16_x2(svint16x2_t op); | 997 | svint64x2_t svreinterpret_s64_s16_x2(svint16x2_t op); |
| 853 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x2))) | 998 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x2))) |
| ... | @@ -872,6 +1017,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -872,6 +1017,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 872 | svuint64x2_t svreinterpret_u64_s8_x2(svint8x2_t op); | 1017 | svuint64x2_t svreinterpret_u64_s8_x2(svint8x2_t op); |
| 873 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x2))) | 1018 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x2))) |
| 874 | svuint64x2_t svreinterpret_u64_u8_x2(svuint8x2_t op); | 1019 | svuint64x2_t svreinterpret_u64_u8_x2(svuint8x2_t op); |
| 1020 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x2))) | ||
| 1021 | svuint64x2_t svreinterpret_u64_mf8_x2(svmfloat8x2_t op); | ||
| 875 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x2))) | 1022 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x2))) |
| 876 | svuint64x2_t svreinterpret_u64_s16_x2(svint16x2_t op); | 1023 | svuint64x2_t svreinterpret_u64_s16_x2(svint16x2_t op); |
| 877 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x2))) | 1024 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x2))) |
| ... | @@ -896,6 +1043,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -896,6 +1043,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 896 | svfloat16x2_t svreinterpret_f16_s8_x2(svint8x2_t op); | 1043 | svfloat16x2_t svreinterpret_f16_s8_x2(svint8x2_t op); |
| 897 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x2))) | 1044 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x2))) |
| 898 | svfloat16x2_t svreinterpret_f16_u8_x2(svuint8x2_t op); | 1045 | svfloat16x2_t svreinterpret_f16_u8_x2(svuint8x2_t op); |
| 1046 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x2))) | ||
| 1047 | svfloat16x2_t svreinterpret_f16_mf8_x2(svmfloat8x2_t op); | ||
| 899 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x2))) | 1048 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x2))) |
| 900 | svfloat16x2_t svreinterpret_f16_s16_x2(svint16x2_t op); | 1049 | svfloat16x2_t svreinterpret_f16_s16_x2(svint16x2_t op); |
| 901 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x2))) | 1050 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x2))) |
| ... | @@ -920,6 +1069,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -920,6 +1069,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 920 | svbfloat16x2_t svreinterpret_bf16_s8_x2(svint8x2_t op); | 1069 | svbfloat16x2_t svreinterpret_bf16_s8_x2(svint8x2_t op); |
| 921 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x2))) | 1070 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x2))) |
| 922 | svbfloat16x2_t svreinterpret_bf16_u8_x2(svuint8x2_t op); | 1071 | svbfloat16x2_t svreinterpret_bf16_u8_x2(svuint8x2_t op); |
| 1072 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x2))) | ||
| 1073 | svbfloat16x2_t svreinterpret_bf16_mf8_x2(svmfloat8x2_t op); | ||
| 923 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x2))) | 1074 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x2))) |
| 924 | svbfloat16x2_t svreinterpret_bf16_s16_x2(svint16x2_t op); | 1075 | svbfloat16x2_t svreinterpret_bf16_s16_x2(svint16x2_t op); |
| 925 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x2))) | 1076 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x2))) |
| ... | @@ -944,6 +1095,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -944,6 +1095,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 944 | svfloat32x2_t svreinterpret_f32_s8_x2(svint8x2_t op); | 1095 | svfloat32x2_t svreinterpret_f32_s8_x2(svint8x2_t op); |
| 945 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x2))) | 1096 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x2))) |
| 946 | svfloat32x2_t svreinterpret_f32_u8_x2(svuint8x2_t op); | 1097 | svfloat32x2_t svreinterpret_f32_u8_x2(svuint8x2_t op); |
| 1098 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x2))) | ||
| 1099 | svfloat32x2_t svreinterpret_f32_mf8_x2(svmfloat8x2_t op); | ||
| 947 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x2))) | 1100 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x2))) |
| 948 | svfloat32x2_t svreinterpret_f32_s16_x2(svint16x2_t op); | 1101 | svfloat32x2_t svreinterpret_f32_s16_x2(svint16x2_t op); |
| 949 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x2))) | 1102 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x2))) |
| ... | @@ -968,6 +1121,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -968,6 +1121,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 968 | svfloat64x2_t svreinterpret_f64_s8_x2(svint8x2_t op); | 1121 | svfloat64x2_t svreinterpret_f64_s8_x2(svint8x2_t op); |
| 969 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x2))) | 1122 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x2))) |
| 970 | svfloat64x2_t svreinterpret_f64_u8_x2(svuint8x2_t op); | 1123 | svfloat64x2_t svreinterpret_f64_u8_x2(svuint8x2_t op); |
| 1124 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x2))) | ||
| 1125 | svfloat64x2_t svreinterpret_f64_mf8_x2(svmfloat8x2_t op); | ||
| 971 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x2))) | 1126 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x2))) |
| 972 | svfloat64x2_t svreinterpret_f64_s16_x2(svint16x2_t op); | 1127 | svfloat64x2_t svreinterpret_f64_s16_x2(svint16x2_t op); |
| 973 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x2))) | 1128 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x2))) |
| ... | @@ -992,6 +1147,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -992,6 +1147,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 992 | svint8x2_t svreinterpret_s8(svint8x2_t op); | 1147 | svint8x2_t svreinterpret_s8(svint8x2_t op); |
| 993 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x2))) | 1148 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x2))) |
| 994 | svint8x2_t svreinterpret_s8(svuint8x2_t op); | 1149 | svint8x2_t svreinterpret_s8(svuint8x2_t op); |
| 1150 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x2))) | ||
| 1151 | svint8x2_t svreinterpret_s8(svmfloat8x2_t op); | ||
| 995 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x2))) | 1152 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x2))) |
| 996 | svint8x2_t svreinterpret_s8(svint16x2_t op); | 1153 | svint8x2_t svreinterpret_s8(svint16x2_t op); |
| 997 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x2))) | 1154 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x2))) |
| ... | @@ -1016,6 +1173,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -1016,6 +1173,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 1016 | svuint8x2_t svreinterpret_u8(svint8x2_t op); | 1173 | svuint8x2_t svreinterpret_u8(svint8x2_t op); |
| 1017 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x2))) | 1174 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x2))) |
| 1018 | svuint8x2_t svreinterpret_u8(svuint8x2_t op); | 1175 | svuint8x2_t svreinterpret_u8(svuint8x2_t op); |
| 1176 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x2))) | ||
| 1177 | svuint8x2_t svreinterpret_u8(svmfloat8x2_t op); | ||
| 1019 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x2))) | 1178 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x2))) |
| 1020 | svuint8x2_t svreinterpret_u8(svint16x2_t op); | 1179 | svuint8x2_t svreinterpret_u8(svint16x2_t op); |
| 1021 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x2))) | 1180 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x2))) |
| ... | @@ -1036,10 +1195,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -1036,10 +1195,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 1036 | svuint8x2_t svreinterpret_u8(svfloat32x2_t op); | 1195 | svuint8x2_t svreinterpret_u8(svfloat32x2_t op); |
| 1037 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x2))) | 1196 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x2))) |
| 1038 | svuint8x2_t svreinterpret_u8(svfloat64x2_t op); | 1197 | svuint8x2_t svreinterpret_u8(svfloat64x2_t op); |
| 1198 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x2))) | ||
| 1199 | svmfloat8x2_t svreinterpret_mf8(svint8x2_t op); | ||
| 1200 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x2))) | ||
| 1201 | svmfloat8x2_t svreinterpret_mf8(svuint8x2_t op); | ||
| 1202 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x2))) | ||
| 1203 | svmfloat8x2_t svreinterpret_mf8(svmfloat8x2_t op); | ||
| 1204 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x2))) | ||
| 1205 | svmfloat8x2_t svreinterpret_mf8(svint16x2_t op); | ||
| 1206 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x2))) | ||
| 1207 | svmfloat8x2_t svreinterpret_mf8(svuint16x2_t op); | ||
| 1208 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x2))) | ||
| 1209 | svmfloat8x2_t svreinterpret_mf8(svint32x2_t op); | ||
| 1210 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x2))) | ||
| 1211 | svmfloat8x2_t svreinterpret_mf8(svuint32x2_t op); | ||
| 1212 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x2))) | ||
| 1213 | svmfloat8x2_t svreinterpret_mf8(svint64x2_t op); | ||
| 1214 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x2))) | ||
| 1215 | svmfloat8x2_t svreinterpret_mf8(svuint64x2_t op); | ||
| 1216 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x2))) | ||
| 1217 | svmfloat8x2_t svreinterpret_mf8(svfloat16x2_t op); | ||
| 1218 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x2))) | ||
| 1219 | svmfloat8x2_t svreinterpret_mf8(svbfloat16x2_t op); | ||
| 1220 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x2))) | ||
| 1221 | svmfloat8x2_t svreinterpret_mf8(svfloat32x2_t op); | ||
| 1222 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x2))) | ||
| 1223 | svmfloat8x2_t svreinterpret_mf8(svfloat64x2_t op); | ||
| 1039 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x2))) | 1224 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x2))) |
| 1040 | svint16x2_t svreinterpret_s16(svint8x2_t op); | 1225 | svint16x2_t svreinterpret_s16(svint8x2_t op); |
| 1041 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x2))) | 1226 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x2))) |
| 1042 | svint16x2_t svreinterpret_s16(svuint8x2_t op); | 1227 | svint16x2_t svreinterpret_s16(svuint8x2_t op); |
| 1228 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x2))) | ||
| 1229 | svint16x2_t svreinterpret_s16(svmfloat8x2_t op); | ||
| 1043 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x2))) | 1230 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x2))) |
| 1044 | svint16x2_t svreinterpret_s16(svint16x2_t op); | 1231 | svint16x2_t svreinterpret_s16(svint16x2_t op); |
| 1045 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x2))) | 1232 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x2))) |
| ... | @@ -1064,6 +1251,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -1064,6 +1251,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 1064 | svuint16x2_t svreinterpret_u16(svint8x2_t op); | 1251 | svuint16x2_t svreinterpret_u16(svint8x2_t op); |
| 1065 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x2))) | 1252 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x2))) |
| 1066 | svuint16x2_t svreinterpret_u16(svuint8x2_t op); | 1253 | svuint16x2_t svreinterpret_u16(svuint8x2_t op); |
| 1254 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x2))) | ||
| 1255 | svuint16x2_t svreinterpret_u16(svmfloat8x2_t op); | ||
| 1067 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x2))) | 1256 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x2))) |
| 1068 | svuint16x2_t svreinterpret_u16(svint16x2_t op); | 1257 | svuint16x2_t svreinterpret_u16(svint16x2_t op); |
| 1069 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x2))) | 1258 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x2))) |
| ... | @@ -1088,6 +1277,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -1088,6 +1277,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 1088 | svint32x2_t svreinterpret_s32(svint8x2_t op); | 1277 | svint32x2_t svreinterpret_s32(svint8x2_t op); |
| 1089 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x2))) | 1278 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x2))) |
| 1090 | svint32x2_t svreinterpret_s32(svuint8x2_t op); | 1279 | svint32x2_t svreinterpret_s32(svuint8x2_t op); |
| 1280 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x2))) | ||
| 1281 | svint32x2_t svreinterpret_s32(svmfloat8x2_t op); | ||
| 1091 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x2))) | 1282 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x2))) |
| 1092 | svint32x2_t svreinterpret_s32(svint16x2_t op); | 1283 | svint32x2_t svreinterpret_s32(svint16x2_t op); |
| 1093 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x2))) | 1284 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x2))) |
| ... | @@ -1112,6 +1303,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -1112,6 +1303,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 1112 | svuint32x2_t svreinterpret_u32(svint8x2_t op); | 1303 | svuint32x2_t svreinterpret_u32(svint8x2_t op); |
| 1113 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x2))) | 1304 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x2))) |
| 1114 | svuint32x2_t svreinterpret_u32(svuint8x2_t op); | 1305 | svuint32x2_t svreinterpret_u32(svuint8x2_t op); |
| 1306 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x2))) | ||
| 1307 | svuint32x2_t svreinterpret_u32(svmfloat8x2_t op); | ||
| 1115 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x2))) | 1308 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x2))) |
| 1116 | svuint32x2_t svreinterpret_u32(svint16x2_t op); | 1309 | svuint32x2_t svreinterpret_u32(svint16x2_t op); |
| 1117 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x2))) | 1310 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x2))) |
| ... | @@ -1136,6 +1329,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -1136,6 +1329,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 1136 | svint64x2_t svreinterpret_s64(svint8x2_t op); | 1329 | svint64x2_t svreinterpret_s64(svint8x2_t op); |
| 1137 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x2))) | 1330 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x2))) |
| 1138 | svint64x2_t svreinterpret_s64(svuint8x2_t op); | 1331 | svint64x2_t svreinterpret_s64(svuint8x2_t op); |
| 1332 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x2))) | ||
| 1333 | svint64x2_t svreinterpret_s64(svmfloat8x2_t op); | ||
| 1139 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x2))) | 1334 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x2))) |
| 1140 | svint64x2_t svreinterpret_s64(svint16x2_t op); | 1335 | svint64x2_t svreinterpret_s64(svint16x2_t op); |
| 1141 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x2))) | 1336 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x2))) |
| ... | @@ -1160,6 +1355,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -1160,6 +1355,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 1160 | svuint64x2_t svreinterpret_u64(svint8x2_t op); | 1355 | svuint64x2_t svreinterpret_u64(svint8x2_t op); |
| 1161 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x2))) | 1356 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x2))) |
| 1162 | svuint64x2_t svreinterpret_u64(svuint8x2_t op); | 1357 | svuint64x2_t svreinterpret_u64(svuint8x2_t op); |
| 1358 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x2))) | ||
| 1359 | svuint64x2_t svreinterpret_u64(svmfloat8x2_t op); | ||
| 1163 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x2))) | 1360 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x2))) |
| 1164 | svuint64x2_t svreinterpret_u64(svint16x2_t op); | 1361 | svuint64x2_t svreinterpret_u64(svint16x2_t op); |
| 1165 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x2))) | 1362 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x2))) |
| ... | @@ -1184,6 +1381,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -1184,6 +1381,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 1184 | svfloat16x2_t svreinterpret_f16(svint8x2_t op); | 1381 | svfloat16x2_t svreinterpret_f16(svint8x2_t op); |
| 1185 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x2))) | 1382 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x2))) |
| 1186 | svfloat16x2_t svreinterpret_f16(svuint8x2_t op); | 1383 | svfloat16x2_t svreinterpret_f16(svuint8x2_t op); |
| 1384 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x2))) | ||
| 1385 | svfloat16x2_t svreinterpret_f16(svmfloat8x2_t op); | ||
| 1187 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x2))) | 1386 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x2))) |
| 1188 | svfloat16x2_t svreinterpret_f16(svint16x2_t op); | 1387 | svfloat16x2_t svreinterpret_f16(svint16x2_t op); |
| 1189 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x2))) | 1388 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x2))) |
| ... | @@ -1208,6 +1407,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -1208,6 +1407,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 1208 | svbfloat16x2_t svreinterpret_bf16(svint8x2_t op); | 1407 | svbfloat16x2_t svreinterpret_bf16(svint8x2_t op); |
| 1209 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x2))) | 1408 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x2))) |
| 1210 | svbfloat16x2_t svreinterpret_bf16(svuint8x2_t op); | 1409 | svbfloat16x2_t svreinterpret_bf16(svuint8x2_t op); |
| 1410 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x2))) | ||
| 1411 | svbfloat16x2_t svreinterpret_bf16(svmfloat8x2_t op); | ||
| 1211 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x2))) | 1412 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x2))) |
| 1212 | svbfloat16x2_t svreinterpret_bf16(svint16x2_t op); | 1413 | svbfloat16x2_t svreinterpret_bf16(svint16x2_t op); |
| 1213 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x2))) | 1414 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x2))) |
| ... | @@ -1232,6 +1433,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -1232,6 +1433,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 1232 | svfloat32x2_t svreinterpret_f32(svint8x2_t op); | 1433 | svfloat32x2_t svreinterpret_f32(svint8x2_t op); |
| 1233 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x2))) | 1434 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x2))) |
| 1234 | svfloat32x2_t svreinterpret_f32(svuint8x2_t op); | 1435 | svfloat32x2_t svreinterpret_f32(svuint8x2_t op); |
| 1436 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x2))) | ||
| 1437 | svfloat32x2_t svreinterpret_f32(svmfloat8x2_t op); | ||
| 1235 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x2))) | 1438 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x2))) |
| 1236 | svfloat32x2_t svreinterpret_f32(svint16x2_t op); | 1439 | svfloat32x2_t svreinterpret_f32(svint16x2_t op); |
| 1237 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x2))) | 1440 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x2))) |
| ... | @@ -1256,6 +1459,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -1256,6 +1459,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 1256 | svfloat64x2_t svreinterpret_f64(svint8x2_t op); | 1459 | svfloat64x2_t svreinterpret_f64(svint8x2_t op); |
| 1257 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x2))) | 1460 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x2))) |
| 1258 | svfloat64x2_t svreinterpret_f64(svuint8x2_t op); | 1461 | svfloat64x2_t svreinterpret_f64(svuint8x2_t op); |
| 1462 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x2))) | ||
| 1463 | svfloat64x2_t svreinterpret_f64(svmfloat8x2_t op); | ||
| 1259 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x2))) | 1464 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x2))) |
| 1260 | svfloat64x2_t svreinterpret_f64(svint16x2_t op); | 1465 | svfloat64x2_t svreinterpret_f64(svint16x2_t op); |
| 1261 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x2))) | 1466 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x2))) |
| ... | @@ -1280,6 +1485,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -1280,6 +1485,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 1280 | svint8x3_t svreinterpret_s8_s8_x3(svint8x3_t op); | 1485 | svint8x3_t svreinterpret_s8_s8_x3(svint8x3_t op); |
| 1281 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x3))) | 1486 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x3))) |
| 1282 | svint8x3_t svreinterpret_s8_u8_x3(svuint8x3_t op); | 1487 | svint8x3_t svreinterpret_s8_u8_x3(svuint8x3_t op); |
| 1488 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x3))) | ||
| 1489 | svint8x3_t svreinterpret_s8_mf8_x3(svmfloat8x3_t op); | ||
| 1283 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x3))) | 1490 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x3))) |
| 1284 | svint8x3_t svreinterpret_s8_s16_x3(svint16x3_t op); | 1491 | svint8x3_t svreinterpret_s8_s16_x3(svint16x3_t op); |
| 1285 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x3))) | 1492 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x3))) |
| ... | @@ -1304,6 +1511,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -1304,6 +1511,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 1304 | svuint8x3_t svreinterpret_u8_s8_x3(svint8x3_t op); | 1511 | svuint8x3_t svreinterpret_u8_s8_x3(svint8x3_t op); |
| 1305 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x3))) | 1512 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x3))) |
| 1306 | svuint8x3_t svreinterpret_u8_u8_x3(svuint8x3_t op); | 1513 | svuint8x3_t svreinterpret_u8_u8_x3(svuint8x3_t op); |
| 1514 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x3))) | ||
| 1515 | svuint8x3_t svreinterpret_u8_mf8_x3(svmfloat8x3_t op); | ||
| 1307 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x3))) | 1516 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x3))) |
| 1308 | svuint8x3_t svreinterpret_u8_s16_x3(svint16x3_t op); | 1517 | svuint8x3_t svreinterpret_u8_s16_x3(svint16x3_t op); |
| 1309 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x3))) | 1518 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x3))) |
| ... | @@ -1324,10 +1533,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -1324,10 +1533,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 1324 | svuint8x3_t svreinterpret_u8_f32_x3(svfloat32x3_t op); | 1533 | svuint8x3_t svreinterpret_u8_f32_x3(svfloat32x3_t op); |
| 1325 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x3))) | 1534 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x3))) |
| 1326 | svuint8x3_t svreinterpret_u8_f64_x3(svfloat64x3_t op); | 1535 | svuint8x3_t svreinterpret_u8_f64_x3(svfloat64x3_t op); |
| 1536 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x3))) | ||
| 1537 | svmfloat8x3_t svreinterpret_mf8_s8_x3(svint8x3_t op); | ||
| 1538 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x3))) | ||
| 1539 | svmfloat8x3_t svreinterpret_mf8_u8_x3(svuint8x3_t op); | ||
| 1540 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x3))) | ||
| 1541 | svmfloat8x3_t svreinterpret_mf8_mf8_x3(svmfloat8x3_t op); | ||
| 1542 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x3))) | ||
| 1543 | svmfloat8x3_t svreinterpret_mf8_s16_x3(svint16x3_t op); | ||
| 1544 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x3))) | ||
| 1545 | svmfloat8x3_t svreinterpret_mf8_u16_x3(svuint16x3_t op); | ||
| 1546 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x3))) | ||
| 1547 | svmfloat8x3_t svreinterpret_mf8_s32_x3(svint32x3_t op); | ||
| 1548 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x3))) | ||
| 1549 | svmfloat8x3_t svreinterpret_mf8_u32_x3(svuint32x3_t op); | ||
| 1550 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x3))) | ||
| 1551 | svmfloat8x3_t svreinterpret_mf8_s64_x3(svint64x3_t op); | ||
| 1552 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x3))) | ||
| 1553 | svmfloat8x3_t svreinterpret_mf8_u64_x3(svuint64x3_t op); | ||
| 1554 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x3))) | ||
| 1555 | svmfloat8x3_t svreinterpret_mf8_f16_x3(svfloat16x3_t op); | ||
| 1556 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x3))) | ||
| 1557 | svmfloat8x3_t svreinterpret_mf8_bf16_x3(svbfloat16x3_t op); | ||
| 1558 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x3))) | ||
| 1559 | svmfloat8x3_t svreinterpret_mf8_f32_x3(svfloat32x3_t op); | ||
| 1560 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x3))) | ||
| 1561 | svmfloat8x3_t svreinterpret_mf8_f64_x3(svfloat64x3_t op); | ||
| 1327 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x3))) | 1562 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x3))) |
| 1328 | svint16x3_t svreinterpret_s16_s8_x3(svint8x3_t op); | 1563 | svint16x3_t svreinterpret_s16_s8_x3(svint8x3_t op); |
| 1329 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x3))) | 1564 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x3))) |
| 1330 | svint16x3_t svreinterpret_s16_u8_x3(svuint8x3_t op); | 1565 | svint16x3_t svreinterpret_s16_u8_x3(svuint8x3_t op); |
| 1566 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x3))) | ||
| 1567 | svint16x3_t svreinterpret_s16_mf8_x3(svmfloat8x3_t op); | ||
| 1331 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x3))) | 1568 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x3))) |
| 1332 | svint16x3_t svreinterpret_s16_s16_x3(svint16x3_t op); | 1569 | svint16x3_t svreinterpret_s16_s16_x3(svint16x3_t op); |
| 1333 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x3))) | 1570 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x3))) |
| ... | @@ -1352,6 +1589,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -1352,6 +1589,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 1352 | svuint16x3_t svreinterpret_u16_s8_x3(svint8x3_t op); | 1589 | svuint16x3_t svreinterpret_u16_s8_x3(svint8x3_t op); |
| 1353 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x3))) | 1590 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x3))) |
| 1354 | svuint16x3_t svreinterpret_u16_u8_x3(svuint8x3_t op); | 1591 | svuint16x3_t svreinterpret_u16_u8_x3(svuint8x3_t op); |
| 1592 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x3))) | ||
| 1593 | svuint16x3_t svreinterpret_u16_mf8_x3(svmfloat8x3_t op); | ||
| 1355 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x3))) | 1594 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x3))) |
| 1356 | svuint16x3_t svreinterpret_u16_s16_x3(svint16x3_t op); | 1595 | svuint16x3_t svreinterpret_u16_s16_x3(svint16x3_t op); |
| 1357 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x3))) | 1596 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x3))) |
| ... | @@ -1376,6 +1615,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -1376,6 +1615,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 1376 | svint32x3_t svreinterpret_s32_s8_x3(svint8x3_t op); | 1615 | svint32x3_t svreinterpret_s32_s8_x3(svint8x3_t op); |
| 1377 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x3))) | 1616 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x3))) |
| 1378 | svint32x3_t svreinterpret_s32_u8_x3(svuint8x3_t op); | 1617 | svint32x3_t svreinterpret_s32_u8_x3(svuint8x3_t op); |
| 1618 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x3))) | ||
| 1619 | svint32x3_t svreinterpret_s32_mf8_x3(svmfloat8x3_t op); | ||
| 1379 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x3))) | 1620 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x3))) |
| 1380 | svint32x3_t svreinterpret_s32_s16_x3(svint16x3_t op); | 1621 | svint32x3_t svreinterpret_s32_s16_x3(svint16x3_t op); |
| 1381 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x3))) | 1622 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x3))) |
| ... | @@ -1400,6 +1641,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -1400,6 +1641,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 1400 | svuint32x3_t svreinterpret_u32_s8_x3(svint8x3_t op); | 1641 | svuint32x3_t svreinterpret_u32_s8_x3(svint8x3_t op); |
| 1401 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x3))) | 1642 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x3))) |
| 1402 | svuint32x3_t svreinterpret_u32_u8_x3(svuint8x3_t op); | 1643 | svuint32x3_t svreinterpret_u32_u8_x3(svuint8x3_t op); |
| 1644 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x3))) | ||
| 1645 | svuint32x3_t svreinterpret_u32_mf8_x3(svmfloat8x3_t op); | ||
| 1403 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x3))) | 1646 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x3))) |
| 1404 | svuint32x3_t svreinterpret_u32_s16_x3(svint16x3_t op); | 1647 | svuint32x3_t svreinterpret_u32_s16_x3(svint16x3_t op); |
| 1405 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x3))) | 1648 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x3))) |
| ... | @@ -1424,6 +1667,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -1424,6 +1667,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 1424 | svint64x3_t svreinterpret_s64_s8_x3(svint8x3_t op); | 1667 | svint64x3_t svreinterpret_s64_s8_x3(svint8x3_t op); |
| 1425 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x3))) | 1668 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x3))) |
| 1426 | svint64x3_t svreinterpret_s64_u8_x3(svuint8x3_t op); | 1669 | svint64x3_t svreinterpret_s64_u8_x3(svuint8x3_t op); |
| 1670 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x3))) | ||
| 1671 | svint64x3_t svreinterpret_s64_mf8_x3(svmfloat8x3_t op); | ||
| 1427 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x3))) | 1672 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x3))) |
| 1428 | svint64x3_t svreinterpret_s64_s16_x3(svint16x3_t op); | 1673 | svint64x3_t svreinterpret_s64_s16_x3(svint16x3_t op); |
| 1429 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x3))) | 1674 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x3))) |
| ... | @@ -1448,6 +1693,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -1448,6 +1693,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 1448 | svuint64x3_t svreinterpret_u64_s8_x3(svint8x3_t op); | 1693 | svuint64x3_t svreinterpret_u64_s8_x3(svint8x3_t op); |
| 1449 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x3))) | 1694 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x3))) |
| 1450 | svuint64x3_t svreinterpret_u64_u8_x3(svuint8x3_t op); | 1695 | svuint64x3_t svreinterpret_u64_u8_x3(svuint8x3_t op); |
| 1696 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x3))) | ||
| 1697 | svuint64x3_t svreinterpret_u64_mf8_x3(svmfloat8x3_t op); | ||
| 1451 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x3))) | 1698 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x3))) |
| 1452 | svuint64x3_t svreinterpret_u64_s16_x3(svint16x3_t op); | 1699 | svuint64x3_t svreinterpret_u64_s16_x3(svint16x3_t op); |
| 1453 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x3))) | 1700 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x3))) |
| ... | @@ -1472,6 +1719,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -1472,6 +1719,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 1472 | svfloat16x3_t svreinterpret_f16_s8_x3(svint8x3_t op); | 1719 | svfloat16x3_t svreinterpret_f16_s8_x3(svint8x3_t op); |
| 1473 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x3))) | 1720 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x3))) |
| 1474 | svfloat16x3_t svreinterpret_f16_u8_x3(svuint8x3_t op); | 1721 | svfloat16x3_t svreinterpret_f16_u8_x3(svuint8x3_t op); |
| 1722 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x3))) | ||
| 1723 | svfloat16x3_t svreinterpret_f16_mf8_x3(svmfloat8x3_t op); | ||
| 1475 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x3))) | 1724 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x3))) |
| 1476 | svfloat16x3_t svreinterpret_f16_s16_x3(svint16x3_t op); | 1725 | svfloat16x3_t svreinterpret_f16_s16_x3(svint16x3_t op); |
| 1477 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x3))) | 1726 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x3))) |
| ... | @@ -1496,6 +1745,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -1496,6 +1745,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 1496 | svbfloat16x3_t svreinterpret_bf16_s8_x3(svint8x3_t op); | 1745 | svbfloat16x3_t svreinterpret_bf16_s8_x3(svint8x3_t op); |
| 1497 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x3))) | 1746 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x3))) |
| 1498 | svbfloat16x3_t svreinterpret_bf16_u8_x3(svuint8x3_t op); | 1747 | svbfloat16x3_t svreinterpret_bf16_u8_x3(svuint8x3_t op); |
| 1748 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x3))) | ||
| 1749 | svbfloat16x3_t svreinterpret_bf16_mf8_x3(svmfloat8x3_t op); | ||
| 1499 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x3))) | 1750 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x3))) |
| 1500 | svbfloat16x3_t svreinterpret_bf16_s16_x3(svint16x3_t op); | 1751 | svbfloat16x3_t svreinterpret_bf16_s16_x3(svint16x3_t op); |
| 1501 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x3))) | 1752 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x3))) |
| ... | @@ -1520,6 +1771,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -1520,6 +1771,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 1520 | svfloat32x3_t svreinterpret_f32_s8_x3(svint8x3_t op); | 1771 | svfloat32x3_t svreinterpret_f32_s8_x3(svint8x3_t op); |
| 1521 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x3))) | 1772 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x3))) |
| 1522 | svfloat32x3_t svreinterpret_f32_u8_x3(svuint8x3_t op); | 1773 | svfloat32x3_t svreinterpret_f32_u8_x3(svuint8x3_t op); |
| 1774 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x3))) | ||
| 1775 | svfloat32x3_t svreinterpret_f32_mf8_x3(svmfloat8x3_t op); | ||
| 1523 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x3))) | 1776 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x3))) |
| 1524 | svfloat32x3_t svreinterpret_f32_s16_x3(svint16x3_t op); | 1777 | svfloat32x3_t svreinterpret_f32_s16_x3(svint16x3_t op); |
| 1525 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x3))) | 1778 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x3))) |
| ... | @@ -1544,6 +1797,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -1544,6 +1797,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 1544 | svfloat64x3_t svreinterpret_f64_s8_x3(svint8x3_t op); | 1797 | svfloat64x3_t svreinterpret_f64_s8_x3(svint8x3_t op); |
| 1545 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x3))) | 1798 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x3))) |
| 1546 | svfloat64x3_t svreinterpret_f64_u8_x3(svuint8x3_t op); | 1799 | svfloat64x3_t svreinterpret_f64_u8_x3(svuint8x3_t op); |
| 1800 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x3))) | ||
| 1801 | svfloat64x3_t svreinterpret_f64_mf8_x3(svmfloat8x3_t op); | ||
| 1547 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x3))) | 1802 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x3))) |
| 1548 | svfloat64x3_t svreinterpret_f64_s16_x3(svint16x3_t op); | 1803 | svfloat64x3_t svreinterpret_f64_s16_x3(svint16x3_t op); |
| 1549 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x3))) | 1804 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x3))) |
| ... | @@ -1568,6 +1823,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -1568,6 +1823,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 1568 | svint8x3_t svreinterpret_s8(svint8x3_t op); | 1823 | svint8x3_t svreinterpret_s8(svint8x3_t op); |
| 1569 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x3))) | 1824 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x3))) |
| 1570 | svint8x3_t svreinterpret_s8(svuint8x3_t op); | 1825 | svint8x3_t svreinterpret_s8(svuint8x3_t op); |
| 1826 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x3))) | ||
| 1827 | svint8x3_t svreinterpret_s8(svmfloat8x3_t op); | ||
| 1571 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x3))) | 1828 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x3))) |
| 1572 | svint8x3_t svreinterpret_s8(svint16x3_t op); | 1829 | svint8x3_t svreinterpret_s8(svint16x3_t op); |
| 1573 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x3))) | 1830 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x3))) |
| ... | @@ -1592,6 +1849,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -1592,6 +1849,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 1592 | svuint8x3_t svreinterpret_u8(svint8x3_t op); | 1849 | svuint8x3_t svreinterpret_u8(svint8x3_t op); |
| 1593 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x3))) | 1850 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x3))) |
| 1594 | svuint8x3_t svreinterpret_u8(svuint8x3_t op); | 1851 | svuint8x3_t svreinterpret_u8(svuint8x3_t op); |
| 1852 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x3))) | ||
| 1853 | svuint8x3_t svreinterpret_u8(svmfloat8x3_t op); | ||
| 1595 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x3))) | 1854 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x3))) |
| 1596 | svuint8x3_t svreinterpret_u8(svint16x3_t op); | 1855 | svuint8x3_t svreinterpret_u8(svint16x3_t op); |
| 1597 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x3))) | 1856 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x3))) |
| ... | @@ -1612,10 +1871,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -1612,10 +1871,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 1612 | svuint8x3_t svreinterpret_u8(svfloat32x3_t op); | 1871 | svuint8x3_t svreinterpret_u8(svfloat32x3_t op); |
| 1613 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x3))) | 1872 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x3))) |
| 1614 | svuint8x3_t svreinterpret_u8(svfloat64x3_t op); | 1873 | svuint8x3_t svreinterpret_u8(svfloat64x3_t op); |
| 1874 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x3))) | ||
| 1875 | svmfloat8x3_t svreinterpret_mf8(svint8x3_t op); | ||
| 1876 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x3))) | ||
| 1877 | svmfloat8x3_t svreinterpret_mf8(svuint8x3_t op); | ||
| 1878 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x3))) | ||
| 1879 | svmfloat8x3_t svreinterpret_mf8(svmfloat8x3_t op); | ||
| 1880 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x3))) | ||
| 1881 | svmfloat8x3_t svreinterpret_mf8(svint16x3_t op); | ||
| 1882 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x3))) | ||
| 1883 | svmfloat8x3_t svreinterpret_mf8(svuint16x3_t op); | ||
| 1884 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x3))) | ||
| 1885 | svmfloat8x3_t svreinterpret_mf8(svint32x3_t op); | ||
| 1886 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x3))) | ||
| 1887 | svmfloat8x3_t svreinterpret_mf8(svuint32x3_t op); | ||
| 1888 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x3))) | ||
| 1889 | svmfloat8x3_t svreinterpret_mf8(svint64x3_t op); | ||
| 1890 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x3))) | ||
| 1891 | svmfloat8x3_t svreinterpret_mf8(svuint64x3_t op); | ||
| 1892 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x3))) | ||
| 1893 | svmfloat8x3_t svreinterpret_mf8(svfloat16x3_t op); | ||
| 1894 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x3))) | ||
| 1895 | svmfloat8x3_t svreinterpret_mf8(svbfloat16x3_t op); | ||
| 1896 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x3))) | ||
| 1897 | svmfloat8x3_t svreinterpret_mf8(svfloat32x3_t op); | ||
| 1898 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x3))) | ||
| 1899 | svmfloat8x3_t svreinterpret_mf8(svfloat64x3_t op); | ||
| 1615 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x3))) | 1900 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x3))) |
| 1616 | svint16x3_t svreinterpret_s16(svint8x3_t op); | 1901 | svint16x3_t svreinterpret_s16(svint8x3_t op); |
| 1617 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x3))) | 1902 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x3))) |
| 1618 | svint16x3_t svreinterpret_s16(svuint8x3_t op); | 1903 | svint16x3_t svreinterpret_s16(svuint8x3_t op); |
| 1904 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x3))) | ||
| 1905 | svint16x3_t svreinterpret_s16(svmfloat8x3_t op); | ||
| 1619 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x3))) | 1906 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x3))) |
| 1620 | svint16x3_t svreinterpret_s16(svint16x3_t op); | 1907 | svint16x3_t svreinterpret_s16(svint16x3_t op); |
| 1621 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x3))) | 1908 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x3))) |
| ... | @@ -1640,6 +1927,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -1640,6 +1927,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 1640 | svuint16x3_t svreinterpret_u16(svint8x3_t op); | 1927 | svuint16x3_t svreinterpret_u16(svint8x3_t op); |
| 1641 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x3))) | 1928 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x3))) |
| 1642 | svuint16x3_t svreinterpret_u16(svuint8x3_t op); | 1929 | svuint16x3_t svreinterpret_u16(svuint8x3_t op); |
| 1930 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x3))) | ||
| 1931 | svuint16x3_t svreinterpret_u16(svmfloat8x3_t op); | ||
| 1643 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x3))) | 1932 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x3))) |
| 1644 | svuint16x3_t svreinterpret_u16(svint16x3_t op); | 1933 | svuint16x3_t svreinterpret_u16(svint16x3_t op); |
| 1645 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x3))) | 1934 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x3))) |
| ... | @@ -1664,6 +1953,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -1664,6 +1953,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 1664 | svint32x3_t svreinterpret_s32(svint8x3_t op); | 1953 | svint32x3_t svreinterpret_s32(svint8x3_t op); |
| 1665 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x3))) | 1954 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x3))) |
| 1666 | svint32x3_t svreinterpret_s32(svuint8x3_t op); | 1955 | svint32x3_t svreinterpret_s32(svuint8x3_t op); |
| 1956 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x3))) | ||
| 1957 | svint32x3_t svreinterpret_s32(svmfloat8x3_t op); | ||
| 1667 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x3))) | 1958 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x3))) |
| 1668 | svint32x3_t svreinterpret_s32(svint16x3_t op); | 1959 | svint32x3_t svreinterpret_s32(svint16x3_t op); |
| 1669 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x3))) | 1960 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x3))) |
| ... | @@ -1688,6 +1979,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -1688,6 +1979,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 1688 | svuint32x3_t svreinterpret_u32(svint8x3_t op); | 1979 | svuint32x3_t svreinterpret_u32(svint8x3_t op); |
| 1689 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x3))) | 1980 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x3))) |
| 1690 | svuint32x3_t svreinterpret_u32(svuint8x3_t op); | 1981 | svuint32x3_t svreinterpret_u32(svuint8x3_t op); |
| 1982 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x3))) | ||
| 1983 | svuint32x3_t svreinterpret_u32(svmfloat8x3_t op); | ||
| 1691 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x3))) | 1984 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x3))) |
| 1692 | svuint32x3_t svreinterpret_u32(svint16x3_t op); | 1985 | svuint32x3_t svreinterpret_u32(svint16x3_t op); |
| 1693 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x3))) | 1986 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x3))) |
| ... | @@ -1712,6 +2005,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -1712,6 +2005,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 1712 | svint64x3_t svreinterpret_s64(svint8x3_t op); | 2005 | svint64x3_t svreinterpret_s64(svint8x3_t op); |
| 1713 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x3))) | 2006 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x3))) |
| 1714 | svint64x3_t svreinterpret_s64(svuint8x3_t op); | 2007 | svint64x3_t svreinterpret_s64(svuint8x3_t op); |
| 2008 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x3))) | ||
| 2009 | svint64x3_t svreinterpret_s64(svmfloat8x3_t op); | ||
| 1715 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x3))) | 2010 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x3))) |
| 1716 | svint64x3_t svreinterpret_s64(svint16x3_t op); | 2011 | svint64x3_t svreinterpret_s64(svint16x3_t op); |
| 1717 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x3))) | 2012 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x3))) |
| ... | @@ -1736,6 +2031,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -1736,6 +2031,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 1736 | svuint64x3_t svreinterpret_u64(svint8x3_t op); | 2031 | svuint64x3_t svreinterpret_u64(svint8x3_t op); |
| 1737 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x3))) | 2032 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x3))) |
| 1738 | svuint64x3_t svreinterpret_u64(svuint8x3_t op); | 2033 | svuint64x3_t svreinterpret_u64(svuint8x3_t op); |
| 2034 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x3))) | ||
| 2035 | svuint64x3_t svreinterpret_u64(svmfloat8x3_t op); | ||
| 1739 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x3))) | 2036 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x3))) |
| 1740 | svuint64x3_t svreinterpret_u64(svint16x3_t op); | 2037 | svuint64x3_t svreinterpret_u64(svint16x3_t op); |
| 1741 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x3))) | 2038 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x3))) |
| ... | @@ -1760,6 +2057,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -1760,6 +2057,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 1760 | svfloat16x3_t svreinterpret_f16(svint8x3_t op); | 2057 | svfloat16x3_t svreinterpret_f16(svint8x3_t op); |
| 1761 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x3))) | 2058 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x3))) |
| 1762 | svfloat16x3_t svreinterpret_f16(svuint8x3_t op); | 2059 | svfloat16x3_t svreinterpret_f16(svuint8x3_t op); |
| 2060 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x3))) | ||
| 2061 | svfloat16x3_t svreinterpret_f16(svmfloat8x3_t op); | ||
| 1763 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x3))) | 2062 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x3))) |
| 1764 | svfloat16x3_t svreinterpret_f16(svint16x3_t op); | 2063 | svfloat16x3_t svreinterpret_f16(svint16x3_t op); |
| 1765 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x3))) | 2064 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x3))) |
| ... | @@ -1784,6 +2083,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -1784,6 +2083,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 1784 | svbfloat16x3_t svreinterpret_bf16(svint8x3_t op); | 2083 | svbfloat16x3_t svreinterpret_bf16(svint8x3_t op); |
| 1785 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x3))) | 2084 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x3))) |
| 1786 | svbfloat16x3_t svreinterpret_bf16(svuint8x3_t op); | 2085 | svbfloat16x3_t svreinterpret_bf16(svuint8x3_t op); |
| 2086 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x3))) | ||
| 2087 | svbfloat16x3_t svreinterpret_bf16(svmfloat8x3_t op); | ||
| 1787 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x3))) | 2088 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x3))) |
| 1788 | svbfloat16x3_t svreinterpret_bf16(svint16x3_t op); | 2089 | svbfloat16x3_t svreinterpret_bf16(svint16x3_t op); |
| 1789 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x3))) | 2090 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x3))) |
| ... | @@ -1808,6 +2109,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -1808,6 +2109,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 1808 | svfloat32x3_t svreinterpret_f32(svint8x3_t op); | 2109 | svfloat32x3_t svreinterpret_f32(svint8x3_t op); |
| 1809 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x3))) | 2110 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x3))) |
| 1810 | svfloat32x3_t svreinterpret_f32(svuint8x3_t op); | 2111 | svfloat32x3_t svreinterpret_f32(svuint8x3_t op); |
| 2112 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x3))) | ||
| 2113 | svfloat32x3_t svreinterpret_f32(svmfloat8x3_t op); | ||
| 1811 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x3))) | 2114 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x3))) |
| 1812 | svfloat32x3_t svreinterpret_f32(svint16x3_t op); | 2115 | svfloat32x3_t svreinterpret_f32(svint16x3_t op); |
| 1813 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x3))) | 2116 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x3))) |
| ... | @@ -1832,6 +2135,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -1832,6 +2135,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 1832 | svfloat64x3_t svreinterpret_f64(svint8x3_t op); | 2135 | svfloat64x3_t svreinterpret_f64(svint8x3_t op); |
| 1833 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x3))) | 2136 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x3))) |
| 1834 | svfloat64x3_t svreinterpret_f64(svuint8x3_t op); | 2137 | svfloat64x3_t svreinterpret_f64(svuint8x3_t op); |
| 2138 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x3))) | ||
| 2139 | svfloat64x3_t svreinterpret_f64(svmfloat8x3_t op); | ||
| 1835 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x3))) | 2140 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x3))) |
| 1836 | svfloat64x3_t svreinterpret_f64(svint16x3_t op); | 2141 | svfloat64x3_t svreinterpret_f64(svint16x3_t op); |
| 1837 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x3))) | 2142 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x3))) |
| ... | @@ -1856,6 +2161,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -1856,6 +2161,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 1856 | svint8x4_t svreinterpret_s8_s8_x4(svint8x4_t op); | 2161 | svint8x4_t svreinterpret_s8_s8_x4(svint8x4_t op); |
| 1857 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x4))) | 2162 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x4))) |
| 1858 | svint8x4_t svreinterpret_s8_u8_x4(svuint8x4_t op); | 2163 | svint8x4_t svreinterpret_s8_u8_x4(svuint8x4_t op); |
| 2164 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x4))) | ||
| 2165 | svint8x4_t svreinterpret_s8_mf8_x4(svmfloat8x4_t op); | ||
| 1859 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x4))) | 2166 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x4))) |
| 1860 | svint8x4_t svreinterpret_s8_s16_x4(svint16x4_t op); | 2167 | svint8x4_t svreinterpret_s8_s16_x4(svint16x4_t op); |
| 1861 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x4))) | 2168 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x4))) |
| ... | @@ -1880,6 +2187,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -1880,6 +2187,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 1880 | svuint8x4_t svreinterpret_u8_s8_x4(svint8x4_t op); | 2187 | svuint8x4_t svreinterpret_u8_s8_x4(svint8x4_t op); |
| 1881 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x4))) | 2188 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x4))) |
| 1882 | svuint8x4_t svreinterpret_u8_u8_x4(svuint8x4_t op); | 2189 | svuint8x4_t svreinterpret_u8_u8_x4(svuint8x4_t op); |
| 2190 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x4))) | ||
| 2191 | svuint8x4_t svreinterpret_u8_mf8_x4(svmfloat8x4_t op); | ||
| 1883 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x4))) | 2192 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x4))) |
| 1884 | svuint8x4_t svreinterpret_u8_s16_x4(svint16x4_t op); | 2193 | svuint8x4_t svreinterpret_u8_s16_x4(svint16x4_t op); |
| 1885 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x4))) | 2194 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x4))) |
| ... | @@ -1900,10 +2209,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -1900,10 +2209,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 1900 | svuint8x4_t svreinterpret_u8_f32_x4(svfloat32x4_t op); | 2209 | svuint8x4_t svreinterpret_u8_f32_x4(svfloat32x4_t op); |
| 1901 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x4))) | 2210 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x4))) |
| 1902 | svuint8x4_t svreinterpret_u8_f64_x4(svfloat64x4_t op); | 2211 | svuint8x4_t svreinterpret_u8_f64_x4(svfloat64x4_t op); |
| 2212 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x4))) | ||
| 2213 | svmfloat8x4_t svreinterpret_mf8_s8_x4(svint8x4_t op); | ||
| 2214 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x4))) | ||
| 2215 | svmfloat8x4_t svreinterpret_mf8_u8_x4(svuint8x4_t op); | ||
| 2216 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x4))) | ||
| 2217 | svmfloat8x4_t svreinterpret_mf8_mf8_x4(svmfloat8x4_t op); | ||
| 2218 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x4))) | ||
| 2219 | svmfloat8x4_t svreinterpret_mf8_s16_x4(svint16x4_t op); | ||
| 2220 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x4))) | ||
| 2221 | svmfloat8x4_t svreinterpret_mf8_u16_x4(svuint16x4_t op); | ||
| 2222 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x4))) | ||
| 2223 | svmfloat8x4_t svreinterpret_mf8_s32_x4(svint32x4_t op); | ||
| 2224 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x4))) | ||
| 2225 | svmfloat8x4_t svreinterpret_mf8_u32_x4(svuint32x4_t op); | ||
| 2226 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x4))) | ||
| 2227 | svmfloat8x4_t svreinterpret_mf8_s64_x4(svint64x4_t op); | ||
| 2228 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x4))) | ||
| 2229 | svmfloat8x4_t svreinterpret_mf8_u64_x4(svuint64x4_t op); | ||
| 2230 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x4))) | ||
| 2231 | svmfloat8x4_t svreinterpret_mf8_f16_x4(svfloat16x4_t op); | ||
| 2232 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x4))) | ||
| 2233 | svmfloat8x4_t svreinterpret_mf8_bf16_x4(svbfloat16x4_t op); | ||
| 2234 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x4))) | ||
| 2235 | svmfloat8x4_t svreinterpret_mf8_f32_x4(svfloat32x4_t op); | ||
| 2236 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x4))) | ||
| 2237 | svmfloat8x4_t svreinterpret_mf8_f64_x4(svfloat64x4_t op); | ||
| 1903 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x4))) | 2238 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x4))) |
| 1904 | svint16x4_t svreinterpret_s16_s8_x4(svint8x4_t op); | 2239 | svint16x4_t svreinterpret_s16_s8_x4(svint8x4_t op); |
| 1905 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x4))) | 2240 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x4))) |
| 1906 | svint16x4_t svreinterpret_s16_u8_x4(svuint8x4_t op); | 2241 | svint16x4_t svreinterpret_s16_u8_x4(svuint8x4_t op); |
| 2242 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x4))) | ||
| 2243 | svint16x4_t svreinterpret_s16_mf8_x4(svmfloat8x4_t op); | ||
| 1907 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x4))) | 2244 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x4))) |
| 1908 | svint16x4_t svreinterpret_s16_s16_x4(svint16x4_t op); | 2245 | svint16x4_t svreinterpret_s16_s16_x4(svint16x4_t op); |
| 1909 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x4))) | 2246 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x4))) |
| ... | @@ -1928,6 +2265,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -1928,6 +2265,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 1928 | svuint16x4_t svreinterpret_u16_s8_x4(svint8x4_t op); | 2265 | svuint16x4_t svreinterpret_u16_s8_x4(svint8x4_t op); |
| 1929 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x4))) | 2266 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x4))) |
| 1930 | svuint16x4_t svreinterpret_u16_u8_x4(svuint8x4_t op); | 2267 | svuint16x4_t svreinterpret_u16_u8_x4(svuint8x4_t op); |
| 2268 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x4))) | ||
| 2269 | svuint16x4_t svreinterpret_u16_mf8_x4(svmfloat8x4_t op); | ||
| 1931 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x4))) | 2270 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x4))) |
| 1932 | svuint16x4_t svreinterpret_u16_s16_x4(svint16x4_t op); | 2271 | svuint16x4_t svreinterpret_u16_s16_x4(svint16x4_t op); |
| 1933 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x4))) | 2272 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x4))) |
| ... | @@ -1952,6 +2291,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -1952,6 +2291,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 1952 | svint32x4_t svreinterpret_s32_s8_x4(svint8x4_t op); | 2291 | svint32x4_t svreinterpret_s32_s8_x4(svint8x4_t op); |
| 1953 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x4))) | 2292 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x4))) |
| 1954 | svint32x4_t svreinterpret_s32_u8_x4(svuint8x4_t op); | 2293 | svint32x4_t svreinterpret_s32_u8_x4(svuint8x4_t op); |
| 2294 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x4))) | ||
| 2295 | svint32x4_t svreinterpret_s32_mf8_x4(svmfloat8x4_t op); | ||
| 1955 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x4))) | 2296 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x4))) |
| 1956 | svint32x4_t svreinterpret_s32_s16_x4(svint16x4_t op); | 2297 | svint32x4_t svreinterpret_s32_s16_x4(svint16x4_t op); |
| 1957 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x4))) | 2298 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x4))) |
| ... | @@ -1976,6 +2317,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -1976,6 +2317,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 1976 | svuint32x4_t svreinterpret_u32_s8_x4(svint8x4_t op); | 2317 | svuint32x4_t svreinterpret_u32_s8_x4(svint8x4_t op); |
| 1977 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x4))) | 2318 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x4))) |
| 1978 | svuint32x4_t svreinterpret_u32_u8_x4(svuint8x4_t op); | 2319 | svuint32x4_t svreinterpret_u32_u8_x4(svuint8x4_t op); |
| 2320 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x4))) | ||
| 2321 | svuint32x4_t svreinterpret_u32_mf8_x4(svmfloat8x4_t op); | ||
| 1979 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x4))) | 2322 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x4))) |
| 1980 | svuint32x4_t svreinterpret_u32_s16_x4(svint16x4_t op); | 2323 | svuint32x4_t svreinterpret_u32_s16_x4(svint16x4_t op); |
| 1981 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x4))) | 2324 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x4))) |
| ... | @@ -2000,6 +2343,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -2000,6 +2343,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 2000 | svint64x4_t svreinterpret_s64_s8_x4(svint8x4_t op); | 2343 | svint64x4_t svreinterpret_s64_s8_x4(svint8x4_t op); |
| 2001 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x4))) | 2344 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x4))) |
| 2002 | svint64x4_t svreinterpret_s64_u8_x4(svuint8x4_t op); | 2345 | svint64x4_t svreinterpret_s64_u8_x4(svuint8x4_t op); |
| 2346 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x4))) | ||
| 2347 | svint64x4_t svreinterpret_s64_mf8_x4(svmfloat8x4_t op); | ||
| 2003 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x4))) | 2348 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x4))) |
| 2004 | svint64x4_t svreinterpret_s64_s16_x4(svint16x4_t op); | 2349 | svint64x4_t svreinterpret_s64_s16_x4(svint16x4_t op); |
| 2005 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x4))) | 2350 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x4))) |
| ... | @@ -2024,6 +2369,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -2024,6 +2369,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 2024 | svuint64x4_t svreinterpret_u64_s8_x4(svint8x4_t op); | 2369 | svuint64x4_t svreinterpret_u64_s8_x4(svint8x4_t op); |
| 2025 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x4))) | 2370 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x4))) |
| 2026 | svuint64x4_t svreinterpret_u64_u8_x4(svuint8x4_t op); | 2371 | svuint64x4_t svreinterpret_u64_u8_x4(svuint8x4_t op); |
| 2372 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x4))) | ||
| 2373 | svuint64x4_t svreinterpret_u64_mf8_x4(svmfloat8x4_t op); | ||
| 2027 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x4))) | 2374 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x4))) |
| 2028 | svuint64x4_t svreinterpret_u64_s16_x4(svint16x4_t op); | 2375 | svuint64x4_t svreinterpret_u64_s16_x4(svint16x4_t op); |
| 2029 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x4))) | 2376 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x4))) |
| ... | @@ -2048,6 +2395,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -2048,6 +2395,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 2048 | svfloat16x4_t svreinterpret_f16_s8_x4(svint8x4_t op); | 2395 | svfloat16x4_t svreinterpret_f16_s8_x4(svint8x4_t op); |
| 2049 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x4))) | 2396 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x4))) |
| 2050 | svfloat16x4_t svreinterpret_f16_u8_x4(svuint8x4_t op); | 2397 | svfloat16x4_t svreinterpret_f16_u8_x4(svuint8x4_t op); |
| 2398 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x4))) | ||
| 2399 | svfloat16x4_t svreinterpret_f16_mf8_x4(svmfloat8x4_t op); | ||
| 2051 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x4))) | 2400 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x4))) |
| 2052 | svfloat16x4_t svreinterpret_f16_s16_x4(svint16x4_t op); | 2401 | svfloat16x4_t svreinterpret_f16_s16_x4(svint16x4_t op); |
| 2053 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x4))) | 2402 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x4))) |
| ... | @@ -2072,6 +2421,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -2072,6 +2421,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 2072 | svbfloat16x4_t svreinterpret_bf16_s8_x4(svint8x4_t op); | 2421 | svbfloat16x4_t svreinterpret_bf16_s8_x4(svint8x4_t op); |
| 2073 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x4))) | 2422 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x4))) |
| 2074 | svbfloat16x4_t svreinterpret_bf16_u8_x4(svuint8x4_t op); | 2423 | svbfloat16x4_t svreinterpret_bf16_u8_x4(svuint8x4_t op); |
| 2424 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x4))) | ||
| 2425 | svbfloat16x4_t svreinterpret_bf16_mf8_x4(svmfloat8x4_t op); | ||
| 2075 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x4))) | 2426 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x4))) |
| 2076 | svbfloat16x4_t svreinterpret_bf16_s16_x4(svint16x4_t op); | 2427 | svbfloat16x4_t svreinterpret_bf16_s16_x4(svint16x4_t op); |
| 2077 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x4))) | 2428 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x4))) |
| ... | @@ -2096,6 +2447,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -2096,6 +2447,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 2096 | svfloat32x4_t svreinterpret_f32_s8_x4(svint8x4_t op); | 2447 | svfloat32x4_t svreinterpret_f32_s8_x4(svint8x4_t op); |
| 2097 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x4))) | 2448 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x4))) |
| 2098 | svfloat32x4_t svreinterpret_f32_u8_x4(svuint8x4_t op); | 2449 | svfloat32x4_t svreinterpret_f32_u8_x4(svuint8x4_t op); |
| 2450 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x4))) | ||
| 2451 | svfloat32x4_t svreinterpret_f32_mf8_x4(svmfloat8x4_t op); | ||
| 2099 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x4))) | 2452 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x4))) |
| 2100 | svfloat32x4_t svreinterpret_f32_s16_x4(svint16x4_t op); | 2453 | svfloat32x4_t svreinterpret_f32_s16_x4(svint16x4_t op); |
| 2101 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x4))) | 2454 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x4))) |
| ... | @@ -2120,6 +2473,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -2120,6 +2473,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 2120 | svfloat64x4_t svreinterpret_f64_s8_x4(svint8x4_t op); | 2473 | svfloat64x4_t svreinterpret_f64_s8_x4(svint8x4_t op); |
| 2121 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x4))) | 2474 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x4))) |
| 2122 | svfloat64x4_t svreinterpret_f64_u8_x4(svuint8x4_t op); | 2475 | svfloat64x4_t svreinterpret_f64_u8_x4(svuint8x4_t op); |
| 2476 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x4))) | ||
| 2477 | svfloat64x4_t svreinterpret_f64_mf8_x4(svmfloat8x4_t op); | ||
| 2123 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x4))) | 2478 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x4))) |
| 2124 | svfloat64x4_t svreinterpret_f64_s16_x4(svint16x4_t op); | 2479 | svfloat64x4_t svreinterpret_f64_s16_x4(svint16x4_t op); |
| 2125 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x4))) | 2480 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x4))) |
| ... | @@ -2144,6 +2499,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x | ... | @@ -2144,6 +2499,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s8_x |
| 2144 | svint8x4_t svreinterpret_s8(svint8x4_t op); | 2499 | svint8x4_t svreinterpret_s8(svint8x4_t op); |
| 2145 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x4))) | 2500 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u8_x4))) |
| 2146 | svint8x4_t svreinterpret_s8(svuint8x4_t op); | 2501 | svint8x4_t svreinterpret_s8(svuint8x4_t op); |
| 2502 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_mf8_x4))) | ||
| 2503 | svint8x4_t svreinterpret_s8(svmfloat8x4_t op); | ||
| 2147 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x4))) | 2504 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_s16_x4))) |
| 2148 | svint8x4_t svreinterpret_s8(svint16x4_t op); | 2505 | svint8x4_t svreinterpret_s8(svint16x4_t op); |
| 2149 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x4))) | 2506 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s8_u16_x4))) |
| ... | @@ -2168,6 +2525,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x | ... | @@ -2168,6 +2525,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s8_x |
| 2168 | svuint8x4_t svreinterpret_u8(svint8x4_t op); | 2525 | svuint8x4_t svreinterpret_u8(svint8x4_t op); |
| 2169 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x4))) | 2526 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u8_x4))) |
| 2170 | svuint8x4_t svreinterpret_u8(svuint8x4_t op); | 2527 | svuint8x4_t svreinterpret_u8(svuint8x4_t op); |
| 2528 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_mf8_x4))) | ||
| 2529 | svuint8x4_t svreinterpret_u8(svmfloat8x4_t op); | ||
| 2171 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x4))) | 2530 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_s16_x4))) |
| 2172 | svuint8x4_t svreinterpret_u8(svint16x4_t op); | 2531 | svuint8x4_t svreinterpret_u8(svint16x4_t op); |
| 2173 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x4))) | 2532 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_u16_x4))) |
| ... | @@ -2188,10 +2547,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ | ... | @@ -2188,10 +2547,38 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f32_ |
| 2188 | svuint8x4_t svreinterpret_u8(svfloat32x4_t op); | 2547 | svuint8x4_t svreinterpret_u8(svfloat32x4_t op); |
| 2189 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x4))) | 2548 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u8_f64_x4))) |
| 2190 | svuint8x4_t svreinterpret_u8(svfloat64x4_t op); | 2549 | svuint8x4_t svreinterpret_u8(svfloat64x4_t op); |
| 2550 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s8_x4))) | ||
| 2551 | svmfloat8x4_t svreinterpret_mf8(svint8x4_t op); | ||
| 2552 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u8_x4))) | ||
| 2553 | svmfloat8x4_t svreinterpret_mf8(svuint8x4_t op); | ||
| 2554 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_mf8_x4))) | ||
| 2555 | svmfloat8x4_t svreinterpret_mf8(svmfloat8x4_t op); | ||
| 2556 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s16_x4))) | ||
| 2557 | svmfloat8x4_t svreinterpret_mf8(svint16x4_t op); | ||
| 2558 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u16_x4))) | ||
| 2559 | svmfloat8x4_t svreinterpret_mf8(svuint16x4_t op); | ||
| 2560 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s32_x4))) | ||
| 2561 | svmfloat8x4_t svreinterpret_mf8(svint32x4_t op); | ||
| 2562 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u32_x4))) | ||
| 2563 | svmfloat8x4_t svreinterpret_mf8(svuint32x4_t op); | ||
| 2564 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_s64_x4))) | ||
| 2565 | svmfloat8x4_t svreinterpret_mf8(svint64x4_t op); | ||
| 2566 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_u64_x4))) | ||
| 2567 | svmfloat8x4_t svreinterpret_mf8(svuint64x4_t op); | ||
| 2568 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f16_x4))) | ||
| 2569 | svmfloat8x4_t svreinterpret_mf8(svfloat16x4_t op); | ||
| 2570 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_bf16_x4))) | ||
| 2571 | svmfloat8x4_t svreinterpret_mf8(svbfloat16x4_t op); | ||
| 2572 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f32_x4))) | ||
| 2573 | svmfloat8x4_t svreinterpret_mf8(svfloat32x4_t op); | ||
| 2574 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_mf8_f64_x4))) | ||
| 2575 | svmfloat8x4_t svreinterpret_mf8(svfloat64x4_t op); | ||
| 2191 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x4))) | 2576 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s8_x4))) |
| 2192 | svint16x4_t svreinterpret_s16(svint8x4_t op); | 2577 | svint16x4_t svreinterpret_s16(svint8x4_t op); |
| 2193 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x4))) | 2578 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u8_x4))) |
| 2194 | svint16x4_t svreinterpret_s16(svuint8x4_t op); | 2579 | svint16x4_t svreinterpret_s16(svuint8x4_t op); |
| 2580 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_mf8_x4))) | ||
| 2581 | svint16x4_t svreinterpret_s16(svmfloat8x4_t op); | ||
| 2195 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x4))) | 2582 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_s16_x4))) |
| 2196 | svint16x4_t svreinterpret_s16(svint16x4_t op); | 2583 | svint16x4_t svreinterpret_s16(svint16x4_t op); |
| 2197 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x4))) | 2584 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s16_u16_x4))) |
| ... | @@ -2216,6 +2603,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ | ... | @@ -2216,6 +2603,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s8_ |
| 2216 | svuint16x4_t svreinterpret_u16(svint8x4_t op); | 2603 | svuint16x4_t svreinterpret_u16(svint8x4_t op); |
| 2217 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x4))) | 2604 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u8_x4))) |
| 2218 | svuint16x4_t svreinterpret_u16(svuint8x4_t op); | 2605 | svuint16x4_t svreinterpret_u16(svuint8x4_t op); |
| 2606 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_mf8_x4))) | ||
| 2607 | svuint16x4_t svreinterpret_u16(svmfloat8x4_t op); | ||
| 2219 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x4))) | 2608 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_s16_x4))) |
| 2220 | svuint16x4_t svreinterpret_u16(svint16x4_t op); | 2609 | svuint16x4_t svreinterpret_u16(svint16x4_t op); |
| 2221 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x4))) | 2610 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u16_u16_x4))) |
| ... | @@ -2240,6 +2629,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ | ... | @@ -2240,6 +2629,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s8_ |
| 2240 | svint32x4_t svreinterpret_s32(svint8x4_t op); | 2629 | svint32x4_t svreinterpret_s32(svint8x4_t op); |
| 2241 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x4))) | 2630 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u8_x4))) |
| 2242 | svint32x4_t svreinterpret_s32(svuint8x4_t op); | 2631 | svint32x4_t svreinterpret_s32(svuint8x4_t op); |
| 2632 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_mf8_x4))) | ||
| 2633 | svint32x4_t svreinterpret_s32(svmfloat8x4_t op); | ||
| 2243 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x4))) | 2634 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_s16_x4))) |
| 2244 | svint32x4_t svreinterpret_s32(svint16x4_t op); | 2635 | svint32x4_t svreinterpret_s32(svint16x4_t op); |
| 2245 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x4))) | 2636 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s32_u16_x4))) |
| ... | @@ -2264,6 +2655,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ | ... | @@ -2264,6 +2655,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s8_ |
| 2264 | svuint32x4_t svreinterpret_u32(svint8x4_t op); | 2655 | svuint32x4_t svreinterpret_u32(svint8x4_t op); |
| 2265 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x4))) | 2656 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u8_x4))) |
| 2266 | svuint32x4_t svreinterpret_u32(svuint8x4_t op); | 2657 | svuint32x4_t svreinterpret_u32(svuint8x4_t op); |
| 2658 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_mf8_x4))) | ||
| 2659 | svuint32x4_t svreinterpret_u32(svmfloat8x4_t op); | ||
| 2267 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x4))) | 2660 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_s16_x4))) |
| 2268 | svuint32x4_t svreinterpret_u32(svint16x4_t op); | 2661 | svuint32x4_t svreinterpret_u32(svint16x4_t op); |
| 2269 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x4))) | 2662 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u32_u16_x4))) |
| ... | @@ -2288,6 +2681,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ | ... | @@ -2288,6 +2681,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s8_ |
| 2288 | svint64x4_t svreinterpret_s64(svint8x4_t op); | 2681 | svint64x4_t svreinterpret_s64(svint8x4_t op); |
| 2289 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x4))) | 2682 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u8_x4))) |
| 2290 | svint64x4_t svreinterpret_s64(svuint8x4_t op); | 2683 | svint64x4_t svreinterpret_s64(svuint8x4_t op); |
| 2684 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_mf8_x4))) | ||
| 2685 | svint64x4_t svreinterpret_s64(svmfloat8x4_t op); | ||
| 2291 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x4))) | 2686 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_s16_x4))) |
| 2292 | svint64x4_t svreinterpret_s64(svint16x4_t op); | 2687 | svint64x4_t svreinterpret_s64(svint16x4_t op); |
| 2293 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x4))) | 2688 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_s64_u16_x4))) |
| ... | @@ -2312,6 +2707,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ | ... | @@ -2312,6 +2707,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s8_ |
| 2312 | svuint64x4_t svreinterpret_u64(svint8x4_t op); | 2707 | svuint64x4_t svreinterpret_u64(svint8x4_t op); |
| 2313 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x4))) | 2708 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u8_x4))) |
| 2314 | svuint64x4_t svreinterpret_u64(svuint8x4_t op); | 2709 | svuint64x4_t svreinterpret_u64(svuint8x4_t op); |
| 2710 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_mf8_x4))) | ||
| 2711 | svuint64x4_t svreinterpret_u64(svmfloat8x4_t op); | ||
| 2315 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x4))) | 2712 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_s16_x4))) |
| 2316 | svuint64x4_t svreinterpret_u64(svint16x4_t op); | 2713 | svuint64x4_t svreinterpret_u64(svint16x4_t op); |
| 2317 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x4))) | 2714 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_u64_u16_x4))) |
| ... | @@ -2336,6 +2733,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ | ... | @@ -2336,6 +2733,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s8_ |
| 2336 | svfloat16x4_t svreinterpret_f16(svint8x4_t op); | 2733 | svfloat16x4_t svreinterpret_f16(svint8x4_t op); |
| 2337 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x4))) | 2734 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u8_x4))) |
| 2338 | svfloat16x4_t svreinterpret_f16(svuint8x4_t op); | 2735 | svfloat16x4_t svreinterpret_f16(svuint8x4_t op); |
| 2736 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_mf8_x4))) | ||
| 2737 | svfloat16x4_t svreinterpret_f16(svmfloat8x4_t op); | ||
| 2339 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x4))) | 2738 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_s16_x4))) |
| 2340 | svfloat16x4_t svreinterpret_f16(svint16x4_t op); | 2739 | svfloat16x4_t svreinterpret_f16(svint16x4_t op); |
| 2341 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x4))) | 2740 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f16_u16_x4))) |
| ... | @@ -2360,6 +2759,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 | ... | @@ -2360,6 +2759,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s8 |
| 2360 | svbfloat16x4_t svreinterpret_bf16(svint8x4_t op); | 2759 | svbfloat16x4_t svreinterpret_bf16(svint8x4_t op); |
| 2361 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x4))) | 2760 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u8_x4))) |
| 2362 | svbfloat16x4_t svreinterpret_bf16(svuint8x4_t op); | 2761 | svbfloat16x4_t svreinterpret_bf16(svuint8x4_t op); |
| 2762 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_mf8_x4))) | ||
| 2763 | svbfloat16x4_t svreinterpret_bf16(svmfloat8x4_t op); | ||
| 2363 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x4))) | 2764 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_s16_x4))) |
| 2364 | svbfloat16x4_t svreinterpret_bf16(svint16x4_t op); | 2765 | svbfloat16x4_t svreinterpret_bf16(svint16x4_t op); |
| 2365 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x4))) | 2766 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_bf16_u16_x4))) |
| ... | @@ -2384,6 +2785,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ | ... | @@ -2384,6 +2785,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s8_ |
| 2384 | svfloat32x4_t svreinterpret_f32(svint8x4_t op); | 2785 | svfloat32x4_t svreinterpret_f32(svint8x4_t op); |
| 2385 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x4))) | 2786 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u8_x4))) |
| 2386 | svfloat32x4_t svreinterpret_f32(svuint8x4_t op); | 2787 | svfloat32x4_t svreinterpret_f32(svuint8x4_t op); |
| 2788 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_mf8_x4))) | ||
| 2789 | svfloat32x4_t svreinterpret_f32(svmfloat8x4_t op); | ||
| 2387 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x4))) | 2790 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_s16_x4))) |
| 2388 | svfloat32x4_t svreinterpret_f32(svint16x4_t op); | 2791 | svfloat32x4_t svreinterpret_f32(svint16x4_t op); |
| 2389 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x4))) | 2792 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f32_u16_x4))) |
| ... | @@ -2408,6 +2811,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ | ... | @@ -2408,6 +2811,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s8_ |
| 2408 | svfloat64x4_t svreinterpret_f64(svint8x4_t op); | 2811 | svfloat64x4_t svreinterpret_f64(svint8x4_t op); |
| 2409 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x4))) | 2812 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u8_x4))) |
| 2410 | svfloat64x4_t svreinterpret_f64(svuint8x4_t op); | 2813 | svfloat64x4_t svreinterpret_f64(svuint8x4_t op); |
| 2814 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_mf8_x4))) | ||
| 2815 | svfloat64x4_t svreinterpret_f64(svmfloat8x4_t op); | ||
| 2411 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x4))) | 2816 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_s16_x4))) |
| 2412 | svfloat64x4_t svreinterpret_f64(svint16x4_t op); | 2817 | svfloat64x4_t svreinterpret_f64(svint16x4_t op); |
| 2413 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x4))) | 2818 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_reinterpret_f64_u16_x4))) |
| ... | @@ -3956,6 +4361,150 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq_s64_x4))) | ... | @@ -3956,6 +4361,150 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq_s64_x4))) |
| 3956 | svint64x4_t svzipq(svint64x4_t); | 4361 | svint64x4_t svzipq(svint64x4_t); |
| 3957 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq_s16_x4))) | 4362 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq_s16_x4))) |
| 3958 | svint16x4_t svzipq(svint16x4_t); | 4363 | svint16x4_t svzipq(svint16x4_t); |
| 4364 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x2))) | ||
| 4365 | svfloat64x2_t svamax_f64_x2(svfloat64x2_t, svfloat64x2_t); | ||
| 4366 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x2))) | ||
| 4367 | svfloat32x2_t svamax_f32_x2(svfloat32x2_t, svfloat32x2_t); | ||
| 4368 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x2))) | ||
| 4369 | svfloat16x2_t svamax_f16_x2(svfloat16x2_t, svfloat16x2_t); | ||
| 4370 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x4))) | ||
| 4371 | svfloat64x4_t svamax_f64_x4(svfloat64x4_t, svfloat64x4_t); | ||
| 4372 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x4))) | ||
| 4373 | svfloat32x4_t svamax_f32_x4(svfloat32x4_t, svfloat32x4_t); | ||
| 4374 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x4))) | ||
| 4375 | svfloat16x4_t svamax_f16_x4(svfloat16x4_t, svfloat16x4_t); | ||
| 4376 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x2))) | ||
| 4377 | svfloat64x2_t svamin_f64_x2(svfloat64x2_t, svfloat64x2_t); | ||
| 4378 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x2))) | ||
| 4379 | svfloat32x2_t svamin_f32_x2(svfloat32x2_t, svfloat32x2_t); | ||
| 4380 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x2))) | ||
| 4381 | svfloat16x2_t svamin_f16_x2(svfloat16x2_t, svfloat16x2_t); | ||
| 4382 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x4))) | ||
| 4383 | svfloat64x4_t svamin_f64_x4(svfloat64x4_t, svfloat64x4_t); | ||
| 4384 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x4))) | ||
| 4385 | svfloat32x4_t svamin_f32_x4(svfloat32x4_t, svfloat32x4_t); | ||
| 4386 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x4))) | ||
| 4387 | svfloat16x4_t svamin_f16_x4(svfloat16x4_t, svfloat16x4_t); | ||
| 4388 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x2))) | ||
| 4389 | svfloat64x2_t svamax(svfloat64x2_t, svfloat64x2_t); | ||
| 4390 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x2))) | ||
| 4391 | svfloat32x2_t svamax(svfloat32x2_t, svfloat32x2_t); | ||
| 4392 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x2))) | ||
| 4393 | svfloat16x2_t svamax(svfloat16x2_t, svfloat16x2_t); | ||
| 4394 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x4))) | ||
| 4395 | svfloat64x4_t svamax(svfloat64x4_t, svfloat64x4_t); | ||
| 4396 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x4))) | ||
| 4397 | svfloat32x4_t svamax(svfloat32x4_t, svfloat32x4_t); | ||
| 4398 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x4))) | ||
| 4399 | svfloat16x4_t svamax(svfloat16x4_t, svfloat16x4_t); | ||
| 4400 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x2))) | ||
| 4401 | svfloat64x2_t svamin(svfloat64x2_t, svfloat64x2_t); | ||
| 4402 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x2))) | ||
| 4403 | svfloat32x2_t svamin(svfloat32x2_t, svfloat32x2_t); | ||
| 4404 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x2))) | ||
| 4405 | svfloat16x2_t svamin(svfloat16x2_t, svfloat16x2_t); | ||
| 4406 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x4))) | ||
| 4407 | svfloat64x4_t svamin(svfloat64x4_t, svfloat64x4_t); | ||
| 4408 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x4))) | ||
| 4409 | svfloat32x4_t svamin(svfloat32x4_t, svfloat32x4_t); | ||
| 4410 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x4))) | ||
| 4411 | svfloat16x4_t svamin(svfloat16x4_t, svfloat16x4_t); | ||
| 4412 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_bf16_mf8_x2_fpm))) | ||
| 4413 | svbfloat16x2_t svcvt1_bf16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4414 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_f16_mf8_x2_fpm))) | ||
| 4415 | svfloat16x2_t svcvt1_f16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4416 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_bf16_mf8_x2_fpm))) | ||
| 4417 | svbfloat16x2_t svcvt2_bf16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4418 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_f16_mf8_x2_fpm))) | ||
| 4419 | svfloat16x2_t svcvt2_f16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4420 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_bf16_x2_fpm))) | ||
| 4421 | svmfloat8_t svcvt_mf8_bf16_x2_fpm(svbfloat16x2_t, fpm_t); | ||
| 4422 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_f16_x2_fpm))) | ||
| 4423 | svmfloat8_t svcvt_mf8_f16_x2_fpm(svfloat16x2_t, fpm_t); | ||
| 4424 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_f32_x4_fpm))) | ||
| 4425 | svmfloat8_t svcvt_mf8_f32_x4_fpm(svfloat32x4_t, fpm_t); | ||
| 4426 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl1_bf16_mf8_x2_fpm))) | ||
| 4427 | svbfloat16x2_t svcvtl1_bf16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4428 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl1_f16_mf8_x2_fpm))) | ||
| 4429 | svfloat16x2_t svcvtl1_f16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4430 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl2_bf16_mf8_x2_fpm))) | ||
| 4431 | svbfloat16x2_t svcvtl2_bf16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4432 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl2_f16_mf8_x2_fpm))) | ||
| 4433 | svfloat16x2_t svcvtl2_f16_mf8_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4434 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_f32_x4_fpm))) | ||
| 4435 | svmfloat8_t svcvtn_mf8_f32_x4_fpm(svfloat32x4_t, fpm_t); | ||
| 4436 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f64_x2))) | ||
| 4437 | svfloat64x2_t svscale_single_f64_x2(svfloat64x2_t, svint64_t); | ||
| 4438 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f32_x2))) | ||
| 4439 | svfloat32x2_t svscale_single_f32_x2(svfloat32x2_t, svint32_t); | ||
| 4440 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f16_x2))) | ||
| 4441 | svfloat16x2_t svscale_single_f16_x2(svfloat16x2_t, svint16_t); | ||
| 4442 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f64_x4))) | ||
| 4443 | svfloat64x4_t svscale_single_f64_x4(svfloat64x4_t, svint64_t); | ||
| 4444 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f32_x4))) | ||
| 4445 | svfloat32x4_t svscale_single_f32_x4(svfloat32x4_t, svint32_t); | ||
| 4446 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f16_x4))) | ||
| 4447 | svfloat16x4_t svscale_single_f16_x4(svfloat16x4_t, svint16_t); | ||
| 4448 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f64_x2))) | ||
| 4449 | svfloat64x2_t svscale_f64_x2(svfloat64x2_t, svint64x2_t); | ||
| 4450 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f32_x2))) | ||
| 4451 | svfloat32x2_t svscale_f32_x2(svfloat32x2_t, svint32x2_t); | ||
| 4452 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f16_x2))) | ||
| 4453 | svfloat16x2_t svscale_f16_x2(svfloat16x2_t, svint16x2_t); | ||
| 4454 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f64_x4))) | ||
| 4455 | svfloat64x4_t svscale_f64_x4(svfloat64x4_t, svint64x4_t); | ||
| 4456 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f32_x4))) | ||
| 4457 | svfloat32x4_t svscale_f32_x4(svfloat32x4_t, svint32x4_t); | ||
| 4458 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f16_x4))) | ||
| 4459 | svfloat16x4_t svscale_f16_x4(svfloat16x4_t, svint16x4_t); | ||
| 4460 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_bf16_mf8_x2_fpm))) | ||
| 4461 | svbfloat16x2_t svcvt1_bf16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4462 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_f16_mf8_x2_fpm))) | ||
| 4463 | svfloat16x2_t svcvt1_f16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4464 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_bf16_mf8_x2_fpm))) | ||
| 4465 | svbfloat16x2_t svcvt2_bf16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4466 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_f16_mf8_x2_fpm))) | ||
| 4467 | svfloat16x2_t svcvt2_f16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4468 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_bf16_x2_fpm))) | ||
| 4469 | svmfloat8_t svcvt_mf8_fpm(svbfloat16x2_t, fpm_t); | ||
| 4470 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_f16_x2_fpm))) | ||
| 4471 | svmfloat8_t svcvt_mf8_fpm(svfloat16x2_t, fpm_t); | ||
| 4472 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt_mf8_f32_x4_fpm))) | ||
| 4473 | svmfloat8_t svcvt_mf8_fpm(svfloat32x4_t, fpm_t); | ||
| 4474 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl1_bf16_mf8_x2_fpm))) | ||
| 4475 | svbfloat16x2_t svcvtl1_bf16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4476 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl1_f16_mf8_x2_fpm))) | ||
| 4477 | svfloat16x2_t svcvtl1_f16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4478 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl2_bf16_mf8_x2_fpm))) | ||
| 4479 | svbfloat16x2_t svcvtl2_bf16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4480 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtl2_f16_mf8_x2_fpm))) | ||
| 4481 | svfloat16x2_t svcvtl2_f16_x2_fpm(svmfloat8_t, fpm_t); | ||
| 4482 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_f32_x4_fpm))) | ||
| 4483 | svmfloat8_t svcvtn_mf8_fpm(svfloat32x4_t, fpm_t); | ||
| 4484 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f64_x2))) | ||
| 4485 | svfloat64x2_t svscale(svfloat64x2_t, svint64_t); | ||
| 4486 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f32_x2))) | ||
| 4487 | svfloat32x2_t svscale(svfloat32x2_t, svint32_t); | ||
| 4488 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f16_x2))) | ||
| 4489 | svfloat16x2_t svscale(svfloat16x2_t, svint16_t); | ||
| 4490 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f64_x4))) | ||
| 4491 | svfloat64x4_t svscale(svfloat64x4_t, svint64_t); | ||
| 4492 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f32_x4))) | ||
| 4493 | svfloat32x4_t svscale(svfloat32x4_t, svint32_t); | ||
| 4494 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_single_f16_x4))) | ||
| 4495 | svfloat16x4_t svscale(svfloat16x4_t, svint16_t); | ||
| 4496 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f64_x2))) | ||
| 4497 | svfloat64x2_t svscale(svfloat64x2_t, svint64x2_t); | ||
| 4498 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f32_x2))) | ||
| 4499 | svfloat32x2_t svscale(svfloat32x2_t, svint32x2_t); | ||
| 4500 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f16_x2))) | ||
| 4501 | svfloat16x2_t svscale(svfloat16x2_t, svint16x2_t); | ||
| 4502 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f64_x4))) | ||
| 4503 | svfloat64x4_t svscale(svfloat64x4_t, svint64x4_t); | ||
| 4504 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f32_x4))) | ||
| 4505 | svfloat32x4_t svscale(svfloat32x4_t, svint32x4_t); | ||
| 4506 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svscale_f16_x4))) | ||
| 4507 | svfloat16x4_t svscale(svfloat16x4_t, svint16x4_t); | ||
| 3959 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svclamp_single_bf16_x2))) | 4508 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svclamp_single_bf16_x2))) |
| 3960 | svbfloat16x2_t svclamp_single_bf16_x2(svbfloat16x2_t, svbfloat16_t, svbfloat16_t); | 4509 | svbfloat16x2_t svclamp_single_bf16_x2(svbfloat16x2_t, svbfloat16_t, svbfloat16_t); |
| 3961 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svclamp_single_bf16_x4))) | 4510 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svclamp_single_bf16_x4))) |
| ... | @@ -4028,6 +4577,12 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svminnm_bf16_x2))) | ... | @@ -4028,6 +4577,12 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svminnm_bf16_x2))) |
| 4028 | svbfloat16x2_t svminnm(svbfloat16x2_t, svbfloat16x2_t); | 4577 | svbfloat16x2_t svminnm(svbfloat16x2_t, svbfloat16x2_t); |
| 4029 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svminnm_bf16_x4))) | 4578 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svminnm_bf16_x4))) |
| 4030 | svbfloat16x4_t svminnm(svbfloat16x4_t, svbfloat16x4_t); | 4579 | svbfloat16x4_t svminnm(svbfloat16x4_t, svbfloat16x4_t); |
| 4580 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f64))) | ||
| 4581 | float64_t svadda_f64(svbool_t, float64_t, svfloat64_t); | ||
| 4582 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f32))) | ||
| 4583 | float32_t svadda_f32(svbool_t, float32_t, svfloat32_t); | ||
| 4584 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f16))) | ||
| 4585 | float16_t svadda_f16(svbool_t, float16_t, svfloat16_t); | ||
| 4031 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u32base_u32offset))) | 4586 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u32base_u32offset))) |
| 4032 | svuint32_t svadrb_u32base_u32offset(svuint32_t, svuint32_t); | 4587 | svuint32_t svadrb_u32base_u32offset(svuint32_t, svuint32_t); |
| 4033 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u64base_u64offset))) | 4588 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u64base_u64offset))) |
| ... | @@ -5280,6 +5835,12 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtssel_f16))) | ... | @@ -5280,6 +5835,12 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtssel_f16))) |
| 5280 | svfloat16_t svtssel_f16(svfloat16_t, svuint16_t); | 5835 | svfloat16_t svtssel_f16(svfloat16_t, svuint16_t); |
| 5281 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwrffr))) | 5836 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwrffr))) |
| 5282 | void svwrffr(svbool_t); | 5837 | void svwrffr(svbool_t); |
| 5838 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f64))) | ||
| 5839 | float64_t svadda(svbool_t, float64_t, svfloat64_t); | ||
| 5840 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f32))) | ||
| 5841 | float32_t svadda(svbool_t, float32_t, svfloat32_t); | ||
| 5842 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f16))) | ||
| 5843 | float16_t svadda(svbool_t, float16_t, svfloat16_t); | ||
| 5283 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u32base_u32offset))) | 5844 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u32base_u32offset))) |
| 5284 | svuint32_t svadrb_offset(svuint32_t, svuint32_t); | 5845 | svuint32_t svadrb_offset(svuint32_t, svuint32_t); |
| 5285 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u64base_u64offset))) | 5846 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadrb_u64base_u64offset))) |
| ... | @@ -7948,6 +8509,406 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svstnt1w_scatter_u6 | ... | @@ -7948,6 +8509,406 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svstnt1w_scatter_u6 |
| 7948 | void svstnt1w_scatter_offset(svbool_t, int32_t *, svuint64_t, svint64_t); | 8509 | void svstnt1w_scatter_offset(svbool_t, int32_t *, svuint64_t, svint64_t); |
| 7949 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svstnt1w_scatter_u64offset_u64))) | 8510 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svstnt1w_scatter_u64offset_u64))) |
| 7950 | void svstnt1w_scatter_offset(svbool_t, uint32_t *, svuint64_t, svuint64_t); | 8511 | void svstnt1w_scatter_offset(svbool_t, uint32_t *, svuint64_t, svuint64_t); |
| 8512 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbl2_bf16))) | ||
| 8513 | svbfloat16_t svtbl2_bf16(svbfloat16x2_t, svuint16_t); | ||
| 8514 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbx_bf16))) | ||
| 8515 | svbfloat16_t svtbx_bf16(svbfloat16_t, svbfloat16_t, svuint16_t); | ||
| 8516 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilerw_bf16))) | ||
| 8517 | svbool_t svwhilerw_bf16(bfloat16_t const *, bfloat16_t const *); | ||
| 8518 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilewr_bf16))) | ||
| 8519 | svbool_t svwhilewr_bf16(bfloat16_t const *, bfloat16_t const *); | ||
| 8520 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbl2_bf16))) | ||
| 8521 | svbfloat16_t svtbl2(svbfloat16x2_t, svuint16_t); | ||
| 8522 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbx_bf16))) | ||
| 8523 | svbfloat16_t svtbx(svbfloat16_t, svbfloat16_t, svuint16_t); | ||
| 8524 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilerw_bf16))) | ||
| 8525 | svbool_t svwhilerw(bfloat16_t const *, bfloat16_t const *); | ||
| 8526 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilewr_bf16))) | ||
| 8527 | svbool_t svwhilewr(bfloat16_t const *, bfloat16_t const *); | ||
| 8528 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_m))) | ||
| 8529 | svfloat64_t svamax_n_f64_m(svbool_t, svfloat64_t, float64_t); | ||
| 8530 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_m))) | ||
| 8531 | svfloat32_t svamax_n_f32_m(svbool_t, svfloat32_t, float32_t); | ||
| 8532 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_m))) | ||
| 8533 | svfloat16_t svamax_n_f16_m(svbool_t, svfloat16_t, float16_t); | ||
| 8534 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_x))) | ||
| 8535 | svfloat64_t svamax_n_f64_x(svbool_t, svfloat64_t, float64_t); | ||
| 8536 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_x))) | ||
| 8537 | svfloat32_t svamax_n_f32_x(svbool_t, svfloat32_t, float32_t); | ||
| 8538 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_x))) | ||
| 8539 | svfloat16_t svamax_n_f16_x(svbool_t, svfloat16_t, float16_t); | ||
| 8540 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_z))) | ||
| 8541 | svfloat64_t svamax_n_f64_z(svbool_t, svfloat64_t, float64_t); | ||
| 8542 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_z))) | ||
| 8543 | svfloat32_t svamax_n_f32_z(svbool_t, svfloat32_t, float32_t); | ||
| 8544 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_z))) | ||
| 8545 | svfloat16_t svamax_n_f16_z(svbool_t, svfloat16_t, float16_t); | ||
| 8546 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_m))) | ||
| 8547 | svfloat64_t svamax_f64_m(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8548 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_m))) | ||
| 8549 | svfloat32_t svamax_f32_m(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8550 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_m))) | ||
| 8551 | svfloat16_t svamax_f16_m(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8552 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x))) | ||
| 8553 | svfloat64_t svamax_f64_x(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8554 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x))) | ||
| 8555 | svfloat32_t svamax_f32_x(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8556 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x))) | ||
| 8557 | svfloat16_t svamax_f16_x(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8558 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_z))) | ||
| 8559 | svfloat64_t svamax_f64_z(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8560 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_z))) | ||
| 8561 | svfloat32_t svamax_f32_z(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8562 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_z))) | ||
| 8563 | svfloat16_t svamax_f16_z(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8564 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_m))) | ||
| 8565 | svfloat64_t svamin_n_f64_m(svbool_t, svfloat64_t, float64_t); | ||
| 8566 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_m))) | ||
| 8567 | svfloat32_t svamin_n_f32_m(svbool_t, svfloat32_t, float32_t); | ||
| 8568 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_m))) | ||
| 8569 | svfloat16_t svamin_n_f16_m(svbool_t, svfloat16_t, float16_t); | ||
| 8570 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_x))) | ||
| 8571 | svfloat64_t svamin_n_f64_x(svbool_t, svfloat64_t, float64_t); | ||
| 8572 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_x))) | ||
| 8573 | svfloat32_t svamin_n_f32_x(svbool_t, svfloat32_t, float32_t); | ||
| 8574 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_x))) | ||
| 8575 | svfloat16_t svamin_n_f16_x(svbool_t, svfloat16_t, float16_t); | ||
| 8576 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_z))) | ||
| 8577 | svfloat64_t svamin_n_f64_z(svbool_t, svfloat64_t, float64_t); | ||
| 8578 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_z))) | ||
| 8579 | svfloat32_t svamin_n_f32_z(svbool_t, svfloat32_t, float32_t); | ||
| 8580 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_z))) | ||
| 8581 | svfloat16_t svamin_n_f16_z(svbool_t, svfloat16_t, float16_t); | ||
| 8582 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_m))) | ||
| 8583 | svfloat64_t svamin_f64_m(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8584 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_m))) | ||
| 8585 | svfloat32_t svamin_f32_m(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8586 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_m))) | ||
| 8587 | svfloat16_t svamin_f16_m(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8588 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x))) | ||
| 8589 | svfloat64_t svamin_f64_x(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8590 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x))) | ||
| 8591 | svfloat32_t svamin_f32_x(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8592 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x))) | ||
| 8593 | svfloat16_t svamin_f16_x(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8594 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_z))) | ||
| 8595 | svfloat64_t svamin_f64_z(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8596 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_z))) | ||
| 8597 | svfloat32_t svamin_f32_z(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8598 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_z))) | ||
| 8599 | svfloat16_t svamin_f16_z(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8600 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_m))) | ||
| 8601 | svfloat64_t svamax_m(svbool_t, svfloat64_t, float64_t); | ||
| 8602 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_m))) | ||
| 8603 | svfloat32_t svamax_m(svbool_t, svfloat32_t, float32_t); | ||
| 8604 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_m))) | ||
| 8605 | svfloat16_t svamax_m(svbool_t, svfloat16_t, float16_t); | ||
| 8606 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_x))) | ||
| 8607 | svfloat64_t svamax_x(svbool_t, svfloat64_t, float64_t); | ||
| 8608 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_x))) | ||
| 8609 | svfloat32_t svamax_x(svbool_t, svfloat32_t, float32_t); | ||
| 8610 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_x))) | ||
| 8611 | svfloat16_t svamax_x(svbool_t, svfloat16_t, float16_t); | ||
| 8612 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f64_z))) | ||
| 8613 | svfloat64_t svamax_z(svbool_t, svfloat64_t, float64_t); | ||
| 8614 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f32_z))) | ||
| 8615 | svfloat32_t svamax_z(svbool_t, svfloat32_t, float32_t); | ||
| 8616 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_n_f16_z))) | ||
| 8617 | svfloat16_t svamax_z(svbool_t, svfloat16_t, float16_t); | ||
| 8618 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_m))) | ||
| 8619 | svfloat64_t svamax_m(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8620 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_m))) | ||
| 8621 | svfloat32_t svamax_m(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8622 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_m))) | ||
| 8623 | svfloat16_t svamax_m(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8624 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_x))) | ||
| 8625 | svfloat64_t svamax_x(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8626 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_x))) | ||
| 8627 | svfloat32_t svamax_x(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8628 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_x))) | ||
| 8629 | svfloat16_t svamax_x(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8630 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f64_z))) | ||
| 8631 | svfloat64_t svamax_z(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8632 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f32_z))) | ||
| 8633 | svfloat32_t svamax_z(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8634 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamax_f16_z))) | ||
| 8635 | svfloat16_t svamax_z(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8636 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_m))) | ||
| 8637 | svfloat64_t svamin_m(svbool_t, svfloat64_t, float64_t); | ||
| 8638 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_m))) | ||
| 8639 | svfloat32_t svamin_m(svbool_t, svfloat32_t, float32_t); | ||
| 8640 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_m))) | ||
| 8641 | svfloat16_t svamin_m(svbool_t, svfloat16_t, float16_t); | ||
| 8642 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_x))) | ||
| 8643 | svfloat64_t svamin_x(svbool_t, svfloat64_t, float64_t); | ||
| 8644 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_x))) | ||
| 8645 | svfloat32_t svamin_x(svbool_t, svfloat32_t, float32_t); | ||
| 8646 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_x))) | ||
| 8647 | svfloat16_t svamin_x(svbool_t, svfloat16_t, float16_t); | ||
| 8648 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f64_z))) | ||
| 8649 | svfloat64_t svamin_z(svbool_t, svfloat64_t, float64_t); | ||
| 8650 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f32_z))) | ||
| 8651 | svfloat32_t svamin_z(svbool_t, svfloat32_t, float32_t); | ||
| 8652 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_n_f16_z))) | ||
| 8653 | svfloat16_t svamin_z(svbool_t, svfloat16_t, float16_t); | ||
| 8654 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_m))) | ||
| 8655 | svfloat64_t svamin_m(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8656 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_m))) | ||
| 8657 | svfloat32_t svamin_m(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8658 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_m))) | ||
| 8659 | svfloat16_t svamin_m(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8660 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_x))) | ||
| 8661 | svfloat64_t svamin_x(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8662 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_x))) | ||
| 8663 | svfloat32_t svamin_x(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8664 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_x))) | ||
| 8665 | svfloat16_t svamin_x(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8666 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f64_z))) | ||
| 8667 | svfloat64_t svamin_z(svbool_t, svfloat64_t, svfloat64_t); | ||
| 8668 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f32_z))) | ||
| 8669 | svfloat32_t svamin_z(svbool_t, svfloat32_t, svfloat32_t); | ||
| 8670 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svamin_f16_z))) | ||
| 8671 | svfloat16_t svamin_z(svbool_t, svfloat16_t, svfloat16_t); | ||
| 8672 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_f16_mf8_fpm))) | ||
| 8673 | svfloat16_t svdot_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8674 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_n_f16_mf8_fpm))) | ||
| 8675 | svfloat16_t svdot_n_f16_mf8_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8676 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_lane_f16_mf8_fpm))) | ||
| 8677 | svfloat16_t svdot_lane_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8678 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_f16_mf8_fpm))) | ||
| 8679 | svfloat16_t svdot_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8680 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_n_f16_mf8_fpm))) | ||
| 8681 | svfloat16_t svdot_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8682 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_lane_f16_mf8_fpm))) | ||
| 8683 | svfloat16_t svdot_lane_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8684 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_f32_mf8_fpm))) | ||
| 8685 | svfloat32_t svdot_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8686 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_n_f32_mf8_fpm))) | ||
| 8687 | svfloat32_t svdot_n_f32_mf8_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8688 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_lane_f32_mf8_fpm))) | ||
| 8689 | svfloat32_t svdot_lane_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8690 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_f32_mf8_fpm))) | ||
| 8691 | svfloat32_t svdot_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8692 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_n_f32_mf8_fpm))) | ||
| 8693 | svfloat32_t svdot_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8694 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdot_lane_f32_mf8_fpm))) | ||
| 8695 | svfloat32_t svdot_lane_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8696 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_f16_mf8_fpm))) | ||
| 8697 | svfloat16_t svmlalb_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8698 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_n_f16_mf8_fpm))) | ||
| 8699 | svfloat16_t svmlalb_n_f16_mf8_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8700 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_lane_f16_mf8_fpm))) | ||
| 8701 | svfloat16_t svmlalb_lane_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8702 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_f32_mf8_fpm))) | ||
| 8703 | svfloat32_t svmlallbb_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8704 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_n_f32_mf8_fpm))) | ||
| 8705 | svfloat32_t svmlallbb_n_f32_mf8_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8706 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_lane_f32_mf8_fpm))) | ||
| 8707 | svfloat32_t svmlallbb_lane_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8708 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_f32_mf8_fpm))) | ||
| 8709 | svfloat32_t svmlallbt_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8710 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_n_f32_mf8_fpm))) | ||
| 8711 | svfloat32_t svmlallbt_n_f32_mf8_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8712 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_lane_f32_mf8_fpm))) | ||
| 8713 | svfloat32_t svmlallbt_lane_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8714 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_f32_mf8_fpm))) | ||
| 8715 | svfloat32_t svmlalltb_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8716 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_n_f32_mf8_fpm))) | ||
| 8717 | svfloat32_t svmlalltb_n_f32_mf8_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8718 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_lane_f32_mf8_fpm))) | ||
| 8719 | svfloat32_t svmlalltb_lane_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8720 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_f32_mf8_fpm))) | ||
| 8721 | svfloat32_t svmlalltt_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8722 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_n_f32_mf8_fpm))) | ||
| 8723 | svfloat32_t svmlalltt_n_f32_mf8_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8724 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_lane_f32_mf8_fpm))) | ||
| 8725 | svfloat32_t svmlalltt_lane_f32_mf8_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8726 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_f16_mf8_fpm))) | ||
| 8727 | svfloat16_t svmlalt_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8728 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_n_f16_mf8_fpm))) | ||
| 8729 | svfloat16_t svmlalt_n_f16_mf8_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8730 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_lane_f16_mf8_fpm))) | ||
| 8731 | svfloat16_t svmlalt_lane_f16_mf8_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8732 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_f16_mf8_fpm))) | ||
| 8733 | svfloat16_t svmlalb_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8734 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_n_f16_mf8_fpm))) | ||
| 8735 | svfloat16_t svmlalb_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8736 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalb_lane_f16_mf8_fpm))) | ||
| 8737 | svfloat16_t svmlalb_lane_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8738 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_f32_mf8_fpm))) | ||
| 8739 | svfloat32_t svmlallbb_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8740 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_n_f32_mf8_fpm))) | ||
| 8741 | svfloat32_t svmlallbb_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8742 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbb_lane_f32_mf8_fpm))) | ||
| 8743 | svfloat32_t svmlallbb_lane_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8744 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_f32_mf8_fpm))) | ||
| 8745 | svfloat32_t svmlallbt_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8746 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_n_f32_mf8_fpm))) | ||
| 8747 | svfloat32_t svmlallbt_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8748 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlallbt_lane_f32_mf8_fpm))) | ||
| 8749 | svfloat32_t svmlallbt_lane_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8750 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_f32_mf8_fpm))) | ||
| 8751 | svfloat32_t svmlalltb_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8752 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_n_f32_mf8_fpm))) | ||
| 8753 | svfloat32_t svmlalltb_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8754 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltb_lane_f32_mf8_fpm))) | ||
| 8755 | svfloat32_t svmlalltb_lane_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8756 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_f32_mf8_fpm))) | ||
| 8757 | svfloat32_t svmlalltt_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8758 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_n_f32_mf8_fpm))) | ||
| 8759 | svfloat32_t svmlalltt_fpm(svfloat32_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8760 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalltt_lane_f32_mf8_fpm))) | ||
| 8761 | svfloat32_t svmlalltt_lane_fpm(svfloat32_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8762 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_f16_mf8_fpm))) | ||
| 8763 | svfloat16_t svmlalt_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, fpm_t); | ||
| 8764 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_n_f16_mf8_fpm))) | ||
| 8765 | svfloat16_t svmlalt_fpm(svfloat16_t, svmfloat8_t, mfloat8_t, fpm_t); | ||
| 8766 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svmlalt_lane_f16_mf8_fpm))) | ||
| 8767 | svfloat16_t svmlalt_lane_fpm(svfloat16_t, svmfloat8_t, svmfloat8_t, uint64_t, fpm_t); | ||
| 8768 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_bf16_mf8_fpm))) | ||
| 8769 | svbfloat16_t svcvt1_bf16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8770 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_f16_mf8_fpm))) | ||
| 8771 | svfloat16_t svcvt1_f16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8772 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_bf16_mf8_fpm))) | ||
| 8773 | svbfloat16_t svcvt2_bf16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8774 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_f16_mf8_fpm))) | ||
| 8775 | svfloat16_t svcvt2_f16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8776 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt1_bf16_mf8_fpm))) | ||
| 8777 | svbfloat16_t svcvtlt1_bf16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8778 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt1_f16_mf8_fpm))) | ||
| 8779 | svfloat16_t svcvtlt1_f16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8780 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt2_bf16_mf8_fpm))) | ||
| 8781 | svbfloat16_t svcvtlt2_bf16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8782 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt2_f16_mf8_fpm))) | ||
| 8783 | svfloat16_t svcvtlt2_f16_mf8_fpm(svmfloat8_t, fpm_t); | ||
| 8784 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_bf16_x2_fpm))) | ||
| 8785 | svmfloat8_t svcvtn_mf8_bf16_x2_fpm(svbfloat16x2_t, fpm_t); | ||
| 8786 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_f16_x2_fpm))) | ||
| 8787 | svmfloat8_t svcvtn_mf8_f16_x2_fpm(svfloat16x2_t, fpm_t); | ||
| 8788 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtnb_mf8_f32_x2_fpm))) | ||
| 8789 | svmfloat8_t svcvtnb_mf8_f32_x2_fpm(svfloat32x2_t, fpm_t); | ||
| 8790 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtnt_mf8_f32_x2_fpm))) | ||
| 8791 | svmfloat8_t svcvtnt_mf8_f32_x2_fpm(svmfloat8_t, svfloat32x2_t, fpm_t); | ||
| 8792 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_bf16_mf8_fpm))) | ||
| 8793 | svbfloat16_t svcvt1_bf16_fpm(svmfloat8_t, fpm_t); | ||
| 8794 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt1_f16_mf8_fpm))) | ||
| 8795 | svfloat16_t svcvt1_f16_fpm(svmfloat8_t, fpm_t); | ||
| 8796 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_bf16_mf8_fpm))) | ||
| 8797 | svbfloat16_t svcvt2_bf16_fpm(svmfloat8_t, fpm_t); | ||
| 8798 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvt2_f16_mf8_fpm))) | ||
| 8799 | svfloat16_t svcvt2_f16_fpm(svmfloat8_t, fpm_t); | ||
| 8800 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt1_bf16_mf8_fpm))) | ||
| 8801 | svbfloat16_t svcvtlt1_bf16_fpm(svmfloat8_t, fpm_t); | ||
| 8802 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt1_f16_mf8_fpm))) | ||
| 8803 | svfloat16_t svcvtlt1_f16_fpm(svmfloat8_t, fpm_t); | ||
| 8804 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt2_bf16_mf8_fpm))) | ||
| 8805 | svbfloat16_t svcvtlt2_bf16_fpm(svmfloat8_t, fpm_t); | ||
| 8806 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtlt2_f16_mf8_fpm))) | ||
| 8807 | svfloat16_t svcvtlt2_f16_fpm(svmfloat8_t, fpm_t); | ||
| 8808 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_bf16_x2_fpm))) | ||
| 8809 | svmfloat8_t svcvtn_mf8_fpm(svbfloat16x2_t, fpm_t); | ||
| 8810 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtn_mf8_f16_x2_fpm))) | ||
| 8811 | svmfloat8_t svcvtn_mf8_fpm(svfloat16x2_t, fpm_t); | ||
| 8812 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtnb_mf8_f32_x2_fpm))) | ||
| 8813 | svmfloat8_t svcvtnb_mf8_fpm(svfloat32x2_t, fpm_t); | ||
| 8814 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svcvtnt_mf8_f32_x2_fpm))) | ||
| 8815 | svmfloat8_t svcvtnt_mf8_fpm(svmfloat8_t, svfloat32x2_t, fpm_t); | ||
| 8816 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_bf16))) | ||
| 8817 | svbfloat16_t svluti2_lane_bf16(svbfloat16_t, svuint8_t, uint64_t); | ||
| 8818 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_bf16))) | ||
| 8819 | svbfloat16_t svluti4_lane_bf16(svbfloat16_t, svuint8_t, uint64_t); | ||
| 8820 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_bf16_x2))) | ||
| 8821 | svbfloat16_t svluti4_lane_bf16_x2(svbfloat16x2_t, svuint8_t, uint64_t); | ||
| 8822 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_bf16))) | ||
| 8823 | svbfloat16_t svluti2_lane(svbfloat16_t, svuint8_t, uint64_t); | ||
| 8824 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_bf16))) | ||
| 8825 | svbfloat16_t svluti4_lane(svbfloat16_t, svuint8_t, uint64_t); | ||
| 8826 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_bf16_x2))) | ||
| 8827 | svbfloat16_t svluti4_lane(svbfloat16x2_t, svuint8_t, uint64_t); | ||
| 8828 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_u8))) | ||
| 8829 | svuint8_t svluti2_lane_u8(svuint8_t, svuint8_t, uint64_t); | ||
| 8830 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_s8))) | ||
| 8831 | svint8_t svluti2_lane_s8(svint8_t, svuint8_t, uint64_t); | ||
| 8832 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_u16))) | ||
| 8833 | svuint16_t svluti2_lane_u16(svuint16_t, svuint8_t, uint64_t); | ||
| 8834 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_f16))) | ||
| 8835 | svfloat16_t svluti2_lane_f16(svfloat16_t, svuint8_t, uint64_t); | ||
| 8836 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_s16))) | ||
| 8837 | svint16_t svluti2_lane_s16(svint16_t, svuint8_t, uint64_t); | ||
| 8838 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u8))) | ||
| 8839 | svuint8_t svluti4_lane_u8(svuint8_t, svuint8_t, uint64_t); | ||
| 8840 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s8))) | ||
| 8841 | svint8_t svluti4_lane_s8(svint8_t, svuint8_t, uint64_t); | ||
| 8842 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u16))) | ||
| 8843 | svuint16_t svluti4_lane_u16(svuint16_t, svuint8_t, uint64_t); | ||
| 8844 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_f16))) | ||
| 8845 | svfloat16_t svluti4_lane_f16(svfloat16_t, svuint8_t, uint64_t); | ||
| 8846 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s16))) | ||
| 8847 | svint16_t svluti4_lane_s16(svint16_t, svuint8_t, uint64_t); | ||
| 8848 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u16_x2))) | ||
| 8849 | svuint16_t svluti4_lane_u16_x2(svuint16x2_t, svuint8_t, uint64_t); | ||
| 8850 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_f16_x2))) | ||
| 8851 | svfloat16_t svluti4_lane_f16_x2(svfloat16x2_t, svuint8_t, uint64_t); | ||
| 8852 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s16_x2))) | ||
| 8853 | svint16_t svluti4_lane_s16_x2(svint16x2_t, svuint8_t, uint64_t); | ||
| 8854 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_u8))) | ||
| 8855 | svuint8_t svluti2_lane(svuint8_t, svuint8_t, uint64_t); | ||
| 8856 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_s8))) | ||
| 8857 | svint8_t svluti2_lane(svint8_t, svuint8_t, uint64_t); | ||
| 8858 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_u16))) | ||
| 8859 | svuint16_t svluti2_lane(svuint16_t, svuint8_t, uint64_t); | ||
| 8860 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_f16))) | ||
| 8861 | svfloat16_t svluti2_lane(svfloat16_t, svuint8_t, uint64_t); | ||
| 8862 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti2_lane_s16))) | ||
| 8863 | svint16_t svluti2_lane(svint16_t, svuint8_t, uint64_t); | ||
| 8864 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u8))) | ||
| 8865 | svuint8_t svluti4_lane(svuint8_t, svuint8_t, uint64_t); | ||
| 8866 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s8))) | ||
| 8867 | svint8_t svluti4_lane(svint8_t, svuint8_t, uint64_t); | ||
| 8868 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u16))) | ||
| 8869 | svuint16_t svluti4_lane(svuint16_t, svuint8_t, uint64_t); | ||
| 8870 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_f16))) | ||
| 8871 | svfloat16_t svluti4_lane(svfloat16_t, svuint8_t, uint64_t); | ||
| 8872 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s16))) | ||
| 8873 | svint16_t svluti4_lane(svint16_t, svuint8_t, uint64_t); | ||
| 8874 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_u16_x2))) | ||
| 8875 | svuint16_t svluti4_lane(svuint16x2_t, svuint8_t, uint64_t); | ||
| 8876 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_f16_x2))) | ||
| 8877 | svfloat16_t svluti4_lane(svfloat16x2_t, svuint8_t, uint64_t); | ||
| 8878 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svluti4_lane_s16_x2))) | ||
| 8879 | svint16_t svluti4_lane(svint16x2_t, svuint8_t, uint64_t); | ||
| 8880 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesd_u8))) | ||
| 8881 | svuint8_t svaesd_u8(svuint8_t, svuint8_t); | ||
| 8882 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaese_u8))) | ||
| 8883 | svuint8_t svaese_u8(svuint8_t, svuint8_t); | ||
| 8884 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesimc_u8))) | ||
| 8885 | svuint8_t svaesimc_u8(svuint8_t); | ||
| 8886 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesmc_u8))) | ||
| 8887 | svuint8_t svaesmc_u8(svuint8_t); | ||
| 8888 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_n_u64))) | ||
| 8889 | svuint64_t svpmullb_pair_n_u64(svuint64_t, uint64_t); | ||
| 8890 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_u64))) | ||
| 8891 | svuint64_t svpmullb_pair_u64(svuint64_t, svuint64_t); | ||
| 8892 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_n_u64))) | ||
| 8893 | svuint64_t svpmullt_pair_n_u64(svuint64_t, uint64_t); | ||
| 8894 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_u64))) | ||
| 8895 | svuint64_t svpmullt_pair_u64(svuint64_t, svuint64_t); | ||
| 8896 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesd_u8))) | ||
| 8897 | svuint8_t svaesd(svuint8_t, svuint8_t); | ||
| 8898 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaese_u8))) | ||
| 8899 | svuint8_t svaese(svuint8_t, svuint8_t); | ||
| 8900 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesimc_u8))) | ||
| 8901 | svuint8_t svaesimc(svuint8_t); | ||
| 8902 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesmc_u8))) | ||
| 8903 | svuint8_t svaesmc(svuint8_t); | ||
| 8904 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_n_u64))) | ||
| 8905 | svuint64_t svpmullb_pair(svuint64_t, uint64_t); | ||
| 8906 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_u64))) | ||
| 8907 | svuint64_t svpmullb_pair(svuint64_t, svuint64_t); | ||
| 8908 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_n_u64))) | ||
| 8909 | svuint64_t svpmullt_pair(svuint64_t, uint64_t); | ||
| 8910 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_u64))) | ||
| 8911 | svuint64_t svpmullt_pair(svuint64_t, svuint64_t); | ||
| 7951 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_n_bf16_m))) | 8912 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_n_bf16_m))) |
| 7952 | svbfloat16_t svadd_n_bf16_m(svbool_t, svbfloat16_t, bfloat16_t); | 8913 | svbfloat16_t svadd_n_bf16_m(svbool_t, svbfloat16_t, bfloat16_t); |
| 7953 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_n_bf16_x))) | 8914 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_n_bf16_x))) |
| ... | @@ -8180,54 +9141,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svsub_bf16_x))) | ... | @@ -8180,54 +9141,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svsub_bf16_x))) |
| 8180 | svbfloat16_t svsub_x(svbool_t, svbfloat16_t, svbfloat16_t); | 9141 | svbfloat16_t svsub_x(svbool_t, svbfloat16_t, svbfloat16_t); |
| 8181 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svsub_bf16_z))) | 9142 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svsub_bf16_z))) |
| 8182 | svbfloat16_t svsub_z(svbool_t, svbfloat16_t, svbfloat16_t); | 9143 | svbfloat16_t svsub_z(svbool_t, svbfloat16_t, svbfloat16_t); |
| 8183 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbl2_bf16))) | ||
| 8184 | svbfloat16_t svtbl2_bf16(svbfloat16x2_t, svuint16_t); | ||
| 8185 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbx_bf16))) | ||
| 8186 | svbfloat16_t svtbx_bf16(svbfloat16_t, svbfloat16_t, svuint16_t); | ||
| 8187 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilerw_bf16))) | ||
| 8188 | svbool_t svwhilerw_bf16(bfloat16_t const *, bfloat16_t const *); | ||
| 8189 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilewr_bf16))) | ||
| 8190 | svbool_t svwhilewr_bf16(bfloat16_t const *, bfloat16_t const *); | ||
| 8191 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbl2_bf16))) | ||
| 8192 | svbfloat16_t svtbl2(svbfloat16x2_t, svuint16_t); | ||
| 8193 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbx_bf16))) | ||
| 8194 | svbfloat16_t svtbx(svbfloat16_t, svbfloat16_t, svuint16_t); | ||
| 8195 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilerw_bf16))) | ||
| 8196 | svbool_t svwhilerw(bfloat16_t const *, bfloat16_t const *); | ||
| 8197 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svwhilewr_bf16))) | ||
| 8198 | svbool_t svwhilewr(bfloat16_t const *, bfloat16_t const *); | ||
| 8199 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesd_u8))) | ||
| 8200 | svuint8_t svaesd_u8(svuint8_t, svuint8_t); | ||
| 8201 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaese_u8))) | ||
| 8202 | svuint8_t svaese_u8(svuint8_t, svuint8_t); | ||
| 8203 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesimc_u8))) | ||
| 8204 | svuint8_t svaesimc_u8(svuint8_t); | ||
| 8205 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesmc_u8))) | ||
| 8206 | svuint8_t svaesmc_u8(svuint8_t); | ||
| 8207 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_n_u64))) | ||
| 8208 | svuint64_t svpmullb_pair_n_u64(svuint64_t, uint64_t); | ||
| 8209 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_u64))) | ||
| 8210 | svuint64_t svpmullb_pair_u64(svuint64_t, svuint64_t); | ||
| 8211 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_n_u64))) | ||
| 8212 | svuint64_t svpmullt_pair_n_u64(svuint64_t, uint64_t); | ||
| 8213 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_u64))) | ||
| 8214 | svuint64_t svpmullt_pair_u64(svuint64_t, svuint64_t); | ||
| 8215 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesd_u8))) | ||
| 8216 | svuint8_t svaesd(svuint8_t, svuint8_t); | ||
| 8217 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaese_u8))) | ||
| 8218 | svuint8_t svaese(svuint8_t, svuint8_t); | ||
| 8219 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesimc_u8))) | ||
| 8220 | svuint8_t svaesimc(svuint8_t); | ||
| 8221 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaesmc_u8))) | ||
| 8222 | svuint8_t svaesmc(svuint8_t); | ||
| 8223 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_n_u64))) | ||
| 8224 | svuint64_t svpmullb_pair(svuint64_t, uint64_t); | ||
| 8225 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullb_pair_u64))) | ||
| 8226 | svuint64_t svpmullb_pair(svuint64_t, svuint64_t); | ||
| 8227 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_n_u64))) | ||
| 8228 | svuint64_t svpmullt_pair(svuint64_t, uint64_t); | ||
| 8229 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmullt_pair_u64))) | ||
| 8230 | svuint64_t svpmullt_pair(svuint64_t, svuint64_t); | ||
| 8231 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svbdep_n_u8))) | 9144 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svbdep_n_u8))) |
| 8232 | svuint8_t svbdep_n_u8(svuint8_t, uint8_t); | 9145 | svuint8_t svbdep_n_u8(svuint8_t, uint8_t); |
| 8233 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svbdep_n_u32))) | 9146 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svbdep_n_u32))) |
| ... | @@ -8416,6 +9329,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s32))) | ... | @@ -8416,6 +9329,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s32))) |
| 8416 | svint32_t svextq_s32(svint32_t, svint32_t, int32_t); | 9329 | svint32_t svextq_s32(svint32_t, svint32_t, int32_t); |
| 8417 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s64))) | 9330 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s64))) |
| 8418 | svint64_t svextq_s64(svint64_t, svint64_t, int32_t); | 9331 | svint64_t svextq_s64(svint64_t, svint64_t, int32_t); |
| 9332 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_mf8))) | ||
| 9333 | svmfloat8_t svextq_mf8(svmfloat8_t, svmfloat8_t, int32_t); | ||
| 8419 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s16))) | 9334 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s16))) |
| 8420 | svint16_t svextq_s16(svint16_t, svint16_t, int32_t); | 9335 | svint16_t svextq_s16(svint16_t, svint16_t, int32_t); |
| 8421 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svld1q_gather_u64base_index_u32))) | 9336 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svld1q_gather_u64base_index_u32))) |
| ... | @@ -8831,17 +9746,17 @@ svuint32_t svpmov_u32_z(svbool_t); | ... | @@ -8831,17 +9746,17 @@ svuint32_t svpmov_u32_z(svbool_t); |
| 8831 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmov_s32_z))) | 9746 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmov_s32_z))) |
| 8832 | svint32_t svpmov_s32_z(svbool_t); | 9747 | svint32_t svpmov_s32_z(svbool_t); |
| 8833 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_u64))) | 9748 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_u64))) |
| 8834 | void svst1dq_u64(svbool_t, uint64_t const *, svuint64_t); | 9749 | void svst1dq_u64(svbool_t, uint64_t *, svuint64_t); |
| 8835 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_f64))) | 9750 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_f64))) |
| 8836 | void svst1dq_f64(svbool_t, float64_t const *, svfloat64_t); | 9751 | void svst1dq_f64(svbool_t, float64_t *, svfloat64_t); |
| 8837 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_s64))) | 9752 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_s64))) |
| 8838 | void svst1dq_s64(svbool_t, int64_t const *, svint64_t); | 9753 | void svst1dq_s64(svbool_t, int64_t *, svint64_t); |
| 8839 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_u64))) | 9754 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_u64))) |
| 8840 | void svst1dq_vnum_u64(svbool_t, uint64_t const *, int64_t, svuint64_t); | 9755 | void svst1dq_vnum_u64(svbool_t, uint64_t *, int64_t, svuint64_t); |
| 8841 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_f64))) | 9756 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_f64))) |
| 8842 | void svst1dq_vnum_f64(svbool_t, float64_t const *, int64_t, svfloat64_t); | 9757 | void svst1dq_vnum_f64(svbool_t, float64_t *, int64_t, svfloat64_t); |
| 8843 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_s64))) | 9758 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_s64))) |
| 8844 | void svst1dq_vnum_s64(svbool_t, int64_t const *, int64_t, svint64_t); | 9759 | void svst1dq_vnum_s64(svbool_t, int64_t *, int64_t, svint64_t); |
| 8845 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u8))) | 9760 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u8))) |
| 8846 | void svst1q_scatter_u64base_u8(svbool_t, svuint64_t, svuint8_t); | 9761 | void svst1q_scatter_u64base_u8(svbool_t, svuint64_t, svuint8_t); |
| 8847 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u32))) | 9762 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u32))) |
| ... | @@ -8910,6 +9825,26 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64ba | ... | @@ -8910,6 +9825,26 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64ba |
| 8910 | void svst1q_scatter_u64base_offset_s64(svbool_t, svuint64_t, int64_t, svint64_t); | 9825 | void svst1q_scatter_u64base_offset_s64(svbool_t, svuint64_t, int64_t, svint64_t); |
| 8911 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_offset_s16))) | 9826 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_offset_s16))) |
| 8912 | void svst1q_scatter_u64base_offset_s16(svbool_t, svuint64_t, int64_t, svint16_t); | 9827 | void svst1q_scatter_u64base_offset_s16(svbool_t, svuint64_t, int64_t, svint16_t); |
| 9828 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u32))) | ||
| 9829 | void svst1q_scatter_s64index_u32(svbool_t, uint32_t *, svint64_t, svuint32_t); | ||
| 9830 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u64))) | ||
| 9831 | void svst1q_scatter_s64index_u64(svbool_t, uint64_t *, svint64_t, svuint64_t); | ||
| 9832 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u16))) | ||
| 9833 | void svst1q_scatter_s64index_u16(svbool_t, uint16_t *, svint64_t, svuint16_t); | ||
| 9834 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_bf16))) | ||
| 9835 | void svst1q_scatter_s64index_bf16(svbool_t, bfloat16_t *, svint64_t, svbfloat16_t); | ||
| 9836 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f64))) | ||
| 9837 | void svst1q_scatter_s64index_f64(svbool_t, float64_t *, svint64_t, svfloat64_t); | ||
| 9838 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f32))) | ||
| 9839 | void svst1q_scatter_s64index_f32(svbool_t, float32_t *, svint64_t, svfloat32_t); | ||
| 9840 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f16))) | ||
| 9841 | void svst1q_scatter_s64index_f16(svbool_t, float16_t *, svint64_t, svfloat16_t); | ||
| 9842 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s32))) | ||
| 9843 | void svst1q_scatter_s64index_s32(svbool_t, int32_t *, svint64_t, svint32_t); | ||
| 9844 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s64))) | ||
| 9845 | void svst1q_scatter_s64index_s64(svbool_t, int64_t *, svint64_t, svint64_t); | ||
| 9846 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s16))) | ||
| 9847 | void svst1q_scatter_s64index_s16(svbool_t, int16_t *, svint64_t, svint16_t); | ||
| 8913 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u32))) | 9848 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u32))) |
| 8914 | void svst1q_scatter_u64index_u32(svbool_t, uint32_t *, svuint64_t, svuint32_t); | 9849 | void svst1q_scatter_u64index_u32(svbool_t, uint32_t *, svuint64_t, svuint32_t); |
| 8915 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u64))) | 9850 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u64))) |
| ... | @@ -8930,6 +9865,30 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64in | ... | @@ -8930,6 +9865,30 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64in |
| 8930 | void svst1q_scatter_u64index_s64(svbool_t, int64_t *, svuint64_t, svint64_t); | 9865 | void svst1q_scatter_u64index_s64(svbool_t, int64_t *, svuint64_t, svint64_t); |
| 8931 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_s16))) | 9866 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_s16))) |
| 8932 | void svst1q_scatter_u64index_s16(svbool_t, int16_t *, svuint64_t, svint16_t); | 9867 | void svst1q_scatter_u64index_s16(svbool_t, int16_t *, svuint64_t, svint16_t); |
| 9868 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u8))) | ||
| 9869 | void svst1q_scatter_s64offset_u8(svbool_t, uint8_t *, svint64_t, svuint8_t); | ||
| 9870 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u32))) | ||
| 9871 | void svst1q_scatter_s64offset_u32(svbool_t, uint32_t *, svint64_t, svuint32_t); | ||
| 9872 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u64))) | ||
| 9873 | void svst1q_scatter_s64offset_u64(svbool_t, uint64_t *, svint64_t, svuint64_t); | ||
| 9874 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u16))) | ||
| 9875 | void svst1q_scatter_s64offset_u16(svbool_t, uint16_t *, svint64_t, svuint16_t); | ||
| 9876 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_bf16))) | ||
| 9877 | void svst1q_scatter_s64offset_bf16(svbool_t, bfloat16_t *, svint64_t, svbfloat16_t); | ||
| 9878 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s8))) | ||
| 9879 | void svst1q_scatter_s64offset_s8(svbool_t, int8_t *, svint64_t, svint8_t); | ||
| 9880 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f64))) | ||
| 9881 | void svst1q_scatter_s64offset_f64(svbool_t, float64_t *, svint64_t, svfloat64_t); | ||
| 9882 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f32))) | ||
| 9883 | void svst1q_scatter_s64offset_f32(svbool_t, float32_t *, svint64_t, svfloat32_t); | ||
| 9884 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f16))) | ||
| 9885 | void svst1q_scatter_s64offset_f16(svbool_t, float16_t *, svint64_t, svfloat16_t); | ||
| 9886 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s32))) | ||
| 9887 | void svst1q_scatter_s64offset_s32(svbool_t, int32_t *, svint64_t, svint32_t); | ||
| 9888 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s64))) | ||
| 9889 | void svst1q_scatter_s64offset_s64(svbool_t, int64_t *, svint64_t, svint64_t); | ||
| 9890 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s16))) | ||
| 9891 | void svst1q_scatter_s64offset_s16(svbool_t, int16_t *, svint64_t, svint16_t); | ||
| 8933 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u8))) | 9892 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u8))) |
| 8934 | void svst1q_scatter_u64offset_u8(svbool_t, uint8_t *, svuint64_t, svuint8_t); | 9893 | void svst1q_scatter_u64offset_u8(svbool_t, uint8_t *, svuint64_t, svuint8_t); |
| 8935 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u32))) | 9894 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u32))) |
| ... | @@ -8955,17 +9914,17 @@ void svst1q_scatter_u64offset_s64(svbool_t, int64_t *, svuint64_t, svint64_t); | ... | @@ -8955,17 +9914,17 @@ void svst1q_scatter_u64offset_s64(svbool_t, int64_t *, svuint64_t, svint64_t); |
| 8955 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_s16))) | 9914 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_s16))) |
| 8956 | void svst1q_scatter_u64offset_s16(svbool_t, int16_t *, svuint64_t, svint16_t); | 9915 | void svst1q_scatter_u64offset_s16(svbool_t, int16_t *, svuint64_t, svint16_t); |
| 8957 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_u32))) | 9916 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_u32))) |
| 8958 | void svst1wq_u32(svbool_t, uint32_t const *, svuint32_t); | 9917 | void svst1wq_u32(svbool_t, uint32_t *, svuint32_t); |
| 8959 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_f32))) | 9918 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_f32))) |
| 8960 | void svst1wq_f32(svbool_t, float32_t const *, svfloat32_t); | 9919 | void svst1wq_f32(svbool_t, float32_t *, svfloat32_t); |
| 8961 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_s32))) | 9920 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_s32))) |
| 8962 | void svst1wq_s32(svbool_t, int32_t const *, svint32_t); | 9921 | void svst1wq_s32(svbool_t, int32_t *, svint32_t); |
| 8963 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_u32))) | 9922 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_u32))) |
| 8964 | void svst1wq_vnum_u32(svbool_t, uint32_t const *, int64_t, svuint32_t); | 9923 | void svst1wq_vnum_u32(svbool_t, uint32_t *, int64_t, svuint32_t); |
| 8965 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_f32))) | 9924 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_f32))) |
| 8966 | void svst1wq_vnum_f32(svbool_t, float32_t const *, int64_t, svfloat32_t); | 9925 | void svst1wq_vnum_f32(svbool_t, float32_t *, int64_t, svfloat32_t); |
| 8967 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_s32))) | 9926 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_s32))) |
| 8968 | void svst1wq_vnum_s32(svbool_t, int32_t const *, int64_t, svint32_t); | 9927 | void svst1wq_vnum_s32(svbool_t, int32_t *, int64_t, svint32_t); |
| 8969 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u8))) | 9928 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u8))) |
| 8970 | void svst2q_u8(svbool_t, uint8_t const *, svuint8x2_t); | 9929 | void svst2q_u8(svbool_t, uint8_t const *, svuint8x2_t); |
| 8971 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u32))) | 9930 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u32))) |
| ... | @@ -9132,6 +10091,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s32))) | ... | @@ -9132,6 +10091,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s32))) |
| 9132 | svint32_t svtblq_s32(svint32_t, svuint32_t); | 10091 | svint32_t svtblq_s32(svint32_t, svuint32_t); |
| 9133 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s64))) | 10092 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s64))) |
| 9134 | svint64_t svtblq_s64(svint64_t, svuint64_t); | 10093 | svint64_t svtblq_s64(svint64_t, svuint64_t); |
| 10094 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_mf8))) | ||
| 10095 | svmfloat8_t svtblq_mf8(svmfloat8_t, svuint8_t); | ||
| 9135 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s16))) | 10096 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s16))) |
| 9136 | svint16_t svtblq_s16(svint16_t, svuint16_t); | 10097 | svint16_t svtblq_s16(svint16_t, svuint16_t); |
| 9137 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_u8))) | 10098 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_u8))) |
| ... | @@ -9156,6 +10117,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s32))) | ... | @@ -9156,6 +10117,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s32))) |
| 9156 | svint32_t svtbxq_s32(svint32_t, svint32_t, svuint32_t); | 10117 | svint32_t svtbxq_s32(svint32_t, svint32_t, svuint32_t); |
| 9157 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s64))) | 10118 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s64))) |
| 9158 | svint64_t svtbxq_s64(svint64_t, svint64_t, svuint64_t); | 10119 | svint64_t svtbxq_s64(svint64_t, svint64_t, svuint64_t); |
| 10120 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_mf8))) | ||
| 10121 | svmfloat8_t svtbxq_mf8(svmfloat8_t, svmfloat8_t, svuint8_t); | ||
| 9159 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s16))) | 10122 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s16))) |
| 9160 | svint16_t svtbxq_s16(svint16_t, svint16_t, svuint16_t); | 10123 | svint16_t svtbxq_s16(svint16_t, svint16_t, svuint16_t); |
| 9161 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_u8))) | 10124 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_u8))) |
| ... | @@ -9180,6 +10143,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s32))) | ... | @@ -9180,6 +10143,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s32))) |
| 9180 | svint32_t svuzpq1_s32(svint32_t, svint32_t); | 10143 | svint32_t svuzpq1_s32(svint32_t, svint32_t); |
| 9181 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s64))) | 10144 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s64))) |
| 9182 | svint64_t svuzpq1_s64(svint64_t, svint64_t); | 10145 | svint64_t svuzpq1_s64(svint64_t, svint64_t); |
| 10146 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_mf8))) | ||
| 10147 | svmfloat8_t svuzpq1_mf8(svmfloat8_t, svmfloat8_t); | ||
| 9183 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s16))) | 10148 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s16))) |
| 9184 | svint16_t svuzpq1_s16(svint16_t, svint16_t); | 10149 | svint16_t svuzpq1_s16(svint16_t, svint16_t); |
| 9185 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_u8))) | 10150 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_u8))) |
| ... | @@ -9204,6 +10169,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s32))) | ... | @@ -9204,6 +10169,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s32))) |
| 9204 | svint32_t svuzpq2_s32(svint32_t, svint32_t); | 10169 | svint32_t svuzpq2_s32(svint32_t, svint32_t); |
| 9205 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s64))) | 10170 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s64))) |
| 9206 | svint64_t svuzpq2_s64(svint64_t, svint64_t); | 10171 | svint64_t svuzpq2_s64(svint64_t, svint64_t); |
| 10172 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_mf8))) | ||
| 10173 | svmfloat8_t svuzpq2_mf8(svmfloat8_t, svmfloat8_t); | ||
| 9207 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s16))) | 10174 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s16))) |
| 9208 | svint16_t svuzpq2_s16(svint16_t, svint16_t); | 10175 | svint16_t svuzpq2_s16(svint16_t, svint16_t); |
| 9209 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_u8))) | 10176 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_u8))) |
| ... | @@ -9228,6 +10195,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s32))) | ... | @@ -9228,6 +10195,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s32))) |
| 9228 | svint32_t svzipq1_s32(svint32_t, svint32_t); | 10195 | svint32_t svzipq1_s32(svint32_t, svint32_t); |
| 9229 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s64))) | 10196 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s64))) |
| 9230 | svint64_t svzipq1_s64(svint64_t, svint64_t); | 10197 | svint64_t svzipq1_s64(svint64_t, svint64_t); |
| 10198 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_mf8))) | ||
| 10199 | svmfloat8_t svzipq1_mf8(svmfloat8_t, svmfloat8_t); | ||
| 9231 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s16))) | 10200 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s16))) |
| 9232 | svint16_t svzipq1_s16(svint16_t, svint16_t); | 10201 | svint16_t svzipq1_s16(svint16_t, svint16_t); |
| 9233 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_u8))) | 10202 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_u8))) |
| ... | @@ -9252,6 +10221,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s32))) | ... | @@ -9252,6 +10221,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s32))) |
| 9252 | svint32_t svzipq2_s32(svint32_t, svint32_t); | 10221 | svint32_t svzipq2_s32(svint32_t, svint32_t); |
| 9253 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s64))) | 10222 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s64))) |
| 9254 | svint64_t svzipq2_s64(svint64_t, svint64_t); | 10223 | svint64_t svzipq2_s64(svint64_t, svint64_t); |
| 10224 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_mf8))) | ||
| 10225 | svmfloat8_t svzipq2_mf8(svmfloat8_t, svmfloat8_t); | ||
| 9255 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s16))) | 10226 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s16))) |
| 9256 | svint16_t svzipq2_s16(svint16_t, svint16_t); | 10227 | svint16_t svzipq2_s16(svint16_t, svint16_t); |
| 9257 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddqv_u8))) | 10228 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddqv_u8))) |
| ... | @@ -9330,6 +10301,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s32))) | ... | @@ -9330,6 +10301,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s32))) |
| 9330 | svint32_t svextq(svint32_t, svint32_t, int32_t); | 10301 | svint32_t svextq(svint32_t, svint32_t, int32_t); |
| 9331 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s64))) | 10302 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s64))) |
| 9332 | svint64_t svextq(svint64_t, svint64_t, int32_t); | 10303 | svint64_t svextq(svint64_t, svint64_t, int32_t); |
| 10304 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_mf8))) | ||
| 10305 | svmfloat8_t svextq(svmfloat8_t, svmfloat8_t, int32_t); | ||
| 9333 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s16))) | 10306 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svextq_s16))) |
| 9334 | svint16_t svextq(svint16_t, svint16_t, int32_t); | 10307 | svint16_t svextq(svint16_t, svint16_t, int32_t); |
| 9335 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svld1q_gather_u64base_index_u32))) | 10308 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svld1q_gather_u64base_index_u32))) |
| ... | @@ -9729,17 +10702,17 @@ svuint32_t svpmov_lane_m(svuint32_t, svbool_t, uint64_t); | ... | @@ -9729,17 +10702,17 @@ svuint32_t svpmov_lane_m(svuint32_t, svbool_t, uint64_t); |
| 9729 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmov_lane_s32_m))) | 10702 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svpmov_lane_s32_m))) |
| 9730 | svint32_t svpmov_lane_m(svint32_t, svbool_t, uint64_t); | 10703 | svint32_t svpmov_lane_m(svint32_t, svbool_t, uint64_t); |
| 9731 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_u64))) | 10704 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_u64))) |
| 9732 | void svst1dq(svbool_t, uint64_t const *, svuint64_t); | 10705 | void svst1dq(svbool_t, uint64_t *, svuint64_t); |
| 9733 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_f64))) | 10706 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_f64))) |
| 9734 | void svst1dq(svbool_t, float64_t const *, svfloat64_t); | 10707 | void svst1dq(svbool_t, float64_t *, svfloat64_t); |
| 9735 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_s64))) | 10708 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_s64))) |
| 9736 | void svst1dq(svbool_t, int64_t const *, svint64_t); | 10709 | void svst1dq(svbool_t, int64_t *, svint64_t); |
| 9737 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_u64))) | 10710 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_u64))) |
| 9738 | void svst1dq_vnum(svbool_t, uint64_t const *, int64_t, svuint64_t); | 10711 | void svst1dq_vnum(svbool_t, uint64_t *, int64_t, svuint64_t); |
| 9739 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_f64))) | 10712 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_f64))) |
| 9740 | void svst1dq_vnum(svbool_t, float64_t const *, int64_t, svfloat64_t); | 10713 | void svst1dq_vnum(svbool_t, float64_t *, int64_t, svfloat64_t); |
| 9741 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_s64))) | 10714 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1dq_vnum_s64))) |
| 9742 | void svst1dq_vnum(svbool_t, int64_t const *, int64_t, svint64_t); | 10715 | void svst1dq_vnum(svbool_t, int64_t *, int64_t, svint64_t); |
| 9743 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u8))) | 10716 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u8))) |
| 9744 | void svst1q_scatter(svbool_t, svuint64_t, svuint8_t); | 10717 | void svst1q_scatter(svbool_t, svuint64_t, svuint8_t); |
| 9745 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u32))) | 10718 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_u32))) |
| ... | @@ -9808,6 +10781,26 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64b | ... | @@ -9808,6 +10781,26 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64b |
| 9808 | void svst1q_scatter_offset(svbool_t, svuint64_t, int64_t, svint64_t); | 10781 | void svst1q_scatter_offset(svbool_t, svuint64_t, int64_t, svint64_t); |
| 9809 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_offset_s16))) | 10782 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64base_offset_s16))) |
| 9810 | void svst1q_scatter_offset(svbool_t, svuint64_t, int64_t, svint16_t); | 10783 | void svst1q_scatter_offset(svbool_t, svuint64_t, int64_t, svint16_t); |
| 10784 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u32))) | ||
| 10785 | void svst1q_scatter_index(svbool_t, uint32_t *, svint64_t, svuint32_t); | ||
| 10786 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u64))) | ||
| 10787 | void svst1q_scatter_index(svbool_t, uint64_t *, svint64_t, svuint64_t); | ||
| 10788 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_u16))) | ||
| 10789 | void svst1q_scatter_index(svbool_t, uint16_t *, svint64_t, svuint16_t); | ||
| 10790 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_bf16))) | ||
| 10791 | void svst1q_scatter_index(svbool_t, bfloat16_t *, svint64_t, svbfloat16_t); | ||
| 10792 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f64))) | ||
| 10793 | void svst1q_scatter_index(svbool_t, float64_t *, svint64_t, svfloat64_t); | ||
| 10794 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f32))) | ||
| 10795 | void svst1q_scatter_index(svbool_t, float32_t *, svint64_t, svfloat32_t); | ||
| 10796 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_f16))) | ||
| 10797 | void svst1q_scatter_index(svbool_t, float16_t *, svint64_t, svfloat16_t); | ||
| 10798 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s32))) | ||
| 10799 | void svst1q_scatter_index(svbool_t, int32_t *, svint64_t, svint32_t); | ||
| 10800 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s64))) | ||
| 10801 | void svst1q_scatter_index(svbool_t, int64_t *, svint64_t, svint64_t); | ||
| 10802 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64index_s16))) | ||
| 10803 | void svst1q_scatter_index(svbool_t, int16_t *, svint64_t, svint16_t); | ||
| 9811 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u32))) | 10804 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u32))) |
| 9812 | void svst1q_scatter_index(svbool_t, uint32_t *, svuint64_t, svuint32_t); | 10805 | void svst1q_scatter_index(svbool_t, uint32_t *, svuint64_t, svuint32_t); |
| 9813 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u64))) | 10806 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_u64))) |
| ... | @@ -9828,6 +10821,30 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64i | ... | @@ -9828,6 +10821,30 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64i |
| 9828 | void svst1q_scatter_index(svbool_t, int64_t *, svuint64_t, svint64_t); | 10821 | void svst1q_scatter_index(svbool_t, int64_t *, svuint64_t, svint64_t); |
| 9829 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_s16))) | 10822 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64index_s16))) |
| 9830 | void svst1q_scatter_index(svbool_t, int16_t *, svuint64_t, svint16_t); | 10823 | void svst1q_scatter_index(svbool_t, int16_t *, svuint64_t, svint16_t); |
| 10824 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u8))) | ||
| 10825 | void svst1q_scatter_offset(svbool_t, uint8_t *, svint64_t, svuint8_t); | ||
| 10826 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u32))) | ||
| 10827 | void svst1q_scatter_offset(svbool_t, uint32_t *, svint64_t, svuint32_t); | ||
| 10828 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u64))) | ||
| 10829 | void svst1q_scatter_offset(svbool_t, uint64_t *, svint64_t, svuint64_t); | ||
| 10830 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_u16))) | ||
| 10831 | void svst1q_scatter_offset(svbool_t, uint16_t *, svint64_t, svuint16_t); | ||
| 10832 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_bf16))) | ||
| 10833 | void svst1q_scatter_offset(svbool_t, bfloat16_t *, svint64_t, svbfloat16_t); | ||
| 10834 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s8))) | ||
| 10835 | void svst1q_scatter_offset(svbool_t, int8_t *, svint64_t, svint8_t); | ||
| 10836 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f64))) | ||
| 10837 | void svst1q_scatter_offset(svbool_t, float64_t *, svint64_t, svfloat64_t); | ||
| 10838 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f32))) | ||
| 10839 | void svst1q_scatter_offset(svbool_t, float32_t *, svint64_t, svfloat32_t); | ||
| 10840 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_f16))) | ||
| 10841 | void svst1q_scatter_offset(svbool_t, float16_t *, svint64_t, svfloat16_t); | ||
| 10842 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s32))) | ||
| 10843 | void svst1q_scatter_offset(svbool_t, int32_t *, svint64_t, svint32_t); | ||
| 10844 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s64))) | ||
| 10845 | void svst1q_scatter_offset(svbool_t, int64_t *, svint64_t, svint64_t); | ||
| 10846 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_s64offset_s16))) | ||
| 10847 | void svst1q_scatter_offset(svbool_t, int16_t *, svint64_t, svint16_t); | ||
| 9831 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u8))) | 10848 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u8))) |
| 9832 | void svst1q_scatter_offset(svbool_t, uint8_t *, svuint64_t, svuint8_t); | 10849 | void svst1q_scatter_offset(svbool_t, uint8_t *, svuint64_t, svuint8_t); |
| 9833 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u32))) | 10850 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_u32))) |
| ... | @@ -9853,17 +10870,17 @@ void svst1q_scatter_offset(svbool_t, int64_t *, svuint64_t, svint64_t); | ... | @@ -9853,17 +10870,17 @@ void svst1q_scatter_offset(svbool_t, int64_t *, svuint64_t, svint64_t); |
| 9853 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_s16))) | 10870 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1q_scatter_u64offset_s16))) |
| 9854 | void svst1q_scatter_offset(svbool_t, int16_t *, svuint64_t, svint16_t); | 10871 | void svst1q_scatter_offset(svbool_t, int16_t *, svuint64_t, svint16_t); |
| 9855 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_u32))) | 10872 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_u32))) |
| 9856 | void svst1wq(svbool_t, uint32_t const *, svuint32_t); | 10873 | void svst1wq(svbool_t, uint32_t *, svuint32_t); |
| 9857 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_f32))) | 10874 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_f32))) |
| 9858 | void svst1wq(svbool_t, float32_t const *, svfloat32_t); | 10875 | void svst1wq(svbool_t, float32_t *, svfloat32_t); |
| 9859 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_s32))) | 10876 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_s32))) |
| 9860 | void svst1wq(svbool_t, int32_t const *, svint32_t); | 10877 | void svst1wq(svbool_t, int32_t *, svint32_t); |
| 9861 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_u32))) | 10878 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_u32))) |
| 9862 | void svst1wq_vnum(svbool_t, uint32_t const *, int64_t, svuint32_t); | 10879 | void svst1wq_vnum(svbool_t, uint32_t *, int64_t, svuint32_t); |
| 9863 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_f32))) | 10880 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_f32))) |
| 9864 | void svst1wq_vnum(svbool_t, float32_t const *, int64_t, svfloat32_t); | 10881 | void svst1wq_vnum(svbool_t, float32_t *, int64_t, svfloat32_t); |
| 9865 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_s32))) | 10882 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst1wq_vnum_s32))) |
| 9866 | void svst1wq_vnum(svbool_t, int32_t const *, int64_t, svint32_t); | 10883 | void svst1wq_vnum(svbool_t, int32_t *, int64_t, svint32_t); |
| 9867 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u8))) | 10884 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u8))) |
| 9868 | void svst2q(svbool_t, uint8_t const *, svuint8x2_t); | 10885 | void svst2q(svbool_t, uint8_t const *, svuint8x2_t); |
| 9869 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u32))) | 10886 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svst2q_u32))) |
| ... | @@ -10030,6 +11047,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s32))) | ... | @@ -10030,6 +11047,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s32))) |
| 10030 | svint32_t svtblq(svint32_t, svuint32_t); | 11047 | svint32_t svtblq(svint32_t, svuint32_t); |
| 10031 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s64))) | 11048 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s64))) |
| 10032 | svint64_t svtblq(svint64_t, svuint64_t); | 11049 | svint64_t svtblq(svint64_t, svuint64_t); |
| 11050 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_mf8))) | ||
| 11051 | svmfloat8_t svtblq(svmfloat8_t, svuint8_t); | ||
| 10033 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s16))) | 11052 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtblq_s16))) |
| 10034 | svint16_t svtblq(svint16_t, svuint16_t); | 11053 | svint16_t svtblq(svint16_t, svuint16_t); |
| 10035 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_u8))) | 11054 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_u8))) |
| ... | @@ -10054,6 +11073,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s32))) | ... | @@ -10054,6 +11073,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s32))) |
| 10054 | svint32_t svtbxq(svint32_t, svint32_t, svuint32_t); | 11073 | svint32_t svtbxq(svint32_t, svint32_t, svuint32_t); |
| 10055 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s64))) | 11074 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s64))) |
| 10056 | svint64_t svtbxq(svint64_t, svint64_t, svuint64_t); | 11075 | svint64_t svtbxq(svint64_t, svint64_t, svuint64_t); |
| 11076 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_mf8))) | ||
| 11077 | svmfloat8_t svtbxq(svmfloat8_t, svmfloat8_t, svuint8_t); | ||
| 10057 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s16))) | 11078 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svtbxq_s16))) |
| 10058 | svint16_t svtbxq(svint16_t, svint16_t, svuint16_t); | 11079 | svint16_t svtbxq(svint16_t, svint16_t, svuint16_t); |
| 10059 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_u8))) | 11080 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_u8))) |
| ... | @@ -10078,6 +11099,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s32))) | ... | @@ -10078,6 +11099,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s32))) |
| 10078 | svint32_t svuzpq1(svint32_t, svint32_t); | 11099 | svint32_t svuzpq1(svint32_t, svint32_t); |
| 10079 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s64))) | 11100 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s64))) |
| 10080 | svint64_t svuzpq1(svint64_t, svint64_t); | 11101 | svint64_t svuzpq1(svint64_t, svint64_t); |
| 11102 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_mf8))) | ||
| 11103 | svmfloat8_t svuzpq1(svmfloat8_t, svmfloat8_t); | ||
| 10081 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s16))) | 11104 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq1_s16))) |
| 10082 | svint16_t svuzpq1(svint16_t, svint16_t); | 11105 | svint16_t svuzpq1(svint16_t, svint16_t); |
| 10083 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_u8))) | 11106 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_u8))) |
| ... | @@ -10102,6 +11125,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s32))) | ... | @@ -10102,6 +11125,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s32))) |
| 10102 | svint32_t svuzpq2(svint32_t, svint32_t); | 11125 | svint32_t svuzpq2(svint32_t, svint32_t); |
| 10103 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s64))) | 11126 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s64))) |
| 10104 | svint64_t svuzpq2(svint64_t, svint64_t); | 11127 | svint64_t svuzpq2(svint64_t, svint64_t); |
| 11128 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_mf8))) | ||
| 11129 | svmfloat8_t svuzpq2(svmfloat8_t, svmfloat8_t); | ||
| 10105 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s16))) | 11130 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svuzpq2_s16))) |
| 10106 | svint16_t svuzpq2(svint16_t, svint16_t); | 11131 | svint16_t svuzpq2(svint16_t, svint16_t); |
| 10107 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_u8))) | 11132 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_u8))) |
| ... | @@ -10126,6 +11151,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s32))) | ... | @@ -10126,6 +11151,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s32))) |
| 10126 | svint32_t svzipq1(svint32_t, svint32_t); | 11151 | svint32_t svzipq1(svint32_t, svint32_t); |
| 10127 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s64))) | 11152 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s64))) |
| 10128 | svint64_t svzipq1(svint64_t, svint64_t); | 11153 | svint64_t svzipq1(svint64_t, svint64_t); |
| 11154 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_mf8))) | ||
| 11155 | svmfloat8_t svzipq1(svmfloat8_t, svmfloat8_t); | ||
| 10129 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s16))) | 11156 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq1_s16))) |
| 10130 | svint16_t svzipq1(svint16_t, svint16_t); | 11157 | svint16_t svzipq1(svint16_t, svint16_t); |
| 10131 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_u8))) | 11158 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_u8))) |
| ... | @@ -10150,6 +11177,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s32))) | ... | @@ -10150,6 +11177,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s32))) |
| 10150 | svint32_t svzipq2(svint32_t, svint32_t); | 11177 | svint32_t svzipq2(svint32_t, svint32_t); |
| 10151 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s64))) | 11178 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s64))) |
| 10152 | svint64_t svzipq2(svint64_t, svint64_t); | 11179 | svint64_t svzipq2(svint64_t, svint64_t); |
| 11180 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_mf8))) | ||
| 11181 | svmfloat8_t svzipq2(svmfloat8_t, svmfloat8_t); | ||
| 10153 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s16))) | 11182 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svzipq2_s16))) |
| 10154 | svint16_t svzipq2(svint16_t, svint16_t); | 11183 | svint16_t svzipq2(svint16_t, svint16_t); |
| 10155 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_bf16))) | 11184 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_bf16))) |
| ... | @@ -11522,6 +12551,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u8))) | ... | @@ -11522,6 +12551,8 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u8))) |
| 11522 | svuint8_t svdup_laneq_u8(svuint8_t, uint64_t); | 12551 | svuint8_t svdup_laneq_u8(svuint8_t, uint64_t); |
| 11523 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_s8))) | 12552 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_s8))) |
| 11524 | svint8_t svdup_laneq_s8(svint8_t, uint64_t); | 12553 | svint8_t svdup_laneq_s8(svint8_t, uint64_t); |
| 12554 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_mf8))) | ||
| 12555 | svmfloat8_t svdup_laneq_mf8(svmfloat8_t, uint64_t); | ||
| 11525 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u64))) | 12556 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u64))) |
| 11526 | svuint64_t svdup_laneq_u64(svuint64_t, uint64_t); | 12557 | svuint64_t svdup_laneq_u64(svuint64_t, uint64_t); |
| 11527 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_f64))) | 12558 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_f64))) |
| ... | @@ -11544,6 +12575,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u8))) | ... | @@ -11544,6 +12575,8 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u8))) |
| 11544 | svuint8_t svdup_laneq(svuint8_t, uint64_t); | 12575 | svuint8_t svdup_laneq(svuint8_t, uint64_t); |
| 11545 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_s8))) | 12576 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_s8))) |
| 11546 | svint8_t svdup_laneq(svint8_t, uint64_t); | 12577 | svint8_t svdup_laneq(svint8_t, uint64_t); |
| 12578 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_mf8))) | ||
| 12579 | svmfloat8_t svdup_laneq(svmfloat8_t, uint64_t); | ||
| 11547 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u64))) | 12580 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_u64))) |
| 11548 | svuint64_t svdup_laneq(svuint64_t, uint64_t); | 12581 | svuint64_t svdup_laneq(svuint64_t, uint64_t); |
| 11549 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_f64))) | 12582 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svdup_laneq_f64))) |
| ... | @@ -18424,12 +19457,6 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s64_z))) | ... | @@ -18424,12 +19457,6 @@ __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s64_z))) |
| 18424 | svint64_t svadd_s64_z(svbool_t, svint64_t, svint64_t); | 19457 | svint64_t svadd_s64_z(svbool_t, svint64_t, svint64_t); |
| 18425 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s16_z))) | 19458 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s16_z))) |
| 18426 | svint16_t svadd_s16_z(svbool_t, svint16_t, svint16_t); | 19459 | svint16_t svadd_s16_z(svbool_t, svint16_t, svint16_t); |
| 18427 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f64))) | ||
| 18428 | float64_t svadda_f64(svbool_t, float64_t, svfloat64_t); | ||
| 18429 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f32))) | ||
| 18430 | float32_t svadda_f32(svbool_t, float32_t, svfloat32_t); | ||
| 18431 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f16))) | ||
| 18432 | float16_t svadda_f16(svbool_t, float16_t, svfloat16_t); | ||
| 18433 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s8))) | 19460 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s8))) |
| 18434 | int64_t svaddv_s8(svbool_t, svint8_t); | 19461 | int64_t svaddv_s8(svbool_t, svint8_t); |
| 18435 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s32))) | 19462 | __ai __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s32))) |
| ... | @@ -24810,12 +25837,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s64_z))) | ... | @@ -24810,12 +25837,6 @@ __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s64_z))) |
| 24810 | svint64_t svadd_z(svbool_t, svint64_t, svint64_t); | 25837 | svint64_t svadd_z(svbool_t, svint64_t, svint64_t); |
| 24811 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s16_z))) | 25838 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadd_s16_z))) |
| 24812 | svint16_t svadd_z(svbool_t, svint16_t, svint16_t); | 25839 | svint16_t svadd_z(svbool_t, svint16_t, svint16_t); |
| 24813 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f64))) | ||
| 24814 | float64_t svadda(svbool_t, float64_t, svfloat64_t); | ||
| 24815 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f32))) | ||
| 24816 | float32_t svadda(svbool_t, float32_t, svfloat32_t); | ||
| 24817 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svadda_f16))) | ||
| 24818 | float16_t svadda(svbool_t, float16_t, svfloat16_t); | ||
| 24819 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s8))) | 25840 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s8))) |
| 24820 | int64_t svaddv(svbool_t, svint8_t); | 25841 | int64_t svaddv(svbool_t, svint8_t); |
| 24821 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s32))) | 25842 | __aio __attribute__((__clang_arm_builtin_alias(__builtin_sve_svaddv_s32))) |
lib/include/arm_vector_types.h+87| ... | @@ -17,9 +17,62 @@ | ... | @@ -17,9 +17,62 @@ |
| 17 | typedef float float32_t; | 17 | typedef float float32_t; |
| 18 | typedef __fp16 float16_t; | 18 | typedef __fp16 float16_t; |
| 19 | #if defined(__aarch64__) || defined(__arm64ec__) | 19 | #if defined(__aarch64__) || defined(__arm64ec__) |
| 20 | typedef __mfp8 mfloat8_t; | ||
| 20 | typedef double float64_t; | 21 | typedef double float64_t; |
| 21 | #endif | 22 | #endif |
| 22 | 23 | ||
| 24 | |||
| 25 | typedef uint64_t fpm_t; | ||
| 26 | |||
| 27 | enum __ARM_FPM_FORMAT { __ARM_FPM_E5M2, __ARM_FPM_E4M3 }; | ||
| 28 | |||
| 29 | enum __ARM_FPM_OVERFLOW { __ARM_FPM_INFNAN, __ARM_FPM_SATURATE }; | ||
| 30 | |||
| 31 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 32 | __arm_fpm_init(void) { | ||
| 33 | return 0; | ||
| 34 | } | ||
| 35 | |||
| 36 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 37 | __arm_set_fpm_src1_format(fpm_t __fpm, enum __ARM_FPM_FORMAT __format) { | ||
| 38 | return (__fpm & ~7ull) | (fpm_t)__format; | ||
| 39 | } | ||
| 40 | |||
| 41 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 42 | __arm_set_fpm_src2_format(fpm_t __fpm, enum __ARM_FPM_FORMAT __format) { | ||
| 43 | return (__fpm & ~0x38ull) | ((fpm_t)__format << 3u); | ||
| 44 | } | ||
| 45 | |||
| 46 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 47 | __arm_set_fpm_dst_format(fpm_t __fpm, enum __ARM_FPM_FORMAT __format) { | ||
| 48 | return (__fpm & ~0x1c0ull) | ((fpm_t)__format << 6u); | ||
| 49 | } | ||
| 50 | |||
| 51 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 52 | __arm_set_fpm_overflow_mul(fpm_t __fpm, enum __ARM_FPM_OVERFLOW __behaviour) { | ||
| 53 | return (__fpm & ~0x4000ull) | ((fpm_t)__behaviour << 14u); | ||
| 54 | } | ||
| 55 | |||
| 56 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 57 | __arm_set_fpm_overflow_cvt(fpm_t __fpm, enum __ARM_FPM_OVERFLOW __behaviour) { | ||
| 58 | return (__fpm & ~0x8000ull) | ((fpm_t)__behaviour << 15u); | ||
| 59 | } | ||
| 60 | |||
| 61 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 62 | __arm_set_fpm_lscale(fpm_t __fpm, uint64_t __scale) { | ||
| 63 | return (__fpm & ~0x7f0000ull) | (__scale << 16u); | ||
| 64 | } | ||
| 65 | |||
| 66 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 67 | __arm_set_fpm_nscale(fpm_t __fpm, int64_t __scale) { | ||
| 68 | return (__fpm & ~0xff000000ull) | (((fpm_t)__scale & 0xffu) << 24u); | ||
| 69 | } | ||
| 70 | |||
| 71 | static __inline__ fpm_t __attribute__((__always_inline__, __nodebug__)) | ||
| 72 | __arm_set_fpm_lscale2(fpm_t __fpm, uint64_t __scale) { | ||
| 73 | return (uint32_t)__fpm | (__scale << 32u); | ||
| 74 | } | ||
| 75 | |||
| 23 | typedef __attribute__((neon_vector_type(8))) int8_t int8x8_t; | 76 | typedef __attribute__((neon_vector_type(8))) int8_t int8x8_t; |
| 24 | typedef __attribute__((neon_vector_type(16))) int8_t int8x16_t; | 77 | typedef __attribute__((neon_vector_type(16))) int8_t int8x16_t; |
| 25 | typedef __attribute__((neon_vector_type(4))) int16_t int16x4_t; | 78 | typedef __attribute__((neon_vector_type(4))) int16_t int16x4_t; |
| ... | @@ -36,6 +89,10 @@ typedef __attribute__((neon_vector_type(2))) uint32_t uint32x2_t; | ... | @@ -36,6 +89,10 @@ typedef __attribute__((neon_vector_type(2))) uint32_t uint32x2_t; |
| 36 | typedef __attribute__((neon_vector_type(4))) uint32_t uint32x4_t; | 89 | typedef __attribute__((neon_vector_type(4))) uint32_t uint32x4_t; |
| 37 | typedef __attribute__((neon_vector_type(1))) uint64_t uint64x1_t; | 90 | typedef __attribute__((neon_vector_type(1))) uint64_t uint64x1_t; |
| 38 | typedef __attribute__((neon_vector_type(2))) uint64_t uint64x2_t; | 91 | typedef __attribute__((neon_vector_type(2))) uint64_t uint64x2_t; |
| 92 | #if defined(__aarch64__) || defined(__arm64ec__) | ||
| 93 | typedef __attribute__((neon_vector_type(8))) mfloat8_t mfloat8x8_t; | ||
| 94 | typedef __attribute__((neon_vector_type(16))) mfloat8_t mfloat8x16_t; | ||
| 95 | #endif | ||
| 39 | typedef __attribute__((neon_vector_type(4))) float16_t float16x4_t; | 96 | typedef __attribute__((neon_vector_type(4))) float16_t float16x4_t; |
| 40 | typedef __attribute__((neon_vector_type(8))) float16_t float16x8_t; | 97 | typedef __attribute__((neon_vector_type(8))) float16_t float16x8_t; |
| 41 | typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t; | 98 | typedef __attribute__((neon_vector_type(2))) float32_t float32x2_t; |
| ... | @@ -109,6 +166,16 @@ typedef struct uint64x2x2_t { | ... | @@ -109,6 +166,16 @@ typedef struct uint64x2x2_t { |
| 109 | uint64x2_t val[2]; | 166 | uint64x2_t val[2]; |
| 110 | } uint64x2x2_t; | 167 | } uint64x2x2_t; |
| 111 | 168 | ||
| 169 | #if defined(__aarch64__) || defined(__arm64ec__) | ||
| 170 | typedef struct mfloat8x8x2_t { | ||
| 171 | mfloat8x8_t val[2]; | ||
| 172 | } mfloat8x8x2_t; | ||
| 173 | |||
| 174 | typedef struct mfloat8x16x2_t { | ||
| 175 | mfloat8x16_t val[2]; | ||
| 176 | } mfloat8x16x2_t; | ||
| 177 | |||
| 178 | #endif | ||
| 112 | typedef struct float16x4x2_t { | 179 | typedef struct float16x4x2_t { |
| 113 | float16x4_t val[2]; | 180 | float16x4_t val[2]; |
| 114 | } float16x4x2_t; | 181 | } float16x4x2_t; |
| ... | @@ -199,6 +266,16 @@ typedef struct uint64x2x3_t { | ... | @@ -199,6 +266,16 @@ typedef struct uint64x2x3_t { |
| 199 | uint64x2_t val[3]; | 266 | uint64x2_t val[3]; |
| 200 | } uint64x2x3_t; | 267 | } uint64x2x3_t; |
| 201 | 268 | ||
| 269 | #if defined(__aarch64__) || defined(__arm64ec__) | ||
| 270 | typedef struct mfloat8x8x3_t { | ||
| 271 | mfloat8x8_t val[3]; | ||
| 272 | } mfloat8x8x3_t; | ||
| 273 | |||
| 274 | typedef struct mfloat8x16x3_t { | ||
| 275 | mfloat8x16_t val[3]; | ||
| 276 | } mfloat8x16x3_t; | ||
| 277 | |||
| 278 | #endif | ||
| 202 | typedef struct float16x4x3_t { | 279 | typedef struct float16x4x3_t { |
| 203 | float16x4_t val[3]; | 280 | float16x4_t val[3]; |
| 204 | } float16x4x3_t; | 281 | } float16x4x3_t; |
| ... | @@ -289,6 +366,16 @@ typedef struct uint64x2x4_t { | ... | @@ -289,6 +366,16 @@ typedef struct uint64x2x4_t { |
| 289 | uint64x2_t val[4]; | 366 | uint64x2_t val[4]; |
| 290 | } uint64x2x4_t; | 367 | } uint64x2x4_t; |
| 291 | 368 | ||
| 369 | #if defined(__aarch64__) || defined(__arm64ec__) | ||
| 370 | typedef struct mfloat8x8x4_t { | ||
| 371 | mfloat8x8_t val[4]; | ||
| 372 | } mfloat8x8x4_t; | ||
| 373 | |||
| 374 | typedef struct mfloat8x16x4_t { | ||
| 375 | mfloat8x16_t val[4]; | ||
| 376 | } mfloat8x16x4_t; | ||
| 377 | |||
| 378 | #endif | ||
| 292 | typedef struct float16x4x4_t { | 379 | typedef struct float16x4x4_t { |
| 293 | float16x4_t val[4]; | 380 | float16x4_t val[4]; |
| 294 | } float16x4x4_t; | 381 | } float16x4x4_t; |
lib/include/avx10_2_512bf16intrin.h created+561| ... | @@ -0,0 +1,561 @@ | ||
| 1 | /*===----------- avx10_2_512bf16intrin.h - AVX10-BF16 intrinsics ---------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512bf16intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifdef __SSE2__ | ||
| 15 | |||
| 16 | #ifndef __AVX10_2_512BF16INTRIN_H | ||
| 17 | #define __AVX10_2_512BF16INTRIN_H | ||
| 18 | |||
| 19 | /* Define the default attributes for the functions in this file. */ | ||
| 20 | typedef __bf16 __m512bh_u __attribute__((__vector_size__(64), __aligned__(1))); | ||
| 21 | |||
| 22 | /* Define the default attributes for the functions in this file. */ | ||
| 23 | #define __DEFAULT_FN_ATTRS512 \ | ||
| 24 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \ | ||
| 25 | __min_vector_width__(512))) | ||
| 26 | |||
| 27 | static __inline __m512bh __DEFAULT_FN_ATTRS512 _mm512_setzero_pbh(void) { | ||
| 28 | return __builtin_bit_cast(__m512bh, _mm512_setzero_ps()); | ||
| 29 | } | ||
| 30 | |||
| 31 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_undefined_pbh(void) { | ||
| 32 | return (__m512bh)__builtin_ia32_undef512(); | ||
| 33 | } | ||
| 34 | |||
| 35 | static __inline __m512bh __DEFAULT_FN_ATTRS512 _mm512_set1_pbh(__bf16 bf) { | ||
| 36 | return (__m512bh)(__v32bf){bf, bf, bf, bf, bf, bf, bf, bf, bf, bf, bf, | ||
| 37 | bf, bf, bf, bf, bf, bf, bf, bf, bf, bf, bf, | ||
| 38 | bf, bf, bf, bf, bf, bf, bf, bf, bf, bf}; | ||
| 39 | } | ||
| 40 | |||
| 41 | static __inline __m512bh __DEFAULT_FN_ATTRS512 _mm512_set_pbh( | ||
| 42 | __bf16 bf1, __bf16 bf2, __bf16 bf3, __bf16 bf4, __bf16 bf5, __bf16 bf6, | ||
| 43 | __bf16 bf7, __bf16 bf8, __bf16 bf9, __bf16 bf10, __bf16 bf11, __bf16 bf12, | ||
| 44 | __bf16 bf13, __bf16 bf14, __bf16 bf15, __bf16 bf16, __bf16 bf17, | ||
| 45 | __bf16 bf18, __bf16 bf19, __bf16 bf20, __bf16 bf21, __bf16 bf22, | ||
| 46 | __bf16 bf23, __bf16 bf24, __bf16 bf25, __bf16 bf26, __bf16 bf27, | ||
| 47 | __bf16 bf28, __bf16 bf29, __bf16 bf30, __bf16 bf31, __bf16 bf32) { | ||
| 48 | return (__m512bh)(__v32bf){bf32, bf31, bf30, bf29, bf28, bf27, bf26, bf25, | ||
| 49 | bf24, bf23, bf22, bf21, bf20, bf19, bf18, bf17, | ||
| 50 | bf16, bf15, bf14, bf13, bf12, bf11, bf10, bf9, | ||
| 51 | bf8, bf7, bf6, bf5, bf4, bf3, bf2, bf1}; | ||
| 52 | } | ||
| 53 | |||
| 54 | #define _mm512_setr_pbh(bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8, bf9, bf10, \ | ||
| 55 | bf11, bf12, bf13, bf14, bf15, bf16, bf17, bf18, bf19, \ | ||
| 56 | bf20, bf21, bf22, bf23, bf24, bf25, bf26, bf27, bf28, \ | ||
| 57 | bf29, bf30, bf31, bf32) \ | ||
| 58 | _mm512_set_pbh((bf32), (bf31), (bf30), (bf29), (bf28), (bf27), (bf26), \ | ||
| 59 | (bf25), (bf24), (bf23), (bf22), (bf21), (bf20), (bf19), \ | ||
| 60 | (bf18), (bf17), (bf16), (bf15), (bf14), (bf13), (bf12), \ | ||
| 61 | (bf11), (bf10), (bf9), (bf8), (bf7), (bf6), (bf5), (bf4), \ | ||
| 62 | (bf3), (bf2), (bf1)) | ||
| 63 | |||
| 64 | static __inline__ __m512 __DEFAULT_FN_ATTRS512 | ||
| 65 | _mm512_castbf16_ps(__m512bh __a) { | ||
| 66 | return (__m512)__a; | ||
| 67 | } | ||
| 68 | |||
| 69 | static __inline__ __m512d __DEFAULT_FN_ATTRS512 | ||
| 70 | _mm512_castbf16_pd(__m512bh __a) { | ||
| 71 | return (__m512d)__a; | ||
| 72 | } | ||
| 73 | |||
| 74 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 75 | _mm512_castbf16_si512(__m512bh __a) { | ||
| 76 | return (__m512i)__a; | ||
| 77 | } | ||
| 78 | |||
| 79 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_castps_pbh(__m512 __a) { | ||
| 80 | return (__m512bh)__a; | ||
| 81 | } | ||
| 82 | |||
| 83 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 84 | _mm512_castpd_pbh(__m512d __a) { | ||
| 85 | return (__m512bh)__a; | ||
| 86 | } | ||
| 87 | |||
| 88 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 89 | _mm512_castsi512_pbh(__m512i __a) { | ||
| 90 | return (__m512bh)__a; | ||
| 91 | } | ||
| 92 | |||
| 93 | static __inline__ __m128bh __DEFAULT_FN_ATTRS512 | ||
| 94 | _mm512_castbf16512_pbh128(__m512bh __a) { | ||
| 95 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7); | ||
| 96 | } | ||
| 97 | |||
| 98 | static __inline__ __m256bh __DEFAULT_FN_ATTRS512 | ||
| 99 | _mm512_castbf16512_pbh256(__m512bh __a) { | ||
| 100 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, | ||
| 101 | 12, 13, 14, 15); | ||
| 102 | } | ||
| 103 | |||
| 104 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 105 | _mm512_castbf16128_pbh512(__m128bh __a) { | ||
| 106 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, -1, -1, -1, | ||
| 107 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 108 | -1, -1, -1, -1, -1, -1, -1, -1, -1); | ||
| 109 | } | ||
| 110 | |||
| 111 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 112 | _mm512_castbf16256_pbh512(__m256bh __a) { | ||
| 113 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, | ||
| 114 | 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 115 | -1, -1, -1, -1, -1, -1, -1, -1); | ||
| 116 | } | ||
| 117 | |||
| 118 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 119 | _mm512_zextbf16128_pbh512(__m128bh __a) { | ||
| 120 | return __builtin_shufflevector( | ||
| 121 | __a, (__v8bf)_mm_setzero_pbh(), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, | ||
| 122 | 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15, 8, 9, 10, 11, 12, 13, 14, 15); | ||
| 123 | } | ||
| 124 | |||
| 125 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 126 | _mm512_zextbf16256_pbh512(__m256bh __a) { | ||
| 127 | return __builtin_shufflevector(__a, (__v16bf)_mm256_setzero_pbh(), 0, 1, 2, 3, | ||
| 128 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, | ||
| 129 | 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, | ||
| 130 | 29, 30, 31); | ||
| 131 | } | ||
| 132 | |||
| 133 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_abs_pbh(__m512bh __A) { | ||
| 134 | return (__m512bh)_mm512_and_epi32(_mm512_set1_epi32(0x7FFF7FFF), | ||
| 135 | (__m512i)__A); | ||
| 136 | } | ||
| 137 | |||
| 138 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 139 | _mm512_load_pbh(void const *__p) { | ||
| 140 | return *(const __m512bh *)__p; | ||
| 141 | } | ||
| 142 | |||
| 143 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 144 | _mm512_loadu_pbh(void const *__p) { | ||
| 145 | struct __loadu_pbh { | ||
| 146 | __m512bh_u __v; | ||
| 147 | } __attribute__((__packed__, __may_alias__)); | ||
| 148 | return ((const struct __loadu_pbh *)__p)->__v; | ||
| 149 | } | ||
| 150 | |||
| 151 | static __inline__ void __DEFAULT_FN_ATTRS512 _mm512_store_pbh(void *__P, | ||
| 152 | __m512bh __A) { | ||
| 153 | *(__m512bh *)__P = __A; | ||
| 154 | } | ||
| 155 | |||
| 156 | static __inline__ void __DEFAULT_FN_ATTRS512 _mm512_storeu_pbh(void *__P, | ||
| 157 | __m512bh __A) { | ||
| 158 | struct __storeu_pbh { | ||
| 159 | __m512bh_u __v; | ||
| 160 | } __attribute__((__packed__, __may_alias__)); | ||
| 161 | ((struct __storeu_pbh *)__P)->__v = __A; | ||
| 162 | } | ||
| 163 | |||
| 164 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 165 | _mm512_mask_blend_pbh(__mmask32 __U, __m512bh __A, __m512bh __W) { | ||
| 166 | return (__m512bh)__builtin_ia32_selectpbf_512((__mmask32)__U, (__v32bf)__W, | ||
| 167 | (__v32bf)__A); | ||
| 168 | } | ||
| 169 | |||
| 170 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 171 | _mm512_permutex2var_pbh(__m512bh __A, __m512i __I, __m512bh __B) { | ||
| 172 | return (__m512bh)__builtin_ia32_vpermi2varhi512((__v32hi)__A, (__v32hi)__I, | ||
| 173 | (__v32hi)__B); | ||
| 174 | } | ||
| 175 | |||
| 176 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 177 | _mm512_permutexvar_pbh(__m512i __A, __m512bh __B) { | ||
| 178 | return (__m512bh)__builtin_ia32_permvarhi512((__v32hi)__B, (__v32hi)__A); | ||
| 179 | } | ||
| 180 | |||
| 181 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_add_pbh(__m512bh __A, | ||
| 182 | __m512bh __B) { | ||
| 183 | return (__m512bh)((__v32bf)__A + (__v32bf)__B); | ||
| 184 | } | ||
| 185 | |||
| 186 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 187 | _mm512_mask_add_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 188 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 189 | (__mmask32)__U, (__v32bf)_mm512_add_pbh(__A, __B), (__v32bf)__W); | ||
| 190 | } | ||
| 191 | |||
| 192 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 193 | _mm512_maskz_add_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 194 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 195 | (__mmask32)__U, (__v32bf)_mm512_add_pbh(__A, __B), | ||
| 196 | (__v32bf)_mm512_setzero_pbh()); | ||
| 197 | } | ||
| 198 | |||
| 199 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_sub_pbh(__m512bh __A, | ||
| 200 | __m512bh __B) { | ||
| 201 | return (__m512bh)((__v32bf)__A - (__v32bf)__B); | ||
| 202 | } | ||
| 203 | |||
| 204 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 205 | _mm512_mask_sub_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 206 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 207 | (__mmask32)__U, (__v32bf)_mm512_sub_pbh(__A, __B), (__v32bf)__W); | ||
| 208 | } | ||
| 209 | |||
| 210 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 211 | _mm512_maskz_sub_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 212 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 213 | (__mmask32)__U, (__v32bf)_mm512_sub_pbh(__A, __B), | ||
| 214 | (__v32bf)_mm512_setzero_pbh()); | ||
| 215 | } | ||
| 216 | |||
| 217 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mul_pbh(__m512bh __A, | ||
| 218 | __m512bh __B) { | ||
| 219 | return (__m512bh)((__v32bf)__A * (__v32bf)__B); | ||
| 220 | } | ||
| 221 | |||
| 222 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 223 | _mm512_mask_mul_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 224 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 225 | (__mmask32)__U, (__v32bf)_mm512_mul_pbh(__A, __B), (__v32bf)__W); | ||
| 226 | } | ||
| 227 | |||
| 228 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 229 | _mm512_maskz_mul_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 230 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 231 | (__mmask32)__U, (__v32bf)_mm512_mul_pbh(__A, __B), | ||
| 232 | (__v32bf)_mm512_setzero_pbh()); | ||
| 233 | } | ||
| 234 | |||
| 235 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_div_pbh(__m512bh __A, | ||
| 236 | __m512bh __B) { | ||
| 237 | return (__m512bh)((__v32bf)__A / (__v32bf)__B); | ||
| 238 | } | ||
| 239 | |||
| 240 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 241 | _mm512_mask_div_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 242 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 243 | (__mmask32)__U, (__v32bf)_mm512_div_pbh(__A, __B), (__v32bf)__W); | ||
| 244 | } | ||
| 245 | |||
| 246 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 247 | _mm512_maskz_div_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 248 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 249 | (__mmask32)__U, (__v32bf)_mm512_div_pbh(__A, __B), | ||
| 250 | (__v32bf)_mm512_setzero_pbh()); | ||
| 251 | } | ||
| 252 | |||
| 253 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_max_pbh(__m512bh __A, | ||
| 254 | __m512bh __B) { | ||
| 255 | return (__m512bh)__builtin_ia32_vmaxbf16512((__v32bf)__A, (__v32bf)__B); | ||
| 256 | } | ||
| 257 | |||
| 258 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 259 | _mm512_mask_max_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 260 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 261 | (__mmask32)__U, (__v32bf)_mm512_max_pbh(__A, __B), (__v32bf)__W); | ||
| 262 | } | ||
| 263 | |||
| 264 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 265 | _mm512_maskz_max_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 266 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 267 | (__mmask32)__U, (__v32bf)_mm512_max_pbh(__A, __B), | ||
| 268 | (__v32bf)_mm512_setzero_pbh()); | ||
| 269 | } | ||
| 270 | |||
| 271 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_min_pbh(__m512bh __A, | ||
| 272 | __m512bh __B) { | ||
| 273 | return (__m512bh)__builtin_ia32_vminbf16512((__v32bf)__A, (__v32bf)__B); | ||
| 274 | } | ||
| 275 | |||
| 276 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 277 | _mm512_mask_min_pbh(__m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 278 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 279 | (__mmask32)__U, (__v32bf)_mm512_min_pbh(__A, __B), (__v32bf)__W); | ||
| 280 | } | ||
| 281 | |||
| 282 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 283 | _mm512_maskz_min_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 284 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 285 | (__mmask32)__U, (__v32bf)_mm512_min_pbh(__A, __B), | ||
| 286 | (__v32bf)_mm512_setzero_pbh()); | ||
| 287 | } | ||
| 288 | |||
| 289 | #define _mm512_cmp_pbh_mask(__A, __B, __P) \ | ||
| 290 | ((__mmask32)__builtin_ia32_vcmpbf16512_mask((__v32bf)(__m512bh)(__A), \ | ||
| 291 | (__v32bf)(__m512bh)(__B), \ | ||
| 292 | (int)(__P), (__mmask32) - 1)) | ||
| 293 | |||
| 294 | #define _mm512_mask_cmp_pbh_mask(__U, __A, __B, __P) \ | ||
| 295 | ((__mmask32)__builtin_ia32_vcmpbf16512_mask((__v32bf)(__m512bh)(__A), \ | ||
| 296 | (__v32bf)(__m512bh)(__B), \ | ||
| 297 | (int)(__P), (__mmask32)(__U))) | ||
| 298 | |||
| 299 | #define _mm512_mask_fpclass_pbh_mask(__U, __A, imm) \ | ||
| 300 | ((__mmask32)__builtin_ia32_vfpclassbf16512_mask( \ | ||
| 301 | (__v32bf)(__m512bh)(__A), (int)(imm), (__mmask32)(__U))) | ||
| 302 | |||
| 303 | #define _mm512_fpclass_pbh_mask(__A, imm) \ | ||
| 304 | ((__mmask32)__builtin_ia32_vfpclassbf16512_mask( \ | ||
| 305 | (__v32bf)(__m512bh)(__A), (int)(imm), (__mmask32) - 1)) | ||
| 306 | |||
| 307 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 308 | _mm512_scalef_pbh(__m512bh __A, __m512bh __B) { | ||
| 309 | return (__m512bh)__builtin_ia32_vscalefbf16512_mask( | ||
| 310 | (__v32bf)__A, (__v32bf)__B, (__v32bf)_mm512_undefined_pbh(), | ||
| 311 | (__mmask32)-1); | ||
| 312 | } | ||
| 313 | |||
| 314 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask_scalef_pbh( | ||
| 315 | __m512bh __W, __mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 316 | return (__m512bh)__builtin_ia32_vscalefbf16512_mask( | ||
| 317 | (__v32bf)__A, (__v32bf)__B, (__v32bf)__W, (__mmask32)__U); | ||
| 318 | } | ||
| 319 | |||
| 320 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 321 | _mm512_maskz_scalef_pbh(__mmask32 __U, __m512bh __A, __m512bh __B) { | ||
| 322 | return (__m512bh)__builtin_ia32_vscalefbf16512_mask( | ||
| 323 | (__v32bf)__A, (__v32bf)__B, (__v32bf)_mm512_setzero_pbh(), | ||
| 324 | (__mmask32)__U); | ||
| 325 | } | ||
| 326 | |||
| 327 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_rcp_pbh(__m512bh __A) { | ||
| 328 | return (__m512bh)__builtin_ia32_vrcpbf16512_mask( | ||
| 329 | (__v32bf)__A, (__v32bf)_mm512_undefined_pbh(), (__mmask32)-1); | ||
| 330 | } | ||
| 331 | |||
| 332 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 333 | _mm512_mask_rcp_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) { | ||
| 334 | return (__m512bh)__builtin_ia32_vrcpbf16512_mask((__v32bf)__A, (__v32bf)__W, | ||
| 335 | (__mmask32)__U); | ||
| 336 | } | ||
| 337 | |||
| 338 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 339 | _mm512_maskz_rcp_pbh(__mmask32 __U, __m512bh __A) { | ||
| 340 | return (__m512bh)__builtin_ia32_vrcpbf16512_mask( | ||
| 341 | (__v32bf)__A, (__v32bf)_mm512_setzero_pbh(), (__mmask32)__U); | ||
| 342 | } | ||
| 343 | |||
| 344 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 345 | _mm512_getexp_pbh(__m512bh __A) { | ||
| 346 | return (__m512bh)__builtin_ia32_vgetexpbf16512_mask( | ||
| 347 | (__v32bf)__A, (__v32bf)_mm512_undefined_pbh(), (__mmask32)-1); | ||
| 348 | } | ||
| 349 | |||
| 350 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 351 | _mm512_mask_getexp_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) { | ||
| 352 | return (__m512bh)__builtin_ia32_vgetexpbf16512_mask( | ||
| 353 | (__v32bf)__A, (__v32bf)__W, (__mmask32)__U); | ||
| 354 | } | ||
| 355 | |||
| 356 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 357 | _mm512_maskz_getexp_pbh(__mmask32 __U, __m512bh __A) { | ||
| 358 | return (__m512bh)__builtin_ia32_vgetexpbf16512_mask( | ||
| 359 | (__v32bf)__A, (__v32bf)_mm512_setzero_pbh(), (__mmask32)__U); | ||
| 360 | } | ||
| 361 | |||
| 362 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 363 | _mm512_rsqrt_pbh(__m512bh __A) { | ||
| 364 | return (__m512bh)__builtin_ia32_vrsqrtbf16512_mask( | ||
| 365 | (__v32bf)__A, (__v32bf)_mm512_undefined_pbh(), (__mmask32)-1); | ||
| 366 | } | ||
| 367 | |||
| 368 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 369 | _mm512_mask_rsqrt_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) { | ||
| 370 | return (__m512bh)__builtin_ia32_vrsqrtbf16512_mask((__v32bf)__A, (__v32bf)__W, | ||
| 371 | (__mmask32)__U); | ||
| 372 | } | ||
| 373 | |||
| 374 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 375 | _mm512_maskz_rsqrt_pbh(__mmask32 __U, __m512bh __A) { | ||
| 376 | return (__m512bh)__builtin_ia32_vrsqrtbf16512_mask( | ||
| 377 | (__v32bf)__A, (__v32bf)_mm512_setzero_pbh(), (__mmask32)__U); | ||
| 378 | } | ||
| 379 | |||
| 380 | #define _mm512_reduce_pbh(__A, imm) \ | ||
| 381 | ((__m512bh)__builtin_ia32_vreducebf16512_mask( \ | ||
| 382 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)_mm512_undefined_pbh(), \ | ||
| 383 | (__mmask32) - 1)) | ||
| 384 | |||
| 385 | #define _mm512_mask_reduce_pbh(__W, __U, __A, imm) \ | ||
| 386 | ((__m512bh)__builtin_ia32_vreducebf16512_mask( \ | ||
| 387 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)(__m512bh)(__W), \ | ||
| 388 | (__mmask32)(__U))) | ||
| 389 | |||
| 390 | #define _mm512_maskz_reduce_pbh(__U, __A, imm) \ | ||
| 391 | ((__m512bh)__builtin_ia32_vreducebf16512_mask( \ | ||
| 392 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)_mm512_setzero_pbh(), \ | ||
| 393 | (__mmask32)(__U))) | ||
| 394 | |||
| 395 | #define _mm512_roundscale_pbh(__A, imm) \ | ||
| 396 | ((__m512bh)__builtin_ia32_vrndscalebf16_mask( \ | ||
| 397 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)_mm512_setzero_pbh(), \ | ||
| 398 | (__mmask32) - 1)) | ||
| 399 | |||
| 400 | #define _mm512_mask_roundscale_pbh(__W, __U, __A, imm) \ | ||
| 401 | ((__m512bh)__builtin_ia32_vrndscalebf16_mask( \ | ||
| 402 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)(__m512bh)(__W), \ | ||
| 403 | (__mmask32)(__U))) | ||
| 404 | |||
| 405 | #define _mm512_maskz_roundscale_pbh(__U, __A, imm) \ | ||
| 406 | ((__m512bh)__builtin_ia32_vrndscalebf16_mask( \ | ||
| 407 | (__v32bf)(__m512bh)(__A), (int)(imm), (__v32bf)_mm512_setzero_pbh(), \ | ||
| 408 | (__mmask32)(__U))) | ||
| 409 | |||
| 410 | #define _mm512_getmant_pbh(__A, __B, __C) \ | ||
| 411 | ((__m512bh)__builtin_ia32_vgetmantbf16512_mask( \ | ||
| 412 | (__v32bf)(__m512bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 413 | (__v32bf)_mm512_undefined_pbh(), (__mmask32) - 1)) | ||
| 414 | |||
| 415 | #define _mm512_mask_getmant_pbh(__W, __U, __A, __B, __C) \ | ||
| 416 | ((__m512bh)__builtin_ia32_vgetmantbf16512_mask( \ | ||
| 417 | (__v32bf)(__m512bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 418 | (__v32bf)(__m512bh)(__W), (__mmask32)(__U))) | ||
| 419 | |||
| 420 | #define _mm512_maskz_getmant_pbh(__U, __A, __B, __C) \ | ||
| 421 | ((__m512bh)__builtin_ia32_vgetmantbf16512_mask( \ | ||
| 422 | (__v32bf)(__m512bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 423 | (__v32bf)_mm512_setzero_pbh(), (__mmask32)(__U))) | ||
| 424 | |||
| 425 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_sqrt_pbh(__m512bh __A) { | ||
| 426 | return (__m512bh)__builtin_ia32_vsqrtbf16512((__v32bf)__A); | ||
| 427 | } | ||
| 428 | |||
| 429 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 430 | _mm512_mask_sqrt_pbh(__m512bh __W, __mmask32 __U, __m512bh __A) { | ||
| 431 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 432 | (__mmask32)__U, (__v32bf)_mm512_sqrt_pbh(__A), (__v32bf)__W); | ||
| 433 | } | ||
| 434 | |||
| 435 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 436 | _mm512_maskz_sqrt_pbh(__mmask32 __U, __m512bh __A) { | ||
| 437 | return (__m512bh)__builtin_ia32_selectpbf_512((__mmask32)__U, | ||
| 438 | (__v32bf)_mm512_sqrt_pbh(__A), | ||
| 439 | (__v32bf)_mm512_setzero_pbh()); | ||
| 440 | } | ||
| 441 | |||
| 442 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 443 | _mm512_fmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 444 | return (__m512bh)__builtin_ia32_vfmaddnepbh512((__v32bf)__A, (__v32bf)__B, | ||
| 445 | (__v32bf)__C); | ||
| 446 | } | ||
| 447 | |||
| 448 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 449 | _mm512_mask_fmadd_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) { | ||
| 450 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 451 | (__mmask32)__U, | ||
| 452 | _mm512_fmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), (__v32bf)__A); | ||
| 453 | } | ||
| 454 | |||
| 455 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask3_fmadd_pbh( | ||
| 456 | __m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) { | ||
| 457 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 458 | (__mmask32)__U, | ||
| 459 | _mm512_fmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), (__v32bf)__C); | ||
| 460 | } | ||
| 461 | |||
| 462 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_maskz_fmadd_pbh( | ||
| 463 | __mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 464 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 465 | (__mmask32)__U, | ||
| 466 | _mm512_fmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 467 | (__v32bf)_mm512_setzero_pbh()); | ||
| 468 | } | ||
| 469 | |||
| 470 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 471 | _mm512_fmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 472 | return (__m512bh)__builtin_ia32_vfmaddnepbh512((__v32bf)__A, (__v32bf)__B, | ||
| 473 | -(__v32bf)__C); | ||
| 474 | } | ||
| 475 | |||
| 476 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 477 | _mm512_mask_fmsub_pbh(__m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) { | ||
| 478 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 479 | (__mmask32)__U, | ||
| 480 | _mm512_fmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), (__v32bf)__A); | ||
| 481 | } | ||
| 482 | |||
| 483 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask3_fmsub_pbh( | ||
| 484 | __m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) { | ||
| 485 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 486 | (__mmask32)__U, | ||
| 487 | _mm512_fmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), (__v32bf)__C); | ||
| 488 | } | ||
| 489 | |||
| 490 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_maskz_fmsub_pbh( | ||
| 491 | __mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 492 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 493 | (__mmask32)__U, | ||
| 494 | _mm512_fmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 495 | (__v32bf)_mm512_setzero_pbh()); | ||
| 496 | } | ||
| 497 | |||
| 498 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 499 | _mm512_fnmadd_pbh(__m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 500 | return (__m512bh)__builtin_ia32_vfmaddnepbh512((__v32bf)__A, -(__v32bf)__B, | ||
| 501 | (__v32bf)__C); | ||
| 502 | } | ||
| 503 | |||
| 504 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask_fnmadd_pbh( | ||
| 505 | __m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) { | ||
| 506 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 507 | (__mmask32)__U, | ||
| 508 | _mm512_fnmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 509 | (__v32bf)__A); | ||
| 510 | } | ||
| 511 | |||
| 512 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask3_fnmadd_pbh( | ||
| 513 | __m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) { | ||
| 514 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 515 | (__mmask32)__U, | ||
| 516 | _mm512_fnmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 517 | (__v32bf)__C); | ||
| 518 | } | ||
| 519 | |||
| 520 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_maskz_fnmadd_pbh( | ||
| 521 | __mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 522 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 523 | (__mmask32)__U, | ||
| 524 | _mm512_fnmadd_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 525 | (__v32bf)_mm512_setzero_pbh()); | ||
| 526 | } | ||
| 527 | |||
| 528 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 | ||
| 529 | _mm512_fnmsub_pbh(__m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 530 | return (__m512bh)__builtin_ia32_vfmaddnepbh512((__v32bf)__A, -(__v32bf)__B, | ||
| 531 | -(__v32bf)__C); | ||
| 532 | } | ||
| 533 | |||
| 534 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask_fnmsub_pbh( | ||
| 535 | __m512bh __A, __mmask32 __U, __m512bh __B, __m512bh __C) { | ||
| 536 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 537 | (__mmask32)__U, | ||
| 538 | _mm512_fnmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 539 | (__v32bf)__A); | ||
| 540 | } | ||
| 541 | |||
| 542 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_mask3_fnmsub_pbh( | ||
| 543 | __m512bh __A, __m512bh __B, __m512bh __C, __mmask32 __U) { | ||
| 544 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 545 | (__mmask32)__U, | ||
| 546 | _mm512_fnmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 547 | (__v32bf)__C); | ||
| 548 | } | ||
| 549 | |||
| 550 | static __inline__ __m512bh __DEFAULT_FN_ATTRS512 _mm512_maskz_fnmsub_pbh( | ||
| 551 | __mmask32 __U, __m512bh __A, __m512bh __B, __m512bh __C) { | ||
| 552 | return (__m512bh)__builtin_ia32_selectpbf_512( | ||
| 553 | (__mmask32)__U, | ||
| 554 | _mm512_fnmsub_pbh((__v32bf)__A, (__v32bf)__B, (__v32bf)__C), | ||
| 555 | (__v32bf)_mm512_setzero_pbh()); | ||
| 556 | } | ||
| 557 | |||
| 558 | #undef __DEFAULT_FN_ATTRS512 | ||
| 559 | |||
| 560 | #endif | ||
| 561 | #endif | ||
lib/include/avx10_2_512convertintrin.h created+320| ... | @@ -0,0 +1,320 @@ | ||
| 1 | /*===--------- avx10_2_512convertintrin.h - AVX10_2_512CONVERT -------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512convertintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifdef __SSE2__ | ||
| 15 | |||
| 16 | #ifndef __AVX10_2_512CONVERTINTRIN_H | ||
| 17 | #define __AVX10_2_512CONVERTINTRIN_H | ||
| 18 | |||
| 19 | /* Define the default attributes for the functions in this file. */ | ||
| 20 | #define __DEFAULT_FN_ATTRS512 \ | ||
| 21 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \ | ||
| 22 | __min_vector_width__(512))) | ||
| 23 | |||
| 24 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 _mm512_cvtx2ps_ph(__m512 __A, | ||
| 25 | __m512 __B) { | ||
| 26 | return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( | ||
| 27 | (__v16sf)__A, (__v16sf)__B, (__v32hf)_mm512_setzero_ph(), (__mmask32)(-1), | ||
| 28 | _MM_FROUND_CUR_DIRECTION); | ||
| 29 | } | ||
| 30 | |||
| 31 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 | ||
| 32 | _mm512_mask_cvtx2ps_ph(__m512h __W, __mmask32 __U, __m512 __A, __m512 __B) { | ||
| 33 | return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( | ||
| 34 | (__v16sf)__A, (__v16sf)__B, (__v32hf)__W, (__mmask32)__U, | ||
| 35 | _MM_FROUND_CUR_DIRECTION); | ||
| 36 | } | ||
| 37 | |||
| 38 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 | ||
| 39 | _mm512_maskz_cvtx2ps_ph(__mmask32 __U, __m512 __A, __m512 __B) { | ||
| 40 | return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( | ||
| 41 | (__v16sf)__A, (__v16sf)__B, (__v32hf)_mm512_setzero_ph(), (__mmask32)__U, | ||
| 42 | _MM_FROUND_CUR_DIRECTION); | ||
| 43 | } | ||
| 44 | |||
| 45 | #define _mm512_cvtx_round2ps_ph(A, B, R) \ | ||
| 46 | ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask( \ | ||
| 47 | (__v16sf)(A), (__v16sf)(B), (__v32hf)_mm512_undefined_ph(), \ | ||
| 48 | (__mmask32)(-1), (const int)(R))) | ||
| 49 | |||
| 50 | #define _mm512_mask_cvtx_round2ps_ph(W, U, A, B, R) \ | ||
| 51 | ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask((__v16sf)(A), (__v16sf)(B), \ | ||
| 52 | (__v32hf)(W), (__mmask32)(U), \ | ||
| 53 | (const int)(R))) | ||
| 54 | |||
| 55 | #define _mm512_maskz_cvtx_round2ps_ph(U, A, B, R) \ | ||
| 56 | ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask( \ | ||
| 57 | (__v16sf)(A), (__v16sf)(B), (__v32hf)_mm512_setzero_ph(), \ | ||
| 58 | (__mmask32)(U), (const int)(R))) | ||
| 59 | |||
| 60 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 61 | _mm512_cvtbiasph_bf8(__m512i __A, __m512h __B) { | ||
| 62 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( | ||
| 63 | (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), | ||
| 64 | (__mmask32)-1); | ||
| 65 | } | ||
| 66 | |||
| 67 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiasph_bf8( | ||
| 68 | __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { | ||
| 69 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( | ||
| 70 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 71 | } | ||
| 72 | |||
| 73 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 74 | _mm512_maskz_cvtbiasph_bf8(__mmask32 __U, __m512i __A, __m512h __B) { | ||
| 75 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( | ||
| 76 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), | ||
| 77 | (__mmask32)__U); | ||
| 78 | } | ||
| 79 | |||
| 80 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 81 | _mm512_cvtbiassph_bf8(__m512i __A, __m512h __B) { | ||
| 82 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( | ||
| 83 | (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), | ||
| 84 | (__mmask32)-1); | ||
| 85 | } | ||
| 86 | |||
| 87 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiassph_bf8( | ||
| 88 | __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { | ||
| 89 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( | ||
| 90 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 91 | } | ||
| 92 | |||
| 93 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 94 | _mm512_maskz_cvtbiassph_bf8(__mmask32 __U, __m512i __A, __m512h __B) { | ||
| 95 | return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( | ||
| 96 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), | ||
| 97 | (__mmask32)__U); | ||
| 98 | } | ||
| 99 | |||
| 100 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 101 | _mm512_cvtbiasph_hf8(__m512i __A, __m512h __B) { | ||
| 102 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( | ||
| 103 | (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), | ||
| 104 | (__mmask32)-1); | ||
| 105 | } | ||
| 106 | |||
| 107 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiasph_hf8( | ||
| 108 | __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { | ||
| 109 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( | ||
| 110 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 111 | } | ||
| 112 | |||
| 113 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 114 | _mm512_maskz_cvtbiasph_hf8(__mmask32 __U, __m512i __A, __m512h __B) { | ||
| 115 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( | ||
| 116 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), | ||
| 117 | (__mmask32)__U); | ||
| 118 | } | ||
| 119 | |||
| 120 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 121 | _mm512_cvtbiassph_hf8(__m512i __A, __m512h __B) { | ||
| 122 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( | ||
| 123 | (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), | ||
| 124 | (__mmask32)-1); | ||
| 125 | } | ||
| 126 | |||
| 127 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiassph_hf8( | ||
| 128 | __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { | ||
| 129 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( | ||
| 130 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 131 | } | ||
| 132 | |||
| 133 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 134 | _mm512_maskz_cvtbiassph_hf8(__mmask32 __U, __m512i __A, __m512h __B) { | ||
| 135 | return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( | ||
| 136 | (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), | ||
| 137 | (__mmask32)__U); | ||
| 138 | } | ||
| 139 | |||
| 140 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_cvt2ph_bf8(__m512h __A, | ||
| 141 | __m512h __B) { | ||
| 142 | return (__m512i)__builtin_ia32_vcvt2ph2bf8_512((__v32hf)(__A), | ||
| 143 | (__v32hf)(__B)); | ||
| 144 | } | ||
| 145 | |||
| 146 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 147 | _mm512_mask_cvt2ph_bf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { | ||
| 148 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 149 | (__mmask64)__U, (__v64qi)_mm512_cvt2ph_bf8(__A, __B), (__v64qi)__W); | ||
| 150 | } | ||
| 151 | |||
| 152 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 153 | _mm512_maskz_cvt2ph_bf8(__mmask64 __U, __m512h __A, __m512h __B) { | ||
| 154 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 155 | (__mmask64)__U, (__v64qi)_mm512_cvt2ph_bf8(__A, __B), | ||
| 156 | (__v64qi)(__m512i)_mm512_setzero_si512()); | ||
| 157 | } | ||
| 158 | |||
| 159 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 160 | _mm512_cvts2ph_bf8(__m512h __A, __m512h __B) { | ||
| 161 | return (__m512i)__builtin_ia32_vcvt2ph2bf8s_512((__v32hf)(__A), | ||
| 162 | (__v32hf)(__B)); | ||
| 163 | } | ||
| 164 | |||
| 165 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 166 | _mm512_mask_cvts2ph_bf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { | ||
| 167 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 168 | (__mmask64)__U, (__v64qi)_mm512_cvts2ph_bf8(__A, __B), (__v64qi)__W); | ||
| 169 | } | ||
| 170 | |||
| 171 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 172 | _mm512_maskz_cvts2ph_bf8(__mmask64 __U, __m512h __A, __m512h __B) { | ||
| 173 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 174 | (__mmask64)__U, (__v64qi)_mm512_cvts2ph_bf8(__A, __B), | ||
| 175 | (__v64qi)(__m512i)_mm512_setzero_si512()); | ||
| 176 | } | ||
| 177 | |||
| 178 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_cvt2ph_hf8(__m512h __A, | ||
| 179 | __m512h __B) { | ||
| 180 | return (__m512i)__builtin_ia32_vcvt2ph2hf8_512((__v32hf)(__A), | ||
| 181 | (__v32hf)(__B)); | ||
| 182 | } | ||
| 183 | |||
| 184 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 185 | _mm512_mask_cvt2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { | ||
| 186 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 187 | (__mmask64)__U, (__v64qi)_mm512_cvt2ph_hf8(__A, __B), (__v64qi)__W); | ||
| 188 | } | ||
| 189 | |||
| 190 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 191 | _mm512_maskz_cvt2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) { | ||
| 192 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 193 | (__mmask64)__U, (__v64qi)_mm512_cvt2ph_hf8(__A, __B), | ||
| 194 | (__v64qi)(__m512i)_mm512_setzero_si512()); | ||
| 195 | } | ||
| 196 | |||
| 197 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 198 | _mm512_cvts2ph_hf8(__m512h __A, __m512h __B) { | ||
| 199 | return (__m512i)__builtin_ia32_vcvt2ph2hf8s_512((__v32hf)(__A), | ||
| 200 | (__v32hf)(__B)); | ||
| 201 | } | ||
| 202 | |||
| 203 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 204 | _mm512_mask_cvts2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { | ||
| 205 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 206 | (__mmask64)__U, (__v64qi)_mm512_cvts2ph_hf8(__A, __B), (__v64qi)__W); | ||
| 207 | } | ||
| 208 | |||
| 209 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 210 | _mm512_maskz_cvts2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) { | ||
| 211 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 212 | (__mmask64)__U, (__v64qi)_mm512_cvts2ph_hf8(__A, __B), | ||
| 213 | (__v64qi)(__m512i)_mm512_setzero_si512()); | ||
| 214 | } | ||
| 215 | |||
| 216 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 _mm512_cvthf8(__m256i __A) { | ||
| 217 | return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( | ||
| 218 | (__v32qi)__A, (__v32hf)(__m512h)_mm512_undefined_ph(), (__mmask32)-1); | ||
| 219 | } | ||
| 220 | |||
| 221 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 | ||
| 222 | _mm512_mask_cvthf8(__m512h __W, __mmask32 __U, __m256i __A) { | ||
| 223 | return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( | ||
| 224 | (__v32qi)__A, (__v32hf)(__m512h)__W, (__mmask32)__U); | ||
| 225 | } | ||
| 226 | |||
| 227 | static __inline__ __m512h __DEFAULT_FN_ATTRS512 | ||
| 228 | _mm512_maskz_cvthf8(__mmask32 __U, __m256i __A) { | ||
| 229 | return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( | ||
| 230 | (__v32qi)__A, (__v32hf)(__m512h)_mm512_setzero_ph(), (__mmask32)__U); | ||
| 231 | } | ||
| 232 | |||
| 233 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtph_bf8(__m512h __A) { | ||
| 234 | return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( | ||
| 235 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); | ||
| 236 | } | ||
| 237 | |||
| 238 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 239 | _mm512_mask_cvtph_bf8(__m256i __W, __mmask32 __U, __m512h __A) { | ||
| 240 | return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( | ||
| 241 | (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 242 | } | ||
| 243 | |||
| 244 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 245 | _mm512_maskz_cvtph_bf8(__mmask32 __U, __m512h __A) { | ||
| 246 | return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( | ||
| 247 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); | ||
| 248 | } | ||
| 249 | |||
| 250 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtsph_bf8(__m512h __A) { | ||
| 251 | return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( | ||
| 252 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); | ||
| 253 | } | ||
| 254 | |||
| 255 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 256 | _mm512_mask_cvtsph_bf8(__m256i __W, __mmask32 __U, __m512h __A) { | ||
| 257 | return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( | ||
| 258 | (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 259 | } | ||
| 260 | |||
| 261 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 262 | _mm512_maskz_cvtsph_bf8(__mmask32 __U, __m512h __A) { | ||
| 263 | return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( | ||
| 264 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); | ||
| 265 | } | ||
| 266 | |||
| 267 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtph_hf8(__m512h __A) { | ||
| 268 | return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( | ||
| 269 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); | ||
| 270 | } | ||
| 271 | |||
| 272 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 273 | _mm512_mask_cvtph_hf8(__m256i __W, __mmask32 __U, __m512h __A) { | ||
| 274 | return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( | ||
| 275 | (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 276 | } | ||
| 277 | |||
| 278 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 279 | _mm512_maskz_cvtph_hf8(__mmask32 __U, __m512h __A) { | ||
| 280 | return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( | ||
| 281 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); | ||
| 282 | } | ||
| 283 | |||
| 284 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtsph_hf8(__m512h __A) { | ||
| 285 | return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( | ||
| 286 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); | ||
| 287 | } | ||
| 288 | |||
| 289 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 290 | _mm512_mask_cvtsph_hf8(__m256i __W, __mmask32 __U, __m512h __A) { | ||
| 291 | return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( | ||
| 292 | (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); | ||
| 293 | } | ||
| 294 | |||
| 295 | static __inline__ __m256i __DEFAULT_FN_ATTRS512 | ||
| 296 | _mm512_maskz_cvtsph_hf8(__mmask32 __U, __m512h __A) { | ||
| 297 | return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( | ||
| 298 | (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); | ||
| 299 | } | ||
| 300 | |||
| 301 | static __inline __m512h __DEFAULT_FN_ATTRS512 _mm512_cvtbf8_ph(__m256i __A) { | ||
| 302 | return _mm512_castsi512_ph(_mm512_slli_epi16(_mm512_cvtepi8_epi16(__A), 8)); | ||
| 303 | } | ||
| 304 | |||
| 305 | static __inline __m512h __DEFAULT_FN_ATTRS512 | ||
| 306 | _mm512_mask_cvtbf8_ph(__m512h __S, __mmask32 __U, __m256i __A) { | ||
| 307 | return _mm512_castsi512_ph( | ||
| 308 | _mm512_mask_slli_epi16((__m512i)__S, __U, _mm512_cvtepi8_epi16(__A), 8)); | ||
| 309 | } | ||
| 310 | |||
| 311 | static __inline __m512h __DEFAULT_FN_ATTRS512 | ||
| 312 | _mm512_maskz_cvtbf8_ph(__mmask32 __U, __m256i __A) { | ||
| 313 | return _mm512_castsi512_ph( | ||
| 314 | _mm512_slli_epi16(_mm512_maskz_cvtepi8_epi16(__U, __A), 8)); | ||
| 315 | } | ||
| 316 | |||
| 317 | #undef __DEFAULT_FN_ATTRS512 | ||
| 318 | |||
| 319 | #endif // __AVX10_2_512CONVERTINTRIN_H | ||
| 320 | #endif // __SSE2__ | ||
lib/include/avx10_2_512minmaxintrin.h created+127| ... | @@ -0,0 +1,127 @@ | ||
| 1 | /*===---- avx10_2_512minmaxintrin.h - AVX10_2_512MINMAX intrinsics ---------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512minmaxintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AVX10_2_512MINMAXINTRIN_H | ||
| 15 | #define __AVX10_2_512MINMAXINTRIN_H | ||
| 16 | |||
| 17 | #define _mm512_minmax_pbh(A, B, C) \ | ||
| 18 | ((__m512bh)__builtin_ia32_vminmaxbf16512((__v32bf)(__m512bh)(A), \ | ||
| 19 | (__v32bf)(__m512bh)(A), (int)(C))) | ||
| 20 | |||
| 21 | #define _mm512_mask_minmax_pbh(W, U, A, B, C) \ | ||
| 22 | ((__m512bh)__builtin_ia32_selectpbf_512( \ | ||
| 23 | (__mmask32)(U), \ | ||
| 24 | (__v32bf)_mm512_minmax_pbh((__v32bf)(__m512bh)(A), \ | ||
| 25 | (__v32bf)(__m512bh)(B), (int)(C)), \ | ||
| 26 | (__v32bf)(__m512bh)(W))) | ||
| 27 | |||
| 28 | #define _mm512_maskz_minmax_pbh(U, A, B, C) \ | ||
| 29 | ((__m512bh)__builtin_ia32_selectpbf_512( \ | ||
| 30 | (__mmask32)(U), \ | ||
| 31 | (__v32bf)_mm512_minmax_pbh((__v32bf)(__m512bh)(A), \ | ||
| 32 | (__v32bf)(__m512bh)(B), (int)(C)), \ | ||
| 33 | (__v32bf) __builtin_bit_cast(__m512bh, _mm512_setzero_ps()))) | ||
| 34 | |||
| 35 | #define _mm512_minmax_pd(A, B, C) \ | ||
| 36 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 37 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 38 | (__v8df)_mm512_undefined_pd(), (__mmask8)-1, \ | ||
| 39 | _MM_FROUND_CUR_DIRECTION)) | ||
| 40 | |||
| 41 | #define _mm512_mask_minmax_pd(W, U, A, B, C) \ | ||
| 42 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 43 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 44 | (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 45 | |||
| 46 | #define _mm512_maskz_minmax_pd(U, A, B, C) \ | ||
| 47 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 48 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 49 | (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 50 | |||
| 51 | #define _mm512_minmax_round_pd(A, B, C, R) \ | ||
| 52 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 53 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 54 | (__v8df)_mm512_undefined_pd(), (__mmask8)-1, (int)(R))) | ||
| 55 | |||
| 56 | #define _mm512_mask_minmax_round_pd(W, U, A, B, C, R) \ | ||
| 57 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 58 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 59 | (__v8df)(__m512d)(W), (__mmask8)(U), (int)(R))) | ||
| 60 | |||
| 61 | #define _mm512_maskz_minmax_round_pd(U, A, B, C, R) \ | ||
| 62 | ((__m512d)__builtin_ia32_vminmaxpd512_round_mask( \ | ||
| 63 | (__v8df)(__m512d)(A), (__v8df)(__m512d)(B), (int)(C), \ | ||
| 64 | (__v8df)_mm512_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 65 | |||
| 66 | #define _mm512_minmax_ph(A, B, C) \ | ||
| 67 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 68 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 69 | (__v32hf)_mm512_undefined_ph(), (__mmask32)-1, \ | ||
| 70 | _MM_FROUND_CUR_DIRECTION)) | ||
| 71 | |||
| 72 | #define _mm512_mask_minmax_ph(W, U, A, B, C) \ | ||
| 73 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 74 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 75 | (__v32hf)(__m512h)(W), (__mmask32)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 76 | |||
| 77 | #define _mm512_maskz_minmax_ph(U, A, B, C) \ | ||
| 78 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 79 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 80 | (__v32hf)_mm512_setzero_ph(), (__mmask32)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 81 | |||
| 82 | #define _mm512_minmax_round_ph(A, B, C, R) \ | ||
| 83 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 84 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 85 | (__v32hf)_mm512_undefined_ph(), (__mmask32)-1, (int)(R))) | ||
| 86 | |||
| 87 | #define _mm512_mask_minmax_round_ph(W, U, A, B, C, R) \ | ||
| 88 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 89 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 90 | (__v32hf)(__m512h)(W), (__mmask32)(U), (int)(R))) | ||
| 91 | |||
| 92 | #define _mm512_maskz_minmax_round_ph(U, A, B, C, R) \ | ||
| 93 | ((__m512h)__builtin_ia32_vminmaxph512_round_mask( \ | ||
| 94 | (__v32hf)(__m512h)(A), (__v32hf)(__m512h)(B), (int)(C), \ | ||
| 95 | (__v32hf)_mm512_setzero_ph(), (__mmask32)(U), (int)(R))) | ||
| 96 | |||
| 97 | #define _mm512_minmax_ps(A, B, C) \ | ||
| 98 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 99 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), \ | ||
| 100 | (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, \ | ||
| 101 | _MM_FROUND_CUR_DIRECTION)) | ||
| 102 | |||
| 103 | #define _mm512_mask_minmax_ps(W, U, A, B, C) \ | ||
| 104 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 105 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), (__v16sf)(W), \ | ||
| 106 | (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 107 | |||
| 108 | #define _mm512_maskz_minmax_ps(U, A, B, C) \ | ||
| 109 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 110 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), \ | ||
| 111 | (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 112 | |||
| 113 | #define _mm512_minmax_round_ps(A, B, C, R) \ | ||
| 114 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 115 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), \ | ||
| 116 | (__v16sf)_mm512_undefined_ps(), (__mmask16)-1, (int)(R))) | ||
| 117 | |||
| 118 | #define _mm512_mask_minmax_round_ps(W, U, A, B, C, R) \ | ||
| 119 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 120 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), (__v16sf)(W), \ | ||
| 121 | (__mmask16)(U), (int)(R))) | ||
| 122 | |||
| 123 | #define _mm512_maskz_minmax_round_ps(U, A, B, C, R) \ | ||
| 124 | ((__m512)__builtin_ia32_vminmaxps512_round_mask( \ | ||
| 125 | (__v16sf)(__m512)(A), (__v16sf)(__m512)(B), (int)(C), \ | ||
| 126 | (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), (int)(R))) | ||
| 127 | #endif // __AVX10_2_512MINMAXINTRIN_H | ||
lib/include/avx10_2_512niintrin.h created+314| ... | @@ -0,0 +1,314 @@ | ||
| 1 | /*===---- avx10_2_512niintrin.h - AVX10.2-512 new instruction intrinsics ---=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512niintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifdef __SSE2__ | ||
| 15 | |||
| 16 | #ifndef __AVX10_2_512NIINTRIN_H | ||
| 17 | #define __AVX10_2_512NIINTRIN_H | ||
| 18 | |||
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \ | ||
| 21 | __min_vector_width__(512))) | ||
| 22 | |||
| 23 | /* VNNI FP16 */ | ||
| 24 | static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_dpph_ps(__m512 __W, | ||
| 25 | __m512h __A, | ||
| 26 | __m512h __B) { | ||
| 27 | return (__m512)__builtin_ia32_vdpphps512((__v16sf)__W, (__v32hf)__A, | ||
| 28 | (__v32hf)__B); | ||
| 29 | } | ||
| 30 | |||
| 31 | static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_mask_dpph_ps(__m512 __W, | ||
| 32 | __mmask16 __U, | ||
| 33 | __m512h __A, | ||
| 34 | __m512h __B) { | ||
| 35 | return (__m512)__builtin_ia32_selectps_512( | ||
| 36 | (__mmask16)__U, (__v16sf)_mm512_dpph_ps(__W, __A, __B), (__v16sf)__W); | ||
| 37 | } | ||
| 38 | |||
| 39 | static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_maskz_dpph_ps(__mmask16 __U, | ||
| 40 | __m512 __W, | ||
| 41 | __m512h __A, | ||
| 42 | __m512h __B) { | ||
| 43 | return (__m512)__builtin_ia32_selectps_512( | ||
| 44 | (__mmask16)__U, (__v16sf)_mm512_dpph_ps(__W, __A, __B), | ||
| 45 | (__v16sf)_mm512_setzero_ps()); | ||
| 46 | } | ||
| 47 | |||
| 48 | /* VMPSADBW */ | ||
| 49 | #define _mm512_mpsadbw_epu8(A, B, imm) \ | ||
| 50 | ((__m512i)__builtin_ia32_mpsadbw512((__v64qi)(__m512i)(A), \ | ||
| 51 | (__v64qi)(__m512i)(B), (int)(imm))) | ||
| 52 | |||
| 53 | #define _mm512_mask_mpsadbw_epu8(W, U, A, B, imm) \ | ||
| 54 | ((__m512i)__builtin_ia32_selectw_512( \ | ||
| 55 | (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 56 | (__v32hi)(__m512i)(W))) | ||
| 57 | |||
| 58 | #define _mm512_maskz_mpsadbw_epu8(U, A, B, imm) \ | ||
| 59 | ((__m512i)__builtin_ia32_selectw_512( \ | ||
| 60 | (__mmask32)(U), (__v32hi)_mm512_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 61 | (__v32hi)_mm512_setzero_si512())) | ||
| 62 | |||
| 63 | /* VNNI INT8 */ | ||
| 64 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbssd_epi32(__m512i __W, | ||
| 65 | __m512i __A, | ||
| 66 | __m512i __B) { | ||
| 67 | return (__m512i)__builtin_ia32_vpdpbssd512((__v16si)__W, (__v16si)__A, | ||
| 68 | (__v16si)__B); | ||
| 69 | } | ||
| 70 | |||
| 71 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 72 | _mm512_mask_dpbssd_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 73 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 74 | __U, (__v16si)_mm512_dpbssd_epi32(__W, __A, __B), (__v16si)__W); | ||
| 75 | } | ||
| 76 | |||
| 77 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbssd_epi32( | ||
| 78 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 79 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 80 | __U, (__v16si)_mm512_dpbssd_epi32(__W, __A, __B), | ||
| 81 | (__v16si)_mm512_setzero_si512()); | ||
| 82 | } | ||
| 83 | |||
| 84 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbssds_epi32(__m512i __W, | ||
| 85 | __m512i __A, | ||
| 86 | __m512i __B) { | ||
| 87 | return (__m512i)__builtin_ia32_vpdpbssds512((__v16si)__W, (__v16si)__A, | ||
| 88 | (__v16si)__B); | ||
| 89 | } | ||
| 90 | |||
| 91 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbssds_epi32( | ||
| 92 | __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 93 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 94 | __U, (__v16si)_mm512_dpbssds_epi32(__W, __A, __B), (__v16si)__W); | ||
| 95 | } | ||
| 96 | |||
| 97 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbssds_epi32( | ||
| 98 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 99 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 100 | __U, (__v16si)_mm512_dpbssds_epi32(__W, __A, __B), | ||
| 101 | (__v16si)_mm512_setzero_si512()); | ||
| 102 | } | ||
| 103 | |||
| 104 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbsud_epi32(__m512i __W, | ||
| 105 | __m512i __A, | ||
| 106 | __m512i __B) { | ||
| 107 | return (__m512i)__builtin_ia32_vpdpbsud512((__v16si)__W, (__v16si)__A, | ||
| 108 | (__v16si)__B); | ||
| 109 | } | ||
| 110 | |||
| 111 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 112 | _mm512_mask_dpbsud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 113 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 114 | __U, (__v16si)_mm512_dpbsud_epi32(__W, __A, __B), (__v16si)__W); | ||
| 115 | } | ||
| 116 | |||
| 117 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbsud_epi32( | ||
| 118 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 119 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 120 | __U, (__v16si)_mm512_dpbsud_epi32(__W, __A, __B), | ||
| 121 | (__v16si)_mm512_setzero_si512()); | ||
| 122 | } | ||
| 123 | |||
| 124 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbsuds_epi32(__m512i __W, | ||
| 125 | __m512i __A, | ||
| 126 | __m512i __B) { | ||
| 127 | return (__m512i)__builtin_ia32_vpdpbsuds512((__v16si)__W, (__v16si)__A, | ||
| 128 | (__v16si)__B); | ||
| 129 | } | ||
| 130 | |||
| 131 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbsuds_epi32( | ||
| 132 | __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 133 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 134 | __U, (__v16si)_mm512_dpbsuds_epi32(__W, __A, __B), (__v16si)__W); | ||
| 135 | } | ||
| 136 | |||
| 137 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbsuds_epi32( | ||
| 138 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 139 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 140 | __U, (__v16si)_mm512_dpbsuds_epi32(__W, __A, __B), | ||
| 141 | (__v16si)_mm512_setzero_si512()); | ||
| 142 | } | ||
| 143 | |||
| 144 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbuud_epi32(__m512i __W, | ||
| 145 | __m512i __A, | ||
| 146 | __m512i __B) { | ||
| 147 | return (__m512i)__builtin_ia32_vpdpbuud512((__v16si)__W, (__v16si)__A, | ||
| 148 | (__v16si)__B); | ||
| 149 | } | ||
| 150 | |||
| 151 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 152 | _mm512_mask_dpbuud_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 153 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 154 | __U, (__v16si)_mm512_dpbuud_epi32(__W, __A, __B), (__v16si)__W); | ||
| 155 | } | ||
| 156 | |||
| 157 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbuud_epi32( | ||
| 158 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 159 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 160 | __U, (__v16si)_mm512_dpbuud_epi32(__W, __A, __B), | ||
| 161 | (__v16si)_mm512_setzero_si512()); | ||
| 162 | } | ||
| 163 | |||
| 164 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbuuds_epi32(__m512i __W, | ||
| 165 | __m512i __A, | ||
| 166 | __m512i __B) { | ||
| 167 | return (__m512i)__builtin_ia32_vpdpbuuds512((__v16si)__W, (__v16si)__A, | ||
| 168 | (__v16si)__B); | ||
| 169 | } | ||
| 170 | |||
| 171 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbuuds_epi32( | ||
| 172 | __m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { | ||
| 173 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 174 | __U, (__v16si)_mm512_dpbuuds_epi32(__W, __A, __B), (__v16si)__W); | ||
| 175 | } | ||
| 176 | |||
| 177 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbuuds_epi32( | ||
| 178 | __mmask16 __U, __m512i __W, __m512i __A, __m512i __B) { | ||
| 179 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 180 | __U, (__v16si)_mm512_dpbuuds_epi32(__W, __A, __B), | ||
| 181 | (__v16si)_mm512_setzero_si512()); | ||
| 182 | } | ||
| 183 | |||
| 184 | /* VNNI INT16 */ | ||
| 185 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwsud_epi32(__m512i __A, | ||
| 186 | __m512i __B, | ||
| 187 | __m512i __C) { | ||
| 188 | return (__m512i)__builtin_ia32_vpdpwsud512((__v16si)__A, (__v16si)__B, | ||
| 189 | (__v16si)__C); | ||
| 190 | } | ||
| 191 | |||
| 192 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 193 | _mm512_mask_dpwsud_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 194 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 195 | (__mmask16)__U, (__v16si)_mm512_dpwsud_epi32(__A, __B, __C), | ||
| 196 | (__v16si)__A); | ||
| 197 | } | ||
| 198 | |||
| 199 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwsud_epi32( | ||
| 200 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 201 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 202 | (__mmask16)__U, (__v16si)_mm512_dpwsud_epi32(__A, __B, __C), | ||
| 203 | (__v16si)_mm512_setzero_si512()); | ||
| 204 | } | ||
| 205 | |||
| 206 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwsuds_epi32(__m512i __A, | ||
| 207 | __m512i __B, | ||
| 208 | __m512i __C) { | ||
| 209 | return (__m512i)__builtin_ia32_vpdpwsuds512((__v16si)__A, (__v16si)__B, | ||
| 210 | (__v16si)__C); | ||
| 211 | } | ||
| 212 | |||
| 213 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwsuds_epi32( | ||
| 214 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 215 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 216 | (__mmask16)__U, (__v16si)_mm512_dpwsuds_epi32(__A, __B, __C), | ||
| 217 | (__v16si)__A); | ||
| 218 | } | ||
| 219 | |||
| 220 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwsuds_epi32( | ||
| 221 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 222 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 223 | (__mmask16)__U, (__v16si)_mm512_dpwsuds_epi32(__A, __B, __C), | ||
| 224 | (__v16si)_mm512_setzero_si512()); | ||
| 225 | } | ||
| 226 | |||
| 227 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwusd_epi32(__m512i __A, | ||
| 228 | __m512i __B, | ||
| 229 | __m512i __C) { | ||
| 230 | return (__m512i)__builtin_ia32_vpdpwusd512((__v16si)__A, (__v16si)__B, | ||
| 231 | (__v16si)__C); | ||
| 232 | } | ||
| 233 | |||
| 234 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 235 | _mm512_mask_dpwusd_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 236 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 237 | (__mmask16)__U, (__v16si)_mm512_dpwusd_epi32(__A, __B, __C), | ||
| 238 | (__v16si)__A); | ||
| 239 | } | ||
| 240 | |||
| 241 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwusd_epi32( | ||
| 242 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 243 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 244 | (__mmask16)__U, (__v16si)_mm512_dpwusd_epi32(__A, __B, __C), | ||
| 245 | (__v16si)_mm512_setzero_si512()); | ||
| 246 | } | ||
| 247 | |||
| 248 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwusds_epi32(__m512i __A, | ||
| 249 | __m512i __B, | ||
| 250 | __m512i __C) { | ||
| 251 | return (__m512i)__builtin_ia32_vpdpwusds512((__v16si)__A, (__v16si)__B, | ||
| 252 | (__v16si)__C); | ||
| 253 | } | ||
| 254 | |||
| 255 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwusds_epi32( | ||
| 256 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 257 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 258 | (__mmask16)__U, (__v16si)_mm512_dpwusds_epi32(__A, __B, __C), | ||
| 259 | (__v16si)__A); | ||
| 260 | } | ||
| 261 | |||
| 262 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwusds_epi32( | ||
| 263 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 264 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 265 | (__mmask16)__U, (__v16si)_mm512_dpwusds_epi32(__A, __B, __C), | ||
| 266 | (__v16si)_mm512_setzero_si512()); | ||
| 267 | } | ||
| 268 | |||
| 269 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwuud_epi32(__m512i __A, | ||
| 270 | __m512i __B, | ||
| 271 | __m512i __C) { | ||
| 272 | return (__m512i)__builtin_ia32_vpdpwuud512((__v16si)__A, (__v16si)__B, | ||
| 273 | (__v16si)__C); | ||
| 274 | } | ||
| 275 | |||
| 276 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 277 | _mm512_mask_dpwuud_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 278 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 279 | (__mmask16)__U, (__v16si)_mm512_dpwuud_epi32(__A, __B, __C), | ||
| 280 | (__v16si)__A); | ||
| 281 | } | ||
| 282 | |||
| 283 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwuud_epi32( | ||
| 284 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 285 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 286 | (__mmask16)__U, (__v16si)_mm512_dpwuud_epi32(__A, __B, __C), | ||
| 287 | (__v16si)_mm512_setzero_si512()); | ||
| 288 | } | ||
| 289 | |||
| 290 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwuuds_epi32(__m512i __A, | ||
| 291 | __m512i __B, | ||
| 292 | __m512i __C) { | ||
| 293 | return (__m512i)__builtin_ia32_vpdpwuuds512((__v16si)__A, (__v16si)__B, | ||
| 294 | (__v16si)__C); | ||
| 295 | } | ||
| 296 | |||
| 297 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwuuds_epi32( | ||
| 298 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 299 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 300 | (__mmask16)__U, (__v16si)_mm512_dpwuuds_epi32(__A, __B, __C), | ||
| 301 | (__v16si)__A); | ||
| 302 | } | ||
| 303 | |||
| 304 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwuuds_epi32( | ||
| 305 | __m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { | ||
| 306 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 307 | (__mmask16)__U, (__v16si)_mm512_dpwuuds_epi32(__A, __B, __C), | ||
| 308 | (__v16si)_mm512_setzero_si512()); | ||
| 309 | } | ||
| 310 | |||
| 311 | #undef __DEFAULT_FN_ATTRS | ||
| 312 | |||
| 313 | #endif /* __SSE2__ */ | ||
| 314 | #endif /* __AVX10_2_512NIINTRIN_H */ | ||
lib/include/avx10_2_512satcvtdsintrin.h created+303| ... | @@ -0,0 +1,303 @@ | ||
| 1 | /*===----- avx10_2_512satcvtdsintrin.h - AVX10_2_512SATCVTDS intrinsics ----=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512satcvtdsintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifndef __AVX10_2_512SATCVTDSINTRIN_H | ||
| 15 | #define __AVX10_2_512SATCVTDSINTRIN_H | ||
| 16 | |||
| 17 | /* Define the default attributes for the functions in this file. */ | ||
| 18 | #define __DEFAULT_FN_ATTRS \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \ | ||
| 20 | __min_vector_width__(512))) | ||
| 21 | |||
| 22 | // 512 bit : Double -> Int | ||
| 23 | static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_cvttspd_epi32(__m512d __A) { | ||
| 24 | return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( | ||
| 25 | (__v8df)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 26 | _MM_FROUND_CUR_DIRECTION)); | ||
| 27 | } | ||
| 28 | |||
| 29 | static __inline__ __m256i __DEFAULT_FN_ATTRS | ||
| 30 | _mm512_mask_cvttspd_epi32(__m256i __W, __mmask8 __U, __m512d __A) { | ||
| 31 | return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( | ||
| 32 | (__v8df)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 33 | } | ||
| 34 | |||
| 35 | static __inline__ __m256i __DEFAULT_FN_ATTRS | ||
| 36 | _mm512_maskz_cvttspd_epi32(__mmask8 __U, __m512d __A) { | ||
| 37 | return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( | ||
| 38 | (__v8df)__A, (__v8si)_mm256_setzero_si256(), __U, | ||
| 39 | _MM_FROUND_CUR_DIRECTION)); | ||
| 40 | } | ||
| 41 | |||
| 42 | #define _mm512_cvtts_roundpd_epi32(__A, __R) \ | ||
| 43 | ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \ | ||
| 44 | (__v8df)(__m512d)(__A), (__v8si)_mm256_undefined_si256(), \ | ||
| 45 | (__mmask8) - 1, (const int)(__R))) | ||
| 46 | |||
| 47 | #define _mm512_mask_cvtts_roundpd_epi32(__W, __U, __A, __R) \ | ||
| 48 | ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \ | ||
| 49 | (__v8df)(__m512d)(__A), (__v8si)(__m256i)(__W), (__mmask8)(__U), \ | ||
| 50 | (const int)(__R))) | ||
| 51 | |||
| 52 | #define _mm512_maskz_cvtts_roundpd_epi32(__U, __A, __R) \ | ||
| 53 | ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \ | ||
| 54 | (__v8df)(__m512d)(__A), (__v8si)_mm256_setzero_si256(), (__mmask8)(__U), \ | ||
| 55 | (const int)(__R))) | ||
| 56 | |||
| 57 | // 512 bit : Double -> uInt | ||
| 58 | static __inline__ __m256i __DEFAULT_FN_ATTRS _mm512_cvttspd_epu32(__m512d __A) { | ||
| 59 | return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( | ||
| 60 | (__v8df)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 61 | _MM_FROUND_CUR_DIRECTION)); | ||
| 62 | } | ||
| 63 | |||
| 64 | static __inline__ __m256i __DEFAULT_FN_ATTRS | ||
| 65 | _mm512_mask_cvttspd_epu32(__m256i __W, __mmask8 __U, __m512d __A) { | ||
| 66 | return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( | ||
| 67 | (__v8df)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 68 | } | ||
| 69 | |||
| 70 | static __inline__ __m256i __DEFAULT_FN_ATTRS | ||
| 71 | _mm512_maskz_cvttspd_epu32(__mmask8 __U, __m512d __A) { | ||
| 72 | return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( | ||
| 73 | (__v8df)__A, (__v8si)_mm256_setzero_si256(), __U, | ||
| 74 | _MM_FROUND_CUR_DIRECTION)); | ||
| 75 | } | ||
| 76 | |||
| 77 | #define _mm512_cvtts_roundpd_epu32(__A, __R) \ | ||
| 78 | ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \ | ||
| 79 | (__v8df)(__m512d)(__A), (__v8si)_mm256_undefined_si256(), \ | ||
| 80 | (__mmask8) - 1, (const int)(__R))) | ||
| 81 | |||
| 82 | #define _mm512_mask_cvtts_roundpd_epu32(__W, __U, __A, __R) \ | ||
| 83 | ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \ | ||
| 84 | (__v8df)(__m512d)(__A), (__v8si)(__m256i)(__W), (__mmask8)(__U), \ | ||
| 85 | (const int)(__R))) | ||
| 86 | |||
| 87 | #define _mm512_maskz_cvtts_roundpd_epu32(__U, __A, __R) \ | ||
| 88 | ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \ | ||
| 89 | (__v8df)(__m512d)(__A), (__v8si)_mm256_setzero_si256(), (__mmask8)(__U), \ | ||
| 90 | (const int)(__R))) | ||
| 91 | |||
| 92 | // 512 bit : Double -> Long | ||
| 93 | |||
| 94 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttspd_epi64(__m512d __A) { | ||
| 95 | return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( | ||
| 96 | (__v8df)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1, | ||
| 97 | _MM_FROUND_CUR_DIRECTION)); | ||
| 98 | } | ||
| 99 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 100 | _mm512_mask_cvttspd_epi64(__m512i __W, __mmask8 __U, __m512d __A) { | ||
| 101 | return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( | ||
| 102 | (__v8df)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 103 | } | ||
| 104 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 105 | _mm512_maskz_cvttspd_epi64(__mmask8 __U, __m512d __A) { | ||
| 106 | return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( | ||
| 107 | (__v8df)__A, (__v8di)_mm512_setzero_si512(), __U, | ||
| 108 | _MM_FROUND_CUR_DIRECTION)); | ||
| 109 | } | ||
| 110 | |||
| 111 | #define _mm512_cvtts_roundpd_epi64(__A, __R) \ | ||
| 112 | ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \ | ||
| 113 | (__v8df)(__m512d)(__A), (__v8di)_mm512_undefined_epi32(), \ | ||
| 114 | (__mmask8) - 1, (const int)(__R))) | ||
| 115 | |||
| 116 | #define _mm512_mask_cvtts_roundpd_epi64(__W, __U, __A, __R) \ | ||
| 117 | ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \ | ||
| 118 | (__v8df)(__m512d)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \ | ||
| 119 | (const int)(__R))) | ||
| 120 | |||
| 121 | #define _mm512_maskz_cvtts_roundpd_epi64(__U, __A, __R) \ | ||
| 122 | ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \ | ||
| 123 | (__v8df)(__m512d)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \ | ||
| 124 | (const int)(__R))) | ||
| 125 | |||
| 126 | // 512 bit : Double -> ULong | ||
| 127 | |||
| 128 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttspd_epu64(__m512d __A) { | ||
| 129 | return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( | ||
| 130 | (__v8df)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1, | ||
| 131 | _MM_FROUND_CUR_DIRECTION)); | ||
| 132 | } | ||
| 133 | |||
| 134 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 135 | _mm512_mask_cvttspd_epu64(__m512i __W, __mmask8 __U, __m512d __A) { | ||
| 136 | return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( | ||
| 137 | (__v8df)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 138 | } | ||
| 139 | |||
| 140 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 141 | _mm512_maskz_cvttspd_epu64(__mmask8 __U, __m512d __A) { | ||
| 142 | return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( | ||
| 143 | (__v8df)__A, (__v8di)_mm512_setzero_si512(), __U, | ||
| 144 | _MM_FROUND_CUR_DIRECTION)); | ||
| 145 | } | ||
| 146 | |||
| 147 | #define _mm512_cvtts_roundpd_epu64(__A, __R) \ | ||
| 148 | ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \ | ||
| 149 | (__v8df)(__m512d)(__A), (__v8di)_mm512_undefined_epi32(), \ | ||
| 150 | (__mmask8) - 1, (const int)(__R))) | ||
| 151 | |||
| 152 | #define _mm512_mask_cvtts_roundpd_epu64(__W, __U, __A, __R) \ | ||
| 153 | ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \ | ||
| 154 | (__v8df)(__m512d)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \ | ||
| 155 | (const int)(__R))) | ||
| 156 | |||
| 157 | #define _mm512_maskz_cvtts_roundpd_epu64(__U, __A, __R) \ | ||
| 158 | ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \ | ||
| 159 | (__v8df)(__m512d)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \ | ||
| 160 | (const int)(__R))) | ||
| 161 | |||
| 162 | // 512 bit: Float -> int | ||
| 163 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi32(__m512 __A) { | ||
| 164 | return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( | ||
| 165 | (__v16sf)(__A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1, | ||
| 166 | _MM_FROUND_CUR_DIRECTION)); | ||
| 167 | } | ||
| 168 | |||
| 169 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 170 | _mm512_mask_cvttsps_epi32(__m512i __W, __mmask16 __U, __m512 __A) { | ||
| 171 | return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( | ||
| 172 | (__v16sf)(__A), (__v16si)(__W), __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 173 | } | ||
| 174 | |||
| 175 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 176 | _mm512_maskz_cvttsps_epi32(__mmask16 __U, __m512 __A) { | ||
| 177 | return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( | ||
| 178 | (__v16sf)(__A), (__v16si)_mm512_setzero_si512(), __U, | ||
| 179 | _MM_FROUND_CUR_DIRECTION)); | ||
| 180 | } | ||
| 181 | |||
| 182 | #define _mm512_cvtts_roundps_epi32(__A, __R) \ | ||
| 183 | ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \ | ||
| 184 | (__v16sf)(__m512)(__A), (__v16si)_mm512_undefined_epi32(), \ | ||
| 185 | (__mmask16) - 1, (const int)(__R))) | ||
| 186 | |||
| 187 | #define _mm512_mask_cvtts_roundps_epi32(__W, __U, __A, __R) \ | ||
| 188 | ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \ | ||
| 189 | (__v16sf)(__m512)(__A), (__v16si)(__m512i)(__W), (__mmask16)(__U), \ | ||
| 190 | (const int)(__R))) | ||
| 191 | |||
| 192 | #define _mm512_maskz_cvtts_roundps_epi32(__U, __A, __R) \ | ||
| 193 | ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \ | ||
| 194 | (__v16sf)(__m512)(__A), (__v16si)_mm512_setzero_si512(), \ | ||
| 195 | (__mmask16)(__U), (const int)(__R))) | ||
| 196 | |||
| 197 | // 512 bit: Float -> uint | ||
| 198 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epu32(__m512 __A) { | ||
| 199 | return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( | ||
| 200 | (__v16sf)(__A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1, | ||
| 201 | _MM_FROUND_CUR_DIRECTION)); | ||
| 202 | } | ||
| 203 | |||
| 204 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 205 | _mm512_mask_cvttsps_epu32(__m512i __W, __mmask16 __U, __m512 __A) { | ||
| 206 | return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( | ||
| 207 | (__v16sf)(__A), (__v16si)(__W), __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 208 | } | ||
| 209 | |||
| 210 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 211 | _mm512_maskz_cvttsps_epu32(__mmask16 __U, __m512 __A) { | ||
| 212 | return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( | ||
| 213 | (__v16sf)(__A), (__v16si)_mm512_setzero_si512(), __U, | ||
| 214 | _MM_FROUND_CUR_DIRECTION)); | ||
| 215 | } | ||
| 216 | |||
| 217 | #define _mm512_cvtts_roundps_epu32(__A, __R) \ | ||
| 218 | ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \ | ||
| 219 | (__v16sf)(__m512)(__A), (__v16si)_mm512_undefined_epi32(), \ | ||
| 220 | (__mmask16) - 1, (const int)(__R))) | ||
| 221 | |||
| 222 | #define _mm512_mask_cvtts_roundps_epu32(__W, __U, __A, __R) \ | ||
| 223 | ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \ | ||
| 224 | (__v16sf)(__m512)(__A), (__v16si)(__m512i)(__W), (__mmask16)(__U), \ | ||
| 225 | (const int)(__R))) | ||
| 226 | |||
| 227 | #define _mm512_maskz_cvtts_roundps_epu32(__U, __A, __R) \ | ||
| 228 | ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \ | ||
| 229 | (__v16sf)(__m512)(__A), (__v16si)_mm512_setzero_si512(), \ | ||
| 230 | (__mmask16)(__U), (const int)(__R))) | ||
| 231 | |||
| 232 | // 512 bit : float -> long | ||
| 233 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epi64(__m256 __A) { | ||
| 234 | return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( | ||
| 235 | (__v8sf)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1, | ||
| 236 | _MM_FROUND_CUR_DIRECTION)); | ||
| 237 | } | ||
| 238 | |||
| 239 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 240 | _mm512_mask_cvttsps_epi64(__m512i __W, __mmask8 __U, __m256 __A) { | ||
| 241 | return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( | ||
| 242 | (__v8sf)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 243 | } | ||
| 244 | |||
| 245 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 246 | _mm512_maskz_cvttsps_epi64(__mmask8 __U, __m256 __A) { | ||
| 247 | return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( | ||
| 248 | (__v8sf)__A, (__v8di)_mm512_setzero_si512(), __U, | ||
| 249 | _MM_FROUND_CUR_DIRECTION)); | ||
| 250 | } | ||
| 251 | |||
| 252 | #define _mm512_cvtts_roundps_epi64(__A, __R) \ | ||
| 253 | ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \ | ||
| 254 | (__v8sf)(__m256)(__A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \ | ||
| 255 | (const int)(__R))) | ||
| 256 | |||
| 257 | #define _mm512_mask_cvtts_roundps_epi64(__W, __U, __A, __R) \ | ||
| 258 | ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \ | ||
| 259 | (__v8sf)(__m256)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \ | ||
| 260 | (const int)(__R))) | ||
| 261 | |||
| 262 | #define _mm512_maskz_cvtts_roundps_epi64(__U, __A, __R) \ | ||
| 263 | ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \ | ||
| 264 | (__v8sf)(__m256)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \ | ||
| 265 | (const int)(__R))) | ||
| 266 | |||
| 267 | // 512 bit : float -> ulong | ||
| 268 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvttsps_epu64(__m256 __A) { | ||
| 269 | return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( | ||
| 270 | (__v8sf)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1, | ||
| 271 | _MM_FROUND_CUR_DIRECTION)); | ||
| 272 | } | ||
| 273 | |||
| 274 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 275 | _mm512_mask_cvttsps_epu64(__m512i __W, __mmask8 __U, __m256 __A) { | ||
| 276 | return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( | ||
| 277 | (__v8sf)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 278 | } | ||
| 279 | |||
| 280 | static __inline__ __m512i __DEFAULT_FN_ATTRS | ||
| 281 | _mm512_maskz_cvttsps_epu64(__mmask8 __U, __m256 __A) { | ||
| 282 | return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( | ||
| 283 | (__v8sf)__A, (__v8di)_mm512_setzero_si512(), __U, | ||
| 284 | _MM_FROUND_CUR_DIRECTION)); | ||
| 285 | } | ||
| 286 | |||
| 287 | #define _mm512_cvtts_roundps_epu64(__A, __R) \ | ||
| 288 | ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \ | ||
| 289 | (__v8sf)(__m256)(__A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \ | ||
| 290 | (const int)(__R))) | ||
| 291 | |||
| 292 | #define _mm512_mask_cvtts_roundps_epu64(__W, __U, __A, __R) \ | ||
| 293 | ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \ | ||
| 294 | (__v8sf)(__m256)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \ | ||
| 295 | (const int)(__R))) | ||
| 296 | |||
| 297 | #define _mm512_maskz_cvtts_roundps_epu64(__U, __A, __R) \ | ||
| 298 | ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \ | ||
| 299 | (__v8sf)(__m256)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \ | ||
| 300 | (const int)(__R))) | ||
| 301 | |||
| 302 | #undef __DEFAULT_FN_ATTRS | ||
| 303 | #endif // __AVX10_2_512SATCVTDSINTRIN_H | ||
lib/include/avx10_2_512satcvtintrin.h created+301| ... | @@ -0,0 +1,301 @@ | ||
| 1 | /*===------ avx10_2_512satcvtintrin.h - AVX10_2_512SATCVT intrinsics -------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2_512satcvtintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AVX10_2_512SATCVTINTRIN_H | ||
| 15 | #define __AVX10_2_512SATCVTINTRIN_H | ||
| 16 | |||
| 17 | #define _mm512_ipcvtbf16_epi8(A) \ | ||
| 18 | ((__m512i)__builtin_ia32_vcvtbf162ibs512((__v32bf)(__m512bh)(A))) | ||
| 19 | |||
| 20 | #define _mm512_mask_ipcvtbf16_epi8(W, U, A) \ | ||
| 21 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 22 | (__v32hi)_mm512_ipcvtbf16_epi8(A), \ | ||
| 23 | (__v32hi)(__m512i)(W))) | ||
| 24 | |||
| 25 | #define _mm512_maskz_ipcvtbf16_epi8(U, A) \ | ||
| 26 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 27 | (__v32hi)_mm512_ipcvtbf16_epi8(A), \ | ||
| 28 | (__v32hi)_mm512_setzero_si512())) | ||
| 29 | |||
| 30 | #define _mm512_ipcvtbf16_epu8(A) \ | ||
| 31 | ((__m512i)__builtin_ia32_vcvtbf162iubs512((__v32bf)(__m512bh)(A))) | ||
| 32 | |||
| 33 | #define _mm512_mask_ipcvtbf16_epu8(W, U, A) \ | ||
| 34 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 35 | (__v32hi)_mm512_ipcvtbf16_epu8(A), \ | ||
| 36 | (__v32hi)(__m512i)(W))) | ||
| 37 | |||
| 38 | #define _mm512_maskz_ipcvtbf16_epu8(U, A) \ | ||
| 39 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 40 | (__v32hi)_mm512_ipcvtbf16_epu8(A), \ | ||
| 41 | (__v32hi)_mm512_setzero_si512())) | ||
| 42 | |||
| 43 | #define _mm512_ipcvttbf16_epi8(A) \ | ||
| 44 | ((__m512i)__builtin_ia32_vcvttbf162ibs512((__v32bf)(__m512bh)(A))) | ||
| 45 | |||
| 46 | #define _mm512_mask_ipcvttbf16_epi8(W, U, A) \ | ||
| 47 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 48 | (__v32hi)_mm512_ipcvttbf16_epi8(A), \ | ||
| 49 | (__v32hi)(__m512i)(W))) | ||
| 50 | |||
| 51 | #define _mm512_maskz_ipcvttbf16_epi8(U, A) \ | ||
| 52 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 53 | (__v32hi)_mm512_ipcvttbf16_epi8(A), \ | ||
| 54 | (__v32hi)_mm512_setzero_si512())) | ||
| 55 | |||
| 56 | #define _mm512_ipcvttbf16_epu8(A) \ | ||
| 57 | ((__m512i)__builtin_ia32_vcvttbf162iubs512((__v32bf)(__m512bh)(A))) | ||
| 58 | |||
| 59 | #define _mm512_mask_ipcvttbf16_epu8(W, U, A) \ | ||
| 60 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 61 | (__v32hi)_mm512_ipcvttbf16_epu8(A), \ | ||
| 62 | (__v32hi)(__m512i)(W))) | ||
| 63 | |||
| 64 | #define _mm512_maskz_ipcvttbf16_epu8(U, A) \ | ||
| 65 | ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ | ||
| 66 | (__v32hi)_mm512_ipcvttbf16_epu8(A), \ | ||
| 67 | (__v32hi)_mm512_setzero_si512())) | ||
| 68 | |||
| 69 | #define _mm512_ipcvtph_epi8(A) \ | ||
| 70 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask( \ | ||
| 71 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 72 | _MM_FROUND_CUR_DIRECTION)) | ||
| 73 | |||
| 74 | #define _mm512_mask_ipcvtph_epi8(W, U, A) \ | ||
| 75 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask((__v32hf)(__m512h)(A), \ | ||
| 76 | (__v32hu)(W), (__mmask32)(U), \ | ||
| 77 | _MM_FROUND_CUR_DIRECTION)) | ||
| 78 | |||
| 79 | #define _mm512_maskz_ipcvtph_epi8(U, A) \ | ||
| 80 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask( \ | ||
| 81 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 82 | _MM_FROUND_CUR_DIRECTION)) | ||
| 83 | |||
| 84 | #define _mm512_ipcvt_roundph_epi8(A, R) \ | ||
| 85 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask((__v32hf)(__m512h)(A), \ | ||
| 86 | (__v32hu)_mm512_setzero_si512(), \ | ||
| 87 | (__mmask32)-1, (const int)R)) | ||
| 88 | |||
| 89 | #define _mm512_mask_ipcvt_roundph_epi8(W, U, A, R) \ | ||
| 90 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask( \ | ||
| 91 | (__v32hf)(__m512h)(A), (__v32hu)(W), (__mmask32)(U), (const int)R)) | ||
| 92 | |||
| 93 | #define _mm512_maskz_ipcvt_roundph_epi8(U, A, R) \ | ||
| 94 | ((__m512i)__builtin_ia32_vcvtph2ibs512_mask((__v32hf)(__m512h)(A), \ | ||
| 95 | (__v32hu)_mm512_setzero_si512(), \ | ||
| 96 | (__mmask32)(U), (const int)R)) | ||
| 97 | |||
| 98 | #define _mm512_ipcvtph_epu8(A) \ | ||
| 99 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask( \ | ||
| 100 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 101 | _MM_FROUND_CUR_DIRECTION)) | ||
| 102 | |||
| 103 | #define _mm512_mask_ipcvtph_epu8(W, U, A) \ | ||
| 104 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask((__v32hf)(__m512h)(A), \ | ||
| 105 | (__v32hu)(W), (__mmask32)(U), \ | ||
| 106 | _MM_FROUND_CUR_DIRECTION)) | ||
| 107 | |||
| 108 | #define _mm512_maskz_ipcvtph_epu8(U, A) \ | ||
| 109 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask( \ | ||
| 110 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 111 | _MM_FROUND_CUR_DIRECTION)) | ||
| 112 | |||
| 113 | #define _mm512_ipcvt_roundph_epu8(A, R) \ | ||
| 114 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask( \ | ||
| 115 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 116 | (const int)R)) | ||
| 117 | |||
| 118 | #define _mm512_mask_ipcvt_roundph_epu8(W, U, A, R) \ | ||
| 119 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask( \ | ||
| 120 | (__v32hf)(__m512h)(A), (__v32hu)(W), (__mmask32)(U), (const int)R)) | ||
| 121 | |||
| 122 | #define _mm512_maskz_ipcvt_roundph_epu8(U, A, R) \ | ||
| 123 | ((__m512i)__builtin_ia32_vcvtph2iubs512_mask( \ | ||
| 124 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 125 | (const int)R)) | ||
| 126 | |||
| 127 | #define _mm512_ipcvtps_epi8(A) \ | ||
| 128 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask( \ | ||
| 129 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 130 | _MM_FROUND_CUR_DIRECTION)) | ||
| 131 | |||
| 132 | #define _mm512_mask_ipcvtps_epi8(W, U, A) \ | ||
| 133 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask((__v16sf)(__m512)(A), \ | ||
| 134 | (__v16su)(W), (__mmask16)(U), \ | ||
| 135 | _MM_FROUND_CUR_DIRECTION)) | ||
| 136 | |||
| 137 | #define _mm512_maskz_ipcvtps_epi8(U, A) \ | ||
| 138 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask( \ | ||
| 139 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 140 | _MM_FROUND_CUR_DIRECTION)) | ||
| 141 | |||
| 142 | #define _mm512_ipcvt_roundps_epi8(A, R) \ | ||
| 143 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask((__v16sf)(__m512)(A), \ | ||
| 144 | (__v16su)_mm512_setzero_si512(), \ | ||
| 145 | (__mmask16)-1, (const int)R)) | ||
| 146 | |||
| 147 | #define _mm512_mask_ipcvt_roundps_epi8(W, U, A, R) \ | ||
| 148 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask( \ | ||
| 149 | (__v16sf)(__m512)(A), (__v16su)(W), (__mmask16)(U), (const int)R)) | ||
| 150 | |||
| 151 | #define _mm512_maskz_ipcvt_roundps_epi8(U, A, R) \ | ||
| 152 | ((__m512i)__builtin_ia32_vcvtps2ibs512_mask((__v16sf)(__m512)(A), \ | ||
| 153 | (__v16su)_mm512_setzero_si512(), \ | ||
| 154 | (__mmask16)(U), (const int)R)) | ||
| 155 | |||
| 156 | #define _mm512_ipcvtps_epu8(A) \ | ||
| 157 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask( \ | ||
| 158 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 159 | _MM_FROUND_CUR_DIRECTION)) | ||
| 160 | |||
| 161 | #define _mm512_mask_ipcvtps_epu8(W, U, A) \ | ||
| 162 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask((__v16sf)(__m512)(A), \ | ||
| 163 | (__v16su)(W), (__mmask16)(U), \ | ||
| 164 | _MM_FROUND_CUR_DIRECTION)) | ||
| 165 | |||
| 166 | #define _mm512_maskz_ipcvtps_epu8(U, A) \ | ||
| 167 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask( \ | ||
| 168 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 169 | _MM_FROUND_CUR_DIRECTION)) | ||
| 170 | |||
| 171 | #define _mm512_ipcvt_roundps_epu8(A, R) \ | ||
| 172 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask( \ | ||
| 173 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 174 | (const int)R)) | ||
| 175 | |||
| 176 | #define _mm512_mask_ipcvt_roundps_epu8(W, U, A, R) \ | ||
| 177 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask( \ | ||
| 178 | (__v16sf)(__m512)(A), (__v16su)(W), (__mmask16)(U), (const int)R)) | ||
| 179 | |||
| 180 | #define _mm512_maskz_ipcvt_roundps_epu8(U, A, R) \ | ||
| 181 | ((__m512i)__builtin_ia32_vcvtps2iubs512_mask( \ | ||
| 182 | (__v16sf)(__m512)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 183 | (const int)R)) | ||
| 184 | |||
| 185 | #define _mm512_ipcvttph_epi8(A) \ | ||
| 186 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask( \ | ||
| 187 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 188 | _MM_FROUND_CUR_DIRECTION)) | ||
| 189 | |||
| 190 | #define _mm512_mask_ipcvttph_epi8(W, U, A) \ | ||
| 191 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask((__v32hf)(__m512h)(A), \ | ||
| 192 | (__v32hu)(W), (__mmask32)(U), \ | ||
| 193 | _MM_FROUND_CUR_DIRECTION)) | ||
| 194 | |||
| 195 | #define _mm512_maskz_ipcvttph_epi8(U, A) \ | ||
| 196 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask( \ | ||
| 197 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 198 | _MM_FROUND_CUR_DIRECTION)) | ||
| 199 | |||
| 200 | #define _mm512_ipcvtt_roundph_epi8(A, S) \ | ||
| 201 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask( \ | ||
| 202 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 203 | S)) | ||
| 204 | |||
| 205 | #define _mm512_mask_ipcvtt_roundph_epi8(W, U, A, S) \ | ||
| 206 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask( \ | ||
| 207 | (__v32hf)(__m512h)(A), (__v32hu)(W), (__mmask32)(U), S)) | ||
| 208 | |||
| 209 | #define _mm512_maskz_ipcvtt_roundph_epi8(U, A, S) \ | ||
| 210 | ((__m512i)__builtin_ia32_vcvttph2ibs512_mask( \ | ||
| 211 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 212 | S)) | ||
| 213 | |||
| 214 | #define _mm512_ipcvttph_epu8(A) \ | ||
| 215 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask( \ | ||
| 216 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 217 | _MM_FROUND_CUR_DIRECTION)) | ||
| 218 | |||
| 219 | #define _mm512_mask_ipcvttph_epu8(W, U, A) \ | ||
| 220 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask((__v32hf)(__m512h)(A), \ | ||
| 221 | (__v32hu)(W), (__mmask32)(U), \ | ||
| 222 | _MM_FROUND_CUR_DIRECTION)) | ||
| 223 | |||
| 224 | #define _mm512_maskz_ipcvttph_epu8(U, A) \ | ||
| 225 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask( \ | ||
| 226 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 227 | _MM_FROUND_CUR_DIRECTION)) | ||
| 228 | |||
| 229 | #define _mm512_ipcvtt_roundph_epu8(A, S) \ | ||
| 230 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask( \ | ||
| 231 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)-1, \ | ||
| 232 | S)) | ||
| 233 | |||
| 234 | #define _mm512_mask_ipcvtt_roundph_epu8(W, U, A, S) \ | ||
| 235 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask( \ | ||
| 236 | (__v32hf)(__m512h)(A), (__v32hu)(W), (__mmask32)(U), S)) | ||
| 237 | |||
| 238 | #define _mm512_maskz_ipcvtt_roundph_epu8(U, A, S) \ | ||
| 239 | ((__m512i)__builtin_ia32_vcvttph2iubs512_mask( \ | ||
| 240 | (__v32hf)(__m512h)(A), (__v32hu)_mm512_setzero_si512(), (__mmask32)(U), \ | ||
| 241 | S)) | ||
| 242 | |||
| 243 | #define _mm512_ipcvttps_epi8(A) \ | ||
| 244 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask( \ | ||
| 245 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 246 | _MM_FROUND_CUR_DIRECTION)) | ||
| 247 | |||
| 248 | #define _mm512_mask_ipcvttps_epi8(W, U, A) \ | ||
| 249 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask((__v16sf)(__m512h)(A), \ | ||
| 250 | (__v16su)(W), (__mmask16)(U), \ | ||
| 251 | _MM_FROUND_CUR_DIRECTION)) | ||
| 252 | |||
| 253 | #define _mm512_maskz_ipcvttps_epi8(U, A) \ | ||
| 254 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask( \ | ||
| 255 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 256 | _MM_FROUND_CUR_DIRECTION)) | ||
| 257 | |||
| 258 | #define _mm512_ipcvtt_roundps_epi8(A, S) \ | ||
| 259 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask( \ | ||
| 260 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 261 | S)) | ||
| 262 | |||
| 263 | #define _mm512_mask_ipcvtt_roundps_epi8(W, U, A, S) \ | ||
| 264 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask( \ | ||
| 265 | (__v16sf)(__m512h)(A), (__v16su)(W), (__mmask16)(U), S)) | ||
| 266 | |||
| 267 | #define _mm512_maskz_ipcvtt_roundps_epi8(U, A, S) \ | ||
| 268 | ((__m512i)__builtin_ia32_vcvttps2ibs512_mask( \ | ||
| 269 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 270 | S)) | ||
| 271 | |||
| 272 | #define _mm512_ipcvttps_epu8(A) \ | ||
| 273 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask( \ | ||
| 274 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 275 | _MM_FROUND_CUR_DIRECTION)) | ||
| 276 | |||
| 277 | #define _mm512_mask_ipcvttps_epu8(W, U, A) \ | ||
| 278 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask((__v16sf)(__m512h)(A), \ | ||
| 279 | (__v16su)(W), (__mmask16)(U), \ | ||
| 280 | _MM_FROUND_CUR_DIRECTION)) | ||
| 281 | |||
| 282 | #define _mm512_maskz_ipcvttps_epu8(U, A) \ | ||
| 283 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask( \ | ||
| 284 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 285 | _MM_FROUND_CUR_DIRECTION)) | ||
| 286 | |||
| 287 | #define _mm512_ipcvtt_roundps_epu8(A, S) \ | ||
| 288 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask( \ | ||
| 289 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)-1, \ | ||
| 290 | S)) | ||
| 291 | |||
| 292 | #define _mm512_mask_ipcvtt_roundps_epu8(W, U, A, S) \ | ||
| 293 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask( \ | ||
| 294 | (__v16sf)(__m512h)(A), (__v16su)(W), (__mmask16)(U), S)) | ||
| 295 | |||
| 296 | #define _mm512_maskz_ipcvtt_roundps_epu8(U, A, S) \ | ||
| 297 | ((__m512i)__builtin_ia32_vcvttps2iubs512_mask( \ | ||
| 298 | (__v16sf)(__m512h)(A), (__v16su)_mm512_setzero_si512(), (__mmask16)(U), \ | ||
| 299 | S)) | ||
| 300 | |||
| 301 | #endif // __AVX10_2_512SATCVTINTRIN_H | ||
lib/include/avx10_2bf16intrin.h created+1085| ... | @@ -0,0 +1,1085 @@ | ||
| 1 | /*===-------------- avx10_2bf16intrin.h - AVX10-BF16 intrinsics ------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2bf16intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifdef __SSE2__ | ||
| 15 | |||
| 16 | #ifndef __AVX10_2BF16INTRIN_H | ||
| 17 | #define __AVX10_2BF16INTRIN_H | ||
| 18 | |||
| 19 | typedef __bf16 __m128bh_u __attribute__((__vector_size__(16), __aligned__(1))); | ||
| 20 | typedef __bf16 __m256bh_u __attribute__((__vector_size__(32), __aligned__(1))); | ||
| 21 | |||
| 22 | /* Define the default attributes for the functions in this file. */ | ||
| 23 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 24 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 25 | __min_vector_width__(256))) | ||
| 26 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 27 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 28 | __min_vector_width__(128))) | ||
| 29 | |||
| 30 | static __inline __m256bh __DEFAULT_FN_ATTRS256 _mm256_setzero_pbh(void) { | ||
| 31 | return __builtin_bit_cast(__m256bh, _mm256_setzero_ps()); | ||
| 32 | } | ||
| 33 | |||
| 34 | static __inline __m128bh __DEFAULT_FN_ATTRS128 _mm_setzero_pbh(void) { | ||
| 35 | return __builtin_bit_cast(__m128bh, _mm_setzero_ps()); | ||
| 36 | } | ||
| 37 | |||
| 38 | static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_castbf16_ps(__m128bh __a) { | ||
| 39 | return (__m128)__a; | ||
| 40 | } | ||
| 41 | |||
| 42 | static __inline__ __m256 __DEFAULT_FN_ATTRS256 | ||
| 43 | _mm256_castbf16_ps(__m256bh __a) { | ||
| 44 | return (__m256)__a; | ||
| 45 | } | ||
| 46 | |||
| 47 | static __inline__ __m256d __DEFAULT_FN_ATTRS256 | ||
| 48 | _mm256_castbf16_pd(__m256bh __a) { | ||
| 49 | return (__m256d)__a; | ||
| 50 | } | ||
| 51 | |||
| 52 | static __inline__ __m128d __DEFAULT_FN_ATTRS128 _mm_castbf16_pd(__m128bh __a) { | ||
| 53 | return (__m128d)__a; | ||
| 54 | } | ||
| 55 | |||
| 56 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 57 | _mm_castbf16_si128(__m128bh __a) { | ||
| 58 | return (__m128i)__a; | ||
| 59 | } | ||
| 60 | |||
| 61 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 62 | _mm256_castbf16_si256(__m256bh __a) { | ||
| 63 | return (__m256i)__a; | ||
| 64 | } | ||
| 65 | |||
| 66 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_castps_pbh(__m128 __a) { | ||
| 67 | return (__m128bh)__a; | ||
| 68 | } | ||
| 69 | |||
| 70 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_castps_pbh(__m256 __a) { | ||
| 71 | return (__m256bh)__a; | ||
| 72 | } | ||
| 73 | |||
| 74 | static __inline__ __bf16 __DEFAULT_FN_ATTRS128 _mm_cvtsbh_bf16(__m128bh __a) { | ||
| 75 | return __a[0]; | ||
| 76 | } | ||
| 77 | |||
| 78 | static __inline__ __bf16 __DEFAULT_FN_ATTRS256 | ||
| 79 | _mm256_cvtsbh_bf16(__m256bh __a) { | ||
| 80 | return __a[0]; | ||
| 81 | } | ||
| 82 | |||
| 83 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_castpd_pbh(__m128d __a) { | ||
| 84 | return (__m128bh)__a; | ||
| 85 | } | ||
| 86 | |||
| 87 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 88 | _mm256_castpd_pbh(__m256d __a) { | ||
| 89 | return (__m256bh)__a; | ||
| 90 | } | ||
| 91 | |||
| 92 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 93 | _mm_castsi128_pbh(__m128i __a) { | ||
| 94 | return (__m128bh)__a; | ||
| 95 | } | ||
| 96 | |||
| 97 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 98 | _mm256_castsi256_pbh(__m256i __a) { | ||
| 99 | return (__m256bh)__a; | ||
| 100 | } | ||
| 101 | |||
| 102 | static __inline__ __m128bh __DEFAULT_FN_ATTRS256 | ||
| 103 | _mm256_castbf16256_pbh128(__m256bh __a) { | ||
| 104 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7); | ||
| 105 | } | ||
| 106 | |||
| 107 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 108 | _mm256_castbf16128_pbh256(__m128bh __a) { | ||
| 109 | return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, -1, -1, -1, | ||
| 110 | -1, -1, -1, -1, -1); | ||
| 111 | } | ||
| 112 | |||
| 113 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 114 | _mm256_zextbf16128_pbh256(__m128bh __a) { | ||
| 115 | return __builtin_shufflevector(__a, (__v8bf)_mm_setzero_pbh(), 0, 1, 2, 3, 4, | ||
| 116 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); | ||
| 117 | } | ||
| 118 | |||
| 119 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_undefined_pbh(void) { | ||
| 120 | return (__m256bh)__builtin_ia32_undef256(); | ||
| 121 | } | ||
| 122 | |||
| 123 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 124 | _mm_load_sbh(void const *__dp) { | ||
| 125 | __m128bh src = (__v8bf)_mm_setzero_pbh(); | ||
| 126 | return (__m128bh)__builtin_ia32_loadsbf16128_mask((const __v8bf *)__dp, src, | ||
| 127 | 1); | ||
| 128 | } | ||
| 129 | |||
| 130 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 131 | _mm_mask_load_sbh(__m128bh __W, __mmask8 __U, const void *__A) { | ||
| 132 | __m128bh src = (__v8bf)__builtin_shufflevector( | ||
| 133 | (__v8bf)__W, (__v8bf)_mm_setzero_pbh(), 0, 8, 8, 8, 8, 8, 8, 8); | ||
| 134 | |||
| 135 | return (__m128bh)__builtin_ia32_loadsbf16128_mask((const __v8bf *)__A, src, | ||
| 136 | __U & 1); | ||
| 137 | } | ||
| 138 | |||
| 139 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 140 | _mm_maskz_load_sbh(__mmask8 __U, const void *__A) { | ||
| 141 | return (__m128bh)__builtin_ia32_loadsbf16128_mask( | ||
| 142 | (const __v8bf *)__A, (__v8bf)_mm_setzero_pbh(), __U & 1); | ||
| 143 | } | ||
| 144 | |||
| 145 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 146 | _mm256_load_pbh(void const *__p) { | ||
| 147 | return *(const __m256bh *)__p; | ||
| 148 | } | ||
| 149 | |||
| 150 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_load_pbh(void const *__p) { | ||
| 151 | return *(const __m128bh *)__p; | ||
| 152 | } | ||
| 153 | |||
| 154 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 155 | _mm256_loadu_pbh(void const *__p) { | ||
| 156 | struct __loadu_pbh { | ||
| 157 | __m256bh_u __v; | ||
| 158 | } __attribute__((__packed__, __may_alias__)); | ||
| 159 | return ((const struct __loadu_pbh *)__p)->__v; | ||
| 160 | } | ||
| 161 | |||
| 162 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 163 | _mm_loadu_pbh(void const *__p) { | ||
| 164 | struct __loadu_pbh { | ||
| 165 | __m128bh_u __v; | ||
| 166 | } __attribute__((__packed__, __may_alias__)); | ||
| 167 | return ((const struct __loadu_pbh *)__p)->__v; | ||
| 168 | } | ||
| 169 | |||
| 170 | static __inline__ void __DEFAULT_FN_ATTRS128 _mm_store_sbh(void *__dp, | ||
| 171 | __m128bh __a) { | ||
| 172 | struct __mm_store_sbh_struct { | ||
| 173 | __bf16 __u; | ||
| 174 | } __attribute__((__packed__, __may_alias__)); | ||
| 175 | ((struct __mm_store_sbh_struct *)__dp)->__u = __a[0]; | ||
| 176 | } | ||
| 177 | |||
| 178 | static __inline__ void __DEFAULT_FN_ATTRS128 _mm_mask_store_sbh(void *__W, | ||
| 179 | __mmask8 __U, | ||
| 180 | __m128bh __A) { | ||
| 181 | __builtin_ia32_storesbf16128_mask((__v8bf *)__W, __A, __U & 1); | ||
| 182 | } | ||
| 183 | |||
| 184 | static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_store_pbh(void *__P, | ||
| 185 | __m256bh __A) { | ||
| 186 | *(__m256bh *)__P = __A; | ||
| 187 | } | ||
| 188 | |||
| 189 | static __inline__ void __DEFAULT_FN_ATTRS128 _mm_store_pbh(void *__P, | ||
| 190 | __m128bh __A) { | ||
| 191 | *(__m128bh *)__P = __A; | ||
| 192 | } | ||
| 193 | |||
| 194 | static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_storeu_pbh(void *__P, | ||
| 195 | __m256bh __A) { | ||
| 196 | struct __storeu_pbh { | ||
| 197 | __m256bh_u __v; | ||
| 198 | } __attribute__((__packed__, __may_alias__)); | ||
| 199 | ((struct __storeu_pbh *)__P)->__v = __A; | ||
| 200 | } | ||
| 201 | |||
| 202 | static __inline__ void __DEFAULT_FN_ATTRS128 _mm_storeu_pbh(void *__P, | ||
| 203 | __m128bh __A) { | ||
| 204 | struct __storeu_pbh { | ||
| 205 | __m128bh_u __v; | ||
| 206 | } __attribute__((__packed__, __may_alias__)); | ||
| 207 | ((struct __storeu_pbh *)__P)->__v = __A; | ||
| 208 | } | ||
| 209 | |||
| 210 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_move_sbh(__m128bh __a, | ||
| 211 | __m128bh __b) { | ||
| 212 | __a[0] = __b[0]; | ||
| 213 | return __a; | ||
| 214 | } | ||
| 215 | |||
| 216 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 217 | _mm_mask_move_sbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 218 | return __builtin_ia32_selectsbf_128(__U, _mm_move_sbh(__A, __B), __W); | ||
| 219 | } | ||
| 220 | |||
| 221 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 222 | _mm_maskz_move_sbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 223 | return __builtin_ia32_selectsbf_128(__U, _mm_move_sbh(__A, __B), | ||
| 224 | _mm_setzero_pbh()); | ||
| 225 | } | ||
| 226 | |||
| 227 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_undefined_pbh(void) { | ||
| 228 | return (__m128bh)__builtin_ia32_undef128(); | ||
| 229 | } | ||
| 230 | |||
| 231 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_set_sbh(__bf16 bf) { | ||
| 232 | return (__v8bf)__builtin_shufflevector( | ||
| 233 | (__v8bf){bf, bf, bf, bf, bf, bf, bf, bf}, (__v8bf)_mm_setzero_pbh(), 0, 8, | ||
| 234 | 8, 8, 8, 8, 8, 8); | ||
| 235 | } | ||
| 236 | |||
| 237 | static __inline __m128bh __DEFAULT_FN_ATTRS128 _mm_set1_pbh(__bf16 bf) { | ||
| 238 | return (__m128bh)(__v8bf){bf, bf, bf, bf, bf, bf, bf, bf}; | ||
| 239 | } | ||
| 240 | |||
| 241 | static __inline __m256bh __DEFAULT_FN_ATTRS256 _mm256_set1_pbh(__bf16 bf) { | ||
| 242 | return (__m256bh)(__v16bf){bf, bf, bf, bf, bf, bf, bf, bf, | ||
| 243 | bf, bf, bf, bf, bf, bf, bf, bf}; | ||
| 244 | } | ||
| 245 | |||
| 246 | static __inline __m128bh __DEFAULT_FN_ATTRS128 | ||
| 247 | _mm_set_pbh(__bf16 bf1, __bf16 bf2, __bf16 bf3, __bf16 bf4, __bf16 bf5, | ||
| 248 | __bf16 bf6, __bf16 bf7, __bf16 bf8) { | ||
| 249 | return (__m128bh)(__v8bf){bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8}; | ||
| 250 | } | ||
| 251 | |||
| 252 | static __inline __m256bh __DEFAULT_FN_ATTRS256 _mm256_set_pbh( | ||
| 253 | __bf16 bf1, __bf16 bf2, __bf16 bf3, __bf16 bf4, __bf16 bf5, __bf16 bf6, | ||
| 254 | __bf16 bf7, __bf16 bf8, __bf16 bf9, __bf16 bf10, __bf16 bf11, __bf16 bf12, | ||
| 255 | __bf16 bf13, __bf16 bf14, __bf16 bf15, __bf16 bf16) { | ||
| 256 | return (__m256bh)(__v16bf){bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8, | ||
| 257 | bf9, bf10, bf11, bf12, bf13, bf14, bf15, bf16}; | ||
| 258 | } | ||
| 259 | |||
| 260 | #define _mm_setr_pbh(bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8) \ | ||
| 261 | _mm_set_pbh((bf8), (bf7), (bf6), (bf5), (bf4), (bf3), (bf2), (bf1)) | ||
| 262 | |||
| 263 | #define _mm256_setr_pbh(bf1, bf2, bf3, bf4, bf5, bf6, bf7, bf8, bf9, bf10, \ | ||
| 264 | bf11, bf12, bf13, bf14, bf15, bf16) \ | ||
| 265 | _mm256_set_pbh((bf16), (bf15), (bf14), (bf13), (bf12), (bf11), (bf10), \ | ||
| 266 | (bf9), (bf8), (bf7), (bf6), (bf5), (bf4), (bf3), (bf2), \ | ||
| 267 | (bf1)) | ||
| 268 | |||
| 269 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_abs_pbh(__m256bh __A) { | ||
| 270 | return (__m256bh)_mm256_and_epi32(_mm256_set1_epi32(0x7FFF7FFF), | ||
| 271 | (__m256i)__A); | ||
| 272 | } | ||
| 273 | |||
| 274 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_abs_pbh(__m128bh __A) { | ||
| 275 | return (__m128bh)_mm_and_epi32(_mm_set1_epi32(0x7FFF7FFF), (__m128i)__A); | ||
| 276 | } | ||
| 277 | |||
| 278 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 279 | _mm_mask_blend_pbh(__mmask8 __U, __m128bh __A, __m128bh __W) { | ||
| 280 | return (__m128bh)__builtin_ia32_selectpbf_128((__mmask8)__U, (__v8bf)__W, | ||
| 281 | (__v8bf)__A); | ||
| 282 | } | ||
| 283 | |||
| 284 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 285 | _mm256_mask_blend_pbh(__mmask16 __U, __m256bh __A, __m256bh __W) { | ||
| 286 | return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U, (__v16bf)__W, | ||
| 287 | (__v16bf)__A); | ||
| 288 | } | ||
| 289 | |||
| 290 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 291 | _mm_permutex2var_pbh(__m128bh __A, __m128i __I, __m128bh __B) { | ||
| 292 | return (__m128bh)__builtin_ia32_vpermi2varhi128((__v8hi)__A, (__v8hi)__I, | ||
| 293 | (__v8hi)__B); | ||
| 294 | } | ||
| 295 | |||
| 296 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 297 | _mm256_permutex2var_pbh(__m256bh __A, __m256i __I, __m256bh __B) { | ||
| 298 | return (__m256bh)__builtin_ia32_vpermi2varhi256((__v16hi)__A, (__v16hi)__I, | ||
| 299 | (__v16hi)__B); | ||
| 300 | } | ||
| 301 | |||
| 302 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 303 | _mm_permutexvar_pbh(__m128i __A, __m128bh __B) { | ||
| 304 | return (__m128bh)__builtin_ia32_permvarhi128((__v8hi)__B, (__v8hi)__A); | ||
| 305 | } | ||
| 306 | |||
| 307 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 308 | _mm256_permutexvar_pbh(__m256i __A, __m256bh __B) { | ||
| 309 | return (__m256bh)__builtin_ia32_permvarhi256((__v16hi)__B, (__v16hi)__A); | ||
| 310 | } | ||
| 311 | |||
| 312 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_add_pbh(__m256bh __A, | ||
| 313 | __m256bh __B) { | ||
| 314 | return (__m256bh)((__v16bf)__A + (__v16bf)__B); | ||
| 315 | } | ||
| 316 | |||
| 317 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 318 | _mm256_mask_add_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 319 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 320 | (__mmask16)__U, (__v16bf)_mm256_add_pbh(__A, __B), (__v16bf)__W); | ||
| 321 | } | ||
| 322 | |||
| 323 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 324 | _mm256_maskz_add_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 325 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 326 | (__mmask16)__U, (__v16bf)_mm256_add_pbh(__A, __B), | ||
| 327 | (__v16bf)_mm256_setzero_pbh()); | ||
| 328 | } | ||
| 329 | |||
| 330 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_add_pbh(__m128bh __A, | ||
| 331 | __m128bh __B) { | ||
| 332 | return (__m128bh)((__v8bf)__A + (__v8bf)__B); | ||
| 333 | } | ||
| 334 | |||
| 335 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 336 | _mm_mask_add_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 337 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 338 | (__mmask8)__U, (__v8bf)_mm_add_pbh(__A, __B), (__v8bf)__W); | ||
| 339 | } | ||
| 340 | |||
| 341 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 342 | _mm_maskz_add_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 343 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 344 | (__mmask8)__U, (__v8bf)_mm_add_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 345 | } | ||
| 346 | |||
| 347 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_sub_pbh(__m256bh __A, | ||
| 348 | __m256bh __B) { | ||
| 349 | return (__m256bh)((__v16bf)__A - (__v16bf)__B); | ||
| 350 | } | ||
| 351 | |||
| 352 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 353 | _mm256_mask_sub_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 354 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 355 | (__mmask16)__U, (__v16bf)_mm256_sub_pbh(__A, __B), (__v16bf)__W); | ||
| 356 | } | ||
| 357 | |||
| 358 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 359 | _mm256_maskz_sub_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 360 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 361 | (__mmask16)__U, (__v16bf)_mm256_sub_pbh(__A, __B), | ||
| 362 | (__v16bf)_mm256_setzero_pbh()); | ||
| 363 | } | ||
| 364 | |||
| 365 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_sub_pbh(__m128bh __A, | ||
| 366 | __m128bh __B) { | ||
| 367 | return (__m128bh)((__v8bf)__A - (__v8bf)__B); | ||
| 368 | } | ||
| 369 | |||
| 370 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 371 | _mm_mask_sub_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 372 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 373 | (__mmask8)__U, (__v8bf)_mm_sub_pbh(__A, __B), (__v8bf)__W); | ||
| 374 | } | ||
| 375 | |||
| 376 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 377 | _mm_maskz_sub_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 378 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 379 | (__mmask8)__U, (__v8bf)_mm_sub_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 380 | } | ||
| 381 | |||
| 382 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mul_pbh(__m256bh __A, | ||
| 383 | __m256bh __B) { | ||
| 384 | return (__m256bh)((__v16bf)__A * (__v16bf)__B); | ||
| 385 | } | ||
| 386 | |||
| 387 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 388 | _mm256_mask_mul_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 389 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 390 | (__mmask16)__U, (__v16bf)_mm256_mul_pbh(__A, __B), (__v16bf)__W); | ||
| 391 | } | ||
| 392 | |||
| 393 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 394 | _mm256_maskz_mul_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 395 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 396 | (__mmask16)__U, (__v16bf)_mm256_mul_pbh(__A, __B), | ||
| 397 | (__v16bf)_mm256_setzero_pbh()); | ||
| 398 | } | ||
| 399 | |||
| 400 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_mul_pbh(__m128bh __A, | ||
| 401 | __m128bh __B) { | ||
| 402 | return (__m128bh)((__v8bf)__A * (__v8bf)__B); | ||
| 403 | } | ||
| 404 | |||
| 405 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 406 | _mm_mask_mul_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 407 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 408 | (__mmask8)__U, (__v8bf)_mm_mul_pbh(__A, __B), (__v8bf)__W); | ||
| 409 | } | ||
| 410 | |||
| 411 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 412 | _mm_maskz_mul_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 413 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 414 | (__mmask8)__U, (__v8bf)_mm_mul_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 415 | } | ||
| 416 | |||
| 417 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_div_pbh(__m256bh __A, | ||
| 418 | __m256bh __B) { | ||
| 419 | return (__m256bh)((__v16bf)__A / (__v16bf)__B); | ||
| 420 | } | ||
| 421 | |||
| 422 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 423 | _mm256_mask_div_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 424 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 425 | (__mmask16)__U, (__v16bf)_mm256_div_pbh(__A, __B), (__v16bf)__W); | ||
| 426 | } | ||
| 427 | |||
| 428 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 429 | _mm256_maskz_div_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 430 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 431 | (__mmask16)__U, (__v16bf)_mm256_div_pbh(__A, __B), | ||
| 432 | (__v16bf)_mm256_setzero_pbh()); | ||
| 433 | } | ||
| 434 | |||
| 435 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_div_pbh(__m128bh __A, | ||
| 436 | __m128bh __B) { | ||
| 437 | return (__m128bh)((__v8bf)__A / (__v8bf)__B); | ||
| 438 | } | ||
| 439 | |||
| 440 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 441 | _mm_mask_div_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 442 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 443 | (__mmask8)__U, (__v8bf)_mm_div_pbh(__A, __B), (__v8bf)__W); | ||
| 444 | } | ||
| 445 | |||
| 446 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 447 | _mm_maskz_div_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 448 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 449 | (__mmask8)__U, (__v8bf)_mm_div_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 450 | } | ||
| 451 | |||
| 452 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_max_pbh(__m256bh __A, | ||
| 453 | __m256bh __B) { | ||
| 454 | return (__m256bh)__builtin_ia32_vmaxbf16256((__v16bf)__A, (__v16bf)__B); | ||
| 455 | } | ||
| 456 | |||
| 457 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 458 | _mm256_mask_max_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 459 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 460 | (__mmask16)__U, (__v16bf)_mm256_max_pbh(__A, __B), (__v16bf)__W); | ||
| 461 | } | ||
| 462 | |||
| 463 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 464 | _mm256_maskz_max_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 465 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 466 | (__mmask16)__U, (__v16bf)_mm256_max_pbh(__A, __B), | ||
| 467 | (__v16bf)_mm256_setzero_pbh()); | ||
| 468 | } | ||
| 469 | |||
| 470 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_max_pbh(__m128bh __A, | ||
| 471 | __m128bh __B) { | ||
| 472 | return (__m128bh)__builtin_ia32_vmaxbf16128((__v8bf)__A, (__v8bf)__B); | ||
| 473 | } | ||
| 474 | |||
| 475 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 476 | _mm_mask_max_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 477 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 478 | (__mmask8)__U, (__v8bf)_mm_max_pbh(__A, __B), (__v8bf)__W); | ||
| 479 | } | ||
| 480 | |||
| 481 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 482 | _mm_maskz_max_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 483 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 484 | (__mmask8)__U, (__v8bf)_mm_max_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 485 | } | ||
| 486 | |||
| 487 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_min_pbh(__m256bh __A, | ||
| 488 | __m256bh __B) { | ||
| 489 | return (__m256bh)__builtin_ia32_vminbf16256((__v16bf)__A, (__v16bf)__B); | ||
| 490 | } | ||
| 491 | |||
| 492 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 493 | _mm256_mask_min_pbh(__m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 494 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 495 | (__mmask16)__U, (__v16bf)_mm256_min_pbh(__A, __B), (__v16bf)__W); | ||
| 496 | } | ||
| 497 | |||
| 498 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 499 | _mm256_maskz_min_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 500 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 501 | (__mmask16)__U, (__v16bf)_mm256_min_pbh(__A, __B), | ||
| 502 | (__v16bf)_mm256_setzero_pbh()); | ||
| 503 | } | ||
| 504 | |||
| 505 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_min_pbh(__m128bh __A, | ||
| 506 | __m128bh __B) { | ||
| 507 | return (__m128bh)__builtin_ia32_vminbf16128((__v8bf)__A, (__v8bf)__B); | ||
| 508 | } | ||
| 509 | |||
| 510 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 511 | _mm_mask_min_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 512 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 513 | (__mmask8)__U, (__v8bf)_mm_min_pbh(__A, __B), (__v8bf)__W); | ||
| 514 | } | ||
| 515 | |||
| 516 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 517 | _mm_maskz_min_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 518 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 519 | (__mmask8)__U, (__v8bf)_mm_min_pbh(__A, __B), (__v8bf)_mm_setzero_pbh()); | ||
| 520 | } | ||
| 521 | |||
| 522 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comieq_sbh(__m128bh A, | ||
| 523 | __m128bh B) { | ||
| 524 | return __builtin_ia32_vcomisbf16eq((__v8bf)A, (__v8bf)B); | ||
| 525 | } | ||
| 526 | |||
| 527 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comilt_sbh(__m128bh A, | ||
| 528 | __m128bh B) { | ||
| 529 | return __builtin_ia32_vcomisbf16lt((__v8bf)A, (__v8bf)B); | ||
| 530 | } | ||
| 531 | |||
| 532 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comile_sbh(__m128bh A, | ||
| 533 | __m128bh B) { | ||
| 534 | return __builtin_ia32_vcomisbf16le((__v8bf)A, (__v8bf)B); | ||
| 535 | } | ||
| 536 | |||
| 537 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comigt_sbh(__m128bh A, | ||
| 538 | __m128bh B) { | ||
| 539 | return __builtin_ia32_vcomisbf16gt((__v8bf)A, (__v8bf)B); | ||
| 540 | } | ||
| 541 | |||
| 542 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comige_sbh(__m128bh A, | ||
| 543 | __m128bh B) { | ||
| 544 | return __builtin_ia32_vcomisbf16ge((__v8bf)A, (__v8bf)B); | ||
| 545 | } | ||
| 546 | |||
| 547 | static __inline__ int __DEFAULT_FN_ATTRS128 _mm_comineq_sbh(__m128bh A, | ||
| 548 | __m128bh B) { | ||
| 549 | return __builtin_ia32_vcomisbf16neq((__v8bf)A, (__v8bf)B); | ||
| 550 | } | ||
| 551 | |||
| 552 | #define _mm256_cmp_pbh_mask(__A, __B, __P) \ | ||
| 553 | ((__mmask16)__builtin_ia32_vcmpbf16256_mask((__v16bf)(__m256bh)(__A), \ | ||
| 554 | (__v16bf)(__m256bh)(__B), \ | ||
| 555 | (int)(__P), (__mmask16) - 1)) | ||
| 556 | |||
| 557 | #define _mm256_mask_cmp_pbh_mask(__U, __A, __B, __P) \ | ||
| 558 | ((__mmask16)__builtin_ia32_vcmpbf16256_mask((__v16bf)(__m256bh)(__A), \ | ||
| 559 | (__v16bf)(__m256bh)(__B), \ | ||
| 560 | (int)(__P), (__mmask16)(__U))) | ||
| 561 | |||
| 562 | #define _mm_cmp_pbh_mask(__A, __B, __P) \ | ||
| 563 | ((__mmask8)__builtin_ia32_vcmpbf16128_mask((__v8bf)(__m128bh)(__A), \ | ||
| 564 | (__v8bf)(__m128bh)(__B), \ | ||
| 565 | (int)(__P), (__mmask8) - 1)) | ||
| 566 | |||
| 567 | #define _mm_mask_cmp_pbh_mask(__U, __A, __B, __P) \ | ||
| 568 | ((__mmask8)__builtin_ia32_vcmpbf16128_mask((__v8bf)(__m128bh)(__A), \ | ||
| 569 | (__v8bf)(__m128bh)(__B), \ | ||
| 570 | (int)(__P), (__mmask8)(__U))) | ||
| 571 | |||
| 572 | #define _mm256_mask_fpclass_pbh_mask(__U, __A, imm) \ | ||
| 573 | ((__mmask16)__builtin_ia32_vfpclassbf16256_mask( \ | ||
| 574 | (__v16bf)(__m256bh)(__A), (int)(imm), (__mmask16)(__U))) | ||
| 575 | |||
| 576 | #define _mm256_fpclass_pbh_mask(__A, imm) \ | ||
| 577 | ((__mmask16)__builtin_ia32_vfpclassbf16256_mask( \ | ||
| 578 | (__v16bf)(__m256bh)(__A), (int)(imm), (__mmask16) - 1)) | ||
| 579 | |||
| 580 | #define _mm_mask_fpclass_pbh_mask(__U, __A, imm) \ | ||
| 581 | ((__mmask8)__builtin_ia32_vfpclassbf16128_mask((__v8bf)(__m128bh)(__A), \ | ||
| 582 | (int)(imm), (__mmask8)(__U))) | ||
| 583 | |||
| 584 | #define _mm_fpclass_pbh_mask(__A, imm) \ | ||
| 585 | ((__mmask8)__builtin_ia32_vfpclassbf16128_mask((__v8bf)(__m128bh)(__A), \ | ||
| 586 | (int)(imm), (__mmask8) - 1)) | ||
| 587 | |||
| 588 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 589 | _mm256_scalef_pbh(__m256bh __A, __m256bh __B) { | ||
| 590 | return (__m256bh)__builtin_ia32_vscalefbf16256_mask( | ||
| 591 | (__v16bf)__A, (__v16bf)__B, (__v16bf)_mm256_undefined_pbh(), | ||
| 592 | (__mmask16)-1); | ||
| 593 | } | ||
| 594 | |||
| 595 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask_scalef_pbh( | ||
| 596 | __m256bh __W, __mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 597 | return (__m256bh)__builtin_ia32_vscalefbf16256_mask( | ||
| 598 | (__v16bf)__A, (__v16bf)__B, (__v16bf)__W, (__mmask16)__U); | ||
| 599 | } | ||
| 600 | |||
| 601 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 602 | _mm256_maskz_scalef_pbh(__mmask16 __U, __m256bh __A, __m256bh __B) { | ||
| 603 | return (__m256bh)__builtin_ia32_vscalefbf16256_mask( | ||
| 604 | (__v16bf)__A, (__v16bf)__B, (__v16bf)_mm256_setzero_pbh(), | ||
| 605 | (__mmask16)__U); | ||
| 606 | } | ||
| 607 | |||
| 608 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_scalef_pbh(__m128bh __A, | ||
| 609 | __m128bh __B) { | ||
| 610 | return (__m128bh)__builtin_ia32_vscalefbf16128_mask( | ||
| 611 | (__v8bf)__A, (__v8bf)__B, (__v8bf)_mm_undefined_pbh(), (__mmask8)-1); | ||
| 612 | } | ||
| 613 | |||
| 614 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 615 | _mm_mask_scalef_pbh(__m128bh __W, __mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 616 | return (__m128bh)__builtin_ia32_vscalefbf16128_mask( | ||
| 617 | (__v8bf)__A, (__v8bf)__B, (__v8bf)__W, (__mmask8)__U); | ||
| 618 | } | ||
| 619 | |||
| 620 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 621 | _mm_maskz_scalef_pbh(__mmask8 __U, __m128bh __A, __m128bh __B) { | ||
| 622 | return (__m128bh)__builtin_ia32_vscalefbf16128_mask( | ||
| 623 | (__v8bf)__A, (__v8bf)__B, (__v8bf)_mm_setzero_pbh(), (__mmask8)__U); | ||
| 624 | } | ||
| 625 | |||
| 626 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_rcp_pbh(__m256bh __A) { | ||
| 627 | return (__m256bh)__builtin_ia32_vrcpbf16256_mask( | ||
| 628 | (__v16bf)__A, (__v16bf)_mm256_undefined_pbh(), (__mmask16)-1); | ||
| 629 | } | ||
| 630 | |||
| 631 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 632 | _mm256_mask_rcp_pbh(__m256bh __W, __mmask16 __U, __m256bh __A) { | ||
| 633 | return (__m256bh)__builtin_ia32_vrcpbf16256_mask((__v16bf)__A, (__v16bf)__W, | ||
| 634 | (__mmask16)__U); | ||
| 635 | } | ||
| 636 | |||
| 637 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 638 | _mm256_maskz_rcp_pbh(__mmask16 __U, __m256bh __A) { | ||
| 639 | return (__m256bh)__builtin_ia32_vrcpbf16256_mask( | ||
| 640 | (__v16bf)__A, (__v16bf)_mm256_setzero_pbh(), (__mmask16)__U); | ||
| 641 | } | ||
| 642 | |||
| 643 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_rcp_pbh(__m128bh __A) { | ||
| 644 | return (__m128bh)__builtin_ia32_vrcpbf16128_mask( | ||
| 645 | (__v8bf)__A, (__v8bf)_mm_undefined_pbh(), (__mmask8)-1); | ||
| 646 | } | ||
| 647 | |||
| 648 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 649 | _mm_mask_rcp_pbh(__m128bh __W, __mmask8 __U, __m128bh __A) { | ||
| 650 | return (__m128bh)__builtin_ia32_vrcpbf16128_mask((__v8bf)__A, (__v8bf)__W, | ||
| 651 | (__mmask8)__U); | ||
| 652 | } | ||
| 653 | |||
| 654 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 655 | _mm_maskz_rcp_pbh(__mmask8 __U, __m128bh __A) { | ||
| 656 | return (__m128bh)__builtin_ia32_vrcpbf16128_mask( | ||
| 657 | (__v8bf)__A, (__v8bf)_mm_setzero_pbh(), (__mmask8)__U); | ||
| 658 | } | ||
| 659 | |||
| 660 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 661 | _mm256_getexp_pbh(__m256bh __A) { | ||
| 662 | return (__m256bh)__builtin_ia32_vgetexpbf16256_mask( | ||
| 663 | (__v16bf)__A, (__v16bf)_mm256_undefined_pbh(), (__mmask16)-1); | ||
| 664 | } | ||
| 665 | |||
| 666 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 667 | _mm256_mask_getexp_pbh(__m256bh __W, __mmask16 __U, __m256bh __A) { | ||
| 668 | return (__m256bh)__builtin_ia32_vgetexpbf16256_mask( | ||
| 669 | (__v16bf)__A, (__v16bf)__W, (__mmask16)__U); | ||
| 670 | } | ||
| 671 | |||
| 672 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 673 | _mm256_maskz_getexp_pbh(__mmask16 __U, __m256bh __A) { | ||
| 674 | return (__m256bh)__builtin_ia32_vgetexpbf16256_mask( | ||
| 675 | (__v16bf)__A, (__v16bf)_mm256_setzero_pbh(), (__mmask16)__U); | ||
| 676 | } | ||
| 677 | |||
| 678 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_getexp_pbh(__m128bh __A) { | ||
| 679 | return (__m128bh)__builtin_ia32_vgetexpbf16128_mask( | ||
| 680 | (__v8bf)__A, (__v8bf)_mm_undefined_pbh(), (__mmask8)-1); | ||
| 681 | } | ||
| 682 | |||
| 683 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 684 | _mm_mask_getexp_pbh(__m128bh __W, __mmask8 __U, __m128bh __A) { | ||
| 685 | return (__m128bh)__builtin_ia32_vgetexpbf16128_mask((__v8bf)__A, (__v8bf)__W, | ||
| 686 | (__mmask8)__U); | ||
| 687 | } | ||
| 688 | |||
| 689 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 690 | _mm_maskz_getexp_pbh(__mmask8 __U, __m128bh __A) { | ||
| 691 | return (__m128bh)__builtin_ia32_vgetexpbf16128_mask( | ||
| 692 | (__v8bf)__A, (__v8bf)_mm_setzero_pbh(), (__mmask8)__U); | ||
| 693 | } | ||
| 694 | |||
| 695 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 696 | _mm256_rsqrt_pbh(__m256bh __A) { | ||
| 697 | return (__m256bh)__builtin_ia32_vrsqrtbf16256_mask( | ||
| 698 | (__v16bf)__A, (__v16bf)_mm256_undefined_pbh(), (__mmask16)-1); | ||
| 699 | } | ||
| 700 | |||
| 701 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 702 | _mm256_mask_rsqrt_pbh(__m256bh __W, __mmask16 __U, __m256bh __A) { | ||
| 703 | return (__m256bh)__builtin_ia32_vrsqrtbf16256_mask((__v16bf)__A, (__v16bf)__W, | ||
| 704 | (__mmask16)__U); | ||
| 705 | } | ||
| 706 | |||
| 707 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 708 | _mm256_maskz_rsqrt_pbh(__mmask16 __U, __m256bh __A) { | ||
| 709 | return (__m256bh)__builtin_ia32_vrsqrtbf16256_mask( | ||
| 710 | (__v16bf)__A, (__v16bf)_mm256_setzero_pbh(), (__mmask16)__U); | ||
| 711 | } | ||
| 712 | |||
| 713 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_rsqrt_pbh(__m128bh __A) { | ||
| 714 | return (__m128bh)__builtin_ia32_vrsqrtbf16128_mask( | ||
| 715 | (__v8bf)__A, (__v8bf)_mm_undefined_pbh(), (__mmask8)-1); | ||
| 716 | } | ||
| 717 | |||
| 718 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 719 | _mm_mask_rsqrt_pbh(__m128bh __W, __mmask8 __U, __m128bh __A) { | ||
| 720 | return (__m128bh)__builtin_ia32_vrsqrtbf16128_mask((__v8bf)__A, (__v8bf)__W, | ||
| 721 | (__mmask8)__U); | ||
| 722 | } | ||
| 723 | |||
| 724 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 725 | _mm_maskz_rsqrt_pbh(__mmask8 __U, __m128bh __A) { | ||
| 726 | return (__m128bh)__builtin_ia32_vrsqrtbf16128_mask( | ||
| 727 | (__v8bf)__A, (__v8bf)_mm_setzero_pbh(), (__mmask8)__U); | ||
| 728 | } | ||
| 729 | |||
| 730 | #define _mm256_reduce_pbh(__A, imm) \ | ||
| 731 | ((__m256bh)__builtin_ia32_vreducebf16256_mask( \ | ||
| 732 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)_mm256_undefined_pbh(), \ | ||
| 733 | (__mmask16) - 1)) | ||
| 734 | |||
| 735 | #define _mm256_mask_reduce_pbh(__W, __U, __A, imm) \ | ||
| 736 | ((__m256bh)__builtin_ia32_vreducebf16256_mask( \ | ||
| 737 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)(__m256bh)(__W), \ | ||
| 738 | (__mmask16)(__U))) | ||
| 739 | |||
| 740 | #define _mm256_maskz_reduce_pbh(__U, __A, imm) \ | ||
| 741 | ((__m256bh)__builtin_ia32_vreducebf16256_mask( \ | ||
| 742 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)_mm256_setzero_pbh(), \ | ||
| 743 | (__mmask16)(__U))) | ||
| 744 | |||
| 745 | #define _mm_reduce_pbh(__A, imm) \ | ||
| 746 | ((__m128bh)__builtin_ia32_vreducebf16128_mask( \ | ||
| 747 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)_mm_undefined_pbh(), \ | ||
| 748 | (__mmask8) - 1)) | ||
| 749 | |||
| 750 | #define _mm_mask_reduce_pbh(__W, __U, __A, imm) \ | ||
| 751 | ((__m128bh)__builtin_ia32_vreducebf16128_mask( \ | ||
| 752 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)(__m128bh)(__W), \ | ||
| 753 | (__mmask8)(__U))) | ||
| 754 | |||
| 755 | #define _mm_maskz_reduce_pbh(__U, __A, imm) \ | ||
| 756 | ((__m128bh)__builtin_ia32_vreducebf16128_mask( \ | ||
| 757 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)_mm_setzero_pbh(), \ | ||
| 758 | (__mmask8)(__U))) | ||
| 759 | |||
| 760 | #define _mm256_roundscale_pbh(__A, imm) \ | ||
| 761 | ((__m256bh)__builtin_ia32_vrndscalebf16_256_mask( \ | ||
| 762 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)_mm256_setzero_pbh(), \ | ||
| 763 | (__mmask16) - 1)) | ||
| 764 | |||
| 765 | #define _mm256_mask_roundscale_pbh(__W, __U, __A, imm) \ | ||
| 766 | ((__m256bh)__builtin_ia32_vrndscalebf16_256_mask( \ | ||
| 767 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)(__m256bh)(__W), \ | ||
| 768 | (__mmask16)(__U))) | ||
| 769 | |||
| 770 | #define _mm256_maskz_roundscale_pbh(__U, __A, imm) \ | ||
| 771 | ((__m256bh)__builtin_ia32_vrndscalebf16_256_mask( \ | ||
| 772 | (__v16bf)(__m256bh)(__A), (int)(imm), (__v16bf)_mm256_setzero_pbh(), \ | ||
| 773 | (__mmask16)(__U))) | ||
| 774 | |||
| 775 | #define _mm_roundscale_pbh(__A, imm) \ | ||
| 776 | ((__m128bh)__builtin_ia32_vrndscalebf16_128_mask( \ | ||
| 777 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)_mm_setzero_pbh(), \ | ||
| 778 | (__mmask8) - 1)) | ||
| 779 | |||
| 780 | #define _mm_mask_roundscale_pbh(__W, __U, __A, imm) \ | ||
| 781 | ((__m128bh)__builtin_ia32_vrndscalebf16_128_mask( \ | ||
| 782 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)(__m128bh)(__W), \ | ||
| 783 | (__mmask8)(__U))) | ||
| 784 | |||
| 785 | #define _mm_maskz_roundscale_pbh(__U, __A, imm) \ | ||
| 786 | ((__m128bh)__builtin_ia32_vrndscalebf16_128_mask( \ | ||
| 787 | (__v8bf)(__m128bh)(__A), (int)(imm), (__v8bf)_mm_setzero_pbh(), \ | ||
| 788 | (__mmask8)(__U))) | ||
| 789 | |||
| 790 | #define _mm256_getmant_pbh(__A, __B, __C) \ | ||
| 791 | ((__m256bh)__builtin_ia32_vgetmantbf16256_mask( \ | ||
| 792 | (__v16bf)(__m256bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 793 | (__v16bf)_mm256_undefined_pbh(), (__mmask16) - 1)) | ||
| 794 | |||
| 795 | #define _mm256_mask_getmant_pbh(__W, __U, __A, __B, __C) \ | ||
| 796 | ((__m256bh)__builtin_ia32_vgetmantbf16256_mask( \ | ||
| 797 | (__v16bf)(__m256bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 798 | (__v16bf)(__m256bh)(__W), (__mmask16)(__U))) | ||
| 799 | |||
| 800 | #define _mm256_maskz_getmant_pbh(__U, __A, __B, __C) \ | ||
| 801 | ((__m256bh)__builtin_ia32_vgetmantbf16256_mask( \ | ||
| 802 | (__v16bf)(__m256bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 803 | (__v16bf)_mm256_setzero_pbh(), (__mmask16)(__U))) | ||
| 804 | |||
| 805 | #define _mm_getmant_pbh(__A, __B, __C) \ | ||
| 806 | ((__m128bh)__builtin_ia32_vgetmantbf16128_mask( \ | ||
| 807 | (__v8bf)(__m128bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 808 | (__v8bf)_mm_undefined_pbh(), (__mmask8) - 1)) | ||
| 809 | |||
| 810 | #define _mm_mask_getmant_pbh(__W, __U, __A, __B, __C) \ | ||
| 811 | ((__m128bh)__builtin_ia32_vgetmantbf16128_mask( \ | ||
| 812 | (__v8bf)(__m128bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 813 | (__v8bf)(__m128bh)(__W), (__mmask8)(__U))) | ||
| 814 | |||
| 815 | #define _mm_maskz_getmant_pbh(__U, __A, __B, __C) \ | ||
| 816 | ((__m128bh)__builtin_ia32_vgetmantbf16128_mask( \ | ||
| 817 | (__v8bf)(__m128bh)(__A), (int)(((__C) << 2) | (__B)), \ | ||
| 818 | (__v8bf)_mm_setzero_pbh(), (__mmask8)(__U))) | ||
| 819 | |||
| 820 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_sqrt_pbh(__m256bh __A) { | ||
| 821 | return (__m256bh)__builtin_ia32_vsqrtbf16256((__v16bf)__A); | ||
| 822 | } | ||
| 823 | |||
| 824 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 825 | _mm256_mask_sqrt_pbh(__m256bh __W, __mmask16 __U, __m256bh __A) { | ||
| 826 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 827 | (__mmask16)__U, (__v16bf)_mm256_sqrt_pbh(__A), (__v16bf)__W); | ||
| 828 | } | ||
| 829 | |||
| 830 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 831 | _mm256_maskz_sqrt_pbh(__mmask16 __U, __m256bh __A) { | ||
| 832 | return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U, | ||
| 833 | (__v16bf)_mm256_sqrt_pbh(__A), | ||
| 834 | (__v16bf)_mm256_setzero_pbh()); | ||
| 835 | } | ||
| 836 | |||
| 837 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_sqrt_pbh(__m128bh __A) { | ||
| 838 | return (__m128bh)__builtin_ia32_vsqrtbf16((__v8bf)__A); | ||
| 839 | } | ||
| 840 | |||
| 841 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 842 | _mm_mask_sqrt_pbh(__m128bh __W, __mmask8 __U, __m128bh __A) { | ||
| 843 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 844 | (__mmask8)__U, (__v8bf)_mm_sqrt_pbh(__A), (__v8bf)__W); | ||
| 845 | } | ||
| 846 | |||
| 847 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 848 | _mm_maskz_sqrt_pbh(__mmask8 __U, __m128bh __A) { | ||
| 849 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 850 | (__mmask8)__U, (__v8bf)_mm_sqrt_pbh(__A), (__v8bf)_mm_setzero_pbh()); | ||
| 851 | } | ||
| 852 | |||
| 853 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 854 | _mm256_fmadd_pbh(__m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 855 | return (__m256bh)__builtin_ia32_vfmaddnepbh256((__v16bf)__A, (__v16bf)__B, | ||
| 856 | (__v16bf)__C); | ||
| 857 | } | ||
| 858 | |||
| 859 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 860 | _mm256_mask_fmadd_pbh(__m256bh __A, __mmask16 __U, __m256bh __B, __m256bh __C) { | ||
| 861 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 862 | (__mmask16)__U, | ||
| 863 | _mm256_fmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), (__v16bf)__A); | ||
| 864 | } | ||
| 865 | |||
| 866 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask3_fmadd_pbh( | ||
| 867 | __m256bh __A, __m256bh __B, __m256bh __C, __mmask16 __U) { | ||
| 868 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 869 | (__mmask16)__U, | ||
| 870 | _mm256_fmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), (__v16bf)__C); | ||
| 871 | } | ||
| 872 | |||
| 873 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_maskz_fmadd_pbh( | ||
| 874 | __mmask16 __U, __m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 875 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 876 | (__mmask16)__U, | ||
| 877 | _mm256_fmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 878 | (__v16bf)_mm256_setzero_pbh()); | ||
| 879 | } | ||
| 880 | |||
| 881 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 882 | _mm256_fmsub_pbh(__m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 883 | return (__m256bh)__builtin_ia32_vfmaddnepbh256((__v16bf)__A, (__v16bf)__B, | ||
| 884 | -(__v16bf)__C); | ||
| 885 | } | ||
| 886 | |||
| 887 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 888 | _mm256_mask_fmsub_pbh(__m256bh __A, __mmask16 __U, __m256bh __B, __m256bh __C) { | ||
| 889 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 890 | (__mmask16)__U, | ||
| 891 | _mm256_fmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), (__v16bf)__A); | ||
| 892 | } | ||
| 893 | |||
| 894 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask3_fmsub_pbh( | ||
| 895 | __m256bh __A, __m256bh __B, __m256bh __C, __mmask16 __U) { | ||
| 896 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 897 | (__mmask16)__U, | ||
| 898 | _mm256_fmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), (__v16bf)__C); | ||
| 899 | } | ||
| 900 | |||
| 901 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_maskz_fmsub_pbh( | ||
| 902 | __mmask16 __U, __m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 903 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 904 | (__mmask16)__U, | ||
| 905 | _mm256_fmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 906 | (__v16bf)_mm256_setzero_pbh()); | ||
| 907 | } | ||
| 908 | |||
| 909 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 910 | _mm256_fnmadd_pbh(__m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 911 | return (__m256bh)__builtin_ia32_vfmaddnepbh256((__v16bf)__A, -(__v16bf)__B, | ||
| 912 | (__v16bf)__C); | ||
| 913 | } | ||
| 914 | |||
| 915 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask_fnmadd_pbh( | ||
| 916 | __m256bh __A, __mmask16 __U, __m256bh __B, __m256bh __C) { | ||
| 917 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 918 | (__mmask16)__U, | ||
| 919 | _mm256_fnmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 920 | (__v16bf)__A); | ||
| 921 | } | ||
| 922 | |||
| 923 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask3_fnmadd_pbh( | ||
| 924 | __m256bh __A, __m256bh __B, __m256bh __C, __mmask16 __U) { | ||
| 925 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 926 | (__mmask16)__U, | ||
| 927 | _mm256_fnmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 928 | (__v16bf)__C); | ||
| 929 | } | ||
| 930 | |||
| 931 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_maskz_fnmadd_pbh( | ||
| 932 | __mmask16 __U, __m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 933 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 934 | (__mmask16)__U, | ||
| 935 | _mm256_fnmadd_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 936 | (__v16bf)_mm256_setzero_pbh()); | ||
| 937 | } | ||
| 938 | |||
| 939 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 | ||
| 940 | _mm256_fnmsub_pbh(__m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 941 | return (__m256bh)__builtin_ia32_vfmaddnepbh256((__v16bf)__A, -(__v16bf)__B, | ||
| 942 | -(__v16bf)__C); | ||
| 943 | } | ||
| 944 | |||
| 945 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask_fnmsub_pbh( | ||
| 946 | __m256bh __A, __mmask16 __U, __m256bh __B, __m256bh __C) { | ||
| 947 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 948 | (__mmask16)__U, | ||
| 949 | _mm256_fnmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 950 | (__v16bf)__A); | ||
| 951 | } | ||
| 952 | |||
| 953 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_mask3_fnmsub_pbh( | ||
| 954 | __m256bh __A, __m256bh __B, __m256bh __C, __mmask16 __U) { | ||
| 955 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 956 | (__mmask16)__U, | ||
| 957 | _mm256_fnmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 958 | (__v16bf)__C); | ||
| 959 | } | ||
| 960 | |||
| 961 | static __inline__ __m256bh __DEFAULT_FN_ATTRS256 _mm256_maskz_fnmsub_pbh( | ||
| 962 | __mmask16 __U, __m256bh __A, __m256bh __B, __m256bh __C) { | ||
| 963 | return (__m256bh)__builtin_ia32_selectpbf_256( | ||
| 964 | (__mmask16)__U, | ||
| 965 | _mm256_fnmsub_pbh((__v16bf)__A, (__v16bf)__B, (__v16bf)__C), | ||
| 966 | (__v16bf)_mm256_setzero_pbh()); | ||
| 967 | } | ||
| 968 | |||
| 969 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_fmadd_pbh(__m128bh __A, | ||
| 970 | __m128bh __B, | ||
| 971 | __m128bh __C) { | ||
| 972 | return (__m128bh)__builtin_ia32_vfmaddnepbh128((__v8bf)__A, (__v8bf)__B, | ||
| 973 | (__v8bf)__C); | ||
| 974 | } | ||
| 975 | |||
| 976 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 977 | _mm_mask_fmadd_pbh(__m128bh __A, __mmask8 __U, __m128bh __B, __m128bh __C) { | ||
| 978 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 979 | (__mmask8)__U, _mm_fmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 980 | (__v8bf)__A); | ||
| 981 | } | ||
| 982 | |||
| 983 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 984 | _mm_mask3_fmadd_pbh(__m128bh __A, __m128bh __B, __m128bh __C, __mmask8 __U) { | ||
| 985 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 986 | (__mmask8)__U, _mm_fmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 987 | (__v8bf)__C); | ||
| 988 | } | ||
| 989 | |||
| 990 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 991 | _mm_maskz_fmadd_pbh(__mmask8 __U, __m128bh __A, __m128bh __B, __m128bh __C) { | ||
| 992 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 993 | (__mmask8)__U, _mm_fmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 994 | (__v8bf)_mm_setzero_pbh()); | ||
| 995 | } | ||
| 996 | |||
| 997 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_fmsub_pbh(__m128bh __A, | ||
| 998 | __m128bh __B, | ||
| 999 | __m128bh __C) { | ||
| 1000 | return (__m128bh)__builtin_ia32_vfmaddnepbh128((__v8bf)__A, (__v8bf)__B, | ||
| 1001 | -(__v8bf)__C); | ||
| 1002 | } | ||
| 1003 | |||
| 1004 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1005 | _mm_mask_fmsub_pbh(__m128bh __A, __mmask8 __U, __m128bh __B, __m128bh __C) { | ||
| 1006 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1007 | (__mmask8)__U, _mm_fmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1008 | (__v8bf)__A); | ||
| 1009 | } | ||
| 1010 | |||
| 1011 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1012 | _mm_mask3_fmsub_pbh(__m128bh __A, __m128bh __B, __m128bh __C, __mmask8 __U) { | ||
| 1013 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1014 | (__mmask8)__U, _mm_fmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1015 | (__v8bf)__C); | ||
| 1016 | } | ||
| 1017 | |||
| 1018 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1019 | _mm_maskz_fmsub_pbh(__mmask8 __U, __m128bh __A, __m128bh __B, __m128bh __C) { | ||
| 1020 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1021 | (__mmask8)__U, _mm_fmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1022 | (__v8bf)_mm_setzero_pbh()); | ||
| 1023 | } | ||
| 1024 | |||
| 1025 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_fnmadd_pbh(__m128bh __A, | ||
| 1026 | __m128bh __B, | ||
| 1027 | __m128bh __C) { | ||
| 1028 | return (__m128bh)__builtin_ia32_vfmaddnepbh128((__v8bf)__A, -(__v8bf)__B, | ||
| 1029 | (__v8bf)__C); | ||
| 1030 | } | ||
| 1031 | |||
| 1032 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1033 | _mm_mask_fnmadd_pbh(__m128bh __A, __mmask8 __U, __m128bh __B, __m128bh __C) { | ||
| 1034 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1035 | (__mmask8)__U, _mm_fnmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1036 | (__v8bf)__A); | ||
| 1037 | } | ||
| 1038 | |||
| 1039 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1040 | _mm_mask3_fnmadd_pbh(__m128bh __A, __m128bh __B, __m128bh __C, __mmask8 __U) { | ||
| 1041 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1042 | (__mmask8)__U, _mm_fnmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1043 | (__v8bf)__C); | ||
| 1044 | } | ||
| 1045 | |||
| 1046 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1047 | _mm_maskz_fnmadd_pbh(__mmask8 __U, __m128bh __A, __m128bh __B, __m128bh __C) { | ||
| 1048 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1049 | (__mmask8)__U, _mm_fnmadd_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1050 | (__v8bf)_mm_setzero_pbh()); | ||
| 1051 | } | ||
| 1052 | |||
| 1053 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 _mm_fnmsub_pbh(__m128bh __A, | ||
| 1054 | __m128bh __B, | ||
| 1055 | __m128bh __C) { | ||
| 1056 | return (__m128bh)__builtin_ia32_vfmaddnepbh128((__v8bf)__A, -(__v8bf)__B, | ||
| 1057 | -(__v8bf)__C); | ||
| 1058 | } | ||
| 1059 | |||
| 1060 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1061 | _mm_mask_fnmsub_pbh(__m128bh __A, __mmask8 __U, __m128bh __B, __m128bh __C) { | ||
| 1062 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1063 | (__mmask8)__U, _mm_fnmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1064 | (__v8bf)__A); | ||
| 1065 | } | ||
| 1066 | |||
| 1067 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1068 | _mm_mask3_fnmsub_pbh(__m128bh __A, __m128bh __B, __m128bh __C, __mmask8 __U) { | ||
| 1069 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1070 | (__mmask8)__U, _mm_fnmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1071 | (__v8bf)__C); | ||
| 1072 | } | ||
| 1073 | |||
| 1074 | static __inline__ __m128bh __DEFAULT_FN_ATTRS128 | ||
| 1075 | _mm_maskz_fnmsub_pbh(__mmask8 __U, __m128bh __A, __m128bh __B, __m128bh __C) { | ||
| 1076 | return (__m128bh)__builtin_ia32_selectpbf_128( | ||
| 1077 | (__mmask8)__U, _mm_fnmsub_pbh((__v8bf)__A, (__v8bf)__B, (__v8bf)__C), | ||
| 1078 | (__v8bf)_mm_setzero_pbh()); | ||
| 1079 | } | ||
| 1080 | |||
| 1081 | #undef __DEFAULT_FN_ATTRS128 | ||
| 1082 | #undef __DEFAULT_FN_ATTRS256 | ||
| 1083 | |||
| 1084 | #endif | ||
| 1085 | #endif | ||
lib/include/avx10_2convertintrin.h created+590| ... | @@ -0,0 +1,590 @@ | ||
| 1 | /*===--------------- avx10_2convertintrin.h - AVX10_2CONVERT ---------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2convertintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifdef __SSE2__ | ||
| 15 | |||
| 16 | #ifndef __AVX10_2CONVERTINTRIN_H | ||
| 17 | #define __AVX10_2CONVERTINTRIN_H | ||
| 18 | |||
| 19 | /* Define the default attributes for the functions in this file. */ | ||
| 20 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 21 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 22 | __min_vector_width__(128))) | ||
| 23 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 24 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 25 | __min_vector_width__(256))) | ||
| 26 | |||
| 27 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtx2ps_ph(__m128 __A, | ||
| 28 | __m128 __B) { | ||
| 29 | return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask( | ||
| 30 | (__v4sf)__A, (__v4sf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)(-1)); | ||
| 31 | } | ||
| 32 | |||
| 33 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 | ||
| 34 | _mm_mask_cvtx2ps_ph(__m128h __W, __mmask8 __U, __m128 __A, __m128 __B) { | ||
| 35 | return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask( | ||
| 36 | (__v4sf)__A, (__v4sf)__B, (__v8hf)__W, (__mmask8)__U); | ||
| 37 | } | ||
| 38 | |||
| 39 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 | ||
| 40 | _mm_maskz_cvtx2ps_ph(__mmask8 __U, __m128 __A, __m128 __B) { | ||
| 41 | return (__m128h)__builtin_ia32_vcvt2ps2phx128_mask( | ||
| 42 | (__v4sf)__A, (__v4sf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)__U); | ||
| 43 | } | ||
| 44 | |||
| 45 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvtx2ps_ph(__m256 __A, | ||
| 46 | __m256 __B) { | ||
| 47 | return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask( | ||
| 48 | (__v8sf)__A, (__v8sf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)(-1), | ||
| 49 | _MM_FROUND_CUR_DIRECTION); | ||
| 50 | } | ||
| 51 | |||
| 52 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 53 | _mm256_mask_cvtx2ps_ph(__m256h __W, __mmask16 __U, __m256 __A, __m256 __B) { | ||
| 54 | return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask( | ||
| 55 | (__v8sf)__A, (__v8sf)__B, (__v16hf)__W, (__mmask16)__U, | ||
| 56 | _MM_FROUND_CUR_DIRECTION); | ||
| 57 | } | ||
| 58 | |||
| 59 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 60 | _mm256_maskz_cvtx2ps_ph(__mmask16 __U, __m256 __A, __m256 __B) { | ||
| 61 | return (__m256h)__builtin_ia32_vcvt2ps2phx256_mask( | ||
| 62 | (__v8sf)__A, (__v8sf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U, | ||
| 63 | _MM_FROUND_CUR_DIRECTION); | ||
| 64 | } | ||
| 65 | |||
| 66 | #define _mm256_cvtx_round2ps_ph(A, B, R) \ | ||
| 67 | ((__m256h)__builtin_ia32_vcvt2ps2phx256_mask( \ | ||
| 68 | (__v8sf)(A), (__v8sf)(B), (__v16hf)_mm256_undefined_ph(), \ | ||
| 69 | (__mmask16)(-1), (const int)(R))) | ||
| 70 | |||
| 71 | #define _mm256_mask_cvtx_round2ps_ph(W, U, A, B, R) \ | ||
| 72 | ((__m256h)__builtin_ia32_vcvt2ps2phx256_mask( \ | ||
| 73 | (__v8sf)(A), (__v8sf)(B), (__v16hf)(W), (__mmask16)(U), (const int)(R))) | ||
| 74 | |||
| 75 | #define _mm256_maskz_cvtx_round2ps_ph(U, A, B, R) \ | ||
| 76 | ((__m256h)__builtin_ia32_vcvt2ps2phx256_mask( \ | ||
| 77 | (__v8sf)(A), (__v8sf)(B), (__v16hf)(_mm256_setzero_ph()), \ | ||
| 78 | (__mmask16)(U), (const int)(R))) | ||
| 79 | |||
| 80 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtbiasph_bf8(__m128i __A, | ||
| 81 | __m128h __B) { | ||
| 82 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask( | ||
| 83 | (__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1); | ||
| 84 | } | ||
| 85 | |||
| 86 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 87 | _mm_mask_cvtbiasph_bf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) { | ||
| 88 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask( | ||
| 89 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 90 | } | ||
| 91 | |||
| 92 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 93 | _mm_maskz_cvtbiasph_bf8(__mmask8 __U, __m128i __A, __m128h __B) { | ||
| 94 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_128_mask( | ||
| 95 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 96 | (__mmask8)__U); | ||
| 97 | } | ||
| 98 | |||
| 99 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 100 | _mm256_cvtbiasph_bf8(__m256i __A, __m256h __B) { | ||
| 101 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask( | ||
| 102 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(), | ||
| 103 | (__mmask16)-1); | ||
| 104 | } | ||
| 105 | |||
| 106 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiasph_bf8( | ||
| 107 | __m128i __W, __mmask16 __U, __m256i __A, __m256h __B) { | ||
| 108 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask( | ||
| 109 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 110 | } | ||
| 111 | |||
| 112 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 113 | _mm256_maskz_cvtbiasph_bf8(__mmask16 __U, __m256i __A, __m256h __B) { | ||
| 114 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8_256_mask( | ||
| 115 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 116 | (__mmask16)__U); | ||
| 117 | } | ||
| 118 | |||
| 119 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 120 | _mm_cvtbiassph_bf8(__m128i __A, __m128h __B) { | ||
| 121 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask( | ||
| 122 | (__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1); | ||
| 123 | } | ||
| 124 | |||
| 125 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 126 | _mm_mask_cvtbiassph_bf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) { | ||
| 127 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask( | ||
| 128 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 129 | } | ||
| 130 | |||
| 131 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 132 | _mm_maskz_cvtbiassph_bf8(__mmask8 __U, __m128i __A, __m128h __B) { | ||
| 133 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_128_mask( | ||
| 134 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 135 | (__mmask8)__U); | ||
| 136 | } | ||
| 137 | |||
| 138 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 139 | _mm256_cvtbiassph_bf8(__m256i __A, __m256h __B) { | ||
| 140 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask( | ||
| 141 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(), | ||
| 142 | (__mmask16)-1); | ||
| 143 | } | ||
| 144 | |||
| 145 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiassph_bf8( | ||
| 146 | __m128i __W, __mmask16 __U, __m256i __A, __m256h __B) { | ||
| 147 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask( | ||
| 148 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 149 | } | ||
| 150 | |||
| 151 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 152 | _mm256_maskz_cvtbiassph_bf8(__mmask16 __U, __m256i __A, __m256h __B) { | ||
| 153 | return (__m128i)__builtin_ia32_vcvtbiasph2bf8s_256_mask( | ||
| 154 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 155 | (__mmask16)__U); | ||
| 156 | } | ||
| 157 | |||
| 158 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtbiasph_hf8(__m128i __A, | ||
| 159 | __m128h __B) { | ||
| 160 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask( | ||
| 161 | (__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1); | ||
| 162 | } | ||
| 163 | |||
| 164 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 165 | _mm_mask_cvtbiasph_hf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) { | ||
| 166 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask( | ||
| 167 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 168 | } | ||
| 169 | |||
| 170 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 171 | _mm_maskz_cvtbiasph_hf8(__mmask8 __U, __m128i __A, __m128h __B) { | ||
| 172 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_128_mask( | ||
| 173 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 174 | (__mmask8)__U); | ||
| 175 | } | ||
| 176 | |||
| 177 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 178 | _mm256_cvtbiasph_hf8(__m256i __A, __m256h __B) { | ||
| 179 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask( | ||
| 180 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(), | ||
| 181 | (__mmask16)-1); | ||
| 182 | } | ||
| 183 | |||
| 184 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiasph_hf8( | ||
| 185 | __m128i __W, __mmask16 __U, __m256i __A, __m256h __B) { | ||
| 186 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask( | ||
| 187 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 188 | } | ||
| 189 | |||
| 190 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 191 | _mm256_maskz_cvtbiasph_hf8(__mmask16 __U, __m256i __A, __m256h __B) { | ||
| 192 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8_256_mask( | ||
| 193 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 194 | (__mmask16)__U); | ||
| 195 | } | ||
| 196 | |||
| 197 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 198 | _mm_cvtbiassph_hf8(__m128i __A, __m128h __B) { | ||
| 199 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask( | ||
| 200 | (__v16qi)__A, (__v8hf)__B, (__v16qi)_mm_undefined_si128(), (__mmask8)-1); | ||
| 201 | } | ||
| 202 | |||
| 203 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 204 | _mm_mask_cvtbiassph_hf8(__m128i __W, __mmask8 __U, __m128i __A, __m128h __B) { | ||
| 205 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask( | ||
| 206 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 207 | } | ||
| 208 | |||
| 209 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 210 | _mm_maskz_cvtbiassph_hf8(__mmask8 __U, __m128i __A, __m128h __B) { | ||
| 211 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_128_mask( | ||
| 212 | (__v16qi)__A, (__v8hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 213 | (__mmask8)__U); | ||
| 214 | } | ||
| 215 | |||
| 216 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 217 | _mm256_cvtbiassph_hf8(__m256i __A, __m256h __B) { | ||
| 218 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask( | ||
| 219 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_undefined_si128(), | ||
| 220 | (__mmask16)-1); | ||
| 221 | } | ||
| 222 | |||
| 223 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_mask_cvtbiassph_hf8( | ||
| 224 | __m128i __W, __mmask16 __U, __m256i __A, __m256h __B) { | ||
| 225 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask( | ||
| 226 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 227 | } | ||
| 228 | |||
| 229 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 230 | _mm256_maskz_cvtbiassph_hf8(__mmask16 __U, __m256i __A, __m256h __B) { | ||
| 231 | return (__m128i)__builtin_ia32_vcvtbiasph2hf8s_256_mask( | ||
| 232 | (__v32qi)__A, (__v16hf)__B, (__v16qi)(__m128i)_mm_setzero_si128(), | ||
| 233 | (__mmask16)__U); | ||
| 234 | } | ||
| 235 | |||
| 236 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvt2ph_bf8(__m128h __A, | ||
| 237 | __m128h __B) { | ||
| 238 | return (__m128i)__builtin_ia32_vcvt2ph2bf8_128((__v8hf)(__A), (__v8hf)(__B)); | ||
| 239 | } | ||
| 240 | |||
| 241 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 242 | _mm_mask_cvt2ph_bf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) { | ||
| 243 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 244 | (__mmask16)__U, (__v16qi)_mm_cvt2ph_bf8(__A, __B), (__v16qi)__W); | ||
| 245 | } | ||
| 246 | |||
| 247 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 248 | _mm_maskz_cvt2ph_bf8(__mmask16 __U, __m128h __A, __m128h __B) { | ||
| 249 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 250 | (__mmask16)__U, (__v16qi)_mm_cvt2ph_bf8(__A, __B), | ||
| 251 | (__v16qi)(__m128i)_mm_setzero_si128()); | ||
| 252 | } | ||
| 253 | |||
| 254 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvt2ph_bf8(__m256h __A, | ||
| 255 | __m256h __B) { | ||
| 256 | return (__m256i)__builtin_ia32_vcvt2ph2bf8_256((__v16hf)(__A), | ||
| 257 | (__v16hf)(__B)); | ||
| 258 | } | ||
| 259 | |||
| 260 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 261 | _mm256_mask_cvt2ph_bf8(__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) { | ||
| 262 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 263 | (__mmask16)__U, (__v32qi)_mm256_cvt2ph_bf8(__A, __B), (__v32qi)__W); | ||
| 264 | } | ||
| 265 | |||
| 266 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 267 | _mm256_maskz_cvt2ph_bf8(__mmask32 __U, __m256h __A, __m256h __B) { | ||
| 268 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 269 | (__mmask16)__U, (__v32qi)_mm256_cvt2ph_bf8(__A, __B), | ||
| 270 | (__v32qi)(__m256i)_mm256_setzero_si256()); | ||
| 271 | } | ||
| 272 | |||
| 273 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvts2ph_bf8(__m128h __A, | ||
| 274 | __m128h __B) { | ||
| 275 | return (__m128i)__builtin_ia32_vcvt2ph2bf8s_128((__v8hf)(__A), (__v8hf)(__B)); | ||
| 276 | } | ||
| 277 | |||
| 278 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 279 | _mm_mask_cvts2ph_bf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) { | ||
| 280 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 281 | (__mmask16)__U, (__v16qi)_mm_cvts2ph_bf8(__A, __B), (__v16qi)__W); | ||
| 282 | } | ||
| 283 | |||
| 284 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 285 | _mm_maskz_cvts2ph_bf8(__mmask16 __U, __m128h __A, __m128h __B) { | ||
| 286 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 287 | (__mmask16)__U, (__v16qi)_mm_cvts2ph_bf8(__A, __B), | ||
| 288 | (__v16qi)(__m128i)_mm_setzero_si128()); | ||
| 289 | } | ||
| 290 | |||
| 291 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 292 | _mm256_cvts2ph_bf8(__m256h __A, __m256h __B) { | ||
| 293 | return (__m256i)__builtin_ia32_vcvt2ph2bf8s_256((__v16hf)(__A), | ||
| 294 | (__v16hf)(__B)); | ||
| 295 | } | ||
| 296 | |||
| 297 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 298 | _mm256_mask_cvts2ph_bf8(__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) { | ||
| 299 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 300 | (__mmask16)__U, (__v32qi)_mm256_cvts2ph_bf8(__A, __B), (__v32qi)__W); | ||
| 301 | } | ||
| 302 | |||
| 303 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 304 | _mm256_maskz_cvts2ph_bf8(__mmask32 __U, __m256h __A, __m256h __B) { | ||
| 305 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 306 | (__mmask16)__U, (__v32qi)_mm256_cvts2ph_bf8(__A, __B), | ||
| 307 | (__v32qi)(__m256i)_mm256_setzero_si256()); | ||
| 308 | } | ||
| 309 | |||
| 310 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvt2ph_hf8(__m128h __A, | ||
| 311 | __m128h __B) { | ||
| 312 | return (__m128i)__builtin_ia32_vcvt2ph2hf8_128((__v8hf)(__A), (__v8hf)(__B)); | ||
| 313 | } | ||
| 314 | |||
| 315 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 316 | _mm_mask_cvt2ph_hf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) { | ||
| 317 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 318 | (__mmask16)__U, (__v16qi)_mm_cvt2ph_hf8(__A, __B), (__v16qi)__W); | ||
| 319 | } | ||
| 320 | |||
| 321 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 322 | _mm_maskz_cvt2ph_hf8(__mmask16 __U, __m128h __A, __m128h __B) { | ||
| 323 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 324 | (__mmask16)__U, (__v16qi)_mm_cvt2ph_hf8(__A, __B), | ||
| 325 | (__v16qi)(__m128i)_mm_setzero_si128()); | ||
| 326 | } | ||
| 327 | |||
| 328 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_cvt2ph_hf8(__m256h __A, | ||
| 329 | __m256h __B) { | ||
| 330 | return (__m256i)__builtin_ia32_vcvt2ph2hf8_256((__v16hf)(__A), | ||
| 331 | (__v16hf)(__B)); | ||
| 332 | } | ||
| 333 | |||
| 334 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 335 | _mm256_mask_cvt2ph_hf8(__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) { | ||
| 336 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 337 | (__mmask16)__U, (__v32qi)_mm256_cvt2ph_hf8(__A, __B), (__v32qi)__W); | ||
| 338 | } | ||
| 339 | |||
| 340 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 341 | _mm256_maskz_cvt2ph_hf8(__mmask32 __U, __m256h __A, __m256h __B) { | ||
| 342 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 343 | (__mmask16)__U, (__v32qi)_mm256_cvt2ph_hf8(__A, __B), | ||
| 344 | (__v32qi)(__m256i)_mm256_setzero_si256()); | ||
| 345 | } | ||
| 346 | |||
| 347 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvts2ph_hf8(__m128h __A, | ||
| 348 | __m128h __B) { | ||
| 349 | return (__m128i)__builtin_ia32_vcvt2ph2hf8s_128((__v8hf)(__A), (__v8hf)(__B)); | ||
| 350 | } | ||
| 351 | |||
| 352 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 353 | _mm_mask_cvts2ph_hf8(__m128i __W, __mmask16 __U, __m128h __A, __m128h __B) { | ||
| 354 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 355 | (__mmask16)__U, (__v16qi)_mm_cvts2ph_hf8(__A, __B), (__v16qi)__W); | ||
| 356 | } | ||
| 357 | |||
| 358 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 359 | _mm_maskz_cvts2ph_hf8(__mmask16 __U, __m128h __A, __m128h __B) { | ||
| 360 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 361 | (__mmask16)__U, (__v16qi)_mm_cvts2ph_hf8(__A, __B), | ||
| 362 | (__v16qi)(__m128i)_mm_setzero_si128()); | ||
| 363 | } | ||
| 364 | |||
| 365 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 366 | _mm256_cvts2ph_hf8(__m256h __A, __m256h __B) { | ||
| 367 | return (__m256i)__builtin_ia32_vcvt2ph2hf8s_256((__v16hf)(__A), | ||
| 368 | (__v16hf)(__B)); | ||
| 369 | } | ||
| 370 | |||
| 371 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 372 | _mm256_mask_cvts2ph_hf8(__m256i __W, __mmask32 __U, __m256h __A, __m256h __B) { | ||
| 373 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 374 | (__mmask16)__U, (__v32qi)_mm256_cvts2ph_hf8(__A, __B), (__v32qi)__W); | ||
| 375 | } | ||
| 376 | |||
| 377 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 378 | _mm256_maskz_cvts2ph_hf8(__mmask32 __U, __m256h __A, __m256h __B) { | ||
| 379 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 380 | (__mmask16)__U, (__v32qi)_mm256_cvts2ph_hf8(__A, __B), | ||
| 381 | (__v32qi)(__m256i)_mm256_setzero_si256()); | ||
| 382 | } | ||
| 383 | |||
| 384 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvthf8(__m128i __A) { | ||
| 385 | return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask( | ||
| 386 | (__v16qi)__A, (__v8hf)(__m128h)_mm_undefined_ph(), (__mmask8)-1); | ||
| 387 | } | ||
| 388 | |||
| 389 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_cvthf8(__m128h __W, | ||
| 390 | __mmask8 __U, | ||
| 391 | __m128i __A) { | ||
| 392 | return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask( | ||
| 393 | (__v16qi)__A, (__v8hf)(__m128h)__W, (__mmask8)__U); | ||
| 394 | } | ||
| 395 | |||
| 396 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_cvthf8(__mmask8 __U, | ||
| 397 | __m128i __A) { | ||
| 398 | return (__m128h)__builtin_ia32_vcvthf8_2ph128_mask( | ||
| 399 | (__v16qi)__A, (__v8hf)(__m128h)_mm_setzero_ph(), (__mmask8)__U); | ||
| 400 | } | ||
| 401 | |||
| 402 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvthf8(__m128i __A) { | ||
| 403 | return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask( | ||
| 404 | (__v16qi)__A, (__v16hf)(__m256h)_mm256_undefined_ph(), (__mmask16)-1); | ||
| 405 | } | ||
| 406 | |||
| 407 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 408 | _mm256_mask_cvthf8(__m256h __W, __mmask16 __U, __m128i __A) { | ||
| 409 | return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask( | ||
| 410 | (__v16qi)__A, (__v16hf)(__m256h)__W, (__mmask16)__U); | ||
| 411 | } | ||
| 412 | |||
| 413 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 414 | _mm256_maskz_cvthf8(__mmask16 __U, __m128i __A) { | ||
| 415 | return (__m256h)__builtin_ia32_vcvthf8_2ph256_mask( | ||
| 416 | (__v16qi)__A, (__v16hf)(__m256h)_mm256_setzero_ph(), (__mmask16)__U); | ||
| 417 | } | ||
| 418 | |||
| 419 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_bf8(__m128h __A) { | ||
| 420 | return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask( | ||
| 421 | (__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1); | ||
| 422 | } | ||
| 423 | |||
| 424 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 425 | _mm_mask_cvtph_bf8(__m128i __W, __mmask8 __U, __m128h __A) { | ||
| 426 | return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask( | ||
| 427 | (__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 428 | } | ||
| 429 | |||
| 430 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 431 | _mm_maskz_cvtph_bf8(__mmask8 __U, __m128h __A) { | ||
| 432 | return (__m128i)__builtin_ia32_vcvtph2bf8_128_mask( | ||
| 433 | (__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U); | ||
| 434 | } | ||
| 435 | |||
| 436 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_cvtph_bf8(__m256h __A) { | ||
| 437 | return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask( | ||
| 438 | (__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1); | ||
| 439 | } | ||
| 440 | |||
| 441 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 442 | _mm256_mask_cvtph_bf8(__m128i __W, __mmask16 __U, __m256h __A) { | ||
| 443 | return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask( | ||
| 444 | (__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 445 | } | ||
| 446 | |||
| 447 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 448 | _mm256_maskz_cvtph_bf8(__mmask16 __U, __m256h __A) { | ||
| 449 | return (__m128i)__builtin_ia32_vcvtph2bf8_256_mask( | ||
| 450 | (__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U); | ||
| 451 | } | ||
| 452 | |||
| 453 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtsph_bf8(__m128h __A) { | ||
| 454 | return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask( | ||
| 455 | (__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1); | ||
| 456 | } | ||
| 457 | |||
| 458 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 459 | _mm_mask_cvtsph_bf8(__m128i __W, __mmask8 __U, __m128h __A) { | ||
| 460 | return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask( | ||
| 461 | (__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 462 | } | ||
| 463 | |||
| 464 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 465 | _mm_maskz_cvtsph_bf8(__mmask8 __U, __m128h __A) { | ||
| 466 | return (__m128i)__builtin_ia32_vcvtph2bf8s_128_mask( | ||
| 467 | (__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U); | ||
| 468 | } | ||
| 469 | |||
| 470 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_cvtsph_bf8(__m256h __A) { | ||
| 471 | return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask( | ||
| 472 | (__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1); | ||
| 473 | } | ||
| 474 | |||
| 475 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 476 | _mm256_mask_cvtsph_bf8(__m128i __W, __mmask16 __U, __m256h __A) { | ||
| 477 | return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask( | ||
| 478 | (__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 479 | } | ||
| 480 | |||
| 481 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 482 | _mm256_maskz_cvtsph_bf8(__mmask16 __U, __m256h __A) { | ||
| 483 | return (__m128i)__builtin_ia32_vcvtph2bf8s_256_mask( | ||
| 484 | (__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U); | ||
| 485 | } | ||
| 486 | |||
| 487 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_hf8(__m128h __A) { | ||
| 488 | return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask( | ||
| 489 | (__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1); | ||
| 490 | } | ||
| 491 | |||
| 492 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 493 | _mm_mask_cvtph_hf8(__m128i __W, __mmask8 __U, __m128h __A) { | ||
| 494 | return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask( | ||
| 495 | (__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 496 | } | ||
| 497 | |||
| 498 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 499 | _mm_maskz_cvtph_hf8(__mmask8 __U, __m128h __A) { | ||
| 500 | return (__m128i)__builtin_ia32_vcvtph2hf8_128_mask( | ||
| 501 | (__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U); | ||
| 502 | } | ||
| 503 | |||
| 504 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_cvtph_hf8(__m256h __A) { | ||
| 505 | return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask( | ||
| 506 | (__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1); | ||
| 507 | } | ||
| 508 | |||
| 509 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 510 | _mm256_mask_cvtph_hf8(__m128i __W, __mmask16 __U, __m256h __A) { | ||
| 511 | return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask( | ||
| 512 | (__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 513 | } | ||
| 514 | |||
| 515 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 516 | _mm256_maskz_cvtph_hf8(__mmask16 __U, __m256h __A) { | ||
| 517 | return (__m128i)__builtin_ia32_vcvtph2hf8_256_mask( | ||
| 518 | (__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U); | ||
| 519 | } | ||
| 520 | |||
| 521 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtsph_hf8(__m128h __A) { | ||
| 522 | return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask( | ||
| 523 | (__v8hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask8)-1); | ||
| 524 | } | ||
| 525 | |||
| 526 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 527 | _mm_mask_cvtsph_hf8(__m128i __W, __mmask8 __U, __m128h __A) { | ||
| 528 | return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask( | ||
| 529 | (__v8hf)__A, (__v16qi)(__m128i)__W, (__mmask8)__U); | ||
| 530 | } | ||
| 531 | |||
| 532 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 533 | _mm_maskz_cvtsph_hf8(__mmask8 __U, __m128h __A) { | ||
| 534 | return (__m128i)__builtin_ia32_vcvtph2hf8s_128_mask( | ||
| 535 | (__v8hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask8)__U); | ||
| 536 | } | ||
| 537 | |||
| 538 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 _mm256_cvtsph_hf8(__m256h __A) { | ||
| 539 | return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask( | ||
| 540 | (__v16hf)__A, (__v16qi)(__m128i)_mm_undefined_si128(), (__mmask16)-1); | ||
| 541 | } | ||
| 542 | |||
| 543 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 544 | _mm256_mask_cvtsph_hf8(__m128i __W, __mmask16 __U, __m256h __A) { | ||
| 545 | return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask( | ||
| 546 | (__v16hf)__A, (__v16qi)(__m128i)__W, (__mmask16)__U); | ||
| 547 | } | ||
| 548 | |||
| 549 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 550 | _mm256_maskz_cvtsph_hf8(__mmask16 __U, __m256h __A) { | ||
| 551 | return (__m128i)__builtin_ia32_vcvtph2hf8s_256_mask( | ||
| 552 | (__v16hf)__A, (__v16qi)(__m128i)_mm_setzero_si128(), (__mmask16)__U); | ||
| 553 | } | ||
| 554 | |||
| 555 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtbf8_ph(__m128i __A) { | ||
| 556 | return _mm_castsi128_ph(_mm_slli_epi16(_mm_cvtepi8_epi16(__A), 8)); | ||
| 557 | } | ||
| 558 | |||
| 559 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 | ||
| 560 | _mm_mask_cvtbf8_ph(__m128h __S, __mmask8 __U, __m128i __A) { | ||
| 561 | return _mm_castsi128_ph( | ||
| 562 | _mm_mask_slli_epi16((__m128i)__S, __U, _mm_cvtepi8_epi16(__A), 8)); | ||
| 563 | } | ||
| 564 | |||
| 565 | static __inline__ __m128h __DEFAULT_FN_ATTRS128 | ||
| 566 | _mm_maskz_cvtbf8_ph(__mmask8 __U, __m128i __A) { | ||
| 567 | return _mm_castsi128_ph(_mm_slli_epi16(_mm_maskz_cvtepi8_epi16(__U, __A), 8)); | ||
| 568 | } | ||
| 569 | |||
| 570 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_cvtbf8_ph(__m128i __A) { | ||
| 571 | return _mm256_castsi256_ph(_mm256_slli_epi16(_mm256_cvtepi8_epi16(__A), 8)); | ||
| 572 | } | ||
| 573 | |||
| 574 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 575 | _mm256_mask_cvtbf8_ph(__m256h __S, __mmask16 __U, __m128i __A) { | ||
| 576 | return _mm256_castsi256_ph( | ||
| 577 | _mm256_mask_slli_epi16((__m256i)__S, __U, _mm256_cvtepi8_epi16(__A), 8)); | ||
| 578 | } | ||
| 579 | |||
| 580 | static __inline__ __m256h __DEFAULT_FN_ATTRS256 | ||
| 581 | _mm256_maskz_cvtbf8_ph(__mmask16 __U, __m128i __A) { | ||
| 582 | return _mm256_castsi256_ph( | ||
| 583 | _mm256_slli_epi16(_mm256_maskz_cvtepi8_epi16(__U, __A), 8)); | ||
| 584 | } | ||
| 585 | |||
| 586 | #undef __DEFAULT_FN_ATTRS128 | ||
| 587 | #undef __DEFAULT_FN_ATTRS256 | ||
| 588 | |||
| 589 | #endif // __AVX10_2CONVERTINTRIN_H | ||
| 590 | #endif // __SSE2__ | ||
lib/include/avx10_2copyintrin.h created+66| ... | @@ -0,0 +1,66 @@ | ||
| 1 | /*===---- avx10_2copyintrin.h - AVX10.2 Copy intrinsics -------------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2copyintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AVX10_2COPYINTRIN_H | ||
| 15 | #define __AVX10_2COPYINTRIN_H | ||
| 16 | |||
| 17 | /* Define the default attributes for the functions in this file. */ | ||
| 18 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 20 | __min_vector_width__(128))) | ||
| 21 | |||
| 22 | /// Constructs a 128-bit integer vector, setting the lower 32 bits to the | ||
| 23 | /// lower 32 bits of the parameter \a __A; the upper bits are zeoroed. | ||
| 24 | /// | ||
| 25 | /// \code{.operation} | ||
| 26 | /// result[31:0] := __A[31:0] | ||
| 27 | /// result[MAX:32] := 0 | ||
| 28 | /// \endcode | ||
| 29 | /// | ||
| 30 | /// \headerfile <immintrin.h> | ||
| 31 | /// | ||
| 32 | /// This intrinsic corresponds to the <c> VMOVD </c> instruction. | ||
| 33 | /// | ||
| 34 | /// \param __A | ||
| 35 | /// A 128-bit integer vector. | ||
| 36 | /// \returns A 128-bit integer vector. The lower 32 bits are copied from the | ||
| 37 | /// parameter \a __A; the upper bits are zeroed. | ||
| 38 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_move_epi32(__m128i __A) { | ||
| 39 | return (__m128i)__builtin_shufflevector( | ||
| 40 | (__v4si)__A, (__v4si)_mm_setzero_si128(), 0, 4, 4, 4); | ||
| 41 | } | ||
| 42 | |||
| 43 | /// Constructs a 128-bit integer vector, setting the lower 16 bits to the | ||
| 44 | /// lower 16 bits of the parameter \a __A; the upper bits are zeoroed. | ||
| 45 | /// | ||
| 46 | /// \code{.operation} | ||
| 47 | /// result[15:0] := __A[15:0] | ||
| 48 | /// result[MAX:16] := 0 | ||
| 49 | /// \endcode | ||
| 50 | /// | ||
| 51 | /// \headerfile <immintrin.h> | ||
| 52 | /// | ||
| 53 | /// This intrinsic corresponds to the <c> VMOVW </c> instruction. | ||
| 54 | /// | ||
| 55 | /// \param __A | ||
| 56 | /// A 128-bit integer vector. | ||
| 57 | /// \returns A 128-bit integer vector. The lower 16 bits are copied from the | ||
| 58 | /// parameter \a __A; the upper bits are zeroed. | ||
| 59 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_move_epi16(__m128i __A) { | ||
| 60 | return (__m128i)__builtin_shufflevector( | ||
| 61 | (__v8hi)__A, (__v8hi)_mm_setzero_si128(), 0, 8, 8, 8, 8, 8, 8, 8); | ||
| 62 | } | ||
| 63 | |||
| 64 | #undef __DEFAULT_FN_ATTRS128 | ||
| 65 | |||
| 66 | #endif // __AVX10_2COPYINTRIN_H | ||
lib/include/avx10_2minmaxintrin.h created+277| ... | @@ -0,0 +1,277 @@ | ||
| 1 | /*===-------- avx10_2minmaxintrin.h - AVX10_2MINMAX intrinsics -------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2minmaxintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AVX10_2MINMAXINTRIN_H | ||
| 15 | #define __AVX10_2MINMAXINTRIN_H | ||
| 16 | |||
| 17 | #define _mm_minmax_pbh(A, B, C) \ | ||
| 18 | ((__m128bh)__builtin_ia32_vminmaxbf16128((__m128bh)(__v8bf)(A), \ | ||
| 19 | (__m128bh)(__v8bf)(B), (int)(C))) | ||
| 20 | |||
| 21 | #define _mm_mask_minmax_pbh(W, U, A, B, C) \ | ||
| 22 | ((__m128bh)__builtin_ia32_selectpbf_128( \ | ||
| 23 | (__mmask8)(U), \ | ||
| 24 | (__v8bf)_mm_minmax_pbh((__m128bh)(__v8bf)(A), (__m128bh)(__v8bf)(B), \ | ||
| 25 | (int)(C)), \ | ||
| 26 | (__v8bf)(W))) | ||
| 27 | |||
| 28 | #define _mm_maskz_minmax_pbh(U, A, B, C) \ | ||
| 29 | ((__m128bh)__builtin_ia32_selectpbf_128( \ | ||
| 30 | (__mmask8)(U), \ | ||
| 31 | (__v8bf)_mm_minmax_pbh((__m128bh)(__v8bf)(A), (__m128bh)(__v8bf)(B), \ | ||
| 32 | (int)(C)), \ | ||
| 33 | (__v8bf) __builtin_bit_cast(__m128bh, _mm_setzero_ps()))) | ||
| 34 | |||
| 35 | #define _mm256_minmax_pbh(A, B, C) \ | ||
| 36 | ((__m256bh)__builtin_ia32_vminmaxbf16256((__m256bh)(__v16bf)(A), \ | ||
| 37 | (__m256bh)(__v16bf)(B), (int)(C))) | ||
| 38 | |||
| 39 | #define _mm256_mask_minmax_pbh(W, U, A, B, C) \ | ||
| 40 | ((__m256bh)__builtin_ia32_selectpbf_256( \ | ||
| 41 | (__mmask16)(U), \ | ||
| 42 | (__v16bf)_mm256_minmax_pbh((__m256bh)(__v16bf)(A), \ | ||
| 43 | (__m256bh)(__v16bf)(B), (int)(C)), \ | ||
| 44 | (__v16bf)(W))) | ||
| 45 | |||
| 46 | #define _mm256_maskz_minmax_pbh(U, A, B, C) \ | ||
| 47 | ((__m256bh)__builtin_ia32_selectpbf_256( \ | ||
| 48 | (__mmask16)(U), \ | ||
| 49 | (__v16bf)_mm256_minmax_pbh((__m256bh)(__v16bf)(A), \ | ||
| 50 | (__m256bh)(__v16bf)(B), (int)(C)), \ | ||
| 51 | (__v16bf) __builtin_bit_cast(__m256bh, _mm256_setzero_ps()))) | ||
| 52 | |||
| 53 | #define _mm_minmax_pd(A, B, C) \ | ||
| 54 | ((__m128d)__builtin_ia32_vminmaxpd128_mask( \ | ||
| 55 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 56 | (__v2df)_mm_setzero_pd(), (__mmask8)-1)) | ||
| 57 | |||
| 58 | #define _mm_mask_minmax_pd(W, U, A, B, C) \ | ||
| 59 | ((__m128d)__builtin_ia32_vminmaxpd128_mask( \ | ||
| 60 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 61 | (__v2df)(__m128d)(W), (__mmask8)(U))) | ||
| 62 | |||
| 63 | #define _mm_maskz_minmax_pd(U, A, B, C) \ | ||
| 64 | ((__m128d)__builtin_ia32_vminmaxpd128_mask( \ | ||
| 65 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 66 | (__v2df)_mm_setzero_pd(), (__mmask8)(U))) | ||
| 67 | |||
| 68 | #define _mm256_minmax_pd(A, B, C) \ | ||
| 69 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 70 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 71 | (__v4df)_mm256_setzero_pd(), (__mmask8)-1, _MM_FROUND_NO_EXC)) | ||
| 72 | |||
| 73 | #define _mm256_mask_minmax_pd(W, U, A, B, C) \ | ||
| 74 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 75 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 76 | (__v4df)(__m256d)(W), (__mmask8)(U), _MM_FROUND_NO_EXC)) | ||
| 77 | |||
| 78 | #define _mm256_maskz_minmax_pd(U, A, B, C) \ | ||
| 79 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 80 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 81 | (__v4df)_mm256_setzero_pd(), (__mmask8)(U), _MM_FROUND_NO_EXC)) | ||
| 82 | |||
| 83 | #define _mm256_minmax_round_pd(A, B, C, R) \ | ||
| 84 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 85 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 86 | (__v4df)_mm256_undefined_pd(), (__mmask8)-1, (int)(R))) | ||
| 87 | |||
| 88 | #define _mm256_mask_minmax_round_pd(W, U, A, B, C, R) \ | ||
| 89 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 90 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 91 | (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 92 | |||
| 93 | #define _mm256_maskz_minmax_round_pd(U, A, B, C, R) \ | ||
| 94 | ((__m256d)__builtin_ia32_vminmaxpd256_round_mask( \ | ||
| 95 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 96 | (__v4df)_mm256_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 97 | |||
| 98 | #define _mm_minmax_ph(A, B, C) \ | ||
| 99 | ((__m128h)__builtin_ia32_vminmaxph128_mask( \ | ||
| 100 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 101 | (__v8hf)_mm_setzero_ph(), (__mmask8)-1)) | ||
| 102 | |||
| 103 | #define _mm_mask_minmax_ph(W, U, A, B, C) \ | ||
| 104 | ((__m128h)__builtin_ia32_vminmaxph128_mask( \ | ||
| 105 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 106 | (__v8hf)(__m128h)(W), (__mmask16)-1)) | ||
| 107 | |||
| 108 | #define _mm_maskz_minmax_ph(U, A, B, C) \ | ||
| 109 | ((__m128h)__builtin_ia32_vminmaxph128_mask( \ | ||
| 110 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 111 | (__v8hf)_mm_setzero_ph(), (__mmask8)(U))) | ||
| 112 | |||
| 113 | #define _mm256_minmax_ph(A, B, C) \ | ||
| 114 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 115 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(C), \ | ||
| 116 | (__v16hf)_mm256_setzero_ph(), (__mmask16)-1, _MM_FROUND_NO_EXC)) | ||
| 117 | |||
| 118 | #define _mm256_mask_minmax_ph(W, U, A, B, C) \ | ||
| 119 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 120 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(C), \ | ||
| 121 | (__v16hf)(__m256h)(W), (__mmask16)(U), _MM_FROUND_NO_EXC)) | ||
| 122 | |||
| 123 | #define _mm256_maskz_minmax_ph(U, A, B, C) \ | ||
| 124 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 125 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(C), \ | ||
| 126 | (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), _MM_FROUND_NO_EXC)) | ||
| 127 | |||
| 128 | #define _mm256_minmax_round_ph(A, B, C, R) \ | ||
| 129 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 130 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(C), \ | ||
| 131 | (__v16hf)_mm256_undefined_ph(), (__mmask16)-1, (int)(R))) | ||
| 132 | |||
| 133 | #define _mm256_mask_minmax_round_ph(W, U, A, B, C, R) \ | ||
| 134 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 135 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (C), \ | ||
| 136 | (__v16hf)(__m256h)(W), (__mmask16)(U), (int)(R))) | ||
| 137 | |||
| 138 | #define _mm256_maskz_minmax_round_ph(U, A, B, C, R) \ | ||
| 139 | ((__m256h)__builtin_ia32_vminmaxph256_round_mask( \ | ||
| 140 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(C), \ | ||
| 141 | (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), (int)(R))) | ||
| 142 | |||
| 143 | #define _mm_minmax_ps(A, B, C) \ | ||
| 144 | ((__m128)__builtin_ia32_vminmaxps128_mask( \ | ||
| 145 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 146 | (__v4sf)_mm_setzero_ps(), (__mmask8)-1)) | ||
| 147 | |||
| 148 | #define _mm_mask_minmax_ps(W, U, A, B, C) \ | ||
| 149 | ((__m128)__builtin_ia32_vminmaxps128_mask( \ | ||
| 150 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \ | ||
| 151 | (__mmask8)(U))) | ||
| 152 | |||
| 153 | #define _mm_maskz_minmax_ps(U, A, B, C) \ | ||
| 154 | ((__m128)__builtin_ia32_vminmaxps128_mask( \ | ||
| 155 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 156 | (__v4sf)_mm_setzero_ps(), (__mmask8)(U))) | ||
| 157 | |||
| 158 | #define _mm256_minmax_ps(A, B, C) \ | ||
| 159 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 160 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 161 | (__v8sf)_mm256_setzero_ps(), (__mmask8)-1, _MM_FROUND_NO_EXC)) | ||
| 162 | |||
| 163 | #define _mm256_mask_minmax_ps(W, U, A, B, C) \ | ||
| 164 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 165 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), (__v8sf)(__m256)(W), \ | ||
| 166 | (__mmask8)(U), _MM_FROUND_NO_EXC)) | ||
| 167 | |||
| 168 | #define _mm256_maskz_minmax_ps(U, A, B, C) \ | ||
| 169 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 170 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 171 | (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), _MM_FROUND_NO_EXC)) | ||
| 172 | |||
| 173 | #define _mm256_minmax_round_ps(A, B, C, R) \ | ||
| 174 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 175 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 176 | (__v8sf)_mm256_undefined_ps(), (__mmask8)-1, (int)(R))) | ||
| 177 | |||
| 178 | #define _mm256_mask_minmax_round_ps(W, U, A, B, C, R) \ | ||
| 179 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 180 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), (__v8sf)(__m256)(W), \ | ||
| 181 | (__mmask8)(U), (int)(R))) | ||
| 182 | |||
| 183 | #define _mm256_maskz_minmax_round_ps(U, A, B, C, R) \ | ||
| 184 | ((__m256)__builtin_ia32_vminmaxps256_round_mask( \ | ||
| 185 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 186 | (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), (int)(R))) | ||
| 187 | |||
| 188 | #define _mm_minmax_sd(A, B, C) \ | ||
| 189 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 190 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 191 | (__v2df)_mm_undefined_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) | ||
| 192 | |||
| 193 | #define _mm_mask_minmax_sd(W, U, A, B, C) \ | ||
| 194 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 195 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 196 | (__v2df)(__m128d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 197 | |||
| 198 | #define _mm_maskz_minmax_sd(U, A, B, C) \ | ||
| 199 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 200 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 201 | (__v2df)_mm_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 202 | |||
| 203 | #define _mm_minmax_round_sd(A, B, C, R) \ | ||
| 204 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 205 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 206 | (__v2df)_mm_undefined_pd(), (__mmask8)-1, (int)(R))) | ||
| 207 | |||
| 208 | #define _mm_mask_minmax_round_sd(W, U, A, B, C, R) \ | ||
| 209 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 210 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 211 | (__v2df)(__m128d)(W), (__mmask8)(U), (int)(R))) | ||
| 212 | |||
| 213 | #define _mm_maskz_minmax_round_sd(U, A, B, C, R) \ | ||
| 214 | ((__m128d)__builtin_ia32_vminmaxsd_round_mask( \ | ||
| 215 | (__v2df)(__m128d)(A), (__v2df)(__m128d)(B), (int)(C), \ | ||
| 216 | (__v2df)_mm_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 217 | |||
| 218 | #define _mm_minmax_sh(A, B, C) \ | ||
| 219 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 220 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 221 | (__v8hf)_mm_undefined_ph(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) | ||
| 222 | |||
| 223 | #define _mm_mask_minmax_sh(W, U, A, B, C) \ | ||
| 224 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 225 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 226 | (__v8hf)(__m128h)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 227 | |||
| 228 | #define _mm_maskz_minmax_sh(U, A, B, C) \ | ||
| 229 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 230 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 231 | (__v8hf)_mm_setzero_ph(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 232 | |||
| 233 | #define _mm_minmax_round_sh(A, B, C, R) \ | ||
| 234 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 235 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 236 | (__v8hf)_mm_undefined_ph(), (__mmask8)-1, (int)(R))) | ||
| 237 | |||
| 238 | #define _mm_mask_minmax_round_sh(W, U, A, B, C, R) \ | ||
| 239 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 240 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 241 | (__v8hf)(__m128h)(W), (__mmask8)(U), (int)(R))) | ||
| 242 | |||
| 243 | #define _mm_maskz_minmax_round_sh(U, A, B, C, R) \ | ||
| 244 | ((__m128h)__builtin_ia32_vminmaxsh_round_mask( \ | ||
| 245 | (__v8hf)(__m128h)(A), (__v8hf)(__m128h)(B), (int)(C), \ | ||
| 246 | (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 247 | |||
| 248 | #define _mm_minmax_ss(A, B, C) \ | ||
| 249 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 250 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 251 | (__v4sf)_mm_undefined_ps(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION)) | ||
| 252 | |||
| 253 | #define _mm_mask_minmax_ss(W, U, A, B, C) \ | ||
| 254 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 255 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), (__v4sf)(W), \ | ||
| 256 | (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 257 | |||
| 258 | #define _mm_maskz_minmax_ss(U, A, B, C) \ | ||
| 259 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 260 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 261 | (__v4sf)_mm_setzero_ps(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 262 | |||
| 263 | #define _mm_minmax_round_ss(A, B, C, R) \ | ||
| 264 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 265 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 266 | (__v4sf)_mm_undefined_ps(), (__mmask8)-1, (int)(R))) | ||
| 267 | |||
| 268 | #define _mm_mask_minmax_round_ss(W, U, A, B, C, R) \ | ||
| 269 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 270 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), (__v4sf)(W), \ | ||
| 271 | (__mmask8)(U), (int)(R))) | ||
| 272 | |||
| 273 | #define _mm_maskz_minmax_round_ss(U, A, B, C, R) \ | ||
| 274 | ((__m128)__builtin_ia32_vminmaxss_round_mask( \ | ||
| 275 | (__v4sf)(__m128)(A), (__v4sf)(__m128)(B), (int)(C), \ | ||
| 276 | (__v4sf)_mm_setzero_ps(), (__mmask8)(U), (int)(R))) | ||
| 277 | #endif // __AVX10_2MINMAXINTRIN_H | ||
lib/include/avx10_2niintrin.h created+2075| ... | @@ -0,0 +1,2075 @@ | ||
| 1 | /*===---- avx10_2niintrin.h - AVX10.2 new instruction intrinsics -----------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error "Never use <avx10_2niintrin.h> directly; include <immintrin.h> instead." | ||
| 11 | #endif | ||
| 12 | |||
| 13 | #ifdef __SSE2__ | ||
| 14 | |||
| 15 | #ifndef __AVX10_2NIINTRIN_H | ||
| 16 | #define __AVX10_2NIINTRIN_H | ||
| 17 | |||
| 18 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 20 | __min_vector_width__(128))) | ||
| 21 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 22 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 23 | __min_vector_width__(256))) | ||
| 24 | |||
| 25 | /* VNNI FP16 */ | ||
| 26 | static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_dpph_ps(__m128 __W, | ||
| 27 | __m128h __A, | ||
| 28 | __m128h __B) { | ||
| 29 | return (__m128)__builtin_ia32_vdpphps128((__v4sf)__W, (__v8hf)__A, | ||
| 30 | (__v8hf)__B); | ||
| 31 | } | ||
| 32 | |||
| 33 | static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_mask_dpph_ps(__m128 __W, | ||
| 34 | __mmask8 __U, | ||
| 35 | __m128h __A, | ||
| 36 | __m128h __B) { | ||
| 37 | return (__m128)__builtin_ia32_selectps_128( | ||
| 38 | (__mmask8)__U, (__v4sf)_mm_dpph_ps(__W, __A, __B), (__v4sf)__W); | ||
| 39 | } | ||
| 40 | |||
| 41 | static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_maskz_dpph_ps(__mmask8 __U, | ||
| 42 | __m128 __W, | ||
| 43 | __m128h __A, | ||
| 44 | __m128h __B) { | ||
| 45 | return (__m128)__builtin_ia32_selectps_128((__mmask8)__U, | ||
| 46 | (__v4sf)_mm_dpph_ps(__W, __A, __B), | ||
| 47 | (__v4sf)_mm_setzero_ps()); | ||
| 48 | } | ||
| 49 | |||
| 50 | static __inline__ __m256 __DEFAULT_FN_ATTRS256 _mm256_dpph_ps(__m256 __W, | ||
| 51 | __m256h __A, | ||
| 52 | __m256h __B) { | ||
| 53 | return (__m256)__builtin_ia32_vdpphps256((__v8sf)__W, (__v16hf)__A, | ||
| 54 | (__v16hf)__B); | ||
| 55 | } | ||
| 56 | |||
| 57 | static __inline__ __m256 __DEFAULT_FN_ATTRS256 | ||
| 58 | _mm256_mask_dpph_ps(__m256 __W, __mmask8 __U, __m256h __A, __m256h __B) { | ||
| 59 | return (__m256)__builtin_ia32_selectps_256( | ||
| 60 | (__mmask8)__U, (__v8sf)_mm256_dpph_ps(__W, __A, __B), (__v8sf)__W); | ||
| 61 | } | ||
| 62 | |||
| 63 | static __inline__ __m256 __DEFAULT_FN_ATTRS256 | ||
| 64 | _mm256_maskz_dpph_ps(__mmask8 __U, __m256 __W, __m256h __A, __m256h __B) { | ||
| 65 | return (__m256)__builtin_ia32_selectps_256( | ||
| 66 | (__mmask8)__U, (__v8sf)_mm256_dpph_ps(__W, __A, __B), | ||
| 67 | (__v8sf)_mm256_setzero_ps()); | ||
| 68 | } | ||
| 69 | |||
| 70 | /* VMPSADBW */ | ||
| 71 | #define _mm_mask_mpsadbw_epu8(W, U, A, B, imm) \ | ||
| 72 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 73 | (__mmask8)(U), (__v8hi)_mm_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 74 | (__v8hi)(__m128i)(W))) | ||
| 75 | |||
| 76 | #define _mm_maskz_mpsadbw_epu8(U, A, B, imm) \ | ||
| 77 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 78 | (__mmask8)(U), (__v8hi)_mm_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 79 | (__v8hi)_mm_setzero_si128())) | ||
| 80 | |||
| 81 | #define _mm256_mask_mpsadbw_epu8(W, U, A, B, imm) \ | ||
| 82 | ((__m256i)__builtin_ia32_selectw_256( \ | ||
| 83 | (__mmask16)(U), (__v16hi)_mm256_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 84 | (__v16hi)(__m256i)(W))) | ||
| 85 | |||
| 86 | #define _mm256_maskz_mpsadbw_epu8(U, A, B, imm) \ | ||
| 87 | ((__m256i)__builtin_ia32_selectw_256( \ | ||
| 88 | (__mmask16)(U), (__v16hi)_mm256_mpsadbw_epu8((A), (B), (imm)), \ | ||
| 89 | (__v16hi)_mm256_setzero_si256())) | ||
| 90 | |||
| 91 | /* VNNI INT8 */ | ||
| 92 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 93 | _mm_mask_dpbssd_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 94 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 95 | __U, (__v4si)_mm_dpbssd_epi32(__W, __A, __B), (__v4si)__W); | ||
| 96 | } | ||
| 97 | |||
| 98 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 99 | _mm_maskz_dpbssd_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 100 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 101 | __U, (__v4si)_mm_dpbssd_epi32(__W, __A, __B), | ||
| 102 | (__v4si)_mm_setzero_si128()); | ||
| 103 | } | ||
| 104 | |||
| 105 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 106 | _mm256_mask_dpbssd_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 107 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 108 | __U, (__v8si)_mm256_dpbssd_epi32(__W, __A, __B), (__v8si)__W); | ||
| 109 | } | ||
| 110 | |||
| 111 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 112 | _mm256_maskz_dpbssd_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 113 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 114 | __U, (__v8si)_mm256_dpbssd_epi32(__W, __A, __B), | ||
| 115 | (__v8si)_mm256_setzero_si256()); | ||
| 116 | } | ||
| 117 | |||
| 118 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 119 | _mm_mask_dpbssds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 120 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 121 | __U, (__v4si)_mm_dpbssds_epi32(__W, __A, __B), (__v4si)__W); | ||
| 122 | } | ||
| 123 | |||
| 124 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 125 | _mm_maskz_dpbssds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 126 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 127 | __U, (__v4si)_mm_dpbssds_epi32(__W, __A, __B), | ||
| 128 | (__v4si)_mm_setzero_si128()); | ||
| 129 | } | ||
| 130 | |||
| 131 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 132 | _mm256_mask_dpbssds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 133 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 134 | __U, (__v8si)_mm256_dpbssds_epi32(__W, __A, __B), (__v8si)__W); | ||
| 135 | } | ||
| 136 | |||
| 137 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpbssds_epi32( | ||
| 138 | __mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 139 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 140 | __U, (__v8si)_mm256_dpbssds_epi32(__W, __A, __B), | ||
| 141 | (__v8si)_mm256_setzero_si256()); | ||
| 142 | } | ||
| 143 | |||
| 144 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 145 | _mm_mask_dpbsud_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 146 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 147 | __U, (__v4si)_mm_dpbsud_epi32(__W, __A, __B), (__v4si)__W); | ||
| 148 | } | ||
| 149 | |||
| 150 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 151 | _mm_maskz_dpbsud_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 152 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 153 | __U, (__v4si)_mm_dpbsud_epi32(__W, __A, __B), | ||
| 154 | (__v4si)_mm_setzero_si128()); | ||
| 155 | } | ||
| 156 | |||
| 157 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 158 | _mm256_mask_dpbsud_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 159 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 160 | __U, (__v8si)_mm256_dpbsud_epi32(__W, __A, __B), (__v8si)__W); | ||
| 161 | } | ||
| 162 | |||
| 163 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 164 | _mm256_maskz_dpbsud_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 165 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 166 | __U, (__v8si)_mm256_dpbsud_epi32(__W, __A, __B), | ||
| 167 | (__v8si)_mm256_setzero_si256()); | ||
| 168 | } | ||
| 169 | |||
| 170 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 171 | _mm_mask_dpbsuds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 172 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 173 | __U, (__v4si)_mm_dpbsuds_epi32(__W, __A, __B), (__v4si)__W); | ||
| 174 | } | ||
| 175 | |||
| 176 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 177 | _mm_maskz_dpbsuds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 178 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 179 | __U, (__v4si)_mm_dpbsuds_epi32(__W, __A, __B), | ||
| 180 | (__v4si)_mm_setzero_si128()); | ||
| 181 | } | ||
| 182 | |||
| 183 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 184 | _mm256_mask_dpbsuds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 185 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 186 | __U, (__v8si)_mm256_dpbsuds_epi32(__W, __A, __B), (__v8si)__W); | ||
| 187 | } | ||
| 188 | |||
| 189 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpbsuds_epi32( | ||
| 190 | __mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 191 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 192 | __U, (__v8si)_mm256_dpbsuds_epi32(__W, __A, __B), | ||
| 193 | (__v8si)_mm256_setzero_si256()); | ||
| 194 | } | ||
| 195 | |||
| 196 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 197 | _mm_mask_dpbuud_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 198 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 199 | __U, (__v4si)_mm_dpbuud_epi32(__W, __A, __B), (__v4si)__W); | ||
| 200 | } | ||
| 201 | |||
| 202 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 203 | _mm_maskz_dpbuud_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 204 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 205 | __U, (__v4si)_mm_dpbuud_epi32(__W, __A, __B), | ||
| 206 | (__v4si)_mm_setzero_si128()); | ||
| 207 | } | ||
| 208 | |||
| 209 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 210 | _mm256_mask_dpbuud_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 211 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 212 | __U, (__v8si)_mm256_dpbuud_epi32(__W, __A, __B), (__v8si)__W); | ||
| 213 | } | ||
| 214 | |||
| 215 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 216 | _mm256_maskz_dpbuud_epi32(__mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 217 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 218 | __U, (__v8si)_mm256_dpbuud_epi32(__W, __A, __B), | ||
| 219 | (__v8si)_mm256_setzero_si256()); | ||
| 220 | } | ||
| 221 | |||
| 222 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 223 | _mm_mask_dpbuuds_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { | ||
| 224 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 225 | __U, (__v4si)_mm_dpbuuds_epi32(__W, __A, __B), (__v4si)__W); | ||
| 226 | } | ||
| 227 | |||
| 228 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 229 | _mm_maskz_dpbuuds_epi32(__mmask8 __U, __m128i __W, __m128i __A, __m128i __B) { | ||
| 230 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 231 | __U, (__v4si)_mm_dpbuuds_epi32(__W, __A, __B), | ||
| 232 | (__v4si)_mm_setzero_si128()); | ||
| 233 | } | ||
| 234 | |||
| 235 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 236 | _mm256_mask_dpbuuds_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { | ||
| 237 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 238 | __U, (__v8si)_mm256_dpbuuds_epi32(__W, __A, __B), (__v8si)__W); | ||
| 239 | } | ||
| 240 | |||
| 241 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpbuuds_epi32( | ||
| 242 | __mmask8 __U, __m256i __W, __m256i __A, __m256i __B) { | ||
| 243 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 244 | __U, (__v8si)_mm256_dpbuuds_epi32(__W, __A, __B), | ||
| 245 | (__v8si)_mm256_setzero_si256()); | ||
| 246 | } | ||
| 247 | |||
| 248 | /* VNNI INT16 */ | ||
| 249 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 250 | _mm_mask_dpwsud_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 251 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 252 | (__mmask8)__U, (__v4si)_mm_dpwsud_epi32(__A, __B, __C), (__v4si)__A); | ||
| 253 | } | ||
| 254 | |||
| 255 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 256 | _mm_maskz_dpwsud_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 257 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 258 | (__mmask8)__U, (__v4si)_mm_dpwsud_epi32(__A, __B, __C), | ||
| 259 | (__v4si)_mm_setzero_si128()); | ||
| 260 | } | ||
| 261 | |||
| 262 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 263 | _mm256_mask_dpwsud_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 264 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 265 | (__mmask8)__U, (__v8si)_mm256_dpwsud_epi32(__A, __B, __C), (__v8si)__A); | ||
| 266 | } | ||
| 267 | |||
| 268 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 269 | _mm256_maskz_dpwsud_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 270 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 271 | (__mmask8)__U, (__v8si)_mm256_dpwsud_epi32(__A, __B, __C), | ||
| 272 | (__v8si)_mm256_setzero_si256()); | ||
| 273 | } | ||
| 274 | |||
| 275 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 276 | _mm_mask_dpwsuds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 277 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 278 | (__mmask8)__U, (__v4si)_mm_dpwsuds_epi32(__A, __B, __C), (__v4si)__A); | ||
| 279 | } | ||
| 280 | |||
| 281 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 282 | _mm_maskz_dpwsuds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 283 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 284 | (__mmask8)__U, (__v4si)_mm_dpwsuds_epi32(__A, __B, __C), | ||
| 285 | (__v4si)_mm_setzero_si128()); | ||
| 286 | } | ||
| 287 | |||
| 288 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 289 | _mm256_mask_dpwsuds_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 290 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 291 | (__mmask8)__U, (__v8si)_mm256_dpwsuds_epi32(__A, __B, __C), (__v8si)__A); | ||
| 292 | } | ||
| 293 | |||
| 294 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpwsuds_epi32( | ||
| 295 | __m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 296 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 297 | (__mmask8)__U, (__v8si)_mm256_dpwsuds_epi32(__A, __B, __C), | ||
| 298 | (__v8si)_mm256_setzero_si256()); | ||
| 299 | } | ||
| 300 | |||
| 301 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 302 | _mm_mask_dpwusd_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 303 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 304 | (__mmask8)__U, (__v4si)_mm_dpwusd_epi32(__A, __B, __C), (__v4si)__A); | ||
| 305 | } | ||
| 306 | |||
| 307 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 308 | _mm_maskz_dpwusd_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 309 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 310 | (__mmask8)__U, (__v4si)_mm_dpwusd_epi32(__A, __B, __C), | ||
| 311 | (__v4si)_mm_setzero_si128()); | ||
| 312 | } | ||
| 313 | |||
| 314 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 315 | _mm256_mask_dpwusd_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 316 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 317 | (__mmask8)__U, (__v8si)_mm256_dpwusd_epi32(__A, __B, __C), (__v8si)__A); | ||
| 318 | } | ||
| 319 | |||
| 320 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 321 | _mm256_maskz_dpwusd_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 322 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 323 | (__mmask8)__U, (__v8si)_mm256_dpwusd_epi32(__A, __B, __C), | ||
| 324 | (__v8si)_mm256_setzero_si256()); | ||
| 325 | } | ||
| 326 | |||
| 327 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 328 | _mm_mask_dpwusds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 329 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 330 | (__mmask8)__U, (__v4si)_mm_dpwusds_epi32(__A, __B, __C), (__v4si)__A); | ||
| 331 | } | ||
| 332 | |||
| 333 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 334 | _mm_maskz_dpwusds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 335 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 336 | (__mmask8)__U, (__v4si)_mm_dpwusds_epi32(__A, __B, __C), | ||
| 337 | (__v4si)_mm_setzero_si128()); | ||
| 338 | } | ||
| 339 | |||
| 340 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 341 | _mm256_mask_dpwusds_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 342 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 343 | (__mmask8)__U, (__v8si)_mm256_dpwusds_epi32(__A, __B, __C), (__v8si)__A); | ||
| 344 | } | ||
| 345 | |||
| 346 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpwusds_epi32( | ||
| 347 | __m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 348 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 349 | (__mmask8)__U, (__v8si)_mm256_dpwusds_epi32(__A, __B, __C), | ||
| 350 | (__v8si)_mm256_setzero_si256()); | ||
| 351 | } | ||
| 352 | |||
| 353 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 354 | _mm_mask_dpwuud_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 355 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 356 | (__mmask8)__U, (__v4si)_mm_dpwuud_epi32(__A, __B, __C), (__v4si)__A); | ||
| 357 | } | ||
| 358 | |||
| 359 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 360 | _mm_maskz_dpwuud_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 361 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 362 | (__mmask8)__U, (__v4si)_mm_dpwuud_epi32(__A, __B, __C), | ||
| 363 | (__v4si)_mm_setzero_si128()); | ||
| 364 | } | ||
| 365 | |||
| 366 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 367 | _mm256_mask_dpwuud_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 368 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 369 | (__mmask8)__U, (__v8si)_mm256_dpwuud_epi32(__A, __B, __C), (__v8si)__A); | ||
| 370 | } | ||
| 371 | |||
| 372 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 373 | _mm256_maskz_dpwuud_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 374 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 375 | (__mmask8)__U, (__v8si)_mm256_dpwuud_epi32(__A, __B, __C), | ||
| 376 | (__v8si)_mm256_setzero_si256()); | ||
| 377 | } | ||
| 378 | |||
| 379 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 380 | _mm_mask_dpwuuds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 381 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 382 | (__mmask8)__U, (__v4si)_mm_dpwuuds_epi32(__A, __B, __C), (__v4si)__A); | ||
| 383 | } | ||
| 384 | |||
| 385 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 386 | _mm_maskz_dpwuuds_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) { | ||
| 387 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 388 | (__mmask8)__U, (__v4si)_mm_dpwuuds_epi32(__A, __B, __C), | ||
| 389 | (__v4si)_mm_setzero_si128()); | ||
| 390 | } | ||
| 391 | |||
| 392 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 393 | _mm256_mask_dpwuuds_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 394 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 395 | (__mmask8)__U, (__v8si)_mm256_dpwuuds_epi32(__A, __B, __C), (__v8si)__A); | ||
| 396 | } | ||
| 397 | |||
| 398 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpwuuds_epi32( | ||
| 399 | __m256i __A, __mmask8 __U, __m256i __B, __m256i __C) { | ||
| 400 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 401 | (__mmask8)__U, (__v8si)_mm256_dpwuuds_epi32(__A, __B, __C), | ||
| 402 | (__v8si)_mm256_setzero_si256()); | ||
| 403 | } | ||
| 404 | |||
| 405 | /* YMM Rounding */ | ||
| 406 | #define _mm256_add_round_pd(A, B, R) \ | ||
| 407 | ((__m256d)__builtin_ia32_vaddpd256_round((__v4df)(__m256d)(A), \ | ||
| 408 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 409 | |||
| 410 | #define _mm256_mask_add_round_pd(W, U, A, B, R) \ | ||
| 411 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 412 | (__mmask8)(U), (__v4df)_mm256_add_round_pd((A), (B), (R)), \ | ||
| 413 | (__v4df)(__m256d)(W))) | ||
| 414 | |||
| 415 | #define _mm256_maskz_add_round_pd(U, A, B, R) \ | ||
| 416 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 417 | (__mmask8)(U), (__v4df)_mm256_add_round_pd((A), (B), (R)), \ | ||
| 418 | (__v4df)_mm256_setzero_pd())) | ||
| 419 | |||
| 420 | #define _mm256_add_round_ph(A, B, R) \ | ||
| 421 | ((__m256h)__builtin_ia32_vaddph256_round((__v16hf)(__m256h)(A), \ | ||
| 422 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 423 | |||
| 424 | #define _mm256_mask_add_round_ph(W, U, A, B, R) \ | ||
| 425 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 426 | (__mmask16)(U), (__v16hf)_mm256_add_round_ph((A), (B), (R)), \ | ||
| 427 | (__v16hf)(__m256h)(W))) | ||
| 428 | |||
| 429 | #define _mm256_maskz_add_round_ph(U, A, B, R) \ | ||
| 430 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 431 | (__mmask16)(U), (__v16hf)_mm256_add_round_ph((A), (B), (R)), \ | ||
| 432 | (__v16hf)_mm256_setzero_ph())) | ||
| 433 | |||
| 434 | #define _mm256_add_round_ps(A, B, R) \ | ||
| 435 | ((__m256)__builtin_ia32_vaddps256_round((__v8sf)(__m256)(A), \ | ||
| 436 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 437 | |||
| 438 | #define _mm256_mask_add_round_ps(W, U, A, B, R) \ | ||
| 439 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 440 | (__mmask8)(U), (__v8sf)_mm256_add_round_ps((A), (B), (R)), \ | ||
| 441 | (__v8sf)(__m256)(W))) | ||
| 442 | |||
| 443 | #define _mm256_maskz_add_round_ps(U, A, B, R) \ | ||
| 444 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 445 | (__mmask8)(U), (__v8sf)_mm256_add_round_ps((A), (B), (R)), \ | ||
| 446 | (__v8sf)_mm256_setzero_ps())) | ||
| 447 | |||
| 448 | #define _mm256_cmp_round_pd_mask(A, B, P, R) \ | ||
| 449 | ((__mmask8)__builtin_ia32_vcmppd256_round_mask( \ | ||
| 450 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(P), (__mmask8)-1, \ | ||
| 451 | (int)(R))) | ||
| 452 | |||
| 453 | #define _mm256_mask_cmp_round_pd_mask(U, A, B, P, R) \ | ||
| 454 | ((__mmask8)__builtin_ia32_vcmppd256_round_mask( \ | ||
| 455 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(P), (__mmask8)(U), \ | ||
| 456 | (int)(R))) | ||
| 457 | |||
| 458 | #define _mm256_cmp_round_ph_mask(A, B, P, R) \ | ||
| 459 | ((__mmask16)__builtin_ia32_vcmpph256_round_mask( \ | ||
| 460 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(P), (__mmask16)-1, \ | ||
| 461 | (int)(R))) | ||
| 462 | |||
| 463 | #define _mm256_mask_cmp_round_ph_mask(U, A, B, P, R) \ | ||
| 464 | ((__mmask16)__builtin_ia32_vcmpph256_round_mask( \ | ||
| 465 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (int)(P), (__mmask16)(U), \ | ||
| 466 | (int)(R))) | ||
| 467 | |||
| 468 | #define _mm256_cmp_round_ps_mask(A, B, P, R) \ | ||
| 469 | ((__mmask8)__builtin_ia32_vcmpps256_round_mask( \ | ||
| 470 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(P), (__mmask8)-1, \ | ||
| 471 | (int)(R))) | ||
| 472 | |||
| 473 | #define _mm256_mask_cmp_round_ps_mask(U, A, B, P, R) \ | ||
| 474 | ((__mmask8)__builtin_ia32_vcmpps256_round_mask( \ | ||
| 475 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(P), (__mmask8)(U), \ | ||
| 476 | (int)(R))) | ||
| 477 | |||
| 478 | #define _mm256_cvt_roundepi32_ph(A, R) \ | ||
| 479 | ((__m128h)__builtin_ia32_vcvtdq2ph256_round_mask( \ | ||
| 480 | (__v8si)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 481 | |||
| 482 | #define _mm256_mask_cvt_roundepi32_ph(W, U, A, R) \ | ||
| 483 | ((__m128h)__builtin_ia32_vcvtdq2ph256_round_mask((__v8si)(A), (__v8hf)(W), \ | ||
| 484 | (__mmask8)(U), (int)(R))) | ||
| 485 | |||
| 486 | #define _mm256_maskz_cvt_roundepi32_ph(U, A, R) \ | ||
| 487 | ((__m128h)__builtin_ia32_vcvtdq2ph256_round_mask( \ | ||
| 488 | (__v8si)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 489 | |||
| 490 | #define _mm256_cvt_roundepi32_ps(A, R) \ | ||
| 491 | ((__m256)__builtin_ia32_vcvtdq2ps256_round_mask((__v8si)(__m256i)(A), \ | ||
| 492 | (__v8sf)_mm256_setzero_ps(), \ | ||
| 493 | (__mmask8)-1, (int)(R))) | ||
| 494 | |||
| 495 | #define _mm256_mask_cvt_roundepi32_ps(W, U, A, R) \ | ||
| 496 | ((__m256)__builtin_ia32_vcvtdq2ps256_round_mask( \ | ||
| 497 | (__v8si)(__m256i)(A), (__v8sf)(__m256)(W), (__mmask8)(U), (int)(R))) | ||
| 498 | |||
| 499 | #define _mm256_maskz_cvt_roundepi32_ps(U, A, R) \ | ||
| 500 | ((__m256)__builtin_ia32_vcvtdq2ps256_round_mask((__v8si)(__m256i)(A), \ | ||
| 501 | (__v8sf)_mm256_setzero_ps(), \ | ||
| 502 | (__mmask8)(U), (int)(R))) | ||
| 503 | |||
| 504 | #define _mm256_cvt_roundpd_epi32(A, R) \ | ||
| 505 | ((__m128i)__builtin_ia32_vcvtpd2dq256_round_mask( \ | ||
| 506 | (__v4df)(__m256d)(A), (__v4si)_mm_setzero_si128(), (__mmask8)-1, \ | ||
| 507 | (int)(R))) | ||
| 508 | |||
| 509 | #define _mm256_mask_cvt_roundpd_epi32(W, U, A, R) \ | ||
| 510 | ((__m128i)__builtin_ia32_vcvtpd2dq256_round_mask( \ | ||
| 511 | (__v4df)(__m256d)(A), (__v4si)(__m128i)(W), (__mmask8)(U), (int)(R))) | ||
| 512 | |||
| 513 | #define _mm256_maskz_cvt_roundpd_epi32(U, A, R) \ | ||
| 514 | ((__m128i)__builtin_ia32_vcvtpd2dq256_round_mask( \ | ||
| 515 | (__v4df)(__m256d)(A), (__v4si)_mm_setzero_si128(), (__mmask8)(U), \ | ||
| 516 | (int)(R))) | ||
| 517 | |||
| 518 | #define _mm256_cvt_roundpd_ph(A, R) \ | ||
| 519 | ((__m128h)__builtin_ia32_vcvtpd2ph256_round_mask( \ | ||
| 520 | (__v4df)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 521 | |||
| 522 | #define _mm256_mask_cvt_roundpd_ph(W, U, A, R) \ | ||
| 523 | ((__m128h)__builtin_ia32_vcvtpd2ph256_round_mask((__v4df)(A), (__v8hf)(W), \ | ||
| 524 | (__mmask8)(U), (int)(R))) | ||
| 525 | |||
| 526 | #define _mm256_maskz_cvt_roundpd_ph(U, A, R) \ | ||
| 527 | ((__m128h)__builtin_ia32_vcvtpd2ph256_round_mask( \ | ||
| 528 | (__v4df)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 529 | |||
| 530 | #define _mm256_cvt_roundpd_ps(A, R) \ | ||
| 531 | ((__m128)__builtin_ia32_vcvtpd2ps256_round_mask( \ | ||
| 532 | (__v4df)(__m256d)(A), (__v4sf)_mm_setzero_ps(), (__mmask8)-1, (int)(R))) | ||
| 533 | |||
| 534 | #define _mm256_mask_cvt_roundpd_ps(W, U, A, R) \ | ||
| 535 | ((__m128)__builtin_ia32_vcvtpd2ps256_round_mask( \ | ||
| 536 | (__v4df)(__m256d)(A), (__v4sf)(__m128)(W), (__mmask8)(U), (int)(R))) | ||
| 537 | |||
| 538 | #define _mm256_maskz_cvt_roundpd_ps(U, A, R) \ | ||
| 539 | ((__m128)__builtin_ia32_vcvtpd2ps256_round_mask((__v4df)(__m256d)(A), \ | ||
| 540 | (__v4sf)_mm_setzero_ps(), \ | ||
| 541 | (__mmask8)(U), (int)(R))) | ||
| 542 | |||
| 543 | #define _mm256_cvt_roundpd_epi64(A, R) \ | ||
| 544 | ((__m256i)__builtin_ia32_vcvtpd2qq256_round_mask( \ | ||
| 545 | (__v4df)(__m256d)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 546 | (int)(R))) | ||
| 547 | |||
| 548 | #define _mm256_mask_cvt_roundpd_epi64(W, U, A, R) \ | ||
| 549 | ((__m256i)__builtin_ia32_vcvtpd2qq256_round_mask( \ | ||
| 550 | (__v4df)(__m256d)(A), (__v4di)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 551 | |||
| 552 | #define _mm256_maskz_cvt_roundpd_epi64(U, A, R) \ | ||
| 553 | ((__m256i)__builtin_ia32_vcvtpd2qq256_round_mask( \ | ||
| 554 | (__v4df)(__m256d)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 555 | (int)(R))) | ||
| 556 | |||
| 557 | #define _mm256_cvt_roundpd_epu32(A, R) \ | ||
| 558 | ((__m128i)__builtin_ia32_vcvtpd2udq256_round_mask( \ | ||
| 559 | (__v4df)(__m256d)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1, \ | ||
| 560 | (int)(R))) | ||
| 561 | |||
| 562 | #define _mm256_mask_cvt_roundpd_epu32(W, U, A, R) \ | ||
| 563 | ((__m128i)__builtin_ia32_vcvtpd2udq256_round_mask( \ | ||
| 564 | (__v4df)(__m256d)(A), (__v4su)(__m128i)(W), (__mmask8)(U), (int)(R))) | ||
| 565 | |||
| 566 | #define _mm256_maskz_cvt_roundpd_epu32(U, A, R) \ | ||
| 567 | ((__m128i)__builtin_ia32_vcvtpd2udq256_round_mask( \ | ||
| 568 | (__v4df)(__m256d)(A), (__v4su)_mm_setzero_si128(), (__mmask8)(U), \ | ||
| 569 | (int)(R))) | ||
| 570 | |||
| 571 | #define _mm256_cvt_roundpd_epu64(A, R) \ | ||
| 572 | ((__m256i)__builtin_ia32_vcvtpd2uqq256_round_mask( \ | ||
| 573 | (__v4df)(__m256d)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 574 | (int)(R))) | ||
| 575 | |||
| 576 | #define _mm256_mask_cvt_roundpd_epu64(W, U, A, R) \ | ||
| 577 | ((__m256i)__builtin_ia32_vcvtpd2uqq256_round_mask( \ | ||
| 578 | (__v4df)(__m256d)(A), (__v4du)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 579 | |||
| 580 | #define _mm256_maskz_cvt_roundpd_epu64(U, A, R) \ | ||
| 581 | ((__m256i)__builtin_ia32_vcvtpd2uqq256_round_mask( \ | ||
| 582 | (__v4df)(__m256d)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 583 | (int)(R))) | ||
| 584 | |||
| 585 | #define _mm256_cvt_roundph_epi32(A, R) \ | ||
| 586 | ((__m256i)__builtin_ia32_vcvtph2dq256_round_mask( \ | ||
| 587 | (__v8hf)(A), (__v8si)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 588 | (int)(R))) | ||
| 589 | |||
| 590 | #define _mm256_mask_cvt_roundph_epi32(W, U, A, R) \ | ||
| 591 | ((__m256i)__builtin_ia32_vcvtph2dq256_round_mask((__v8hf)(A), (__v8si)(W), \ | ||
| 592 | (__mmask8)(U), (int)(R))) | ||
| 593 | |||
| 594 | #define _mm256_maskz_cvt_roundph_epi32(U, A, R) \ | ||
| 595 | ((__m256i)__builtin_ia32_vcvtph2dq256_round_mask( \ | ||
| 596 | (__v8hf)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 597 | |||
| 598 | #define _mm256_cvt_roundph_pd(A, R) \ | ||
| 599 | ((__m256d)__builtin_ia32_vcvtph2pd256_round_mask( \ | ||
| 600 | (__v8hf)(A), (__v4df)_mm256_undefined_pd(), (__mmask8)(-1), (int)(R))) | ||
| 601 | |||
| 602 | #define _mm256_mask_cvt_roundph_pd(W, U, A, R) \ | ||
| 603 | ((__m256d)__builtin_ia32_vcvtph2pd256_round_mask((__v8hf)(A), (__v4df)(W), \ | ||
| 604 | (__mmask8)(U), (int)(R))) | ||
| 605 | |||
| 606 | #define _mm256_maskz_cvt_roundph_pd(U, A, R) \ | ||
| 607 | ((__m256d)__builtin_ia32_vcvtph2pd256_round_mask( \ | ||
| 608 | (__v8hf)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 609 | |||
| 610 | #define _mm256_cvtx_roundph_ps(A, R) \ | ||
| 611 | ((__m256)__builtin_ia32_vcvtph2psx256_round_mask( \ | ||
| 612 | (__v8hf)(A), (__v8sf)_mm256_undefined_ps(), (__mmask8)(-1), (int)(R))) | ||
| 613 | |||
| 614 | #define _mm256_mask_cvtx_roundph_ps(W, U, A, R) \ | ||
| 615 | ((__m256)__builtin_ia32_vcvtph2psx256_round_mask((__v8hf)(A), (__v8sf)(W), \ | ||
| 616 | (__mmask8)(U), (int)(R))) | ||
| 617 | |||
| 618 | #define _mm256_maskz_cvtx_roundph_ps(U, A, R) \ | ||
| 619 | ((__m256)__builtin_ia32_vcvtph2psx256_round_mask( \ | ||
| 620 | (__v8hf)(A), (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), (int)(R))) | ||
| 621 | |||
| 622 | #define _mm256_cvt_roundph_epi64(A, R) \ | ||
| 623 | ((__m256i)__builtin_ia32_vcvtph2qq256_round_mask( \ | ||
| 624 | (__v8hf)(A), (__v4di)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 625 | (int)(R))) | ||
| 626 | |||
| 627 | #define _mm256_mask_cvt_roundph_epi64(W, U, A, R) \ | ||
| 628 | ((__m256i)__builtin_ia32_vcvtph2qq256_round_mask((__v8hf)(A), (__v4di)(W), \ | ||
| 629 | (__mmask8)(U), (int)(R))) | ||
| 630 | |||
| 631 | #define _mm256_maskz_cvt_roundph_epi64(U, A, R) \ | ||
| 632 | ((__m256i)__builtin_ia32_vcvtph2qq256_round_mask( \ | ||
| 633 | (__v8hf)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 634 | |||
| 635 | #define _mm256_cvt_roundph_epu32(A, R) \ | ||
| 636 | ((__m256i)__builtin_ia32_vcvtph2udq256_round_mask( \ | ||
| 637 | (__v8hf)(A), (__v8su)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 638 | (int)(R))) | ||
| 639 | |||
| 640 | #define _mm256_mask_cvt_roundph_epu32(W, U, A, R) \ | ||
| 641 | ((__m256i)__builtin_ia32_vcvtph2udq256_round_mask((__v8hf)(A), (__v8su)(W), \ | ||
| 642 | (__mmask8)(U), (int)(R))) | ||
| 643 | |||
| 644 | #define _mm256_maskz_cvt_roundph_epu32(U, A, R) \ | ||
| 645 | ((__m256i)__builtin_ia32_vcvtph2udq256_round_mask( \ | ||
| 646 | (__v8hf)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 647 | |||
| 648 | #define _mm256_cvt_roundph_epu64(A, R) \ | ||
| 649 | ((__m256i)__builtin_ia32_vcvtph2uqq256_round_mask( \ | ||
| 650 | (__v8hf)(A), (__v4du)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 651 | (int)(R))) | ||
| 652 | |||
| 653 | #define _mm256_mask_cvt_roundph_epu64(W, U, A, R) \ | ||
| 654 | ((__m256i)__builtin_ia32_vcvtph2uqq256_round_mask((__v8hf)(A), (__v4du)(W), \ | ||
| 655 | (__mmask8)(U), (int)(R))) | ||
| 656 | |||
| 657 | #define _mm256_maskz_cvt_roundph_epu64(U, A, R) \ | ||
| 658 | ((__m256i)__builtin_ia32_vcvtph2uqq256_round_mask( \ | ||
| 659 | (__v8hf)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 660 | |||
| 661 | #define _mm256_cvt_roundph_epu16(A, R) \ | ||
| 662 | ((__m256i)__builtin_ia32_vcvtph2uw256_round_mask( \ | ||
| 663 | (__v16hf)(A), (__v16hu)_mm256_undefined_si256(), (__mmask16)(-1), \ | ||
| 664 | (int)(R))) | ||
| 665 | |||
| 666 | #define _mm256_mask_cvt_roundph_epu16(W, U, A, R) \ | ||
| 667 | ((__m256i)__builtin_ia32_vcvtph2uw256_round_mask((__v16hf)(A), (__v16hu)(W), \ | ||
| 668 | (__mmask16)(U), (int)(R))) | ||
| 669 | |||
| 670 | #define _mm256_maskz_cvt_roundph_epu16(U, A, R) \ | ||
| 671 | ((__m256i)__builtin_ia32_vcvtph2uw256_round_mask( \ | ||
| 672 | (__v16hf)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 673 | (int)(R))) | ||
| 674 | |||
| 675 | #define _mm256_cvt_roundph_epi16(A, R) \ | ||
| 676 | ((__m256i)__builtin_ia32_vcvtph2w256_round_mask( \ | ||
| 677 | (__v16hf)(A), (__v16hi)_mm256_undefined_si256(), (__mmask16)(-1), \ | ||
| 678 | (int)(R))) | ||
| 679 | |||
| 680 | #define _mm256_mask_cvt_roundph_epi16(W, U, A, R) \ | ||
| 681 | ((__m256i)__builtin_ia32_vcvtph2w256_round_mask((__v16hf)(A), (__v16hi)(W), \ | ||
| 682 | (__mmask16)(U), (int)(R))) | ||
| 683 | |||
| 684 | #define _mm256_maskz_cvt_roundph_epi16(U, A, R) \ | ||
| 685 | ((__m256i)__builtin_ia32_vcvtph2w256_round_mask( \ | ||
| 686 | (__v16hf)(A), (__v16hi)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 687 | (int)(R))) | ||
| 688 | |||
| 689 | #define _mm256_cvt_roundps_epi32(A, R) \ | ||
| 690 | ((__m256i)__builtin_ia32_vcvtps2dq256_round_mask( \ | ||
| 691 | (__v8sf)(__m256)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 692 | (int)(R))) | ||
| 693 | |||
| 694 | #define _mm256_mask_cvt_roundps_epi32(W, U, A, R) \ | ||
| 695 | ((__m256i)__builtin_ia32_vcvtps2dq256_round_mask( \ | ||
| 696 | (__v8sf)(__m256)(A), (__v8si)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 697 | |||
| 698 | #define _mm256_maskz_cvt_roundps_epi32(U, A, R) \ | ||
| 699 | ((__m256i)__builtin_ia32_vcvtps2dq256_round_mask( \ | ||
| 700 | (__v8sf)(__m256)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 701 | (int)(R))) | ||
| 702 | |||
| 703 | #define _mm256_cvt_roundps_pd(A, R) \ | ||
| 704 | ((__m256d)__builtin_ia32_vcvtps2pd256_round_mask( \ | ||
| 705 | (__v4sf)(__m128)(A), (__v4df)_mm256_undefined_pd(), (__mmask8)-1, \ | ||
| 706 | (int)(R))) | ||
| 707 | |||
| 708 | #define _mm256_mask_cvt_roundps_pd(W, U, A, R) \ | ||
| 709 | ((__m256d)__builtin_ia32_vcvtps2pd256_round_mask( \ | ||
| 710 | (__v4sf)(__m128)(A), (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 711 | |||
| 712 | #define _mm256_maskz_cvt_roundps_pd(U, A, R) \ | ||
| 713 | ((__m256d)__builtin_ia32_vcvtps2pd256_round_mask( \ | ||
| 714 | (__v4sf)(__m128)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)(U), \ | ||
| 715 | (int)(R))) | ||
| 716 | |||
| 717 | #define _mm256_cvt_roundps_ph(A, I) \ | ||
| 718 | ((__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \ | ||
| 719 | (__v8hi)_mm_undefined_si128(), \ | ||
| 720 | (__mmask8)-1)) | ||
| 721 | |||
| 722 | /* FIXME: We may use these way in future. | ||
| 723 | #define _mm256_cvt_roundps_ph(A, I) \ | ||
| 724 | ((__m128i)__builtin_ia32_vcvtps2ph256_round_mask( \ | ||
| 725 | (__v8sf)(__m256)(A), (int)(I), (__v8hi)_mm_undefined_si128(), \ | ||
| 726 | (__mmask8)-1)) | ||
| 727 | #define _mm256_mask_cvt_roundps_ph(U, W, A, I) \ | ||
| 728 | ((__m128i)__builtin_ia32_vcvtps2ph256_round_mask( \ | ||
| 729 | (__v8sf)(__m256)(A), (int)(I), (__v8hi)(__m128i)(U), (__mmask8)(W))) | ||
| 730 | #define _mm256_maskz_cvt_roundps_ph(W, A, I) \ | ||
| 731 | ((__m128i)__builtin_ia32_vcvtps2ph256_round_mask( \ | ||
| 732 | (__v8sf)(__m256)(A), (int)(I), (__v8hi)_mm_setzero_si128(), \ | ||
| 733 | (__mmask8)(W))) */ | ||
| 734 | |||
| 735 | #define _mm256_cvtx_roundps_ph(A, R) \ | ||
| 736 | ((__m128h)__builtin_ia32_vcvtps2phx256_round_mask( \ | ||
| 737 | (__v8sf)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 738 | |||
| 739 | #define _mm256_mask_cvtx_roundps_ph(W, U, A, R) \ | ||
| 740 | ((__m128h)__builtin_ia32_vcvtps2phx256_round_mask((__v8sf)(A), (__v8hf)(W), \ | ||
| 741 | (__mmask8)(U), (int)(R))) | ||
| 742 | |||
| 743 | #define _mm256_maskz_cvtx_roundps_ph(U, A, R) \ | ||
| 744 | ((__m128h)__builtin_ia32_vcvtps2phx256_round_mask( \ | ||
| 745 | (__v8sf)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 746 | |||
| 747 | #define _mm256_cvt_roundps_epi64(A, R) \ | ||
| 748 | ((__m256i)__builtin_ia32_vcvtps2qq256_round_mask( \ | ||
| 749 | (__v4sf)(__m128)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 750 | (int)(R))) | ||
| 751 | |||
| 752 | #define _mm256_mask_cvt_roundps_epi64(W, U, A, R) \ | ||
| 753 | ((__m256i)__builtin_ia32_vcvtps2qq256_round_mask( \ | ||
| 754 | (__v4sf)(__m128)(A), (__v4di)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 755 | |||
| 756 | #define _mm256_maskz_cvt_roundps_epi64(U, A, R) \ | ||
| 757 | ((__m256i)__builtin_ia32_vcvtps2qq256_round_mask( \ | ||
| 758 | (__v4sf)(__m128)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 759 | (int)(R))) | ||
| 760 | |||
| 761 | #define _mm256_cvt_roundps_epu32(A, R) \ | ||
| 762 | ((__m256i)__builtin_ia32_vcvtps2udq256_round_mask( \ | ||
| 763 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 764 | (int)(R))) | ||
| 765 | |||
| 766 | #define _mm256_mask_cvt_roundps_epu32(W, U, A, R) \ | ||
| 767 | ((__m256i)__builtin_ia32_vcvtps2udq256_round_mask( \ | ||
| 768 | (__v8sf)(__m256)(A), (__v8su)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 769 | |||
| 770 | #define _mm256_maskz_cvt_roundps_epu32(U, A, R) \ | ||
| 771 | ((__m256i)__builtin_ia32_vcvtps2udq256_round_mask( \ | ||
| 772 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 773 | (int)(R))) | ||
| 774 | |||
| 775 | #define _mm256_cvt_roundps_epu64(A, R) \ | ||
| 776 | ((__m256i)__builtin_ia32_vcvtps2uqq256_round_mask( \ | ||
| 777 | (__v4sf)(__m128)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 778 | (int)(R))) | ||
| 779 | |||
| 780 | #define _mm256_mask_cvt_roundps_epu64(W, U, A, R) \ | ||
| 781 | ((__m256i)__builtin_ia32_vcvtps2uqq256_round_mask( \ | ||
| 782 | (__v4sf)(__m128)(A), (__v4du)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 783 | |||
| 784 | #define _mm256_maskz_cvt_roundps_epu64(U, A, R) \ | ||
| 785 | ((__m256i)__builtin_ia32_vcvtps2uqq256_round_mask( \ | ||
| 786 | (__v4sf)(__m128)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 787 | (int)(R))) | ||
| 788 | |||
| 789 | #define _mm256_cvt_roundepi64_pd(A, R) \ | ||
| 790 | ((__m256d)__builtin_ia32_vcvtqq2pd256_round_mask( \ | ||
| 791 | (__v4di)(__m256i)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)-1, \ | ||
| 792 | (int)(R))) | ||
| 793 | |||
| 794 | #define _mm256_mask_cvt_roundepi64_pd(W, U, A, R) \ | ||
| 795 | ((__m256d)__builtin_ia32_vcvtqq2pd256_round_mask( \ | ||
| 796 | (__v4di)(__m256i)(A), (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 797 | |||
| 798 | #define _mm256_maskz_cvt_roundepi64_pd(U, A, R) \ | ||
| 799 | ((__m256d)__builtin_ia32_vcvtqq2pd256_round_mask( \ | ||
| 800 | (__v4di)(__m256i)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)(U), \ | ||
| 801 | (int)(R))) | ||
| 802 | |||
| 803 | #define _mm256_cvt_roundepi64_ph(A, R) \ | ||
| 804 | ((__m128h)__builtin_ia32_vcvtqq2ph256_round_mask( \ | ||
| 805 | (__v4di)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 806 | |||
| 807 | #define _mm256_mask_cvt_roundepi64_ph(W, U, A, R) \ | ||
| 808 | ((__m128h)__builtin_ia32_vcvtqq2ph256_round_mask((__v4di)(A), (__v8hf)(W), \ | ||
| 809 | (__mmask8)(U), (int)(R))) | ||
| 810 | |||
| 811 | #define _mm256_maskz_cvt_roundepi64_ph(U, A, R) \ | ||
| 812 | ((__m128h)__builtin_ia32_vcvtqq2ph256_round_mask( \ | ||
| 813 | (__v4di)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 814 | |||
| 815 | #define _mm256_cvt_roundepi64_ps(A, R) \ | ||
| 816 | ((__m128)__builtin_ia32_vcvtqq2ps256_round_mask( \ | ||
| 817 | (__v4di)(__m256i)(A), (__v4sf)_mm_setzero_ps(), (__mmask8)-1, (int)(R))) | ||
| 818 | |||
| 819 | #define _mm256_mask_cvt_roundepi64_ps(W, U, A, R) \ | ||
| 820 | ((__m128)__builtin_ia32_vcvtqq2ps256_round_mask( \ | ||
| 821 | (__v4di)(__m256i)(A), (__v4sf)(__m128)(W), (__mmask8)(U), (int)(R))) | ||
| 822 | |||
| 823 | #define _mm256_maskz_cvt_roundepi64_ps(U, A, R) \ | ||
| 824 | ((__m128)__builtin_ia32_vcvtqq2ps256_round_mask((__v4di)(__m256i)(A), \ | ||
| 825 | (__v4sf)_mm_setzero_ps(), \ | ||
| 826 | (__mmask8)(U), (int)(R))) | ||
| 827 | |||
| 828 | #define _mm256_cvtt_roundpd_epi32(A, R) \ | ||
| 829 | ((__m128i)__builtin_ia32_vcvttpd2dq256_round_mask( \ | ||
| 830 | (__v4df)(__m256d)(A), (__v4si)_mm_setzero_si128(), (__mmask8)-1, \ | ||
| 831 | (int)(R))) | ||
| 832 | |||
| 833 | #define _mm256_mask_cvtt_roundpd_epi32(W, U, A, R) \ | ||
| 834 | ((__m128i)__builtin_ia32_vcvttpd2dq256_round_mask( \ | ||
| 835 | (__v4df)(__m256d)(A), (__v4si)(__m128i)(W), (__mmask8)(U), (int)(R))) | ||
| 836 | |||
| 837 | #define _mm256_maskz_cvtt_roundpd_epi32(U, A, R) \ | ||
| 838 | ((__m128i)__builtin_ia32_vcvttpd2dq256_round_mask( \ | ||
| 839 | (__v4df)(__m256d)(A), (__v4si)_mm_setzero_si128(), (__mmask8)(U), \ | ||
| 840 | (int)(R))) | ||
| 841 | |||
| 842 | #define _mm256_cvtt_roundpd_epi64(A, R) \ | ||
| 843 | ((__m256i)__builtin_ia32_vcvttpd2qq256_round_mask( \ | ||
| 844 | (__v4df)(__m256d)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 845 | (int)(R))) | ||
| 846 | |||
| 847 | #define _mm256_mask_cvtt_roundpd_epi64(W, U, A, R) \ | ||
| 848 | ((__m256i)__builtin_ia32_vcvttpd2qq256_round_mask( \ | ||
| 849 | (__v4df)(__m256d)(A), (__v4di)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 850 | |||
| 851 | #define _mm256_maskz_cvtt_roundpd_epi64(U, A, R) \ | ||
| 852 | ((__m256i)__builtin_ia32_vcvttpd2qq256_round_mask( \ | ||
| 853 | (__v4df)(__m256d)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 854 | (int)(R))) | ||
| 855 | |||
| 856 | #define _mm256_cvtt_roundpd_epu32(A, R) \ | ||
| 857 | ((__m128i)__builtin_ia32_vcvttpd2udq256_round_mask( \ | ||
| 858 | (__v4df)(__m256d)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1, \ | ||
| 859 | (int)(R))) | ||
| 860 | |||
| 861 | #define _mm256_mask_cvtt_roundpd_epu32(W, U, A, R) \ | ||
| 862 | ((__m128i)__builtin_ia32_vcvttpd2udq256_round_mask( \ | ||
| 863 | (__v4df)(__m256d)(A), (__v4su)(__m128i)(W), (__mmask8)(U), (int)(R))) | ||
| 864 | |||
| 865 | #define _mm256_maskz_cvtt_roundpd_epu32(U, A, R) \ | ||
| 866 | ((__m128i)__builtin_ia32_vcvttpd2udq256_round_mask( \ | ||
| 867 | (__v4df)(__m256d)(A), (__v4su)_mm_setzero_si128(), (__mmask8)(U), \ | ||
| 868 | (int)(R))) | ||
| 869 | |||
| 870 | #define _mm256_cvtt_roundpd_epu64(A, R) \ | ||
| 871 | ((__m256i)__builtin_ia32_vcvttpd2uqq256_round_mask( \ | ||
| 872 | (__v4df)(__m256d)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 873 | (int)(R))) | ||
| 874 | |||
| 875 | #define _mm256_mask_cvtt_roundpd_epu64(W, U, A, R) \ | ||
| 876 | ((__m256i)__builtin_ia32_vcvttpd2uqq256_round_mask( \ | ||
| 877 | (__v4df)(__m256d)(A), (__v4du)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 878 | |||
| 879 | #define _mm256_maskz_cvtt_roundpd_epu64(U, A, R) \ | ||
| 880 | ((__m256i)__builtin_ia32_vcvttpd2uqq256_round_mask( \ | ||
| 881 | (__v4df)(__m256d)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 882 | (int)(R))) | ||
| 883 | |||
| 884 | #define _mm256_cvtt_roundph_epi32(A, R) \ | ||
| 885 | ((__m256i)__builtin_ia32_vcvttph2dq256_round_mask( \ | ||
| 886 | (__v8hf)(A), (__v8si)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 887 | (int)(R))) | ||
| 888 | |||
| 889 | #define _mm256_mask_cvtt_roundph_epi32(W, U, A, R) \ | ||
| 890 | ((__m256i)__builtin_ia32_vcvttph2dq256_round_mask((__v8hf)(A), (__v8si)(W), \ | ||
| 891 | (__mmask8)(U), (int)(R))) | ||
| 892 | |||
| 893 | #define _mm256_maskz_cvtt_roundph_epi32(U, A, R) \ | ||
| 894 | ((__m256i)__builtin_ia32_vcvttph2dq256_round_mask( \ | ||
| 895 | (__v8hf)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 896 | |||
| 897 | #define _mm256_cvtt_roundph_epi64(A, R) \ | ||
| 898 | ((__m256i)__builtin_ia32_vcvttph2qq256_round_mask( \ | ||
| 899 | (__v8hf)(A), (__v4di)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 900 | (int)(R))) | ||
| 901 | |||
| 902 | #define _mm256_mask_cvtt_roundph_epi64(W, U, A, R) \ | ||
| 903 | ((__m256i)__builtin_ia32_vcvttph2qq256_round_mask((__v8hf)(A), (__v4di)(W), \ | ||
| 904 | (__mmask8)(U), (int)(R))) | ||
| 905 | |||
| 906 | #define _mm256_maskz_cvtt_roundph_epi64(U, A, R) \ | ||
| 907 | ((__m256i)__builtin_ia32_vcvttph2qq256_round_mask( \ | ||
| 908 | (__v8hf)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 909 | |||
| 910 | #define _mm256_cvtt_roundph_epu32(A, R) \ | ||
| 911 | ((__m256i)__builtin_ia32_vcvttph2udq256_round_mask( \ | ||
| 912 | (__v8hf)(A), (__v8su)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 913 | (int)(R))) | ||
| 914 | |||
| 915 | #define _mm256_mask_cvtt_roundph_epu32(W, U, A, R) \ | ||
| 916 | ((__m256i)__builtin_ia32_vcvttph2udq256_round_mask((__v8hf)(A), (__v8su)(W), \ | ||
| 917 | (__mmask8)(U), (int)(R))) | ||
| 918 | |||
| 919 | #define _mm256_maskz_cvtt_roundph_epu32(U, A, R) \ | ||
| 920 | ((__m256i)__builtin_ia32_vcvttph2udq256_round_mask( \ | ||
| 921 | (__v8hf)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 922 | |||
| 923 | #define _mm256_cvtt_roundph_epu64(A, R) \ | ||
| 924 | ((__m256i)__builtin_ia32_vcvttph2uqq256_round_mask( \ | ||
| 925 | (__v8hf)(A), (__v4du)_mm256_undefined_si256(), (__mmask8)(-1), \ | ||
| 926 | (int)(R))) | ||
| 927 | |||
| 928 | #define _mm256_mask_cvtt_roundph_epu64(W, U, A, R) \ | ||
| 929 | ((__m256i)__builtin_ia32_vcvttph2uqq256_round_mask((__v8hf)(A), (__v4du)(W), \ | ||
| 930 | (__mmask8)(U), (int)(R))) | ||
| 931 | |||
| 932 | #define _mm256_maskz_cvtt_roundph_epu64(U, A, R) \ | ||
| 933 | ((__m256i)__builtin_ia32_vcvttph2uqq256_round_mask( \ | ||
| 934 | (__v8hf)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), (int)(R))) | ||
| 935 | |||
| 936 | #define _mm256_cvtt_roundph_epu16(A, R) \ | ||
| 937 | ((__m256i)__builtin_ia32_vcvttph2uw256_round_mask( \ | ||
| 938 | (__v16hf)(A), (__v16hu)_mm256_undefined_si256(), (__mmask16)(-1), \ | ||
| 939 | (int)(R))) | ||
| 940 | |||
| 941 | #define _mm256_mask_cvtt_roundph_epu16(W, U, A, R) \ | ||
| 942 | ((__m256i)__builtin_ia32_vcvttph2uw256_round_mask( \ | ||
| 943 | (__v16hf)(A), (__v16hu)(W), (__mmask16)(U), (int)(R))) | ||
| 944 | |||
| 945 | #define _mm256_maskz_cvtt_roundph_epu16(U, A, R) \ | ||
| 946 | ((__m256i)__builtin_ia32_vcvttph2uw256_round_mask( \ | ||
| 947 | (__v16hf)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 948 | (int)(R))) | ||
| 949 | |||
| 950 | #define _mm256_cvtt_roundph_epi16(A, R) \ | ||
| 951 | ((__m256i)__builtin_ia32_vcvttph2w256_round_mask( \ | ||
| 952 | (__v16hf)(A), (__v16hi)_mm256_undefined_si256(), (__mmask16)(-1), \ | ||
| 953 | (int)(R))) | ||
| 954 | |||
| 955 | #define _mm256_mask_cvtt_roundph_epi16(W, U, A, R) \ | ||
| 956 | ((__m256i)__builtin_ia32_vcvttph2w256_round_mask((__v16hf)(A), (__v16hi)(W), \ | ||
| 957 | (__mmask16)(U), (int)(R))) | ||
| 958 | |||
| 959 | #define _mm256_maskz_cvtt_roundph_epi16(U, A, R) \ | ||
| 960 | ((__m256i)__builtin_ia32_vcvttph2w256_round_mask( \ | ||
| 961 | (__v16hf)(A), (__v16hi)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 962 | (int)(R))) | ||
| 963 | |||
| 964 | #define _mm256_cvtt_roundps_epi32(A, R) \ | ||
| 965 | ((__m256i)__builtin_ia32_vcvttps2dq256_round_mask( \ | ||
| 966 | (__v8sf)(__m256)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 967 | (int)(R))) | ||
| 968 | |||
| 969 | #define _mm256_mask_cvtt_roundps_epi32(W, U, A, R) \ | ||
| 970 | ((__m256i)__builtin_ia32_vcvttps2dq256_round_mask( \ | ||
| 971 | (__v8sf)(__m256)(A), (__v8si)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 972 | |||
| 973 | #define _mm256_maskz_cvtt_roundps_epi32(U, A, R) \ | ||
| 974 | ((__m256i)__builtin_ia32_vcvttps2dq256_round_mask( \ | ||
| 975 | (__v8sf)(__m256)(A), (__v8si)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 976 | (int)(R))) | ||
| 977 | |||
| 978 | #define _mm256_cvtt_roundps_epi64(A, R) \ | ||
| 979 | ((__m256i)__builtin_ia32_vcvttps2qq256_round_mask( \ | ||
| 980 | (__v4sf)(__m128)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 981 | (int)(R))) | ||
| 982 | |||
| 983 | #define _mm256_mask_cvtt_roundps_epi64(W, U, A, R) \ | ||
| 984 | ((__m256i)__builtin_ia32_vcvttps2qq256_round_mask( \ | ||
| 985 | (__v4sf)(__m128)(A), (__v4di)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 986 | |||
| 987 | #define _mm256_maskz_cvtt_roundps_epi64(U, A, R) \ | ||
| 988 | ((__m256i)__builtin_ia32_vcvttps2qq256_round_mask( \ | ||
| 989 | (__v4sf)(__m128)(A), (__v4di)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 990 | (int)(R))) | ||
| 991 | |||
| 992 | #define _mm256_cvtt_roundps_epu32(A, R) \ | ||
| 993 | ((__m256i)__builtin_ia32_vcvttps2udq256_round_mask( \ | ||
| 994 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 995 | (int)(R))) | ||
| 996 | |||
| 997 | #define _mm256_mask_cvtt_roundps_epu32(W, U, A, R) \ | ||
| 998 | ((__m256i)__builtin_ia32_vcvttps2udq256_round_mask( \ | ||
| 999 | (__v8sf)(__m256)(A), (__v8su)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 1000 | |||
| 1001 | #define _mm256_maskz_cvtt_roundps_epu32(U, A, R) \ | ||
| 1002 | ((__m256i)__builtin_ia32_vcvttps2udq256_round_mask( \ | ||
| 1003 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 1004 | (int)(R))) | ||
| 1005 | |||
| 1006 | #define _mm256_cvtt_roundps_epu64(A, R) \ | ||
| 1007 | ((__m256i)__builtin_ia32_vcvttps2uqq256_round_mask( \ | ||
| 1008 | (__v4sf)(__m128)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 1009 | (int)(R))) | ||
| 1010 | |||
| 1011 | #define _mm256_mask_cvtt_roundps_epu64(W, U, A, R) \ | ||
| 1012 | ((__m256i)__builtin_ia32_vcvttps2uqq256_round_mask( \ | ||
| 1013 | (__v4sf)(__m128)(A), (__v4du)(__m256i)(W), (__mmask8)(U), (int)(R))) | ||
| 1014 | |||
| 1015 | #define _mm256_maskz_cvtt_roundps_epu64(U, A, R) \ | ||
| 1016 | ((__m256i)__builtin_ia32_vcvttps2uqq256_round_mask( \ | ||
| 1017 | (__v4sf)(__m128)(A), (__v4du)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 1018 | (int)(R))) | ||
| 1019 | |||
| 1020 | #define _mm256_cvt_roundepu32_ph(A, R) \ | ||
| 1021 | ((__m128h)__builtin_ia32_vcvtudq2ph256_round_mask( \ | ||
| 1022 | (__v8su)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 1023 | |||
| 1024 | #define _mm256_mask_cvt_roundepu32_ph(W, U, A, R) \ | ||
| 1025 | ((__m128h)__builtin_ia32_vcvtudq2ph256_round_mask((__v8su)(A), (__v8hf)(W), \ | ||
| 1026 | (__mmask8)(U), (int)(R))) | ||
| 1027 | |||
| 1028 | #define _mm256_maskz_cvt_roundepu32_ph(U, A, R) \ | ||
| 1029 | ((__m128h)__builtin_ia32_vcvtudq2ph256_round_mask( \ | ||
| 1030 | (__v8su)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 1031 | |||
| 1032 | #define _mm256_cvt_roundepu32_ps(A, R) \ | ||
| 1033 | ((__m256)__builtin_ia32_vcvtudq2ps256_round_mask( \ | ||
| 1034 | (__v8su)(__m256i)(A), (__v8sf)_mm256_setzero_ps(), (__mmask8)-1, \ | ||
| 1035 | (int)(R))) | ||
| 1036 | |||
| 1037 | #define _mm256_mask_cvt_roundepu32_ps(W, U, A, R) \ | ||
| 1038 | ((__m256)__builtin_ia32_vcvtudq2ps256_round_mask( \ | ||
| 1039 | (__v8su)(__m256i)(A), (__v8sf)(__m256)(W), (__mmask8)(U), (int)(R))) | ||
| 1040 | |||
| 1041 | #define _mm256_maskz_cvt_roundepu32_ps(U, A, R) \ | ||
| 1042 | ((__m256)__builtin_ia32_vcvtudq2ps256_round_mask( \ | ||
| 1043 | (__v8su)(__m256i)(A), (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), \ | ||
| 1044 | (int)(R))) | ||
| 1045 | |||
| 1046 | #define _mm256_cvt_roundepu64_pd(A, R) \ | ||
| 1047 | ((__m256d)__builtin_ia32_vcvtuqq2pd256_round_mask( \ | ||
| 1048 | (__v4du)(__m256i)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)-1, \ | ||
| 1049 | (int)(R))) | ||
| 1050 | |||
| 1051 | #define _mm256_mask_cvt_roundepu64_pd(W, U, A, R) \ | ||
| 1052 | ((__m256d)__builtin_ia32_vcvtuqq2pd256_round_mask( \ | ||
| 1053 | (__v4du)(__m256i)(A), (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 1054 | |||
| 1055 | #define _mm256_maskz_cvt_roundepu64_pd(U, A, R) \ | ||
| 1056 | ((__m256d)__builtin_ia32_vcvtuqq2pd256_round_mask( \ | ||
| 1057 | (__v4du)(__m256i)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)(U), \ | ||
| 1058 | (int)(R))) | ||
| 1059 | |||
| 1060 | #define _mm256_cvt_roundepu64_ph(A, R) \ | ||
| 1061 | ((__m128h)__builtin_ia32_vcvtuqq2ph256_round_mask( \ | ||
| 1062 | (__v4du)(A), (__v8hf)_mm_undefined_ph(), (__mmask8)(-1), (int)(R))) | ||
| 1063 | |||
| 1064 | #define _mm256_mask_cvt_roundepu64_ph(W, U, A, R) \ | ||
| 1065 | ((__m128h)__builtin_ia32_vcvtuqq2ph256_round_mask((__v4du)(A), (__v8hf)(W), \ | ||
| 1066 | (__mmask8)(U), (int)(R))) | ||
| 1067 | |||
| 1068 | #define _mm256_maskz_cvt_roundepu64_ph(U, A, R) \ | ||
| 1069 | ((__m128h)__builtin_ia32_vcvtuqq2ph256_round_mask( \ | ||
| 1070 | (__v4du)(A), (__v8hf)_mm_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 1071 | |||
| 1072 | #define _mm256_cvt_roundepu64_ps(A, R) \ | ||
| 1073 | ((__m128)__builtin_ia32_vcvtuqq2ps256_round_mask( \ | ||
| 1074 | (__v4du)(__m256i)(A), (__v4sf)_mm_setzero_ps(), (__mmask8)-1, (int)(R))) | ||
| 1075 | |||
| 1076 | #define _mm256_mask_cvt_roundepu64_ps(W, U, A, R) \ | ||
| 1077 | ((__m128)__builtin_ia32_vcvtuqq2ps256_round_mask( \ | ||
| 1078 | (__v4du)(__m256i)(A), (__v4sf)(__m128)(W), (__mmask8)(U), (int)(R))) | ||
| 1079 | |||
| 1080 | #define _mm256_maskz_cvt_roundepu64_ps(U, A, R) \ | ||
| 1081 | ((__m128)__builtin_ia32_vcvtuqq2ps256_round_mask((__v4du)(__m256i)(A), \ | ||
| 1082 | (__v4sf)_mm_setzero_ps(), \ | ||
| 1083 | (__mmask8)(U), (int)(R))) | ||
| 1084 | |||
| 1085 | #define _mm256_cvt_roundepu16_ph(A, R) \ | ||
| 1086 | ((__m256h)__builtin_ia32_vcvtuw2ph256_round_mask( \ | ||
| 1087 | (__v16hu)(A), (__v16hf)_mm256_undefined_ph(), (__mmask16)(-1), \ | ||
| 1088 | (int)(R))) | ||
| 1089 | |||
| 1090 | #define _mm256_mask_cvt_roundepu16_ph(W, U, A, R) \ | ||
| 1091 | ((__m256h)__builtin_ia32_vcvtuw2ph256_round_mask((__v16hu)(A), (__v16hf)(W), \ | ||
| 1092 | (__mmask16)(U), (int)(R))) | ||
| 1093 | |||
| 1094 | #define _mm256_maskz_cvt_roundepu16_ph(U, A, R) \ | ||
| 1095 | ((__m256h)__builtin_ia32_vcvtuw2ph256_round_mask( \ | ||
| 1096 | (__v16hu)(A), (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), (int)(R))) | ||
| 1097 | |||
| 1098 | #define _mm256_cvt_roundepi16_ph(A, R) \ | ||
| 1099 | ((__m256h)__builtin_ia32_vcvtw2ph256_round_mask( \ | ||
| 1100 | (__v16hi)(A), (__v16hf)_mm256_undefined_ph(), (__mmask16)(-1), \ | ||
| 1101 | (int)(R))) | ||
| 1102 | |||
| 1103 | #define _mm256_mask_cvt_roundepi16_ph(W, U, A, R) \ | ||
| 1104 | ((__m256h)__builtin_ia32_vcvtw2ph256_round_mask((__v16hi)(A), (__v16hf)(W), \ | ||
| 1105 | (__mmask16)(U), (int)(R))) | ||
| 1106 | |||
| 1107 | #define _mm256_maskz_cvt_roundepi16_ph(U, A, R) \ | ||
| 1108 | ((__m256h)__builtin_ia32_vcvtw2ph256_round_mask( \ | ||
| 1109 | (__v16hi)(A), (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), (int)(R))) | ||
| 1110 | |||
| 1111 | #define _mm256_div_round_pd(A, B, R) \ | ||
| 1112 | ((__m256d)__builtin_ia32_vdivpd256_round((__v4df)(__m256d)(A), \ | ||
| 1113 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 1114 | |||
| 1115 | #define _mm256_mask_div_round_pd(W, U, A, B, R) \ | ||
| 1116 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1117 | (__mmask8)(U), (__v4df)_mm256_div_round_pd((A), (B), (R)), \ | ||
| 1118 | (__v4df)(__m256d)(W))) | ||
| 1119 | |||
| 1120 | #define _mm256_maskz_div_round_pd(U, A, B, R) \ | ||
| 1121 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1122 | (__mmask8)(U), (__v4df)_mm256_div_round_pd((A), (B), (R)), \ | ||
| 1123 | (__v4df)_mm256_setzero_pd())) | ||
| 1124 | |||
| 1125 | #define _mm256_div_round_ph(A, B, R) \ | ||
| 1126 | ((__m256h)__builtin_ia32_vdivph256_round((__v16hf)(__m256h)(A), \ | ||
| 1127 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 1128 | |||
| 1129 | #define _mm256_mask_div_round_ph(W, U, A, B, R) \ | ||
| 1130 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1131 | (__mmask16)(U), (__v16hf)_mm256_div_round_ph((A), (B), (R)), \ | ||
| 1132 | (__v16hf)(__m256h)(W))) | ||
| 1133 | |||
| 1134 | #define _mm256_maskz_div_round_ph(U, A, B, R) \ | ||
| 1135 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1136 | (__mmask16)(U), (__v16hf)_mm256_div_round_ph((A), (B), (R)), \ | ||
| 1137 | (__v16hf)_mm256_setzero_ph())) | ||
| 1138 | |||
| 1139 | #define _mm256_div_round_ps(A, B, R) \ | ||
| 1140 | ((__m256)__builtin_ia32_vdivps256_round((__v8sf)(__m256)(A), \ | ||
| 1141 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 1142 | |||
| 1143 | #define _mm256_mask_div_round_ps(W, U, A, B, R) \ | ||
| 1144 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1145 | (__mmask8)(U), (__v8sf)_mm256_div_round_ps((A), (B), (R)), \ | ||
| 1146 | (__v8sf)(__m256)(W))) | ||
| 1147 | |||
| 1148 | #define _mm256_maskz_div_round_ps(U, A, B, R) \ | ||
| 1149 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1150 | (__mmask8)(U), (__v8sf)_mm256_div_round_ps((A), (B), (R)), \ | ||
| 1151 | (__v8sf)_mm256_setzero_ps())) | ||
| 1152 | |||
| 1153 | #define _mm256_fcmadd_round_pch(A, B, C, R) \ | ||
| 1154 | ((__m256h)__builtin_ia32_vfcmaddcph256_round_mask3( \ | ||
| 1155 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1156 | (__mmask8)-1, (int)(R))) | ||
| 1157 | |||
| 1158 | #define _mm256_mask_fcmadd_round_pch(A, U, B, C, R) \ | ||
| 1159 | ((__m256h)__builtin_ia32_vfcmaddcph256_round_mask( \ | ||
| 1160 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1161 | (__mmask8)(U), (int)(R))) | ||
| 1162 | |||
| 1163 | #define _mm256_mask3_fcmadd_round_pch(A, B, C, U, R) \ | ||
| 1164 | ((__m256h)__builtin_ia32_vfcmaddcph256_round_mask3( \ | ||
| 1165 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1166 | (__mmask8)(U), (int)(R))) | ||
| 1167 | |||
| 1168 | #define _mm256_maskz_fcmadd_round_pch(U, A, B, C, R) \ | ||
| 1169 | ((__m256h)__builtin_ia32_vfcmaddcph256_round_maskz( \ | ||
| 1170 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1171 | (__mmask8)(U), (int)(R))) | ||
| 1172 | |||
| 1173 | #define _mm256_cmul_round_pch(A, B, R) \ | ||
| 1174 | ((__m256h)__builtin_ia32_vfcmulcph256_round_mask( \ | ||
| 1175 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), \ | ||
| 1176 | (__v8sf)(__m256h)_mm256_undefined_ph(), (__mmask8)-1, (int)(R))) | ||
| 1177 | |||
| 1178 | #define _mm256_mask_cmul_round_pch(W, U, A, B, R) \ | ||
| 1179 | ((__m256h)__builtin_ia32_vfcmulcph256_round_mask( \ | ||
| 1180 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(W), \ | ||
| 1181 | (__mmask8)(U), (int)(R))) | ||
| 1182 | |||
| 1183 | #define _mm256_maskz_cmul_round_pch(U, A, B, R) \ | ||
| 1184 | ((__m256h)__builtin_ia32_vfcmulcph256_round_mask( \ | ||
| 1185 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), \ | ||
| 1186 | (__v8sf)(__m256h)_mm256_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 1187 | |||
| 1188 | #define _mm256_fixupimm_round_pd(A, B, C, imm, R) \ | ||
| 1189 | ((__m256d)__builtin_ia32_vfixupimmpd256_round_mask( \ | ||
| 1190 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4di)(__m256i)(C), \ | ||
| 1191 | (int)(imm), (__mmask8)-1, (int)(R))) | ||
| 1192 | |||
| 1193 | #define _mm256_mask_fixupimm_round_pd(A, U, B, C, imm, R) \ | ||
| 1194 | ((__m256d)__builtin_ia32_vfixupimmpd256_round_mask( \ | ||
| 1195 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4di)(__m256i)(C), \ | ||
| 1196 | (int)(imm), (__mmask8)(U), (int)(R))) | ||
| 1197 | |||
| 1198 | #define _mm256_maskz_fixupimm_round_pd(U, A, B, C, imm, R) \ | ||
| 1199 | ((__m256d)__builtin_ia32_vfixupimmpd256_round_maskz( \ | ||
| 1200 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4di)(__m256i)(C), \ | ||
| 1201 | (int)(imm), (__mmask8)(U), (int)(R))) | ||
| 1202 | |||
| 1203 | #define _mm256_fixupimm_round_ps(A, B, C, imm, R) \ | ||
| 1204 | ((__m256)__builtin_ia32_vfixupimmps256_round_mask( \ | ||
| 1205 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8si)(__m256i)(C), \ | ||
| 1206 | (int)(imm), (__mmask8)-1, (int)(R))) | ||
| 1207 | |||
| 1208 | #define _mm256_mask_fixupimm_round_ps(A, U, B, C, imm, R) \ | ||
| 1209 | ((__m256)__builtin_ia32_vfixupimmps256_round_mask( \ | ||
| 1210 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8si)(__m256i)(C), \ | ||
| 1211 | (int)(imm), (__mmask8)(U), (int)(R))) | ||
| 1212 | |||
| 1213 | #define _mm256_maskz_fixupimm_round_ps(U, A, B, C, imm, R) \ | ||
| 1214 | ((__m256)__builtin_ia32_vfixupimmps256_round_maskz( \ | ||
| 1215 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8si)(__m256i)(C), \ | ||
| 1216 | (int)(imm), (__mmask8)(U), (int)(R))) | ||
| 1217 | |||
| 1218 | #define _mm256_fmadd_round_pd(A, B, C, R) \ | ||
| 1219 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1220 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1221 | (__mmask8)-1, (int)(R))) | ||
| 1222 | |||
| 1223 | #define _mm256_mask_fmadd_round_pd(A, U, B, C, R) \ | ||
| 1224 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1225 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1226 | (__mmask8)(U), (int)(R))) | ||
| 1227 | |||
| 1228 | #define _mm256_mask3_fmadd_round_pd(A, B, C, U, R) \ | ||
| 1229 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask3( \ | ||
| 1230 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1231 | (__mmask8)(U), (int)(R))) | ||
| 1232 | |||
| 1233 | #define _mm256_maskz_fmadd_round_pd(U, A, B, C, R) \ | ||
| 1234 | ((__m256d)__builtin_ia32_vfmaddpd256_round_maskz( \ | ||
| 1235 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1236 | (__mmask8)(U), (int)(R))) | ||
| 1237 | |||
| 1238 | #define _mm256_fmsub_round_pd(A, B, C, R) \ | ||
| 1239 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1240 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1241 | (__mmask8)-1, (int)(R))) | ||
| 1242 | |||
| 1243 | #define _mm256_mask_fmsub_round_pd(A, U, B, C, R) \ | ||
| 1244 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1245 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1246 | (__mmask8)(U), (int)(R))) | ||
| 1247 | |||
| 1248 | #define _mm256_maskz_fmsub_round_pd(U, A, B, C, R) \ | ||
| 1249 | ((__m256d)__builtin_ia32_vfmaddpd256_round_maskz( \ | ||
| 1250 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1251 | (__mmask8)(U), (int)(R))) | ||
| 1252 | |||
| 1253 | #define _mm256_fnmadd_round_pd(A, B, C, R) \ | ||
| 1254 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1255 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1256 | (__mmask8)-1, (int)(R))) | ||
| 1257 | |||
| 1258 | #define _mm256_mask3_fnmadd_round_pd(A, B, C, U, R) \ | ||
| 1259 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask3( \ | ||
| 1260 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1261 | (__mmask8)(U), (int)(R))) | ||
| 1262 | |||
| 1263 | #define _mm256_maskz_fnmadd_round_pd(U, A, B, C, R) \ | ||
| 1264 | ((__m256d)__builtin_ia32_vfmaddpd256_round_maskz( \ | ||
| 1265 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1266 | (__mmask8)(U), (int)(R))) | ||
| 1267 | |||
| 1268 | #define _mm256_fnmsub_round_pd(A, B, C, R) \ | ||
| 1269 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1270 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1271 | (__mmask8)-1, (int)(R))) | ||
| 1272 | |||
| 1273 | #define _mm256_maskz_fnmsub_round_pd(U, A, B, C, R) \ | ||
| 1274 | ((__m256d)__builtin_ia32_vfmaddpd256_round_maskz( \ | ||
| 1275 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1276 | (__mmask8)(U), (int)(R))) | ||
| 1277 | |||
| 1278 | #define _mm256_fmadd_round_ph(A, B, C, R) \ | ||
| 1279 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1280 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1281 | (__mmask16)-1, (int)(R))) | ||
| 1282 | |||
| 1283 | #define _mm256_mask_fmadd_round_ph(A, U, B, C, R) \ | ||
| 1284 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1285 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1286 | (__mmask16)(U), (int)(R))) | ||
| 1287 | |||
| 1288 | #define _mm256_mask3_fmadd_round_ph(A, B, C, U, R) \ | ||
| 1289 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask3( \ | ||
| 1290 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1291 | (__mmask16)(U), (int)(R))) | ||
| 1292 | |||
| 1293 | #define _mm256_maskz_fmadd_round_ph(U, A, B, C, R) \ | ||
| 1294 | ((__m256h)__builtin_ia32_vfmaddph256_round_maskz( \ | ||
| 1295 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1296 | (__mmask16)(U), (int)(R))) | ||
| 1297 | |||
| 1298 | #define _mm256_fmsub_round_ph(A, B, C, R) \ | ||
| 1299 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1300 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1301 | (__mmask16)-1, (int)(R))) | ||
| 1302 | |||
| 1303 | #define _mm256_mask_fmsub_round_ph(A, U, B, C, R) \ | ||
| 1304 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1305 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1306 | (__mmask16)(U), (int)(R))) | ||
| 1307 | |||
| 1308 | #define _mm256_maskz_fmsub_round_ph(U, A, B, C, R) \ | ||
| 1309 | ((__m256h)__builtin_ia32_vfmaddph256_round_maskz( \ | ||
| 1310 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1311 | (__mmask16)(U), (int)(R))) | ||
| 1312 | |||
| 1313 | #define _mm256_fnmadd_round_ph(A, B, C, R) \ | ||
| 1314 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1315 | (__v16hf)(__m256h)(A), -(__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1316 | (__mmask16)-1, (int)(R))) | ||
| 1317 | |||
| 1318 | #define _mm256_mask3_fnmadd_round_ph(A, B, C, U, R) \ | ||
| 1319 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask3( \ | ||
| 1320 | -(__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1321 | (__mmask16)(U), (int)(R))) | ||
| 1322 | |||
| 1323 | #define _mm256_maskz_fnmadd_round_ph(U, A, B, C, R) \ | ||
| 1324 | ((__m256h)__builtin_ia32_vfmaddph256_round_maskz( \ | ||
| 1325 | -(__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1326 | (__mmask16)(U), (int)(R))) | ||
| 1327 | |||
| 1328 | #define _mm256_fnmsub_round_ph(A, B, C, R) \ | ||
| 1329 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1330 | (__v16hf)(__m256h)(A), -(__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1331 | (__mmask16)-1, (int)(R))) | ||
| 1332 | |||
| 1333 | #define _mm256_maskz_fnmsub_round_ph(U, A, B, C, R) \ | ||
| 1334 | ((__m256h)__builtin_ia32_vfmaddph256_round_maskz( \ | ||
| 1335 | -(__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1336 | (__mmask16)(U), (int)(R))) | ||
| 1337 | |||
| 1338 | #define _mm256_fmadd_round_ps(A, B, C, R) \ | ||
| 1339 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1340 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1341 | (__mmask8)-1, (int)(R))) | ||
| 1342 | |||
| 1343 | #define _mm256_mask_fmadd_round_ps(A, U, B, C, R) \ | ||
| 1344 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1345 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1346 | (__mmask8)(U), (int)(R))) | ||
| 1347 | |||
| 1348 | #define _mm256_mask3_fmadd_round_ps(A, B, C, U, R) \ | ||
| 1349 | ((__m256)__builtin_ia32_vfmaddps256_round_mask3( \ | ||
| 1350 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1351 | (__mmask8)(U), (int)(R))) | ||
| 1352 | |||
| 1353 | #define _mm256_maskz_fmadd_round_ps(U, A, B, C, R) \ | ||
| 1354 | ((__m256)__builtin_ia32_vfmaddps256_round_maskz( \ | ||
| 1355 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1356 | (__mmask8)(U), (int)(R))) | ||
| 1357 | |||
| 1358 | #define _mm256_fmsub_round_ps(A, B, C, R) \ | ||
| 1359 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1360 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1361 | (__mmask8)-1, (int)(R))) | ||
| 1362 | |||
| 1363 | #define _mm256_mask_fmsub_round_ps(A, U, B, C, R) \ | ||
| 1364 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1365 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1366 | (__mmask8)(U), (int)(R))) | ||
| 1367 | |||
| 1368 | #define _mm256_maskz_fmsub_round_ps(U, A, B, C, R) \ | ||
| 1369 | ((__m256)__builtin_ia32_vfmaddps256_round_maskz( \ | ||
| 1370 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1371 | (__mmask8)(U), (int)(R))) | ||
| 1372 | |||
| 1373 | #define _mm256_fnmadd_round_ps(A, B, C, R) \ | ||
| 1374 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1375 | (__v8sf)(__m256)(A), -(__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1376 | (__mmask8)-1, (int)(R))) | ||
| 1377 | |||
| 1378 | #define _mm256_mask3_fnmadd_round_ps(A, B, C, U, R) \ | ||
| 1379 | ((__m256)__builtin_ia32_vfmaddps256_round_mask3( \ | ||
| 1380 | -(__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1381 | (__mmask8)(U), (int)(R))) | ||
| 1382 | |||
| 1383 | #define _mm256_maskz_fnmadd_round_ps(U, A, B, C, R) \ | ||
| 1384 | ((__m256)__builtin_ia32_vfmaddps256_round_maskz( \ | ||
| 1385 | -(__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1386 | (__mmask8)(U), (int)(R))) | ||
| 1387 | |||
| 1388 | #define _mm256_fnmsub_round_ps(A, B, C, R) \ | ||
| 1389 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1390 | (__v8sf)(__m256)(A), -(__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1391 | (__mmask8)-1, (int)(R))) | ||
| 1392 | |||
| 1393 | #define _mm256_maskz_fnmsub_round_ps(U, A, B, C, R) \ | ||
| 1394 | ((__m256)__builtin_ia32_vfmaddps256_round_maskz( \ | ||
| 1395 | -(__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1396 | (__mmask8)(U), (int)(R))) | ||
| 1397 | |||
| 1398 | #define _mm256_fmadd_round_pch(A, B, C, R) \ | ||
| 1399 | ((__m256h)__builtin_ia32_vfmaddcph256_round_mask3( \ | ||
| 1400 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1401 | (__mmask8)-1, (int)(R))) | ||
| 1402 | |||
| 1403 | #define _mm256_mask_fmadd_round_pch(A, U, B, C, R) \ | ||
| 1404 | ((__m256h)__builtin_ia32_vfmaddcph256_round_mask( \ | ||
| 1405 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1406 | (__mmask8)(U), (int)(R))) | ||
| 1407 | |||
| 1408 | #define _mm256_mask3_fmadd_round_pch(A, B, C, U, R) \ | ||
| 1409 | ((__m256h)__builtin_ia32_vfmaddcph256_round_mask3( \ | ||
| 1410 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1411 | (__mmask8)(U), (int)(R))) | ||
| 1412 | |||
| 1413 | #define _mm256_maskz_fmadd_round_pch(U, A, B, C, R) \ | ||
| 1414 | ((__m256h)__builtin_ia32_vfmaddcph256_round_maskz( \ | ||
| 1415 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(C), \ | ||
| 1416 | (__mmask8)(U), (int)(R))) | ||
| 1417 | |||
| 1418 | #define _mm256_fmaddsub_round_pd(A, B, C, R) \ | ||
| 1419 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_mask( \ | ||
| 1420 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1421 | (__mmask8)-1, (int)(R))) | ||
| 1422 | |||
| 1423 | #define _mm256_mask_fmaddsub_round_pd(A, U, B, C, R) \ | ||
| 1424 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_mask( \ | ||
| 1425 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1426 | (__mmask8)(U), (int)(R))) | ||
| 1427 | |||
| 1428 | #define _mm256_mask3_fmaddsub_round_pd(A, B, C, U, R) \ | ||
| 1429 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_mask3( \ | ||
| 1430 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1431 | (__mmask8)(U), (int)(R))) | ||
| 1432 | |||
| 1433 | #define _mm256_maskz_fmaddsub_round_pd(U, A, B, C, R) \ | ||
| 1434 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_maskz( \ | ||
| 1435 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1436 | (__mmask8)(U), (int)(R))) | ||
| 1437 | |||
| 1438 | #define _mm256_fmsubadd_round_pd(A, B, C, R) \ | ||
| 1439 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_mask( \ | ||
| 1440 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1441 | (__mmask8)-1, (int)(R))) | ||
| 1442 | |||
| 1443 | #define _mm256_mask_fmsubadd_round_pd(A, U, B, C, R) \ | ||
| 1444 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_mask( \ | ||
| 1445 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1446 | (__mmask8)(U), (int)(R))) | ||
| 1447 | |||
| 1448 | #define _mm256_maskz_fmsubadd_round_pd(U, A, B, C, R) \ | ||
| 1449 | ((__m256d)__builtin_ia32_vfmaddsubpd256_round_maskz( \ | ||
| 1450 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1451 | (__mmask8)(U), (int)(R))) | ||
| 1452 | |||
| 1453 | #define _mm256_fmaddsub_round_ph(A, B, C, R) \ | ||
| 1454 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_mask( \ | ||
| 1455 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1456 | (__mmask16)-1, (int)(R))) | ||
| 1457 | |||
| 1458 | #define _mm256_mask_fmaddsub_round_ph(A, U, B, C, R) \ | ||
| 1459 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_mask( \ | ||
| 1460 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1461 | (__mmask16)(U), (int)(R))) | ||
| 1462 | |||
| 1463 | #define _mm256_mask3_fmaddsub_round_ph(A, B, C, U, R) \ | ||
| 1464 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_mask3( \ | ||
| 1465 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1466 | (__mmask16)(U), (int)(R))) | ||
| 1467 | |||
| 1468 | #define _mm256_maskz_fmaddsub_round_ph(U, A, B, C, R) \ | ||
| 1469 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_maskz( \ | ||
| 1470 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1471 | (__mmask16)(U), (int)(R))) | ||
| 1472 | |||
| 1473 | #define _mm256_fmsubadd_round_ph(A, B, C, R) \ | ||
| 1474 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_mask( \ | ||
| 1475 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1476 | (__mmask16)-1, (int)(R))) | ||
| 1477 | |||
| 1478 | #define _mm256_mask_fmsubadd_round_ph(A, U, B, C, R) \ | ||
| 1479 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_mask( \ | ||
| 1480 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1481 | (__mmask16)(U), (int)(R))) | ||
| 1482 | |||
| 1483 | #define _mm256_maskz_fmsubadd_round_ph(U, A, B, C, R) \ | ||
| 1484 | ((__m256h)__builtin_ia32_vfmaddsubph256_round_maskz( \ | ||
| 1485 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1486 | (__mmask16)(U), (int)(R))) | ||
| 1487 | |||
| 1488 | #define _mm256_fmaddsub_round_ps(A, B, C, R) \ | ||
| 1489 | ((__m256)__builtin_ia32_vfmaddsubps256_round_mask( \ | ||
| 1490 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1491 | (__mmask8)-1, (int)(R))) | ||
| 1492 | |||
| 1493 | #define _mm256_mask_fmaddsub_round_ps(A, U, B, C, R) \ | ||
| 1494 | ((__m256)__builtin_ia32_vfmaddsubps256_round_mask( \ | ||
| 1495 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1496 | (__mmask8)(U), (int)(R))) | ||
| 1497 | |||
| 1498 | #define _mm256_mask3_fmaddsub_round_ps(A, B, C, U, R) \ | ||
| 1499 | ((__m256)__builtin_ia32_vfmaddsubps256_round_mask3( \ | ||
| 1500 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1501 | (__mmask8)(U), (int)(R))) | ||
| 1502 | |||
| 1503 | #define _mm256_maskz_fmaddsub_round_ps(U, A, B, C, R) \ | ||
| 1504 | ((__m256)__builtin_ia32_vfmaddsubps256_round_maskz( \ | ||
| 1505 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1506 | (__mmask8)(U), (int)(R))) | ||
| 1507 | |||
| 1508 | #define _mm256_fmsubadd_round_ps(A, B, C, R) \ | ||
| 1509 | ((__m256)__builtin_ia32_vfmaddsubps256_round_mask( \ | ||
| 1510 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1511 | (__mmask8)-1, (int)(R))) | ||
| 1512 | |||
| 1513 | #define _mm256_mask_fmsubadd_round_ps(A, U, B, C, R) \ | ||
| 1514 | ((__m256)__builtin_ia32_vfmaddsubps256_round_mask( \ | ||
| 1515 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1516 | (__mmask8)(U), (int)(R))) | ||
| 1517 | |||
| 1518 | #define _mm256_maskz_fmsubadd_round_ps(U, A, B, C, R) \ | ||
| 1519 | ((__m256)__builtin_ia32_vfmaddsubps256_round_maskz( \ | ||
| 1520 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1521 | (__mmask8)(U), (int)(R))) | ||
| 1522 | #define _mm256_mask3_fmsub_round_pd(A, B, C, U, R) \ | ||
| 1523 | ((__m256d)__builtin_ia32_vfmsubpd256_round_mask3( \ | ||
| 1524 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1525 | (__mmask8)(U), (int)(R))) | ||
| 1526 | |||
| 1527 | #define _mm256_mask3_fmsubadd_round_pd(A, B, C, U, R) \ | ||
| 1528 | ((__m256d)__builtin_ia32_vfmsubaddpd256_round_mask3( \ | ||
| 1529 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1530 | (__mmask8)(U), (int)(R))) | ||
| 1531 | |||
| 1532 | #define _mm256_mask_fnmadd_round_pd(A, U, B, C, R) \ | ||
| 1533 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1534 | (__v4df)(__m256d)(A), -(__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1535 | (__mmask8)(U), (int)(R))) | ||
| 1536 | |||
| 1537 | #define _mm256_mask_fnmsub_round_pd(A, U, B, C, R) \ | ||
| 1538 | ((__m256d)__builtin_ia32_vfmaddpd256_round_mask( \ | ||
| 1539 | (__v4df)(__m256d)(A), -(__v4df)(__m256d)(B), -(__v4df)(__m256d)(C), \ | ||
| 1540 | (__mmask8)(U), (int)(R))) | ||
| 1541 | |||
| 1542 | #define _mm256_mask3_fnmsub_round_pd(A, B, C, U, R) \ | ||
| 1543 | ((__m256d)__builtin_ia32_vfmsubpd256_round_mask3( \ | ||
| 1544 | -(__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(C), \ | ||
| 1545 | (__mmask8)(U), (int)(R))) | ||
| 1546 | |||
| 1547 | #define _mm256_mask3_fmsub_round_ph(A, B, C, U, R) \ | ||
| 1548 | ((__m256h)__builtin_ia32_vfmsubph256_round_mask3( \ | ||
| 1549 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1550 | (__mmask16)(U), (int)(R))) | ||
| 1551 | |||
| 1552 | #define _mm256_mask3_fmsubadd_round_ph(A, B, C, U, R) \ | ||
| 1553 | ((__m256h)__builtin_ia32_vfmsubaddph256_round_mask3( \ | ||
| 1554 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1555 | (__mmask16)(U), (int)(R))) | ||
| 1556 | |||
| 1557 | #define _mm256_mask_fnmadd_round_ph(A, U, B, C, R) \ | ||
| 1558 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1559 | (__v16hf)(__m256h)(A), -(__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1560 | (__mmask16)(U), (int)(R))) | ||
| 1561 | |||
| 1562 | #define _mm256_mask_fnmsub_round_ph(A, U, B, C, R) \ | ||
| 1563 | ((__m256h)__builtin_ia32_vfmaddph256_round_mask( \ | ||
| 1564 | (__v16hf)(__m256h)(A), -(__v16hf)(__m256h)(B), -(__v16hf)(__m256h)(C), \ | ||
| 1565 | (__mmask16)(U), (int)(R))) | ||
| 1566 | |||
| 1567 | #define _mm256_mask3_fnmsub_round_ph(A, B, C, U, R) \ | ||
| 1568 | ((__m256h)__builtin_ia32_vfmsubph256_round_mask3( \ | ||
| 1569 | -(__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(C), \ | ||
| 1570 | (__mmask16)(U), (int)(R))) | ||
| 1571 | |||
| 1572 | #define _mm256_mask3_fmsub_round_ps(A, B, C, U, R) \ | ||
| 1573 | ((__m256)__builtin_ia32_vfmsubps256_round_mask3( \ | ||
| 1574 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1575 | (__mmask8)(U), (int)(R))) | ||
| 1576 | |||
| 1577 | #define _mm256_mask3_fmsubadd_round_ps(A, B, C, U, R) \ | ||
| 1578 | ((__m256)__builtin_ia32_vfmsubaddps256_round_mask3( \ | ||
| 1579 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1580 | (__mmask8)(U), (int)(R))) | ||
| 1581 | |||
| 1582 | #define _mm256_mask_fnmadd_round_ps(A, U, B, C, R) \ | ||
| 1583 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1584 | (__v8sf)(__m256)(A), -(__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1585 | (__mmask8)(U), (int)(R))) | ||
| 1586 | |||
| 1587 | #define _mm256_mask_fnmsub_round_ps(A, U, B, C, R) \ | ||
| 1588 | ((__m256)__builtin_ia32_vfmaddps256_round_mask( \ | ||
| 1589 | (__v8sf)(__m256)(A), -(__v8sf)(__m256)(B), -(__v8sf)(__m256)(C), \ | ||
| 1590 | (__mmask8)(U), (int)(R))) | ||
| 1591 | |||
| 1592 | #define _mm256_mask3_fnmsub_round_ps(A, B, C, U, R) \ | ||
| 1593 | ((__m256)__builtin_ia32_vfmsubps256_round_mask3( \ | ||
| 1594 | -(__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(C), \ | ||
| 1595 | (__mmask8)(U), (int)(R))) | ||
| 1596 | |||
| 1597 | #define _mm256_mul_round_pch(A, B, R) \ | ||
| 1598 | ((__m256h)__builtin_ia32_vfmulcph256_round_mask( \ | ||
| 1599 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), \ | ||
| 1600 | (__v8sf)(__m256h)_mm256_undefined_ph(), (__mmask8)-1, (int)(R))) | ||
| 1601 | |||
| 1602 | #define _mm256_mask_mul_round_pch(W, U, A, B, R) \ | ||
| 1603 | ((__m256h)__builtin_ia32_vfmulcph256_round_mask( \ | ||
| 1604 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), (__v8sf)(__m256h)(W), \ | ||
| 1605 | (__mmask8)(U), (int)(R))) | ||
| 1606 | |||
| 1607 | #define _mm256_maskz_mul_round_pch(U, A, B, R) \ | ||
| 1608 | ((__m256h)__builtin_ia32_vfmulcph256_round_mask( \ | ||
| 1609 | (__v8sf)(__m256h)(A), (__v8sf)(__m256h)(B), \ | ||
| 1610 | (__v8sf)(__m256h)_mm256_setzero_ph(), (__mmask8)(U), (int)(R))) | ||
| 1611 | |||
| 1612 | #define _mm256_getexp_round_pd(A, R) \ | ||
| 1613 | ((__m256d)__builtin_ia32_vgetexppd256_round_mask( \ | ||
| 1614 | (__v4df)(__m256d)(A), (__v4df)_mm256_undefined_pd(), (__mmask8)-1, \ | ||
| 1615 | (int)(R))) | ||
| 1616 | |||
| 1617 | #define _mm256_mask_getexp_round_pd(W, U, A, R) \ | ||
| 1618 | ((__m256d)__builtin_ia32_vgetexppd256_round_mask( \ | ||
| 1619 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 1620 | |||
| 1621 | #define _mm256_maskz_getexp_round_pd(U, A, R) \ | ||
| 1622 | ((__m256d)__builtin_ia32_vgetexppd256_round_mask( \ | ||
| 1623 | (__v4df)(__m256d)(A), (__v4df)_mm256_setzero_pd(), (__mmask8)(U), \ | ||
| 1624 | (int)(R))) | ||
| 1625 | |||
| 1626 | #define _mm256_getexp_round_ph(A, R) \ | ||
| 1627 | ((__m256h)__builtin_ia32_vgetexpph256_round_mask( \ | ||
| 1628 | (__v16hf)(__m256h)(A), (__v16hf)_mm256_undefined_ph(), (__mmask16)-1, \ | ||
| 1629 | (int)(R))) | ||
| 1630 | |||
| 1631 | #define _mm256_mask_getexp_round_ph(W, U, A, R) \ | ||
| 1632 | ((__m256h)__builtin_ia32_vgetexpph256_round_mask( \ | ||
| 1633 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(W), (__mmask16)(U), (int)(R))) | ||
| 1634 | |||
| 1635 | #define _mm256_maskz_getexp_round_ph(U, A, R) \ | ||
| 1636 | ((__m256h)__builtin_ia32_vgetexpph256_round_mask( \ | ||
| 1637 | (__v16hf)(__m256h)(A), (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), \ | ||
| 1638 | (int)(R))) | ||
| 1639 | |||
| 1640 | #define _mm256_getexp_round_ps(A, R) \ | ||
| 1641 | ((__m256)__builtin_ia32_vgetexpps256_round_mask( \ | ||
| 1642 | (__v8sf)(__m256)(A), (__v8sf)_mm256_undefined_ps(), (__mmask8)-1, \ | ||
| 1643 | (int)(R))) | ||
| 1644 | |||
| 1645 | #define _mm256_mask_getexp_round_ps(W, U, A, R) \ | ||
| 1646 | ((__m256)__builtin_ia32_vgetexpps256_round_mask( \ | ||
| 1647 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(W), (__mmask8)(U), (int)(R))) | ||
| 1648 | |||
| 1649 | #define _mm256_maskz_getexp_round_ps(U, A, R) \ | ||
| 1650 | ((__m256)__builtin_ia32_vgetexpps256_round_mask((__v8sf)(__m256)(A), \ | ||
| 1651 | (__v8sf)_mm256_setzero_ps(), \ | ||
| 1652 | (__mmask8)(U), (int)(R))) | ||
| 1653 | |||
| 1654 | #define _mm256_getmant_round_pd(A, B, C, R) \ | ||
| 1655 | ((__m256d)__builtin_ia32_vgetmantpd256_round_mask( \ | ||
| 1656 | (__v4df)(__m256d)(A), (int)(((C) << 2) | (B)), \ | ||
| 1657 | (__v4df)_mm256_undefined_pd(), (__mmask8)-1, (int)(R))) | ||
| 1658 | |||
| 1659 | #define _mm256_mask_getmant_round_pd(W, U, A, B, C, R) \ | ||
| 1660 | ((__m256d)__builtin_ia32_vgetmantpd256_round_mask( \ | ||
| 1661 | (__v4df)(__m256d)(A), (int)(((C) << 2) | (B)), (__v4df)(__m256d)(W), \ | ||
| 1662 | (__mmask8)(U), (int)(R))) | ||
| 1663 | |||
| 1664 | #define _mm256_maskz_getmant_round_pd(U, A, B, C, R) \ | ||
| 1665 | ((__m256d)__builtin_ia32_vgetmantpd256_round_mask( \ | ||
| 1666 | (__v4df)(__m256d)(A), (int)(((C) << 2) | (B)), \ | ||
| 1667 | (__v4df)_mm256_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 1668 | |||
| 1669 | #define _mm256_getmant_round_ph(A, B, C, R) \ | ||
| 1670 | ((__m256h)__builtin_ia32_vgetmantph256_round_mask( \ | ||
| 1671 | (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)), \ | ||
| 1672 | (__v16hf)_mm256_undefined_ph(), (__mmask16)-1, (int)(R))) | ||
| 1673 | |||
| 1674 | #define _mm256_mask_getmant_round_ph(W, U, A, B, C, R) \ | ||
| 1675 | ((__m256h)__builtin_ia32_vgetmantph256_round_mask( \ | ||
| 1676 | (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)), (__v16hf)(__m256h)(W), \ | ||
| 1677 | (__mmask16)(U), (int)(R))) | ||
| 1678 | |||
| 1679 | #define _mm256_maskz_getmant_round_ph(U, A, B, C, R) \ | ||
| 1680 | ((__m256h)__builtin_ia32_vgetmantph256_round_mask( \ | ||
| 1681 | (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)), \ | ||
| 1682 | (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), (int)(R))) | ||
| 1683 | |||
| 1684 | #define _mm256_getmant_round_ps(A, B, C, R) \ | ||
| 1685 | ((__m256)__builtin_ia32_vgetmantps256_round_mask( \ | ||
| 1686 | (__v8sf)(__m256)(A), (int)(((C) << 2) | (B)), \ | ||
| 1687 | (__v8sf)_mm256_undefined_ps(), (__mmask8)-1, (int)(R))) | ||
| 1688 | |||
| 1689 | #define _mm256_mask_getmant_round_ps(W, U, A, B, C, R) \ | ||
| 1690 | ((__m256)__builtin_ia32_vgetmantps256_round_mask( \ | ||
| 1691 | (__v8sf)(__m256)(A), (int)(((C) << 2) | (B)), (__v8sf)(__m256)(W), \ | ||
| 1692 | (__mmask8)(U), (int)(R))) | ||
| 1693 | |||
| 1694 | #define _mm256_maskz_getmant_round_ps(U, A, B, C, R) \ | ||
| 1695 | ((__m256)__builtin_ia32_vgetmantps256_round_mask( \ | ||
| 1696 | (__v8sf)(__m256)(A), (int)(((C) << 2) | (B)), \ | ||
| 1697 | (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), (int)(R))) | ||
| 1698 | |||
| 1699 | #define _mm256_max_round_pd(A, B, R) \ | ||
| 1700 | ((__m256d)__builtin_ia32_vmaxpd256_round((__v4df)(__m256d)(A), \ | ||
| 1701 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 1702 | |||
| 1703 | #define _mm256_mask_max_round_pd(W, U, A, B, R) \ | ||
| 1704 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1705 | (__mmask8)(U), (__v4df)_mm256_max_round_pd((A), (B), (R)), \ | ||
| 1706 | (__v4df)(__m256d)(W))) | ||
| 1707 | |||
| 1708 | #define _mm256_maskz_max_round_pd(U, A, B, R) \ | ||
| 1709 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1710 | (__mmask8)(U), (__v4df)_mm256_max_round_pd((A), (B), (R)), \ | ||
| 1711 | (__v4df)_mm256_setzero_pd())) | ||
| 1712 | |||
| 1713 | #define _mm256_max_round_ph(A, B, R) \ | ||
| 1714 | ((__m256h)__builtin_ia32_vmaxph256_round((__v16hf)(__m256h)(A), \ | ||
| 1715 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 1716 | |||
| 1717 | #define _mm256_mask_max_round_ph(W, U, A, B, R) \ | ||
| 1718 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1719 | (__mmask16)(U), (__v16hf)_mm256_max_round_ph((A), (B), (R)), \ | ||
| 1720 | (__v16hf)(__m256h)(W))) | ||
| 1721 | |||
| 1722 | #define _mm256_maskz_max_round_ph(U, A, B, R) \ | ||
| 1723 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1724 | (__mmask16)(U), (__v16hf)_mm256_max_round_ph((A), (B), (R)), \ | ||
| 1725 | (__v16hf)_mm256_setzero_ph())) | ||
| 1726 | |||
| 1727 | #define _mm256_max_round_ps(A, B, R) \ | ||
| 1728 | ((__m256)__builtin_ia32_vmaxps256_round((__v8sf)(__m256)(A), \ | ||
| 1729 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 1730 | |||
| 1731 | #define _mm256_mask_max_round_ps(W, U, A, B, R) \ | ||
| 1732 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1733 | (__mmask8)(U), (__v8sf)_mm256_max_round_ps((A), (B), (R)), \ | ||
| 1734 | (__v8sf)(__m256)(W))) | ||
| 1735 | |||
| 1736 | #define _mm256_maskz_max_round_ps(U, A, B, R) \ | ||
| 1737 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1738 | (__mmask8)(U), (__v8sf)_mm256_max_round_ps((A), (B), (R)), \ | ||
| 1739 | (__v8sf)_mm256_setzero_ps())) | ||
| 1740 | |||
| 1741 | #define _mm256_min_round_pd(A, B, R) \ | ||
| 1742 | ((__m256d)__builtin_ia32_vminpd256_round((__v4df)(__m256d)(A), \ | ||
| 1743 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 1744 | |||
| 1745 | #define _mm256_mask_min_round_pd(W, U, A, B, R) \ | ||
| 1746 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1747 | (__mmask8)(U), (__v4df)_mm256_min_round_pd((A), (B), (R)), \ | ||
| 1748 | (__v4df)(__m256d)(W))) | ||
| 1749 | |||
| 1750 | #define _mm256_maskz_min_round_pd(U, A, B, R) \ | ||
| 1751 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1752 | (__mmask8)(U), (__v4df)_mm256_min_round_pd((A), (B), (R)), \ | ||
| 1753 | (__v4df)_mm256_setzero_pd())) | ||
| 1754 | |||
| 1755 | #define _mm256_min_round_ph(A, B, R) \ | ||
| 1756 | ((__m256h)__builtin_ia32_vminph256_round((__v16hf)(__m256h)(A), \ | ||
| 1757 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 1758 | |||
| 1759 | #define _mm256_mask_min_round_ph(W, U, A, B, R) \ | ||
| 1760 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1761 | (__mmask16)(U), (__v16hf)_mm256_min_round_ph((A), (B), (R)), \ | ||
| 1762 | (__v16hf)(__m256h)(W))) | ||
| 1763 | |||
| 1764 | #define _mm256_maskz_min_round_ph(U, A, B, R) \ | ||
| 1765 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1766 | (__mmask16)(U), (__v16hf)_mm256_min_round_ph((A), (B), (R)), \ | ||
| 1767 | (__v16hf)_mm256_setzero_ph())) | ||
| 1768 | |||
| 1769 | #define _mm256_min_round_ps(A, B, R) \ | ||
| 1770 | ((__m256)__builtin_ia32_vminps256_round((__v8sf)(__m256)(A), \ | ||
| 1771 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 1772 | |||
| 1773 | #define _mm256_mask_min_round_ps(W, U, A, B, R) \ | ||
| 1774 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1775 | (__mmask8)(U), (__v8sf)_mm256_min_round_ps((A), (B), (R)), \ | ||
| 1776 | (__v8sf)(__m256)(W))) | ||
| 1777 | |||
| 1778 | #define _mm256_maskz_min_round_ps(U, A, B, R) \ | ||
| 1779 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1780 | (__mmask8)(U), (__v8sf)_mm256_min_round_ps((A), (B), (R)), \ | ||
| 1781 | (__v8sf)_mm256_setzero_ps())) | ||
| 1782 | |||
| 1783 | #define _mm256_mul_round_pd(A, B, R) \ | ||
| 1784 | ((__m256d)__builtin_ia32_vmulpd256_round((__v4df)(__m256d)(A), \ | ||
| 1785 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 1786 | |||
| 1787 | #define _mm256_mask_mul_round_pd(W, U, A, B, R) \ | ||
| 1788 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1789 | (__mmask8)(U), (__v4df)_mm256_mul_round_pd((A), (B), (R)), \ | ||
| 1790 | (__v4df)(__m256d)(W))) | ||
| 1791 | |||
| 1792 | #define _mm256_maskz_mul_round_pd(U, A, B, R) \ | ||
| 1793 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1794 | (__mmask8)(U), (__v4df)_mm256_mul_round_pd((A), (B), (R)), \ | ||
| 1795 | (__v4df)_mm256_setzero_pd())) | ||
| 1796 | |||
| 1797 | #define _mm256_mul_round_ph(A, B, R) \ | ||
| 1798 | ((__m256h)__builtin_ia32_vmulph256_round((__v16hf)(__m256h)(A), \ | ||
| 1799 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 1800 | |||
| 1801 | #define _mm256_mask_mul_round_ph(W, U, A, B, R) \ | ||
| 1802 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1803 | (__mmask16)(U), (__v16hf)_mm256_mul_round_ph((A), (B), (R)), \ | ||
| 1804 | (__v16hf)(__m256h)(W))) | ||
| 1805 | |||
| 1806 | #define _mm256_maskz_mul_round_ph(U, A, B, R) \ | ||
| 1807 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 1808 | (__mmask16)(U), (__v16hf)_mm256_mul_round_ph((A), (B), (R)), \ | ||
| 1809 | (__v16hf)_mm256_setzero_ph())) | ||
| 1810 | |||
| 1811 | #define _mm256_mul_round_ps(A, B, R) \ | ||
| 1812 | ((__m256)__builtin_ia32_vmulps256_round((__v8sf)(__m256)(A), \ | ||
| 1813 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 1814 | |||
| 1815 | #define _mm256_mask_mul_round_ps(W, U, A, B, R) \ | ||
| 1816 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1817 | (__mmask8)(U), (__v8sf)_mm256_mul_round_ps((A), (B), (R)), \ | ||
| 1818 | (__v8sf)(__m256)(W))) | ||
| 1819 | |||
| 1820 | #define _mm256_maskz_mul_round_ps(U, A, B, R) \ | ||
| 1821 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 1822 | (__mmask8)(U), (__v8sf)_mm256_mul_round_ps((A), (B), (R)), \ | ||
| 1823 | (__v8sf)_mm256_setzero_ps())) | ||
| 1824 | |||
| 1825 | #define _mm256_range_round_pd(A, B, C, R) \ | ||
| 1826 | ((__m256d)__builtin_ia32_vrangepd256_round_mask( \ | ||
| 1827 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 1828 | (__v4df)_mm256_setzero_pd(), (__mmask8)-1, (int)(R))) | ||
| 1829 | |||
| 1830 | #define _mm256_mask_range_round_pd(W, U, A, B, C, R) \ | ||
| 1831 | ((__m256d)__builtin_ia32_vrangepd256_round_mask( \ | ||
| 1832 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 1833 | (__v4df)(__m256d)(W), (__mmask8)(U), (int)(R))) | ||
| 1834 | |||
| 1835 | #define _mm256_maskz_range_round_pd(U, A, B, C, R) \ | ||
| 1836 | ((__m256d)__builtin_ia32_vrangepd256_round_mask( \ | ||
| 1837 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (int)(C), \ | ||
| 1838 | (__v4df)_mm256_setzero_pd(), (__mmask8)(U), (int)(R))) | ||
| 1839 | |||
| 1840 | #define _mm256_range_round_ps(A, B, C, R) \ | ||
| 1841 | ((__m256)__builtin_ia32_vrangeps256_round_mask( \ | ||
| 1842 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 1843 | (__v8sf)_mm256_setzero_ps(), (__mmask8)-1, (int)(R))) | ||
| 1844 | |||
| 1845 | #define _mm256_mask_range_round_ps(W, U, A, B, C, R) \ | ||
| 1846 | ((__m256)__builtin_ia32_vrangeps256_round_mask( \ | ||
| 1847 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), (__v8sf)(__m256)(W), \ | ||
| 1848 | (__mmask8)(U), (int)(R))) | ||
| 1849 | |||
| 1850 | #define _mm256_maskz_range_round_ps(U, A, B, C, R) \ | ||
| 1851 | ((__m256)__builtin_ia32_vrangeps256_round_mask( \ | ||
| 1852 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (int)(C), \ | ||
| 1853 | (__v8sf)_mm256_setzero_ps(), (__mmask8)(U), (int)(R))) | ||
| 1854 | |||
| 1855 | #define _mm256_reduce_round_pd(A, B, R) \ | ||
| 1856 | ((__m256d)__builtin_ia32_vreducepd256_round_mask( \ | ||
| 1857 | (__v4df)(__m256d)(A), (int)(B), (__v4df)_mm256_setzero_pd(), \ | ||
| 1858 | (__mmask8)-1, (int)(R))) | ||
| 1859 | |||
| 1860 | #define _mm256_mask_reduce_round_pd(W, U, A, B, R) \ | ||
| 1861 | ((__m256d)__builtin_ia32_vreducepd256_round_mask( \ | ||
| 1862 | (__v4df)(__m256d)(A), (int)(B), (__v4df)(__m256d)(W), (__mmask8)(U), \ | ||
| 1863 | (int)(R))) | ||
| 1864 | |||
| 1865 | #define _mm256_maskz_reduce_round_pd(U, A, B, R) \ | ||
| 1866 | ((__m256d)__builtin_ia32_vreducepd256_round_mask( \ | ||
| 1867 | (__v4df)(__m256d)(A), (int)(B), (__v4df)_mm256_setzero_pd(), \ | ||
| 1868 | (__mmask8)(U), (int)(R))) | ||
| 1869 | |||
| 1870 | #define _mm256_mask_reduce_round_ph(W, U, A, imm, R) \ | ||
| 1871 | ((__m256h)__builtin_ia32_vreduceph256_round_mask( \ | ||
| 1872 | (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)(__m256h)(W), \ | ||
| 1873 | (__mmask16)(U), (int)(R))) | ||
| 1874 | |||
| 1875 | #define _mm256_maskz_reduce_round_ph(U, A, imm, R) \ | ||
| 1876 | ((__m256h)__builtin_ia32_vreduceph256_round_mask( \ | ||
| 1877 | (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)_mm256_setzero_ph(), \ | ||
| 1878 | (__mmask16)(U), (int)(R))) | ||
| 1879 | |||
| 1880 | #define _mm256_reduce_round_ph(A, imm, R) \ | ||
| 1881 | ((__m256h)__builtin_ia32_vreduceph256_round_mask( \ | ||
| 1882 | (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)_mm256_undefined_ph(), \ | ||
| 1883 | (__mmask16)-1, (int)(R))) | ||
| 1884 | |||
| 1885 | #define _mm256_reduce_round_ps(A, B, R) \ | ||
| 1886 | ((__m256)__builtin_ia32_vreduceps256_round_mask( \ | ||
| 1887 | (__v8sf)(__m256)(A), (int)(B), (__v8sf)_mm256_setzero_ps(), \ | ||
| 1888 | (__mmask8)-1, (int)(R))) | ||
| 1889 | |||
| 1890 | #define _mm256_mask_reduce_round_ps(W, U, A, B, R) \ | ||
| 1891 | ((__m256)__builtin_ia32_vreduceps256_round_mask( \ | ||
| 1892 | (__v8sf)(__m256)(A), (int)(B), (__v8sf)(__m256)(W), (__mmask8)(U), \ | ||
| 1893 | (int)(R))) | ||
| 1894 | |||
| 1895 | #define _mm256_maskz_reduce_round_ps(U, A, B, R) \ | ||
| 1896 | ((__m256)__builtin_ia32_vreduceps256_round_mask( \ | ||
| 1897 | (__v8sf)(__m256)(A), (int)(B), (__v8sf)_mm256_setzero_ps(), \ | ||
| 1898 | (__mmask8)(U), (int)(R))) | ||
| 1899 | |||
| 1900 | #define _mm256_roundscale_round_pd(A, imm, R) \ | ||
| 1901 | ((__m256d)__builtin_ia32_vrndscalepd256_round_mask( \ | ||
| 1902 | (__v4df)(__m256d)(A), (int)(imm), (__v4df)_mm256_undefined_pd(), \ | ||
| 1903 | (__mmask8)-1, (int)(R))) | ||
| 1904 | |||
| 1905 | #define _mm256_mask_roundscale_round_pd(A, B, C, imm, R) \ | ||
| 1906 | ((__m256d)__builtin_ia32_vrndscalepd256_round_mask( \ | ||
| 1907 | (__v4df)(__m256d)(C), (int)(imm), (__v4df)(__m256d)(A), (__mmask8)(B), \ | ||
| 1908 | (int)(R))) | ||
| 1909 | |||
| 1910 | #define _mm256_maskz_roundscale_round_pd(A, B, imm, R) \ | ||
| 1911 | ((__m256d)__builtin_ia32_vrndscalepd256_round_mask( \ | ||
| 1912 | (__v4df)(__m256d)(B), (int)(imm), (__v4df)_mm256_setzero_pd(), \ | ||
| 1913 | (__mmask8)(A), (int)(R))) | ||
| 1914 | |||
| 1915 | #define _mm256_roundscale_round_ph(A, imm, R) \ | ||
| 1916 | ((__m256h)__builtin_ia32_vrndscaleph256_round_mask( \ | ||
| 1917 | (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)_mm256_undefined_ph(), \ | ||
| 1918 | (__mmask16)-1, (int)(R))) | ||
| 1919 | |||
| 1920 | #define _mm256_mask_roundscale_round_ph(A, B, C, imm, R) \ | ||
| 1921 | ((__m256h)__builtin_ia32_vrndscaleph256_round_mask( \ | ||
| 1922 | (__v16hf)(__m256h)(C), (int)(imm), (__v16hf)(__m256h)(A), \ | ||
| 1923 | (__mmask16)(B), (int)(R))) | ||
| 1924 | |||
| 1925 | #define _mm256_maskz_roundscale_round_ph(A, B, imm, R) \ | ||
| 1926 | ((__m256h)__builtin_ia32_vrndscaleph256_round_mask( \ | ||
| 1927 | (__v16hf)(__m256h)(B), (int)(imm), (__v16hf)_mm256_setzero_ph(), \ | ||
| 1928 | (__mmask16)(A), (int)(R))) | ||
| 1929 | |||
| 1930 | #define _mm256_roundscale_round_ps(A, imm, R) \ | ||
| 1931 | ((__m256)__builtin_ia32_vrndscaleps256_round_mask( \ | ||
| 1932 | (__v8sf)(__m256)(A), (int)(imm), (__v8sf)_mm256_undefined_ps(), \ | ||
| 1933 | (__mmask8)-1, (int)(R))) | ||
| 1934 | |||
| 1935 | #define _mm256_mask_roundscale_round_ps(A, B, C, imm, R) \ | ||
| 1936 | ((__m256)__builtin_ia32_vrndscaleps256_round_mask( \ | ||
| 1937 | (__v8sf)(__m256)(C), (int)(imm), (__v8sf)(__m256)(A), (__mmask8)(B), \ | ||
| 1938 | (int)(R))) | ||
| 1939 | |||
| 1940 | #define _mm256_maskz_roundscale_round_ps(A, B, imm, R) \ | ||
| 1941 | ((__m256)__builtin_ia32_vrndscaleps256_round_mask( \ | ||
| 1942 | (__v8sf)(__m256)(B), (int)(imm), (__v8sf)_mm256_setzero_ps(), \ | ||
| 1943 | (__mmask8)(A), (int)(R))) | ||
| 1944 | |||
| 1945 | #define _mm256_scalef_round_pd(A, B, R) \ | ||
| 1946 | ((__m256d)__builtin_ia32_vscalefpd256_round_mask( \ | ||
| 1947 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), \ | ||
| 1948 | (__v4df)_mm256_undefined_pd(), (__mmask8)-1, (int)(R))) | ||
| 1949 | |||
| 1950 | #define _mm256_mask_scalef_round_pd(W, U, A, B, R) \ | ||
| 1951 | ((__m256d)__builtin_ia32_vscalefpd256_round_mask( \ | ||
| 1952 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)(__m256d)(W), \ | ||
| 1953 | (__mmask8)(U), (int)(R))) | ||
| 1954 | |||
| 1955 | #define _mm256_maskz_scalef_round_pd(U, A, B, R) \ | ||
| 1956 | ((__m256d)__builtin_ia32_vscalefpd256_round_mask( \ | ||
| 1957 | (__v4df)(__m256d)(A), (__v4df)(__m256d)(B), (__v4df)_mm256_setzero_pd(), \ | ||
| 1958 | (__mmask8)(U), (int)(R))) | ||
| 1959 | |||
| 1960 | #define _mm256_scalef_round_ph(A, B, R) \ | ||
| 1961 | ((__m256h)__builtin_ia32_vscalefph256_round_mask( \ | ||
| 1962 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), \ | ||
| 1963 | (__v16hf)_mm256_undefined_ph(), (__mmask16)-1, (int)(R))) | ||
| 1964 | |||
| 1965 | #define _mm256_mask_scalef_round_ph(W, U, A, B, R) \ | ||
| 1966 | ((__m256h)__builtin_ia32_vscalefph256_round_mask( \ | ||
| 1967 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), (__v16hf)(__m256h)(W), \ | ||
| 1968 | (__mmask16)(U), (int)(R))) | ||
| 1969 | |||
| 1970 | #define _mm256_maskz_scalef_round_ph(U, A, B, R) \ | ||
| 1971 | ((__m256h)__builtin_ia32_vscalefph256_round_mask( \ | ||
| 1972 | (__v16hf)(__m256h)(A), (__v16hf)(__m256h)(B), \ | ||
| 1973 | (__v16hf)_mm256_setzero_ph(), (__mmask16)(U), (int)(R))) | ||
| 1974 | |||
| 1975 | #define _mm256_scalef_round_ps(A, B, R) \ | ||
| 1976 | ((__m256)__builtin_ia32_vscalefps256_round_mask( \ | ||
| 1977 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)_mm256_undefined_ps(), \ | ||
| 1978 | (__mmask8)-1, (int)(R))) | ||
| 1979 | |||
| 1980 | #define _mm256_mask_scalef_round_ps(W, U, A, B, R) \ | ||
| 1981 | ((__m256)__builtin_ia32_vscalefps256_round_mask( \ | ||
| 1982 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)(__m256)(W), \ | ||
| 1983 | (__mmask8)(U), (int)(R))) | ||
| 1984 | |||
| 1985 | #define _mm256_maskz_scalef_round_ps(U, A, B, R) \ | ||
| 1986 | ((__m256)__builtin_ia32_vscalefps256_round_mask( \ | ||
| 1987 | (__v8sf)(__m256)(A), (__v8sf)(__m256)(B), (__v8sf)_mm256_setzero_ps(), \ | ||
| 1988 | (__mmask8)(U), (int)(R))) | ||
| 1989 | |||
| 1990 | #define _mm256_sqrt_round_pd(A, R) \ | ||
| 1991 | ((__m256d)__builtin_ia32_vsqrtpd256_round((__v4df)(__m256d)(A), (int)(R))) | ||
| 1992 | |||
| 1993 | #define _mm256_mask_sqrt_round_pd(W, U, A, R) \ | ||
| 1994 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 1995 | (__mmask8)(U), (__v4df)_mm256_sqrt_round_pd((A), (R)), \ | ||
| 1996 | (__v4df)(__m256d)(W))) | ||
| 1997 | |||
| 1998 | #define _mm256_maskz_sqrt_round_pd(U, A, R) \ | ||
| 1999 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 2000 | (__mmask8)(U), (__v4df)_mm256_sqrt_round_pd((A), (R)), \ | ||
| 2001 | (__v4df)_mm256_setzero_pd())) | ||
| 2002 | |||
| 2003 | #define _mm256_sqrt_round_ph(A, R) \ | ||
| 2004 | ((__m256h)__builtin_ia32_vsqrtph256_round((__v16hf)(__m256h)(A), (int)(R))) | ||
| 2005 | |||
| 2006 | #define _mm256_mask_sqrt_round_ph(W, U, A, R) \ | ||
| 2007 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 2008 | (__mmask16)(U), (__v16hf)_mm256_sqrt_round_ph((A), (R)), \ | ||
| 2009 | (__v16hf)(__m256h)(W))) | ||
| 2010 | |||
| 2011 | #define _mm256_maskz_sqrt_round_ph(U, A, R) \ | ||
| 2012 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 2013 | (__mmask16)(U), (__v16hf)_mm256_sqrt_round_ph((A), (R)), \ | ||
| 2014 | (__v16hf)_mm256_setzero_ph())) | ||
| 2015 | |||
| 2016 | #define _mm256_sqrt_round_ps(A, R) \ | ||
| 2017 | ((__m256)__builtin_ia32_vsqrtps256_round((__v8sf)(__m256)(A), (int)(R))) | ||
| 2018 | |||
| 2019 | #define _mm256_mask_sqrt_round_ps(W, U, A, R) \ | ||
| 2020 | ((__m256)__builtin_ia32_selectps_256((__mmask8)(U), \ | ||
| 2021 | (__v8sf)_mm256_sqrt_round_ps((A), (R)), \ | ||
| 2022 | (__v8sf)(__m256)(W))) | ||
| 2023 | |||
| 2024 | #define _mm256_maskz_sqrt_round_ps(U, A, R) \ | ||
| 2025 | ((__m256)__builtin_ia32_selectps_256((__mmask8)(U), \ | ||
| 2026 | (__v8sf)_mm256_sqrt_round_ps((A), (R)), \ | ||
| 2027 | (__v8sf)_mm256_setzero_ps())) | ||
| 2028 | |||
| 2029 | #define _mm256_sub_round_pd(A, B, R) \ | ||
| 2030 | ((__m256d)__builtin_ia32_vsubpd256_round((__v4df)(__m256d)(A), \ | ||
| 2031 | (__v4df)(__m256d)(B), (int)(R))) | ||
| 2032 | |||
| 2033 | #define _mm256_mask_sub_round_pd(W, U, A, B, R) \ | ||
| 2034 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 2035 | (__mmask8)(U), (__v4df)_mm256_sub_round_pd((A), (B), (R)), \ | ||
| 2036 | (__v4df)(__m256d)(W))) | ||
| 2037 | |||
| 2038 | #define _mm256_maskz_sub_round_pd(U, A, B, R) \ | ||
| 2039 | ((__m256d)__builtin_ia32_selectpd_256( \ | ||
| 2040 | (__mmask8)(U), (__v4df)_mm256_sub_round_pd((A), (B), (R)), \ | ||
| 2041 | (__v4df)_mm256_setzero_pd())) | ||
| 2042 | |||
| 2043 | #define _mm256_sub_round_ph(A, B, R) \ | ||
| 2044 | ((__m256h)__builtin_ia32_vsubph256_round((__v16hf)(__m256h)(A), \ | ||
| 2045 | (__v16hf)(__m256h)(B), (int)(R))) | ||
| 2046 | |||
| 2047 | #define _mm256_mask_sub_round_ph(W, U, A, B, R) \ | ||
| 2048 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 2049 | (__mmask16)(U), (__v16hf)_mm256_sub_round_ph((A), (B), (R)), \ | ||
| 2050 | (__v16hf)(__m256h)(W))) | ||
| 2051 | |||
| 2052 | #define _mm256_maskz_sub_round_ph(U, A, B, R) \ | ||
| 2053 | ((__m256h)__builtin_ia32_selectph_256( \ | ||
| 2054 | (__mmask16)(U), (__v16hf)_mm256_sub_round_ph((A), (B), (R)), \ | ||
| 2055 | (__v16hf)_mm256_setzero_ph())) | ||
| 2056 | |||
| 2057 | #define _mm256_sub_round_ps(A, B, R) \ | ||
| 2058 | ((__m256)__builtin_ia32_vsubps256_round((__v8sf)(__m256)(A), \ | ||
| 2059 | (__v8sf)(__m256)(B), (int)(R))) | ||
| 2060 | |||
| 2061 | #define _mm256_mask_sub_round_ps(W, U, A, B, R) \ | ||
| 2062 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 2063 | (__mmask8)(U), (__v8sf)_mm256_sub_round_ps((A), (B), (R)), \ | ||
| 2064 | (__v8sf)(__m256)(W))) | ||
| 2065 | |||
| 2066 | #define _mm256_maskz_sub_round_ps(U, A, B, R) \ | ||
| 2067 | ((__m256)__builtin_ia32_selectps_256( \ | ||
| 2068 | (__mmask8)(U), (__v8sf)_mm256_sub_round_ps((A), (B), (R)), \ | ||
| 2069 | (__v8sf)_mm256_setzero_ps())) | ||
| 2070 | |||
| 2071 | #undef __DEFAULT_FN_ATTRS256 | ||
| 2072 | #undef __DEFAULT_FN_ATTRS128 | ||
| 2073 | |||
| 2074 | #endif /* __AVX10_2NIINTRIN_H */ | ||
| 2075 | #endif /* __SSE2__ */ | ||
lib/include/avx10_2satcvtdsintrin.h created+496| ... | @@ -0,0 +1,496 @@ | ||
| 1 | /*===----------- avx10_2satcvtdsintrin.h - AVX512SATCVTDS intrinsics --------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __IMMINTRIN_H | ||
| 11 | #error \ | ||
| 12 | "Never use <avx10_2satcvtdsintrin.h> directly; include <immintrin.h> instead." | ||
| 13 | #endif // __IMMINTRIN_H | ||
| 14 | |||
| 15 | #ifndef __AVX10_2SATCVTDSINTRIN_H | ||
| 16 | #define __AVX10_2SATCVTDSINTRIN_H | ||
| 17 | |||
| 18 | /* Define the default attributes for the functions in this file. */ | ||
| 19 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 21 | __min_vector_width__(256))) | ||
| 22 | |||
| 23 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 24 | __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-256"), \ | ||
| 25 | __min_vector_width__(128))) | ||
| 26 | |||
| 27 | #define _mm_cvtts_roundsd_i32(__A, __R) \ | ||
| 28 | ((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128)(__A), (const int)(__R))) | ||
| 29 | |||
| 30 | #define _mm_cvtts_roundsd_si32(__A, __R) \ | ||
| 31 | ((int)__builtin_ia32_vcvttsd2sis32((__v2df)(__m128d)(__A), (const int)(__R))) | ||
| 32 | |||
| 33 | #define _mm_cvtts_roundsd_u32(__A, __R) \ | ||
| 34 | ((unsigned int)__builtin_ia32_vcvttsd2usis32((__v2df)(__m128d)(__A), \ | ||
| 35 | (const int)(__R))) | ||
| 36 | |||
| 37 | #define _mm_cvtts_roundss_i32(__A, __R) \ | ||
| 38 | ((int)__builtin_ia32_vcvttss2sis32((__v4sf)(__m128)(__A), (const int)(__R))) | ||
| 39 | |||
| 40 | #define _mm_cvtts_roundss_si32(__A, __R) \ | ||
| 41 | ((int)__builtin_ia32_vcvttss2sis32((__v4sf)(__m128)(__A), (const int)(__R))) | ||
| 42 | |||
| 43 | #define _mm_cvtts_roundss_u32(__A, __R) \ | ||
| 44 | ((unsigned int)__builtin_ia32_vcvttss2usis32((__v4sf)(__m128)(__A), \ | ||
| 45 | (const int)(__R))) | ||
| 46 | |||
| 47 | #ifdef __x86_64__ | ||
| 48 | #define _mm_cvtts_roundss_u64(__A, __R) \ | ||
| 49 | ((unsigned long long)__builtin_ia32_vcvttss2usis64((__v4sf)(__m128)(__A), \ | ||
| 50 | (const int)(__R))) | ||
| 51 | |||
| 52 | #define _mm_cvtts_roundsd_u64(__A, __R) \ | ||
| 53 | ((unsigned long long)__builtin_ia32_vcvttsd2usis64((__v2df)(__m128d)(__A), \ | ||
| 54 | (const int)(__R))) | ||
| 55 | |||
| 56 | #define _mm_cvtts_roundss_i64(__A, __R) \ | ||
| 57 | ((long long)__builtin_ia32_vcvttss2sis64((__v4sf)(__m128)(__A), \ | ||
| 58 | (const int)(__R))) | ||
| 59 | |||
| 60 | #define _mm_cvtts_roundss_si64(__A, __R) \ | ||
| 61 | ((long long)__builtin_ia32_vcvttss2sis64((__v4sf)(__m128)(__A), \ | ||
| 62 | (const int)(__R))) | ||
| 63 | |||
| 64 | #define _mm_cvtts_roundsd_si64(__A, __R) \ | ||
| 65 | ((long long)__builtin_ia32_vcvttsd2sis64((__v2df)(__m128d)(__A), \ | ||
| 66 | (const int)(__R))) | ||
| 67 | |||
| 68 | #define _mm_cvtts_roundsd_i64(__A, __R) \ | ||
| 69 | ((long long)__builtin_ia32_vcvttsd2sis64((__v2df)(__m128d)(__A), \ | ||
| 70 | (const int)(__R))) | ||
| 71 | #endif /* __x86_64__ */ | ||
| 72 | |||
| 73 | // 128 Bit : Double -> int | ||
| 74 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epi32(__m128d __A) { | ||
| 75 | return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( | ||
| 76 | (__v2df)__A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1))); | ||
| 77 | } | ||
| 78 | |||
| 79 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 80 | _mm_mask_cvttspd_epi32(__m128i __W, __mmask8 __U, __m128d __A) { | ||
| 81 | return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask((__v2df)__A, (__v4si)__W, | ||
| 82 | __U)); | ||
| 83 | } | ||
| 84 | |||
| 85 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 86 | _mm_maskz_cvttspd_epi32(__mmask16 __U, __m128d __A) { | ||
| 87 | return ((__m128i)__builtin_ia32_vcvttpd2dqs128_mask( | ||
| 88 | (__v2df)__A, (__v4si)(__m128i)_mm_setzero_si128(), __U)); | ||
| 89 | } | ||
| 90 | |||
| 91 | // 256 Bit : Double -> int | ||
| 92 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 93 | _mm256_cvttspd_epi32(__m256d __A) { | ||
| 94 | return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( | ||
| 95 | (__v4df)__A, (__v4si)_mm_undefined_si128(), (__mmask8)-1, | ||
| 96 | _MM_FROUND_CUR_DIRECTION)); | ||
| 97 | } | ||
| 98 | |||
| 99 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 100 | _mm256_mask_cvttspd_epi32(__m128i __W, __mmask8 __U, __m256d __A) { | ||
| 101 | return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( | ||
| 102 | (__v4df)__A, (__v4si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 103 | } | ||
| 104 | |||
| 105 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 106 | _mm256_maskz_cvttspd_epi32(__mmask8 __U, __m256d __A) { | ||
| 107 | return ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( | ||
| 108 | (__v4df)__A, (__v4si)_mm_setzero_si128(), __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 109 | } | ||
| 110 | |||
| 111 | #define _mm256_cvtts_roundpd_epi32(__A, __R) \ | ||
| 112 | ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \ | ||
| 113 | (__v4df)(__m256d)__A, (__v4si)(__m128i)_mm_undefined_si128(), \ | ||
| 114 | (__mmask8) - 1, (int)(__R))) | ||
| 115 | |||
| 116 | #define _mm256_mask_cvtts_roundpd_epi32(__W, __U, __A, __R) \ | ||
| 117 | ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \ | ||
| 118 | (__v4df)(__m256d)__A, (__v4si)(__m128i)__W, (__mmask8)__U, (int)(__R))) | ||
| 119 | |||
| 120 | #define _mm256_maskz_cvtts_roundpd_epi32(__U, __A, __R) \ | ||
| 121 | ((__m128i)__builtin_ia32_vcvttpd2dqs256_round_mask( \ | ||
| 122 | (__v4df)(__m256d)__A, (__v4si)(__m128i)_mm_setzero_si128(), \ | ||
| 123 | (__mmask8)__U, (int)(__R))) | ||
| 124 | |||
| 125 | // 128 Bit : Double -> uint | ||
| 126 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epu32(__m128d __A) { | ||
| 127 | return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( | ||
| 128 | (__v2df)__A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1))); | ||
| 129 | } | ||
| 130 | |||
| 131 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 132 | _mm_mask_cvttspd_epu32(__m128i __W, __mmask8 __U, __m128d __A) { | ||
| 133 | return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( | ||
| 134 | (__v2df)__A, (__v4si)(__m128i)__W, (__mmask8)__U)); | ||
| 135 | } | ||
| 136 | |||
| 137 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 138 | _mm_maskz_cvttspd_epu32(__mmask8 __U, __m128d __A) { | ||
| 139 | return ((__m128i)__builtin_ia32_vcvttpd2udqs128_mask( | ||
| 140 | (__v2df)__A, (__v4si)(__m128i)_mm_setzero_si128(), __U)); | ||
| 141 | } | ||
| 142 | |||
| 143 | // 256 Bit : Double -> uint | ||
| 144 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 145 | _mm256_cvttspd_epu32(__m256d __A) { | ||
| 146 | return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( | ||
| 147 | (__v4df)__A, (__v4si)_mm_undefined_si128(), (__mmask8)-1, | ||
| 148 | _MM_FROUND_CUR_DIRECTION)); | ||
| 149 | } | ||
| 150 | |||
| 151 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 152 | _mm256_mask_cvttspd_epu32(__m128i __W, __mmask8 __U, __m256d __A) { | ||
| 153 | return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( | ||
| 154 | (__v4df)__A, (__v4si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 155 | } | ||
| 156 | |||
| 157 | static __inline__ __m128i __DEFAULT_FN_ATTRS256 | ||
| 158 | _mm256_maskz_cvttspd_epu32(__mmask8 __U, __m256d __A) { | ||
| 159 | return ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( | ||
| 160 | (__v4df)__A, (__v4si)_mm_setzero_si128(), __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 161 | } | ||
| 162 | |||
| 163 | #define _mm256_cvtts_roundpd_epu32(__A, __R) \ | ||
| 164 | ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \ | ||
| 165 | (__v4df)(__m256d)__A, (__v4si)(__m128i)_mm_undefined_si128(), \ | ||
| 166 | (__mmask8) - 1, (int)(__R))) | ||
| 167 | |||
| 168 | #define _mm256_mask_cvtts_roundpd_epu32(__W, __U, __A, __R) \ | ||
| 169 | ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \ | ||
| 170 | (__v4df)(__m256d)__A, (__v4si)(__m128i)__W, (__mmask8)__U, (int)(__R))) | ||
| 171 | |||
| 172 | #define _mm256_maskz_cvtts_roundpd_epu32(__U, __A, __R) \ | ||
| 173 | ((__m128i)__builtin_ia32_vcvttpd2udqs256_round_mask( \ | ||
| 174 | (__v4df)(__m256d)__A, (__v4si)(__m128i)_mm_setzero_si128(), \ | ||
| 175 | (__mmask8)__U, (int)(__R))) | ||
| 176 | |||
| 177 | // 128 Bit : Double -> long | ||
| 178 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epi64(__m128d __A) { | ||
| 179 | return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( | ||
| 180 | (__v2df)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1)); | ||
| 181 | } | ||
| 182 | |||
| 183 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 184 | _mm_mask_cvttspd_epi64(__m128i __W, __mmask8 __U, __m128d __A) { | ||
| 185 | return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask((__v2df)__A, (__v2di)__W, | ||
| 186 | (__mmask8)__U)); | ||
| 187 | } | ||
| 188 | |||
| 189 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 190 | _mm_maskz_cvttspd_epi64(__mmask8 __U, __m128d __A) { | ||
| 191 | return ((__m128i)__builtin_ia32_vcvttpd2qqs128_mask( | ||
| 192 | (__v2df)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 193 | } | ||
| 194 | |||
| 195 | // 256 Bit : Double -> long | ||
| 196 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 197 | _mm256_cvttspd_epi64(__m256d __A) { | ||
| 198 | return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( | ||
| 199 | (__v4df)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 200 | _MM_FROUND_CUR_DIRECTION)); | ||
| 201 | } | ||
| 202 | |||
| 203 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 204 | _mm256_mask_cvttspd_epi64(__m256i __W, __mmask8 __U, __m256d __A) { | ||
| 205 | return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( | ||
| 206 | (__v4df)__A, (__v4di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 207 | } | ||
| 208 | |||
| 209 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 210 | _mm256_maskz_cvttspd_epi64(__mmask8 __U, __m256d __A) { | ||
| 211 | return ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( | ||
| 212 | (__v4df)__A, (__v4di)_mm256_setzero_si256(), __U, | ||
| 213 | _MM_FROUND_CUR_DIRECTION)); | ||
| 214 | } | ||
| 215 | |||
| 216 | #define _mm256_cvtts_roundpd_epi64(__A, __R) \ | ||
| 217 | ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \ | ||
| 218 | (__v4df)__A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \ | ||
| 219 | (int)__R)) | ||
| 220 | |||
| 221 | #define _mm256_mask_cvtts_roundpd_epi64(__W, __U, __A, __R) \ | ||
| 222 | ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask((__v4df)__A, (__v4di)__W, \ | ||
| 223 | (__mmask8)__U, (int)__R)) | ||
| 224 | |||
| 225 | #define _mm256_maskz_cvtts_roundpd_epi64(__U, __A, __R) \ | ||
| 226 | ((__m256i)__builtin_ia32_vcvttpd2qqs256_round_mask( \ | ||
| 227 | (__v4df)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U, (int)__R)) | ||
| 228 | |||
| 229 | // 128 Bit : Double -> ulong | ||
| 230 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttspd_epu64(__m128d __A) { | ||
| 231 | return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( | ||
| 232 | (__v2df)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1)); | ||
| 233 | } | ||
| 234 | |||
| 235 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 236 | _mm_mask_cvttspd_epu64(__m128i __W, __mmask8 __U, __m128d __A) { | ||
| 237 | return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask((__v2df)__A, (__v2di)__W, | ||
| 238 | (__mmask8)__U)); | ||
| 239 | } | ||
| 240 | |||
| 241 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 242 | _mm_maskz_cvttspd_epu64(__mmask8 __U, __m128d __A) { | ||
| 243 | return ((__m128i)__builtin_ia32_vcvttpd2uqqs128_mask( | ||
| 244 | (__v2df)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 245 | } | ||
| 246 | |||
| 247 | // 256 Bit : Double -> ulong | ||
| 248 | |||
| 249 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 250 | _mm256_cvttspd_epu64(__m256d __A) { | ||
| 251 | return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( | ||
| 252 | (__v4df)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 253 | _MM_FROUND_CUR_DIRECTION)); | ||
| 254 | } | ||
| 255 | |||
| 256 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 257 | _mm256_mask_cvttspd_epu64(__m256i __W, __mmask8 __U, __m256d __A) { | ||
| 258 | return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( | ||
| 259 | (__v4df)__A, (__v4di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 260 | } | ||
| 261 | |||
| 262 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 263 | _mm256_maskz_cvttspd_epu64(__mmask8 __U, __m256d __A) { | ||
| 264 | return ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( | ||
| 265 | (__v4df)__A, (__v4di)_mm256_setzero_si256(), __U, | ||
| 266 | _MM_FROUND_CUR_DIRECTION)); | ||
| 267 | } | ||
| 268 | |||
| 269 | #define _mm256_cvtts_roundpd_epu64(__A, __R) \ | ||
| 270 | ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \ | ||
| 271 | (__v4df)__A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \ | ||
| 272 | (int)__R)) | ||
| 273 | |||
| 274 | #define _mm256_mask_cvtts_roundpd_epu64(__W, __U, __A, __R) \ | ||
| 275 | ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \ | ||
| 276 | (__v4df)__A, (__v4di)__W, (__mmask8)__U, (int)__R)) | ||
| 277 | |||
| 278 | #define _mm256_maskz_cvtts_roundpd_epu64(__U, __A, __R) \ | ||
| 279 | ((__m256i)__builtin_ia32_vcvttpd2uqqs256_round_mask( \ | ||
| 280 | (__v4df)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U, (int)__R)) | ||
| 281 | |||
| 282 | // 128 Bit : float -> int | ||
| 283 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epi32(__m128 __A) { | ||
| 284 | return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( | ||
| 285 | (__v4sf)__A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1))); | ||
| 286 | } | ||
| 287 | |||
| 288 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 289 | _mm_mask_cvttsps_epi32(__m128i __W, __mmask8 __U, __m128 __A) { | ||
| 290 | return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask((__v4sf)__A, (__v4si)__W, | ||
| 291 | (__mmask8)__U)); | ||
| 292 | } | ||
| 293 | |||
| 294 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 295 | _mm_maskz_cvttsps_epi32(__mmask8 __U, __m128 __A) { | ||
| 296 | return ((__m128i)__builtin_ia32_vcvttps2dqs128_mask( | ||
| 297 | (__v4sf)__A, (__v4si)(__m128i)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 298 | } | ||
| 299 | |||
| 300 | // 256 Bit : float -> int | ||
| 301 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 302 | _mm256_cvttsps_epi32(__m256 __A) { | ||
| 303 | return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( | ||
| 304 | (__v8sf)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 305 | _MM_FROUND_CUR_DIRECTION)); | ||
| 306 | } | ||
| 307 | |||
| 308 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 309 | _mm256_mask_cvttsps_epi32(__m256i __W, __mmask8 __U, __m256 __A) { | ||
| 310 | return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( | ||
| 311 | (__v8sf)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 312 | } | ||
| 313 | |||
| 314 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 315 | _mm256_maskz_cvttsps_epi32(__mmask8 __U, __m256 __A) { | ||
| 316 | return ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( | ||
| 317 | (__v8sf)__A, (__v8si)_mm256_setzero_si256(), __U, | ||
| 318 | _MM_FROUND_CUR_DIRECTION)); | ||
| 319 | } | ||
| 320 | |||
| 321 | #define _mm256_cvtts_roundps_epi32(__A, __R) \ | ||
| 322 | ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \ | ||
| 323 | (__v8sf)(__m256)__A, (__v8si)(__m256i)_mm256_undefined_si256(), \ | ||
| 324 | (__mmask8) - 1, (int)(__R))) | ||
| 325 | |||
| 326 | #define _mm256_mask_cvtts_roundps_epi32(__W, __U, __A, __R) \ | ||
| 327 | ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \ | ||
| 328 | (__v8sf)(__m256)__A, (__v8si)(__m256i)__W, (__mmask8)__U, (int)(__R))) | ||
| 329 | |||
| 330 | #define _mm256_maskz_cvtts_roundps_epi32(__U, __A, __R) \ | ||
| 331 | ((__m256i)__builtin_ia32_vcvttps2dqs256_round_mask( \ | ||
| 332 | (__v8sf)(__m256)__A, (__v8si)(__m256i)_mm256_setzero_si256(), \ | ||
| 333 | (__mmask8)__U, (int)(__R))) | ||
| 334 | |||
| 335 | // 128 Bit : float -> uint | ||
| 336 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epu32(__m128 __A) { | ||
| 337 | return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( | ||
| 338 | (__v4sf)__A, (__v4si)(__m128i)_mm_undefined_si128(), (__mmask8)(-1))); | ||
| 339 | } | ||
| 340 | |||
| 341 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 342 | _mm_mask_cvttsps_epu32(__m128i __W, __mmask8 __U, __m128 __A) { | ||
| 343 | return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask((__v4sf)__A, (__v4si)__W, | ||
| 344 | (__mmask8)__U)); | ||
| 345 | } | ||
| 346 | |||
| 347 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 348 | _mm_maskz_cvttsps_epu32(__mmask8 __U, __m128 __A) { | ||
| 349 | return ((__m128i)__builtin_ia32_vcvttps2udqs128_mask( | ||
| 350 | (__v4sf)__A, (__v4si)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 351 | } | ||
| 352 | |||
| 353 | // 256 Bit : float -> uint | ||
| 354 | |||
| 355 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 356 | _mm256_cvttsps_epu32(__m256 __A) { | ||
| 357 | return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( | ||
| 358 | (__v8sf)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 359 | _MM_FROUND_CUR_DIRECTION)); | ||
| 360 | } | ||
| 361 | |||
| 362 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 363 | _mm256_mask_cvttsps_epu32(__m256i __W, __mmask8 __U, __m256 __A) { | ||
| 364 | return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( | ||
| 365 | (__v8sf)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 366 | } | ||
| 367 | |||
| 368 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 369 | _mm256_maskz_cvttsps_epu32(__mmask8 __U, __m256 __A) { | ||
| 370 | return ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( | ||
| 371 | (__v8sf)__A, (__v8si)_mm256_setzero_si256(), __U, | ||
| 372 | _MM_FROUND_CUR_DIRECTION)); | ||
| 373 | } | ||
| 374 | |||
| 375 | #define _mm256_cvtts_roundps_epu32(__A, __R) \ | ||
| 376 | ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \ | ||
| 377 | (__v8sf)(__m256)__A, (__v8si)(__m256i)_mm256_undefined_si256(), \ | ||
| 378 | (__mmask8) - 1, (int)(__R))) | ||
| 379 | |||
| 380 | #define _mm256_mask_cvtts_roundps_epu32(__W, __U, __A, __R) \ | ||
| 381 | ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \ | ||
| 382 | (__v8sf)(__m256)__A, (__v8si)(__m256i)__W, (__mmask8)__U, (int)(__R))) | ||
| 383 | |||
| 384 | #define _mm256_maskz_cvtts_roundps_epu32(__U, __A, __R) \ | ||
| 385 | ((__m256i)__builtin_ia32_vcvttps2udqs256_round_mask( \ | ||
| 386 | (__v8sf)(__m256)__A, (__v8si)(__m256i)_mm256_setzero_si256(), \ | ||
| 387 | (__mmask8)__U, (int)(__R))) | ||
| 388 | |||
| 389 | // 128 bit : float -> long | ||
| 390 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epi64(__m128 __A) { | ||
| 391 | return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( | ||
| 392 | (__v4sf)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1)); | ||
| 393 | } | ||
| 394 | |||
| 395 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 396 | _mm_mask_cvttsps_epi64(__m128i __W, __mmask8 __U, __m128 __A) { | ||
| 397 | return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( | ||
| 398 | (__v4sf)__A, (__v2di)(__m128i)__W, (__mmask8)__U)); | ||
| 399 | } | ||
| 400 | |||
| 401 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 402 | _mm_maskz_cvttsps_epi64(__mmask8 __U, __m128 __A) { | ||
| 403 | return ((__m128i)__builtin_ia32_vcvttps2qqs128_mask( | ||
| 404 | (__v4sf)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 405 | } | ||
| 406 | // 256 bit : float -> long | ||
| 407 | |||
| 408 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 409 | _mm256_cvttsps_epi64(__m128 __A) { | ||
| 410 | return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( | ||
| 411 | (__v4sf)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 412 | _MM_FROUND_CUR_DIRECTION)); | ||
| 413 | } | ||
| 414 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 415 | _mm256_mask_cvttsps_epi64(__m256i __W, __mmask8 __U, __m128 __A) { | ||
| 416 | return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( | ||
| 417 | (__v4sf)__A, (__v4di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 418 | } | ||
| 419 | |||
| 420 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 421 | _mm256_maskz_cvttsps_epi64(__mmask8 __U, __m128 __A) { | ||
| 422 | return ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( | ||
| 423 | (__v4sf)__A, (__v4di)_mm256_setzero_si256(), __U, | ||
| 424 | _MM_FROUND_CUR_DIRECTION)); | ||
| 425 | } | ||
| 426 | |||
| 427 | #define _mm256_cvtts_roundps_epi64(__A, __R) \ | ||
| 428 | ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \ | ||
| 429 | (__v4sf)(__m128)__A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \ | ||
| 430 | (int)__R)) | ||
| 431 | |||
| 432 | #define _mm256_mask_cvtts_roundps_epi64(__W, __U, __A, __R) \ | ||
| 433 | ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \ | ||
| 434 | (__v4sf)(__m128)__A, (__v4di)__W, (__mmask8)__U, (int)__R)) | ||
| 435 | |||
| 436 | #define _mm256_maskz_cvtts_roundps_epi64(__U, __A, __R) \ | ||
| 437 | ((__m256i)__builtin_ia32_vcvttps2qqs256_round_mask( \ | ||
| 438 | (__v4sf)(__m128)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U, \ | ||
| 439 | (int)__R)) | ||
| 440 | |||
| 441 | // 128 bit : float -> ulong | ||
| 442 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttsps_epu64(__m128 __A) { | ||
| 443 | return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( | ||
| 444 | (__v4sf)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1)); | ||
| 445 | } | ||
| 446 | |||
| 447 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 448 | _mm_mask_cvttsps_epu64(__m128i __W, __mmask8 __U, __m128 __A) { | ||
| 449 | return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( | ||
| 450 | (__v4sf)__A, (__v2di)(__m128i)__W, (__mmask8)__U)); | ||
| 451 | } | ||
| 452 | |||
| 453 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 454 | _mm_maskz_cvttsps_epu64(__mmask8 __U, __m128 __A) { | ||
| 455 | return ((__m128i)__builtin_ia32_vcvttps2uqqs128_mask( | ||
| 456 | (__v4sf)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U)); | ||
| 457 | } | ||
| 458 | // 256 bit : float -> ulong | ||
| 459 | |||
| 460 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 461 | _mm256_cvttsps_epu64(__m128 __A) { | ||
| 462 | return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( | ||
| 463 | (__v4sf)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1, | ||
| 464 | _MM_FROUND_CUR_DIRECTION)); | ||
| 465 | } | ||
| 466 | |||
| 467 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 468 | _mm256_mask_cvttsps_epu64(__m256i __W, __mmask8 __U, __m128 __A) { | ||
| 469 | return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( | ||
| 470 | (__v4sf)__A, (__v4di)__W, __U, _MM_FROUND_CUR_DIRECTION)); | ||
| 471 | } | ||
| 472 | |||
| 473 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 474 | _mm256_maskz_cvttsps_epu64(__mmask8 __U, __m128 __A) { | ||
| 475 | return ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( | ||
| 476 | (__v4sf)__A, (__v4di)_mm256_setzero_si256(), __U, | ||
| 477 | _MM_FROUND_CUR_DIRECTION)); | ||
| 478 | } | ||
| 479 | |||
| 480 | #define _mm256_cvtts_roundps_epu64(__A, __R) \ | ||
| 481 | ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \ | ||
| 482 | (__v4sf)(__m128)__A, (__v4di)_mm256_undefined_si256(), (__mmask8) - 1, \ | ||
| 483 | (int)__R)) | ||
| 484 | |||
| 485 | #define _mm256_mask_cvtts_roundps_epu64(__W, __U, __A, __R) \ | ||
| 486 | ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \ | ||
| 487 | (__v4sf)(__m128)__A, (__v4di)__W, (__mmask8)__U, (int)__R)) | ||
| 488 | |||
| 489 | #define _mm256_maskz_cvtts_roundps_epu64(__U, __A, __R) \ | ||
| 490 | ((__m256i)__builtin_ia32_vcvttps2uqqs256_round_mask( \ | ||
| 491 | (__v4sf)(__m128)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U, \ | ||
| 492 | (int)__R)) | ||
| 493 | |||
| 494 | #undef __DEFAULT_FN_ATTRS128 | ||
| 495 | #undef __DEFAULT_FN_ATTRS256 | ||
| 496 | #endif // __AVX10_2SATCVTDSINTRIN_H | ||
lib/include/avx10_2satcvtintrin.h created+444| ... | @@ -0,0 +1,444 @@ | ||
| 1 | /*===----------- avx10_2satcvtintrin.h - AVX10_2SATCVT intrinsics ----------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <avx10_2satcvtintrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif // __IMMINTRIN_H | ||
| 13 | |||
| 14 | #ifndef __AVX10_2SATCVTINTRIN_H | ||
| 15 | #define __AVX10_2SATCVTINTRIN_H | ||
| 16 | |||
| 17 | #define _mm_ipcvtbf16_epi8(A) \ | ||
| 18 | ((__m128i)__builtin_ia32_vcvtbf162ibs128((__v8bf)(__m128bh)(A))) | ||
| 19 | |||
| 20 | #define _mm_mask_ipcvtbf16_epi8(W, U, A) \ | ||
| 21 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 22 | (__mmask8)(U), (__v8hi)_mm_ipcvtbf16_epi8(A), (__v8hi)(__m128i)(W))) | ||
| 23 | |||
| 24 | #define _mm_maskz_ipcvtbf16_epi8(U, A) \ | ||
| 25 | ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ | ||
| 26 | (__v8hi)_mm_ipcvtbf16_epi8(A), \ | ||
| 27 | (__v8hi)_mm_setzero_si128())) | ||
| 28 | |||
| 29 | #define _mm256_ipcvtbf16_epi8(A) \ | ||
| 30 | ((__m256i)__builtin_ia32_vcvtbf162ibs256((__v16bf)(__m256bh)(A))) | ||
| 31 | |||
| 32 | #define _mm256_mask_ipcvtbf16_epi8(W, U, A) \ | ||
| 33 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 34 | (__v16hi)_mm256_ipcvtbf16_epi8(A), \ | ||
| 35 | (__v16hi)(__m256i)(W))) | ||
| 36 | |||
| 37 | #define _mm256_maskz_ipcvtbf16_epi8(U, A) \ | ||
| 38 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 39 | (__v16hi)_mm256_ipcvtbf16_epi8(A), \ | ||
| 40 | (__v16hi)_mm256_setzero_si256())) | ||
| 41 | |||
| 42 | #define _mm_ipcvtbf16_epu8(A) \ | ||
| 43 | ((__m128i)__builtin_ia32_vcvtbf162iubs128((__v8bf)(__m128bh)(A))) | ||
| 44 | |||
| 45 | #define _mm_mask_ipcvtbf16_epu8(W, U, A) \ | ||
| 46 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 47 | (__mmask8)(U), (__v8hi)_mm_ipcvtbf16_epu8(A), (__v8hi)(__m128i)(W))) | ||
| 48 | |||
| 49 | #define _mm_maskz_ipcvtbf16_epu8(U, A) \ | ||
| 50 | ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ | ||
| 51 | (__v8hi)_mm_ipcvtbf16_epu8(A), \ | ||
| 52 | (__v8hi)_mm_setzero_si128())) | ||
| 53 | |||
| 54 | #define _mm256_ipcvtbf16_epu8(A) \ | ||
| 55 | ((__m256i)__builtin_ia32_vcvtbf162iubs256((__v16bf)(__m256bh)(A))) | ||
| 56 | |||
| 57 | #define _mm256_mask_ipcvtbf16_epu8(W, U, A) \ | ||
| 58 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 59 | (__v16hi)_mm256_ipcvtbf16_epu8(A), \ | ||
| 60 | (__v16hi)(__m256i)(W))) | ||
| 61 | |||
| 62 | #define _mm256_maskz_ipcvtbf16_epu8(U, A) \ | ||
| 63 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 64 | (__v16hi)_mm256_ipcvtbf16_epu8(A), \ | ||
| 65 | (__v16hi)_mm256_setzero_si256())) | ||
| 66 | |||
| 67 | #define _mm_ipcvtph_epi8(A) \ | ||
| 68 | ((__m128i)__builtin_ia32_vcvtph2ibs128_mask( \ | ||
| 69 | (__v8hf)(__m128h)(A), (__v8hu)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 70 | |||
| 71 | #define _mm_mask_ipcvtph_epi8(W, U, A) \ | ||
| 72 | ((__m128i)__builtin_ia32_vcvtph2ibs128_mask((__v8hf)(__m128h)(A), \ | ||
| 73 | (__v8hu)(W), (__mmask8)(U))) | ||
| 74 | |||
| 75 | #define _mm_maskz_ipcvtph_epi8(U, A) \ | ||
| 76 | ((__m128i)__builtin_ia32_vcvtph2ibs128_mask( \ | ||
| 77 | (__v8hf)(__m128h)(A), (__v8hu)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 78 | |||
| 79 | #define _mm256_ipcvtph_epi8(A) \ | ||
| 80 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask( \ | ||
| 81 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 82 | _MM_FROUND_CUR_DIRECTION)) | ||
| 83 | |||
| 84 | #define _mm256_mask_ipcvtph_epi8(W, U, A) \ | ||
| 85 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask((__v16hf)(__m256h)(A), \ | ||
| 86 | (__v16hu)(W), (__mmask16)(U), \ | ||
| 87 | _MM_FROUND_CUR_DIRECTION)) | ||
| 88 | |||
| 89 | #define _mm256_maskz_ipcvtph_epi8(U, A) \ | ||
| 90 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask( \ | ||
| 91 | (__v16hf)(__m256h)(A), (__v16hu)(_mm256_setzero_si256()), \ | ||
| 92 | (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 93 | |||
| 94 | #define _mm256_ipcvt_roundph_epi8(A, R) \ | ||
| 95 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask((__v16hf)(__m256h)(A), \ | ||
| 96 | (__v16hu)_mm256_setzero_si256(), \ | ||
| 97 | (__mmask16)-1, (const int)R)) | ||
| 98 | |||
| 99 | #define _mm256_mask_ipcvt_roundph_epi8(W, U, A, R) \ | ||
| 100 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask( \ | ||
| 101 | (__v16hf)(__m256h)(A), (__v16hu)(W), (__mmask16)(U), (const int)R)) | ||
| 102 | |||
| 103 | #define _mm256_maskz_ipcvt_roundph_epi8(U, A, R) \ | ||
| 104 | ((__m256i)__builtin_ia32_vcvtph2ibs256_mask((__v16hf)(__m256h)(A), \ | ||
| 105 | (__v16hu)_mm256_setzero_si256(), \ | ||
| 106 | (__mmask16)(U), (const int)R)) | ||
| 107 | |||
| 108 | #define _mm_ipcvtph_epu8(A) \ | ||
| 109 | ((__m128i)__builtin_ia32_vcvtph2iubs128_mask( \ | ||
| 110 | (__v8hf)(__m128h)(A), (__v8hu)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 111 | |||
| 112 | #define _mm_mask_ipcvtph_epu8(W, U, A) \ | ||
| 113 | ((__m128i)__builtin_ia32_vcvtph2iubs128_mask((__v8hf)(__m128h)(A), \ | ||
| 114 | (__v8hu)(W), (__mmask8)(U))) | ||
| 115 | |||
| 116 | #define _mm_maskz_ipcvtph_epu8(U, A) \ | ||
| 117 | ((__m128i)__builtin_ia32_vcvtph2iubs128_mask( \ | ||
| 118 | (__v8hf)(__m128h)(A), (__v8hu)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 119 | |||
| 120 | #define _mm256_ipcvtph_epu8(A) \ | ||
| 121 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask( \ | ||
| 122 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 123 | _MM_FROUND_CUR_DIRECTION)) | ||
| 124 | |||
| 125 | #define _mm256_mask_ipcvtph_epu8(W, U, A) \ | ||
| 126 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask((__v16hf)(__m256h)(A), \ | ||
| 127 | (__v16hu)(W), (__mmask16)(U), \ | ||
| 128 | _MM_FROUND_CUR_DIRECTION)) | ||
| 129 | |||
| 130 | #define _mm256_maskz_ipcvtph_epu8(U, A) \ | ||
| 131 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask( \ | ||
| 132 | (__v16hf)(__m256h)(A), (__v16hu)(_mm256_setzero_si256()), \ | ||
| 133 | (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 134 | |||
| 135 | #define _mm256_ipcvt_roundph_epu8(A, R) \ | ||
| 136 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask( \ | ||
| 137 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 138 | (const int)R)) | ||
| 139 | |||
| 140 | #define _mm256_mask_ipcvt_roundph_epu8(W, U, A, R) \ | ||
| 141 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask( \ | ||
| 142 | (__v16hf)(__m256h)(A), (__v16hu)(W), (__mmask16)(U), (const int)R)) | ||
| 143 | |||
| 144 | #define _mm256_maskz_ipcvt_roundph_epu8(U, A, R) \ | ||
| 145 | ((__m256i)__builtin_ia32_vcvtph2iubs256_mask( \ | ||
| 146 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 147 | (const int)R)) | ||
| 148 | |||
| 149 | #define _mm_ipcvtps_epi8(A) \ | ||
| 150 | ((__m128i)__builtin_ia32_vcvtps2ibs128_mask( \ | ||
| 151 | (__v4sf)(__m128)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 152 | |||
| 153 | #define _mm_mask_ipcvtps_epi8(W, U, A) \ | ||
| 154 | ((__m128i)__builtin_ia32_vcvtps2ibs128_mask((__v4sf)(__m128)(A), \ | ||
| 155 | (__v4su)(W), (__mmask8)(U))) | ||
| 156 | |||
| 157 | #define _mm_maskz_ipcvtps_epi8(U, A) \ | ||
| 158 | ((__m128i)__builtin_ia32_vcvtps2ibs128_mask( \ | ||
| 159 | (__v4sf)(__m128)(A), (__v4su)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 160 | |||
| 161 | #define _mm256_ipcvtps_epi8(A) \ | ||
| 162 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask( \ | ||
| 163 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 164 | _MM_FROUND_CUR_DIRECTION)) | ||
| 165 | |||
| 166 | #define _mm256_mask_ipcvtps_epi8(W, U, A) \ | ||
| 167 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 168 | (__v8su)(W), (__mmask8)(U), \ | ||
| 169 | _MM_FROUND_CUR_DIRECTION)) | ||
| 170 | |||
| 171 | #define _mm256_maskz_ipcvtps_epi8(U, A) \ | ||
| 172 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask( \ | ||
| 173 | (__v8sf)(__m256)(A), (__v8su)(_mm256_setzero_si256()), (__mmask8)(U), \ | ||
| 174 | _MM_FROUND_CUR_DIRECTION)) | ||
| 175 | |||
| 176 | #define _mm256_ipcvt_roundps_epi8(A, R) \ | ||
| 177 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 178 | (__v8su)_mm256_setzero_si256(), \ | ||
| 179 | (__mmask8)-1, (const int)R)) | ||
| 180 | |||
| 181 | #define _mm256_mask_ipcvt_roundps_epi8(W, U, A, R) \ | ||
| 182 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask( \ | ||
| 183 | (__v8sf)(__m256)(A), (__v8su)(W), (__mmask8)(U), (const int)R)) | ||
| 184 | |||
| 185 | #define _mm256_maskz_ipcvt_roundps_epi8(U, A, R) \ | ||
| 186 | ((__m256i)__builtin_ia32_vcvtps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 187 | (__v8su)_mm256_setzero_si256(), \ | ||
| 188 | (__mmask8)(U), (const int)R)) | ||
| 189 | |||
| 190 | #define _mm_ipcvtps_epu8(A) \ | ||
| 191 | ((__m128i)__builtin_ia32_vcvtps2iubs128_mask( \ | ||
| 192 | (__v4sf)(__m128)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 193 | |||
| 194 | #define _mm_mask_ipcvtps_epu8(W, U, A) \ | ||
| 195 | ((__m128i)__builtin_ia32_vcvtps2iubs128_mask((__v4sf)(__m128)(A), \ | ||
| 196 | (__v4su)(W), (__mmask8)(U))) | ||
| 197 | |||
| 198 | #define _mm_maskz_ipcvtps_epu8(U, A) \ | ||
| 199 | ((__m128i)__builtin_ia32_vcvtps2iubs128_mask( \ | ||
| 200 | (__v4sf)(__m128)(A), (__v4su)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 201 | |||
| 202 | #define _mm256_ipcvtps_epu8(A) \ | ||
| 203 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask( \ | ||
| 204 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 205 | _MM_FROUND_CUR_DIRECTION)) | ||
| 206 | |||
| 207 | #define _mm256_mask_ipcvtps_epu8(W, U, A) \ | ||
| 208 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask((__v8sf)(__m256)(A), \ | ||
| 209 | (__v8su)(W), (__mmask8)(U), \ | ||
| 210 | _MM_FROUND_CUR_DIRECTION)) | ||
| 211 | |||
| 212 | #define _mm256_maskz_ipcvtps_epu8(U, A) \ | ||
| 213 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask( \ | ||
| 214 | (__v8sf)(__m256)(A), (__v8su)(_mm256_setzero_si256()), (__mmask8)(U), \ | ||
| 215 | _MM_FROUND_CUR_DIRECTION)) | ||
| 216 | |||
| 217 | #define _mm256_ipcvt_roundps_epu8(A, R) \ | ||
| 218 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask((__v8sf)(__m256)(A), \ | ||
| 219 | (__v8su)_mm256_setzero_si256(), \ | ||
| 220 | (__mmask8)-1, (const int)R)) | ||
| 221 | |||
| 222 | #define _mm256_mask_ipcvt_roundps_epu8(W, U, A, R) \ | ||
| 223 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask( \ | ||
| 224 | (__v8sf)(__m256)(A), (__v8su)(W), (__mmask8)(U), (const int)R)) | ||
| 225 | |||
| 226 | #define _mm256_maskz_ipcvt_roundps_epu8(U, A, R) \ | ||
| 227 | ((__m256i)__builtin_ia32_vcvtps2iubs256_mask((__v8sf)(__m256)(A), \ | ||
| 228 | (__v8su)_mm256_setzero_si256(), \ | ||
| 229 | (__mmask8)(U), (const int)R)) | ||
| 230 | |||
| 231 | #define _mm_ipcvttbf16_epi8(A) \ | ||
| 232 | ((__m128i)__builtin_ia32_vcvttbf162ibs128((__v8bf)(__m128bh)(A))) | ||
| 233 | |||
| 234 | #define _mm_mask_ipcvttbf16_epi8(W, U, A) \ | ||
| 235 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 236 | (__mmask8)(U), (__v8hi)_mm_ipcvttbf16_epi8(A), (__v8hi)(__m128i)(W))) | ||
| 237 | |||
| 238 | #define _mm_maskz_ipcvttbf16_epi8(U, A) \ | ||
| 239 | ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ | ||
| 240 | (__v8hi)_mm_ipcvttbf16_epi8(A), \ | ||
| 241 | (__v8hi)_mm_setzero_si128())) | ||
| 242 | |||
| 243 | #define _mm256_ipcvttbf16_epi8(A) \ | ||
| 244 | ((__m256i)__builtin_ia32_vcvttbf162ibs256((__v16bf)(__m256bh)(A))) | ||
| 245 | |||
| 246 | #define _mm256_mask_ipcvttbf16_epi8(W, U, A) \ | ||
| 247 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 248 | (__v16hi)_mm256_ipcvttbf16_epi8(A), \ | ||
| 249 | (__v16hi)(__m256i)(W))) | ||
| 250 | |||
| 251 | #define _mm256_maskz_ipcvttbf16_epi8(U, A) \ | ||
| 252 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 253 | (__v16hi)_mm256_ipcvttbf16_epi8(A), \ | ||
| 254 | (__v16hi)_mm256_setzero_si256())) | ||
| 255 | |||
| 256 | #define _mm_ipcvttbf16_epu8(A) \ | ||
| 257 | ((__m128i)__builtin_ia32_vcvttbf162iubs128((__v8bf)(__m128bh)(A))) | ||
| 258 | |||
| 259 | #define _mm_mask_ipcvttbf16_epu8(W, U, A) \ | ||
| 260 | ((__m128i)__builtin_ia32_selectw_128( \ | ||
| 261 | (__mmask8)(U), (__v8hi)_mm_ipcvttbf16_epu8(A), (__v8hi)(__m128i)(W))) | ||
| 262 | |||
| 263 | #define _mm_maskz_ipcvttbf16_epu8(U, A) \ | ||
| 264 | ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ | ||
| 265 | (__v8hi)_mm_ipcvttbf16_epu8(A), \ | ||
| 266 | (__v8hi)_mm_setzero_si128())) | ||
| 267 | |||
| 268 | #define _mm256_ipcvttbf16_epu8(A) \ | ||
| 269 | ((__m256i)__builtin_ia32_vcvttbf162iubs256((__v16bf)(__m256bh)(A))) | ||
| 270 | |||
| 271 | #define _mm256_mask_ipcvttbf16_epu8(W, U, A) \ | ||
| 272 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 273 | (__v16hi)_mm256_ipcvttbf16_epu8(A), \ | ||
| 274 | (__v16hi)(__m256i)(W))) | ||
| 275 | |||
| 276 | #define _mm256_maskz_ipcvttbf16_epu8(U, A) \ | ||
| 277 | ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ | ||
| 278 | (__v16hi)_mm256_ipcvttbf16_epu8(A), \ | ||
| 279 | (__v16hi)_mm256_setzero_si256())) | ||
| 280 | |||
| 281 | #define _mm_ipcvttph_epi8(A) \ | ||
| 282 | ((__m128i)__builtin_ia32_vcvttph2ibs128_mask( \ | ||
| 283 | (__v8hf)(__m128h)(A), (__v8hu)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 284 | |||
| 285 | #define _mm_mask_ipcvttph_epi8(W, U, A) \ | ||
| 286 | ((__m128i)__builtin_ia32_vcvttph2ibs128_mask((__v8hf)(__m128h)(A), \ | ||
| 287 | (__v8hu)(W), (__mmask8)(U))) | ||
| 288 | |||
| 289 | #define _mm_maskz_ipcvttph_epi8(U, A) \ | ||
| 290 | ((__m128i)__builtin_ia32_vcvttph2ibs128_mask( \ | ||
| 291 | (__v8hf)(__m128h)(A), (__v8hu)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 292 | |||
| 293 | #define _mm256_ipcvttph_epi8(A) \ | ||
| 294 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask( \ | ||
| 295 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 296 | _MM_FROUND_CUR_DIRECTION)) | ||
| 297 | |||
| 298 | #define _mm256_mask_ipcvttph_epi8(W, U, A) \ | ||
| 299 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask((__v16hf)(__m256h)(A), \ | ||
| 300 | (__v16hu)(W), (__mmask16)(U), \ | ||
| 301 | _MM_FROUND_CUR_DIRECTION)) | ||
| 302 | |||
| 303 | #define _mm256_maskz_ipcvttph_epi8(U, A) \ | ||
| 304 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask( \ | ||
| 305 | (__v16hf)(__m256h)(A), (__v16hu)(_mm256_setzero_si256()), \ | ||
| 306 | (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 307 | |||
| 308 | #define _mm256_ipcvtt_roundph_epi8(A, R) \ | ||
| 309 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask( \ | ||
| 310 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 311 | (const int)R)) | ||
| 312 | |||
| 313 | #define _mm256_mask_ipcvtt_roundph_epi8(W, U, A, R) \ | ||
| 314 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask( \ | ||
| 315 | (__v16hf)(__m256h)(A), (__v16hu)(W), (__mmask16)(U), (const int)R)) | ||
| 316 | |||
| 317 | #define _mm256_maskz_ipcvtt_roundph_epi8(U, A, R) \ | ||
| 318 | ((__m256i)__builtin_ia32_vcvttph2ibs256_mask( \ | ||
| 319 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 320 | (const int)R)) | ||
| 321 | |||
| 322 | #define _mm_ipcvttph_epu8(A) \ | ||
| 323 | ((__m128i)__builtin_ia32_vcvttph2iubs128_mask( \ | ||
| 324 | (__v8hf)(__m128h)(A), (__v8hu)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 325 | |||
| 326 | #define _mm_mask_ipcvttph_epu8(W, U, A) \ | ||
| 327 | ((__m128i)__builtin_ia32_vcvttph2iubs128_mask((__v8hf)(__m128h)(A), \ | ||
| 328 | (__v8hu)(W), (__mmask8)(U))) | ||
| 329 | |||
| 330 | #define _mm_maskz_ipcvttph_epu8(U, A) \ | ||
| 331 | ((__m128i)__builtin_ia32_vcvttph2iubs128_mask( \ | ||
| 332 | (__v8hf)(__m128h)(A), (__v8hu)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 333 | |||
| 334 | #define _mm256_ipcvttph_epu8(A) \ | ||
| 335 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask( \ | ||
| 336 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 337 | _MM_FROUND_CUR_DIRECTION)) | ||
| 338 | |||
| 339 | #define _mm256_mask_ipcvttph_epu8(W, U, A) \ | ||
| 340 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask((__v16hf)(__m256h)(A), \ | ||
| 341 | (__v16hu)(W), (__mmask16)(U), \ | ||
| 342 | _MM_FROUND_CUR_DIRECTION)) | ||
| 343 | |||
| 344 | #define _mm256_maskz_ipcvttph_epu8(U, A) \ | ||
| 345 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask( \ | ||
| 346 | (__v16hf)(__m256h)(A), (__v16hu)(_mm256_setzero_si256()), \ | ||
| 347 | (__mmask16)(U), _MM_FROUND_CUR_DIRECTION)) | ||
| 348 | |||
| 349 | #define _mm256_ipcvtt_roundph_epu8(A, R) \ | ||
| 350 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask( \ | ||
| 351 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)-1, \ | ||
| 352 | (const int)R)) | ||
| 353 | |||
| 354 | #define _mm256_mask_ipcvtt_roundph_epu8(W, U, A, R) \ | ||
| 355 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask( \ | ||
| 356 | (__v16hf)(__m256h)(A), (__v16hu)(W), (__mmask16)(U), (const int)R)) | ||
| 357 | |||
| 358 | #define _mm256_maskz_ipcvtt_roundph_epu8(U, A, R) \ | ||
| 359 | ((__m256i)__builtin_ia32_vcvttph2iubs256_mask( \ | ||
| 360 | (__v16hf)(__m256h)(A), (__v16hu)_mm256_setzero_si256(), (__mmask16)(U), \ | ||
| 361 | (const int)R)) | ||
| 362 | |||
| 363 | #define _mm_ipcvttps_epi8(A) \ | ||
| 364 | ((__m128i)__builtin_ia32_vcvttps2ibs128_mask( \ | ||
| 365 | (__v4sf)(__m128)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 366 | |||
| 367 | #define _mm_mask_ipcvttps_epi8(W, U, A) \ | ||
| 368 | ((__m128i)__builtin_ia32_vcvttps2ibs128_mask((__v4sf)(__m128)(A), \ | ||
| 369 | (__v4su)(W), (__mmask8)(U))) | ||
| 370 | |||
| 371 | #define _mm_maskz_ipcvttps_epi8(U, A) \ | ||
| 372 | ((__m128i)__builtin_ia32_vcvttps2ibs128_mask( \ | ||
| 373 | (__v4sf)(__m128)(A), (__v4su)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 374 | |||
| 375 | #define _mm256_ipcvttps_epi8(A) \ | ||
| 376 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask( \ | ||
| 377 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 378 | _MM_FROUND_CUR_DIRECTION)) | ||
| 379 | |||
| 380 | #define _mm256_mask_ipcvttps_epi8(W, U, A) \ | ||
| 381 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 382 | (__v8su)(W), (__mmask8)(U), \ | ||
| 383 | _MM_FROUND_CUR_DIRECTION)) | ||
| 384 | |||
| 385 | #define _mm256_maskz_ipcvttps_epi8(U, A) \ | ||
| 386 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask( \ | ||
| 387 | (__v8sf)(__m256)(A), (__v8su)(_mm256_setzero_si256()), (__mmask8)(U), \ | ||
| 388 | _MM_FROUND_CUR_DIRECTION)) | ||
| 389 | |||
| 390 | #define _mm256_ipcvtt_roundps_epi8(A, R) \ | ||
| 391 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 392 | (__v8su)_mm256_setzero_si256(), \ | ||
| 393 | (__mmask8)-1, (const int)R)) | ||
| 394 | |||
| 395 | #define _mm256_mask_ipcvtt_roundps_epi8(W, U, A, R) \ | ||
| 396 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask( \ | ||
| 397 | (__v8sf)(__m256)(A), (__v8su)(W), (__mmask8)(U), (const int)R)) | ||
| 398 | |||
| 399 | #define _mm256_maskz_ipcvtt_roundps_epi8(U, A, R) \ | ||
| 400 | ((__m256i)__builtin_ia32_vcvttps2ibs256_mask((__v8sf)(__m256)(A), \ | ||
| 401 | (__v8su)_mm256_setzero_si256(), \ | ||
| 402 | (__mmask8)(U), (const int)R)) | ||
| 403 | |||
| 404 | #define _mm_ipcvttps_epu8(A) \ | ||
| 405 | ((__m128i)__builtin_ia32_vcvttps2iubs128_mask( \ | ||
| 406 | (__v4sf)(__m128)(A), (__v4su)_mm_setzero_si128(), (__mmask8)-1)) | ||
| 407 | |||
| 408 | #define _mm_mask_ipcvttps_epu8(W, U, A) \ | ||
| 409 | ((__m128i)__builtin_ia32_vcvttps2iubs128_mask((__v4sf)(__m128)(A), \ | ||
| 410 | (__v4su)(W), (__mmask8)(U))) | ||
| 411 | |||
| 412 | #define _mm_maskz_ipcvttps_epu8(U, A) \ | ||
| 413 | ((__m128i)__builtin_ia32_vcvttps2iubs128_mask( \ | ||
| 414 | (__v4sf)(__m128)(A), (__v4su)(_mm_setzero_si128()), (__mmask8)(U))) | ||
| 415 | |||
| 416 | #define _mm256_ipcvttps_epu8(A) \ | ||
| 417 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask( \ | ||
| 418 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 419 | _MM_FROUND_CUR_DIRECTION)) | ||
| 420 | |||
| 421 | #define _mm256_mask_ipcvttps_epu8(W, U, A) \ | ||
| 422 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask((__v8sf)(__m256)(A), \ | ||
| 423 | (__v8su)(W), (__mmask8)(U), \ | ||
| 424 | _MM_FROUND_CUR_DIRECTION)) | ||
| 425 | |||
| 426 | #define _mm256_maskz_ipcvttps_epu8(U, A) \ | ||
| 427 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask( \ | ||
| 428 | (__v8sf)(__m256)(A), (__v8su)(_mm256_setzero_si256()), (__mmask8)(U), \ | ||
| 429 | _MM_FROUND_CUR_DIRECTION)) | ||
| 430 | |||
| 431 | #define _mm256_ipcvtt_roundps_epu8(A, R) \ | ||
| 432 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask( \ | ||
| 433 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)-1, \ | ||
| 434 | (const int)R)) | ||
| 435 | |||
| 436 | #define _mm256_mask_ipcvtt_roundps_epu8(W, U, A, R) \ | ||
| 437 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask( \ | ||
| 438 | (__v8sf)(__m256)(A), (__v8su)(W), (__mmask8)(U), (const int)R)) | ||
| 439 | |||
| 440 | #define _mm256_maskz_ipcvtt_roundps_epu8(U, A, R) \ | ||
| 441 | ((__m256i)__builtin_ia32_vcvttps2iubs256_mask( \ | ||
| 442 | (__v8sf)(__m256)(A), (__v8su)_mm256_setzero_si256(), (__mmask8)(U), \ | ||
| 443 | (const int)R)) | ||
| 444 | #endif // __AVX10_2SATCVTINTRIN_H | ||
lib/include/avx2intrin.h+9| ... | @@ -15,12 +15,21 @@ | ... | @@ -15,12 +15,21 @@ |
| 15 | #define __AVX2INTRIN_H | 15 | #define __AVX2INTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 18 | #define __DEFAULT_FN_ATTRS256 \ | 19 | #define __DEFAULT_FN_ATTRS256 \ |
| 19 | __attribute__((__always_inline__, __nodebug__, \ | 20 | __attribute__((__always_inline__, __nodebug__, \ |
| 20 | __target__("avx2,no-evex512"), __min_vector_width__(256))) | 21 | __target__("avx2,no-evex512"), __min_vector_width__(256))) |
| 21 | #define __DEFAULT_FN_ATTRS128 \ | 22 | #define __DEFAULT_FN_ATTRS128 \ |
| 22 | __attribute__((__always_inline__, __nodebug__, \ | 23 | __attribute__((__always_inline__, __nodebug__, \ |
| 23 | __target__("avx2,no-evex512"), __min_vector_width__(128))) | 24 | __target__("avx2,no-evex512"), __min_vector_width__(128))) |
| 25 | #else | ||
| 26 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 27 | __attribute__((__always_inline__, __nodebug__, __target__("avx2"), \ | ||
| 28 | __min_vector_width__(256))) | ||
| 29 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 30 | __attribute__((__always_inline__, __nodebug__, __target__("avx2"), \ | ||
| 31 | __min_vector_width__(128))) | ||
| 32 | #endif | ||
| 24 | 33 | ||
| 25 | /* SSE4 Multiple Packed Sums of Absolute Difference. */ | 34 | /* SSE4 Multiple Packed Sums of Absolute Difference. */ |
| 26 | /// Computes sixteen sum of absolute difference (SAD) operations on sets of | 35 | /// Computes sixteen sum of absolute difference (SAD) operations on sets of |
lib/include/avx512bitalgintrin.h+2-2| ... | @@ -23,7 +23,7 @@ | ... | @@ -23,7 +23,7 @@ |
| 23 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 23 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
| 24 | _mm512_popcnt_epi16(__m512i __A) | 24 | _mm512_popcnt_epi16(__m512i __A) |
| 25 | { | 25 | { |
| 26 | return (__m512i) __builtin_ia32_vpopcntw_512((__v32hi) __A); | 26 | return (__m512i)__builtin_elementwise_popcount((__v32hu)__A); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 29 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
| ... | @@ -45,7 +45,7 @@ _mm512_maskz_popcnt_epi16(__mmask32 __U, __m512i __B) | ... | @@ -45,7 +45,7 @@ _mm512_maskz_popcnt_epi16(__mmask32 __U, __m512i __B) |
| 45 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 45 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
| 46 | _mm512_popcnt_epi8(__m512i __A) | 46 | _mm512_popcnt_epi8(__m512i __A) |
| 47 | { | 47 | { |
| 48 | return (__m512i) __builtin_ia32_vpopcntb_512((__v64qi) __A); | 48 | return (__m512i)__builtin_elementwise_popcount((__v64qu)__A); |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 51 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
lib/include/avx512fintrin.h+22-14| ... | @@ -175,12 +175,21 @@ typedef enum | ... | @@ -175,12 +175,21 @@ typedef enum |
| 175 | __attribute__((__always_inline__, __nodebug__, \ | 175 | __attribute__((__always_inline__, __nodebug__, \ |
| 176 | __target__("avx512f,no-evex512"))) | 176 | __target__("avx512f,no-evex512"))) |
| 177 | 177 | ||
| 178 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 179 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | ||
| 180 | #define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512 constexpr | ||
| 181 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr | ||
| 182 | #else | ||
| 183 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS128 | ||
| 184 | #define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512 | ||
| 185 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 186 | #endif | ||
| 187 | |||
| 178 | /* Create vectors with repeated elements */ | 188 | /* Create vectors with repeated elements */ |
| 179 | 189 | ||
| 180 | static __inline __m512i __DEFAULT_FN_ATTRS512 | 190 | static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR |
| 181 | _mm512_setzero_si512(void) | 191 | _mm512_setzero_si512(void) { |
| 182 | { | 192 | return __extension__(__m512i)(__v8di){0, 0, 0, 0, 0, 0, 0, 0}; |
| 183 | return __extension__ (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 }; | ||
| 184 | } | 193 | } |
| 185 | 194 | ||
| 186 | #define _mm512_setzero_epi32 _mm512_setzero_si512 | 195 | #define _mm512_setzero_epi32 _mm512_setzero_si512 |
| ... | @@ -256,20 +265,16 @@ _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A) | ... | @@ -256,20 +265,16 @@ _mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A) |
| 256 | (__v8di) _mm512_setzero_si512()); | 265 | (__v8di) _mm512_setzero_si512()); |
| 257 | } | 266 | } |
| 258 | 267 | ||
| 259 | 268 | static __inline __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setzero_ps(void) { | |
| 260 | static __inline __m512 __DEFAULT_FN_ATTRS512 | 269 | return __extension__(__m512){0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, |
| 261 | _mm512_setzero_ps(void) | 270 | 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}; |
| 262 | { | ||
| 263 | return __extension__ (__m512){ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, | ||
| 264 | 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; | ||
| 265 | } | 271 | } |
| 266 | 272 | ||
| 267 | #define _mm512_setzero _mm512_setzero_ps | 273 | #define _mm512_setzero _mm512_setzero_ps |
| 268 | 274 | ||
| 269 | static __inline __m512d __DEFAULT_FN_ATTRS512 | 275 | static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR |
| 270 | _mm512_setzero_pd(void) | 276 | _mm512_setzero_pd(void) { |
| 271 | { | 277 | return __extension__(__m512d){0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; |
| 272 | return __extension__ (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; | ||
| 273 | } | 278 | } |
| 274 | 279 | ||
| 275 | static __inline __m512 __DEFAULT_FN_ATTRS512 | 280 | static __inline __m512 __DEFAULT_FN_ATTRS512 |
| ... | @@ -9775,5 +9780,8 @@ _mm512_cvtsi512_si32(__m512i __A) { | ... | @@ -9775,5 +9780,8 @@ _mm512_cvtsi512_si32(__m512i __A) { |
| 9775 | #undef __DEFAULT_FN_ATTRS512 | 9780 | #undef __DEFAULT_FN_ATTRS512 |
| 9776 | #undef __DEFAULT_FN_ATTRS128 | 9781 | #undef __DEFAULT_FN_ATTRS128 |
| 9777 | #undef __DEFAULT_FN_ATTRS | 9782 | #undef __DEFAULT_FN_ATTRS |
| 9783 | #undef __DEFAULT_FN_ATTRS512_CONSTEXPR | ||
| 9784 | #undef __DEFAULT_FN_ATTRS128_CONSTEXPR | ||
| 9785 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR | ||
| 9778 | 9786 | ||
| 9779 | #endif /* __AVX512FINTRIN_H */ | 9787 | #endif /* __AVX512FINTRIN_H */ |
lib/include/avx512vlbitalgintrin.h+4-4| ... | @@ -27,7 +27,7 @@ | ... | @@ -27,7 +27,7 @@ |
| 27 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 27 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
| 28 | _mm256_popcnt_epi16(__m256i __A) | 28 | _mm256_popcnt_epi16(__m256i __A) |
| 29 | { | 29 | { |
| 30 | return (__m256i) __builtin_ia32_vpopcntw_256((__v16hi) __A); | 30 | return (__m256i)__builtin_elementwise_popcount((__v16hu)__A); |
| 31 | } | 31 | } |
| 32 | 32 | ||
| 33 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 33 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
| ... | @@ -49,7 +49,7 @@ _mm256_maskz_popcnt_epi16(__mmask16 __U, __m256i __B) | ... | @@ -49,7 +49,7 @@ _mm256_maskz_popcnt_epi16(__mmask16 __U, __m256i __B) |
| 49 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 49 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
| 50 | _mm_popcnt_epi16(__m128i __A) | 50 | _mm_popcnt_epi16(__m128i __A) |
| 51 | { | 51 | { |
| 52 | return (__m128i) __builtin_ia32_vpopcntw_128((__v8hi) __A); | 52 | return (__m128i)__builtin_elementwise_popcount((__v8hu)__A); |
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 55 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
| ... | @@ -71,7 +71,7 @@ _mm_maskz_popcnt_epi16(__mmask8 __U, __m128i __B) | ... | @@ -71,7 +71,7 @@ _mm_maskz_popcnt_epi16(__mmask8 __U, __m128i __B) |
| 71 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 71 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
| 72 | _mm256_popcnt_epi8(__m256i __A) | 72 | _mm256_popcnt_epi8(__m256i __A) |
| 73 | { | 73 | { |
| 74 | return (__m256i) __builtin_ia32_vpopcntb_256((__v32qi) __A); | 74 | return (__m256i)__builtin_elementwise_popcount((__v32qu)__A); |
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 77 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
| ... | @@ -93,7 +93,7 @@ _mm256_maskz_popcnt_epi8(__mmask32 __U, __m256i __B) | ... | @@ -93,7 +93,7 @@ _mm256_maskz_popcnt_epi8(__mmask32 __U, __m256i __B) |
| 93 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 93 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
| 94 | _mm_popcnt_epi8(__m128i __A) | 94 | _mm_popcnt_epi8(__m128i __A) |
| 95 | { | 95 | { |
| 96 | return (__m128i) __builtin_ia32_vpopcntb_128((__v16qi) __A); | 96 | return (__m128i)__builtin_elementwise_popcount((__v16qu)__A); |
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 99 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
lib/include/avx512vpopcntdqintrin.h+12-4| ... | @@ -21,8 +21,15 @@ | ... | @@ -21,8 +21,15 @@ |
| 21 | __target__("avx512vpopcntdq,evex512"), \ | 21 | __target__("avx512vpopcntdq,evex512"), \ |
| 22 | __min_vector_width__(512))) | 22 | __min_vector_width__(512))) |
| 23 | 23 | ||
| 24 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi64(__m512i __A) { | 24 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 25 | return (__m512i)__builtin_ia32_vpopcntq_512((__v8di)__A); | 25 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr |
| 26 | #else | ||
| 27 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 28 | #endif | ||
| 29 | |||
| 30 | static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR | ||
| 31 | _mm512_popcnt_epi64(__m512i __A) { | ||
| 32 | return (__m512i)__builtin_elementwise_popcount((__v8du)__A); | ||
| 26 | } | 33 | } |
| 27 | 34 | ||
| 28 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 35 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
| ... | @@ -36,8 +43,9 @@ _mm512_maskz_popcnt_epi64(__mmask8 __U, __m512i __A) { | ... | @@ -36,8 +43,9 @@ _mm512_maskz_popcnt_epi64(__mmask8 __U, __m512i __A) { |
| 36 | return _mm512_mask_popcnt_epi64((__m512i)_mm512_setzero_si512(), __U, __A); | 43 | return _mm512_mask_popcnt_epi64((__m512i)_mm512_setzero_si512(), __U, __A); |
| 37 | } | 44 | } |
| 38 | 45 | ||
| 39 | static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi32(__m512i __A) { | 46 | static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 40 | return (__m512i)__builtin_ia32_vpopcntd_512((__v16si)__A); | 47 | _mm512_popcnt_epi32(__m512i __A) { |
| 48 | return (__m512i)__builtin_elementwise_popcount((__v16su)__A); | ||
| 41 | } | 49 | } |
| 42 | 50 | ||
| 43 | static __inline__ __m512i __DEFAULT_FN_ATTRS | 51 | static __inline__ __m512i __DEFAULT_FN_ATTRS |
lib/include/avx512vpopcntdqvlintrin.h+16-8| ... | @@ -25,9 +25,17 @@ | ... | @@ -25,9 +25,17 @@ |
| 25 | __target__("avx512vpopcntdq,avx512vl,no-evex512"), \ | 25 | __target__("avx512vpopcntdq,avx512vl,no-evex512"), \ |
| 26 | __min_vector_width__(256))) | 26 | __min_vector_width__(256))) |
| 27 | 27 | ||
| 28 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 28 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 29 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr | ||
| 30 | #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr | ||
| 31 | #else | ||
| 32 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 | ||
| 33 | #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 | ||
| 34 | #endif | ||
| 35 | |||
| 36 | static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR | ||
| 29 | _mm_popcnt_epi64(__m128i __A) { | 37 | _mm_popcnt_epi64(__m128i __A) { |
| 30 | return (__m128i)__builtin_ia32_vpopcntq_128((__v2di)__A); | 38 | return (__m128i)__builtin_elementwise_popcount((__v2du)__A); |
| 31 | } | 39 | } |
| 32 | 40 | ||
| 33 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 41 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
| ... | @@ -41,9 +49,9 @@ _mm_maskz_popcnt_epi64(__mmask8 __U, __m128i __A) { | ... | @@ -41,9 +49,9 @@ _mm_maskz_popcnt_epi64(__mmask8 __U, __m128i __A) { |
| 41 | return _mm_mask_popcnt_epi64((__m128i)_mm_setzero_si128(), __U, __A); | 49 | return _mm_mask_popcnt_epi64((__m128i)_mm_setzero_si128(), __U, __A); |
| 42 | } | 50 | } |
| 43 | 51 | ||
| 44 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 52 | static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR |
| 45 | _mm_popcnt_epi32(__m128i __A) { | 53 | _mm_popcnt_epi32(__m128i __A) { |
| 46 | return (__m128i)__builtin_ia32_vpopcntd_128((__v4si)__A); | 54 | return (__m128i)__builtin_elementwise_popcount((__v4su)__A); |
| 47 | } | 55 | } |
| 48 | 56 | ||
| 49 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | 57 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 |
| ... | @@ -57,9 +65,9 @@ _mm_maskz_popcnt_epi32(__mmask8 __U, __m128i __A) { | ... | @@ -57,9 +65,9 @@ _mm_maskz_popcnt_epi32(__mmask8 __U, __m128i __A) { |
| 57 | return _mm_mask_popcnt_epi32((__m128i)_mm_setzero_si128(), __U, __A); | 65 | return _mm_mask_popcnt_epi32((__m128i)_mm_setzero_si128(), __U, __A); |
| 58 | } | 66 | } |
| 59 | 67 | ||
| 60 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 68 | static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR |
| 61 | _mm256_popcnt_epi64(__m256i __A) { | 69 | _mm256_popcnt_epi64(__m256i __A) { |
| 62 | return (__m256i)__builtin_ia32_vpopcntq_256((__v4di)__A); | 70 | return (__m256i)__builtin_elementwise_popcount((__v4du)__A); |
| 63 | } | 71 | } |
| 64 | 72 | ||
| 65 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 73 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
| ... | @@ -73,9 +81,9 @@ _mm256_maskz_popcnt_epi64(__mmask8 __U, __m256i __A) { | ... | @@ -73,9 +81,9 @@ _mm256_maskz_popcnt_epi64(__mmask8 __U, __m256i __A) { |
| 73 | return _mm256_mask_popcnt_epi64((__m256i)_mm256_setzero_si256(), __U, __A); | 81 | return _mm256_mask_popcnt_epi64((__m256i)_mm256_setzero_si256(), __U, __A); |
| 74 | } | 82 | } |
| 75 | 83 | ||
| 76 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 84 | static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR |
| 77 | _mm256_popcnt_epi32(__m256i __A) { | 85 | _mm256_popcnt_epi32(__m256i __A) { |
| 78 | return (__m256i)__builtin_ia32_vpopcntd_256((__v8si)__A); | 86 | return (__m256i)__builtin_elementwise_popcount((__v8su)__A); |
| 79 | } | 87 | } |
| 80 | 88 | ||
| 81 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 89 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 |
lib/include/avxintrin.h+30-16| ... | @@ -50,12 +50,29 @@ typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32))); | ... | @@ -50,12 +50,29 @@ typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32))); |
| 50 | #endif | 50 | #endif |
| 51 | 51 | ||
| 52 | /* Define the default attributes for the functions in this file. */ | 52 | /* Define the default attributes for the functions in this file. */ |
| 53 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 53 | #define __DEFAULT_FN_ATTRS \ | 54 | #define __DEFAULT_FN_ATTRS \ |
| 54 | __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \ | 55 | __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \ |
| 55 | __min_vector_width__(256))) | 56 | __min_vector_width__(256))) |
| 56 | #define __DEFAULT_FN_ATTRS128 \ | 57 | #define __DEFAULT_FN_ATTRS128 \ |
| 57 | __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \ | 58 | __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \ |
| 58 | __min_vector_width__(128))) | 59 | __min_vector_width__(128))) |
| 60 | #else | ||
| 61 | #define __DEFAULT_FN_ATTRS \ | ||
| 62 | __attribute__((__always_inline__, __nodebug__, __target__("avx"), \ | ||
| 63 | __min_vector_width__(256))) | ||
| 64 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 65 | __attribute__((__always_inline__, __nodebug__, __target__("avx"), \ | ||
| 66 | __min_vector_width__(128))) | ||
| 67 | #endif | ||
| 68 | |||
| 69 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 70 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | ||
| 71 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr | ||
| 72 | #else | ||
| 73 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS128 | ||
| 74 | #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 75 | #endif | ||
| 59 | 76 | ||
| 60 | /* Arithmetic */ | 77 | /* Arithmetic */ |
| 61 | /// Adds two 256-bit vectors of [4 x double]. | 78 | /// Adds two 256-bit vectors of [4 x double]. |
| ... | @@ -3689,7 +3706,7 @@ _mm256_undefined_si256(void) | ... | @@ -3689,7 +3706,7 @@ _mm256_undefined_si256(void) |
| 3689 | /// A double-precision floating-point value used to initialize bits [63:0] | 3706 | /// A double-precision floating-point value used to initialize bits [63:0] |
| 3690 | /// of the result. | 3707 | /// of the result. |
| 3691 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. | 3708 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. |
| 3692 | static __inline __m256d __DEFAULT_FN_ATTRS | 3709 | static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3693 | _mm256_set_pd(double __a, double __b, double __c, double __d) | 3710 | _mm256_set_pd(double __a, double __b, double __c, double __d) |
| 3694 | { | 3711 | { |
| 3695 | return __extension__ (__m256d){ __d, __c, __b, __a }; | 3712 | return __extension__ (__m256d){ __d, __c, __b, __a }; |
| ... | @@ -3728,7 +3745,7 @@ _mm256_set_pd(double __a, double __b, double __c, double __d) | ... | @@ -3728,7 +3745,7 @@ _mm256_set_pd(double __a, double __b, double __c, double __d) |
| 3728 | /// A single-precision floating-point value used to initialize bits [31:0] | 3745 | /// A single-precision floating-point value used to initialize bits [31:0] |
| 3729 | /// of the result. | 3746 | /// of the result. |
| 3730 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. | 3747 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. |
| 3731 | static __inline __m256 __DEFAULT_FN_ATTRS | 3748 | static __inline __m256 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3732 | _mm256_set_ps(float __a, float __b, float __c, float __d, | 3749 | _mm256_set_ps(float __a, float __b, float __c, float __d, |
| 3733 | float __e, float __f, float __g, float __h) | 3750 | float __e, float __f, float __g, float __h) |
| 3734 | { | 3751 | { |
| ... | @@ -3955,7 +3972,7 @@ _mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d) | ... | @@ -3955,7 +3972,7 @@ _mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d) |
| 3955 | /// A double-precision floating-point value used to initialize bits [255:192] | 3972 | /// A double-precision floating-point value used to initialize bits [255:192] |
| 3956 | /// of the result. | 3973 | /// of the result. |
| 3957 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. | 3974 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. |
| 3958 | static __inline __m256d __DEFAULT_FN_ATTRS | 3975 | static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3959 | _mm256_setr_pd(double __a, double __b, double __c, double __d) | 3976 | _mm256_setr_pd(double __a, double __b, double __c, double __d) |
| 3960 | { | 3977 | { |
| 3961 | return _mm256_set_pd(__d, __c, __b, __a); | 3978 | return _mm256_set_pd(__d, __c, __b, __a); |
| ... | @@ -3995,7 +4012,7 @@ _mm256_setr_pd(double __a, double __b, double __c, double __d) | ... | @@ -3995,7 +4012,7 @@ _mm256_setr_pd(double __a, double __b, double __c, double __d) |
| 3995 | /// A single-precision floating-point value used to initialize bits [255:224] | 4012 | /// A single-precision floating-point value used to initialize bits [255:224] |
| 3996 | /// of the result. | 4013 | /// of the result. |
| 3997 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. | 4014 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. |
| 3998 | static __inline __m256 __DEFAULT_FN_ATTRS | 4015 | static __inline __m256 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3999 | _mm256_setr_ps(float __a, float __b, float __c, float __d, | 4016 | _mm256_setr_ps(float __a, float __b, float __c, float __d, |
| 4000 | float __e, float __f, float __g, float __h) | 4017 | float __e, float __f, float __g, float __h) |
| 4001 | { | 4018 | { |
| ... | @@ -4212,7 +4229,7 @@ _mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d) | ... | @@ -4212,7 +4229,7 @@ _mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d) |
| 4212 | /// A double-precision floating-point value used to initialize each vector | 4229 | /// A double-precision floating-point value used to initialize each vector |
| 4213 | /// element of the result. | 4230 | /// element of the result. |
| 4214 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. | 4231 | /// \returns An initialized 256-bit floating-point vector of [4 x double]. |
| 4215 | static __inline __m256d __DEFAULT_FN_ATTRS | 4232 | static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4216 | _mm256_set1_pd(double __w) | 4233 | _mm256_set1_pd(double __w) |
| 4217 | { | 4234 | { |
| 4218 | return _mm256_set_pd(__w, __w, __w, __w); | 4235 | return _mm256_set_pd(__w, __w, __w, __w); |
| ... | @@ -4231,7 +4248,7 @@ _mm256_set1_pd(double __w) | ... | @@ -4231,7 +4248,7 @@ _mm256_set1_pd(double __w) |
| 4231 | /// A single-precision floating-point value used to initialize each vector | 4248 | /// A single-precision floating-point value used to initialize each vector |
| 4232 | /// element of the result. | 4249 | /// element of the result. |
| 4233 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. | 4250 | /// \returns An initialized 256-bit floating-point vector of [8 x float]. |
| 4234 | static __inline __m256 __DEFAULT_FN_ATTRS | 4251 | static __inline __m256 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4235 | _mm256_set1_ps(float __w) | 4252 | _mm256_set1_ps(float __w) |
| 4236 | { | 4253 | { |
| 4237 | return _mm256_set_ps(__w, __w, __w, __w, __w, __w, __w, __w); | 4254 | return _mm256_set_ps(__w, __w, __w, __w, __w, __w, __w, __w); |
| ... | @@ -4322,10 +4339,8 @@ _mm256_set1_epi64x(long long __q) | ... | @@ -4322,10 +4339,8 @@ _mm256_set1_epi64x(long long __q) |
| 4322 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. | 4339 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. |
| 4323 | /// | 4340 | /// |
| 4324 | /// \returns A 256-bit vector of [4 x double] with all elements set to zero. | 4341 | /// \returns A 256-bit vector of [4 x double] with all elements set to zero. |
| 4325 | static __inline __m256d __DEFAULT_FN_ATTRS | 4342 | static __inline __m256d __DEFAULT_FN_ATTRS_CONSTEXPR _mm256_setzero_pd(void) { |
| 4326 | _mm256_setzero_pd(void) | 4343 | return __extension__(__m256d){0.0, 0.0, 0.0, 0.0}; |
| 4327 | { | ||
| 4328 | return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 }; | ||
| 4329 | } | 4344 | } |
| 4330 | 4345 | ||
| 4331 | /// Constructs a 256-bit floating-point vector of [8 x float] with all | 4346 | /// Constructs a 256-bit floating-point vector of [8 x float] with all |
| ... | @@ -4336,9 +4351,7 @@ _mm256_setzero_pd(void) | ... | @@ -4336,9 +4351,7 @@ _mm256_setzero_pd(void) |
| 4336 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. | 4351 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. |
| 4337 | /// | 4352 | /// |
| 4338 | /// \returns A 256-bit vector of [8 x float] with all elements set to zero. | 4353 | /// \returns A 256-bit vector of [8 x float] with all elements set to zero. |
| 4339 | static __inline __m256 __DEFAULT_FN_ATTRS | 4354 | static __inline __m256 __DEFAULT_FN_ATTRS_CONSTEXPR _mm256_setzero_ps(void) { |
| 4340 | _mm256_setzero_ps(void) | ||
| 4341 | { | ||
| 4342 | return __extension__ (__m256){ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; | 4355 | return __extension__ (__m256){ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; |
| 4343 | } | 4356 | } |
| 4344 | 4357 | ||
| ... | @@ -4349,9 +4362,8 @@ _mm256_setzero_ps(void) | ... | @@ -4349,9 +4362,8 @@ _mm256_setzero_ps(void) |
| 4349 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. | 4362 | /// This intrinsic corresponds to the <c> VXORPS </c> instruction. |
| 4350 | /// | 4363 | /// |
| 4351 | /// \returns A 256-bit integer vector initialized to zero. | 4364 | /// \returns A 256-bit integer vector initialized to zero. |
| 4352 | static __inline __m256i __DEFAULT_FN_ATTRS | 4365 | static __inline __m256i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4353 | _mm256_setzero_si256(void) | 4366 | _mm256_setzero_si256(void) { |
| 4354 | { | ||
| 4355 | return __extension__ (__m256i)(__v4di){ 0, 0, 0, 0 }; | 4367 | return __extension__ (__m256i)(__v4di){ 0, 0, 0, 0 }; |
| 4356 | } | 4368 | } |
| 4357 | 4369 | ||
| ... | @@ -5121,6 +5133,8 @@ _mm256_storeu2_m128i(__m128i_u *__addr_hi, __m128i_u *__addr_lo, __m256i __a) | ... | @@ -5121,6 +5133,8 @@ _mm256_storeu2_m128i(__m128i_u *__addr_hi, __m128i_u *__addr_lo, __m256i __a) |
| 5121 | } | 5133 | } |
| 5122 | 5134 | ||
| 5123 | #undef __DEFAULT_FN_ATTRS | 5135 | #undef __DEFAULT_FN_ATTRS |
| 5136 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR | ||
| 5124 | #undef __DEFAULT_FN_ATTRS128 | 5137 | #undef __DEFAULT_FN_ATTRS128 |
| 5138 | #undef __DEFAULT_FN_ATTRS128_CONSTEXPR | ||
| 5125 | 5139 | ||
| 5126 | #endif /* __AVXINTRIN_H */ | 5140 | #endif /* __AVXINTRIN_H */ |
lib/include/avxvnniint16intrin.h+36-77| ... | @@ -15,14 +15,6 @@ | ... | @@ -15,14 +15,6 @@ |
| 15 | #ifndef __AVXVNNIINT16INTRIN_H | 15 | #ifndef __AVXVNNIINT16INTRIN_H |
| 16 | #define __AVXVNNIINT16INTRIN_H | 16 | #define __AVXVNNIINT16INTRIN_H |
| 17 | 17 | ||
| 18 | /* Define the default attributes for the functions in this file. */ | ||
| 19 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \ | ||
| 21 | __min_vector_width__(128))) | ||
| 22 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 23 | __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \ | ||
| 24 | __min_vector_width__(256))) | ||
| 25 | |||
| 26 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with | 18 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with |
| 27 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 19 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| 28 | /// signed 16-bit results. Sum these 2 results with the corresponding | 20 | /// signed 16-bit results. Sum these 2 results with the corresponding |
| ... | @@ -53,12 +45,9 @@ | ... | @@ -53,12 +45,9 @@ |
| 53 | /// ENDFOR | 45 | /// ENDFOR |
| 54 | /// dst[MAX:128] := 0 | 46 | /// dst[MAX:128] := 0 |
| 55 | /// \endcode | 47 | /// \endcode |
| 56 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsud_epi32(__m128i __W, | 48 | #define _mm_dpwsud_epi32(__W, __A, __B) \ |
| 57 | __m128i __A, | 49 | ((__m128i)__builtin_ia32_vpdpwsud128((__v4si)(__W), (__v4si)(__A), \ |
| 58 | __m128i __B) { | 50 | (__v4si)(__B))) |
| 59 | return (__m128i)__builtin_ia32_vpdpwsud128((__v4si)__W, (__v4si)__A, | ||
| 60 | (__v4si)__B); | ||
| 61 | } | ||
| 62 | 51 | ||
| 63 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with | 52 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with |
| 64 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 53 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -90,11 +79,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsud_epi32(__m128i __W, | ... | @@ -90,11 +79,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsud_epi32(__m128i __W, |
| 90 | /// ENDFOR | 79 | /// ENDFOR |
| 91 | /// dst[MAX:256] := 0 | 80 | /// dst[MAX:256] := 0 |
| 92 | /// \endcode | 81 | /// \endcode |
| 93 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 82 | #define _mm256_dpwsud_epi32(__W, __A, __B) \ |
| 94 | _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B) { | 83 | ((__m256i)__builtin_ia32_vpdpwsud256((__v8si)(__W), (__v8si)(__A), \ |
| 95 | return (__m256i)__builtin_ia32_vpdpwsud256((__v8si)__W, (__v8si)__A, | 84 | (__v8si)(__B))) |
| 96 | (__v8si)__B); | ||
| 97 | } | ||
| 98 | 85 | ||
| 99 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with | 86 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with |
| 100 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 87 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -127,12 +114,9 @@ _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -127,12 +114,9 @@ _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 127 | /// ENDFOR | 114 | /// ENDFOR |
| 128 | /// dst[MAX:128] := 0 | 115 | /// dst[MAX:128] := 0 |
| 129 | /// \endcode | 116 | /// \endcode |
| 130 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsuds_epi32(__m128i __W, | 117 | #define _mm_dpwsuds_epi32(__W, __A, __B) \ |
| 131 | __m128i __A, | 118 | ((__m128i)__builtin_ia32_vpdpwsuds128((__v4si)(__W), (__v4si)(__A), \ |
| 132 | __m128i __B) { | 119 | (__v4si)(__B))) |
| 133 | return (__m128i)__builtin_ia32_vpdpwsuds128((__v4si)__W, (__v4si)__A, | ||
| 134 | (__v4si)__B); | ||
| 135 | } | ||
| 136 | 120 | ||
| 137 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with | 121 | /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with |
| 138 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 122 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -165,11 +149,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsuds_epi32(__m128i __W, | ... | @@ -165,11 +149,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsuds_epi32(__m128i __W, |
| 165 | /// ENDFOR | 149 | /// ENDFOR |
| 166 | /// dst[MAX:256] := 0 | 150 | /// dst[MAX:256] := 0 |
| 167 | /// \endcode | 151 | /// \endcode |
| 168 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 152 | #define _mm256_dpwsuds_epi32(__W, __A, __B) \ |
| 169 | _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 153 | ((__m256i)__builtin_ia32_vpdpwsuds256((__v8si)(__W), (__v8si)(__A), \ |
| 170 | return (__m256i)__builtin_ia32_vpdpwsuds256((__v8si)__W, (__v8si)__A, | 154 | (__v8si)(__B))) |
| 171 | (__v8si)__B); | ||
| 172 | } | ||
| 173 | 155 | ||
| 174 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 156 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 175 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate | 157 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -201,12 +183,9 @@ _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -201,12 +183,9 @@ _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 201 | /// ENDFOR | 183 | /// ENDFOR |
| 202 | /// dst[MAX:128] := 0 | 184 | /// dst[MAX:128] := 0 |
| 203 | /// \endcode | 185 | /// \endcode |
| 204 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusd_epi32(__m128i __W, | 186 | #define _mm_dpwusd_epi32(__W, __A, __B) \ |
| 205 | __m128i __A, | 187 | ((__m128i)__builtin_ia32_vpdpwusd128((__v4si)(__W), (__v4si)(__A), \ |
| 206 | __m128i __B) { | 188 | (__v4si)(__B))) |
| 207 | return (__m128i)__builtin_ia32_vpdpwusd128((__v4si)__W, (__v4si)__A, | ||
| 208 | (__v4si)__B); | ||
| 209 | } | ||
| 210 | 189 | ||
| 211 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 190 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 212 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate | 191 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -238,11 +217,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusd_epi32(__m128i __W, | ... | @@ -238,11 +217,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusd_epi32(__m128i __W, |
| 238 | /// ENDFOR | 217 | /// ENDFOR |
| 239 | /// dst[MAX:256] := 0 | 218 | /// dst[MAX:256] := 0 |
| 240 | /// \endcode | 219 | /// \endcode |
| 241 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 220 | #define _mm256_dpwusd_epi32(__W, __A, __B) \ |
| 242 | _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B) { | 221 | ((__m256i)__builtin_ia32_vpdpwusd256((__v8si)(__W), (__v8si)(__A), \ |
| 243 | return (__m256i)__builtin_ia32_vpdpwusd256((__v8si)__W, (__v8si)__A, | 222 | (__v8si)(__B))) |
| 244 | (__v8si)__B); | ||
| 245 | } | ||
| 246 | 223 | ||
| 247 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 224 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 248 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate | 225 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -275,12 +252,9 @@ _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -275,12 +252,9 @@ _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 275 | /// ENDFOR | 252 | /// ENDFOR |
| 276 | /// dst[MAX:128] := 0 | 253 | /// dst[MAX:128] := 0 |
| 277 | /// \endcode | 254 | /// \endcode |
| 278 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusds_epi32(__m128i __W, | 255 | #define _mm_dpwusds_epi32(__W, __A, __B) \ |
| 279 | __m128i __A, | 256 | ((__m128i)__builtin_ia32_vpdpwusds128((__v4si)(__W), (__v4si)(__A), \ |
| 280 | __m128i __B) { | 257 | (__v4si)(__B))) |
| 281 | return (__m128i)__builtin_ia32_vpdpwusds128((__v4si)__W, (__v4si)__A, | ||
| 282 | (__v4si)__B); | ||
| 283 | } | ||
| 284 | 258 | ||
| 285 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 259 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 286 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate | 260 | /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -313,11 +287,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusds_epi32(__m128i __W, | ... | @@ -313,11 +287,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusds_epi32(__m128i __W, |
| 313 | /// ENDFOR | 287 | /// ENDFOR |
| 314 | /// dst[MAX:256] := 0 | 288 | /// dst[MAX:256] := 0 |
| 315 | /// \endcode | 289 | /// \endcode |
| 316 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 290 | #define _mm256_dpwusds_epi32(__W, __A, __B) \ |
| 317 | _mm256_dpwusds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 291 | ((__m256i)__builtin_ia32_vpdpwusds256((__v8si)(__W), (__v8si)(__A), \ |
| 318 | return (__m256i)__builtin_ia32_vpdpwusds256((__v8si)__W, (__v8si)__A, | 292 | (__v8si)(__B))) |
| 319 | (__v8si)__B); | ||
| 320 | } | ||
| 321 | 293 | ||
| 322 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 294 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 323 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 295 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -349,12 +321,9 @@ _mm256_dpwusds_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -349,12 +321,9 @@ _mm256_dpwusds_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 349 | /// ENDFOR | 321 | /// ENDFOR |
| 350 | /// dst[MAX:128] := 0 | 322 | /// dst[MAX:128] := 0 |
| 351 | /// \endcode | 323 | /// \endcode |
| 352 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuud_epi32(__m128i __W, | 324 | #define _mm_dpwuud_epi32(__W, __A, __B) \ |
| 353 | __m128i __A, | 325 | ((__m128i)__builtin_ia32_vpdpwuud128((__v4si)(__W), (__v4si)(__A), \ |
| 354 | __m128i __B) { | 326 | (__v4si)(__B))) |
| 355 | return (__m128i)__builtin_ia32_vpdpwuud128((__v4si)__W, (__v4si)__A, | ||
| 356 | (__v4si)__B); | ||
| 357 | } | ||
| 358 | 327 | ||
| 359 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 328 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 360 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 329 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -386,11 +355,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuud_epi32(__m128i __W, | ... | @@ -386,11 +355,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuud_epi32(__m128i __W, |
| 386 | /// ENDFOR | 355 | /// ENDFOR |
| 387 | /// dst[MAX:256] := 0 | 356 | /// dst[MAX:256] := 0 |
| 388 | /// \endcode | 357 | /// \endcode |
| 389 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 358 | #define _mm256_dpwuud_epi32(__W, __A, __B) \ |
| 390 | _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B) { | 359 | ((__m256i)__builtin_ia32_vpdpwuud256((__v8si)(__W), (__v8si)(__A), \ |
| 391 | return (__m256i)__builtin_ia32_vpdpwuud256((__v8si)__W, (__v8si)__A, | 360 | (__v8si)(__B))) |
| 392 | (__v8si)__B); | ||
| 393 | } | ||
| 394 | 361 | ||
| 395 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 362 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 396 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 363 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -423,12 +390,9 @@ _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -423,12 +390,9 @@ _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 423 | /// ENDFOR | 390 | /// ENDFOR |
| 424 | /// dst[MAX:128] := 0 | 391 | /// dst[MAX:128] := 0 |
| 425 | /// \endcode | 392 | /// \endcode |
| 426 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuuds_epi32(__m128i __W, | 393 | #define _mm_dpwuuds_epi32(__W, __A, __B) \ |
| 427 | __m128i __A, | 394 | ((__m128i)__builtin_ia32_vpdpwuuds128((__v4si)(__W), (__v4si)(__A), \ |
| 428 | __m128i __B) { | 395 | (__v4si)(__B))) |
| 429 | return (__m128i)__builtin_ia32_vpdpwuuds128((__v4si)__W, (__v4si)__A, | ||
| 430 | (__v4si)__B); | ||
| 431 | } | ||
| 432 | 396 | ||
| 433 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with | 397 | /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with |
| 434 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate | 398 | /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate |
| ... | @@ -461,13 +425,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuuds_epi32(__m128i __W, | ... | @@ -461,13 +425,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuuds_epi32(__m128i __W, |
| 461 | /// ENDFOR | 425 | /// ENDFOR |
| 462 | /// dst[MAX:256] := 0 | 426 | /// dst[MAX:256] := 0 |
| 463 | /// \endcode | 427 | /// \endcode |
| 464 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 428 | #define _mm256_dpwuuds_epi32(__W, __A, __B) \ |
| 465 | _mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 429 | ((__m256i)__builtin_ia32_vpdpwuuds256((__v8si)(__W), (__v8si)(__A), \ |
| 466 | return (__m256i)__builtin_ia32_vpdpwuuds256((__v8si)__W, (__v8si)__A, | 430 | (__v8si)(__B))) |
| 467 | (__v8si)__B); | ||
| 468 | } | ||
| 469 | |||
| 470 | #undef __DEFAULT_FN_ATTRS128 | ||
| 471 | #undef __DEFAULT_FN_ATTRS256 | ||
| 472 | 431 | ||
| 473 | #endif // __AVXVNNIINT16INTRIN_H | 432 | #endif // __AVXVNNIINT16INTRIN_H |
lib/include/avxvnniint8intrin.h+36-77| ... | @@ -14,14 +14,6 @@ | ... | @@ -14,14 +14,6 @@ |
| 14 | #ifndef __AVXVNNIINT8INTRIN_H | 14 | #ifndef __AVXVNNIINT8INTRIN_H |
| 15 | #define __AVXVNNIINT8INTRIN_H | 15 | #define __AVXVNNIINT8INTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | ||
| 18 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 19 | __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \ | ||
| 20 | __min_vector_width__(256))) | ||
| 21 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 22 | __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \ | ||
| 23 | __min_vector_width__(128))) | ||
| 24 | |||
| 25 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 17 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 26 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate | 18 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate |
| 27 | /// signed 16-bit results. Sum these 4 results with the corresponding | 19 | /// signed 16-bit results. Sum these 4 results with the corresponding |
| ... | @@ -52,12 +44,9 @@ | ... | @@ -52,12 +44,9 @@ |
| 52 | /// ENDFOR | 44 | /// ENDFOR |
| 53 | /// dst[MAX:128] := 0 | 45 | /// dst[MAX:128] := 0 |
| 54 | /// \endcode | 46 | /// \endcode |
| 55 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32(__m128i __W, | 47 | #define _mm_dpbssd_epi32(__W, __A, __B) \ |
| 56 | __m128i __A, | 48 | ((__m128i)__builtin_ia32_vpdpbssd128((__v4si)(__W), (__v4si)(__A), \ |
| 57 | __m128i __B) { | 49 | (__v4si)(__B))) |
| 58 | return (__m128i)__builtin_ia32_vpdpbssd128((__v4si)__W, (__v4si)__A, | ||
| 59 | (__v4si)__B); | ||
| 60 | } | ||
| 61 | 50 | ||
| 62 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 51 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 63 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate | 52 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -89,11 +78,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32(__m128i __W, | ... | @@ -89,11 +78,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32(__m128i __W, |
| 89 | /// ENDFOR | 78 | /// ENDFOR |
| 90 | /// dst[MAX:256] := 0 | 79 | /// dst[MAX:256] := 0 |
| 91 | /// \endcode | 80 | /// \endcode |
| 92 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 81 | #define _mm256_dpbssd_epi32(__W, __A, __B) \ |
| 93 | _mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B) { | 82 | ((__m256i)__builtin_ia32_vpdpbssd256((__v8si)(__W), (__v8si)(__A), \ |
| 94 | return (__m256i)__builtin_ia32_vpdpbssd256((__v8si)__W, (__v8si)__A, | 83 | (__v8si)(__B))) |
| 95 | (__v8si)__B); | ||
| 96 | } | ||
| 97 | 84 | ||
| 98 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 85 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 99 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate | 86 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -126,12 +113,9 @@ _mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -126,12 +113,9 @@ _mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 126 | /// ENDFOR | 113 | /// ENDFOR |
| 127 | /// dst[MAX:128] := 0 | 114 | /// dst[MAX:128] := 0 |
| 128 | /// \endcode | 115 | /// \endcode |
| 129 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32(__m128i __W, | 116 | #define _mm_dpbssds_epi32(__W, __A, __B) \ |
| 130 | __m128i __A, | 117 | ((__m128i)__builtin_ia32_vpdpbssds128((__v4si)(__W), (__v4si)(__A), \ |
| 131 | __m128i __B) { | 118 | (__v4si)(__B))) |
| 132 | return (__m128i)__builtin_ia32_vpdpbssds128((__v4si)__W, (__v4si)__A, | ||
| 133 | (__v4si)__B); | ||
| 134 | } | ||
| 135 | 119 | ||
| 136 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 120 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 137 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate | 121 | /// corresponding signed 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -164,11 +148,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32(__m128i __W, | ... | @@ -164,11 +148,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32(__m128i __W, |
| 164 | /// ENDFOR | 148 | /// ENDFOR |
| 165 | /// dst[MAX:256] := 0 | 149 | /// dst[MAX:256] := 0 |
| 166 | /// \endcode | 150 | /// \endcode |
| 167 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 151 | #define _mm256_dpbssds_epi32(__W, __A, __B) \ |
| 168 | _mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 152 | ((__m256i)__builtin_ia32_vpdpbssds256((__v8si)(__W), (__v8si)(__A), \ |
| 169 | return (__m256i)__builtin_ia32_vpdpbssds256((__v8si)__W, (__v8si)__A, | 153 | (__v8si)(__B))) |
| 170 | (__v8si)__B); | ||
| 171 | } | ||
| 172 | 154 | ||
| 173 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 155 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 174 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 156 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -200,12 +182,9 @@ _mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -200,12 +182,9 @@ _mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 200 | /// ENDFOR | 182 | /// ENDFOR |
| 201 | /// dst[MAX:128] := 0 | 183 | /// dst[MAX:128] := 0 |
| 202 | /// \endcode | 184 | /// \endcode |
| 203 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32(__m128i __W, | 185 | #define _mm_dpbsud_epi32(__W, __A, __B) \ |
| 204 | __m128i __A, | 186 | ((__m128i)__builtin_ia32_vpdpbsud128((__v4si)(__W), (__v4si)(__A), \ |
| 205 | __m128i __B) { | 187 | (__v4si)(__B))) |
| 206 | return (__m128i)__builtin_ia32_vpdpbsud128((__v4si)__W, (__v4si)__A, | ||
| 207 | (__v4si)__B); | ||
| 208 | } | ||
| 209 | 188 | ||
| 210 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 189 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 211 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 190 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -237,11 +216,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32(__m128i __W, | ... | @@ -237,11 +216,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32(__m128i __W, |
| 237 | /// ENDFOR | 216 | /// ENDFOR |
| 238 | /// dst[MAX:256] := 0 | 217 | /// dst[MAX:256] := 0 |
| 239 | /// \endcode | 218 | /// \endcode |
| 240 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 219 | #define _mm256_dpbsud_epi32(__W, __A, __B) \ |
| 241 | _mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B) { | 220 | ((__m256i)__builtin_ia32_vpdpbsud256((__v8si)(__W), (__v8si)(__A), \ |
| 242 | return (__m256i)__builtin_ia32_vpdpbsud256((__v8si)__W, (__v8si)__A, | 221 | (__v8si)(__B))) |
| 243 | (__v8si)__B); | ||
| 244 | } | ||
| 245 | 222 | ||
| 246 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 223 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 247 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 224 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -274,12 +251,9 @@ _mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -274,12 +251,9 @@ _mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 274 | /// ENDFOR | 251 | /// ENDFOR |
| 275 | /// dst[MAX:128] := 0 | 252 | /// dst[MAX:128] := 0 |
| 276 | /// \endcode | 253 | /// \endcode |
| 277 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32(__m128i __W, | 254 | #define _mm_dpbsuds_epi32(__W, __A, __B) \ |
| 278 | __m128i __A, | 255 | ((__m128i)__builtin_ia32_vpdpbsuds128((__v4si)(__W), (__v4si)(__A), \ |
| 279 | __m128i __B) { | 256 | (__v4si)(__B))) |
| 280 | return (__m128i)__builtin_ia32_vpdpbsuds128((__v4si)__W, (__v4si)__A, | ||
| 281 | (__v4si)__B); | ||
| 282 | } | ||
| 283 | 257 | ||
| 284 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | 258 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with |
| 285 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 259 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -312,11 +286,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32(__m128i __W, | ... | @@ -312,11 +286,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32(__m128i __W, |
| 312 | /// ENDFOR | 286 | /// ENDFOR |
| 313 | /// dst[MAX:256] := 0 | 287 | /// dst[MAX:256] := 0 |
| 314 | /// \endcode | 288 | /// \endcode |
| 315 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 289 | #define _mm256_dpbsuds_epi32(__W, __A, __B) \ |
| 316 | _mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 290 | ((__m256i)__builtin_ia32_vpdpbsuds256((__v8si)(__W), (__v8si)(__A), \ |
| 317 | return (__m256i)__builtin_ia32_vpdpbsuds256((__v8si)__W, (__v8si)__A, | 291 | (__v8si)(__B))) |
| 318 | (__v8si)__B); | ||
| 319 | } | ||
| 320 | 292 | ||
| 321 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with | 293 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with |
| 322 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 294 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -348,12 +320,9 @@ _mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -348,12 +320,9 @@ _mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 348 | /// ENDFOR | 320 | /// ENDFOR |
| 349 | /// dst[MAX:128] := 0 | 321 | /// dst[MAX:128] := 0 |
| 350 | /// \endcode | 322 | /// \endcode |
| 351 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32(__m128i __W, | 323 | #define _mm_dpbuud_epi32(__W, __A, __B) \ |
| 352 | __m128i __A, | 324 | ((__m128i)__builtin_ia32_vpdpbuud128((__v4si)(__W), (__v4si)(__A), \ |
| 353 | __m128i __B) { | 325 | (__v4si)(__B))) |
| 354 | return (__m128i)__builtin_ia32_vpdpbuud128((__v4si)__W, (__v4si)__A, | ||
| 355 | (__v4si)__B); | ||
| 356 | } | ||
| 357 | 326 | ||
| 358 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with | 327 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with |
| 359 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 328 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -385,11 +354,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32(__m128i __W, | ... | @@ -385,11 +354,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32(__m128i __W, |
| 385 | /// ENDFOR | 354 | /// ENDFOR |
| 386 | /// dst[MAX:256] := 0 | 355 | /// dst[MAX:256] := 0 |
| 387 | /// \endcode | 356 | /// \endcode |
| 388 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 357 | #define _mm256_dpbuud_epi32(__W, __A, __B) \ |
| 389 | _mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B) { | 358 | ((__m256i)__builtin_ia32_vpdpbuud256((__v8si)(__W), (__v8si)(__A), \ |
| 390 | return (__m256i)__builtin_ia32_vpdpbuud256((__v8si)__W, (__v8si)__A, | 359 | (__v8si)(__B))) |
| 391 | (__v8si)__B); | ||
| 392 | } | ||
| 393 | 360 | ||
| 394 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with | 361 | /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with |
| 395 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 362 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| ... | @@ -422,14 +389,10 @@ _mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B) { | ... | @@ -422,14 +389,10 @@ _mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B) { |
| 422 | /// ENDFOR | 389 | /// ENDFOR |
| 423 | /// dst[MAX:128] := 0 | 390 | /// dst[MAX:128] := 0 |
| 424 | /// \endcode | 391 | /// \endcode |
| 425 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32(__m128i __W, | 392 | #define _mm_dpbuuds_epi32(__W, __A, __B) \ |
| 426 | __m128i __A, | 393 | ((__m128i)__builtin_ia32_vpdpbuuds128((__v4si)(__W), (__v4si)(__A), \ |
| 427 | __m128i __B) { | 394 | (__v4si)(__B))) |
| 428 | return (__m128i)__builtin_ia32_vpdpbuuds128((__v4si)__W, (__v4si)__A, | ||
| 429 | (__v4si)__B); | ||
| 430 | } | ||
| 431 | 395 | ||
| 432 | /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with | ||
| 433 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate | 396 | /// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate |
| 434 | /// signed 16-bit results. Sum these 4 results with the corresponding | 397 | /// signed 16-bit results. Sum these 4 results with the corresponding |
| 435 | /// 32-bit integer in \a __W with signed saturation, and store the packed | 398 | /// 32-bit integer in \a __W with signed saturation, and store the packed |
| ... | @@ -460,12 +423,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32(__m128i __W, | ... | @@ -460,12 +423,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32(__m128i __W, |
| 460 | /// ENDFOR | 423 | /// ENDFOR |
| 461 | /// dst[MAX:256] := 0 | 424 | /// dst[MAX:256] := 0 |
| 462 | /// \endcode | 425 | /// \endcode |
| 463 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | 426 | #define _mm256_dpbuuds_epi32(__W, __A, __B) \ |
| 464 | _mm256_dpbuuds_epi32(__m256i __W, __m256i __A, __m256i __B) { | 427 | ((__m256i)__builtin_ia32_vpdpbuuds256((__v8si)(__W), (__v8si)(__A), \ |
| 465 | return (__m256i)__builtin_ia32_vpdpbuuds256((__v8si)__W, (__v8si)__A, | 428 | (__v8si)(__B))) |
| 466 | (__v8si)__B); | ||
| 467 | } | ||
| 468 | #undef __DEFAULT_FN_ATTRS128 | ||
| 469 | #undef __DEFAULT_FN_ATTRS256 | ||
| 470 | 429 | ||
| 471 | #endif // __AVXVNNIINT8INTRIN_H | 430 | #endif // __AVXVNNIINT8INTRIN_H |
lib/include/bmi2intrin.h+15-17| ... | @@ -15,7 +15,13 @@ | ... | @@ -15,7 +15,13 @@ |
| 15 | #define __BMI2INTRIN_H | 15 | #define __BMI2INTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi2"))) | 18 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("bmi2"))) constexpr | ||
| 21 | #else | ||
| 22 | #define __DEFAULT_FN_ATTRS \ | ||
| 23 | __attribute__((__always_inline__, __nodebug__, __target__("bmi2"))) | ||
| 24 | #endif | ||
| 19 | 25 | ||
| 20 | /// Copies the unsigned 32-bit integer \a __X and zeroes the upper bits | 26 | /// Copies the unsigned 32-bit integer \a __X and zeroes the upper bits |
| 21 | /// starting at bit number \a __Y. | 27 | /// starting at bit number \a __Y. |
| ... | @@ -38,8 +44,7 @@ | ... | @@ -38,8 +44,7 @@ |
| 38 | /// The lower 8 bits specify the bit number of the lowest bit to zero. | 44 | /// The lower 8 bits specify the bit number of the lowest bit to zero. |
| 39 | /// \returns The partially zeroed 32-bit value. | 45 | /// \returns The partially zeroed 32-bit value. |
| 40 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 46 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 41 | _bzhi_u32(unsigned int __X, unsigned int __Y) | 47 | _bzhi_u32(unsigned int __X, unsigned int __Y) { |
| 42 | { | ||
| 43 | return __builtin_ia32_bzhi_si(__X, __Y); | 48 | return __builtin_ia32_bzhi_si(__X, __Y); |
| 44 | } | 49 | } |
| 45 | 50 | ||
| ... | @@ -68,8 +73,7 @@ _bzhi_u32(unsigned int __X, unsigned int __Y) | ... | @@ -68,8 +73,7 @@ _bzhi_u32(unsigned int __X, unsigned int __Y) |
| 68 | /// The 32-bit mask specifying where to deposit source bits. | 73 | /// The 32-bit mask specifying where to deposit source bits. |
| 69 | /// \returns The 32-bit result. | 74 | /// \returns The 32-bit result. |
| 70 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 75 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 71 | _pdep_u32(unsigned int __X, unsigned int __Y) | 76 | _pdep_u32(unsigned int __X, unsigned int __Y) { |
| 72 | { | ||
| 73 | return __builtin_ia32_pdep_si(__X, __Y); | 77 | return __builtin_ia32_pdep_si(__X, __Y); |
| 74 | } | 78 | } |
| 75 | 79 | ||
| ... | @@ -98,8 +102,7 @@ _pdep_u32(unsigned int __X, unsigned int __Y) | ... | @@ -98,8 +102,7 @@ _pdep_u32(unsigned int __X, unsigned int __Y) |
| 98 | /// The 32-bit mask specifying which source bits to extract. | 102 | /// The 32-bit mask specifying which source bits to extract. |
| 99 | /// \returns The 32-bit result. | 103 | /// \returns The 32-bit result. |
| 100 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 104 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 101 | _pext_u32(unsigned int __X, unsigned int __Y) | 105 | _pext_u32(unsigned int __X, unsigned int __Y) { |
| 102 | { | ||
| 103 | return __builtin_ia32_pext_si(__X, __Y); | 106 | return __builtin_ia32_pext_si(__X, __Y); |
| 104 | } | 107 | } |
| 105 | 108 | ||
| ... | @@ -124,8 +127,7 @@ _pext_u32(unsigned int __X, unsigned int __Y) | ... | @@ -124,8 +127,7 @@ _pext_u32(unsigned int __X, unsigned int __Y) |
| 124 | /// A pointer to memory for storing the upper half of the product. | 127 | /// A pointer to memory for storing the upper half of the product. |
| 125 | /// \returns The lower half of the product. | 128 | /// \returns The lower half of the product. |
| 126 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 129 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 127 | _mulx_u32(unsigned int __X, unsigned int __Y, unsigned int *__P) | 130 | _mulx_u32(unsigned int __X, unsigned int __Y, unsigned int *__P) { |
| 128 | { | ||
| 129 | unsigned long long __res = (unsigned long long) __X * __Y; | 131 | unsigned long long __res = (unsigned long long) __X * __Y; |
| 130 | *__P = (unsigned int)(__res >> 32); | 132 | *__P = (unsigned int)(__res >> 32); |
| 131 | return (unsigned int)__res; | 133 | return (unsigned int)__res; |
| ... | @@ -154,8 +156,7 @@ _mulx_u32(unsigned int __X, unsigned int __Y, unsigned int *__P) | ... | @@ -154,8 +156,7 @@ _mulx_u32(unsigned int __X, unsigned int __Y, unsigned int *__P) |
| 154 | /// The lower 8 bits specify the bit number of the lowest bit to zero. | 156 | /// The lower 8 bits specify the bit number of the lowest bit to zero. |
| 155 | /// \returns The partially zeroed 64-bit value. | 157 | /// \returns The partially zeroed 64-bit value. |
| 156 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 158 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 157 | _bzhi_u64(unsigned long long __X, unsigned long long __Y) | 159 | _bzhi_u64(unsigned long long __X, unsigned long long __Y) { |
| 158 | { | ||
| 159 | return __builtin_ia32_bzhi_di(__X, __Y); | 160 | return __builtin_ia32_bzhi_di(__X, __Y); |
| 160 | } | 161 | } |
| 161 | 162 | ||
| ... | @@ -184,8 +185,7 @@ _bzhi_u64(unsigned long long __X, unsigned long long __Y) | ... | @@ -184,8 +185,7 @@ _bzhi_u64(unsigned long long __X, unsigned long long __Y) |
| 184 | /// The 64-bit mask specifying where to deposit source bits. | 185 | /// The 64-bit mask specifying where to deposit source bits. |
| 185 | /// \returns The 64-bit result. | 186 | /// \returns The 64-bit result. |
| 186 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 187 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 187 | _pdep_u64(unsigned long long __X, unsigned long long __Y) | 188 | _pdep_u64(unsigned long long __X, unsigned long long __Y) { |
| 188 | { | ||
| 189 | return __builtin_ia32_pdep_di(__X, __Y); | 189 | return __builtin_ia32_pdep_di(__X, __Y); |
| 190 | } | 190 | } |
| 191 | 191 | ||
| ... | @@ -214,8 +214,7 @@ _pdep_u64(unsigned long long __X, unsigned long long __Y) | ... | @@ -214,8 +214,7 @@ _pdep_u64(unsigned long long __X, unsigned long long __Y) |
| 214 | /// The 64-bit mask specifying which source bits to extract. | 214 | /// The 64-bit mask specifying which source bits to extract. |
| 215 | /// \returns The 64-bit result. | 215 | /// \returns The 64-bit result. |
| 216 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 216 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 217 | _pext_u64(unsigned long long __X, unsigned long long __Y) | 217 | _pext_u64(unsigned long long __X, unsigned long long __Y) { |
| 218 | { | ||
| 219 | return __builtin_ia32_pext_di(__X, __Y); | 218 | return __builtin_ia32_pext_di(__X, __Y); |
| 220 | } | 219 | } |
| 221 | 220 | ||
| ... | @@ -241,8 +240,7 @@ _pext_u64(unsigned long long __X, unsigned long long __Y) | ... | @@ -241,8 +240,7 @@ _pext_u64(unsigned long long __X, unsigned long long __Y) |
| 241 | /// \returns The lower half of the product. | 240 | /// \returns The lower half of the product. |
| 242 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 241 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 243 | _mulx_u64 (unsigned long long __X, unsigned long long __Y, | 242 | _mulx_u64 (unsigned long long __X, unsigned long long __Y, |
| 244 | 	 unsigned long long *__P) | 243 | unsigned long long *__P) { |
| 245 | { | ||
| 246 | unsigned __int128 __res = (unsigned __int128) __X * __Y; | 244 | unsigned __int128 __res = (unsigned __int128) __X * __Y; |
| 247 | *__P = (unsigned long long) (__res >> 64); | 245 | *__P = (unsigned long long) (__res >> 64); |
| 248 | return (unsigned long long) __res; | 246 | return (unsigned long long) __res; |
lib/include/bmiintrin.h+31-37| ... | @@ -17,7 +17,12 @@ | ... | @@ -17,7 +17,12 @@ |
| 17 | /* Allow using the tzcnt intrinsics even for non-BMI targets. Since the TZCNT | 17 | /* Allow using the tzcnt intrinsics even for non-BMI targets. Since the TZCNT |
| 18 | instruction behaves as BSF on non-BMI targets, there is code that expects | 18 | instruction behaves as BSF on non-BMI targets, there is code that expects |
| 19 | to use it as a potentially faster version of BSF. */ | 19 | to use it as a potentially faster version of BSF. */ |
| 20 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 21 | #define __RELAXED_FN_ATTRS \ | ||
| 22 | __attribute__((__always_inline__, __nodebug__)) constexpr | ||
| 23 | #else | ||
| 20 | #define __RELAXED_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) | 24 | #define __RELAXED_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) |
| 25 | #endif | ||
| 21 | 26 | ||
| 22 | /// Counts the number of trailing zero bits in the operand. | 27 | /// Counts the number of trailing zero bits in the operand. |
| 23 | /// | 28 | /// |
| ... | @@ -31,8 +36,7 @@ | ... | @@ -31,8 +36,7 @@ |
| 31 | /// bits in the operand. | 36 | /// bits in the operand. |
| 32 | /// \see _tzcnt_u16 | 37 | /// \see _tzcnt_u16 |
| 33 | static __inline__ unsigned short __RELAXED_FN_ATTRS | 38 | static __inline__ unsigned short __RELAXED_FN_ATTRS |
| 34 | __tzcnt_u16(unsigned short __X) | 39 | __tzcnt_u16(unsigned short __X) { |
| 35 | { | ||
| 36 | return __builtin_ia32_tzcnt_u16(__X); | 40 | return __builtin_ia32_tzcnt_u16(__X); |
| 37 | } | 41 | } |
| 38 | 42 | ||
| ... | @@ -65,8 +69,7 @@ __tzcnt_u16(unsigned short __X) | ... | @@ -65,8 +69,7 @@ __tzcnt_u16(unsigned short __X) |
| 65 | /// bits in the operand. | 69 | /// bits in the operand. |
| 66 | /// \see { _mm_tzcnt_32 _tzcnt_u32 } | 70 | /// \see { _mm_tzcnt_32 _tzcnt_u32 } |
| 67 | static __inline__ unsigned int __RELAXED_FN_ATTRS | 71 | static __inline__ unsigned int __RELAXED_FN_ATTRS |
| 68 | __tzcnt_u32(unsigned int __X) | 72 | __tzcnt_u32(unsigned int __X) { |
| 69 | { | ||
| 70 | return __builtin_ia32_tzcnt_u32(__X); | 73 | return __builtin_ia32_tzcnt_u32(__X); |
| 71 | } | 74 | } |
| 72 | 75 | ||
| ... | @@ -82,8 +85,7 @@ __tzcnt_u32(unsigned int __X) | ... | @@ -82,8 +85,7 @@ __tzcnt_u32(unsigned int __X) |
| 82 | /// the operand. | 85 | /// the operand. |
| 83 | /// \see { __tzcnt_u32 _tzcnt_u32 } | 86 | /// \see { __tzcnt_u32 _tzcnt_u32 } |
| 84 | static __inline__ int __RELAXED_FN_ATTRS | 87 | static __inline__ int __RELAXED_FN_ATTRS |
| 85 | _mm_tzcnt_32(unsigned int __X) | 88 | _mm_tzcnt_32(unsigned int __X) { |
| 86 | { | ||
| 87 | return (int)__builtin_ia32_tzcnt_u32(__X); | 89 | return (int)__builtin_ia32_tzcnt_u32(__X); |
| 88 | } | 90 | } |
| 89 | 91 | ||
| ... | @@ -118,8 +120,7 @@ _mm_tzcnt_32(unsigned int __X) | ... | @@ -118,8 +120,7 @@ _mm_tzcnt_32(unsigned int __X) |
| 118 | /// bits in the operand. | 120 | /// bits in the operand. |
| 119 | /// \see { _mm_tzcnt_64 _tzcnt_u64 } | 121 | /// \see { _mm_tzcnt_64 _tzcnt_u64 } |
| 120 | static __inline__ unsigned long long __RELAXED_FN_ATTRS | 122 | static __inline__ unsigned long long __RELAXED_FN_ATTRS |
| 121 | __tzcnt_u64(unsigned long long __X) | 123 | __tzcnt_u64(unsigned long long __X) { |
| 122 | { | ||
| 123 | return __builtin_ia32_tzcnt_u64(__X); | 124 | return __builtin_ia32_tzcnt_u64(__X); |
| 124 | } | 125 | } |
| 125 | 126 | ||
| ... | @@ -135,8 +136,7 @@ __tzcnt_u64(unsigned long long __X) | ... | @@ -135,8 +136,7 @@ __tzcnt_u64(unsigned long long __X) |
| 135 | /// the operand. | 136 | /// the operand. |
| 136 | /// \see { __tzcnt_u64 _tzcnt_u64 } | 137 | /// \see { __tzcnt_u64 _tzcnt_u64 } |
| 137 | static __inline__ long long __RELAXED_FN_ATTRS | 138 | static __inline__ long long __RELAXED_FN_ATTRS |
| 138 | _mm_tzcnt_64(unsigned long long __X) | 139 | _mm_tzcnt_64(unsigned long long __X) { |
| 139 | { | ||
| 140 | return (long long)__builtin_ia32_tzcnt_u64(__X); | 140 | return (long long)__builtin_ia32_tzcnt_u64(__X); |
| 141 | } | 141 | } |
| 142 | 142 | ||
| ... | @@ -164,7 +164,13 @@ _mm_tzcnt_64(unsigned long long __X) | ... | @@ -164,7 +164,13 @@ _mm_tzcnt_64(unsigned long long __X) |
| 164 | #if !defined(__SCE__) || __has_feature(modules) || defined(__BMI__) | 164 | #if !defined(__SCE__) || __has_feature(modules) || defined(__BMI__) |
| 165 | 165 | ||
| 166 | /* Define the default attributes for the functions in this file. */ | 166 | /* Define the default attributes for the functions in this file. */ |
| 167 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi"))) | 167 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 168 | #define __DEFAULT_FN_ATTRS \ | ||
| 169 | __attribute__((__always_inline__, __nodebug__, __target__("bmi"))) constexpr | ||
| 170 | #else | ||
| 171 | #define __DEFAULT_FN_ATTRS \ | ||
| 172 | __attribute__((__always_inline__, __nodebug__, __target__("bmi"))) | ||
| 173 | #endif | ||
| 168 | 174 | ||
| 169 | /// Performs a bitwise AND of the second operand with the one's | 175 | /// Performs a bitwise AND of the second operand with the one's |
| 170 | /// complement of the first operand. | 176 | /// complement of the first operand. |
| ... | @@ -181,8 +187,7 @@ _mm_tzcnt_64(unsigned long long __X) | ... | @@ -181,8 +187,7 @@ _mm_tzcnt_64(unsigned long long __X) |
| 181 | /// operand with the one's complement of the first operand. | 187 | /// operand with the one's complement of the first operand. |
| 182 | /// \see _andn_u32 | 188 | /// \see _andn_u32 |
| 183 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 189 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 184 | __andn_u32(unsigned int __X, unsigned int __Y) | 190 | __andn_u32(unsigned int __X, unsigned int __Y) { |
| 185 | { | ||
| 186 | return ~__X & __Y; | 191 | return ~__X & __Y; |
| 187 | } | 192 | } |
| 188 | 193 | ||
| ... | @@ -224,8 +229,7 @@ __andn_u32(unsigned int __X, unsigned int __Y) | ... | @@ -224,8 +229,7 @@ __andn_u32(unsigned int __X, unsigned int __Y) |
| 224 | /// extracted bits. | 229 | /// extracted bits. |
| 225 | /// \see _bextr_u32 | 230 | /// \see _bextr_u32 |
| 226 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 231 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 227 | __bextr_u32(unsigned int __X, unsigned int __Y) | 232 | __bextr_u32(unsigned int __X, unsigned int __Y) { |
| 228 | { | ||
| 229 | return __builtin_ia32_bextr_u32(__X, __Y); | 233 | return __builtin_ia32_bextr_u32(__X, __Y); |
| 230 | } | 234 | } |
| 231 | 235 | ||
| ... | @@ -249,9 +253,8 @@ __bextr_u32(unsigned int __X, unsigned int __Y) | ... | @@ -249,9 +253,8 @@ __bextr_u32(unsigned int __X, unsigned int __Y) |
| 249 | /// extracted bits. | 253 | /// extracted bits. |
| 250 | /// \see __bextr_u32 | 254 | /// \see __bextr_u32 |
| 251 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 255 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 252 | _bextr_u32(unsigned int __X, unsigned int __Y, unsigned int __Z) | 256 | _bextr_u32(unsigned int __X, unsigned int __Y, unsigned int __Z) { |
| 253 | { | 257 | return __builtin_ia32_bextr_u32(__X, ((__Y & 0xff) | ((__Z & 0xff) << 8))); |
| 254 | return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8))); | ||
| 255 | } | 258 | } |
| 256 | 259 | ||
| 257 | /* Intel-specified, single-leading-underscore version of BEXTR2 */ | 260 | /* Intel-specified, single-leading-underscore version of BEXTR2 */ |
| ... | @@ -289,8 +292,7 @@ _bextr2_u32(unsigned int __X, unsigned int __Y) { | ... | @@ -289,8 +292,7 @@ _bextr2_u32(unsigned int __X, unsigned int __Y) { |
| 289 | /// the source operand. | 292 | /// the source operand. |
| 290 | /// \see _blsi_u32 | 293 | /// \see _blsi_u32 |
| 291 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 294 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 292 | __blsi_u32(unsigned int __X) | 295 | __blsi_u32(unsigned int __X) { |
| 293 | { | ||
| 294 | return __X & -__X; | 296 | return __X & -__X; |
| 295 | } | 297 | } |
| 296 | 298 | ||
| ... | @@ -325,8 +327,7 @@ __blsi_u32(unsigned int __X) | ... | @@ -325,8 +327,7 @@ __blsi_u32(unsigned int __X) |
| 325 | /// \returns An unsigned integer containing the newly created mask. | 327 | /// \returns An unsigned integer containing the newly created mask. |
| 326 | /// \see _blsmsk_u32 | 328 | /// \see _blsmsk_u32 |
| 327 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 329 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 328 | __blsmsk_u32(unsigned int __X) | 330 | __blsmsk_u32(unsigned int __X) { |
| 329 | { | ||
| 330 | return __X ^ (__X - 1); | 331 | return __X ^ (__X - 1); |
| 331 | } | 332 | } |
| 332 | 333 | ||
| ... | @@ -361,8 +362,7 @@ __blsmsk_u32(unsigned int __X) | ... | @@ -361,8 +362,7 @@ __blsmsk_u32(unsigned int __X) |
| 361 | /// operand. | 362 | /// operand. |
| 362 | /// \see _blsr_u32 | 363 | /// \see _blsr_u32 |
| 363 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 364 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 364 | __blsr_u32(unsigned int __X) | 365 | __blsr_u32(unsigned int __X) { |
| 365 | { | ||
| 366 | return __X & (__X - 1); | 366 | return __X & (__X - 1); |
| 367 | } | 367 | } |
| 368 | 368 | ||
| ... | @@ -401,8 +401,7 @@ __blsr_u32(unsigned int __X) | ... | @@ -401,8 +401,7 @@ __blsr_u32(unsigned int __X) |
| 401 | /// operand with the one's complement of the first operand. | 401 | /// operand with the one's complement of the first operand. |
| 402 | /// \see _andn_u64 | 402 | /// \see _andn_u64 |
| 403 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 403 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 404 | __andn_u64 (unsigned long long __X, unsigned long long __Y) | 404 | __andn_u64 (unsigned long long __X, unsigned long long __Y) { |
| 405 | { | ||
| 406 | return ~__X & __Y; | 405 | return ~__X & __Y; |
| 407 | } | 406 | } |
| 408 | 407 | ||
| ... | @@ -445,8 +444,7 @@ __andn_u64 (unsigned long long __X, unsigned long long __Y) | ... | @@ -445,8 +444,7 @@ __andn_u64 (unsigned long long __X, unsigned long long __Y) |
| 445 | /// extracted bits. | 444 | /// extracted bits. |
| 446 | /// \see _bextr_u64 | 445 | /// \see _bextr_u64 |
| 447 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 446 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 448 | __bextr_u64(unsigned long long __X, unsigned long long __Y) | 447 | __bextr_u64(unsigned long long __X, unsigned long long __Y) { |
| 449 | { | ||
| 450 | return __builtin_ia32_bextr_u64(__X, __Y); | 448 | return __builtin_ia32_bextr_u64(__X, __Y); |
| 451 | } | 449 | } |
| 452 | 450 | ||
| ... | @@ -470,9 +468,8 @@ __bextr_u64(unsigned long long __X, unsigned long long __Y) | ... | @@ -470,9 +468,8 @@ __bextr_u64(unsigned long long __X, unsigned long long __Y) |
| 470 | /// extracted bits. | 468 | /// extracted bits. |
| 471 | /// \see __bextr_u64 | 469 | /// \see __bextr_u64 |
| 472 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 470 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 473 | _bextr_u64(unsigned long long __X, unsigned int __Y, unsigned int __Z) | 471 | _bextr_u64(unsigned long long __X, unsigned int __Y, unsigned int __Z) { |
| 474 | { | 472 | return __builtin_ia32_bextr_u64(__X, ((__Y & 0xff) | ((__Z & 0xff) << 8))); |
| 475 | return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8))); | ||
| 476 | } | 473 | } |
| 477 | 474 | ||
| 478 | /* Intel-specified, single-leading-underscore version of BEXTR2 */ | 475 | /* Intel-specified, single-leading-underscore version of BEXTR2 */ |
| ... | @@ -510,8 +507,7 @@ _bextr2_u64(unsigned long long __X, unsigned long long __Y) { | ... | @@ -510,8 +507,7 @@ _bextr2_u64(unsigned long long __X, unsigned long long __Y) { |
| 510 | /// bits from the source operand. | 507 | /// bits from the source operand. |
| 511 | /// \see _blsi_u64 | 508 | /// \see _blsi_u64 |
| 512 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 509 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 513 | __blsi_u64(unsigned long long __X) | 510 | __blsi_u64(unsigned long long __X) { |
| 514 | { | ||
| 515 | return __X & -__X; | 511 | return __X & -__X; |
| 516 | } | 512 | } |
| 517 | 513 | ||
| ... | @@ -546,8 +542,7 @@ __blsi_u64(unsigned long long __X) | ... | @@ -546,8 +542,7 @@ __blsi_u64(unsigned long long __X) |
| 546 | /// \returns An unsigned 64-bit integer containing the newly created mask. | 542 | /// \returns An unsigned 64-bit integer containing the newly created mask. |
| 547 | /// \see _blsmsk_u64 | 543 | /// \see _blsmsk_u64 |
| 548 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 544 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 549 | __blsmsk_u64(unsigned long long __X) | 545 | __blsmsk_u64(unsigned long long __X) { |
| 550 | { | ||
| 551 | return __X ^ (__X - 1); | 546 | return __X ^ (__X - 1); |
| 552 | } | 547 | } |
| 553 | 548 | ||
| ... | @@ -582,8 +577,7 @@ __blsmsk_u64(unsigned long long __X) | ... | @@ -582,8 +577,7 @@ __blsmsk_u64(unsigned long long __X) |
| 582 | /// source operand. | 577 | /// source operand. |
| 583 | /// \see _blsr_u64 | 578 | /// \see _blsr_u64 |
| 584 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 579 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 585 | __blsr_u64(unsigned long long __X) | 580 | __blsr_u64(unsigned long long __X) { |
| 586 | { | ||
| 587 | return __X & (__X - 1); | 581 | return __X & (__X - 1); |
| 588 | } | 582 | } |
| 589 | 583 |
lib/include/cmpccxaddintrin.h+1-1| ... | @@ -63,7 +63,7 @@ typedef enum { | ... | @@ -63,7 +63,7 @@ typedef enum { |
| 63 | (int)(__D)))) | 63 | (int)(__D)))) |
| 64 | 64 | ||
| 65 | #define _cmpccxadd_epi64(__A, __B, __C, __D) \ | 65 | #define _cmpccxadd_epi64(__A, __B, __C, __D) \ |
| 66 | ((long long)(__builtin_ia32_cmpccxadd64((void *)(__A), (long long)(__B), \ | 66 | ((long long)(__builtin_ia32_cmpccxadd64((__A), (long long)(__B), \ |
| 67 | (long long)(__C), (int)(__D)))) | 67 | (long long)(__C), (int)(__D)))) |
| 68 | 68 | ||
| 69 | #endif // __x86_64__ | 69 | #endif // __x86_64__ |
lib/include/cpuid.h+12-11| ... | @@ -187,17 +187,18 @@ | ... | @@ -187,17 +187,18 @@ |
| 187 | #define bit_ENQCMD 0x20000000 | 187 | #define bit_ENQCMD 0x20000000 |
| 188 | 188 | ||
| 189 | /* Features in %edx for leaf 7 sub-leaf 0 */ | 189 | /* Features in %edx for leaf 7 sub-leaf 0 */ |
| 190 | #define bit_AVX5124VNNIW 0x00000004 | 190 | #define bit_AVX5124VNNIW 0x00000004 |
| 191 | #define bit_AVX5124FMAPS 0x00000008 | 191 | #define bit_AVX5124FMAPS 0x00000008 |
| 192 | #define bit_UINTR 0x00000020 | 192 | #define bit_UINTR 0x00000020 |
| 193 | #define bit_SERIALIZE 0x00004000 | 193 | #define bit_AVX512VP2INTERSECT 0x00000100 |
| 194 | #define bit_TSXLDTRK 0x00010000 | 194 | #define bit_SERIALIZE 0x00004000 |
| 195 | #define bit_PCONFIG 0x00040000 | 195 | #define bit_TSXLDTRK 0x00010000 |
| 196 | #define bit_IBT 0x00100000 | 196 | #define bit_PCONFIG 0x00040000 |
| 197 | #define bit_AMXBF16 0x00400000 | 197 | #define bit_IBT 0x00100000 |
| 198 | #define bit_AVX512FP16 0x00800000 | 198 | #define bit_AMXBF16 0x00400000 |
| 199 | #define bit_AMXTILE 0x01000000 | 199 | #define bit_AVX512FP16 0x00800000 |
| 200 | #define bit_AMXINT8 0x02000000 | 200 | #define bit_AMXTILE 0x01000000 |
| 201 | #define bit_AMXINT8 0x02000000 | ||
| 201 | 202 | ||
| 202 | /* Features in %eax for leaf 7 sub-leaf 1 */ | 203 | /* Features in %eax for leaf 7 sub-leaf 1 */ |
| 203 | #define bit_SHA512 0x00000001 | 204 | #define bit_SHA512 0x00000001 |
lib/include/emmintrin.h+141-107| ... | @@ -49,12 +49,27 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16))); | ... | @@ -49,12 +49,27 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16))); |
| 49 | #endif | 49 | #endif |
| 50 | 50 | ||
| 51 | /* Define the default attributes for the functions in this file. */ | 51 | /* Define the default attributes for the functions in this file. */ |
| 52 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 52 | #define __DEFAULT_FN_ATTRS \ | 53 | #define __DEFAULT_FN_ATTRS \ |
| 53 | __attribute__((__always_inline__, __nodebug__, \ | 54 | __attribute__((__always_inline__, __nodebug__, \ |
| 54 | __target__("sse2,no-evex512"), __min_vector_width__(128))) | 55 | __target__("sse2,no-evex512"), __min_vector_width__(128))) |
| 55 | #define __DEFAULT_FN_ATTRS_MMX \ | 56 | #else |
| 56 | __attribute__((__always_inline__, __nodebug__, \ | 57 | #define __DEFAULT_FN_ATTRS \ |
| 57 | __target__("mmx,sse2,no-evex512"), __min_vector_width__(64))) | 58 | __attribute__((__always_inline__, __nodebug__, __target__("sse2"), \ |
| 59 | __min_vector_width__(128))) | ||
| 60 | #endif | ||
| 61 | |||
| 62 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 63 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | ||
| 64 | #else | ||
| 65 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 66 | #endif | ||
| 67 | |||
| 68 | #define __trunc64(x) \ | ||
| 69 | (__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0) | ||
| 70 | #define __anyext128(x) \ | ||
| 71 | (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \ | ||
| 72 | 1, -1, -1) | ||
| 58 | 73 | ||
| 59 | /// Adds lower double-precision values in both operands and returns the | 74 | /// Adds lower double-precision values in both operands and returns the |
| 60 | /// sum in the lower 64 bits of the result. The upper 64 bits of the result | 75 | /// sum in the lower 64 bits of the result. The upper 64 bits of the result |
| ... | @@ -71,8 +86,8 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16))); | ... | @@ -71,8 +86,8 @@ typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16))); |
| 71 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the | 86 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the |
| 72 | /// sum of the lower 64 bits of both operands. The upper 64 bits are copied | 87 | /// sum of the lower 64 bits of both operands. The upper 64 bits are copied |
| 73 | /// from the upper 64 bits of the first source operand. | 88 | /// from the upper 64 bits of the first source operand. |
| 74 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_sd(__m128d __a, | 89 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_add_sd(__m128d __a, |
| 75 | __m128d __b) { | 90 | __m128d __b) { |
| 76 | __a[0] += __b[0]; | 91 | __a[0] += __b[0]; |
| 77 | return __a; | 92 | return __a; |
| 78 | } | 93 | } |
| ... | @@ -89,8 +104,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_sd(__m128d __a, | ... | @@ -89,8 +104,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_sd(__m128d __a, |
| 89 | /// A 128-bit vector of [2 x double] containing one of the source operands. | 104 | /// A 128-bit vector of [2 x double] containing one of the source operands. |
| 90 | /// \returns A 128-bit vector of [2 x double] containing the sums of both | 105 | /// \returns A 128-bit vector of [2 x double] containing the sums of both |
| 91 | /// operands. | 106 | /// operands. |
| 92 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_pd(__m128d __a, | 107 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_add_pd(__m128d __a, |
| 93 | __m128d __b) { | 108 | __m128d __b) { |
| 94 | return (__m128d)((__v2df)__a + (__v2df)__b); | 109 | return (__m128d)((__v2df)__a + (__v2df)__b); |
| 95 | } | 110 | } |
| 96 | 111 | ||
| ... | @@ -111,8 +126,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_pd(__m128d __a, | ... | @@ -111,8 +126,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_add_pd(__m128d __a, |
| 111 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the | 126 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the |
| 112 | /// difference of the lower 64 bits of both operands. The upper 64 bits are | 127 | /// difference of the lower 64 bits of both operands. The upper 64 bits are |
| 113 | /// copied from the upper 64 bits of the first source operand. | 128 | /// copied from the upper 64 bits of the first source operand. |
| 114 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_sd(__m128d __a, | 129 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_sub_sd(__m128d __a, |
| 115 | __m128d __b) { | 130 | __m128d __b) { |
| 116 | __a[0] -= __b[0]; | 131 | __a[0] -= __b[0]; |
| 117 | return __a; | 132 | return __a; |
| 118 | } | 133 | } |
| ... | @@ -129,8 +144,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_sd(__m128d __a, | ... | @@ -129,8 +144,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_sd(__m128d __a, |
| 129 | /// A 128-bit vector of [2 x double] containing the subtrahend. | 144 | /// A 128-bit vector of [2 x double] containing the subtrahend. |
| 130 | /// \returns A 128-bit vector of [2 x double] containing the differences between | 145 | /// \returns A 128-bit vector of [2 x double] containing the differences between |
| 131 | /// both operands. | 146 | /// both operands. |
| 132 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_pd(__m128d __a, | 147 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_sub_pd(__m128d __a, |
| 133 | __m128d __b) { | 148 | __m128d __b) { |
| 134 | return (__m128d)((__v2df)__a - (__v2df)__b); | 149 | return (__m128d)((__v2df)__a - (__v2df)__b); |
| 135 | } | 150 | } |
| 136 | 151 | ||
| ... | @@ -150,8 +165,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_pd(__m128d __a, | ... | @@ -150,8 +165,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sub_pd(__m128d __a, |
| 150 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the | 165 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the |
| 151 | /// product of the lower 64 bits of both operands. The upper 64 bits are | 166 | /// product of the lower 64 bits of both operands. The upper 64 bits are |
| 152 | /// copied from the upper 64 bits of the first source operand. | 167 | /// copied from the upper 64 bits of the first source operand. |
| 153 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_sd(__m128d __a, | 168 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_mul_sd(__m128d __a, |
| 154 | __m128d __b) { | 169 | __m128d __b) { |
| 155 | __a[0] *= __b[0]; | 170 | __a[0] *= __b[0]; |
| 156 | return __a; | 171 | return __a; |
| 157 | } | 172 | } |
| ... | @@ -168,8 +183,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_sd(__m128d __a, | ... | @@ -168,8 +183,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_sd(__m128d __a, |
| 168 | /// A 128-bit vector of [2 x double] containing one of the operands. | 183 | /// A 128-bit vector of [2 x double] containing one of the operands. |
| 169 | /// \returns A 128-bit vector of [2 x double] containing the products of both | 184 | /// \returns A 128-bit vector of [2 x double] containing the products of both |
| 170 | /// operands. | 185 | /// operands. |
| 171 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_pd(__m128d __a, | 186 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_mul_pd(__m128d __a, |
| 172 | __m128d __b) { | 187 | __m128d __b) { |
| 173 | return (__m128d)((__v2df)__a * (__v2df)__b); | 188 | return (__m128d)((__v2df)__a * (__v2df)__b); |
| 174 | } | 189 | } |
| 175 | 190 | ||
| ... | @@ -190,8 +205,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_pd(__m128d __a, | ... | @@ -190,8 +205,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_mul_pd(__m128d __a, |
| 190 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the | 205 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the |
| 191 | /// quotient of the lower 64 bits of both operands. The upper 64 bits are | 206 | /// quotient of the lower 64 bits of both operands. The upper 64 bits are |
| 192 | /// copied from the upper 64 bits of the first source operand. | 207 | /// copied from the upper 64 bits of the first source operand. |
| 193 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_div_sd(__m128d __a, | 208 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_div_sd(__m128d __a, |
| 194 | __m128d __b) { | 209 | __m128d __b) { |
| 195 | __a[0] /= __b[0]; | 210 | __a[0] /= __b[0]; |
| 196 | return __a; | 211 | return __a; |
| 197 | } | 212 | } |
| ... | @@ -209,8 +224,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_div_sd(__m128d __a, | ... | @@ -209,8 +224,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_div_sd(__m128d __a, |
| 209 | /// A 128-bit vector of [2 x double] containing the divisor. | 224 | /// A 128-bit vector of [2 x double] containing the divisor. |
| 210 | /// \returns A 128-bit vector of [2 x double] containing the quotients of both | 225 | /// \returns A 128-bit vector of [2 x double] containing the quotients of both |
| 211 | /// operands. | 226 | /// operands. |
| 212 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_div_pd(__m128d __a, | 227 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_div_pd(__m128d __a, |
| 213 | __m128d __b) { | 228 | __m128d __b) { |
| 214 | return (__m128d)((__v2df)__a / (__v2df)__b); | 229 | return (__m128d)((__v2df)__a / (__v2df)__b); |
| 215 | } | 230 | } |
| 216 | 231 | ||
| ... | @@ -358,8 +373,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_max_pd(__m128d __a, | ... | @@ -358,8 +373,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_max_pd(__m128d __a, |
| 358 | /// A 128-bit vector of [2 x double] containing one of the source operands. | 373 | /// A 128-bit vector of [2 x double] containing one of the source operands. |
| 359 | /// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the | 374 | /// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the |
| 360 | /// values between both operands. | 375 | /// values between both operands. |
| 361 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_and_pd(__m128d __a, | 376 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_and_pd(__m128d __a, |
| 362 | __m128d __b) { | 377 | __m128d __b) { |
| 363 | return (__m128d)((__v2du)__a & (__v2du)__b); | 378 | return (__m128d)((__v2du)__a & (__v2du)__b); |
| 364 | } | 379 | } |
| 365 | 380 | ||
| ... | @@ -378,8 +393,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_and_pd(__m128d __a, | ... | @@ -378,8 +393,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_and_pd(__m128d __a, |
| 378 | /// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the | 393 | /// \returns A 128-bit vector of [2 x double] containing the bitwise AND of the |
| 379 | /// values in the second operand and the one's complement of the first | 394 | /// values in the second operand and the one's complement of the first |
| 380 | /// operand. | 395 | /// operand. |
| 381 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_andnot_pd(__m128d __a, | 396 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 382 | __m128d __b) { | 397 | _mm_andnot_pd(__m128d __a, __m128d __b) { |
| 383 | return (__m128d)(~(__v2du)__a & (__v2du)__b); | 398 | return (__m128d)(~(__v2du)__a & (__v2du)__b); |
| 384 | } | 399 | } |
| 385 | 400 | ||
| ... | @@ -395,8 +410,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_andnot_pd(__m128d __a, | ... | @@ -395,8 +410,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_andnot_pd(__m128d __a, |
| 395 | /// A 128-bit vector of [2 x double] containing one of the source operands. | 410 | /// A 128-bit vector of [2 x double] containing one of the source operands. |
| 396 | /// \returns A 128-bit vector of [2 x double] containing the bitwise OR of the | 411 | /// \returns A 128-bit vector of [2 x double] containing the bitwise OR of the |
| 397 | /// values between both operands. | 412 | /// values between both operands. |
| 398 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_or_pd(__m128d __a, | 413 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_or_pd(__m128d __a, |
| 399 | __m128d __b) { | 414 | __m128d __b) { |
| 400 | return (__m128d)((__v2du)__a | (__v2du)__b); | 415 | return (__m128d)((__v2du)__a | (__v2du)__b); |
| 401 | } | 416 | } |
| 402 | 417 | ||
| ... | @@ -412,8 +427,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_or_pd(__m128d __a, | ... | @@ -412,8 +427,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_or_pd(__m128d __a, |
| 412 | /// A 128-bit vector of [2 x double] containing one of the source operands. | 427 | /// A 128-bit vector of [2 x double] containing one of the source operands. |
| 413 | /// \returns A 128-bit vector of [2 x double] containing the bitwise XOR of the | 428 | /// \returns A 128-bit vector of [2 x double] containing the bitwise XOR of the |
| 414 | /// values between both operands. | 429 | /// values between both operands. |
| 415 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_xor_pd(__m128d __a, | 430 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_xor_pd(__m128d __a, |
| 416 | __m128d __b) { | 431 | __m128d __b) { |
| 417 | return (__m128d)((__v2du)__a ^ (__v2du)__b); | 432 | return (__m128d)((__v2du)__a ^ (__v2du)__b); |
| 418 | } | 433 | } |
| 419 | 434 | ||
| ... | @@ -1291,7 +1306,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtpd_ps(__m128d __a) { | ... | @@ -1291,7 +1306,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtpd_ps(__m128d __a) { |
| 1291 | /// floating-point elements are converted to double-precision values. The | 1306 | /// floating-point elements are converted to double-precision values. The |
| 1292 | /// upper two elements are unused. | 1307 | /// upper two elements are unused. |
| 1293 | /// \returns A 128-bit vector of [2 x double] containing the converted values. | 1308 | /// \returns A 128-bit vector of [2 x double] containing the converted values. |
| 1294 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtps_pd(__m128 __a) { | 1309 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1310 | _mm_cvtps_pd(__m128 __a) { | ||
| 1295 | return (__m128d) __builtin_convertvector( | 1311 | return (__m128d) __builtin_convertvector( |
| 1296 | __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1), __v2df); | 1312 | __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1), __v2df); |
| 1297 | } | 1313 | } |
| ... | @@ -1312,7 +1328,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtps_pd(__m128 __a) { | ... | @@ -1312,7 +1328,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtps_pd(__m128 __a) { |
| 1312 | /// | 1328 | /// |
| 1313 | /// The upper two elements are unused. | 1329 | /// The upper two elements are unused. |
| 1314 | /// \returns A 128-bit vector of [2 x double] containing the converted values. | 1330 | /// \returns A 128-bit vector of [2 x double] containing the converted values. |
| 1315 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtepi32_pd(__m128i __a) { | 1331 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1332 | _mm_cvtepi32_pd(__m128i __a) { | ||
| 1316 | return (__m128d) __builtin_convertvector( | 1333 | return (__m128d) __builtin_convertvector( |
| 1317 | __builtin_shufflevector((__v4si)__a, (__v4si)__a, 0, 1), __v2df); | 1334 | __builtin_shufflevector((__v4si)__a, (__v4si)__a, 0, 1), __v2df); |
| 1318 | } | 1335 | } |
| ... | @@ -1398,8 +1415,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtsd_ss(__m128 __a, | ... | @@ -1398,8 +1415,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtsd_ss(__m128 __a, |
| 1398 | /// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the | 1415 | /// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the |
| 1399 | /// converted value from the second parameter. The upper 64 bits are copied | 1416 | /// converted value from the second parameter. The upper 64 bits are copied |
| 1400 | /// from the upper 64 bits of the first parameter. | 1417 | /// from the upper 64 bits of the first parameter. |
| 1401 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi32_sd(__m128d __a, | 1418 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1402 | int __b) { | 1419 | _mm_cvtsi32_sd(__m128d __a, int __b) { |
| 1403 | __a[0] = __b; | 1420 | __a[0] = __b; |
| 1404 | return __a; | 1421 | return __a; |
| 1405 | } | 1422 | } |
| ... | @@ -1423,8 +1440,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi32_sd(__m128d __a, | ... | @@ -1423,8 +1440,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi32_sd(__m128d __a, |
| 1423 | /// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the | 1440 | /// \returns A 128-bit vector of [2 x double]. The lower 64 bits contain the |
| 1424 | /// converted value from the second parameter. The upper 64 bits are copied | 1441 | /// converted value from the second parameter. The upper 64 bits are copied |
| 1425 | /// from the upper 64 bits of the first parameter. | 1442 | /// from the upper 64 bits of the first parameter. |
| 1426 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtss_sd(__m128d __a, | 1443 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1427 | __m128 __b) { | 1444 | _mm_cvtss_sd(__m128d __a, __m128 __b) { |
| 1428 | __a[0] = __b[0]; | 1445 | __a[0] = __b[0]; |
| 1429 | return __a; | 1446 | return __a; |
| 1430 | } | 1447 | } |
| ... | @@ -1486,8 +1503,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) { | ... | @@ -1486,8 +1503,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_cvttsd_si32(__m128d __a) { |
| 1486 | /// \param __a | 1503 | /// \param __a |
| 1487 | /// A 128-bit vector of [2 x double]. | 1504 | /// A 128-bit vector of [2 x double]. |
| 1488 | /// \returns A 64-bit vector of [2 x i32] containing the converted values. | 1505 | /// \returns A 64-bit vector of [2 x i32] containing the converted values. |
| 1489 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) { | 1506 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_cvtpd_pi32(__m128d __a) { |
| 1490 | return (__m64)__builtin_ia32_cvtpd2pi((__v2df)__a); | 1507 | return __trunc64(__builtin_ia32_cvtpd2dq((__v2df)__a)); |
| 1491 | } | 1508 | } |
| 1492 | 1509 | ||
| 1493 | /// Converts the two double-precision floating-point elements of a | 1510 | /// Converts the two double-precision floating-point elements of a |
| ... | @@ -1505,8 +1522,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) { | ... | @@ -1505,8 +1522,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvtpd_pi32(__m128d __a) { |
| 1505 | /// \param __a | 1522 | /// \param __a |
| 1506 | /// A 128-bit vector of [2 x double]. | 1523 | /// A 128-bit vector of [2 x double]. |
| 1507 | /// \returns A 64-bit vector of [2 x i32] containing the converted values. | 1524 | /// \returns A 64-bit vector of [2 x i32] containing the converted values. |
| 1508 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvttpd_pi32(__m128d __a) { | 1525 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_cvttpd_pi32(__m128d __a) { |
| 1509 | return (__m64)__builtin_ia32_cvttpd2pi((__v2df)__a); | 1526 | return __trunc64(__builtin_ia32_cvttpd2dq((__v2df)__a)); |
| 1510 | } | 1527 | } |
| 1511 | 1528 | ||
| 1512 | /// Converts the two signed 32-bit integer elements of a 64-bit vector of | 1529 | /// Converts the two signed 32-bit integer elements of a 64-bit vector of |
| ... | @@ -1520,8 +1537,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvttpd_pi32(__m128d __a) { | ... | @@ -1520,8 +1537,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_cvttpd_pi32(__m128d __a) { |
| 1520 | /// \param __a | 1537 | /// \param __a |
| 1521 | /// A 64-bit vector of [2 x i32]. | 1538 | /// A 64-bit vector of [2 x i32]. |
| 1522 | /// \returns A 128-bit vector of [2 x double] containing the converted values. | 1539 | /// \returns A 128-bit vector of [2 x double] containing the converted values. |
| 1523 | static __inline__ __m128d __DEFAULT_FN_ATTRS_MMX _mm_cvtpi32_pd(__m64 __a) { | 1540 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1524 | return __builtin_ia32_cvtpi2pd((__v2si)__a); | 1541 | _mm_cvtpi32_pd(__m64 __a) { |
| 1542 | return (__m128d) __builtin_convertvector((__v2si)__a, __v2df); | ||
| 1525 | } | 1543 | } |
| 1526 | 1544 | ||
| 1527 | /// Returns the low-order element of a 128-bit vector of [2 x double] as | 1545 | /// Returns the low-order element of a 128-bit vector of [2 x double] as |
| ... | @@ -1535,7 +1553,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS_MMX _mm_cvtpi32_pd(__m64 __a) { | ... | @@ -1535,7 +1553,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS_MMX _mm_cvtpi32_pd(__m64 __a) { |
| 1535 | /// A 128-bit vector of [2 x double]. The lower 64 bits are returned. | 1553 | /// A 128-bit vector of [2 x double]. The lower 64 bits are returned. |
| 1536 | /// \returns A double-precision floating-point value copied from the lower 64 | 1554 | /// \returns A double-precision floating-point value copied from the lower 64 |
| 1537 | /// bits of \a __a. | 1555 | /// bits of \a __a. |
| 1538 | static __inline__ double __DEFAULT_FN_ATTRS _mm_cvtsd_f64(__m128d __a) { | 1556 | static __inline__ double __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1557 | _mm_cvtsd_f64(__m128d __a) { | ||
| 1539 | return __a[0]; | 1558 | return __a[0]; |
| 1540 | } | 1559 | } |
| 1541 | 1560 | ||
| ... | @@ -1770,7 +1789,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_undefined_pd(void) { | ... | @@ -1770,7 +1789,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_undefined_pd(void) { |
| 1770 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. The | 1789 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. The |
| 1771 | /// lower 64 bits contain the value of the parameter. The upper 64 bits are | 1790 | /// lower 64 bits contain the value of the parameter. The upper 64 bits are |
| 1772 | /// set to zero. | 1791 | /// set to zero. |
| 1773 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_sd(double __w) { | 1792 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_sd(double __w) { |
| 1774 | return __extension__(__m128d){__w, 0.0}; | 1793 | return __extension__(__m128d){__w, 0.0}; |
| 1775 | } | 1794 | } |
| 1776 | 1795 | ||
| ... | @@ -1786,7 +1805,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_sd(double __w) { | ... | @@ -1786,7 +1805,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_sd(double __w) { |
| 1786 | /// A double-precision floating-point value used to initialize each vector | 1805 | /// A double-precision floating-point value used to initialize each vector |
| 1787 | /// element of the result. | 1806 | /// element of the result. |
| 1788 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. | 1807 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. |
| 1789 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set1_pd(double __w) { | 1808 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_pd(double __w) { |
| 1790 | return __extension__(__m128d){__w, __w}; | 1809 | return __extension__(__m128d){__w, __w}; |
| 1791 | } | 1810 | } |
| 1792 | 1811 | ||
| ... | @@ -1802,7 +1821,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set1_pd(double __w) { | ... | @@ -1802,7 +1821,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set1_pd(double __w) { |
| 1802 | /// A double-precision floating-point value used to initialize each vector | 1821 | /// A double-precision floating-point value used to initialize each vector |
| 1803 | /// element of the result. | 1822 | /// element of the result. |
| 1804 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. | 1823 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. |
| 1805 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd1(double __w) { | 1824 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_pd1(double __w) { |
| 1806 | return _mm_set1_pd(__w); | 1825 | return _mm_set1_pd(__w); |
| 1807 | } | 1826 | } |
| 1808 | 1827 | ||
| ... | @@ -1820,8 +1839,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd1(double __w) { | ... | @@ -1820,8 +1839,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd1(double __w) { |
| 1820 | /// A double-precision floating-point value used to initialize the lower 64 | 1839 | /// A double-precision floating-point value used to initialize the lower 64 |
| 1821 | /// bits of the result. | 1840 | /// bits of the result. |
| 1822 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. | 1841 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. |
| 1823 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd(double __w, | 1842 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_pd(double __w, |
| 1824 | double __x) { | 1843 | double __x) { |
| 1825 | return __extension__(__m128d){__x, __w}; | 1844 | return __extension__(__m128d){__x, __w}; |
| 1826 | } | 1845 | } |
| 1827 | 1846 | ||
| ... | @@ -1840,8 +1859,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd(double __w, | ... | @@ -1840,8 +1859,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_set_pd(double __w, |
| 1840 | /// A double-precision floating-point value used to initialize the upper 64 | 1859 | /// A double-precision floating-point value used to initialize the upper 64 |
| 1841 | /// bits of the result. | 1860 | /// bits of the result. |
| 1842 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. | 1861 | /// \returns An initialized 128-bit floating-point vector of [2 x double]. |
| 1843 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setr_pd(double __w, | 1862 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setr_pd(double __w, |
| 1844 | double __x) { | 1863 | double __x) { |
| 1845 | return __extension__(__m128d){__w, __x}; | 1864 | return __extension__(__m128d){__w, __x}; |
| 1846 | } | 1865 | } |
| 1847 | 1866 | ||
| ... | @@ -1854,7 +1873,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setr_pd(double __w, | ... | @@ -1854,7 +1873,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setr_pd(double __w, |
| 1854 | /// | 1873 | /// |
| 1855 | /// \returns An initialized 128-bit floating-point vector of [2 x double] with | 1874 | /// \returns An initialized 128-bit floating-point vector of [2 x double] with |
| 1856 | /// all elements set to zero. | 1875 | /// all elements set to zero. |
| 1857 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setzero_pd(void) { | 1876 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setzero_pd(void) { |
| 1858 | return __extension__(__m128d){0.0, 0.0}; | 1877 | return __extension__(__m128d){0.0, 0.0}; |
| 1859 | } | 1878 | } |
| 1860 | 1879 | ||
| ... | @@ -1873,8 +1892,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setzero_pd(void) { | ... | @@ -1873,8 +1892,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setzero_pd(void) { |
| 1873 | /// A 128-bit vector of [2 x double]. The lower 64 bits are written to the | 1892 | /// A 128-bit vector of [2 x double]. The lower 64 bits are written to the |
| 1874 | /// lower 64 bits of the result. | 1893 | /// lower 64 bits of the result. |
| 1875 | /// \returns A 128-bit vector of [2 x double] containing the moved values. | 1894 | /// \returns A 128-bit vector of [2 x double] containing the moved values. |
| 1876 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_move_sd(__m128d __a, | 1895 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1877 | __m128d __b) { | 1896 | _mm_move_sd(__m128d __a, __m128d __b) { |
| 1878 | __a[0] = __b[0]; | 1897 | __a[0] = __b[0]; |
| 1879 | return __a; | 1898 | return __a; |
| 1880 | } | 1899 | } |
| ... | @@ -2091,8 +2110,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi16(__m128i __a, | ... | @@ -2091,8 +2110,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi16(__m128i __a, |
| 2091 | /// A 128-bit vector of [4 x i32]. | 2110 | /// A 128-bit vector of [4 x i32]. |
| 2092 | /// \returns A 128-bit vector of [4 x i32] containing the sums of both | 2111 | /// \returns A 128-bit vector of [4 x i32] containing the sums of both |
| 2093 | /// parameters. | 2112 | /// parameters. |
| 2094 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi32(__m128i __a, | 2113 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2095 | __m128i __b) { | 2114 | _mm_add_epi32(__m128i __a, __m128i __b) { |
| 2096 | return (__m128i)((__v4su)__a + (__v4su)__b); | 2115 | return (__m128i)((__v4su)__a + (__v4su)__b); |
| 2097 | } | 2116 | } |
| 2098 | 2117 | ||
| ... | @@ -2108,9 +2127,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi32(__m128i __a, | ... | @@ -2108,9 +2127,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi32(__m128i __a, |
| 2108 | /// \param __b | 2127 | /// \param __b |
| 2109 | /// A 64-bit integer. | 2128 | /// A 64-bit integer. |
| 2110 | /// \returns A 64-bit integer containing the sum of both parameters. | 2129 | /// \returns A 64-bit integer containing the sum of both parameters. |
| 2111 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_add_si64(__m64 __a, | 2130 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_add_si64(__m64 __a, __m64 __b) { |
| 2112 | __m64 __b) { | 2131 | return (__m64)(((unsigned long long)__a) + ((unsigned long long)__b)); |
| 2113 | return (__m64)__builtin_ia32_paddq((__v1di)__a, (__v1di)__b); | ||
| 2114 | } | 2132 | } |
| 2115 | 2133 | ||
| 2116 | /// Adds the corresponding elements of two 128-bit vectors of [2 x i64], | 2134 | /// Adds the corresponding elements of two 128-bit vectors of [2 x i64], |
| ... | @@ -2129,8 +2147,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_add_si64(__m64 __a, | ... | @@ -2129,8 +2147,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_add_si64(__m64 __a, |
| 2129 | /// A 128-bit vector of [2 x i64]. | 2147 | /// A 128-bit vector of [2 x i64]. |
| 2130 | /// \returns A 128-bit vector of [2 x i64] containing the sums of both | 2148 | /// \returns A 128-bit vector of [2 x i64] containing the sums of both |
| 2131 | /// parameters. | 2149 | /// parameters. |
| 2132 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_add_epi64(__m128i __a, | 2150 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2133 | __m128i __b) { | 2151 | _mm_add_epi64(__m128i __a, __m128i __b) { |
| 2134 | return (__m128i)((__v2du)__a + (__v2du)__b); | 2152 | return (__m128i)((__v2du)__a + (__v2du)__b); |
| 2135 | } | 2153 | } |
| 2136 | 2154 | ||
| ... | @@ -2431,9 +2449,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mullo_epi16(__m128i __a, | ... | @@ -2431,9 +2449,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mullo_epi16(__m128i __a, |
| 2431 | /// \param __b | 2449 | /// \param __b |
| 2432 | /// A 64-bit integer containing one of the source operands. | 2450 | /// A 64-bit integer containing one of the source operands. |
| 2433 | /// \returns A 64-bit integer vector containing the product of both operands. | 2451 | /// \returns A 64-bit integer vector containing the product of both operands. |
| 2434 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_mul_su32(__m64 __a, | 2452 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_mul_su32(__m64 __a, __m64 __b) { |
| 2435 | __m64 __b) { | 2453 | return __trunc64(__builtin_ia32_pmuludq128((__v4si)__anyext128(__a), |
| 2436 | return __builtin_ia32_pmuludq((__v2si)__a, (__v2si)__b); | 2454 | (__v4si)__anyext128(__b))); |
| 2437 | } | 2455 | } |
| 2438 | 2456 | ||
| 2439 | /// Multiplies 32-bit unsigned integer values contained in the lower | 2457 | /// Multiplies 32-bit unsigned integer values contained in the lower |
| ... | @@ -2521,8 +2539,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi16(__m128i __a, | ... | @@ -2521,8 +2539,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi16(__m128i __a, |
| 2521 | /// A 128-bit integer vector containing the subtrahends. | 2539 | /// A 128-bit integer vector containing the subtrahends. |
| 2522 | /// \returns A 128-bit integer vector containing the differences of the values | 2540 | /// \returns A 128-bit integer vector containing the differences of the values |
| 2523 | /// in the operands. | 2541 | /// in the operands. |
| 2524 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi32(__m128i __a, | 2542 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2525 | __m128i __b) { | 2543 | _mm_sub_epi32(__m128i __a, __m128i __b) { |
| 2526 | return (__m128i)((__v4su)__a - (__v4su)__b); | 2544 | return (__m128i)((__v4su)__a - (__v4su)__b); |
| 2527 | } | 2545 | } |
| 2528 | 2546 | ||
| ... | @@ -2539,9 +2557,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi32(__m128i __a, | ... | @@ -2539,9 +2557,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi32(__m128i __a, |
| 2539 | /// A 64-bit integer vector containing the subtrahend. | 2557 | /// A 64-bit integer vector containing the subtrahend. |
| 2540 | /// \returns A 64-bit integer vector containing the difference of the values in | 2558 | /// \returns A 64-bit integer vector containing the difference of the values in |
| 2541 | /// the operands. | 2559 | /// the operands. |
| 2542 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_sub_si64(__m64 __a, | 2560 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_sub_si64(__m64 __a, __m64 __b) { |
| 2543 | __m64 __b) { | 2561 | return (__m64)((unsigned long long)__a - (unsigned long long)__b); |
| 2544 | return (__m64)__builtin_ia32_psubq((__v1di)__a, (__v1di)__b); | ||
| 2545 | } | 2562 | } |
| 2546 | 2563 | ||
| 2547 | /// Subtracts the corresponding elements of two [2 x i64] vectors. | 2564 | /// Subtracts the corresponding elements of two [2 x i64] vectors. |
| ... | @@ -2556,8 +2573,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_sub_si64(__m64 __a, | ... | @@ -2556,8 +2573,8 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX _mm_sub_si64(__m64 __a, |
| 2556 | /// A 128-bit integer vector containing the subtrahends. | 2573 | /// A 128-bit integer vector containing the subtrahends. |
| 2557 | /// \returns A 128-bit integer vector containing the differences of the values | 2574 | /// \returns A 128-bit integer vector containing the differences of the values |
| 2558 | /// in the operands. | 2575 | /// in the operands. |
| 2559 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sub_epi64(__m128i __a, | 2576 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2560 | __m128i __b) { | 2577 | _mm_sub_epi64(__m128i __a, __m128i __b) { |
| 2561 | return (__m128i)((__v2du)__a - (__v2du)__b); | 2578 | return (__m128i)((__v2du)__a - (__v2du)__b); |
| 2562 | } | 2579 | } |
| 2563 | 2580 | ||
| ... | @@ -3255,8 +3272,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi32(__m128i __a, | ... | @@ -3255,8 +3272,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmplt_epi32(__m128i __a, |
| 3255 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the | 3272 | /// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the |
| 3256 | /// converted value of the second operand. The upper 64 bits are copied from | 3273 | /// converted value of the second operand. The upper 64 bits are copied from |
| 3257 | /// the upper 64 bits of the first operand. | 3274 | /// the upper 64 bits of the first operand. |
| 3258 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_cvtsi64_sd(__m128d __a, | 3275 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3259 | long long __b) { | 3276 | _mm_cvtsi64_sd(__m128d __a, long long __b) { |
| 3260 | __a[0] = __b; | 3277 | __a[0] = __b; |
| 3261 | return __a; | 3278 | return __a; |
| 3262 | } | 3279 | } |
| ... | @@ -3310,7 +3327,8 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvttsd_si64(__m128d __a) { | ... | @@ -3310,7 +3327,8 @@ static __inline__ long long __DEFAULT_FN_ATTRS _mm_cvttsd_si64(__m128d __a) { |
| 3310 | /// \param __a | 3327 | /// \param __a |
| 3311 | /// A 128-bit integer vector. | 3328 | /// A 128-bit integer vector. |
| 3312 | /// \returns A 128-bit vector of [4 x float] containing the converted values. | 3329 | /// \returns A 128-bit vector of [4 x float] containing the converted values. |
| 3313 | static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_cvtepi32_ps(__m128i __a) { | 3330 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3331 | _mm_cvtepi32_ps(__m128i __a) { | ||
| 3314 | return (__m128) __builtin_convertvector((__v4si)__a, __v4sf); | 3332 | return (__m128) __builtin_convertvector((__v4si)__a, __v4sf); |
| 3315 | } | 3333 | } |
| 3316 | 3334 | ||
| ... | @@ -3494,8 +3512,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_undefined_si128(void) { | ... | @@ -3494,8 +3512,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_undefined_si128(void) { |
| 3494 | /// destination vector of [2 x i64]. | 3512 | /// destination vector of [2 x i64]. |
| 3495 | /// \returns An initialized 128-bit vector of [2 x i64] containing the values | 3513 | /// \returns An initialized 128-bit vector of [2 x i64] containing the values |
| 3496 | /// provided in the operands. | 3514 | /// provided in the operands. |
| 3497 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64x(long long __q1, | 3515 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3498 | long long __q0) { | 3516 | _mm_set_epi64x(long long __q1, long long __q0) { |
| 3499 | return __extension__(__m128i)(__v2di){__q0, __q1}; | 3517 | return __extension__(__m128i)(__v2di){__q0, __q1}; |
| 3500 | } | 3518 | } |
| 3501 | 3519 | ||
| ... | @@ -3515,9 +3533,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64x(long long __q1, | ... | @@ -3515,9 +3533,9 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64x(long long __q1, |
| 3515 | /// destination vector of [2 x i64]. | 3533 | /// destination vector of [2 x i64]. |
| 3516 | /// \returns An initialized 128-bit vector of [2 x i64] containing the values | 3534 | /// \returns An initialized 128-bit vector of [2 x i64] containing the values |
| 3517 | /// provided in the operands. | 3535 | /// provided in the operands. |
| 3518 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64(__m64 __q1, | 3536 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3519 | __m64 __q0) { | 3537 | _mm_set_epi64(__m64 __q1, __m64 __q0) { |
| 3520 | return _mm_set_epi64x((long long)__q1, (long long)__q0); | 3538 | return _mm_set_epi64x((long long)__q1[0], (long long)__q0[0]); |
| 3521 | } | 3539 | } |
| 3522 | 3540 | ||
| 3523 | /// Initializes the 32-bit values in a 128-bit vector of [4 x i32] with | 3541 | /// Initializes the 32-bit values in a 128-bit vector of [4 x i32] with |
| ... | @@ -3542,8 +3560,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64(__m64 __q1, | ... | @@ -3542,8 +3560,10 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi64(__m64 __q1, |
| 3542 | /// vector. | 3560 | /// vector. |
| 3543 | /// \returns An initialized 128-bit vector of [4 x i32] containing the values | 3561 | /// \returns An initialized 128-bit vector of [4 x i32] containing the values |
| 3544 | /// provided in the operands. | 3562 | /// provided in the operands. |
| 3545 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi32(int __i3, int __i2, | 3563 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set_epi32(int __i3, |
| 3546 | int __i1, int __i0) { | 3564 | int __i2, |
| 3565 | int __i1, | ||
| 3566 | int __i0) { | ||
| 3547 | return __extension__(__m128i)(__v4si){__i0, __i1, __i2, __i3}; | 3567 | return __extension__(__m128i)(__v4si){__i0, __i1, __i2, __i3}; |
| 3548 | } | 3568 | } |
| 3549 | 3569 | ||
| ... | @@ -3581,7 +3601,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi32(int __i3, int __i2, | ... | @@ -3581,7 +3601,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set_epi32(int __i3, int __i2, |
| 3581 | /// vector. | 3601 | /// vector. |
| 3582 | /// \returns An initialized 128-bit vector of [8 x i16] containing the values | 3602 | /// \returns An initialized 128-bit vector of [8 x i16] containing the values |
| 3583 | /// provided in the operands. | 3603 | /// provided in the operands. |
| 3584 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 3604 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3585 | _mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3, | 3605 | _mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3, |
| 3586 | short __w2, short __w1, short __w0) { | 3606 | short __w2, short __w1, short __w0) { |
| 3587 | return __extension__(__m128i)(__v8hi){__w0, __w1, __w2, __w3, | 3607 | return __extension__(__m128i)(__v8hi){__w0, __w1, __w2, __w3, |
| ... | @@ -3630,7 +3650,7 @@ _mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3, | ... | @@ -3630,7 +3650,7 @@ _mm_set_epi16(short __w7, short __w6, short __w5, short __w4, short __w3, |
| 3630 | /// Initializes bits [7:0] of the destination vector. | 3650 | /// Initializes bits [7:0] of the destination vector. |
| 3631 | /// \returns An initialized 128-bit vector of [16 x i8] containing the values | 3651 | /// \returns An initialized 128-bit vector of [16 x i8] containing the values |
| 3632 | /// provided in the operands. | 3652 | /// provided in the operands. |
| 3633 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 3653 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3634 | _mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11, | 3654 | _mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11, |
| 3635 | char __b10, char __b9, char __b8, char __b7, char __b6, char __b5, | 3655 | char __b10, char __b9, char __b8, char __b7, char __b6, char __b5, |
| 3636 | char __b4, char __b3, char __b2, char __b1, char __b0) { | 3656 | char __b4, char __b3, char __b2, char __b1, char __b0) { |
| ... | @@ -3652,7 +3672,8 @@ _mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11, | ... | @@ -3652,7 +3672,8 @@ _mm_set_epi8(char __b15, char __b14, char __b13, char __b12, char __b11, |
| 3652 | /// vector. | 3672 | /// vector. |
| 3653 | /// \returns An initialized 128-bit integer vector of [2 x i64] with both | 3673 | /// \returns An initialized 128-bit integer vector of [2 x i64] with both |
| 3654 | /// elements containing the value provided in the operand. | 3674 | /// elements containing the value provided in the operand. |
| 3655 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64x(long long __q) { | 3675 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3676 | _mm_set1_epi64x(long long __q) { | ||
| 3656 | return _mm_set_epi64x(__q, __q); | 3677 | return _mm_set_epi64x(__q, __q); |
| 3657 | } | 3678 | } |
| 3658 | 3679 | ||
| ... | @@ -3669,7 +3690,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64x(long long __q) { | ... | @@ -3669,7 +3690,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64x(long long __q) { |
| 3669 | /// vector. | 3690 | /// vector. |
| 3670 | /// \returns An initialized 128-bit vector of [2 x i64] with all elements | 3691 | /// \returns An initialized 128-bit vector of [2 x i64] with all elements |
| 3671 | /// containing the value provided in the operand. | 3692 | /// containing the value provided in the operand. |
| 3672 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64(__m64 __q) { | 3693 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3694 | _mm_set1_epi64(__m64 __q) { | ||
| 3673 | return _mm_set_epi64(__q, __q); | 3695 | return _mm_set_epi64(__q, __q); |
| 3674 | } | 3696 | } |
| 3675 | 3697 | ||
| ... | @@ -3686,7 +3708,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64(__m64 __q) { | ... | @@ -3686,7 +3708,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi64(__m64 __q) { |
| 3686 | /// vector. | 3708 | /// vector. |
| 3687 | /// \returns An initialized 128-bit vector of [4 x i32] with all elements | 3709 | /// \returns An initialized 128-bit vector of [4 x i32] with all elements |
| 3688 | /// containing the value provided in the operand. | 3710 | /// containing the value provided in the operand. |
| 3689 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi32(int __i) { | 3711 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_epi32(int __i) { |
| 3690 | return _mm_set_epi32(__i, __i, __i, __i); | 3712 | return _mm_set_epi32(__i, __i, __i, __i); |
| 3691 | } | 3713 | } |
| 3692 | 3714 | ||
| ... | @@ -3703,7 +3725,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi32(int __i) { | ... | @@ -3703,7 +3725,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi32(int __i) { |
| 3703 | /// vector. | 3725 | /// vector. |
| 3704 | /// \returns An initialized 128-bit vector of [8 x i16] with all elements | 3726 | /// \returns An initialized 128-bit vector of [8 x i16] with all elements |
| 3705 | /// containing the value provided in the operand. | 3727 | /// containing the value provided in the operand. |
| 3706 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi16(short __w) { | 3728 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3729 | _mm_set1_epi16(short __w) { | ||
| 3707 | return _mm_set_epi16(__w, __w, __w, __w, __w, __w, __w, __w); | 3730 | return _mm_set_epi16(__w, __w, __w, __w, __w, __w, __w, __w); |
| 3708 | } | 3731 | } |
| 3709 | 3732 | ||
| ... | @@ -3720,7 +3743,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi16(short __w) { | ... | @@ -3720,7 +3743,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi16(short __w) { |
| 3720 | /// vector. | 3743 | /// vector. |
| 3721 | /// \returns An initialized 128-bit vector of [16 x i8] with all elements | 3744 | /// \returns An initialized 128-bit vector of [16 x i8] with all elements |
| 3722 | /// containing the value provided in the operand. | 3745 | /// containing the value provided in the operand. |
| 3723 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi8(char __b) { | 3746 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_set1_epi8(char __b) { |
| 3724 | return _mm_set_epi8(__b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, | 3747 | return _mm_set_epi8(__b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, |
| 3725 | __b, __b, __b, __b, __b); | 3748 | __b, __b, __b, __b, __b); |
| 3726 | } | 3749 | } |
| ... | @@ -3739,8 +3762,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi8(char __b) { | ... | @@ -3739,8 +3762,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_set1_epi8(char __b) { |
| 3739 | /// A 64-bit integral value used to initialize the upper 64 bits of the | 3762 | /// A 64-bit integral value used to initialize the upper 64 bits of the |
| 3740 | /// result. | 3763 | /// result. |
| 3741 | /// \returns An initialized 128-bit integer vector. | 3764 | /// \returns An initialized 128-bit integer vector. |
| 3742 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi64(__m64 __q0, | 3765 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3743 | __m64 __q1) { | 3766 | _mm_setr_epi64(__m64 __q0, __m64 __q1) { |
| 3744 | return _mm_set_epi64(__q1, __q0); | 3767 | return _mm_set_epi64(__q1, __q0); |
| 3745 | } | 3768 | } |
| 3746 | 3769 | ||
| ... | @@ -3761,9 +3784,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi64(__m64 __q0, | ... | @@ -3761,9 +3784,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi64(__m64 __q0, |
| 3761 | /// \param __i3 | 3784 | /// \param __i3 |
| 3762 | /// A 32-bit integral value used to initialize bits [127:96] of the result. | 3785 | /// A 32-bit integral value used to initialize bits [127:96] of the result. |
| 3763 | /// \returns An initialized 128-bit integer vector. | 3786 | /// \returns An initialized 128-bit integer vector. |
| 3764 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi32(int __i0, int __i1, | 3787 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3765 | int __i2, | 3788 | _mm_setr_epi32(int __i0, int __i1, int __i2, int __i3) { |
| 3766 | int __i3) { | ||
| 3767 | return _mm_set_epi32(__i3, __i2, __i1, __i0); | 3789 | return _mm_set_epi32(__i3, __i2, __i1, __i0); |
| 3768 | } | 3790 | } |
| 3769 | 3791 | ||
| ... | @@ -3792,7 +3814,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi32(int __i0, int __i1, | ... | @@ -3792,7 +3814,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setr_epi32(int __i0, int __i1, |
| 3792 | /// \param __w7 | 3814 | /// \param __w7 |
| 3793 | /// A 16-bit integral value used to initialize bits [127:112] of the result. | 3815 | /// A 16-bit integral value used to initialize bits [127:112] of the result. |
| 3794 | /// \returns An initialized 128-bit integer vector. | 3816 | /// \returns An initialized 128-bit integer vector. |
| 3795 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 3817 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3796 | _mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4, | 3818 | _mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4, |
| 3797 | short __w5, short __w6, short __w7) { | 3819 | short __w5, short __w6, short __w7) { |
| 3798 | return _mm_set_epi16(__w7, __w6, __w5, __w4, __w3, __w2, __w1, __w0); | 3820 | return _mm_set_epi16(__w7, __w6, __w5, __w4, __w3, __w2, __w1, __w0); |
| ... | @@ -3839,7 +3861,7 @@ _mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4, | ... | @@ -3839,7 +3861,7 @@ _mm_setr_epi16(short __w0, short __w1, short __w2, short __w3, short __w4, |
| 3839 | /// \param __b15 | 3861 | /// \param __b15 |
| 3840 | /// An 8-bit integral value used to initialize bits [127:120] of the result. | 3862 | /// An 8-bit integral value used to initialize bits [127:120] of the result. |
| 3841 | /// \returns An initialized 128-bit integer vector. | 3863 | /// \returns An initialized 128-bit integer vector. |
| 3842 | static __inline__ __m128i __DEFAULT_FN_ATTRS | 3864 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3843 | _mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, | 3865 | _mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, |
| 3844 | char __b6, char __b7, char __b8, char __b9, char __b10, | 3866 | char __b6, char __b7, char __b8, char __b9, char __b10, |
| 3845 | char __b11, char __b12, char __b13, char __b14, char __b15) { | 3867 | char __b11, char __b12, char __b13, char __b14, char __b15) { |
| ... | @@ -3855,7 +3877,7 @@ _mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, | ... | @@ -3855,7 +3877,7 @@ _mm_setr_epi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, |
| 3855 | /// | 3877 | /// |
| 3856 | /// \returns An initialized 128-bit integer vector with all elements set to | 3878 | /// \returns An initialized 128-bit integer vector with all elements set to |
| 3857 | /// zero. | 3879 | /// zero. |
| 3858 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_setzero_si128(void) { | 3880 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setzero_si128(void) { |
| 3859 | return __extension__(__m128i)(__v2di){0LL, 0LL}; | 3881 | return __extension__(__m128i)(__v2di){0LL, 0LL}; |
| 3860 | } | 3882 | } |
| 3861 | 3883 | ||
| ... | @@ -4588,7 +4610,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_unpacklo_epi64(__m128i __a, | ... | @@ -4588,7 +4610,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_unpacklo_epi64(__m128i __a, |
| 4588 | /// A 128-bit integer vector operand. The lower 64 bits are moved to the | 4610 | /// A 128-bit integer vector operand. The lower 64 bits are moved to the |
| 4589 | /// destination. | 4611 | /// destination. |
| 4590 | /// \returns A 64-bit integer containing the lower 64 bits of the parameter. | 4612 | /// \returns A 64-bit integer containing the lower 64 bits of the parameter. |
| 4591 | static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_movepi64_pi64(__m128i __a) { | 4613 | static __inline__ __m64 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4614 | _mm_movepi64_pi64(__m128i __a) { | ||
| 4592 | return (__m64)__a[0]; | 4615 | return (__m64)__a[0]; |
| 4593 | } | 4616 | } |
| 4594 | 4617 | ||
| ... | @@ -4603,8 +4626,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_movepi64_pi64(__m128i __a) { | ... | @@ -4603,8 +4626,9 @@ static __inline__ __m64 __DEFAULT_FN_ATTRS _mm_movepi64_pi64(__m128i __a) { |
| 4603 | /// A 64-bit value. | 4626 | /// A 64-bit value. |
| 4604 | /// \returns A 128-bit integer vector. The lower 64 bits contain the value from | 4627 | /// \returns A 128-bit integer vector. The lower 64 bits contain the value from |
| 4605 | /// the operand. The upper 64 bits are assigned zeros. | 4628 | /// the operand. The upper 64 bits are assigned zeros. |
| 4606 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_movpi64_epi64(__m64 __a) { | 4629 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4607 | return __extension__(__m128i)(__v2di){(long long)__a, 0}; | 4630 | _mm_movpi64_epi64(__m64 __a) { |
| 4631 | return __builtin_shufflevector((__v1di)__a, _mm_setzero_si64(), 0, 1); | ||
| 4608 | } | 4632 | } |
| 4609 | 4633 | ||
| 4610 | /// Moves the lower 64 bits of a 128-bit integer vector to a 128-bit | 4634 | /// Moves the lower 64 bits of a 128-bit integer vector to a 128-bit |
| ... | @@ -4619,7 +4643,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_movpi64_epi64(__m64 __a) { | ... | @@ -4619,7 +4643,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_movpi64_epi64(__m64 __a) { |
| 4619 | /// destination. | 4643 | /// destination. |
| 4620 | /// \returns A 128-bit integer vector. The lower 64 bits contain the value from | 4644 | /// \returns A 128-bit integer vector. The lower 64 bits contain the value from |
| 4621 | /// the operand. The upper 64 bits are assigned zeros. | 4645 | /// the operand. The upper 64 bits are assigned zeros. |
| 4622 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_move_epi64(__m128i __a) { | 4646 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4647 | _mm_move_epi64(__m128i __a) { | ||
| 4623 | return __builtin_shufflevector((__v2di)__a, _mm_setzero_si128(), 0, 2); | 4648 | return __builtin_shufflevector((__v2di)__a, _mm_setzero_si128(), 0, 2); |
| 4624 | } | 4649 | } |
| 4625 | 4650 | ||
| ... | @@ -4638,8 +4663,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_move_epi64(__m128i __a) { | ... | @@ -4638,8 +4663,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_move_epi64(__m128i __a) { |
| 4638 | /// A 128-bit vector of [2 x double]. \n | 4663 | /// A 128-bit vector of [2 x double]. \n |
| 4639 | /// Bits [127:64] are written to bits [127:64] of the destination. | 4664 | /// Bits [127:64] are written to bits [127:64] of the destination. |
| 4640 | /// \returns A 128-bit vector of [2 x double] containing the interleaved values. | 4665 | /// \returns A 128-bit vector of [2 x double] containing the interleaved values. |
| 4641 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_unpackhi_pd(__m128d __a, | 4666 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4642 | __m128d __b) { | 4667 | _mm_unpackhi_pd(__m128d __a, __m128d __b) { |
| 4643 | return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 1, 2 + 1); | 4668 | return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 1, 2 + 1); |
| 4644 | } | 4669 | } |
| 4645 | 4670 | ||
| ... | @@ -4658,8 +4683,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_unpackhi_pd(__m128d __a, | ... | @@ -4658,8 +4683,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_unpackhi_pd(__m128d __a, |
| 4658 | /// A 128-bit vector of [2 x double]. \n | 4683 | /// A 128-bit vector of [2 x double]. \n |
| 4659 | /// Bits [63:0] are written to bits [127:64] of the destination. | 4684 | /// Bits [63:0] are written to bits [127:64] of the destination. |
| 4660 | /// \returns A 128-bit vector of [2 x double] containing the interleaved values. | 4685 | /// \returns A 128-bit vector of [2 x double] containing the interleaved values. |
| 4661 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_unpacklo_pd(__m128d __a, | 4686 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4662 | __m128d __b) { | 4687 | _mm_unpacklo_pd(__m128d __a, __m128d __b) { |
| 4663 | return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 0, 2 + 0); | 4688 | return __builtin_shufflevector((__v2df)__a, (__v2df)__b, 0, 2 + 0); |
| 4664 | } | 4689 | } |
| 4665 | 4690 | ||
| ... | @@ -4722,7 +4747,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_movemask_pd(__m128d __a) { | ... | @@ -4722,7 +4747,8 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_movemask_pd(__m128d __a) { |
| 4722 | /// A 128-bit floating-point vector of [2 x double]. | 4747 | /// A 128-bit floating-point vector of [2 x double]. |
| 4723 | /// \returns A 128-bit floating-point vector of [4 x float] containing the same | 4748 | /// \returns A 128-bit floating-point vector of [4 x float] containing the same |
| 4724 | /// bitwise pattern as the parameter. | 4749 | /// bitwise pattern as the parameter. |
| 4725 | static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castpd_ps(__m128d __a) { | 4750 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4751 | _mm_castpd_ps(__m128d __a) { | ||
| 4726 | return (__m128)__a; | 4752 | return (__m128)__a; |
| 4727 | } | 4753 | } |
| 4728 | 4754 | ||
| ... | @@ -4737,7 +4763,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castpd_ps(__m128d __a) { | ... | @@ -4737,7 +4763,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castpd_ps(__m128d __a) { |
| 4737 | /// A 128-bit floating-point vector of [2 x double]. | 4763 | /// A 128-bit floating-point vector of [2 x double]. |
| 4738 | /// \returns A 128-bit integer vector containing the same bitwise pattern as the | 4764 | /// \returns A 128-bit integer vector containing the same bitwise pattern as the |
| 4739 | /// parameter. | 4765 | /// parameter. |
| 4740 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castpd_si128(__m128d __a) { | 4766 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4767 | _mm_castpd_si128(__m128d __a) { | ||
| 4741 | return (__m128i)__a; | 4768 | return (__m128i)__a; |
| 4742 | } | 4769 | } |
| 4743 | 4770 | ||
| ... | @@ -4752,7 +4779,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castpd_si128(__m128d __a) { | ... | @@ -4752,7 +4779,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castpd_si128(__m128d __a) { |
| 4752 | /// A 128-bit floating-point vector of [4 x float]. | 4779 | /// A 128-bit floating-point vector of [4 x float]. |
| 4753 | /// \returns A 128-bit floating-point vector of [2 x double] containing the same | 4780 | /// \returns A 128-bit floating-point vector of [2 x double] containing the same |
| 4754 | /// bitwise pattern as the parameter. | 4781 | /// bitwise pattern as the parameter. |
| 4755 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castps_pd(__m128 __a) { | 4782 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4783 | _mm_castps_pd(__m128 __a) { | ||
| 4756 | return (__m128d)__a; | 4784 | return (__m128d)__a; |
| 4757 | } | 4785 | } |
| 4758 | 4786 | ||
| ... | @@ -4767,7 +4795,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castps_pd(__m128 __a) { | ... | @@ -4767,7 +4795,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castps_pd(__m128 __a) { |
| 4767 | /// A 128-bit floating-point vector of [4 x float]. | 4795 | /// A 128-bit floating-point vector of [4 x float]. |
| 4768 | /// \returns A 128-bit integer vector containing the same bitwise pattern as the | 4796 | /// \returns A 128-bit integer vector containing the same bitwise pattern as the |
| 4769 | /// parameter. | 4797 | /// parameter. |
| 4770 | static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castps_si128(__m128 __a) { | 4798 | static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4799 | _mm_castps_si128(__m128 __a) { | ||
| 4771 | return (__m128i)__a; | 4800 | return (__m128i)__a; |
| 4772 | } | 4801 | } |
| 4773 | 4802 | ||
| ... | @@ -4782,7 +4811,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castps_si128(__m128 __a) { | ... | @@ -4782,7 +4811,8 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_castps_si128(__m128 __a) { |
| 4782 | /// A 128-bit integer vector. | 4811 | /// A 128-bit integer vector. |
| 4783 | /// \returns A 128-bit floating-point vector of [4 x float] containing the same | 4812 | /// \returns A 128-bit floating-point vector of [4 x float] containing the same |
| 4784 | /// bitwise pattern as the parameter. | 4813 | /// bitwise pattern as the parameter. |
| 4785 | static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castsi128_ps(__m128i __a) { | 4814 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4815 | _mm_castsi128_ps(__m128i __a) { | ||
| 4786 | return (__m128)__a; | 4816 | return (__m128)__a; |
| 4787 | } | 4817 | } |
| 4788 | 4818 | ||
| ... | @@ -4797,7 +4827,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castsi128_ps(__m128i __a) { | ... | @@ -4797,7 +4827,8 @@ static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_castsi128_ps(__m128i __a) { |
| 4797 | /// A 128-bit integer vector. | 4827 | /// A 128-bit integer vector. |
| 4798 | /// \returns A 128-bit floating-point vector of [2 x double] containing the same | 4828 | /// \returns A 128-bit floating-point vector of [2 x double] containing the same |
| 4799 | /// bitwise pattern as the parameter. | 4829 | /// bitwise pattern as the parameter. |
| 4800 | static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_castsi128_pd(__m128i __a) { | 4830 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4831 | _mm_castsi128_pd(__m128i __a) { | ||
| 4801 | return (__m128d)__a; | 4832 | return (__m128d)__a; |
| 4802 | } | 4833 | } |
| 4803 | 4834 | ||
| ... | @@ -4889,8 +4920,11 @@ void _mm_pause(void); | ... | @@ -4889,8 +4920,11 @@ void _mm_pause(void); |
| 4889 | #if defined(__cplusplus) | 4920 | #if defined(__cplusplus) |
| 4890 | } // extern "C" | 4921 | } // extern "C" |
| 4891 | #endif | 4922 | #endif |
| 4923 | |||
| 4924 | #undef __anyext128 | ||
| 4925 | #undef __trunc64 | ||
| 4892 | #undef __DEFAULT_FN_ATTRS | 4926 | #undef __DEFAULT_FN_ATTRS |
| 4893 | #undef __DEFAULT_FN_ATTRS_MMX | 4927 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR |
| 4894 | 4928 | ||
| 4895 | #define _MM_SHUFFLE2(x, y) (((x) << 1) | (y)) | 4929 | #define _MM_SHUFFLE2(x, y) (((x) << 1) | (y)) |
| 4896 | 4930 |
lib/include/gfniintrin.h+32-10| ... | @@ -14,6 +14,7 @@ | ... | @@ -14,6 +14,7 @@ |
| 14 | #ifndef __GFNIINTRIN_H | 14 | #ifndef __GFNIINTRIN_H |
| 15 | #define __GFNIINTRIN_H | 15 | #define __GFNIINTRIN_H |
| 16 | 16 | ||
| 17 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 17 | /* Default attributes for simple form (no masking). */ | 18 | /* Default attributes for simple form (no masking). */ |
| 18 | #define __DEFAULT_FN_ATTRS \ | 19 | #define __DEFAULT_FN_ATTRS \ |
| 19 | __attribute__((__always_inline__, __nodebug__, \ | 20 | __attribute__((__always_inline__, __nodebug__, \ |
| ... | @@ -25,26 +26,47 @@ | ... | @@ -25,26 +26,47 @@ |
| 25 | __target__("avx,gfni,no-evex512"), \ | 26 | __target__("avx,gfni,no-evex512"), \ |
| 26 | __min_vector_width__(256))) | 27 | __min_vector_width__(256))) |
| 27 | 28 | ||
| 28 | /* Default attributes for ZMM unmasked forms. */ | 29 | /* Default attributes for VLX masked forms. */ |
| 29 | #define __DEFAULT_FN_ATTRS_Z \ | 30 | #define __DEFAULT_FN_ATTRS_VL128 \ |
| 30 | __attribute__((__always_inline__, __nodebug__, \ | 31 | __attribute__((__always_inline__, __nodebug__, \ |
| 31 | __target__("avx512f,evex512,gfni"), \ | 32 | __target__("avx512bw,avx512vl,gfni,no-evex512"), \ |
| 32 | __min_vector_width__(512))) | 33 | __min_vector_width__(128))) |
| 33 | /* Default attributes for ZMM masked forms. */ | 34 | #define __DEFAULT_FN_ATTRS_VL256 \ |
| 34 | #define __DEFAULT_FN_ATTRS_Z_MASK \ | ||
| 35 | __attribute__((__always_inline__, __nodebug__, \ | 35 | __attribute__((__always_inline__, __nodebug__, \ |
| 36 | __target__("avx512bw,evex512,gfni"), \ | 36 | __target__("avx512bw,avx512vl,gfni,no-evex512"), \ |
| 37 | __min_vector_width__(512))) | 37 | __min_vector_width__(256))) |
| 38 | #else | ||
| 39 | /* Default attributes for simple form (no masking). */ | ||
| 40 | #define __DEFAULT_FN_ATTRS \ | ||
| 41 | __attribute__((__always_inline__, __nodebug__, __target__("gfni"), \ | ||
| 42 | __min_vector_width__(128))) | ||
| 43 | |||
| 44 | /* Default attributes for YMM unmasked form. */ | ||
| 45 | #define __DEFAULT_FN_ATTRS_Y \ | ||
| 46 | __attribute__((__always_inline__, __nodebug__, __target__("avx,gfni"), \ | ||
| 47 | __min_vector_width__(256))) | ||
| 38 | 48 | ||
| 39 | /* Default attributes for VLX masked forms. */ | 49 | /* Default attributes for VLX masked forms. */ |
| 40 | #define __DEFAULT_FN_ATTRS_VL128 \ | 50 | #define __DEFAULT_FN_ATTRS_VL128 \ |
| 41 | __attribute__((__always_inline__, __nodebug__, \ | 51 | __attribute__((__always_inline__, __nodebug__, \ |
| 42 | __target__("avx512bw,avx512vl,gfni,no-evex512"), \ | 52 | __target__("avx512bw,avx512vl,gfni"), \ |
| 43 | __min_vector_width__(128))) | 53 | __min_vector_width__(128))) |
| 44 | #define __DEFAULT_FN_ATTRS_VL256 \ | 54 | #define __DEFAULT_FN_ATTRS_VL256 \ |
| 45 | __attribute__((__always_inline__, __nodebug__, \ | 55 | __attribute__((__always_inline__, __nodebug__, \ |
| 46 | __target__("avx512bw,avx512vl,gfni,no-evex512"), \ | 56 | __target__("avx512bw,avx512vl,gfni"), \ |
| 47 | __min_vector_width__(256))) | 57 | __min_vector_width__(256))) |
| 58 | #endif | ||
| 59 | |||
| 60 | /* Default attributes for ZMM unmasked forms. */ | ||
| 61 | #define __DEFAULT_FN_ATTRS_Z \ | ||
| 62 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 63 | __target__("avx512f,evex512,gfni"), \ | ||
| 64 | __min_vector_width__(512))) | ||
| 65 | /* Default attributes for ZMM masked forms. */ | ||
| 66 | #define __DEFAULT_FN_ATTRS_Z_MASK \ | ||
| 67 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 68 | __target__("avx512bw,evex512,gfni"), \ | ||
| 69 | __min_vector_width__(512))) | ||
| 48 | 70 | ||
| 49 | #define _mm_gf2p8affineinv_epi64_epi8(A, B, I) \ | 71 | #define _mm_gf2p8affineinv_epi64_epi8(A, B, I) \ |
| 50 | ((__m128i)__builtin_ia32_vgf2p8affineinvqb_v16qi((__v16qi)(__m128i)(A), \ | 72 | ((__m128i)__builtin_ia32_vgf2p8affineinvqb_v16qi((__v16qi)(__m128i)(A), \ |
lib/include/hexagon_types.h+8-4| ... | @@ -1,7 +1,11 @@ | ... | @@ -1,7 +1,11 @@ |
| 1 | /******************************************************************************/ | 1 | //===----------------------------------------------------------------------===// |
| 2 | /* (c) 2020 Qualcomm Innovation Center, Inc. All rights reserved. */ | 2 | // |
| 3 | /* */ | 3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | /******************************************************************************/ | 4 | // See https://llvm.org/LICENSE.txt for license information. |
| 5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | // | ||
| 7 | //===----------------------------------------------------------------------===// | ||
| 8 | |||
| 5 | #ifndef HEXAGON_TYPES_H | 9 | #ifndef HEXAGON_TYPES_H |
| 6 | #define HEXAGON_TYPES_H | 10 | #define HEXAGON_TYPES_H |
| 7 | 11 |
lib/include/hvx_hexagon_protos.h+427| ... | @@ -5178,6 +5178,433 @@ | ... | @@ -5178,6 +5178,433 @@ |
| 5178 | #define Q6_Vuh_vmpy_VuhVuh_rs16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhvs)(Vu,Vv) | 5178 | #define Q6_Vuh_vmpy_VuhVuh_rs16(Vu,Vv) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpyuhvs)(Vu,Vv) |
| 5179 | #endif /* __HEXAGON_ARCH___ >= 69 */ | 5179 | #endif /* __HEXAGON_ARCH___ >= 69 */ |
| 5180 | 5180 | ||
| 5181 | #if __HVX_ARCH__ >= 73 | ||
| 5182 | /* ========================================================================== | ||
| 5183 | Assembly Syntax: Vdd32.sf=vadd(Vu32.bf,Vv32.bf) | ||
| 5184 | C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vadd_VbfVbf(HVX_Vector Vu, | ||
| 5185 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5186 | ========================================================================== */ | ||
| 5187 | |||
| 5188 | #define Q6_Wsf_vadd_VbfVbf(Vu, Vv) \ | ||
| 5189 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_sf_bf)(Vu, Vv) | ||
| 5190 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5191 | |||
| 5192 | #if __HVX_ARCH__ >= 73 | ||
| 5193 | /* ========================================================================== | ||
| 5194 | Assembly Syntax: Vd32.h=Vu32.hf | ||
| 5195 | C Intrinsic Prototype: HVX_Vector Q6_Vh_equals_Vhf(HVX_Vector Vu) | ||
| 5196 | Instruction Type: CVI_VS | ||
| 5197 | Execution Slots: SLOT0123 | ||
| 5198 | ========================================================================== */ | ||
| 5199 | |||
| 5200 | #define Q6_Vh_equals_Vhf(Vu) \ | ||
| 5201 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_h_hf)(Vu) | ||
| 5202 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5203 | |||
| 5204 | #if __HVX_ARCH__ >= 73 | ||
| 5205 | /* ========================================================================== | ||
| 5206 | Assembly Syntax: Vd32.hf=Vu32.h | ||
| 5207 | C Intrinsic Prototype: HVX_Vector Q6_Vhf_equals_Vh(HVX_Vector Vu) | ||
| 5208 | Instruction Type: CVI_VS | ||
| 5209 | Execution Slots: SLOT0123 | ||
| 5210 | ========================================================================== */ | ||
| 5211 | |||
| 5212 | #define Q6_Vhf_equals_Vh(Vu) \ | ||
| 5213 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_hf_h)(Vu) | ||
| 5214 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5215 | |||
| 5216 | #if __HVX_ARCH__ >= 73 | ||
| 5217 | /* ========================================================================== | ||
| 5218 | Assembly Syntax: Vd32.sf=Vu32.w | ||
| 5219 | C Intrinsic Prototype: HVX_Vector Q6_Vsf_equals_Vw(HVX_Vector Vu) | ||
| 5220 | Instruction Type: CVI_VS | ||
| 5221 | Execution Slots: SLOT0123 | ||
| 5222 | ========================================================================== */ | ||
| 5223 | |||
| 5224 | #define Q6_Vsf_equals_Vw(Vu) \ | ||
| 5225 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_sf_w)(Vu) | ||
| 5226 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5227 | |||
| 5228 | #if __HVX_ARCH__ >= 73 | ||
| 5229 | /* ========================================================================== | ||
| 5230 | Assembly Syntax: Vd32.w=Vu32.sf | ||
| 5231 | C Intrinsic Prototype: HVX_Vector Q6_Vw_equals_Vsf(HVX_Vector Vu) | ||
| 5232 | Instruction Type: CVI_VS | ||
| 5233 | Execution Slots: SLOT0123 | ||
| 5234 | ========================================================================== */ | ||
| 5235 | |||
| 5236 | #define Q6_Vw_equals_Vsf(Vu) \ | ||
| 5237 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vconv_w_sf)(Vu) | ||
| 5238 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5239 | |||
| 5240 | #if __HVX_ARCH__ >= 73 | ||
| 5241 | /* ========================================================================== | ||
| 5242 | Assembly Syntax: Vd32.bf=vcvt(Vu32.sf,Vv32.sf) | ||
| 5243 | C Intrinsic Prototype: HVX_Vector Q6_Vbf_vcvt_VsfVsf(HVX_Vector Vu, | ||
| 5244 | HVX_Vector Vv) Instruction Type: CVI_VX Execution Slots: SLOT23 | ||
| 5245 | ========================================================================== */ | ||
| 5246 | |||
| 5247 | #define Q6_Vbf_vcvt_VsfVsf(Vu, Vv) \ | ||
| 5248 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_bf_sf)(Vu, Vv) | ||
| 5249 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5250 | |||
| 5251 | #if __HVX_ARCH__ >= 73 | ||
| 5252 | /* ========================================================================== | ||
| 5253 | Assembly Syntax: Qd4=vcmp.gt(Vu32.bf,Vv32.bf) | ||
| 5254 | C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gt_VbfVbf(HVX_Vector Vu, | ||
| 5255 | HVX_Vector Vv) Instruction Type: CVI_VA Execution Slots: SLOT0123 | ||
| 5256 | ========================================================================== */ | ||
| 5257 | |||
| 5258 | #define Q6_Q_vcmp_gt_VbfVbf(Vu, Vv) \ | ||
| 5259 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt) \ | ||
| 5260 | ((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtbf)(Vu, Vv)), -1) | ||
| 5261 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5262 | |||
| 5263 | #if __HVX_ARCH__ >= 73 | ||
| 5264 | /* ========================================================================== | ||
| 5265 | Assembly Syntax: Qx4&=vcmp.gt(Vu32.bf,Vv32.bf) | ||
| 5266 | C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtand_QVbfVbf(HVX_VectorPred | ||
| 5267 | Qx, HVX_Vector Vu, HVX_Vector Vv) Instruction Type: CVI_VA Execution | ||
| 5268 | Slots: SLOT0123 | ||
| 5269 | ========================================================================== */ | ||
| 5270 | |||
| 5271 | #define Q6_Q_vcmp_gtand_QVbfVbf(Qx, Vu, Vv) \ | ||
| 5272 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt) \ | ||
| 5273 | ((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtbf_and)( \ | ||
| 5274 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx), -1), Vu, \ | ||
| 5275 | Vv)), \ | ||
| 5276 | -1) | ||
| 5277 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5278 | |||
| 5279 | #if __HVX_ARCH__ >= 73 | ||
| 5280 | /* ========================================================================== | ||
| 5281 | Assembly Syntax: Qx4|=vcmp.gt(Vu32.bf,Vv32.bf) | ||
| 5282 | C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtor_QVbfVbf(HVX_VectorPred | ||
| 5283 | Qx, HVX_Vector Vu, HVX_Vector Vv) Instruction Type: CVI_VA Execution | ||
| 5284 | Slots: SLOT0123 | ||
| 5285 | ========================================================================== */ | ||
| 5286 | |||
| 5287 | #define Q6_Q_vcmp_gtor_QVbfVbf(Qx, Vu, Vv) \ | ||
| 5288 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt) \ | ||
| 5289 | ((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtbf_or)( \ | ||
| 5290 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx), -1), Vu, \ | ||
| 5291 | Vv)), \ | ||
| 5292 | -1) | ||
| 5293 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5294 | |||
| 5295 | #if __HVX_ARCH__ >= 73 | ||
| 5296 | /* ========================================================================== | ||
| 5297 | Assembly Syntax: Qx4^=vcmp.gt(Vu32.bf,Vv32.bf) | ||
| 5298 | C Intrinsic Prototype: HVX_VectorPred Q6_Q_vcmp_gtxacc_QVbfVbf(HVX_VectorPred | ||
| 5299 | Qx, HVX_Vector Vu, HVX_Vector Vv) Instruction Type: CVI_VA Execution | ||
| 5300 | Slots: SLOT0123 | ||
| 5301 | ========================================================================== */ | ||
| 5302 | |||
| 5303 | #define Q6_Q_vcmp_gtxacc_QVbfVbf(Qx, Vu, Vv) \ | ||
| 5304 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandqrt) \ | ||
| 5305 | ((__BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vgtbf_xor)( \ | ||
| 5306 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vandvrt)((Qx), -1), Vu, \ | ||
| 5307 | Vv)), \ | ||
| 5308 | -1) | ||
| 5309 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5310 | |||
| 5311 | #if __HVX_ARCH__ >= 73 | ||
| 5312 | /* ========================================================================== | ||
| 5313 | Assembly Syntax: Vd32.bf=vmax(Vu32.bf,Vv32.bf) | ||
| 5314 | C Intrinsic Prototype: HVX_Vector Q6_Vbf_vmax_VbfVbf(HVX_Vector Vu, | ||
| 5315 | HVX_Vector Vv) Instruction Type: CVI_VX_LATE Execution Slots: SLOT23 | ||
| 5316 | ========================================================================== */ | ||
| 5317 | |||
| 5318 | #define Q6_Vbf_vmax_VbfVbf(Vu, Vv) \ | ||
| 5319 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmax_bf)(Vu, Vv) | ||
| 5320 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5321 | |||
| 5322 | #if __HVX_ARCH__ >= 73 | ||
| 5323 | /* ========================================================================== | ||
| 5324 | Assembly Syntax: Vd32.bf=vmin(Vu32.bf,Vv32.bf) | ||
| 5325 | C Intrinsic Prototype: HVX_Vector Q6_Vbf_vmin_VbfVbf(HVX_Vector Vu, | ||
| 5326 | HVX_Vector Vv) Instruction Type: CVI_VX_LATE Execution Slots: SLOT23 | ||
| 5327 | ========================================================================== */ | ||
| 5328 | |||
| 5329 | #define Q6_Vbf_vmin_VbfVbf(Vu, Vv) \ | ||
| 5330 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmin_bf)(Vu, Vv) | ||
| 5331 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5332 | |||
| 5333 | #if __HVX_ARCH__ >= 73 | ||
| 5334 | /* ========================================================================== | ||
| 5335 | Assembly Syntax: Vdd32.sf=vmpy(Vu32.bf,Vv32.bf) | ||
| 5336 | C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vmpy_VbfVbf(HVX_Vector Vu, | ||
| 5337 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5338 | ========================================================================== */ | ||
| 5339 | |||
| 5340 | #define Q6_Wsf_vmpy_VbfVbf(Vu, Vv) \ | ||
| 5341 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_sf_bf)(Vu, Vv) | ||
| 5342 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5343 | |||
| 5344 | #if __HVX_ARCH__ >= 73 | ||
| 5345 | /* ========================================================================== | ||
| 5346 | Assembly Syntax: Vxx32.sf+=vmpy(Vu32.bf,Vv32.bf) | ||
| 5347 | C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vmpyacc_WsfVbfVbf(HVX_VectorPair | ||
| 5348 | Vxx, HVX_Vector Vu, HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution | ||
| 5349 | Slots: SLOT23 | ||
| 5350 | ========================================================================== */ | ||
| 5351 | |||
| 5352 | #define Q6_Wsf_vmpyacc_WsfVbfVbf(Vxx, Vu, Vv) \ | ||
| 5353 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_sf_bf_acc)(Vxx, Vu, Vv) | ||
| 5354 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5355 | |||
| 5356 | #if __HVX_ARCH__ >= 73 | ||
| 5357 | /* ========================================================================== | ||
| 5358 | Assembly Syntax: Vdd32.sf=vsub(Vu32.bf,Vv32.bf) | ||
| 5359 | C Intrinsic Prototype: HVX_VectorPair Q6_Wsf_vsub_VbfVbf(HVX_Vector Vu, | ||
| 5360 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5361 | ========================================================================== */ | ||
| 5362 | |||
| 5363 | #define Q6_Wsf_vsub_VbfVbf(Vu, Vv) \ | ||
| 5364 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_sf_bf)(Vu, Vv) | ||
| 5365 | #endif /* __HEXAGON_ARCH___ >= 73 */ | ||
| 5366 | |||
| 5367 | #if __HVX_ARCH__ >= 79 | ||
| 5368 | /* ========================================================================== | ||
| 5369 | Assembly Syntax: Vd32=vgetqfext(Vu32.x,Rt32) | ||
| 5370 | C Intrinsic Prototype: HVX_Vector Q6_V_vgetqfext_VR(HVX_Vector Vu, Word32 Rt) | ||
| 5371 | Instruction Type: CVI_VX | ||
| 5372 | Execution Slots: SLOT23 | ||
| 5373 | ========================================================================== */ | ||
| 5374 | |||
| 5375 | #define Q6_V_vgetqfext_VR(Vu, Rt) \ | ||
| 5376 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_get_qfext)(Vu, Rt) | ||
| 5377 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5378 | |||
| 5379 | #if __HVX_ARCH__ >= 79 | ||
| 5380 | /* ========================================================================== | ||
| 5381 | Assembly Syntax: Vx32|=vgetqfext(Vu32.x,Rt32) | ||
| 5382 | C Intrinsic Prototype: HVX_Vector Q6_V_vgetqfextor_VVR(HVX_Vector Vx, | ||
| 5383 | HVX_Vector Vu, Word32 Rt) Instruction Type: CVI_VX Execution Slots: | ||
| 5384 | SLOT23 | ||
| 5385 | ========================================================================== */ | ||
| 5386 | |||
| 5387 | #define Q6_V_vgetqfextor_VVR(Vx, Vu, Rt) \ | ||
| 5388 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_get_qfext_oracc)(Vx, Vu, Rt) | ||
| 5389 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5390 | |||
| 5391 | #if __HVX_ARCH__ >= 79 | ||
| 5392 | /* ========================================================================== | ||
| 5393 | Assembly Syntax: Vd32.x=vsetqfext(Vu32,Rt32) | ||
| 5394 | C Intrinsic Prototype: HVX_Vector Q6_V_vsetqfext_VR(HVX_Vector Vu, Word32 Rt) | ||
| 5395 | Instruction Type: CVI_VX | ||
| 5396 | Execution Slots: SLOT23 | ||
| 5397 | ========================================================================== */ | ||
| 5398 | |||
| 5399 | #define Q6_V_vsetqfext_VR(Vu, Rt) \ | ||
| 5400 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_set_qfext)(Vu, Rt) | ||
| 5401 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5402 | |||
| 5403 | #if __HVX_ARCH__ >= 79 | ||
| 5404 | /* ========================================================================== | ||
| 5405 | Assembly Syntax: Vd32.f8=vabs(Vu32.f8) | ||
| 5406 | C Intrinsic Prototype: HVX_Vector Q6_V_vabs_V(HVX_Vector Vu) | ||
| 5407 | Instruction Type: CVI_VX_LATE | ||
| 5408 | Execution Slots: SLOT23 | ||
| 5409 | ========================================================================== */ | ||
| 5410 | |||
| 5411 | #define Q6_V_vabs_V(Vu) __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vabs_f8)(Vu) | ||
| 5412 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5413 | |||
| 5414 | #if __HVX_ARCH__ >= 79 | ||
| 5415 | /* ========================================================================== | ||
| 5416 | Assembly Syntax: Vdd32.hf=vadd(Vu32.f8,Vv32.f8) | ||
| 5417 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vadd_VV(HVX_Vector Vu, | ||
| 5418 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5419 | ========================================================================== */ | ||
| 5420 | |||
| 5421 | #define Q6_Whf_vadd_VV(Vu, Vv) \ | ||
| 5422 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vadd_hf_f8)(Vu, Vv) | ||
| 5423 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5424 | |||
| 5425 | #if __HVX_ARCH__ >= 79 | ||
| 5426 | /* ========================================================================== | ||
| 5427 | Assembly Syntax: Vd32.b=vcvt2(Vu32.hf,Vv32.hf) | ||
| 5428 | C Intrinsic Prototype: HVX_Vector Q6_Vb_vcvt2_VhfVhf(HVX_Vector Vu, | ||
| 5429 | HVX_Vector Vv) Instruction Type: CVI_VX Execution Slots: SLOT23 | ||
| 5430 | ========================================================================== */ | ||
| 5431 | |||
| 5432 | #define Q6_Vb_vcvt2_VhfVhf(Vu, Vv) \ | ||
| 5433 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt2_b_hf)(Vu, Vv) | ||
| 5434 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5435 | |||
| 5436 | #if __HVX_ARCH__ >= 79 | ||
| 5437 | /* ========================================================================== | ||
| 5438 | Assembly Syntax: Vdd32.hf=vcvt2(Vu32.b) | ||
| 5439 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vcvt2_Vb(HVX_Vector Vu) | ||
| 5440 | Instruction Type: CVI_VX_DV | ||
| 5441 | Execution Slots: SLOT23 | ||
| 5442 | ========================================================================== */ | ||
| 5443 | |||
| 5444 | #define Q6_Whf_vcvt2_Vb(Vu) \ | ||
| 5445 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt2_hf_b)(Vu) | ||
| 5446 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5447 | |||
| 5448 | #if __HVX_ARCH__ >= 79 | ||
| 5449 | /* ========================================================================== | ||
| 5450 | Assembly Syntax: Vdd32.hf=vcvt2(Vu32.ub) | ||
| 5451 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vcvt2_Vub(HVX_Vector Vu) | ||
| 5452 | Instruction Type: CVI_VX_DV | ||
| 5453 | Execution Slots: SLOT23 | ||
| 5454 | ========================================================================== */ | ||
| 5455 | |||
| 5456 | #define Q6_Whf_vcvt2_Vub(Vu) \ | ||
| 5457 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt2_hf_ub)(Vu) | ||
| 5458 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5459 | |||
| 5460 | #if __HVX_ARCH__ >= 79 | ||
| 5461 | /* ========================================================================== | ||
| 5462 | Assembly Syntax: Vd32.ub=vcvt2(Vu32.hf,Vv32.hf) | ||
| 5463 | C Intrinsic Prototype: HVX_Vector Q6_Vub_vcvt2_VhfVhf(HVX_Vector Vu, | ||
| 5464 | HVX_Vector Vv) Instruction Type: CVI_VX Execution Slots: SLOT23 | ||
| 5465 | ========================================================================== */ | ||
| 5466 | |||
| 5467 | #define Q6_Vub_vcvt2_VhfVhf(Vu, Vv) \ | ||
| 5468 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt2_ub_hf)(Vu, Vv) | ||
| 5469 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5470 | |||
| 5471 | #if __HVX_ARCH__ >= 79 | ||
| 5472 | /* ========================================================================== | ||
| 5473 | Assembly Syntax: Vd32.f8=vcvt(Vu32.hf,Vv32.hf) | ||
| 5474 | C Intrinsic Prototype: HVX_Vector Q6_V_vcvt_VhfVhf(HVX_Vector Vu, HVX_Vector | ||
| 5475 | Vv) Instruction Type: CVI_VX Execution Slots: SLOT23 | ||
| 5476 | ========================================================================== */ | ||
| 5477 | |||
| 5478 | #define Q6_V_vcvt_VhfVhf(Vu, Vv) \ | ||
| 5479 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_f8_hf)(Vu, Vv) | ||
| 5480 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5481 | |||
| 5482 | #if __HVX_ARCH__ >= 79 | ||
| 5483 | /* ========================================================================== | ||
| 5484 | Assembly Syntax: Vdd32.hf=vcvt(Vu32.f8) | ||
| 5485 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vcvt_V(HVX_Vector Vu) | ||
| 5486 | Instruction Type: CVI_VX_DV | ||
| 5487 | Execution Slots: SLOT23 | ||
| 5488 | ========================================================================== */ | ||
| 5489 | |||
| 5490 | #define Q6_Whf_vcvt_V(Vu) \ | ||
| 5491 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vcvt_hf_f8)(Vu) | ||
| 5492 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5493 | |||
| 5494 | #if __HVX_ARCH__ >= 79 | ||
| 5495 | /* ========================================================================== | ||
| 5496 | Assembly Syntax: Vd32.f8=vfmax(Vu32.f8,Vv32.f8) | ||
| 5497 | C Intrinsic Prototype: HVX_Vector Q6_V_vfmax_VV(HVX_Vector Vu, HVX_Vector Vv) | ||
| 5498 | Instruction Type: CVI_VX_LATE | ||
| 5499 | Execution Slots: SLOT23 | ||
| 5500 | ========================================================================== */ | ||
| 5501 | |||
| 5502 | #define Q6_V_vfmax_VV(Vu, Vv) \ | ||
| 5503 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmax_f8)(Vu, Vv) | ||
| 5504 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5505 | |||
| 5506 | #if __HVX_ARCH__ >= 79 | ||
| 5507 | /* ========================================================================== | ||
| 5508 | Assembly Syntax: Vd32.f8=vfmin(Vu32.f8,Vv32.f8) | ||
| 5509 | C Intrinsic Prototype: HVX_Vector Q6_V_vfmin_VV(HVX_Vector Vu, HVX_Vector Vv) | ||
| 5510 | Instruction Type: CVI_VX_LATE | ||
| 5511 | Execution Slots: SLOT23 | ||
| 5512 | ========================================================================== */ | ||
| 5513 | |||
| 5514 | #define Q6_V_vfmin_VV(Vu, Vv) \ | ||
| 5515 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfmin_f8)(Vu, Vv) | ||
| 5516 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5517 | |||
| 5518 | #if __HVX_ARCH__ >= 79 | ||
| 5519 | /* ========================================================================== | ||
| 5520 | Assembly Syntax: Vd32.f8=vfneg(Vu32.f8) | ||
| 5521 | C Intrinsic Prototype: HVX_Vector Q6_V_vfneg_V(HVX_Vector Vu) | ||
| 5522 | Instruction Type: CVI_VX_LATE | ||
| 5523 | Execution Slots: SLOT23 | ||
| 5524 | ========================================================================== */ | ||
| 5525 | |||
| 5526 | #define Q6_V_vfneg_V(Vu) \ | ||
| 5527 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vfneg_f8)(Vu) | ||
| 5528 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5529 | |||
| 5530 | #if __HVX_ARCH__ >= 79 | ||
| 5531 | /* ========================================================================== | ||
| 5532 | Assembly Syntax: Vd32=vmerge(Vu32.x,Vv32.w) | ||
| 5533 | C Intrinsic Prototype: HVX_Vector Q6_V_vmerge_VVw(HVX_Vector Vu, HVX_Vector | ||
| 5534 | Vv) Instruction Type: CVI_VS Execution Slots: SLOT0123 | ||
| 5535 | ========================================================================== */ | ||
| 5536 | |||
| 5537 | #define Q6_V_vmerge_VVw(Vu, Vv) \ | ||
| 5538 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmerge_qf)(Vu, Vv) | ||
| 5539 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5540 | |||
| 5541 | #if __HVX_ARCH__ >= 79 | ||
| 5542 | /* ========================================================================== | ||
| 5543 | Assembly Syntax: Vdd32.hf=vmpy(Vu32.f8,Vv32.f8) | ||
| 5544 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vmpy_VV(HVX_Vector Vu, | ||
| 5545 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5546 | ========================================================================== */ | ||
| 5547 | |||
| 5548 | #define Q6_Whf_vmpy_VV(Vu, Vv) \ | ||
| 5549 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_hf_f8)(Vu, Vv) | ||
| 5550 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5551 | |||
| 5552 | #if __HVX_ARCH__ >= 79 | ||
| 5553 | /* ========================================================================== | ||
| 5554 | Assembly Syntax: Vxx32.hf+=vmpy(Vu32.f8,Vv32.f8) | ||
| 5555 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vmpyacc_WhfVV(HVX_VectorPair | ||
| 5556 | Vxx, HVX_Vector Vu, HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution | ||
| 5557 | Slots: SLOT23 | ||
| 5558 | ========================================================================== */ | ||
| 5559 | |||
| 5560 | #define Q6_Whf_vmpyacc_WhfVV(Vxx, Vu, Vv) \ | ||
| 5561 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_hf_f8_acc)(Vxx, Vu, Vv) | ||
| 5562 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5563 | |||
| 5564 | #if __HVX_ARCH__ >= 79 | ||
| 5565 | /* ========================================================================== | ||
| 5566 | Assembly Syntax: Vd32.qf16=vmpy(Vu32.hf,Rt32.hf) | ||
| 5567 | C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vmpy_VhfRhf(HVX_Vector Vu, Word32 | ||
| 5568 | Rt) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5569 | ========================================================================== */ | ||
| 5570 | |||
| 5571 | #define Q6_Vqf16_vmpy_VhfRhf(Vu, Rt) \ | ||
| 5572 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_rt_hf)(Vu, Rt) | ||
| 5573 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5574 | |||
| 5575 | #if __HVX_ARCH__ >= 79 | ||
| 5576 | /* ========================================================================== | ||
| 5577 | Assembly Syntax: Vd32.qf16=vmpy(Vu32.qf16,Rt32.hf) | ||
| 5578 | C Intrinsic Prototype: HVX_Vector Q6_Vqf16_vmpy_Vqf16Rhf(HVX_Vector Vu, | ||
| 5579 | Word32 Rt) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5580 | ========================================================================== */ | ||
| 5581 | |||
| 5582 | #define Q6_Vqf16_vmpy_Vqf16Rhf(Vu, Rt) \ | ||
| 5583 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_rt_qf16)(Vu, Rt) | ||
| 5584 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5585 | |||
| 5586 | #if __HVX_ARCH__ >= 79 | ||
| 5587 | /* ========================================================================== | ||
| 5588 | Assembly Syntax: Vd32.qf32=vmpy(Vu32.sf,Rt32.sf) | ||
| 5589 | C Intrinsic Prototype: HVX_Vector Q6_Vqf32_vmpy_VsfRsf(HVX_Vector Vu, Word32 | ||
| 5590 | Rt) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5591 | ========================================================================== */ | ||
| 5592 | |||
| 5593 | #define Q6_Vqf32_vmpy_VsfRsf(Vu, Rt) \ | ||
| 5594 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmpy_rt_sf)(Vu, Rt) | ||
| 5595 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5596 | |||
| 5597 | #if __HVX_ARCH__ >= 79 | ||
| 5598 | /* ========================================================================== | ||
| 5599 | Assembly Syntax: Vdd32.hf=vsub(Vu32.f8,Vv32.f8) | ||
| 5600 | C Intrinsic Prototype: HVX_VectorPair Q6_Whf_vsub_VV(HVX_Vector Vu, | ||
| 5601 | HVX_Vector Vv) Instruction Type: CVI_VX_DV Execution Slots: SLOT23 | ||
| 5602 | ========================================================================== */ | ||
| 5603 | |||
| 5604 | #define Q6_Whf_vsub_VV(Vu, Vv) \ | ||
| 5605 | __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vsub_hf_f8)(Vu, Vv) | ||
| 5606 | #endif /* __HEXAGON_ARCH___ >= 79 */ | ||
| 5607 | |||
| 5181 | #endif /* __HVX__ */ | 5608 | #endif /* __HVX__ */ |
| 5182 | 5609 | ||
| 5183 | #endif | 5610 | #endif |
lib/include/immintrin.h+87-3| ... | @@ -605,6 +605,20 @@ _storebe_i64(void * __P, long long __D) { | ... | @@ -605,6 +605,20 @@ _storebe_i64(void * __P, long long __D) { |
| 605 | #include <movdirintrin.h> | 605 | #include <movdirintrin.h> |
| 606 | #endif | 606 | #endif |
| 607 | 607 | ||
| 608 | #if !defined(__SCE__) || __has_feature(modules) || defined(__MOVRS__) | ||
| 609 | #include <movrsintrin.h> | ||
| 610 | #endif | ||
| 611 | |||
| 612 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 613 | (defined(__AVX10_2__) && defined(__MOVRS__)) | ||
| 614 | #include <movrs_avx10_2intrin.h> | ||
| 615 | #endif | ||
| 616 | |||
| 617 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 618 | (defined(__AVX10_2_512__) && defined(__MOVRS__)) | ||
| 619 | #include <movrs_avx10_2_512intrin.h> | ||
| 620 | #endif | ||
| 621 | |||
| 608 | #if !defined(__SCE__) || __has_feature(modules) || defined(__PCONFIG__) | 622 | #if !defined(__SCE__) || __has_feature(modules) || defined(__PCONFIG__) |
| 609 | #include <pconfigintrin.h> | 623 | #include <pconfigintrin.h> |
| 610 | #endif | 624 | #endif |
| ... | @@ -620,9 +634,6 @@ _storebe_i64(void * __P, long long __D) { | ... | @@ -620,9 +634,6 @@ _storebe_i64(void * __P, long long __D) { |
| 620 | #if !defined(__SCE__) || __has_feature(modules) || defined(__INVPCID__) | 634 | #if !defined(__SCE__) || __has_feature(modules) || defined(__INVPCID__) |
| 621 | #include <invpcidintrin.h> | 635 | #include <invpcidintrin.h> |
| 622 | #endif | 636 | #endif |
| 623 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_FP16__) | ||
| 624 | #include <amxfp16intrin.h> | ||
| 625 | #endif | ||
| 626 | 637 | ||
| 627 | #if !defined(__SCE__) || __has_feature(modules) || defined(__KL__) || \ | 638 | #if !defined(__SCE__) || __has_feature(modules) || defined(__KL__) || \ |
| 628 | defined(__WIDEKL__) | 639 | defined(__WIDEKL__) |
| ... | @@ -634,10 +645,59 @@ _storebe_i64(void * __P, long long __D) { | ... | @@ -634,10 +645,59 @@ _storebe_i64(void * __P, long long __D) { |
| 634 | #include <amxintrin.h> | 645 | #include <amxintrin.h> |
| 635 | #endif | 646 | #endif |
| 636 | 647 | ||
| 648 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_FP16__) | ||
| 649 | #include <amxfp16intrin.h> | ||
| 650 | #endif | ||
| 651 | |||
| 637 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_COMPLEX__) | 652 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_COMPLEX__) |
| 638 | #include <amxcomplexintrin.h> | 653 | #include <amxcomplexintrin.h> |
| 639 | #endif | 654 | #endif |
| 640 | 655 | ||
| 656 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_FP8__) | ||
| 657 | #include <amxfp8intrin.h> | ||
| 658 | #endif | ||
| 659 | |||
| 660 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_TRANSPOSE__) | ||
| 661 | #include <amxtransposeintrin.h> | ||
| 662 | #endif | ||
| 663 | |||
| 664 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_MOVRS__) | ||
| 665 | #include <amxmovrsintrin.h> | ||
| 666 | #endif | ||
| 667 | |||
| 668 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 669 | (defined(__AMX_MOVRS__) && defined(__AMX_TRANSPOSE__)) | ||
| 670 | #include <amxmovrstransposeintrin.h> | ||
| 671 | #endif | ||
| 672 | |||
| 673 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_AVX512__) | ||
| 674 | #include <amxavx512intrin.h> | ||
| 675 | #endif | ||
| 676 | |||
| 677 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AMX_TF32__) | ||
| 678 | #include <amxtf32intrin.h> | ||
| 679 | #endif | ||
| 680 | |||
| 681 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 682 | (defined(__AMX_TF32__) && defined(__AMX_TRANSPOSE__)) | ||
| 683 | #include <amxtf32transposeintrin.h> | ||
| 684 | #endif | ||
| 685 | |||
| 686 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 687 | (defined(__AMX_BF16__) && defined(__AMX_TRANSPOSE__)) | ||
| 688 | #include <amxbf16transposeintrin.h> | ||
| 689 | #endif | ||
| 690 | |||
| 691 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 692 | (defined(__AMX_FP16__) && defined(__AMX_TRANSPOSE__)) | ||
| 693 | #include <amxfp16transposeintrin.h> | ||
| 694 | #endif | ||
| 695 | |||
| 696 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 697 | (defined(__AMX_COMPLEX__) && defined(__AMX_TRANSPOSE__)) | ||
| 698 | #include <amxcomplextransposeintrin.h> | ||
| 699 | #endif | ||
| 700 | |||
| 641 | #if !defined(__SCE__) || __has_feature(modules) || \ | 701 | #if !defined(__SCE__) || __has_feature(modules) || \ |
| 642 | defined(__AVX512VP2INTERSECT__) | 702 | defined(__AVX512VP2INTERSECT__) |
| 643 | #include <avx512vp2intersectintrin.h> | 703 | #include <avx512vp2intersectintrin.h> |
| ... | @@ -648,6 +708,30 @@ _storebe_i64(void * __P, long long __D) { | ... | @@ -648,6 +708,30 @@ _storebe_i64(void * __P, long long __D) { |
| 648 | #include <avx512vlvp2intersectintrin.h> | 708 | #include <avx512vlvp2intersectintrin.h> |
| 649 | #endif | 709 | #endif |
| 650 | 710 | ||
| 711 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2__) | ||
| 712 | #include <avx10_2bf16intrin.h> | ||
| 713 | #include <avx10_2convertintrin.h> | ||
| 714 | #include <avx10_2copyintrin.h> | ||
| 715 | #include <avx10_2minmaxintrin.h> | ||
| 716 | #include <avx10_2niintrin.h> | ||
| 717 | #include <avx10_2satcvtdsintrin.h> | ||
| 718 | #include <avx10_2satcvtintrin.h> | ||
| 719 | #endif | ||
| 720 | |||
| 721 | #if !defined(__SCE__) || __has_feature(modules) || defined(__AVX10_2_512__) | ||
| 722 | #include <avx10_2_512bf16intrin.h> | ||
| 723 | #include <avx10_2_512convertintrin.h> | ||
| 724 | #include <avx10_2_512minmaxintrin.h> | ||
| 725 | #include <avx10_2_512niintrin.h> | ||
| 726 | #include <avx10_2_512satcvtdsintrin.h> | ||
| 727 | #include <avx10_2_512satcvtintrin.h> | ||
| 728 | #endif | ||
| 729 | |||
| 730 | #if !defined(__SCE__) || __has_feature(modules) || \ | ||
| 731 | (defined(__AVX10_2_512__) && defined(__SM4__)) | ||
| 732 | #include <sm4evexintrin.h> | ||
| 733 | #endif | ||
| 734 | |||
| 651 | #if !defined(__SCE__) || __has_feature(modules) || defined(__ENQCMD__) | 735 | #if !defined(__SCE__) || __has_feature(modules) || defined(__ENQCMD__) |
| 652 | #include <enqcmdintrin.h> | 736 | #include <enqcmdintrin.h> |
| 653 | #endif | 737 | #endif |
lib/include/intrin.h+20-10| ... | @@ -94,8 +94,8 @@ void __outwordstring(unsigned short, unsigned short *, unsigned long); | ... | @@ -94,8 +94,8 @@ void __outwordstring(unsigned short, unsigned short *, unsigned long); |
| 94 | unsigned long __readcr0(void); | 94 | unsigned long __readcr0(void); |
| 95 | unsigned long __readcr2(void); | 95 | unsigned long __readcr2(void); |
| 96 | unsigned __LPTRINT_TYPE__ __readcr3(void); | 96 | unsigned __LPTRINT_TYPE__ __readcr3(void); |
| 97 | unsigned long __readcr4(void); | 97 | unsigned __LPTRINT_TYPE__ __readcr4(void); |
| 98 | unsigned long __readcr8(void); | 98 | unsigned __int64 __readcr8(void); |
| 99 | unsigned int __readdr(unsigned int); | 99 | unsigned int __readdr(unsigned int); |
| 100 | #ifdef __i386__ | 100 | #ifdef __i386__ |
| 101 | unsigned char __readfsbyte(unsigned long); | 101 | unsigned char __readfsbyte(unsigned long); |
| ... | @@ -124,8 +124,8 @@ void __vmx_vmptrst(unsigned __int64 *); | ... | @@ -124,8 +124,8 @@ void __vmx_vmptrst(unsigned __int64 *); |
| 124 | void __wbinvd(void); | 124 | void __wbinvd(void); |
| 125 | void __writecr0(unsigned int); | 125 | void __writecr0(unsigned int); |
| 126 | void __writecr3(unsigned __INTPTR_TYPE__); | 126 | void __writecr3(unsigned __INTPTR_TYPE__); |
| 127 | void __writecr4(unsigned int); | 127 | void __writecr4(unsigned __INTPTR_TYPE__); |
| 128 | void __writecr8(unsigned int); | 128 | void __writecr8(unsigned __int64); |
| 129 | void __writedr(unsigned int, unsigned int); | 129 | void __writedr(unsigned int, unsigned int); |
| 130 | void __writefsbyte(unsigned long, unsigned char); | 130 | void __writefsbyte(unsigned long, unsigned char); |
| 131 | void __writefsdword(unsigned long, unsigned long); | 131 | void __writefsdword(unsigned long, unsigned long); |
| ... | @@ -330,33 +330,33 @@ static __inline__ void __DEFAULT_FN_ATTRS __halt(void) { | ... | @@ -330,33 +330,33 @@ static __inline__ void __DEFAULT_FN_ATTRS __halt(void) { |
| 330 | __asm__ volatile("hlt"); | 330 | __asm__ volatile("hlt"); |
| 331 | } | 331 | } |
| 332 | 332 | ||
| 333 | static inline unsigned char __inbyte(unsigned short port) { | 333 | static __inline__ unsigned char __inbyte(unsigned short port) { |
| 334 | unsigned char ret; | 334 | unsigned char ret; |
| 335 | __asm__ __volatile__("inb %w1, %b0" : "=a"(ret) : "Nd"(port)); | 335 | __asm__ __volatile__("inb %w1, %b0" : "=a"(ret) : "Nd"(port)); |
| 336 | return ret; | 336 | return ret; |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | static inline unsigned short __inword(unsigned short port) { | 339 | static __inline__ unsigned short __inword(unsigned short port) { |
| 340 | unsigned short ret; | 340 | unsigned short ret; |
| 341 | __asm__ __volatile__("inw %w1, %w0" : "=a"(ret) : "Nd"(port)); | 341 | __asm__ __volatile__("inw %w1, %w0" : "=a"(ret) : "Nd"(port)); |
| 342 | return ret; | 342 | return ret; |
| 343 | } | 343 | } |
| 344 | 344 | ||
| 345 | static inline unsigned long __indword(unsigned short port) { | 345 | static __inline__ unsigned long __indword(unsigned short port) { |
| 346 | unsigned long ret; | 346 | unsigned long ret; |
| 347 | __asm__ __volatile__("inl %w1, %k0" : "=a"(ret) : "Nd"(port)); | 347 | __asm__ __volatile__("inl %w1, %k0" : "=a"(ret) : "Nd"(port)); |
| 348 | return ret; | 348 | return ret; |
| 349 | } | 349 | } |
| 350 | 350 | ||
| 351 | static inline void __outbyte(unsigned short port, unsigned char data) { | 351 | static __inline__ void __outbyte(unsigned short port, unsigned char data) { |
| 352 | __asm__ __volatile__("outb %b0, %w1" : : "a"(data), "Nd"(port)); | 352 | __asm__ __volatile__("outb %b0, %w1" : : "a"(data), "Nd"(port)); |
| 353 | } | 353 | } |
| 354 | 354 | ||
| 355 | static inline void __outword(unsigned short port, unsigned short data) { | 355 | static __inline__ void __outword(unsigned short port, unsigned short data) { |
| 356 | __asm__ __volatile__("outw %w0, %w1" : : "a"(data), "Nd"(port)); | 356 | __asm__ __volatile__("outw %w0, %w1" : : "a"(data), "Nd"(port)); |
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | static inline void __outdword(unsigned short port, unsigned long data) { | 359 | static __inline__ void __outdword(unsigned short port, unsigned long data) { |
| 360 | __asm__ __volatile__("outl %k0, %w1" : : "a"(data), "Nd"(port)); | 360 | __asm__ __volatile__("outl %k0, %w1" : : "a"(data), "Nd"(port)); |
| 361 | } | 361 | } |
| 362 | #endif | 362 | #endif |
| ... | @@ -396,6 +396,16 @@ unsigned short __readx18word(unsigned long offset); | ... | @@ -396,6 +396,16 @@ unsigned short __readx18word(unsigned long offset); |
| 396 | unsigned long __readx18dword(unsigned long offset); | 396 | unsigned long __readx18dword(unsigned long offset); |
| 397 | unsigned __int64 __readx18qword(unsigned long offset); | 397 | unsigned __int64 __readx18qword(unsigned long offset); |
| 398 | 398 | ||
| 399 | void __addx18byte(unsigned long offset, unsigned char data); | ||
| 400 | void __addx18word(unsigned long offset, unsigned short data); | ||
| 401 | void __addx18dword(unsigned long offset, unsigned long data); | ||
| 402 | void __addx18qword(unsigned long offset, unsigned __int64 data); | ||
| 403 | |||
| 404 | void __incx18byte(unsigned long offset); | ||
| 405 | void __incx18word(unsigned long offset); | ||
| 406 | void __incx18dword(unsigned long offset); | ||
| 407 | void __incx18qword(unsigned long offset); | ||
| 408 | |||
| 399 | double _CopyDoubleFromInt64(__int64); | 409 | double _CopyDoubleFromInt64(__int64); |
| 400 | float _CopyFloatFromInt32(__int32); | 410 | float _CopyFloatFromInt32(__int32); |
| 401 | __int32 _CopyInt32FromFloat(float); | 411 | __int32 _CopyInt32FromFloat(float); |
lib/include/intrin0.h+10-1| ... | @@ -44,7 +44,7 @@ unsigned char _InterlockedCompareExchange128_rel(__int64 volatile *_Destination, | ... | @@ -44,7 +44,7 @@ unsigned char _InterlockedCompareExchange128_rel(__int64 volatile *_Destination, |
| 44 | __int64 *_ComparandResult); | 44 | __int64 *_ComparandResult); |
| 45 | #endif | 45 | #endif |
| 46 | 46 | ||
| 47 | #ifdef __x86_64__ && !defined(__arm64ec__) | 47 | #if defined(__x86_64__) && !defined(__arm64ec__) |
| 48 | unsigned __int64 _umul128(unsigned __int64, unsigned __int64, | 48 | unsigned __int64 _umul128(unsigned __int64, unsigned __int64, |
| 49 | unsigned __int64 *); | 49 | unsigned __int64 *); |
| 50 | unsigned __int64 __shiftleft128(unsigned __int64 _LowPart, | 50 | unsigned __int64 __shiftleft128(unsigned __int64 _LowPart, |
| ... | @@ -207,6 +207,9 @@ long _InterlockedExchange_rel(long volatile *_Target, long _Value); | ... | @@ -207,6 +207,9 @@ long _InterlockedExchange_rel(long volatile *_Target, long _Value); |
| 207 | __int64 _InterlockedExchange64_acq(__int64 volatile *_Target, __int64 _Value); | 207 | __int64 _InterlockedExchange64_acq(__int64 volatile *_Target, __int64 _Value); |
| 208 | __int64 _InterlockedExchange64_nf(__int64 volatile *_Target, __int64 _Value); | 208 | __int64 _InterlockedExchange64_nf(__int64 volatile *_Target, __int64 _Value); |
| 209 | __int64 _InterlockedExchange64_rel(__int64 volatile *_Target, __int64 _Value); | 209 | __int64 _InterlockedExchange64_rel(__int64 volatile *_Target, __int64 _Value); |
| 210 | void *_InterlockedExchangePointer_acq(void *volatile *_Target, void *_Value); | ||
| 211 | void *_InterlockedExchangePointer_nf(void *volatile *_Target, void *_Value); | ||
| 212 | void *_InterlockedExchangePointer_rel(void *volatile *_Target, void *_Value); | ||
| 210 | 213 | ||
| 211 | /*----------------------------------------------------------------------------*\ | 214 | /*----------------------------------------------------------------------------*\ |
| 212 | |* Interlocked Compare Exchange | 215 | |* Interlocked Compare Exchange |
| ... | @@ -237,6 +240,12 @@ __int64 _InterlockedCompareExchange64_nf(__int64 volatile *_Destination, | ... | @@ -237,6 +240,12 @@ __int64 _InterlockedCompareExchange64_nf(__int64 volatile *_Destination, |
| 237 | __int64 _InterlockedCompareExchange64_rel(__int64 volatile *_Destination, | 240 | __int64 _InterlockedCompareExchange64_rel(__int64 volatile *_Destination, |
| 238 | __int64 _Exchange, | 241 | __int64 _Exchange, |
| 239 | __int64 _Comparand); | 242 | __int64 _Comparand); |
| 243 | void *_InterlockedCompareExchangePointer_acq(void *volatile *_Destination, | ||
| 244 | void *_Exchange, void *_Comparand); | ||
| 245 | void *_InterlockedCompareExchangePointer_nf(void *volatile *_Destination, | ||
| 246 | void *_Exchange, void *_Comparand); | ||
| 247 | void *_InterlockedCompareExchangePointer_rel(void *volatile *_Destination, | ||
| 248 | void *_Exchange, void *_Comparand); | ||
| 240 | #endif | 249 | #endif |
| 241 | 250 | ||
| 242 | #ifdef __cplusplus | 251 | #ifdef __cplusplus |
lib/include/larchintrin.h+22-8| ... | @@ -228,17 +228,31 @@ extern __inline void | ... | @@ -228,17 +228,31 @@ extern __inline void |
| 228 | ((void)__builtin_loongarch_ldpte_d((long int)(_1), (_2))) | 228 | ((void)__builtin_loongarch_ldpte_d((long int)(_1), (_2))) |
| 229 | #endif | 229 | #endif |
| 230 | 230 | ||
| 231 | #define __frecipe_s(/*float*/ _1) \ | 231 | #ifdef __loongarch_frecipe |
| 232 | (float)__builtin_loongarch_frecipe_s((float)_1) | 232 | extern __inline float |
| 233 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) | ||
| 234 | __frecipe_s(float _1) { | ||
| 235 | return __builtin_loongarch_frecipe_s(_1); | ||
| 236 | } | ||
| 233 | 237 | ||
| 234 | #define __frecipe_d(/*double*/ _1) \ | 238 | extern __inline double |
| 235 | (double)__builtin_loongarch_frecipe_d((double)_1) | 239 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
| 240 | __frecipe_d(double _1) { | ||
| 241 | return __builtin_loongarch_frecipe_d(_1); | ||
| 242 | } | ||
| 236 | 243 | ||
| 237 | #define __frsqrte_s(/*float*/ _1) \ | 244 | extern __inline float |
| 238 | (float)__builtin_loongarch_frsqrte_s((float)_1) | 245 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
| 246 | __frsqrte_s(float _1) { | ||
| 247 | return __builtin_loongarch_frsqrte_s(_1); | ||
| 248 | } | ||
| 239 | 249 | ||
| 240 | #define __frsqrte_d(/*double*/ _1) \ | 250 | extern __inline double |
| 241 | (double)__builtin_loongarch_frsqrte_d((double)_1) | 251 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) |
| 252 | __frsqrte_d(double _1) { | ||
| 253 | return __builtin_loongarch_frsqrte_d(_1); | ||
| 254 | } | ||
| 255 | #endif | ||
| 242 | 256 | ||
| 243 | #ifdef __cplusplus | 257 | #ifdef __cplusplus |
| 244 | } | 258 | } |
lib/include/lasxintrin.h+27-25| ... | @@ -1726,18 +1726,6 @@ extern __inline | ... | @@ -1726,18 +1726,6 @@ extern __inline |
| 1726 | return (__m256d)__builtin_lasx_xvfrecip_d((v4f64)_1); | 1726 | return (__m256d)__builtin_lasx_xvfrecip_d((v4f64)_1); |
| 1727 | } | 1727 | } |
| 1728 | 1728 | ||
| 1729 | extern __inline | ||
| 1730 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | ||
| 1731 | __lasx_xvfrecipe_s(__m256 _1) { | ||
| 1732 | return (__m256)__builtin_lasx_xvfrecipe_s((v8f32)_1); | ||
| 1733 | } | ||
| 1734 | |||
| 1735 | extern __inline | ||
| 1736 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256d | ||
| 1737 | __lasx_xvfrecipe_d(__m256d _1) { | ||
| 1738 | return (__m256d)__builtin_lasx_xvfrecipe_d((v4f64)_1); | ||
| 1739 | } | ||
| 1740 | |||
| 1741 | extern __inline | 1729 | extern __inline |
| 1742 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | 1730 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 |
| 1743 | __lasx_xvfrint_s(__m256 _1) { | 1731 | __lasx_xvfrint_s(__m256 _1) { |
| ... | @@ -1762,18 +1750,6 @@ extern __inline | ... | @@ -1762,18 +1750,6 @@ extern __inline |
| 1762 | return (__m256d)__builtin_lasx_xvfrsqrt_d((v4f64)_1); | 1750 | return (__m256d)__builtin_lasx_xvfrsqrt_d((v4f64)_1); |
| 1763 | } | 1751 | } |
| 1764 | 1752 | ||
| 1765 | extern __inline | ||
| 1766 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | ||
| 1767 | __lasx_xvfrsqrte_s(__m256 _1) { | ||
| 1768 | return (__m256)__builtin_lasx_xvfrsqrte_s((v8f32)_1); | ||
| 1769 | } | ||
| 1770 | |||
| 1771 | extern __inline | ||
| 1772 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256d | ||
| 1773 | __lasx_xvfrsqrte_d(__m256d _1) { | ||
| 1774 | return (__m256d)__builtin_lasx_xvfrsqrte_d((v4f64)_1); | ||
| 1775 | } | ||
| 1776 | |||
| 1777 | extern __inline | 1753 | extern __inline |
| 1778 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | 1754 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 |
| 1779 | __lasx_xvflogb_s(__m256 _1) { | 1755 | __lasx_xvflogb_s(__m256 _1) { |
| ... | @@ -2585,7 +2561,7 @@ extern __inline | ... | @@ -2585,7 +2561,7 @@ extern __inline |
| 2585 | extern __inline | 2561 | extern __inline |
| 2586 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256i | 2562 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256i |
| 2587 | __lasx_xvorn_v(__m256i _1, __m256i _2) { | 2563 | __lasx_xvorn_v(__m256i _1, __m256i _2) { |
| 2588 | return (__m256i)__builtin_lasx_xvorn_v((v32i8)_1, (v32i8)_2); | 2564 | return (__m256i)__builtin_lasx_xvorn_v((v32u8)_1, (v32u8)_2); |
| 2589 | } | 2565 | } |
| 2590 | 2566 | ||
| 2591 | #define __lasx_xvldi(/*i13*/ _1) ((__m256i)__builtin_lasx_xvldi((_1))) | 2567 | #define __lasx_xvldi(/*i13*/ _1) ((__m256i)__builtin_lasx_xvldi((_1))) |
| ... | @@ -3866,6 +3842,32 @@ extern __inline | ... | @@ -3866,6 +3842,32 @@ extern __inline |
| 3866 | return (__m256i)__builtin_lasx_xvfcmp_sun_s((v8f32)_1, (v8f32)_2); | 3842 | return (__m256i)__builtin_lasx_xvfcmp_sun_s((v8f32)_1, (v8f32)_2); |
| 3867 | } | 3843 | } |
| 3868 | 3844 | ||
| 3845 | #if defined(__loongarch_frecipe) | ||
| 3846 | extern __inline | ||
| 3847 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | ||
| 3848 | __lasx_xvfrecipe_s(__m256 _1) { | ||
| 3849 | return (__m256)__builtin_lasx_xvfrecipe_s((v8f32)_1); | ||
| 3850 | } | ||
| 3851 | |||
| 3852 | extern __inline | ||
| 3853 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256d | ||
| 3854 | __lasx_xvfrecipe_d(__m256d _1) { | ||
| 3855 | return (__m256d)__builtin_lasx_xvfrecipe_d((v4f64)_1); | ||
| 3856 | } | ||
| 3857 | |||
| 3858 | extern __inline | ||
| 3859 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256 | ||
| 3860 | __lasx_xvfrsqrte_s(__m256 _1) { | ||
| 3861 | return (__m256)__builtin_lasx_xvfrsqrte_s((v8f32)_1); | ||
| 3862 | } | ||
| 3863 | |||
| 3864 | extern __inline | ||
| 3865 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m256d | ||
| 3866 | __lasx_xvfrsqrte_d(__m256d _1) { | ||
| 3867 | return (__m256d)__builtin_lasx_xvfrsqrte_d((v4f64)_1); | ||
| 3868 | } | ||
| 3869 | #endif | ||
| 3870 | |||
| 3869 | #define __lasx_xvpickve_d_f(/*__m256d*/ _1, /*ui2*/ _2) \ | 3871 | #define __lasx_xvpickve_d_f(/*__m256d*/ _1, /*ui2*/ _2) \ |
| 3870 | ((__m256d)__builtin_lasx_xvpickve_d_f((v4f64)(_1), (_2))) | 3872 | ((__m256d)__builtin_lasx_xvpickve_d_f((v4f64)(_1), (_2))) |
| 3871 | 3873 |
lib/include/limits.h+7-4| ... | @@ -111,11 +111,14 @@ | ... | @@ -111,11 +111,14 @@ |
| 111 | #define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) | 111 | #define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL) |
| 112 | #endif | 112 | #endif |
| 113 | 113 | ||
| 114 | /* LONG_LONG_MIN/LONG_LONG_MAX/ULONG_LONG_MAX are a GNU extension. It's too bad | 114 | /* LONG_LONG_MIN/LONG_LONG_MAX/ULONG_LONG_MAX are a GNU extension. Android's |
| 115 | that we don't have something like #pragma poison that could be used to | 115 | bionic also defines them. It's too bad that we don't have something like |
| 116 | deprecate a macro - the code should just use LLONG_MAX and friends. | 116 | #pragma poison that could be used to deprecate a macro - the code should just |
| 117 | use LLONG_MAX and friends. | ||
| 117 | */ | 118 | */ |
| 118 | #if defined(__GNU_LIBRARY__) ? defined(__USE_GNU) : !defined(__STRICT_ANSI__) | 119 | #if (defined(__GNU_LIBRARY__) ? defined(__USE_GNU) \ |
| 120 | : !defined(__STRICT_ANSI__)) || \ | ||
| 121 | defined(__BIONIC__) | ||
| 119 | 122 | ||
| 120 | #undef LONG_LONG_MIN | 123 | #undef LONG_LONG_MIN |
| 121 | #undef LONG_LONG_MAX | 124 | #undef LONG_LONG_MAX |
lib/include/llvm_libc_wrappers/ctype.h+38| ... | @@ -51,6 +51,19 @@ | ... | @@ -51,6 +51,19 @@ |
| 51 | #pragma push_macro("toascii") | 51 | #pragma push_macro("toascii") |
| 52 | #pragma push_macro("tolower") | 52 | #pragma push_macro("tolower") |
| 53 | #pragma push_macro("toupper") | 53 | #pragma push_macro("toupper") |
| 54 | #pragma push_macro("isalnum_l") | ||
| 55 | #pragma push_macro("isalpha_l") | ||
| 56 | #pragma push_macro("isascii_l") | ||
| 57 | #pragma push_macro("isblank_l") | ||
| 58 | #pragma push_macro("iscntrl_l") | ||
| 59 | #pragma push_macro("isdigit_l") | ||
| 60 | #pragma push_macro("isgraph_l") | ||
| 61 | #pragma push_macro("islower_l") | ||
| 62 | #pragma push_macro("isprint_l") | ||
| 63 | #pragma push_macro("ispunct_l") | ||
| 64 | #pragma push_macro("isspace_l") | ||
| 65 | #pragma push_macro("isupper_l") | ||
| 66 | #pragma push_macro("isxdigit_l") | ||
| 54 | 67 | ||
| 55 | #undef isalnum | 68 | #undef isalnum |
| 56 | #undef isalpha | 69 | #undef isalpha |
| ... | @@ -68,6 +81,18 @@ | ... | @@ -68,6 +81,18 @@ |
| 68 | #undef toascii | 81 | #undef toascii |
| 69 | #undef tolower | 82 | #undef tolower |
| 70 | #undef toupper | 83 | #undef toupper |
| 84 | #undef isalnum_l | ||
| 85 | #undef isalpha_l | ||
| 86 | #undef iscntrl_l | ||
| 87 | #undef isdigit_l | ||
| 88 | #undef islower_l | ||
| 89 | #undef isgraph_l | ||
| 90 | #undef isprint_l | ||
| 91 | #undef ispunct_l | ||
| 92 | #undef isspace_l | ||
| 93 | #undef isupper_l | ||
| 94 | #undef isblank_l | ||
| 95 | #undef isxdigit_l | ||
| 71 | 96 | ||
| 72 | #pragma omp begin declare target | 97 | #pragma omp begin declare target |
| 73 | 98 | ||
| ... | @@ -93,6 +118,19 @@ | ... | @@ -93,6 +118,19 @@ |
| 93 | #pragma pop_macro("toascii") | 118 | #pragma pop_macro("toascii") |
| 94 | #pragma pop_macro("tolower") | 119 | #pragma pop_macro("tolower") |
| 95 | #pragma pop_macro("toupper") | 120 | #pragma pop_macro("toupper") |
| 121 | #pragma pop_macro("isalnum_l") | ||
| 122 | #pragma pop_macro("isalpha_l") | ||
| 123 | #pragma pop_macro("isascii_l") | ||
| 124 | #pragma pop_macro("isblank_l") | ||
| 125 | #pragma pop_macro("iscntrl_l") | ||
| 126 | #pragma pop_macro("isdigit_l") | ||
| 127 | #pragma pop_macro("isgraph_l") | ||
| 128 | #pragma pop_macro("islower_l") | ||
| 129 | #pragma pop_macro("isprint_l") | ||
| 130 | #pragma pop_macro("ispunct_l") | ||
| 131 | #pragma pop_macro("isspace_l") | ||
| 132 | #pragma pop_macro("isupper_l") | ||
| 133 | #pragma pop_macro("isxdigit_l") | ||
| 96 | #endif | 134 | #endif |
| 97 | 135 | ||
| 98 | #undef __LIBC_ATTRS | 136 | #undef __LIBC_ATTRS |
lib/include/llvm_libc_wrappers/stdlib.h+8| ... | @@ -34,8 +34,16 @@ _Static_assert(__builtin_offsetof(div_t, quot) == 0, "ABI mismatch!"); | ... | @@ -34,8 +34,16 @@ _Static_assert(__builtin_offsetof(div_t, quot) == 0, "ABI mismatch!"); |
| 34 | _Static_assert(__builtin_offsetof(ldiv_t, quot) == 0, "ABI mismatch!"); | 34 | _Static_assert(__builtin_offsetof(ldiv_t, quot) == 0, "ABI mismatch!"); |
| 35 | _Static_assert(__builtin_offsetof(lldiv_t, quot) == 0, "ABI mismatch!"); | 35 | _Static_assert(__builtin_offsetof(lldiv_t, quot) == 0, "ABI mismatch!"); |
| 36 | 36 | ||
| 37 | #if defined(__GLIBC__) && __cplusplus >= 201703L | ||
| 38 | #define at_quick_exit atexit | ||
| 39 | #endif | ||
| 40 | |||
| 37 | #include <llvm-libc-decls/stdlib.h> | 41 | #include <llvm-libc-decls/stdlib.h> |
| 38 | 42 | ||
| 43 | #if defined(__GLIBC__) && __cplusplus >= 201703L | ||
| 44 | #undef at_quick_exit | ||
| 45 | #endif | ||
| 46 | |||
| 39 | #pragma omp end declare target | 47 | #pragma omp end declare target |
| 40 | 48 | ||
| 41 | #undef __LIBC_ATTRS | 49 | #undef __LIBC_ATTRS |
lib/include/lsxintrin.h+27-25| ... | @@ -1776,18 +1776,6 @@ extern __inline | ... | @@ -1776,18 +1776,6 @@ extern __inline |
| 1776 | return (__m128d)__builtin_lsx_vfrecip_d((v2f64)_1); | 1776 | return (__m128d)__builtin_lsx_vfrecip_d((v2f64)_1); |
| 1777 | } | 1777 | } |
| 1778 | 1778 | ||
| 1779 | extern __inline | ||
| 1780 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | ||
| 1781 | __lsx_vfrecipe_s(__m128 _1) { | ||
| 1782 | return (__m128)__builtin_lsx_vfrecipe_s((v4f32)_1); | ||
| 1783 | } | ||
| 1784 | |||
| 1785 | extern __inline | ||
| 1786 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128d | ||
| 1787 | __lsx_vfrecipe_d(__m128d _1) { | ||
| 1788 | return (__m128d)__builtin_lsx_vfrecipe_d((v2f64)_1); | ||
| 1789 | } | ||
| 1790 | |||
| 1791 | extern __inline | 1779 | extern __inline |
| 1792 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | 1780 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 |
| 1793 | __lsx_vfrint_s(__m128 _1) { | 1781 | __lsx_vfrint_s(__m128 _1) { |
| ... | @@ -1812,18 +1800,6 @@ extern __inline | ... | @@ -1812,18 +1800,6 @@ extern __inline |
| 1812 | return (__m128d)__builtin_lsx_vfrsqrt_d((v2f64)_1); | 1800 | return (__m128d)__builtin_lsx_vfrsqrt_d((v2f64)_1); |
| 1813 | } | 1801 | } |
| 1814 | 1802 | ||
| 1815 | extern __inline | ||
| 1816 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | ||
| 1817 | __lsx_vfrsqrte_s(__m128 _1) { | ||
| 1818 | return (__m128)__builtin_lsx_vfrsqrte_s((v4f32)_1); | ||
| 1819 | } | ||
| 1820 | |||
| 1821 | extern __inline | ||
| 1822 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128d | ||
| 1823 | __lsx_vfrsqrte_d(__m128d _1) { | ||
| 1824 | return (__m128d)__builtin_lsx_vfrsqrte_d((v2f64)_1); | ||
| 1825 | } | ||
| 1826 | |||
| 1827 | extern __inline | 1803 | extern __inline |
| 1828 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | 1804 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 |
| 1829 | __lsx_vflogb_s(__m128 _1) { | 1805 | __lsx_vflogb_s(__m128 _1) { |
| ... | @@ -3425,7 +3401,7 @@ extern __inline | ... | @@ -3425,7 +3401,7 @@ extern __inline |
| 3425 | extern __inline | 3401 | extern __inline |
| 3426 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128i | 3402 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128i |
| 3427 | __lsx_vorn_v(__m128i _1, __m128i _2) { | 3403 | __lsx_vorn_v(__m128i _1, __m128i _2) { |
| 3428 | return (__m128i)__builtin_lsx_vorn_v((v16i8)_1, (v16i8)_2); | 3404 | return (__m128i)__builtin_lsx_vorn_v((v16u8)_1, (v16u8)_2); |
| 3429 | } | 3405 | } |
| 3430 | 3406 | ||
| 3431 | #define __lsx_vldi(/*i13*/ _1) ((__m128i)__builtin_lsx_vldi((_1))) | 3407 | #define __lsx_vldi(/*i13*/ _1) ((__m128i)__builtin_lsx_vldi((_1))) |
| ... | @@ -3738,6 +3714,32 @@ extern __inline | ... | @@ -3738,6 +3714,32 @@ extern __inline |
| 3738 | return (__m128i)__builtin_lsx_vfcmp_sun_s((v4f32)_1, (v4f32)_2); | 3714 | return (__m128i)__builtin_lsx_vfcmp_sun_s((v4f32)_1, (v4f32)_2); |
| 3739 | } | 3715 | } |
| 3740 | 3716 | ||
| 3717 | #if defined(__loongarch_frecipe) | ||
| 3718 | extern __inline | ||
| 3719 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | ||
| 3720 | __lsx_vfrecipe_s(__m128 _1) { | ||
| 3721 | return (__m128)__builtin_lsx_vfrecipe_s((v4f32)_1); | ||
| 3722 | } | ||
| 3723 | |||
| 3724 | extern __inline | ||
| 3725 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128d | ||
| 3726 | __lsx_vfrecipe_d(__m128d _1) { | ||
| 3727 | return (__m128d)__builtin_lsx_vfrecipe_d((v2f64)_1); | ||
| 3728 | } | ||
| 3729 | |||
| 3730 | extern __inline | ||
| 3731 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128 | ||
| 3732 | __lsx_vfrsqrte_s(__m128 _1) { | ||
| 3733 | return (__m128)__builtin_lsx_vfrsqrte_s((v4f32)_1); | ||
| 3734 | } | ||
| 3735 | |||
| 3736 | extern __inline | ||
| 3737 | __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __m128d | ||
| 3738 | __lsx_vfrsqrte_d(__m128d _1) { | ||
| 3739 | return (__m128d)__builtin_lsx_vfrsqrte_d((v2f64)_1); | ||
| 3740 | } | ||
| 3741 | #endif | ||
| 3742 | |||
| 3741 | #define __lsx_vrepli_b(/*si10*/ _1) ((__m128i)__builtin_lsx_vrepli_b((_1))) | 3743 | #define __lsx_vrepli_b(/*si10*/ _1) ((__m128i)__builtin_lsx_vrepli_b((_1))) |
| 3742 | 3744 | ||
| 3743 | #define __lsx_vrepli_d(/*si10*/ _1) ((__m128i)__builtin_lsx_vrepli_d((_1))) | 3745 | #define __lsx_vrepli_d(/*si10*/ _1) ((__m128i)__builtin_lsx_vrepli_d((_1))) |
lib/include/lzcntintrin.h+10-7| ... | @@ -15,7 +15,13 @@ | ... | @@ -15,7 +15,13 @@ |
| 15 | #define __LZCNTINTRIN_H | 15 | #define __LZCNTINTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("lzcnt"))) | 18 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("lzcnt"))) constexpr | ||
| 21 | #else | ||
| 22 | #define __DEFAULT_FN_ATTRS \ | ||
| 23 | __attribute__((__always_inline__, __nodebug__, __target__("lzcnt"))) | ||
| 24 | #endif | ||
| 19 | 25 | ||
| 20 | #ifndef _MSC_VER | 26 | #ifndef _MSC_VER |
| 21 | /// Counts the number of leading zero bits in the operand. | 27 | /// Counts the number of leading zero bits in the operand. |
| ... | @@ -43,8 +49,7 @@ | ... | @@ -43,8 +49,7 @@ |
| 43 | /// bits in the operand. | 49 | /// bits in the operand. |
| 44 | /// \see _lzcnt_u32 | 50 | /// \see _lzcnt_u32 |
| 45 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 51 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 46 | __lzcnt32(unsigned int __X) | 52 | __lzcnt32(unsigned int __X) { |
| 47 | { | ||
| 48 | return __builtin_ia32_lzcnt_u32(__X); | 53 | return __builtin_ia32_lzcnt_u32(__X); |
| 49 | } | 54 | } |
| 50 | 55 | ||
| ... | @@ -60,8 +65,7 @@ __lzcnt32(unsigned int __X) | ... | @@ -60,8 +65,7 @@ __lzcnt32(unsigned int __X) |
| 60 | /// bits in the operand. | 65 | /// bits in the operand. |
| 61 | /// \see __lzcnt32 | 66 | /// \see __lzcnt32 |
| 62 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 67 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 63 | _lzcnt_u32(unsigned int __X) | 68 | _lzcnt_u32(unsigned int __X) { |
| 64 | { | ||
| 65 | return __builtin_ia32_lzcnt_u32(__X); | 69 | return __builtin_ia32_lzcnt_u32(__X); |
| 66 | } | 70 | } |
| 67 | 71 | ||
| ... | @@ -93,8 +97,7 @@ _lzcnt_u32(unsigned int __X) | ... | @@ -93,8 +97,7 @@ _lzcnt_u32(unsigned int __X) |
| 93 | /// bits in the operand. | 97 | /// bits in the operand. |
| 94 | /// \see __lzcnt64 | 98 | /// \see __lzcnt64 |
| 95 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 99 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 96 | _lzcnt_u64(unsigned long long __X) | 100 | _lzcnt_u64(unsigned long long __X) { |
| 97 | { | ||
| 98 | return __builtin_ia32_lzcnt_u64(__X); | 101 | return __builtin_ia32_lzcnt_u64(__X); |
| 99 | } | 102 | } |
| 100 | #endif | 103 | #endif |
lib/include/mmintrin.h+209-155| ... | @@ -21,10 +21,45 @@ typedef int __v2si __attribute__((__vector_size__(8))); | ... | @@ -21,10 +21,45 @@ typedef int __v2si __attribute__((__vector_size__(8))); |
| 21 | typedef short __v4hi __attribute__((__vector_size__(8))); | 21 | typedef short __v4hi __attribute__((__vector_size__(8))); |
| 22 | typedef char __v8qi __attribute__((__vector_size__(8))); | 22 | typedef char __v8qi __attribute__((__vector_size__(8))); |
| 23 | 23 | ||
| 24 | /* Unsigned types */ | ||
| 25 | typedef unsigned long long __v1du __attribute__ ((__vector_size__ (8))); | ||
| 26 | typedef unsigned int __v2su __attribute__ ((__vector_size__ (8))); | ||
| 27 | typedef unsigned short __v4hu __attribute__((__vector_size__(8))); | ||
| 28 | typedef unsigned char __v8qu __attribute__((__vector_size__(8))); | ||
| 29 | |||
| 30 | /* We need an explicitly signed variant for char. Note that this shouldn't | ||
| 31 | * appear in the interface though. */ | ||
| 32 | typedef signed char __v8qs __attribute__((__vector_size__(8))); | ||
| 33 | |||
| 34 | /* SSE/SSE2 types */ | ||
| 35 | typedef long long __m128i __attribute__((__vector_size__(16), __aligned__(16))); | ||
| 36 | typedef long long __v2di __attribute__ ((__vector_size__ (16))); | ||
| 37 | typedef int __v4si __attribute__((__vector_size__(16))); | ||
| 38 | typedef short __v8hi __attribute__((__vector_size__(16))); | ||
| 39 | typedef char __v16qi __attribute__((__vector_size__(16))); | ||
| 40 | |||
| 24 | /* Define the default attributes for the functions in this file. */ | 41 | /* Define the default attributes for the functions in this file. */ |
| 25 | #define __DEFAULT_FN_ATTRS \ | 42 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) |
| 26 | __attribute__((__always_inline__, __nodebug__, __target__("mmx,no-evex512"), \ | 43 | #define __DEFAULT_FN_ATTRS_SSE2 \ |
| 27 | __min_vector_width__(64))) | 44 | __attribute__((__always_inline__, __nodebug__, \ |
| 45 | __target__("sse2,no-evex512"), __min_vector_width__(128))) | ||
| 46 | #else | ||
| 47 | #define __DEFAULT_FN_ATTRS_SSE2 \ | ||
| 48 | __attribute__((__always_inline__, __nodebug__, __target__("sse2"), \ | ||
| 49 | __min_vector_width__(128))) | ||
| 50 | #endif | ||
| 51 | |||
| 52 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 53 | #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 constexpr | ||
| 54 | #else | ||
| 55 | #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 | ||
| 56 | #endif | ||
| 57 | |||
| 58 | #define __trunc64(x) \ | ||
| 59 | (__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0) | ||
| 60 | #define __anyext128(x) \ | ||
| 61 | (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \ | ||
| 62 | 1, -1, -1) | ||
| 28 | 63 | ||
| 29 | /// Clears the MMX state by setting the state of the x87 stack registers | 64 | /// Clears the MMX state by setting the state of the x87 stack registers |
| 30 | /// to empty. | 65 | /// to empty. |
| ... | @@ -50,10 +85,10 @@ _mm_empty(void) { | ... | @@ -50,10 +85,10 @@ _mm_empty(void) { |
| 50 | /// A 32-bit integer value. | 85 | /// A 32-bit integer value. |
| 51 | /// \returns A 64-bit integer vector. The lower 32 bits contain the value of the | 86 | /// \returns A 64-bit integer vector. The lower 32 bits contain the value of the |
| 52 | /// parameter. The upper 32 bits are set to 0. | 87 | /// parameter. The upper 32 bits are set to 0. |
| 53 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 88 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 54 | _mm_cvtsi32_si64(int __i) | 89 | _mm_cvtsi32_si64(int __i) |
| 55 | { | 90 | { |
| 56 | return (__m64)__builtin_ia32_vec_init_v2si(__i, 0); | 91 | return __extension__ (__m64)(__v2si){__i, 0}; |
| 57 | } | 92 | } |
| 58 | 93 | ||
| 59 | /// Returns the lower 32 bits of a 64-bit integer vector as a 32-bit | 94 | /// Returns the lower 32 bits of a 64-bit integer vector as a 32-bit |
| ... | @@ -67,10 +102,10 @@ _mm_cvtsi32_si64(int __i) | ... | @@ -67,10 +102,10 @@ _mm_cvtsi32_si64(int __i) |
| 67 | /// A 64-bit integer vector. | 102 | /// A 64-bit integer vector. |
| 68 | /// \returns A 32-bit signed integer value containing the lower 32 bits of the | 103 | /// \returns A 32-bit signed integer value containing the lower 32 bits of the |
| 69 | /// parameter. | 104 | /// parameter. |
| 70 | static __inline__ int __DEFAULT_FN_ATTRS | 105 | static __inline__ int __DEFAULT_FN_ATTRS_SSE2 |
| 71 | _mm_cvtsi64_si32(__m64 __m) | 106 | _mm_cvtsi64_si32(__m64 __m) |
| 72 | { | 107 | { |
| 73 | return __builtin_ia32_vec_ext_v2si((__v2si)__m, 0); | 108 | return ((__v2si)__m)[0]; |
| 74 | } | 109 | } |
| 75 | 110 | ||
| 76 | /// Casts a 64-bit signed integer value into a 64-bit integer vector. | 111 | /// Casts a 64-bit signed integer value into a 64-bit integer vector. |
| ... | @@ -83,7 +118,7 @@ _mm_cvtsi64_si32(__m64 __m) | ... | @@ -83,7 +118,7 @@ _mm_cvtsi64_si32(__m64 __m) |
| 83 | /// A 64-bit signed integer. | 118 | /// A 64-bit signed integer. |
| 84 | /// \returns A 64-bit integer vector containing the same bitwise pattern as the | 119 | /// \returns A 64-bit integer vector containing the same bitwise pattern as the |
| 85 | /// parameter. | 120 | /// parameter. |
| 86 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 121 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 87 | _mm_cvtsi64_m64(long long __i) | 122 | _mm_cvtsi64_m64(long long __i) |
| 88 | { | 123 | { |
| 89 | return (__m64)__i; | 124 | return (__m64)__i; |
| ... | @@ -99,7 +134,7 @@ _mm_cvtsi64_m64(long long __i) | ... | @@ -99,7 +134,7 @@ _mm_cvtsi64_m64(long long __i) |
| 99 | /// A 64-bit integer vector. | 134 | /// A 64-bit integer vector. |
| 100 | /// \returns A 64-bit signed integer containing the same bitwise pattern as the | 135 | /// \returns A 64-bit signed integer containing the same bitwise pattern as the |
| 101 | /// parameter. | 136 | /// parameter. |
| 102 | static __inline__ long long __DEFAULT_FN_ATTRS | 137 | static __inline__ long long __DEFAULT_FN_ATTRS_SSE2 |
| 103 | _mm_cvtm64_si64(__m64 __m) | 138 | _mm_cvtm64_si64(__m64 __m) |
| 104 | { | 139 | { |
| 105 | return (long long)__m; | 140 | return (long long)__m; |
| ... | @@ -124,10 +159,11 @@ _mm_cvtm64_si64(__m64 __m) | ... | @@ -124,10 +159,11 @@ _mm_cvtm64_si64(__m64 __m) |
| 124 | /// written to the upper 32 bits of the result. | 159 | /// written to the upper 32 bits of the result. |
| 125 | /// \returns A 64-bit integer vector of [8 x i8] containing the converted | 160 | /// \returns A 64-bit integer vector of [8 x i8] containing the converted |
| 126 | /// values. | 161 | /// values. |
| 127 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 162 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 128 | _mm_packs_pi16(__m64 __m1, __m64 __m2) | 163 | _mm_packs_pi16(__m64 __m1, __m64 __m2) |
| 129 | { | 164 | { |
| 130 | return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2); | 165 | return __trunc64(__builtin_ia32_packsswb128( |
| 166 | (__v8hi)__builtin_shufflevector(__m1, __m2, 0, 1), (__v8hi){})); | ||
| 131 | } | 167 | } |
| 132 | 168 | ||
| 133 | /// Converts, with saturation, 32-bit signed integers from both 64-bit integer | 169 | /// Converts, with saturation, 32-bit signed integers from both 64-bit integer |
| ... | @@ -149,10 +185,11 @@ _mm_packs_pi16(__m64 __m1, __m64 __m2) | ... | @@ -149,10 +185,11 @@ _mm_packs_pi16(__m64 __m1, __m64 __m2) |
| 149 | /// written to the upper 32 bits of the result. | 185 | /// written to the upper 32 bits of the result. |
| 150 | /// \returns A 64-bit integer vector of [4 x i16] containing the converted | 186 | /// \returns A 64-bit integer vector of [4 x i16] containing the converted |
| 151 | /// values. | 187 | /// values. |
| 152 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 188 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 153 | _mm_packs_pi32(__m64 __m1, __m64 __m2) | 189 | _mm_packs_pi32(__m64 __m1, __m64 __m2) |
| 154 | { | 190 | { |
| 155 | return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2); | 191 | return __trunc64(__builtin_ia32_packssdw128( |
| 192 | (__v4si)__builtin_shufflevector(__m1, __m2, 0, 1), (__v4si){})); | ||
| 156 | } | 193 | } |
| 157 | 194 | ||
| 158 | /// Converts, with saturation, 16-bit signed integers from both 64-bit integer | 195 | /// Converts, with saturation, 16-bit signed integers from both 64-bit integer |
| ... | @@ -174,10 +211,11 @@ _mm_packs_pi32(__m64 __m1, __m64 __m2) | ... | @@ -174,10 +211,11 @@ _mm_packs_pi32(__m64 __m1, __m64 __m2) |
| 174 | /// written to the upper 32 bits of the result. | 211 | /// written to the upper 32 bits of the result. |
| 175 | /// \returns A 64-bit integer vector of [8 x i8] containing the converted | 212 | /// \returns A 64-bit integer vector of [8 x i8] containing the converted |
| 176 | /// values. | 213 | /// values. |
| 177 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 214 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 178 | _mm_packs_pu16(__m64 __m1, __m64 __m2) | 215 | _mm_packs_pu16(__m64 __m1, __m64 __m2) |
| 179 | { | 216 | { |
| 180 | return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2); | 217 | return __trunc64(__builtin_ia32_packuswb128( |
| 218 | (__v8hi)__builtin_shufflevector(__m1, __m2, 0, 1), (__v8hi){})); | ||
| 181 | } | 219 | } |
| 182 | 220 | ||
| 183 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8] | 221 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of [8 x i8] |
| ... | @@ -201,10 +239,11 @@ _mm_packs_pu16(__m64 __m1, __m64 __m2) | ... | @@ -201,10 +239,11 @@ _mm_packs_pu16(__m64 __m1, __m64 __m2) |
| 201 | /// Bits [63:56] are written to bits [63:56] of the result. | 239 | /// Bits [63:56] are written to bits [63:56] of the result. |
| 202 | /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved | 240 | /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved |
| 203 | /// values. | 241 | /// values. |
| 204 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 242 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 205 | _mm_unpackhi_pi8(__m64 __m1, __m64 __m2) | 243 | _mm_unpackhi_pi8(__m64 __m1, __m64 __m2) |
| 206 | { | 244 | { |
| 207 | return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2); | 245 | return (__m64)__builtin_shufflevector((__v8qi)__m1, (__v8qi)__m2, |
| 246 | 4, 12, 5, 13, 6, 14, 7, 15); | ||
| 208 | } | 247 | } |
| 209 | 248 | ||
| 210 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of | 249 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of |
| ... | @@ -224,10 +263,11 @@ _mm_unpackhi_pi8(__m64 __m1, __m64 __m2) | ... | @@ -224,10 +263,11 @@ _mm_unpackhi_pi8(__m64 __m1, __m64 __m2) |
| 224 | /// Bits [63:48] are written to bits [63:48] of the result. | 263 | /// Bits [63:48] are written to bits [63:48] of the result. |
| 225 | /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved | 264 | /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved |
| 226 | /// values. | 265 | /// values. |
| 227 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 266 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 228 | _mm_unpackhi_pi16(__m64 __m1, __m64 __m2) | 267 | _mm_unpackhi_pi16(__m64 __m1, __m64 __m2) |
| 229 | { | 268 | { |
| 230 | return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2); | 269 | return (__m64)__builtin_shufflevector((__v4hi)__m1, (__v4hi)__m2, |
| 270 | 2, 6, 3, 7); | ||
| 231 | } | 271 | } |
| 232 | 272 | ||
| 233 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of | 273 | /// Unpacks the upper 32 bits from two 64-bit integer vectors of |
| ... | @@ -245,10 +285,10 @@ _mm_unpackhi_pi16(__m64 __m1, __m64 __m2) | ... | @@ -245,10 +285,10 @@ _mm_unpackhi_pi16(__m64 __m1, __m64 __m2) |
| 245 | /// the upper 32 bits of the result. | 285 | /// the upper 32 bits of the result. |
| 246 | /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved | 286 | /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved |
| 247 | /// values. | 287 | /// values. |
| 248 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 288 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 249 | _mm_unpackhi_pi32(__m64 __m1, __m64 __m2) | 289 | _mm_unpackhi_pi32(__m64 __m1, __m64 __m2) |
| 250 | { | 290 | { |
| 251 | return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2); | 291 | return (__m64)__builtin_shufflevector((__v2si)__m1, (__v2si)__m2, 1, 3); |
| 252 | } | 292 | } |
| 253 | 293 | ||
| 254 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8] | 294 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of [8 x i8] |
| ... | @@ -272,10 +312,11 @@ _mm_unpackhi_pi32(__m64 __m1, __m64 __m2) | ... | @@ -272,10 +312,11 @@ _mm_unpackhi_pi32(__m64 __m1, __m64 __m2) |
| 272 | /// Bits [31:24] are written to bits [63:56] of the result. | 312 | /// Bits [31:24] are written to bits [63:56] of the result. |
| 273 | /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved | 313 | /// \returns A 64-bit integer vector of [8 x i8] containing the interleaved |
| 274 | /// values. | 314 | /// values. |
| 275 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 315 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 276 | _mm_unpacklo_pi8(__m64 __m1, __m64 __m2) | 316 | _mm_unpacklo_pi8(__m64 __m1, __m64 __m2) |
| 277 | { | 317 | { |
| 278 | return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); | 318 | return (__m64)__builtin_shufflevector((__v8qi)__m1, (__v8qi)__m2, |
| 319 | 0, 8, 1, 9, 2, 10, 3, 11); | ||
| 279 | } | 320 | } |
| 280 | 321 | ||
| 281 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of | 322 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of |
| ... | @@ -295,10 +336,11 @@ _mm_unpacklo_pi8(__m64 __m1, __m64 __m2) | ... | @@ -295,10 +336,11 @@ _mm_unpacklo_pi8(__m64 __m1, __m64 __m2) |
| 295 | /// Bits [31:16] are written to bits [63:48] of the result. | 336 | /// Bits [31:16] are written to bits [63:48] of the result. |
| 296 | /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved | 337 | /// \returns A 64-bit integer vector of [4 x i16] containing the interleaved |
| 297 | /// values. | 338 | /// values. |
| 298 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 339 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 299 | _mm_unpacklo_pi16(__m64 __m1, __m64 __m2) | 340 | _mm_unpacklo_pi16(__m64 __m1, __m64 __m2) |
| 300 | { | 341 | { |
| 301 | return (__m64)__builtin_ia32_punpcklwd((__v4hi)__m1, (__v4hi)__m2); | 342 | return (__m64)__builtin_shufflevector((__v4hi)__m1, (__v4hi)__m2, |
| 343 | 0, 4, 1, 5); | ||
| 302 | } | 344 | } |
| 303 | 345 | ||
| 304 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of | 346 | /// Unpacks the lower 32 bits from two 64-bit integer vectors of |
| ... | @@ -316,10 +358,10 @@ _mm_unpacklo_pi16(__m64 __m1, __m64 __m2) | ... | @@ -316,10 +358,10 @@ _mm_unpacklo_pi16(__m64 __m1, __m64 __m2) |
| 316 | /// the upper 32 bits of the result. | 358 | /// the upper 32 bits of the result. |
| 317 | /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved | 359 | /// \returns A 64-bit integer vector of [2 x i32] containing the interleaved |
| 318 | /// values. | 360 | /// values. |
| 319 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 361 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 320 | _mm_unpacklo_pi32(__m64 __m1, __m64 __m2) | 362 | _mm_unpacklo_pi32(__m64 __m1, __m64 __m2) |
| 321 | { | 363 | { |
| 322 | return (__m64)__builtin_ia32_punpckldq((__v2si)__m1, (__v2si)__m2); | 364 | return (__m64)__builtin_shufflevector((__v2si)__m1, (__v2si)__m2, 0, 2); |
| 323 | } | 365 | } |
| 324 | 366 | ||
| 325 | /// Adds each 8-bit integer element of the first 64-bit integer vector | 367 | /// Adds each 8-bit integer element of the first 64-bit integer vector |
| ... | @@ -337,10 +379,10 @@ _mm_unpacklo_pi32(__m64 __m1, __m64 __m2) | ... | @@ -337,10 +379,10 @@ _mm_unpacklo_pi32(__m64 __m1, __m64 __m2) |
| 337 | /// A 64-bit integer vector of [8 x i8]. | 379 | /// A 64-bit integer vector of [8 x i8]. |
| 338 | /// \returns A 64-bit integer vector of [8 x i8] containing the sums of both | 380 | /// \returns A 64-bit integer vector of [8 x i8] containing the sums of both |
| 339 | /// parameters. | 381 | /// parameters. |
| 340 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 382 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 341 | _mm_add_pi8(__m64 __m1, __m64 __m2) | 383 | _mm_add_pi8(__m64 __m1, __m64 __m2) |
| 342 | { | 384 | { |
| 343 | return (__m64)__builtin_ia32_paddb((__v8qi)__m1, (__v8qi)__m2); | 385 | return (__m64)(((__v8qu)__m1) + ((__v8qu)__m2)); |
| 344 | } | 386 | } |
| 345 | 387 | ||
| 346 | /// Adds each 16-bit integer element of the first 64-bit integer vector | 388 | /// Adds each 16-bit integer element of the first 64-bit integer vector |
| ... | @@ -358,10 +400,10 @@ _mm_add_pi8(__m64 __m1, __m64 __m2) | ... | @@ -358,10 +400,10 @@ _mm_add_pi8(__m64 __m1, __m64 __m2) |
| 358 | /// A 64-bit integer vector of [4 x i16]. | 400 | /// A 64-bit integer vector of [4 x i16]. |
| 359 | /// \returns A 64-bit integer vector of [4 x i16] containing the sums of both | 401 | /// \returns A 64-bit integer vector of [4 x i16] containing the sums of both |
| 360 | /// parameters. | 402 | /// parameters. |
| 361 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 403 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 362 | _mm_add_pi16(__m64 __m1, __m64 __m2) | 404 | _mm_add_pi16(__m64 __m1, __m64 __m2) |
| 363 | { | 405 | { |
| 364 | return (__m64)__builtin_ia32_paddw((__v4hi)__m1, (__v4hi)__m2); | 406 | return (__m64)(((__v4hu)__m1) + ((__v4hu)__m2)); |
| 365 | } | 407 | } |
| 366 | 408 | ||
| 367 | /// Adds each 32-bit integer element of the first 64-bit integer vector | 409 | /// Adds each 32-bit integer element of the first 64-bit integer vector |
| ... | @@ -379,10 +421,10 @@ _mm_add_pi16(__m64 __m1, __m64 __m2) | ... | @@ -379,10 +421,10 @@ _mm_add_pi16(__m64 __m1, __m64 __m2) |
| 379 | /// A 64-bit integer vector of [2 x i32]. | 421 | /// A 64-bit integer vector of [2 x i32]. |
| 380 | /// \returns A 64-bit integer vector of [2 x i32] containing the sums of both | 422 | /// \returns A 64-bit integer vector of [2 x i32] containing the sums of both |
| 381 | /// parameters. | 423 | /// parameters. |
| 382 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 424 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 383 | _mm_add_pi32(__m64 __m1, __m64 __m2) | 425 | _mm_add_pi32(__m64 __m1, __m64 __m2) |
| 384 | { | 426 | { |
| 385 | return (__m64)__builtin_ia32_paddd((__v2si)__m1, (__v2si)__m2); | 427 | return (__m64)(((__v2su)__m1) + ((__v2su)__m2)); |
| 386 | } | 428 | } |
| 387 | 429 | ||
| 388 | /// Adds, with saturation, each 8-bit signed integer element of the first | 430 | /// Adds, with saturation, each 8-bit signed integer element of the first |
| ... | @@ -403,10 +445,10 @@ _mm_add_pi32(__m64 __m1, __m64 __m2) | ... | @@ -403,10 +445,10 @@ _mm_add_pi32(__m64 __m1, __m64 __m2) |
| 403 | /// A 64-bit integer vector of [8 x i8]. | 445 | /// A 64-bit integer vector of [8 x i8]. |
| 404 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated sums | 446 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated sums |
| 405 | /// of both parameters. | 447 | /// of both parameters. |
| 406 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 448 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 407 | _mm_adds_pi8(__m64 __m1, __m64 __m2) | 449 | _mm_adds_pi8(__m64 __m1, __m64 __m2) |
| 408 | { | 450 | { |
| 409 | return (__m64)__builtin_ia32_paddsb((__v8qi)__m1, (__v8qi)__m2); | 451 | return (__m64)__builtin_elementwise_add_sat((__v8qs)__m1, (__v8qs)__m2); |
| 410 | } | 452 | } |
| 411 | 453 | ||
| 412 | /// Adds, with saturation, each 16-bit signed integer element of the first | 454 | /// Adds, with saturation, each 16-bit signed integer element of the first |
| ... | @@ -427,10 +469,10 @@ _mm_adds_pi8(__m64 __m1, __m64 __m2) | ... | @@ -427,10 +469,10 @@ _mm_adds_pi8(__m64 __m1, __m64 __m2) |
| 427 | /// A 64-bit integer vector of [4 x i16]. | 469 | /// A 64-bit integer vector of [4 x i16]. |
| 428 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated sums | 470 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated sums |
| 429 | /// of both parameters. | 471 | /// of both parameters. |
| 430 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 472 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 431 | _mm_adds_pi16(__m64 __m1, __m64 __m2) | 473 | _mm_adds_pi16(__m64 __m1, __m64 __m2) |
| 432 | { | 474 | { |
| 433 | return (__m64)__builtin_ia32_paddsw((__v4hi)__m1, (__v4hi)__m2); | 475 | return (__m64)__builtin_elementwise_add_sat((__v4hi)__m1, (__v4hi)__m2); |
| 434 | } | 476 | } |
| 435 | 477 | ||
| 436 | /// Adds, with saturation, each 8-bit unsigned integer element of the first | 478 | /// Adds, with saturation, each 8-bit unsigned integer element of the first |
| ... | @@ -450,10 +492,10 @@ _mm_adds_pi16(__m64 __m1, __m64 __m2) | ... | @@ -450,10 +492,10 @@ _mm_adds_pi16(__m64 __m1, __m64 __m2) |
| 450 | /// A 64-bit integer vector of [8 x i8]. | 492 | /// A 64-bit integer vector of [8 x i8]. |
| 451 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated | 493 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated |
| 452 | /// unsigned sums of both parameters. | 494 | /// unsigned sums of both parameters. |
| 453 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 495 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 454 | _mm_adds_pu8(__m64 __m1, __m64 __m2) | 496 | _mm_adds_pu8(__m64 __m1, __m64 __m2) |
| 455 | { | 497 | { |
| 456 | return (__m64)__builtin_ia32_paddusb((__v8qi)__m1, (__v8qi)__m2); | 498 | return (__m64)__builtin_elementwise_add_sat((__v8qu)__m1, (__v8qu)__m2); |
| 457 | } | 499 | } |
| 458 | 500 | ||
| 459 | /// Adds, with saturation, each 16-bit unsigned integer element of the first | 501 | /// Adds, with saturation, each 16-bit unsigned integer element of the first |
| ... | @@ -473,10 +515,10 @@ _mm_adds_pu8(__m64 __m1, __m64 __m2) | ... | @@ -473,10 +515,10 @@ _mm_adds_pu8(__m64 __m1, __m64 __m2) |
| 473 | /// A 64-bit integer vector of [4 x i16]. | 515 | /// A 64-bit integer vector of [4 x i16]. |
| 474 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated | 516 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated |
| 475 | /// unsigned sums of both parameters. | 517 | /// unsigned sums of both parameters. |
| 476 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 518 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 477 | _mm_adds_pu16(__m64 __m1, __m64 __m2) | 519 | _mm_adds_pu16(__m64 __m1, __m64 __m2) |
| 478 | { | 520 | { |
| 479 | return (__m64)__builtin_ia32_paddusw((__v4hi)__m1, (__v4hi)__m2); | 521 | return (__m64)__builtin_elementwise_add_sat((__v4hu)__m1, (__v4hu)__m2); |
| 480 | } | 522 | } |
| 481 | 523 | ||
| 482 | /// Subtracts each 8-bit integer element of the second 64-bit integer | 524 | /// Subtracts each 8-bit integer element of the second 64-bit integer |
| ... | @@ -494,10 +536,10 @@ _mm_adds_pu16(__m64 __m1, __m64 __m2) | ... | @@ -494,10 +536,10 @@ _mm_adds_pu16(__m64 __m1, __m64 __m2) |
| 494 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. | 536 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. |
| 495 | /// \returns A 64-bit integer vector of [8 x i8] containing the differences of | 537 | /// \returns A 64-bit integer vector of [8 x i8] containing the differences of |
| 496 | /// both parameters. | 538 | /// both parameters. |
| 497 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 539 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 498 | _mm_sub_pi8(__m64 __m1, __m64 __m2) | 540 | _mm_sub_pi8(__m64 __m1, __m64 __m2) |
| 499 | { | 541 | { |
| 500 | return (__m64)__builtin_ia32_psubb((__v8qi)__m1, (__v8qi)__m2); | 542 | return (__m64)(((__v8qu)__m1) - ((__v8qu)__m2)); |
| 501 | } | 543 | } |
| 502 | 544 | ||
| 503 | /// Subtracts each 16-bit integer element of the second 64-bit integer | 545 | /// Subtracts each 16-bit integer element of the second 64-bit integer |
| ... | @@ -515,10 +557,10 @@ _mm_sub_pi8(__m64 __m1, __m64 __m2) | ... | @@ -515,10 +557,10 @@ _mm_sub_pi8(__m64 __m1, __m64 __m2) |
| 515 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. | 557 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. |
| 516 | /// \returns A 64-bit integer vector of [4 x i16] containing the differences of | 558 | /// \returns A 64-bit integer vector of [4 x i16] containing the differences of |
| 517 | /// both parameters. | 559 | /// both parameters. |
| 518 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 560 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 519 | _mm_sub_pi16(__m64 __m1, __m64 __m2) | 561 | _mm_sub_pi16(__m64 __m1, __m64 __m2) |
| 520 | { | 562 | { |
| 521 | return (__m64)__builtin_ia32_psubw((__v4hi)__m1, (__v4hi)__m2); | 563 | return (__m64)(((__v4hu)__m1) - ((__v4hu)__m2)); |
| 522 | } | 564 | } |
| 523 | 565 | ||
| 524 | /// Subtracts each 32-bit integer element of the second 64-bit integer | 566 | /// Subtracts each 32-bit integer element of the second 64-bit integer |
| ... | @@ -536,10 +578,10 @@ _mm_sub_pi16(__m64 __m1, __m64 __m2) | ... | @@ -536,10 +578,10 @@ _mm_sub_pi16(__m64 __m1, __m64 __m2) |
| 536 | /// A 64-bit integer vector of [2 x i32] containing the subtrahends. | 578 | /// A 64-bit integer vector of [2 x i32] containing the subtrahends. |
| 537 | /// \returns A 64-bit integer vector of [2 x i32] containing the differences of | 579 | /// \returns A 64-bit integer vector of [2 x i32] containing the differences of |
| 538 | /// both parameters. | 580 | /// both parameters. |
| 539 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 581 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 540 | _mm_sub_pi32(__m64 __m1, __m64 __m2) | 582 | _mm_sub_pi32(__m64 __m1, __m64 __m2) |
| 541 | { | 583 | { |
| 542 | return (__m64)__builtin_ia32_psubd((__v2si)__m1, (__v2si)__m2); | 584 | return (__m64)(((__v2su)__m1) - ((__v2su)__m2)); |
| 543 | } | 585 | } |
| 544 | 586 | ||
| 545 | /// Subtracts, with saturation, each 8-bit signed integer element of the second | 587 | /// Subtracts, with saturation, each 8-bit signed integer element of the second |
| ... | @@ -560,10 +602,10 @@ _mm_sub_pi32(__m64 __m1, __m64 __m2) | ... | @@ -560,10 +602,10 @@ _mm_sub_pi32(__m64 __m1, __m64 __m2) |
| 560 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. | 602 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. |
| 561 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated | 603 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated |
| 562 | /// differences of both parameters. | 604 | /// differences of both parameters. |
| 563 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 605 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 564 | _mm_subs_pi8(__m64 __m1, __m64 __m2) | 606 | _mm_subs_pi8(__m64 __m1, __m64 __m2) |
| 565 | { | 607 | { |
| 566 | return (__m64)__builtin_ia32_psubsb((__v8qi)__m1, (__v8qi)__m2); | 608 | return (__m64)__builtin_elementwise_sub_sat((__v8qs)__m1, (__v8qs)__m2); |
| 567 | } | 609 | } |
| 568 | 610 | ||
| 569 | /// Subtracts, with saturation, each 16-bit signed integer element of the | 611 | /// Subtracts, with saturation, each 16-bit signed integer element of the |
| ... | @@ -584,10 +626,10 @@ _mm_subs_pi8(__m64 __m1, __m64 __m2) | ... | @@ -584,10 +626,10 @@ _mm_subs_pi8(__m64 __m1, __m64 __m2) |
| 584 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. | 626 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. |
| 585 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated | 627 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated |
| 586 | /// differences of both parameters. | 628 | /// differences of both parameters. |
| 587 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 629 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 588 | _mm_subs_pi16(__m64 __m1, __m64 __m2) | 630 | _mm_subs_pi16(__m64 __m1, __m64 __m2) |
| 589 | { | 631 | { |
| 590 | return (__m64)__builtin_ia32_psubsw((__v4hi)__m1, (__v4hi)__m2); | 632 | return (__m64)__builtin_elementwise_sub_sat((__v4hi)__m1, (__v4hi)__m2); |
| 591 | } | 633 | } |
| 592 | 634 | ||
| 593 | /// Subtracts each 8-bit unsigned integer element of the second 64-bit | 635 | /// Subtracts each 8-bit unsigned integer element of the second 64-bit |
| ... | @@ -608,10 +650,10 @@ _mm_subs_pi16(__m64 __m1, __m64 __m2) | ... | @@ -608,10 +650,10 @@ _mm_subs_pi16(__m64 __m1, __m64 __m2) |
| 608 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. | 650 | /// A 64-bit integer vector of [8 x i8] containing the subtrahends. |
| 609 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated | 651 | /// \returns A 64-bit integer vector of [8 x i8] containing the saturated |
| 610 | /// differences of both parameters. | 652 | /// differences of both parameters. |
| 611 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 653 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 612 | _mm_subs_pu8(__m64 __m1, __m64 __m2) | 654 | _mm_subs_pu8(__m64 __m1, __m64 __m2) |
| 613 | { | 655 | { |
| 614 | return (__m64)__builtin_ia32_psubusb((__v8qi)__m1, (__v8qi)__m2); | 656 | return (__m64)__builtin_elementwise_sub_sat((__v8qu)__m1, (__v8qu)__m2); |
| 615 | } | 657 | } |
| 616 | 658 | ||
| 617 | /// Subtracts each 16-bit unsigned integer element of the second 64-bit | 659 | /// Subtracts each 16-bit unsigned integer element of the second 64-bit |
| ... | @@ -632,10 +674,10 @@ _mm_subs_pu8(__m64 __m1, __m64 __m2) | ... | @@ -632,10 +674,10 @@ _mm_subs_pu8(__m64 __m1, __m64 __m2) |
| 632 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. | 674 | /// A 64-bit integer vector of [4 x i16] containing the subtrahends. |
| 633 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated | 675 | /// \returns A 64-bit integer vector of [4 x i16] containing the saturated |
| 634 | /// differences of both parameters. | 676 | /// differences of both parameters. |
| 635 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 677 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 636 | _mm_subs_pu16(__m64 __m1, __m64 __m2) | 678 | _mm_subs_pu16(__m64 __m1, __m64 __m2) |
| 637 | { | 679 | { |
| 638 | return (__m64)__builtin_ia32_psubusw((__v4hi)__m1, (__v4hi)__m2); | 680 | return (__m64)__builtin_elementwise_sub_sat((__v4hu)__m1, (__v4hu)__m2); |
| 639 | } | 681 | } |
| 640 | 682 | ||
| 641 | /// Multiplies each 16-bit signed integer element of the first 64-bit | 683 | /// Multiplies each 16-bit signed integer element of the first 64-bit |
| ... | @@ -659,10 +701,11 @@ _mm_subs_pu16(__m64 __m1, __m64 __m2) | ... | @@ -659,10 +701,11 @@ _mm_subs_pu16(__m64 __m1, __m64 __m2) |
| 659 | /// A 64-bit integer vector of [4 x i16]. | 701 | /// A 64-bit integer vector of [4 x i16]. |
| 660 | /// \returns A 64-bit integer vector of [2 x i32] containing the sums of | 702 | /// \returns A 64-bit integer vector of [2 x i32] containing the sums of |
| 661 | /// products of both parameters. | 703 | /// products of both parameters. |
| 662 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 704 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 663 | _mm_madd_pi16(__m64 __m1, __m64 __m2) | 705 | _mm_madd_pi16(__m64 __m1, __m64 __m2) |
| 664 | { | 706 | { |
| 665 | return (__m64)__builtin_ia32_pmaddwd((__v4hi)__m1, (__v4hi)__m2); | 707 | return __trunc64(__builtin_ia32_pmaddwd128((__v8hi)__anyext128(__m1), |
| 708 | (__v8hi)__anyext128(__m2))); | ||
| 666 | } | 709 | } |
| 667 | 710 | ||
| 668 | /// Multiplies each 16-bit signed integer element of the first 64-bit | 711 | /// Multiplies each 16-bit signed integer element of the first 64-bit |
| ... | @@ -680,10 +723,11 @@ _mm_madd_pi16(__m64 __m1, __m64 __m2) | ... | @@ -680,10 +723,11 @@ _mm_madd_pi16(__m64 __m1, __m64 __m2) |
| 680 | /// A 64-bit integer vector of [4 x i16]. | 723 | /// A 64-bit integer vector of [4 x i16]. |
| 681 | /// \returns A 64-bit integer vector of [4 x i16] containing the upper 16 bits | 724 | /// \returns A 64-bit integer vector of [4 x i16] containing the upper 16 bits |
| 682 | /// of the products of both parameters. | 725 | /// of the products of both parameters. |
| 683 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 726 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 684 | _mm_mulhi_pi16(__m64 __m1, __m64 __m2) | 727 | _mm_mulhi_pi16(__m64 __m1, __m64 __m2) |
| 685 | { | 728 | { |
| 686 | return (__m64)__builtin_ia32_pmulhw((__v4hi)__m1, (__v4hi)__m2); | 729 | return __trunc64(__builtin_ia32_pmulhw128((__v8hi)__anyext128(__m1), |
| 730 | (__v8hi)__anyext128(__m2))); | ||
| 687 | } | 731 | } |
| 688 | 732 | ||
| 689 | /// Multiplies each 16-bit signed integer element of the first 64-bit | 733 | /// Multiplies each 16-bit signed integer element of the first 64-bit |
| ... | @@ -701,10 +745,10 @@ _mm_mulhi_pi16(__m64 __m1, __m64 __m2) | ... | @@ -701,10 +745,10 @@ _mm_mulhi_pi16(__m64 __m1, __m64 __m2) |
| 701 | /// A 64-bit integer vector of [4 x i16]. | 745 | /// A 64-bit integer vector of [4 x i16]. |
| 702 | /// \returns A 64-bit integer vector of [4 x i16] containing the lower 16 bits | 746 | /// \returns A 64-bit integer vector of [4 x i16] containing the lower 16 bits |
| 703 | /// of the products of both parameters. | 747 | /// of the products of both parameters. |
| 704 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 748 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 705 | _mm_mullo_pi16(__m64 __m1, __m64 __m2) | 749 | _mm_mullo_pi16(__m64 __m1, __m64 __m2) |
| 706 | { | 750 | { |
| 707 | return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2); | 751 | return (__m64)(((__v4hu)__m1) * ((__v4hu)__m2)); |
| 708 | } | 752 | } |
| 709 | 753 | ||
| 710 | /// Left-shifts each 16-bit signed integer element of the first | 754 | /// Left-shifts each 16-bit signed integer element of the first |
| ... | @@ -724,10 +768,11 @@ _mm_mullo_pi16(__m64 __m1, __m64 __m2) | ... | @@ -724,10 +768,11 @@ _mm_mullo_pi16(__m64 __m1, __m64 __m2) |
| 724 | /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted | 768 | /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted |
| 725 | /// values. If \a __count is greater or equal to 16, the result is set to all | 769 | /// values. If \a __count is greater or equal to 16, the result is set to all |
| 726 | /// 0. | 770 | /// 0. |
| 727 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 771 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 728 | _mm_sll_pi16(__m64 __m, __m64 __count) | 772 | _mm_sll_pi16(__m64 __m, __m64 __count) |
| 729 | { | 773 | { |
| 730 | return (__m64)__builtin_ia32_psllw((__v4hi)__m, __count); | 774 | return __trunc64(__builtin_ia32_psllw128((__v8hi)__anyext128(__m), |
| 775 | (__v8hi)__anyext128(__count))); | ||
| 731 | } | 776 | } |
| 732 | 777 | ||
| 733 | /// Left-shifts each 16-bit signed integer element of a 64-bit integer | 778 | /// Left-shifts each 16-bit signed integer element of a 64-bit integer |
| ... | @@ -746,10 +791,11 @@ _mm_sll_pi16(__m64 __m, __m64 __count) | ... | @@ -746,10 +791,11 @@ _mm_sll_pi16(__m64 __m, __m64 __count) |
| 746 | /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted | 791 | /// \returns A 64-bit integer vector of [4 x i16] containing the left-shifted |
| 747 | /// values. If \a __count is greater or equal to 16, the result is set to all | 792 | /// values. If \a __count is greater or equal to 16, the result is set to all |
| 748 | /// 0. | 793 | /// 0. |
| 749 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 794 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 750 | _mm_slli_pi16(__m64 __m, int __count) | 795 | _mm_slli_pi16(__m64 __m, int __count) |
| 751 | { | 796 | { |
| 752 | return (__m64)__builtin_ia32_psllwi((__v4hi)__m, __count); | 797 | return __trunc64(__builtin_ia32_psllwi128((__v8hi)__anyext128(__m), |
| 798 | __count)); | ||
| 753 | } | 799 | } |
| 754 | 800 | ||
| 755 | /// Left-shifts each 32-bit signed integer element of the first | 801 | /// Left-shifts each 32-bit signed integer element of the first |
| ... | @@ -769,10 +815,11 @@ _mm_slli_pi16(__m64 __m, int __count) | ... | @@ -769,10 +815,11 @@ _mm_slli_pi16(__m64 __m, int __count) |
| 769 | /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted | 815 | /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted |
| 770 | /// values. If \a __count is greater or equal to 32, the result is set to all | 816 | /// values. If \a __count is greater or equal to 32, the result is set to all |
| 771 | /// 0. | 817 | /// 0. |
| 772 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 818 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 773 | _mm_sll_pi32(__m64 __m, __m64 __count) | 819 | _mm_sll_pi32(__m64 __m, __m64 __count) |
| 774 | { | 820 | { |
| 775 | return (__m64)__builtin_ia32_pslld((__v2si)__m, __count); | 821 | return __trunc64(__builtin_ia32_pslld128((__v4si)__anyext128(__m), |
| 822 | (__v4si)__anyext128(__count))); | ||
| 776 | } | 823 | } |
| 777 | 824 | ||
| 778 | /// Left-shifts each 32-bit signed integer element of a 64-bit integer | 825 | /// Left-shifts each 32-bit signed integer element of a 64-bit integer |
| ... | @@ -791,10 +838,11 @@ _mm_sll_pi32(__m64 __m, __m64 __count) | ... | @@ -791,10 +838,11 @@ _mm_sll_pi32(__m64 __m, __m64 __count) |
| 791 | /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted | 838 | /// \returns A 64-bit integer vector of [2 x i32] containing the left-shifted |
| 792 | /// values. If \a __count is greater or equal to 32, the result is set to all | 839 | /// values. If \a __count is greater or equal to 32, the result is set to all |
| 793 | /// 0. | 840 | /// 0. |
| 794 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 841 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 795 | _mm_slli_pi32(__m64 __m, int __count) | 842 | _mm_slli_pi32(__m64 __m, int __count) |
| 796 | { | 843 | { |
| 797 | return (__m64)__builtin_ia32_pslldi((__v2si)__m, __count); | 844 | return __trunc64(__builtin_ia32_pslldi128((__v4si)__anyext128(__m), |
| 845 | __count)); | ||
| 798 | } | 846 | } |
| 799 | 847 | ||
| 800 | /// Left-shifts the first 64-bit integer parameter by the number of bits | 848 | /// Left-shifts the first 64-bit integer parameter by the number of bits |
| ... | @@ -811,10 +859,11 @@ _mm_slli_pi32(__m64 __m, int __count) | ... | @@ -811,10 +859,11 @@ _mm_slli_pi32(__m64 __m, int __count) |
| 811 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 859 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 812 | /// \returns A 64-bit integer vector containing the left-shifted value. If | 860 | /// \returns A 64-bit integer vector containing the left-shifted value. If |
| 813 | /// \a __count is greater or equal to 64, the result is set to 0. | 861 | /// \a __count is greater or equal to 64, the result is set to 0. |
| 814 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 862 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 815 | _mm_sll_si64(__m64 __m, __m64 __count) | 863 | _mm_sll_si64(__m64 __m, __m64 __count) |
| 816 | { | 864 | { |
| 817 | return (__m64)__builtin_ia32_psllq((__v1di)__m, __count); | 865 | return __trunc64(__builtin_ia32_psllq128((__v2di)__anyext128(__m), |
| 866 | (__v2di)__anyext128(__count))); | ||
| 818 | } | 867 | } |
| 819 | 868 | ||
| 820 | /// Left-shifts the first parameter, which is a 64-bit integer, by the | 869 | /// Left-shifts the first parameter, which is a 64-bit integer, by the |
| ... | @@ -831,10 +880,11 @@ _mm_sll_si64(__m64 __m, __m64 __count) | ... | @@ -831,10 +880,11 @@ _mm_sll_si64(__m64 __m, __m64 __count) |
| 831 | /// A 32-bit integer value. | 880 | /// A 32-bit integer value. |
| 832 | /// \returns A 64-bit integer vector containing the left-shifted value. If | 881 | /// \returns A 64-bit integer vector containing the left-shifted value. If |
| 833 | /// \a __count is greater or equal to 64, the result is set to 0. | 882 | /// \a __count is greater or equal to 64, the result is set to 0. |
| 834 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 883 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 835 | _mm_slli_si64(__m64 __m, int __count) | 884 | _mm_slli_si64(__m64 __m, int __count) |
| 836 | { | 885 | { |
| 837 | return (__m64)__builtin_ia32_psllqi((__v1di)__m, __count); | 886 | return __trunc64(__builtin_ia32_psllqi128((__v2di)__anyext128(__m), |
| 887 | __count)); | ||
| 838 | } | 888 | } |
| 839 | 889 | ||
| 840 | /// Right-shifts each 16-bit integer element of the first parameter, | 890 | /// Right-shifts each 16-bit integer element of the first parameter, |
| ... | @@ -855,10 +905,11 @@ _mm_slli_si64(__m64 __m, int __count) | ... | @@ -855,10 +905,11 @@ _mm_slli_si64(__m64 __m, int __count) |
| 855 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 905 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 856 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted | 906 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted |
| 857 | /// values. | 907 | /// values. |
| 858 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 908 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 859 | _mm_sra_pi16(__m64 __m, __m64 __count) | 909 | _mm_sra_pi16(__m64 __m, __m64 __count) |
| 860 | { | 910 | { |
| 861 | return (__m64)__builtin_ia32_psraw((__v4hi)__m, __count); | 911 | return __trunc64(__builtin_ia32_psraw128((__v8hi)__anyext128(__m), |
| 912 | (__v8hi)__anyext128(__count))); | ||
| 862 | } | 913 | } |
| 863 | 914 | ||
| 864 | /// Right-shifts each 16-bit integer element of a 64-bit integer vector | 915 | /// Right-shifts each 16-bit integer element of a 64-bit integer vector |
| ... | @@ -878,10 +929,11 @@ _mm_sra_pi16(__m64 __m, __m64 __count) | ... | @@ -878,10 +929,11 @@ _mm_sra_pi16(__m64 __m, __m64 __count) |
| 878 | /// A 32-bit integer value. | 929 | /// A 32-bit integer value. |
| 879 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted | 930 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted |
| 880 | /// values. | 931 | /// values. |
| 881 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 932 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 882 | _mm_srai_pi16(__m64 __m, int __count) | 933 | _mm_srai_pi16(__m64 __m, int __count) |
| 883 | { | 934 | { |
| 884 | return (__m64)__builtin_ia32_psrawi((__v4hi)__m, __count); | 935 | return __trunc64(__builtin_ia32_psrawi128((__v8hi)__anyext128(__m), |
| 936 | __count)); | ||
| 885 | } | 937 | } |
| 886 | 938 | ||
| 887 | /// Right-shifts each 32-bit integer element of the first parameter, | 939 | /// Right-shifts each 32-bit integer element of the first parameter, |
| ... | @@ -902,10 +954,11 @@ _mm_srai_pi16(__m64 __m, int __count) | ... | @@ -902,10 +954,11 @@ _mm_srai_pi16(__m64 __m, int __count) |
| 902 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 954 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 903 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted | 955 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted |
| 904 | /// values. | 956 | /// values. |
| 905 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 957 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 906 | _mm_sra_pi32(__m64 __m, __m64 __count) | 958 | _mm_sra_pi32(__m64 __m, __m64 __count) |
| 907 | { | 959 | { |
| 908 | return (__m64)__builtin_ia32_psrad((__v2si)__m, __count); | 960 | return __trunc64(__builtin_ia32_psrad128((__v4si)__anyext128(__m), |
| 961 | (__v4si)__anyext128(__count))); | ||
| 909 | } | 962 | } |
| 910 | 963 | ||
| 911 | /// Right-shifts each 32-bit integer element of a 64-bit integer vector | 964 | /// Right-shifts each 32-bit integer element of a 64-bit integer vector |
| ... | @@ -925,10 +978,11 @@ _mm_sra_pi32(__m64 __m, __m64 __count) | ... | @@ -925,10 +978,11 @@ _mm_sra_pi32(__m64 __m, __m64 __count) |
| 925 | /// A 32-bit integer value. | 978 | /// A 32-bit integer value. |
| 926 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted | 979 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted |
| 927 | /// values. | 980 | /// values. |
| 928 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 981 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 929 | _mm_srai_pi32(__m64 __m, int __count) | 982 | _mm_srai_pi32(__m64 __m, int __count) |
| 930 | { | 983 | { |
| 931 | return (__m64)__builtin_ia32_psradi((__v2si)__m, __count); | 984 | return __trunc64(__builtin_ia32_psradi128((__v4si)__anyext128(__m), |
| 985 | __count)); | ||
| 932 | } | 986 | } |
| 933 | 987 | ||
| 934 | /// Right-shifts each 16-bit integer element of the first parameter, | 988 | /// Right-shifts each 16-bit integer element of the first parameter, |
| ... | @@ -948,10 +1002,11 @@ _mm_srai_pi32(__m64 __m, int __count) | ... | @@ -948,10 +1002,11 @@ _mm_srai_pi32(__m64 __m, int __count) |
| 948 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 1002 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 949 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted | 1003 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted |
| 950 | /// values. | 1004 | /// values. |
| 951 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1005 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 952 | _mm_srl_pi16(__m64 __m, __m64 __count) | 1006 | _mm_srl_pi16(__m64 __m, __m64 __count) |
| 953 | { | 1007 | { |
| 954 | return (__m64)__builtin_ia32_psrlw((__v4hi)__m, __count); | 1008 | return __trunc64(__builtin_ia32_psrlw128((__v8hi)__anyext128(__m), |
| 1009 | (__v8hi)__anyext128(__count))); | ||
| 955 | } | 1010 | } |
| 956 | 1011 | ||
| 957 | /// Right-shifts each 16-bit integer element of a 64-bit integer vector | 1012 | /// Right-shifts each 16-bit integer element of a 64-bit integer vector |
| ... | @@ -970,10 +1025,11 @@ _mm_srl_pi16(__m64 __m, __m64 __count) | ... | @@ -970,10 +1025,11 @@ _mm_srl_pi16(__m64 __m, __m64 __count) |
| 970 | /// A 32-bit integer value. | 1025 | /// A 32-bit integer value. |
| 971 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted | 1026 | /// \returns A 64-bit integer vector of [4 x i16] containing the right-shifted |
| 972 | /// values. | 1027 | /// values. |
| 973 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1028 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 974 | _mm_srli_pi16(__m64 __m, int __count) | 1029 | _mm_srli_pi16(__m64 __m, int __count) |
| 975 | { | 1030 | { |
| 976 | return (__m64)__builtin_ia32_psrlwi((__v4hi)__m, __count); | 1031 | return __trunc64(__builtin_ia32_psrlwi128((__v8hi)__anyext128(__m), |
| 1032 | __count)); | ||
| 977 | } | 1033 | } |
| 978 | 1034 | ||
| 979 | /// Right-shifts each 32-bit integer element of the first parameter, | 1035 | /// Right-shifts each 32-bit integer element of the first parameter, |
| ... | @@ -993,10 +1049,11 @@ _mm_srli_pi16(__m64 __m, int __count) | ... | @@ -993,10 +1049,11 @@ _mm_srli_pi16(__m64 __m, int __count) |
| 993 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 1049 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 994 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted | 1050 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted |
| 995 | /// values. | 1051 | /// values. |
| 996 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1052 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 997 | _mm_srl_pi32(__m64 __m, __m64 __count) | 1053 | _mm_srl_pi32(__m64 __m, __m64 __count) |
| 998 | { | 1054 | { |
| 999 | return (__m64)__builtin_ia32_psrld((__v2si)__m, __count); | 1055 | return __trunc64(__builtin_ia32_psrld128((__v4si)__anyext128(__m), |
| 1056 | (__v4si)__anyext128(__count))); | ||
| 1000 | } | 1057 | } |
| 1001 | 1058 | ||
| 1002 | /// Right-shifts each 32-bit integer element of a 64-bit integer vector | 1059 | /// Right-shifts each 32-bit integer element of a 64-bit integer vector |
| ... | @@ -1015,10 +1072,11 @@ _mm_srl_pi32(__m64 __m, __m64 __count) | ... | @@ -1015,10 +1072,11 @@ _mm_srl_pi32(__m64 __m, __m64 __count) |
| 1015 | /// A 32-bit integer value. | 1072 | /// A 32-bit integer value. |
| 1016 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted | 1073 | /// \returns A 64-bit integer vector of [2 x i32] containing the right-shifted |
| 1017 | /// values. | 1074 | /// values. |
| 1018 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1075 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1019 | _mm_srli_pi32(__m64 __m, int __count) | 1076 | _mm_srli_pi32(__m64 __m, int __count) |
| 1020 | { | 1077 | { |
| 1021 | return (__m64)__builtin_ia32_psrldi((__v2si)__m, __count); | 1078 | return __trunc64(__builtin_ia32_psrldi128((__v4si)__anyext128(__m), |
| 1079 | __count)); | ||
| 1022 | } | 1080 | } |
| 1023 | 1081 | ||
| 1024 | /// Right-shifts the first 64-bit integer parameter by the number of bits | 1082 | /// Right-shifts the first 64-bit integer parameter by the number of bits |
| ... | @@ -1035,10 +1093,11 @@ _mm_srli_pi32(__m64 __m, int __count) | ... | @@ -1035,10 +1093,11 @@ _mm_srli_pi32(__m64 __m, int __count) |
| 1035 | /// \param __count | 1093 | /// \param __count |
| 1036 | /// A 64-bit integer vector interpreted as a single 64-bit integer. | 1094 | /// A 64-bit integer vector interpreted as a single 64-bit integer. |
| 1037 | /// \returns A 64-bit integer vector containing the right-shifted value. | 1095 | /// \returns A 64-bit integer vector containing the right-shifted value. |
| 1038 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1096 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1039 | _mm_srl_si64(__m64 __m, __m64 __count) | 1097 | _mm_srl_si64(__m64 __m, __m64 __count) |
| 1040 | { | 1098 | { |
| 1041 | return (__m64)__builtin_ia32_psrlq((__v1di)__m, __count); | 1099 | return __trunc64(__builtin_ia32_psrlq128((__v2di)__anyext128(__m), |
| 1100 | (__v2di)__anyext128(__count))); | ||
| 1042 | } | 1101 | } |
| 1043 | 1102 | ||
| 1044 | /// Right-shifts the first parameter, which is a 64-bit integer, by the | 1103 | /// Right-shifts the first parameter, which is a 64-bit integer, by the |
| ... | @@ -1056,10 +1115,11 @@ _mm_srl_si64(__m64 __m, __m64 __count) | ... | @@ -1056,10 +1115,11 @@ _mm_srl_si64(__m64 __m, __m64 __count) |
| 1056 | /// \param __count | 1115 | /// \param __count |
| 1057 | /// A 32-bit integer value. | 1116 | /// A 32-bit integer value. |
| 1058 | /// \returns A 64-bit integer vector containing the right-shifted value. | 1117 | /// \returns A 64-bit integer vector containing the right-shifted value. |
| 1059 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1118 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1060 | _mm_srli_si64(__m64 __m, int __count) | 1119 | _mm_srli_si64(__m64 __m, int __count) |
| 1061 | { | 1120 | { |
| 1062 | return (__m64)__builtin_ia32_psrlqi((__v1di)__m, __count); | 1121 | return __trunc64(__builtin_ia32_psrlqi128((__v2di)__anyext128(__m), |
| 1122 | __count)); | ||
| 1063 | } | 1123 | } |
| 1064 | 1124 | ||
| 1065 | /// Performs a bitwise AND of two 64-bit integer vectors. | 1125 | /// Performs a bitwise AND of two 64-bit integer vectors. |
| ... | @@ -1074,10 +1134,10 @@ _mm_srli_si64(__m64 __m, int __count) | ... | @@ -1074,10 +1134,10 @@ _mm_srli_si64(__m64 __m, int __count) |
| 1074 | /// A 64-bit integer vector. | 1134 | /// A 64-bit integer vector. |
| 1075 | /// \returns A 64-bit integer vector containing the bitwise AND of both | 1135 | /// \returns A 64-bit integer vector containing the bitwise AND of both |
| 1076 | /// parameters. | 1136 | /// parameters. |
| 1077 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1137 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1078 | _mm_and_si64(__m64 __m1, __m64 __m2) | 1138 | _mm_and_si64(__m64 __m1, __m64 __m2) |
| 1079 | { | 1139 | { |
| 1080 | return __builtin_ia32_pand((__v1di)__m1, (__v1di)__m2); | 1140 | return (__m64)(((__v1du)__m1) & ((__v1du)__m2)); |
| 1081 | } | 1141 | } |
| 1082 | 1142 | ||
| 1083 | /// Performs a bitwise NOT of the first 64-bit integer vector, and then | 1143 | /// Performs a bitwise NOT of the first 64-bit integer vector, and then |
| ... | @@ -1095,10 +1155,10 @@ _mm_and_si64(__m64 __m1, __m64 __m2) | ... | @@ -1095,10 +1155,10 @@ _mm_and_si64(__m64 __m1, __m64 __m2) |
| 1095 | /// A 64-bit integer vector. | 1155 | /// A 64-bit integer vector. |
| 1096 | /// \returns A 64-bit integer vector containing the bitwise AND of the second | 1156 | /// \returns A 64-bit integer vector containing the bitwise AND of the second |
| 1097 | /// parameter and the one's complement of the first parameter. | 1157 | /// parameter and the one's complement of the first parameter. |
| 1098 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1158 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1099 | _mm_andnot_si64(__m64 __m1, __m64 __m2) | 1159 | _mm_andnot_si64(__m64 __m1, __m64 __m2) |
| 1100 | { | 1160 | { |
| 1101 | return __builtin_ia32_pandn((__v1di)__m1, (__v1di)__m2); | 1161 | return (__m64)(~((__v1du)__m1) & ((__v1du)__m2)); |
| 1102 | } | 1162 | } |
| 1103 | 1163 | ||
| 1104 | /// Performs a bitwise OR of two 64-bit integer vectors. | 1164 | /// Performs a bitwise OR of two 64-bit integer vectors. |
| ... | @@ -1113,10 +1173,10 @@ _mm_andnot_si64(__m64 __m1, __m64 __m2) | ... | @@ -1113,10 +1173,10 @@ _mm_andnot_si64(__m64 __m1, __m64 __m2) |
| 1113 | /// A 64-bit integer vector. | 1173 | /// A 64-bit integer vector. |
| 1114 | /// \returns A 64-bit integer vector containing the bitwise OR of both | 1174 | /// \returns A 64-bit integer vector containing the bitwise OR of both |
| 1115 | /// parameters. | 1175 | /// parameters. |
| 1116 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1176 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1117 | _mm_or_si64(__m64 __m1, __m64 __m2) | 1177 | _mm_or_si64(__m64 __m1, __m64 __m2) |
| 1118 | { | 1178 | { |
| 1119 | return __builtin_ia32_por((__v1di)__m1, (__v1di)__m2); | 1179 | return (__m64)(((__v1du)__m1) | ((__v1du)__m2)); |
| 1120 | } | 1180 | } |
| 1121 | 1181 | ||
| 1122 | /// Performs a bitwise exclusive OR of two 64-bit integer vectors. | 1182 | /// Performs a bitwise exclusive OR of two 64-bit integer vectors. |
| ... | @@ -1131,10 +1191,10 @@ _mm_or_si64(__m64 __m1, __m64 __m2) | ... | @@ -1131,10 +1191,10 @@ _mm_or_si64(__m64 __m1, __m64 __m2) |
| 1131 | /// A 64-bit integer vector. | 1191 | /// A 64-bit integer vector. |
| 1132 | /// \returns A 64-bit integer vector containing the bitwise exclusive OR of both | 1192 | /// \returns A 64-bit integer vector containing the bitwise exclusive OR of both |
| 1133 | /// parameters. | 1193 | /// parameters. |
| 1134 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1194 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1135 | _mm_xor_si64(__m64 __m1, __m64 __m2) | 1195 | _mm_xor_si64(__m64 __m1, __m64 __m2) |
| 1136 | { | 1196 | { |
| 1137 | return __builtin_ia32_pxor((__v1di)__m1, (__v1di)__m2); | 1197 | return (__m64)(((__v1du)__m1) ^ ((__v1du)__m2)); |
| 1138 | } | 1198 | } |
| 1139 | 1199 | ||
| 1140 | /// Compares the 8-bit integer elements of two 64-bit integer vectors of | 1200 | /// Compares the 8-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1153,10 +1213,10 @@ _mm_xor_si64(__m64 __m1, __m64 __m2) | ... | @@ -1153,10 +1213,10 @@ _mm_xor_si64(__m64 __m1, __m64 __m2) |
| 1153 | /// A 64-bit integer vector of [8 x i8]. | 1213 | /// A 64-bit integer vector of [8 x i8]. |
| 1154 | /// \returns A 64-bit integer vector of [8 x i8] containing the comparison | 1214 | /// \returns A 64-bit integer vector of [8 x i8] containing the comparison |
| 1155 | /// results. | 1215 | /// results. |
| 1156 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1216 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1157 | _mm_cmpeq_pi8(__m64 __m1, __m64 __m2) | 1217 | _mm_cmpeq_pi8(__m64 __m1, __m64 __m2) |
| 1158 | { | 1218 | { |
| 1159 | return (__m64)__builtin_ia32_pcmpeqb((__v8qi)__m1, (__v8qi)__m2); | 1219 | return (__m64)(((__v8qi)__m1) == ((__v8qi)__m2)); |
| 1160 | } | 1220 | } |
| 1161 | 1221 | ||
| 1162 | /// Compares the 16-bit integer elements of two 64-bit integer vectors of | 1222 | /// Compares the 16-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1175,10 +1235,10 @@ _mm_cmpeq_pi8(__m64 __m1, __m64 __m2) | ... | @@ -1175,10 +1235,10 @@ _mm_cmpeq_pi8(__m64 __m1, __m64 __m2) |
| 1175 | /// A 64-bit integer vector of [4 x i16]. | 1235 | /// A 64-bit integer vector of [4 x i16]. |
| 1176 | /// \returns A 64-bit integer vector of [4 x i16] containing the comparison | 1236 | /// \returns A 64-bit integer vector of [4 x i16] containing the comparison |
| 1177 | /// results. | 1237 | /// results. |
| 1178 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1238 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1179 | _mm_cmpeq_pi16(__m64 __m1, __m64 __m2) | 1239 | _mm_cmpeq_pi16(__m64 __m1, __m64 __m2) |
| 1180 | { | 1240 | { |
| 1181 | return (__m64)__builtin_ia32_pcmpeqw((__v4hi)__m1, (__v4hi)__m2); | 1241 | return (__m64)(((__v4hi)__m1) == ((__v4hi)__m2)); |
| 1182 | } | 1242 | } |
| 1183 | 1243 | ||
| 1184 | /// Compares the 32-bit integer elements of two 64-bit integer vectors of | 1244 | /// Compares the 32-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1197,10 +1257,10 @@ _mm_cmpeq_pi16(__m64 __m1, __m64 __m2) | ... | @@ -1197,10 +1257,10 @@ _mm_cmpeq_pi16(__m64 __m1, __m64 __m2) |
| 1197 | /// A 64-bit integer vector of [2 x i32]. | 1257 | /// A 64-bit integer vector of [2 x i32]. |
| 1198 | /// \returns A 64-bit integer vector of [2 x i32] containing the comparison | 1258 | /// \returns A 64-bit integer vector of [2 x i32] containing the comparison |
| 1199 | /// results. | 1259 | /// results. |
| 1200 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1260 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1201 | _mm_cmpeq_pi32(__m64 __m1, __m64 __m2) | 1261 | _mm_cmpeq_pi32(__m64 __m1, __m64 __m2) |
| 1202 | { | 1262 | { |
| 1203 | return (__m64)__builtin_ia32_pcmpeqd((__v2si)__m1, (__v2si)__m2); | 1263 | return (__m64)(((__v2si)__m1) == ((__v2si)__m2)); |
| 1204 | } | 1264 | } |
| 1205 | 1265 | ||
| 1206 | /// Compares the 8-bit integer elements of two 64-bit integer vectors of | 1266 | /// Compares the 8-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1219,10 +1279,12 @@ _mm_cmpeq_pi32(__m64 __m1, __m64 __m2) | ... | @@ -1219,10 +1279,12 @@ _mm_cmpeq_pi32(__m64 __m1, __m64 __m2) |
| 1219 | /// A 64-bit integer vector of [8 x i8]. | 1279 | /// A 64-bit integer vector of [8 x i8]. |
| 1220 | /// \returns A 64-bit integer vector of [8 x i8] containing the comparison | 1280 | /// \returns A 64-bit integer vector of [8 x i8] containing the comparison |
| 1221 | /// results. | 1281 | /// results. |
| 1222 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1282 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1223 | _mm_cmpgt_pi8(__m64 __m1, __m64 __m2) | 1283 | _mm_cmpgt_pi8(__m64 __m1, __m64 __m2) |
| 1224 | { | 1284 | { |
| 1225 | return (__m64)__builtin_ia32_pcmpgtb((__v8qi)__m1, (__v8qi)__m2); | 1285 | /* This function always performs a signed comparison, but __v8qi is a char |
| 1286 | which may be signed or unsigned, so use __v8qs. */ | ||
| 1287 | return (__m64)((__v8qs)__m1 > (__v8qs)__m2); | ||
| 1226 | } | 1288 | } |
| 1227 | 1289 | ||
| 1228 | /// Compares the 16-bit integer elements of two 64-bit integer vectors of | 1290 | /// Compares the 16-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1241,10 +1303,10 @@ _mm_cmpgt_pi8(__m64 __m1, __m64 __m2) | ... | @@ -1241,10 +1303,10 @@ _mm_cmpgt_pi8(__m64 __m1, __m64 __m2) |
| 1241 | /// A 64-bit integer vector of [4 x i16]. | 1303 | /// A 64-bit integer vector of [4 x i16]. |
| 1242 | /// \returns A 64-bit integer vector of [4 x i16] containing the comparison | 1304 | /// \returns A 64-bit integer vector of [4 x i16] containing the comparison |
| 1243 | /// results. | 1305 | /// results. |
| 1244 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1306 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1245 | _mm_cmpgt_pi16(__m64 __m1, __m64 __m2) | 1307 | _mm_cmpgt_pi16(__m64 __m1, __m64 __m2) |
| 1246 | { | 1308 | { |
| 1247 | return (__m64)__builtin_ia32_pcmpgtw((__v4hi)__m1, (__v4hi)__m2); | 1309 | return (__m64)((__v4hi)__m1 > (__v4hi)__m2); |
| 1248 | } | 1310 | } |
| 1249 | 1311 | ||
| 1250 | /// Compares the 32-bit integer elements of two 64-bit integer vectors of | 1312 | /// Compares the 32-bit integer elements of two 64-bit integer vectors of |
| ... | @@ -1263,10 +1325,10 @@ _mm_cmpgt_pi16(__m64 __m1, __m64 __m2) | ... | @@ -1263,10 +1325,10 @@ _mm_cmpgt_pi16(__m64 __m1, __m64 __m2) |
| 1263 | /// A 64-bit integer vector of [2 x i32]. | 1325 | /// A 64-bit integer vector of [2 x i32]. |
| 1264 | /// \returns A 64-bit integer vector of [2 x i32] containing the comparison | 1326 | /// \returns A 64-bit integer vector of [2 x i32] containing the comparison |
| 1265 | /// results. | 1327 | /// results. |
| 1266 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1328 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1267 | _mm_cmpgt_pi32(__m64 __m1, __m64 __m2) | 1329 | _mm_cmpgt_pi32(__m64 __m1, __m64 __m2) |
| 1268 | { | 1330 | { |
| 1269 | return (__m64)__builtin_ia32_pcmpgtd((__v2si)__m1, (__v2si)__m2); | 1331 | return (__m64)((__v2si)__m1 > (__v2si)__m2); |
| 1270 | } | 1332 | } |
| 1271 | 1333 | ||
| 1272 | /// Constructs a 64-bit integer vector initialized to zero. | 1334 | /// Constructs a 64-bit integer vector initialized to zero. |
| ... | @@ -1276,10 +1338,9 @@ _mm_cmpgt_pi32(__m64 __m1, __m64 __m2) | ... | @@ -1276,10 +1338,9 @@ _mm_cmpgt_pi32(__m64 __m1, __m64 __m2) |
| 1276 | /// This intrinsic corresponds to the <c> PXOR </c> instruction. | 1338 | /// This intrinsic corresponds to the <c> PXOR </c> instruction. |
| 1277 | /// | 1339 | /// |
| 1278 | /// \returns An initialized 64-bit integer vector with all elements set to zero. | 1340 | /// \returns An initialized 64-bit integer vector with all elements set to zero. |
| 1279 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1341 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1280 | _mm_setzero_si64(void) | 1342 | _mm_setzero_si64(void) { |
| 1281 | { | 1343 | return __extension__(__m64){0LL}; |
| 1282 | return __extension__ (__m64){ 0LL }; | ||
| 1283 | } | 1344 | } |
| 1284 | 1345 | ||
| 1285 | /// Constructs a 64-bit integer vector initialized with the specified | 1346 | /// Constructs a 64-bit integer vector initialized with the specified |
| ... | @@ -1297,10 +1358,9 @@ _mm_setzero_si64(void) | ... | @@ -1297,10 +1358,9 @@ _mm_setzero_si64(void) |
| 1297 | /// A 32-bit integer value used to initialize the lower 32 bits of the | 1358 | /// A 32-bit integer value used to initialize the lower 32 bits of the |
| 1298 | /// result. | 1359 | /// result. |
| 1299 | /// \returns An initialized 64-bit integer vector. | 1360 | /// \returns An initialized 64-bit integer vector. |
| 1300 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1361 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1301 | _mm_set_pi32(int __i1, int __i0) | 1362 | _mm_set_pi32(int __i1, int __i0) { |
| 1302 | { | 1363 | return __extension__(__m64)(__v2si){__i0, __i1}; |
| 1303 | return (__m64)__builtin_ia32_vec_init_v2si(__i0, __i1); | ||
| 1304 | } | 1364 | } |
| 1305 | 1365 | ||
| 1306 | /// Constructs a 64-bit integer vector initialized with the specified | 1366 | /// Constructs a 64-bit integer vector initialized with the specified |
| ... | @@ -1320,10 +1380,9 @@ _mm_set_pi32(int __i1, int __i0) | ... | @@ -1320,10 +1380,9 @@ _mm_set_pi32(int __i1, int __i0) |
| 1320 | /// \param __s0 | 1380 | /// \param __s0 |
| 1321 | /// A 16-bit integer value used to initialize bits [15:0] of the result. | 1381 | /// A 16-bit integer value used to initialize bits [15:0] of the result. |
| 1322 | /// \returns An initialized 64-bit integer vector. | 1382 | /// \returns An initialized 64-bit integer vector. |
| 1323 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1383 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1324 | _mm_set_pi16(short __s3, short __s2, short __s1, short __s0) | 1384 | _mm_set_pi16(short __s3, short __s2, short __s1, short __s0) { |
| 1325 | { | 1385 | return __extension__(__m64)(__v4hi){__s0, __s1, __s2, __s3}; |
| 1326 | return (__m64)__builtin_ia32_vec_init_v4hi(__s0, __s1, __s2, __s3); | ||
| 1327 | } | 1386 | } |
| 1328 | 1387 | ||
| 1329 | /// Constructs a 64-bit integer vector initialized with the specified | 1388 | /// Constructs a 64-bit integer vector initialized with the specified |
| ... | @@ -1351,12 +1410,11 @@ _mm_set_pi16(short __s3, short __s2, short __s1, short __s0) | ... | @@ -1351,12 +1410,11 @@ _mm_set_pi16(short __s3, short __s2, short __s1, short __s0) |
| 1351 | /// \param __b0 | 1410 | /// \param __b0 |
| 1352 | /// An 8-bit integer value used to initialize bits [7:0] of the result. | 1411 | /// An 8-bit integer value used to initialize bits [7:0] of the result. |
| 1353 | /// \returns An initialized 64-bit integer vector. | 1412 | /// \returns An initialized 64-bit integer vector. |
| 1354 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1413 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1355 | _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, | 1414 | _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, |
| 1356 | char __b1, char __b0) | 1415 | char __b1, char __b0) { |
| 1357 | { | 1416 | return __extension__(__m64)(__v8qi){__b0, __b1, __b2, __b3, |
| 1358 | return (__m64)__builtin_ia32_vec_init_v8qi(__b0, __b1, __b2, __b3, | 1417 | __b4, __b5, __b6, __b7}; |
| 1359 | __b4, __b5, __b6, __b7); | ||
| 1360 | } | 1418 | } |
| 1361 | 1419 | ||
| 1362 | /// Constructs a 64-bit integer vector of [2 x i32], with each of the | 1420 | /// Constructs a 64-bit integer vector of [2 x i32], with each of the |
| ... | @@ -1372,10 +1430,9 @@ _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, | ... | @@ -1372,10 +1430,9 @@ _mm_set_pi8(char __b7, char __b6, char __b5, char __b4, char __b3, char __b2, |
| 1372 | /// A 32-bit integer value used to initialize each vector element of the | 1430 | /// A 32-bit integer value used to initialize each vector element of the |
| 1373 | /// result. | 1431 | /// result. |
| 1374 | /// \returns An initialized 64-bit integer vector of [2 x i32]. | 1432 | /// \returns An initialized 64-bit integer vector of [2 x i32]. |
| 1375 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1433 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1376 | _mm_set1_pi32(int __i) | 1434 | _mm_set1_pi32(int __i) { |
| 1377 | { | 1435 | return _mm_set_pi32(__i, __i); |
| 1378 | return _mm_set_pi32(__i, __i); | ||
| 1379 | } | 1436 | } |
| 1380 | 1437 | ||
| 1381 | /// Constructs a 64-bit integer vector of [4 x i16], with each of the | 1438 | /// Constructs a 64-bit integer vector of [4 x i16], with each of the |
| ... | @@ -1391,10 +1448,9 @@ _mm_set1_pi32(int __i) | ... | @@ -1391,10 +1448,9 @@ _mm_set1_pi32(int __i) |
| 1391 | /// A 16-bit integer value used to initialize each vector element of the | 1448 | /// A 16-bit integer value used to initialize each vector element of the |
| 1392 | /// result. | 1449 | /// result. |
| 1393 | /// \returns An initialized 64-bit integer vector of [4 x i16]. | 1450 | /// \returns An initialized 64-bit integer vector of [4 x i16]. |
| 1394 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1451 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1395 | _mm_set1_pi16(short __w) | 1452 | _mm_set1_pi16(short __w) { |
| 1396 | { | 1453 | return _mm_set_pi16(__w, __w, __w, __w); |
| 1397 | return _mm_set_pi16(__w, __w, __w, __w); | ||
| 1398 | } | 1454 | } |
| 1399 | 1455 | ||
| 1400 | /// Constructs a 64-bit integer vector of [8 x i8], with each of the | 1456 | /// Constructs a 64-bit integer vector of [8 x i8], with each of the |
| ... | @@ -1409,10 +1465,9 @@ _mm_set1_pi16(short __w) | ... | @@ -1409,10 +1465,9 @@ _mm_set1_pi16(short __w) |
| 1409 | /// An 8-bit integer value used to initialize each vector element of the | 1465 | /// An 8-bit integer value used to initialize each vector element of the |
| 1410 | /// result. | 1466 | /// result. |
| 1411 | /// \returns An initialized 64-bit integer vector of [8 x i8]. | 1467 | /// \returns An initialized 64-bit integer vector of [8 x i8]. |
| 1412 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1468 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1413 | _mm_set1_pi8(char __b) | 1469 | _mm_set1_pi8(char __b) { |
| 1414 | { | 1470 | return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b); |
| 1415 | return _mm_set_pi8(__b, __b, __b, __b, __b, __b, __b, __b); | ||
| 1416 | } | 1471 | } |
| 1417 | 1472 | ||
| 1418 | /// Constructs a 64-bit integer vector, initialized in reverse order with | 1473 | /// Constructs a 64-bit integer vector, initialized in reverse order with |
| ... | @@ -1430,10 +1485,9 @@ _mm_set1_pi8(char __b) | ... | @@ -1430,10 +1485,9 @@ _mm_set1_pi8(char __b) |
| 1430 | /// A 32-bit integer value used to initialize the upper 32 bits of the | 1485 | /// A 32-bit integer value used to initialize the upper 32 bits of the |
| 1431 | /// result. | 1486 | /// result. |
| 1432 | /// \returns An initialized 64-bit integer vector. | 1487 | /// \returns An initialized 64-bit integer vector. |
| 1433 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1488 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1434 | _mm_setr_pi32(int __i0, int __i1) | 1489 | _mm_setr_pi32(int __i0, int __i1) { |
| 1435 | { | 1490 | return _mm_set_pi32(__i1, __i0); |
| 1436 | return _mm_set_pi32(__i1, __i0); | ||
| 1437 | } | 1491 | } |
| 1438 | 1492 | ||
| 1439 | /// Constructs a 64-bit integer vector, initialized in reverse order with | 1493 | /// Constructs a 64-bit integer vector, initialized in reverse order with |
| ... | @@ -1453,10 +1507,9 @@ _mm_setr_pi32(int __i0, int __i1) | ... | @@ -1453,10 +1507,9 @@ _mm_setr_pi32(int __i0, int __i1) |
| 1453 | /// \param __w3 | 1507 | /// \param __w3 |
| 1454 | /// A 16-bit integer value used to initialize bits [63:48] of the result. | 1508 | /// A 16-bit integer value used to initialize bits [63:48] of the result. |
| 1455 | /// \returns An initialized 64-bit integer vector. | 1509 | /// \returns An initialized 64-bit integer vector. |
| 1456 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1510 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1457 | _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) | 1511 | _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) { |
| 1458 | { | 1512 | return _mm_set_pi16(__w3, __w2, __w1, __w0); |
| 1459 | return _mm_set_pi16(__w3, __w2, __w1, __w0); | ||
| 1460 | } | 1513 | } |
| 1461 | 1514 | ||
| 1462 | /// Constructs a 64-bit integer vector, initialized in reverse order with | 1515 | /// Constructs a 64-bit integer vector, initialized in reverse order with |
| ... | @@ -1484,14 +1537,15 @@ _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) | ... | @@ -1484,14 +1537,15 @@ _mm_setr_pi16(short __w0, short __w1, short __w2, short __w3) |
| 1484 | /// \param __b7 | 1537 | /// \param __b7 |
| 1485 | /// An 8-bit integer value used to initialize bits [63:56] of the result. | 1538 | /// An 8-bit integer value used to initialize bits [63:56] of the result. |
| 1486 | /// \returns An initialized 64-bit integer vector. | 1539 | /// \returns An initialized 64-bit integer vector. |
| 1487 | static __inline__ __m64 __DEFAULT_FN_ATTRS | 1540 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR |
| 1488 | _mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, | 1541 | _mm_setr_pi8(char __b0, char __b1, char __b2, char __b3, char __b4, char __b5, |
| 1489 | char __b6, char __b7) | 1542 | char __b6, char __b7) { |
| 1490 | { | 1543 | return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0); |
| 1491 | return _mm_set_pi8(__b7, __b6, __b5, __b4, __b3, __b2, __b1, __b0); | ||
| 1492 | } | 1544 | } |
| 1493 | 1545 | ||
| 1494 | #undef __DEFAULT_FN_ATTRS | 1546 | #undef __anyext128 |
| 1547 | #undef __trunc64 | ||
| 1548 | #undef __DEFAULT_FN_ATTRS_SSE2 | ||
| 1495 | 1549 | ||
| 1496 | /* Aliases for compatibility. */ | 1550 | /* Aliases for compatibility. */ |
| 1497 | #define _m_empty _mm_empty | 1551 | #define _m_empty _mm_empty |
lib/include/module.modulemap+2-4| ... | @@ -66,6 +66,8 @@ module _Builtin_intrinsics [system] [extern_c] { | ... | @@ -66,6 +66,8 @@ module _Builtin_intrinsics [system] [extern_c] { |
| 66 | textual header "__wmmintrin_aes.h" | 66 | textual header "__wmmintrin_aes.h" |
| 67 | textual header "__wmmintrin_pclmul.h" | 67 | textual header "__wmmintrin_pclmul.h" |
| 68 | 68 | ||
| 69 | textual header "mm3dnow.h" | ||
| 70 | |||
| 69 | explicit module mm_malloc { | 71 | explicit module mm_malloc { |
| 70 | requires !freestanding | 72 | requires !freestanding |
| 71 | header "mm_malloc.h" | 73 | header "mm_malloc.h" |
| ... | @@ -122,10 +124,6 @@ module _Builtin_intrinsics [system] [extern_c] { | ... | @@ -122,10 +124,6 @@ module _Builtin_intrinsics [system] [extern_c] { |
| 122 | header "popcntintrin.h" | 124 | header "popcntintrin.h" |
| 123 | } | 125 | } |
| 124 | 126 | ||
| 125 | explicit module mm3dnow { | ||
| 126 | header "mm3dnow.h" | ||
| 127 | } | ||
| 128 | |||
| 129 | explicit module aes_pclmul { | 127 | explicit module aes_pclmul { |
| 130 | header "wmmintrin.h" | 128 | header "wmmintrin.h" |
| 131 | export aes | 129 | export aes |
lib/include/movrs_avx10_2_512intrin.h created+98| ... | @@ -0,0 +1,98 @@ | ||
| 1 | /*===----- movrs_avx10_2_512intrin.h - AVX10.2-512-MOVRS intrinsics --------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <movrs_avx10_2_512intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifndef __MOVRS_AVX10_2_512INTRIN_H | ||
| 15 | #define __MOVRS_AVX10_2_512INTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | /* Define the default attributes for the functions in this file. */ | ||
| 19 | #define __DEFAULT_FN_ATTRS512 \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 21 | __target__("movrs, avx10.2-512"), __min_vector_width__(512))) | ||
| 22 | |||
| 23 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 24 | _mm512_loadrs_epi8(void const *__A) { | ||
| 25 | return (__m512i)__builtin_ia32_vmovrsb512((const __v64qi *)(__A)); | ||
| 26 | } | ||
| 27 | |||
| 28 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 29 | _mm512_mask_loadrs_epi8(__m512i __W, __mmask64 __U, void const *__A) { | ||
| 30 | return (__m512i)__builtin_ia32_selectb_512( | ||
| 31 | (__mmask64)__U, (__v64qi)_mm512_loadrs_epi8(__A), (__v64qi)__W); | ||
| 32 | } | ||
| 33 | |||
| 34 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 35 | _mm512_maskz_loadrs_epi8(__mmask64 __U, void const *__A) { | ||
| 36 | return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, | ||
| 37 | (__v64qi)_mm512_loadrs_epi8(__A), | ||
| 38 | (__v64qi)_mm512_setzero_si512()); | ||
| 39 | } | ||
| 40 | |||
| 41 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 42 | _mm512_loadrs_epi32(void const *__A) { | ||
| 43 | return (__m512i)__builtin_ia32_vmovrsd512((const __v16si *)(__A)); | ||
| 44 | } | ||
| 45 | |||
| 46 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 47 | _mm512_mask_loadrs_epi32(__m512i __W, __mmask16 __U, void const *__A) { | ||
| 48 | return (__m512i)__builtin_ia32_selectd_512( | ||
| 49 | (__mmask16)__U, (__v16si)_mm512_loadrs_epi32(__A), (__v16si)__W); | ||
| 50 | } | ||
| 51 | |||
| 52 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 53 | _mm512_maskz_loadrs_epi32(__mmask16 __U, void const *__A) { | ||
| 54 | return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, | ||
| 55 | (__v16si)_mm512_loadrs_epi32(__A), | ||
| 56 | (__v16si)_mm512_setzero_si512()); | ||
| 57 | } | ||
| 58 | |||
| 59 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 60 | _mm512_loadrs_epi64(void const *__A) { | ||
| 61 | return (__m512i)__builtin_ia32_vmovrsq512((const __v8di *)(__A)); | ||
| 62 | } | ||
| 63 | |||
| 64 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 65 | _mm512_mask_loadrs_epi64(__m512i __W, __mmask8 __U, void const *__A) { | ||
| 66 | return (__m512i)__builtin_ia32_selectq_512( | ||
| 67 | (__mmask8)__U, (__v8di)_mm512_loadrs_epi64(__A), (__v8di)__W); | ||
| 68 | } | ||
| 69 | |||
| 70 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 71 | _mm512_maskz_loadrs_epi64(__mmask8 __U, void const *__A) { | ||
| 72 | return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, | ||
| 73 | (__v8di)_mm512_loadrs_epi64(__A), | ||
| 74 | (__v8di)_mm512_setzero_si512()); | ||
| 75 | } | ||
| 76 | |||
| 77 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 78 | _mm512_loadrs_epi16(void const *__A) { | ||
| 79 | return (__m512i)__builtin_ia32_vmovrsw512((const __v32hi *)(__A)); | ||
| 80 | } | ||
| 81 | |||
| 82 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 83 | _mm512_mask_loadrs_epi16(__m512i __W, __mmask32 __U, void const *__A) { | ||
| 84 | return (__m512i)__builtin_ia32_selectw_512( | ||
| 85 | (__mmask32)__U, (__v32hi)_mm512_loadrs_epi16(__A), (__v32hi)__W); | ||
| 86 | } | ||
| 87 | |||
| 88 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 89 | _mm512_maskz_loadrs_epi16(__mmask32 __U, void const *__A) { | ||
| 90 | return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, | ||
| 91 | (__v32hi)_mm512_loadrs_epi16(__A), | ||
| 92 | (__v32hi)_mm512_setzero_si512()); | ||
| 93 | } | ||
| 94 | |||
| 95 | #undef __DEFAULT_FN_ATTRS512 | ||
| 96 | |||
| 97 | #endif /* __x86_64__ */ | ||
| 98 | #endif /* __MOVRS_AVX10_2_512INTRIN_H */ | ||
lib/include/movrs_avx10_2intrin.h created+174| ... | @@ -0,0 +1,174 @@ | ||
| 1 | /*===--------- movrs_avx10_2intrin.h - AVX10.2-MOVRS intrinsics ------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error \ | ||
| 11 | "Never use <movrs_avx10_2intrin.h> directly; include <immintrin.h> instead." | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #ifndef __MOVRS_AVX10_2INTRIN_H | ||
| 15 | #define __MOVRS_AVX10_2INTRIN_H | ||
| 16 | #ifdef __x86_64__ | ||
| 17 | |||
| 18 | /* Define the default attributes for the functions in this file. */ | ||
| 19 | #define __DEFAULT_FN_ATTRS128 \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 21 | __target__("movrs,avx10.2-256"), __min_vector_width__(128))) | ||
| 22 | #define __DEFAULT_FN_ATTRS256 \ | ||
| 23 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 24 | __target__("movrs,avx10.2-256"), __min_vector_width__(256))) | ||
| 25 | |||
| 26 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 27 | _mm_loadrs_epi8(void const *__A) { | ||
| 28 | return (__m128i)__builtin_ia32_vmovrsb128((const __v16qi *)(__A)); | ||
| 29 | } | ||
| 30 | |||
| 31 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 32 | _mm_mask_loadrs_epi8(__m128i __W, __mmask16 __U, void const *__A) { | ||
| 33 | return (__m128i)__builtin_ia32_selectb_128( | ||
| 34 | (__mmask16)__U, (__v16qi)_mm_loadrs_epi8(__A), (__v16qi)__W); | ||
| 35 | } | ||
| 36 | |||
| 37 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 38 | _mm_maskz_loadrs_epi8(__mmask16 __U, void const *__A) { | ||
| 39 | return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, | ||
| 40 | (__v16qi)_mm_loadrs_epi8(__A), | ||
| 41 | (__v16qi)_mm_setzero_si128()); | ||
| 42 | } | ||
| 43 | |||
| 44 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 45 | _mm256_loadrs_epi8(void const *__A) { | ||
| 46 | return (__m256i)__builtin_ia32_vmovrsb256((const __v32qi *)(__A)); | ||
| 47 | } | ||
| 48 | |||
| 49 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 50 | _mm256_mask_loadrs_epi8(__m256i __W, __mmask32 __U, void const *__A) { | ||
| 51 | return (__m256i)__builtin_ia32_selectb_256( | ||
| 52 | (__mmask32)__U, (__v32qi)_mm256_loadrs_epi8(__A), (__v32qi)__W); | ||
| 53 | } | ||
| 54 | |||
| 55 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 56 | _mm256_maskz_loadrs_epi8(__mmask32 __U, void const *__A) { | ||
| 57 | return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, | ||
| 58 | (__v32qi)_mm256_loadrs_epi8(__A), | ||
| 59 | (__v32qi)_mm256_setzero_si256()); | ||
| 60 | } | ||
| 61 | |||
| 62 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 63 | _mm_loadrs_epi32(void const *__A) { | ||
| 64 | return (__m128i)__builtin_ia32_vmovrsd128((const __v4si *)(__A)); | ||
| 65 | } | ||
| 66 | |||
| 67 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 68 | _mm_mask_loadrs_epi32(__m128i __W, __mmask8 __U, void const *__A) { | ||
| 69 | return (__m128i)__builtin_ia32_selectd_128( | ||
| 70 | (__mmask8)__U, (__v4si)_mm_loadrs_epi32(__A), (__v4si)__W); | ||
| 71 | } | ||
| 72 | |||
| 73 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 74 | _mm_maskz_loadrs_epi32(__mmask8 __U, void const *__A) { | ||
| 75 | return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U, | ||
| 76 | (__v4si)_mm_loadrs_epi32(__A), | ||
| 77 | (__v4si)_mm_setzero_si128()); | ||
| 78 | } | ||
| 79 | |||
| 80 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 81 | _mm256_loadrs_epi32(void const *__A) { | ||
| 82 | return (__m256i)__builtin_ia32_vmovrsd256((const __v8si *)(__A)); | ||
| 83 | } | ||
| 84 | |||
| 85 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 86 | _mm256_mask_loadrs_epi32(__m256i __W, __mmask8 __U, void const *__A) { | ||
| 87 | return (__m256i)__builtin_ia32_selectd_256( | ||
| 88 | (__mmask8)__U, (__v8si)_mm256_loadrs_epi32(__A), (__v8si)__W); | ||
| 89 | } | ||
| 90 | |||
| 91 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 92 | _mm256_maskz_loadrs_epi32(__mmask8 __U, void const *__A) { | ||
| 93 | return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U, | ||
| 94 | (__v8si)_mm256_loadrs_epi32(__A), | ||
| 95 | (__v8si)_mm256_setzero_si256()); | ||
| 96 | } | ||
| 97 | |||
| 98 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 99 | _mm_loadrs_epi64(void const *__A) { | ||
| 100 | return (__m128i)__builtin_ia32_vmovrsq128((const __v2di *)(__A)); | ||
| 101 | } | ||
| 102 | |||
| 103 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 104 | _mm_mask_loadrs_epi64(__m128i __W, __mmask8 __U, void const *__A) { | ||
| 105 | return (__m128i)__builtin_ia32_selectq_128( | ||
| 106 | (__mmask8)__U, (__v2di)_mm_loadrs_epi64(__A), (__v2di)__W); | ||
| 107 | } | ||
| 108 | |||
| 109 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 110 | _mm_maskz_loadrs_epi64(__mmask8 __U, void const *__A) { | ||
| 111 | return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, | ||
| 112 | (__v2di)_mm_loadrs_epi64(__A), | ||
| 113 | (__v2di)_mm_setzero_si128()); | ||
| 114 | } | ||
| 115 | |||
| 116 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 117 | _mm256_loadrs_epi64(void const *__A) { | ||
| 118 | return (__m256i)__builtin_ia32_vmovrsq256((const __v4di *)(__A)); | ||
| 119 | } | ||
| 120 | |||
| 121 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 122 | _mm256_mask_loadrs_epi64(__m256i __W, __mmask8 __U, void const *__A) { | ||
| 123 | return (__m256i)__builtin_ia32_selectq_256( | ||
| 124 | (__mmask8)__U, (__v4di)_mm256_loadrs_epi64(__A), (__v4di)__W); | ||
| 125 | } | ||
| 126 | |||
| 127 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 128 | _mm256_maskz_loadrs_epi64(__mmask8 __U, void const *__A) { | ||
| 129 | return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, | ||
| 130 | (__v4di)_mm256_loadrs_epi64(__A), | ||
| 131 | (__v4di)_mm256_setzero_si256()); | ||
| 132 | } | ||
| 133 | |||
| 134 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 135 | _mm_loadrs_epi16(void const *__A) { | ||
| 136 | return (__m128i)__builtin_ia32_vmovrsw128((const __v8hi *)(__A)); | ||
| 137 | } | ||
| 138 | |||
| 139 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 140 | _mm_mask_loadrs_epi16(__m128i __W, __mmask8 __U, void const *__A) { | ||
| 141 | return (__m128i)__builtin_ia32_selectw_128( | ||
| 142 | (__mmask8)__U, (__v8hi)_mm_loadrs_epi16(__A), (__v8hi)__W); | ||
| 143 | } | ||
| 144 | |||
| 145 | static __inline__ __m128i __DEFAULT_FN_ATTRS128 | ||
| 146 | _mm_maskz_loadrs_epi16(__mmask8 __U, void const *__A) { | ||
| 147 | return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, | ||
| 148 | (__v8hi)_mm_loadrs_epi16(__A), | ||
| 149 | (__v8hi)_mm_setzero_si128()); | ||
| 150 | } | ||
| 151 | |||
| 152 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 153 | _mm256_loadrs_epi16(void const *__A) { | ||
| 154 | return (__m256i)__builtin_ia32_vmovrsw256((const __v16hi *)(__A)); | ||
| 155 | } | ||
| 156 | |||
| 157 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 158 | _mm256_mask_loadrs_epi16(__m256i __W, __mmask16 __U, void const *__A) { | ||
| 159 | return (__m256i)__builtin_ia32_selectw_256( | ||
| 160 | (__mmask16)__U, (__v16hi)_mm256_loadrs_epi16(__A), (__v16hi)__W); | ||
| 161 | } | ||
| 162 | |||
| 163 | static __inline__ __m256i __DEFAULT_FN_ATTRS256 | ||
| 164 | _mm256_maskz_loadrs_epi16(__mmask16 __U, void const *__A) { | ||
| 165 | return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, | ||
| 166 | (__v16hi)_mm256_loadrs_epi16(__A), | ||
| 167 | (__v16hi)_mm256_setzero_si256()); | ||
| 168 | } | ||
| 169 | |||
| 170 | #undef __DEFAULT_FN_ATTRS128 | ||
| 171 | #undef __DEFAULT_FN_ATTRS256 | ||
| 172 | |||
| 173 | #endif /* __x86_64__ */ | ||
| 174 | #endif /* __MOVRS_AVX10_2INTRIN_H */ | ||
lib/include/movrsintrin.h created+59| ... | @@ -0,0 +1,59 @@ | ||
| 1 | /*===---------------- movrsintrin.h - MOVRS intrinsics ----------------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===----------------------------------------------------------------------===*/ | ||
| 8 | |||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error "Never use <movrsintrin.h> directly; include <immintrin.h> instead." | ||
| 11 | #endif // __IMMINTRIN_H | ||
| 12 | |||
| 13 | #ifndef __MOVRSINTRIN_H | ||
| 14 | #define __MOVRSINTRIN_H | ||
| 15 | |||
| 16 | #define __DEFAULT_FN_ATTRS \ | ||
| 17 | __attribute__((__always_inline__, __nodebug__, __target__("movrs"))) | ||
| 18 | |||
| 19 | #ifdef __x86_64__ | ||
| 20 | static __inline__ char __DEFAULT_FN_ATTRS _movrs_i8(const void *__A) { | ||
| 21 | return (char)__builtin_ia32_movrsqi((const void *)__A); | ||
| 22 | } | ||
| 23 | |||
| 24 | static __inline__ short __DEFAULT_FN_ATTRS _movrs_i16(const void *__A) { | ||
| 25 | return (short)__builtin_ia32_movrshi((const void *)__A); | ||
| 26 | } | ||
| 27 | |||
| 28 | static __inline__ int __DEFAULT_FN_ATTRS _movrs_i32(const void *__A) { | ||
| 29 | return (int)__builtin_ia32_movrssi((const void *)__A); | ||
| 30 | } | ||
| 31 | |||
| 32 | static __inline__ long long __DEFAULT_FN_ATTRS _movrs_i64(const void *__A) { | ||
| 33 | return (long long)__builtin_ia32_movrsdi((const void *)__A); | ||
| 34 | } | ||
| 35 | #endif // __x86_64__ | ||
| 36 | |||
| 37 | // Loads a memory sequence containing the specified memory address into | ||
| 38 | /// the L3 data cache. Data will be shared (read/written) to by requesting | ||
| 39 | /// core and other cores. | ||
| 40 | /// | ||
| 41 | /// Note that the effect of this intrinsic is dependent on the processor | ||
| 42 | /// implementation. | ||
| 43 | /// | ||
| 44 | /// \headerfile <x86intrin.h> | ||
| 45 | /// | ||
| 46 | /// This intrinsic corresponds to the \c PREFETCHRS instruction. | ||
| 47 | /// | ||
| 48 | /// \param __P | ||
| 49 | /// A pointer specifying the memory address to be prefetched. | ||
| 50 | static __inline__ void __DEFAULT_FN_ATTRS | ||
| 51 | _m_prefetchrs(volatile const void *__P) { | ||
| 52 | #pragma clang diagnostic push | ||
| 53 | #pragma clang diagnostic ignored "-Wcast-qual" | ||
| 54 | __builtin_ia32_prefetchrs((const void *)__P); | ||
| 55 | #pragma clang diagnostic pop | ||
| 56 | } | ||
| 57 | |||
| 58 | #undef __DEFAULT_FN_ATTRS | ||
| 59 | #endif // __MOVRSINTRIN_H | ||
| \ No newline at end of file | |||
lib/include/openmp_wrappers/__clang_openmp_device_functions.h+4-5| ... | @@ -10,17 +10,15 @@ | ... | @@ -10,17 +10,15 @@ |
| 10 | #ifndef __CLANG_OPENMP_DEVICE_FUNCTIONS_H__ | 10 | #ifndef __CLANG_OPENMP_DEVICE_FUNCTIONS_H__ |
| 11 | #define __CLANG_OPENMP_DEVICE_FUNCTIONS_H__ | 11 | #define __CLANG_OPENMP_DEVICE_FUNCTIONS_H__ |
| 12 | 12 | ||
| 13 | #ifndef _OPENMP | ||
| 14 | #error "This file is for OpenMP compilation only." | ||
| 15 | #endif | ||
| 16 | |||
| 17 | #ifdef __cplusplus | 13 | #ifdef __cplusplus |
| 18 | extern "C" { | 14 | extern "C" { |
| 19 | #endif | 15 | #endif |
| 20 | 16 | ||
| 17 | #ifdef __NVPTX__ | ||
| 21 | #pragma omp begin declare variant match( \ | 18 | #pragma omp begin declare variant match( \ |
| 22 | device = {arch(nvptx, nvptx64)}, implementation = {extension(match_any)}) | 19 | device = {arch(nvptx, nvptx64)}, implementation = {extension(match_any)}) |
| 23 | 20 | ||
| 21 | #pragma push_macro("__CUDA__") | ||
| 24 | #define __CUDA__ | 22 | #define __CUDA__ |
| 25 | #define __OPENMP_NVPTX__ | 23 | #define __OPENMP_NVPTX__ |
| 26 | 24 | ||
| ... | @@ -31,9 +29,10 @@ extern "C" { | ... | @@ -31,9 +29,10 @@ extern "C" { |
| 31 | #include <__clang_cuda_device_functions.h> | 29 | #include <__clang_cuda_device_functions.h> |
| 32 | 30 | ||
| 33 | #undef __OPENMP_NVPTX__ | 31 | #undef __OPENMP_NVPTX__ |
| 34 | #undef __CUDA__ | 32 | #pragma pop_macro("__CUDA__") |
| 35 | 33 | ||
| 36 | #pragma omp end declare variant | 34 | #pragma omp end declare variant |
| 35 | #endif | ||
| 37 | 36 | ||
| 38 | #ifdef __AMDGCN__ | 37 | #ifdef __AMDGCN__ |
| 39 | #pragma omp begin declare variant match(device = {arch(amdgcn)}) | 38 | #pragma omp begin declare variant match(device = {arch(amdgcn)}) |
lib/include/openmp_wrappers/complex_cmath.h+7-2| ... | @@ -64,8 +64,13 @@ template <class _Tp> __DEVICE__ _Tp norm(const std::complex<_Tp> &__c) { | ... | @@ -64,8 +64,13 @@ template <class _Tp> __DEVICE__ _Tp norm(const std::complex<_Tp> &__c) { |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | // conj | 66 | // conj |
| 67 | 67 | #ifdef _GLIBCXX20_CONSTEXPR | |
| 68 | template <class _Tp> std::complex<_Tp> conj(const std::complex<_Tp> &__c) { | 68 | #define CXX20_CONSTEXPR_DEVICE __DEVICE__ |
| 69 | #else | ||
| 70 | #define CXX20_CONSTEXPR_DEVICE | ||
| 71 | #endif | ||
| 72 | template <class _Tp> | ||
| 73 | CXX20_CONSTEXPR_DEVICE std::complex<_Tp> conj(const std::complex<_Tp> &__c) { | ||
| 69 | return std::complex<_Tp>(__c.real(), -__c.imag()); | 74 | return std::complex<_Tp>(__c.real(), -__c.imag()); |
| 70 | } | 75 | } |
| 71 | 76 |
lib/include/pmmintrin.h+16-3| ... | @@ -17,9 +17,21 @@ | ... | @@ -17,9 +17,21 @@ |
| 17 | #include <emmintrin.h> | 17 | #include <emmintrin.h> |
| 18 | 18 | ||
| 19 | /* Define the default attributes for the functions in this file. */ | 19 | /* Define the default attributes for the functions in this file. */ |
| 20 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 20 | #define __DEFAULT_FN_ATTRS \ | 21 | #define __DEFAULT_FN_ATTRS \ |
| 21 | __attribute__((__always_inline__, __nodebug__, \ | 22 | __attribute__((__always_inline__, __nodebug__, \ |
| 22 | __target__("sse3,no-evex512"), __min_vector_width__(128))) | 23 | __target__("sse3,no-evex512"), __min_vector_width__(128))) |
| 24 | #else | ||
| 25 | #define __DEFAULT_FN_ATTRS \ | ||
| 26 | __attribute__((__always_inline__, __nodebug__, __target__("sse3"), \ | ||
| 27 | __min_vector_width__(128))) | ||
| 28 | #endif | ||
| 29 | |||
| 30 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 31 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | ||
| 32 | #else | ||
| 33 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 34 | #endif | ||
| 23 | 35 | ||
| 24 | /// Loads data from an unaligned memory location to elements in a 128-bit | 36 | /// Loads data from an unaligned memory location to elements in a 128-bit |
| 25 | /// vector. | 37 | /// vector. |
| ... | @@ -122,7 +134,7 @@ _mm_hsub_ps(__m128 __a, __m128 __b) | ... | @@ -122,7 +134,7 @@ _mm_hsub_ps(__m128 __a, __m128 __b) |
| 122 | /// destination. | 134 | /// destination. |
| 123 | /// \returns A 128-bit vector of [4 x float] containing the moved and duplicated | 135 | /// \returns A 128-bit vector of [4 x float] containing the moved and duplicated |
| 124 | /// values. | 136 | /// values. |
| 125 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 137 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 126 | _mm_movehdup_ps(__m128 __a) | 138 | _mm_movehdup_ps(__m128 __a) |
| 127 | { | 139 | { |
| 128 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 1, 1, 3, 3); | 140 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 1, 1, 3, 3); |
| ... | @@ -143,7 +155,7 @@ _mm_movehdup_ps(__m128 __a) | ... | @@ -143,7 +155,7 @@ _mm_movehdup_ps(__m128 __a) |
| 143 | /// destination. | 155 | /// destination. |
| 144 | /// \returns A 128-bit vector of [4 x float] containing the moved and duplicated | 156 | /// \returns A 128-bit vector of [4 x float] containing the moved and duplicated |
| 145 | /// values. | 157 | /// values. |
| 146 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 158 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 147 | _mm_moveldup_ps(__m128 __a) | 159 | _mm_moveldup_ps(__m128 __a) |
| 148 | { | 160 | { |
| 149 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 0, 2, 2); | 161 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 0, 2, 2); |
| ... | @@ -244,7 +256,7 @@ _mm_hsub_pd(__m128d __a, __m128d __b) | ... | @@ -244,7 +256,7 @@ _mm_hsub_pd(__m128d __a, __m128d __b) |
| 244 | /// [127:64] and [63:0] of the destination. | 256 | /// [127:64] and [63:0] of the destination. |
| 245 | /// \returns A 128-bit vector of [2 x double] containing the moved and | 257 | /// \returns A 128-bit vector of [2 x double] containing the moved and |
| 246 | /// duplicated values. | 258 | /// duplicated values. |
| 247 | static __inline__ __m128d __DEFAULT_FN_ATTRS | 259 | static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR |
| 248 | _mm_movedup_pd(__m128d __a) | 260 | _mm_movedup_pd(__m128d __a) |
| 249 | { | 261 | { |
| 250 | return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 0); | 262 | return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 0); |
| ... | @@ -297,5 +309,6 @@ _mm_mwait(unsigned __extensions, unsigned __hints) | ... | @@ -297,5 +309,6 @@ _mm_mwait(unsigned __extensions, unsigned __hints) |
| 297 | } | 309 | } |
| 298 | 310 | ||
| 299 | #undef __DEFAULT_FN_ATTRS | 311 | #undef __DEFAULT_FN_ATTRS |
| 312 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR | ||
| 300 | 313 | ||
| 301 | #endif /* __PMMINTRIN_H */ | 314 | #endif /* __PMMINTRIN_H */ |
lib/include/popcntintrin.h+7-7| ... | @@ -11,12 +11,13 @@ | ... | @@ -11,12 +11,13 @@ |
| 11 | #define __POPCNTINTRIN_H | 11 | #define __POPCNTINTRIN_H |
| 12 | 12 | ||
| 13 | /* Define the default attributes for the functions in this file. */ | 13 | /* Define the default attributes for the functions in this file. */ |
| 14 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("popcnt"))) | ||
| 15 | |||
| 16 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | 14 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 17 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | 15 | #define __DEFAULT_FN_ATTRS \ |
| 16 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 17 | __target__("popcnt"))) constexpr | ||
| 18 | #else | 18 | #else |
| 19 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS | 19 | #define __DEFAULT_FN_ATTRS \ |
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("popcnt"))) | ||
| 20 | #endif | 21 | #endif |
| 21 | 22 | ||
| 22 | /// Counts the number of bits in the source operand having a value of 1. | 23 | /// Counts the number of bits in the source operand having a value of 1. |
| ... | @@ -29,7 +30,7 @@ | ... | @@ -29,7 +30,7 @@ |
| 29 | /// An unsigned 32-bit integer operand. | 30 | /// An unsigned 32-bit integer operand. |
| 30 | /// \returns A 32-bit integer containing the number of bits with value 1 in the | 31 | /// \returns A 32-bit integer containing the number of bits with value 1 in the |
| 31 | /// source operand. | 32 | /// source operand. |
| 32 | static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR | 33 | static __inline__ int __DEFAULT_FN_ATTRS |
| 33 | _mm_popcnt_u32(unsigned int __A) | 34 | _mm_popcnt_u32(unsigned int __A) |
| 34 | { | 35 | { |
| 35 | return __builtin_popcount(__A); | 36 | return __builtin_popcount(__A); |
| ... | @@ -46,7 +47,7 @@ _mm_popcnt_u32(unsigned int __A) | ... | @@ -46,7 +47,7 @@ _mm_popcnt_u32(unsigned int __A) |
| 46 | /// An unsigned 64-bit integer operand. | 47 | /// An unsigned 64-bit integer operand. |
| 47 | /// \returns A 64-bit integer containing the number of bits with value 1 in the | 48 | /// \returns A 64-bit integer containing the number of bits with value 1 in the |
| 48 | /// source operand. | 49 | /// source operand. |
| 49 | static __inline__ long long __DEFAULT_FN_ATTRS_CONSTEXPR | 50 | static __inline__ long long __DEFAULT_FN_ATTRS |
| 50 | _mm_popcnt_u64(unsigned long long __A) | 51 | _mm_popcnt_u64(unsigned long long __A) |
| 51 | { | 52 | { |
| 52 | return __builtin_popcountll(__A); | 53 | return __builtin_popcountll(__A); |
| ... | @@ -54,6 +55,5 @@ _mm_popcnt_u64(unsigned long long __A) | ... | @@ -54,6 +55,5 @@ _mm_popcnt_u64(unsigned long long __A) |
| 54 | #endif /* __x86_64__ */ | 55 | #endif /* __x86_64__ */ |
| 55 | 56 | ||
| 56 | #undef __DEFAULT_FN_ATTRS | 57 | #undef __DEFAULT_FN_ATTRS |
| 57 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR | ||
| 58 | 58 | ||
| 59 | #endif /* __POPCNTINTRIN_H */ | 59 | #endif /* __POPCNTINTRIN_H */ |
lib/include/ptrauth.h+6| ... | @@ -42,6 +42,9 @@ typedef enum { | ... | @@ -42,6 +42,9 @@ typedef enum { |
| 42 | The extra data is always 0. */ | 42 | The extra data is always 0. */ |
| 43 | ptrauth_key_cxx_vtable_pointer = ptrauth_key_process_independent_data, | 43 | ptrauth_key_cxx_vtable_pointer = ptrauth_key_process_independent_data, |
| 44 | 44 | ||
| 45 | /* The key used to sign pointers in ELF .init_array/.fini_array. */ | ||
| 46 | ptrauth_key_init_fini_pointer = ptrauth_key_process_independent_code, | ||
| 47 | |||
| 45 | /* Other pointers signed under the ABI use private ABI rules. */ | 48 | /* Other pointers signed under the ABI use private ABI rules. */ |
| 46 | 49 | ||
| 47 | } ptrauth_key; | 50 | } ptrauth_key; |
| ... | @@ -253,6 +256,9 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; | ... | @@ -253,6 +256,9 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; |
| 253 | [[clang::ptrauth_vtable_pointer(key, address_discrimination, \ | 256 | [[clang::ptrauth_vtable_pointer(key, address_discrimination, \ |
| 254 | extra_discrimination)]] | 257 | extra_discrimination)]] |
| 255 | 258 | ||
| 259 | /* The value is ptrauth_string_discriminator("init_fini") */ | ||
| 260 | #define __ptrauth_init_fini_discriminator 0xd9d4 | ||
| 261 | |||
| 256 | #else | 262 | #else |
| 257 | 263 | ||
| 258 | #define ptrauth_strip(__value, __key) \ | 264 | #define ptrauth_strip(__value, __key) \ |
lib/include/riscv_corev_alu.h created+128| ... | @@ -0,0 +1,128 @@ | ||
| 1 | /*===---- riscv_corev_alu.h - CORE-V ALU intrinsics ------------------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===-----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __RISCV_COREV_ALU_H | ||
| 11 | #define __RISCV_COREV_ALU_H | ||
| 12 | |||
| 13 | #include <stdint.h> | ||
| 14 | |||
| 15 | #if defined(__cplusplus) | ||
| 16 | extern "C" { | ||
| 17 | #endif | ||
| 18 | |||
| 19 | #if defined(__riscv_xcvalu) | ||
| 20 | |||
| 21 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) | ||
| 22 | |||
| 23 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_abs(long a) { | ||
| 24 | return __builtin_abs(a); | ||
| 25 | } | ||
| 26 | |||
| 27 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_slet(long a, long b) { | ||
| 28 | return __builtin_riscv_cv_alu_slet(a, b); | ||
| 29 | } | ||
| 30 | |||
| 31 | static __inline__ long __DEFAULT_FN_ATTRS | ||
| 32 | __riscv_cv_alu_sletu(unsigned long a, unsigned long b) { | ||
| 33 | return __builtin_riscv_cv_alu_sletu(a, b); | ||
| 34 | } | ||
| 35 | |||
| 36 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_min(long a, long b) { | ||
| 37 | return __builtin_elementwise_min(a, b); | ||
| 38 | } | ||
| 39 | |||
| 40 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 41 | __riscv_cv_alu_minu(unsigned long a, unsigned long b) { | ||
| 42 | return __builtin_elementwise_min(a, b); | ||
| 43 | } | ||
| 44 | |||
| 45 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_max(long a, long b) { | ||
| 46 | return __builtin_elementwise_max(a, b); | ||
| 47 | } | ||
| 48 | |||
| 49 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 50 | __riscv_cv_alu_maxu(unsigned long a, unsigned long b) { | ||
| 51 | return __builtin_elementwise_max(a, b); | ||
| 52 | } | ||
| 53 | |||
| 54 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_exths(int16_t a) { | ||
| 55 | return __builtin_riscv_cv_alu_exths(a); | ||
| 56 | } | ||
| 57 | |||
| 58 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 59 | __riscv_cv_alu_exthz(uint16_t a) { | ||
| 60 | return __builtin_riscv_cv_alu_exthz(a); | ||
| 61 | } | ||
| 62 | |||
| 63 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_extbs(int8_t a) { | ||
| 64 | return __builtin_riscv_cv_alu_extbs(a); | ||
| 65 | } | ||
| 66 | |||
| 67 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 68 | __riscv_cv_alu_extbz(uint8_t a) { | ||
| 69 | return __builtin_riscv_cv_alu_extbz(a); | ||
| 70 | } | ||
| 71 | |||
| 72 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_clip(long a, | ||
| 73 | unsigned long b) { | ||
| 74 | return __builtin_riscv_cv_alu_clip(a, b); | ||
| 75 | } | ||
| 76 | |||
| 77 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 78 | __riscv_cv_alu_clipu(unsigned long a, unsigned long b) { | ||
| 79 | return __builtin_riscv_cv_alu_clipu(a, b); | ||
| 80 | } | ||
| 81 | |||
| 82 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addN(long a, long b, | ||
| 83 | uint8_t shft) { | ||
| 84 | return __builtin_riscv_cv_alu_addN(a, b, shft); | ||
| 85 | } | ||
| 86 | |||
| 87 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 88 | __riscv_cv_alu_adduN(unsigned long a, unsigned long b, uint8_t shft) { | ||
| 89 | return __builtin_riscv_cv_alu_adduN(a, b, shft); | ||
| 90 | } | ||
| 91 | |||
| 92 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addRN(long a, long b, | ||
| 93 | uint8_t shft) { | ||
| 94 | return __builtin_riscv_cv_alu_addRN(a, b, shft); | ||
| 95 | } | ||
| 96 | |||
| 97 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 98 | __riscv_cv_alu_adduRN(unsigned long a, unsigned long b, uint8_t shft) { | ||
| 99 | return __builtin_riscv_cv_alu_adduRN(a, b, shft); | ||
| 100 | } | ||
| 101 | |||
| 102 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subN(long a, long b, | ||
| 103 | uint8_t shft) { | ||
| 104 | return __builtin_riscv_cv_alu_subN(a, b, shft); | ||
| 105 | } | ||
| 106 | |||
| 107 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 108 | __riscv_cv_alu_subuN(unsigned long a, unsigned long b, uint8_t shft) { | ||
| 109 | return __builtin_riscv_cv_alu_subuN(a, b, shft); | ||
| 110 | } | ||
| 111 | |||
| 112 | static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subRN(long a, long b, | ||
| 113 | uint8_t shft) { | ||
| 114 | return __builtin_riscv_cv_alu_subRN(a, b, shft); | ||
| 115 | } | ||
| 116 | |||
| 117 | static __inline__ unsigned long __DEFAULT_FN_ATTRS | ||
| 118 | __riscv_cv_alu_subuRN(unsigned long a, unsigned long b, uint8_t shft) { | ||
| 119 | return __builtin_riscv_cv_alu_subuRN(a, b, shft); | ||
| 120 | } | ||
| 121 | |||
| 122 | #endif // defined(__riscv_xcvalu) | ||
| 123 | |||
| 124 | #if defined(__cplusplus) | ||
| 125 | } | ||
| 126 | #endif | ||
| 127 | |||
| 128 | #endif // define __RISCV_COREV_ALU_H | ||
lib/include/riscv_vector.h-1| ... | @@ -419,7 +419,6 @@ typedef __rvv_bfloat16m2x4_t vbfloat16m2x4_t; | ... | @@ -419,7 +419,6 @@ typedef __rvv_bfloat16m2x4_t vbfloat16m2x4_t; |
| 419 | typedef __rvv_bfloat16m4_t vbfloat16m4_t; | 419 | typedef __rvv_bfloat16m4_t vbfloat16m4_t; |
| 420 | typedef __rvv_bfloat16m4x2_t vbfloat16m4x2_t; | 420 | typedef __rvv_bfloat16m4x2_t vbfloat16m4x2_t; |
| 421 | typedef __rvv_bfloat16m8_t vbfloat16m8_t; | 421 | typedef __rvv_bfloat16m8_t vbfloat16m8_t; |
| 422 | #define __riscv_v_intrinsic_overloading 1 | ||
| 423 | 422 | ||
| 424 | #ifdef __cplusplus | 423 | #ifdef __cplusplus |
| 425 | } | 424 | } |
lib/include/sm4evexintrin.h created+32| ... | @@ -0,0 +1,32 @@ | ||
| 1 | /*===--------------- sm4evexintrin.h - SM4 EVEX intrinsics -----------------=== | ||
| 2 | * | ||
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| 4 | * See https://llvm.org/LICENSE.txt for license information. | ||
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| 6 | * | ||
| 7 | *===----------------------------------------------------------------------=== | ||
| 8 | */ | ||
| 9 | #ifndef __IMMINTRIN_H | ||
| 10 | #error "Never use <sm4evexintrin.h> directly; include <immintrin.h> instead." | ||
| 11 | #endif // __IMMINTRIN_H | ||
| 12 | |||
| 13 | #ifndef __SM4EVEXINTRIN_H | ||
| 14 | #define __SM4EVEXINTRIN_H | ||
| 15 | |||
| 16 | #define __DEFAULT_FN_ATTRS512 \ | ||
| 17 | __attribute__((__always_inline__, __nodebug__, \ | ||
| 18 | __target__("sm4,avx10.2-512"), __min_vector_width__(512))) | ||
| 19 | |||
| 20 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 21 | _mm512_sm4key4_epi32(__m512i __A, __m512i __B) { | ||
| 22 | return (__m512i)__builtin_ia32_vsm4key4512((__v16su)__A, (__v16su)__B); | ||
| 23 | } | ||
| 24 | |||
| 25 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 | ||
| 26 | _mm512_sm4rnds4_epi32(__m512i __A, __m512i __B) { | ||
| 27 | return (__m512i)__builtin_ia32_vsm4rnds4512((__v16su)__A, (__v16su)__B); | ||
| 28 | } | ||
| 29 | |||
| 30 | #undef __DEFAULT_FN_ATTRS512 | ||
| 31 | |||
| 32 | #endif // __SM4EVEXINTRIN_H | ||
lib/include/smmintrin.h+6| ... | @@ -17,9 +17,15 @@ | ... | @@ -17,9 +17,15 @@ |
| 17 | #include <tmmintrin.h> | 17 | #include <tmmintrin.h> |
| 18 | 18 | ||
| 19 | /* Define the default attributes for the functions in this file. */ | 19 | /* Define the default attributes for the functions in this file. */ |
| 20 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 20 | #define __DEFAULT_FN_ATTRS \ | 21 | #define __DEFAULT_FN_ATTRS \ |
| 21 | __attribute__((__always_inline__, __nodebug__, \ | 22 | __attribute__((__always_inline__, __nodebug__, \ |
| 22 | __target__("sse4.1,no-evex512"), __min_vector_width__(128))) | 23 | __target__("sse4.1,no-evex512"), __min_vector_width__(128))) |
| 24 | #else | ||
| 25 | #define __DEFAULT_FN_ATTRS \ | ||
| 26 | __attribute__((__always_inline__, __nodebug__, __target__("sse4.1"), \ | ||
| 27 | __min_vector_width__(128))) | ||
| 28 | #endif | ||
| 23 | 29 | ||
| 24 | /* SSE4 Rounding macros. */ | 30 | /* SSE4 Rounding macros. */ |
| 25 | #define _MM_FROUND_TO_NEAREST_INT 0x00 | 31 | #define _MM_FROUND_TO_NEAREST_INT 0x00 |
lib/include/stdalign.h-5| ... | @@ -10,10 +10,6 @@ | ... | @@ -10,10 +10,6 @@ |
| 10 | #ifndef __STDALIGN_H | 10 | #ifndef __STDALIGN_H |
| 11 | #define __STDALIGN_H | 11 | #define __STDALIGN_H |
| 12 | 12 | ||
| 13 | #if defined(__MVS__) && __has_include_next(<stdalign.h>) | ||
| 14 | #include_next <stdalign.h> | ||
| 15 | #else | ||
| 16 | |||
| 17 | #if defined(__cplusplus) || \ | 13 | #if defined(__cplusplus) || \ |
| 18 | (defined(__STDC_VERSION__) && __STDC_VERSION__ < 202311L) | 14 | (defined(__STDC_VERSION__) && __STDC_VERSION__ < 202311L) |
| 19 | #ifndef __cplusplus | 15 | #ifndef __cplusplus |
| ... | @@ -25,5 +21,4 @@ | ... | @@ -25,5 +21,4 @@ |
| 25 | #define __alignof_is_defined 1 | 21 | #define __alignof_is_defined 1 |
| 26 | #endif /* __STDC_VERSION__ */ | 22 | #endif /* __STDC_VERSION__ */ |
| 27 | 23 | ||
| 28 | #endif /* __MVS__ */ | ||
| 29 | #endif /* __STDALIGN_H */ | 24 | #endif /* __STDALIGN_H */ |
lib/include/tbmintrin.h+25-37| ... | @@ -15,63 +15,60 @@ | ... | @@ -15,63 +15,60 @@ |
| 15 | #define __TBMINTRIN_H | 15 | #define __TBMINTRIN_H |
| 16 | 16 | ||
| 17 | /* Define the default attributes for the functions in this file. */ | 17 | /* Define the default attributes for the functions in this file. */ |
| 18 | #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("tbm"))) | 18 | #if defined(__cplusplus) && (__cplusplus >= 201103L) |
| 19 | #define __DEFAULT_FN_ATTRS \ | ||
| 20 | __attribute__((__always_inline__, __nodebug__, __target__("tbm"))) constexpr | ||
| 21 | #else | ||
| 22 | #define __DEFAULT_FN_ATTRS \ | ||
| 23 | __attribute__((__always_inline__, __nodebug__, __target__("tbm"))) | ||
| 24 | #endif | ||
| 19 | 25 | ||
| 20 | #define __bextri_u32(a, b) \ | 26 | #define __bextri_u32(a, b) \ |
| 21 | ((unsigned int)__builtin_ia32_bextri_u32((unsigned int)(a), \ | 27 | ((unsigned int)__builtin_ia32_bextri_u32((unsigned int)(a), \ |
| 22 | (unsigned int)(b))) | 28 | (unsigned int)(b))) |
| 23 | 29 | ||
| 24 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 30 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 25 | __blcfill_u32(unsigned int __a) | 31 | __blcfill_u32(unsigned int __a) { |
| 26 | { | ||
| 27 | return __a & (__a + 1); | 32 | return __a & (__a + 1); |
| 28 | } | 33 | } |
| 29 | 34 | ||
| 30 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 35 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 31 | __blci_u32(unsigned int __a) | 36 | __blci_u32(unsigned int __a) { |
| 32 | { | ||
| 33 | return __a | ~(__a + 1); | 37 | return __a | ~(__a + 1); |
| 34 | } | 38 | } |
| 35 | 39 | ||
| 36 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 40 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 37 | __blcic_u32(unsigned int __a) | 41 | __blcic_u32(unsigned int __a) { |
| 38 | { | ||
| 39 | return ~__a & (__a + 1); | 42 | return ~__a & (__a + 1); |
| 40 | } | 43 | } |
| 41 | 44 | ||
| 42 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 45 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 43 | __blcmsk_u32(unsigned int __a) | 46 | __blcmsk_u32(unsigned int __a) { |
| 44 | { | ||
| 45 | return __a ^ (__a + 1); | 47 | return __a ^ (__a + 1); |
| 46 | } | 48 | } |
| 47 | 49 | ||
| 48 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 50 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 49 | __blcs_u32(unsigned int __a) | 51 | __blcs_u32(unsigned int __a) { |
| 50 | { | ||
| 51 | return __a | (__a + 1); | 52 | return __a | (__a + 1); |
| 52 | } | 53 | } |
| 53 | 54 | ||
| 54 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 55 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 55 | __blsfill_u32(unsigned int __a) | 56 | __blsfill_u32(unsigned int __a) { |
| 56 | { | ||
| 57 | return __a | (__a - 1); | 57 | return __a | (__a - 1); |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 60 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 61 | __blsic_u32(unsigned int __a) | 61 | __blsic_u32(unsigned int __a) { |
| 62 | { | ||
| 63 | return ~__a | (__a - 1); | 62 | return ~__a | (__a - 1); |
| 64 | } | 63 | } |
| 65 | 64 | ||
| 66 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 65 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 67 | __t1mskc_u32(unsigned int __a) | 66 | __t1mskc_u32(unsigned int __a) { |
| 68 | { | ||
| 69 | return ~__a | (__a + 1); | 67 | return ~__a | (__a + 1); |
| 70 | } | 68 | } |
| 71 | 69 | ||
| 72 | static __inline__ unsigned int __DEFAULT_FN_ATTRS | 70 | static __inline__ unsigned int __DEFAULT_FN_ATTRS |
| 73 | __tzmsk_u32(unsigned int __a) | 71 | __tzmsk_u32(unsigned int __a) { |
| 74 | { | ||
| 75 | return ~__a & (__a - 1); | 72 | return ~__a & (__a - 1); |
| 76 | } | 73 | } |
| 77 | 74 | ||
| ... | @@ -81,56 +78,47 @@ __tzmsk_u32(unsigned int __a) | ... | @@ -81,56 +78,47 @@ __tzmsk_u32(unsigned int __a) |
| 81 | (unsigned long long)(b))) | 78 | (unsigned long long)(b))) |
| 82 | 79 | ||
| 83 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 80 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 84 | __blcfill_u64(unsigned long long __a) | 81 | __blcfill_u64(unsigned long long __a) { |
| 85 | { | ||
| 86 | return __a & (__a + 1); | 82 | return __a & (__a + 1); |
| 87 | } | 83 | } |
| 88 | 84 | ||
| 89 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 85 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 90 | __blci_u64(unsigned long long __a) | 86 | __blci_u64(unsigned long long __a) { |
| 91 | { | ||
| 92 | return __a | ~(__a + 1); | 87 | return __a | ~(__a + 1); |
| 93 | } | 88 | } |
| 94 | 89 | ||
| 95 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 90 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 96 | __blcic_u64(unsigned long long __a) | 91 | __blcic_u64(unsigned long long __a) { |
| 97 | { | ||
| 98 | return ~__a & (__a + 1); | 92 | return ~__a & (__a + 1); |
| 99 | } | 93 | } |
| 100 | 94 | ||
| 101 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 95 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 102 | __blcmsk_u64(unsigned long long __a) | 96 | __blcmsk_u64(unsigned long long __a) { |
| 103 | { | ||
| 104 | return __a ^ (__a + 1); | 97 | return __a ^ (__a + 1); |
| 105 | } | 98 | } |
| 106 | 99 | ||
| 107 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 100 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 108 | __blcs_u64(unsigned long long __a) | 101 | __blcs_u64(unsigned long long __a) { |
| 109 | { | ||
| 110 | return __a | (__a + 1); | 102 | return __a | (__a + 1); |
| 111 | } | 103 | } |
| 112 | 104 | ||
| 113 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 105 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 114 | __blsfill_u64(unsigned long long __a) | 106 | __blsfill_u64(unsigned long long __a) { |
| 115 | { | ||
| 116 | return __a | (__a - 1); | 107 | return __a | (__a - 1); |
| 117 | } | 108 | } |
| 118 | 109 | ||
| 119 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 110 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 120 | __blsic_u64(unsigned long long __a) | 111 | __blsic_u64(unsigned long long __a) { |
| 121 | { | ||
| 122 | return ~__a | (__a - 1); | 112 | return ~__a | (__a - 1); |
| 123 | } | 113 | } |
| 124 | 114 | ||
| 125 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 115 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 126 | __t1mskc_u64(unsigned long long __a) | 116 | __t1mskc_u64(unsigned long long __a) { |
| 127 | { | ||
| 128 | return ~__a | (__a + 1); | 117 | return ~__a | (__a + 1); |
| 129 | } | 118 | } |
| 130 | 119 | ||
| 131 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS | 120 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS |
| 132 | __tzmsk_u64(unsigned long long __a) | 121 | __tzmsk_u64(unsigned long long __a) { |
| 133 | { | ||
| 134 | return ~__a & (__a - 1); | 122 | return ~__a & (__a - 1); |
| 135 | } | 123 | } |
| 136 | #endif | 124 | #endif |
lib/include/tmmintrin.h+64-38| ... | @@ -17,13 +17,21 @@ | ... | @@ -17,13 +17,21 @@ |
| 17 | #include <pmmintrin.h> | 17 | #include <pmmintrin.h> |
| 18 | 18 | ||
| 19 | /* Define the default attributes for the functions in this file. */ | 19 | /* Define the default attributes for the functions in this file. */ |
| 20 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 20 | #define __DEFAULT_FN_ATTRS \ | 21 | #define __DEFAULT_FN_ATTRS \ |
| 21 | __attribute__((__always_inline__, __nodebug__, \ | 22 | __attribute__((__always_inline__, __nodebug__, \ |
| 22 | __target__("ssse3,no-evex512"), __min_vector_width__(64))) | 23 | __target__("ssse3,no-evex512"), __min_vector_width__(128))) |
| 23 | #define __DEFAULT_FN_ATTRS_MMX \ | 24 | #else |
| 24 | __attribute__((__always_inline__, __nodebug__, \ | 25 | #define __DEFAULT_FN_ATTRS \ |
| 25 | __target__("mmx,ssse3,no-evex512"), \ | 26 | __attribute__((__always_inline__, __nodebug__, __target__("ssse3"), \ |
| 26 | __min_vector_width__(64))) | 27 | __min_vector_width__(128))) |
| 28 | #endif | ||
| 29 | |||
| 30 | #define __trunc64(x) \ | ||
| 31 | (__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0) | ||
| 32 | #define __anyext128(x) \ | ||
| 33 | (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \ | ||
| 34 | 1, -1, -1) | ||
| 27 | 35 | ||
| 28 | /// Computes the absolute value of each of the packed 8-bit signed | 36 | /// Computes the absolute value of each of the packed 8-bit signed |
| 29 | /// integers in the source operand and stores the 8-bit unsigned integer | 37 | /// integers in the source operand and stores the 8-bit unsigned integer |
| ... | @@ -37,10 +45,10 @@ | ... | @@ -37,10 +45,10 @@ |
| 37 | /// A 64-bit vector of [8 x i8]. | 45 | /// A 64-bit vector of [8 x i8]. |
| 38 | /// \returns A 64-bit integer vector containing the absolute values of the | 46 | /// \returns A 64-bit integer vector containing the absolute values of the |
| 39 | /// elements in the operand. | 47 | /// elements in the operand. |
| 40 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 48 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 41 | _mm_abs_pi8(__m64 __a) | 49 | _mm_abs_pi8(__m64 __a) |
| 42 | { | 50 | { |
| 43 | return (__m64)__builtin_ia32_pabsb((__v8qi)__a); | 51 | return (__m64)__builtin_elementwise_abs((__v8qs)__a); |
| 44 | } | 52 | } |
| 45 | 53 | ||
| 46 | /// Computes the absolute value of each of the packed 8-bit signed | 54 | /// Computes the absolute value of each of the packed 8-bit signed |
| ... | @@ -73,10 +81,10 @@ _mm_abs_epi8(__m128i __a) | ... | @@ -73,10 +81,10 @@ _mm_abs_epi8(__m128i __a) |
| 73 | /// A 64-bit vector of [4 x i16]. | 81 | /// A 64-bit vector of [4 x i16]. |
| 74 | /// \returns A 64-bit integer vector containing the absolute values of the | 82 | /// \returns A 64-bit integer vector containing the absolute values of the |
| 75 | /// elements in the operand. | 83 | /// elements in the operand. |
| 76 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 84 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 77 | _mm_abs_pi16(__m64 __a) | 85 | _mm_abs_pi16(__m64 __a) |
| 78 | { | 86 | { |
| 79 | return (__m64)__builtin_ia32_pabsw((__v4hi)__a); | 87 | return (__m64)__builtin_elementwise_abs((__v4hi)__a); |
| 80 | } | 88 | } |
| 81 | 89 | ||
| 82 | /// Computes the absolute value of each of the packed 16-bit signed | 90 | /// Computes the absolute value of each of the packed 16-bit signed |
| ... | @@ -109,10 +117,10 @@ _mm_abs_epi16(__m128i __a) | ... | @@ -109,10 +117,10 @@ _mm_abs_epi16(__m128i __a) |
| 109 | /// A 64-bit vector of [2 x i32]. | 117 | /// A 64-bit vector of [2 x i32]. |
| 110 | /// \returns A 64-bit integer vector containing the absolute values of the | 118 | /// \returns A 64-bit integer vector containing the absolute values of the |
| 111 | /// elements in the operand. | 119 | /// elements in the operand. |
| 112 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 120 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 113 | _mm_abs_pi32(__m64 __a) | 121 | _mm_abs_pi32(__m64 __a) |
| 114 | { | 122 | { |
| 115 | return (__m64)__builtin_ia32_pabsd((__v2si)__a); | 123 | return (__m64)__builtin_elementwise_abs((__v2si)__a); |
| 116 | } | 124 | } |
| 117 | 125 | ||
| 118 | /// Computes the absolute value of each of the packed 32-bit signed | 126 | /// Computes the absolute value of each of the packed 32-bit signed |
| ... | @@ -177,7 +185,10 @@ _mm_abs_epi32(__m128i __a) | ... | @@ -177,7 +185,10 @@ _mm_abs_epi32(__m128i __a) |
| 177 | /// \returns A 64-bit integer vector containing the concatenated right-shifted | 185 | /// \returns A 64-bit integer vector containing the concatenated right-shifted |
| 178 | /// value. | 186 | /// value. |
| 179 | #define _mm_alignr_pi8(a, b, n) \ | 187 | #define _mm_alignr_pi8(a, b, n) \ |
| 180 | ((__m64)__builtin_ia32_palignr((__v8qi)(__m64)(a), (__v8qi)(__m64)(b), (n))) | 188 | ((__m64)__builtin_shufflevector( \ |
| 189 | __builtin_ia32_psrldqi128_byteshift( \ | ||
| 190 | __builtin_shufflevector((__v1di)(a), (__v1di)(b), 1, 0), \ | ||
| 191 | (n)), __extension__ (__v2di){}, 0)) | ||
| 181 | 192 | ||
| 182 | /// Horizontally adds the adjacent pairs of values contained in 2 packed | 193 | /// Horizontally adds the adjacent pairs of values contained in 2 packed |
| 183 | /// 128-bit vectors of [8 x i16]. | 194 | /// 128-bit vectors of [8 x i16]. |
| ... | @@ -242,10 +253,11 @@ _mm_hadd_epi32(__m128i __a, __m128i __b) | ... | @@ -242,10 +253,11 @@ _mm_hadd_epi32(__m128i __a, __m128i __b) |
| 242 | /// destination. | 253 | /// destination. |
| 243 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal sums of both | 254 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal sums of both |
| 244 | /// operands. | 255 | /// operands. |
| 245 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 256 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 246 | _mm_hadd_pi16(__m64 __a, __m64 __b) | 257 | _mm_hadd_pi16(__m64 __a, __m64 __b) |
| 247 | { | 258 | { |
| 248 | return (__m64)__builtin_ia32_phaddw((__v4hi)__a, (__v4hi)__b); | 259 | return __trunc64(__builtin_ia32_phaddw128( |
| 260 | (__v8hi)__builtin_shufflevector(__a, __b, 0, 1), (__v8hi){})); | ||
| 249 | } | 261 | } |
| 250 | 262 | ||
| 251 | /// Horizontally adds the adjacent pairs of values contained in 2 packed | 263 | /// Horizontally adds the adjacent pairs of values contained in 2 packed |
| ... | @@ -265,10 +277,11 @@ _mm_hadd_pi16(__m64 __a, __m64 __b) | ... | @@ -265,10 +277,11 @@ _mm_hadd_pi16(__m64 __a, __m64 __b) |
| 265 | /// destination. | 277 | /// destination. |
| 266 | /// \returns A 64-bit vector of [2 x i32] containing the horizontal sums of both | 278 | /// \returns A 64-bit vector of [2 x i32] containing the horizontal sums of both |
| 267 | /// operands. | 279 | /// operands. |
| 268 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 280 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 269 | _mm_hadd_pi32(__m64 __a, __m64 __b) | 281 | _mm_hadd_pi32(__m64 __a, __m64 __b) |
| 270 | { | 282 | { |
| 271 | return (__m64)__builtin_ia32_phaddd((__v2si)__a, (__v2si)__b); | 283 | return __trunc64(__builtin_ia32_phaddd128( |
| 284 | (__v4si)__builtin_shufflevector(__a, __b, 0, 1), (__v4si){})); | ||
| 272 | } | 285 | } |
| 273 | 286 | ||
| 274 | /// Horizontally adds, with saturation, the adjacent pairs of values contained | 287 | /// Horizontally adds, with saturation, the adjacent pairs of values contained |
| ... | @@ -317,10 +330,11 @@ _mm_hadds_epi16(__m128i __a, __m128i __b) | ... | @@ -317,10 +330,11 @@ _mm_hadds_epi16(__m128i __a, __m128i __b) |
| 317 | /// destination. | 330 | /// destination. |
| 318 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated | 331 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated |
| 319 | /// sums of both operands. | 332 | /// sums of both operands. |
| 320 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 333 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 321 | _mm_hadds_pi16(__m64 __a, __m64 __b) | 334 | _mm_hadds_pi16(__m64 __a, __m64 __b) |
| 322 | { | 335 | { |
| 323 | return (__m64)__builtin_ia32_phaddsw((__v4hi)__a, (__v4hi)__b); | 336 | return __trunc64(__builtin_ia32_phaddsw128( |
| 337 | (__v8hi)__builtin_shufflevector(__a, __b, 0, 1), (__v8hi){})); | ||
| 324 | } | 338 | } |
| 325 | 339 | ||
| 326 | /// Horizontally subtracts the adjacent pairs of values contained in 2 | 340 | /// Horizontally subtracts the adjacent pairs of values contained in 2 |
| ... | @@ -386,10 +400,11 @@ _mm_hsub_epi32(__m128i __a, __m128i __b) | ... | @@ -386,10 +400,11 @@ _mm_hsub_epi32(__m128i __a, __m128i __b) |
| 386 | /// the destination. | 400 | /// the destination. |
| 387 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal differences | 401 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal differences |
| 388 | /// of both operands. | 402 | /// of both operands. |
| 389 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 403 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 390 | _mm_hsub_pi16(__m64 __a, __m64 __b) | 404 | _mm_hsub_pi16(__m64 __a, __m64 __b) |
| 391 | { | 405 | { |
| 392 | return (__m64)__builtin_ia32_phsubw((__v4hi)__a, (__v4hi)__b); | 406 | return __trunc64(__builtin_ia32_phsubw128( |
| 407 | (__v8hi)__builtin_shufflevector(__a, __b, 0, 1), (__v8hi){})); | ||
| 393 | } | 408 | } |
| 394 | 409 | ||
| 395 | /// Horizontally subtracts the adjacent pairs of values contained in 2 | 410 | /// Horizontally subtracts the adjacent pairs of values contained in 2 |
| ... | @@ -409,10 +424,11 @@ _mm_hsub_pi16(__m64 __a, __m64 __b) | ... | @@ -409,10 +424,11 @@ _mm_hsub_pi16(__m64 __a, __m64 __b) |
| 409 | /// the destination. | 424 | /// the destination. |
| 410 | /// \returns A 64-bit vector of [2 x i32] containing the horizontal differences | 425 | /// \returns A 64-bit vector of [2 x i32] containing the horizontal differences |
| 411 | /// of both operands. | 426 | /// of both operands. |
| 412 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 427 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 413 | _mm_hsub_pi32(__m64 __a, __m64 __b) | 428 | _mm_hsub_pi32(__m64 __a, __m64 __b) |
| 414 | { | 429 | { |
| 415 | return (__m64)__builtin_ia32_phsubd((__v2si)__a, (__v2si)__b); | 430 | return __trunc64(__builtin_ia32_phsubd128( |
| 431 | (__v4si)__builtin_shufflevector(__a, __b, 0, 1), (__v4si){})); | ||
| 416 | } | 432 | } |
| 417 | 433 | ||
| 418 | /// Horizontally subtracts, with saturation, the adjacent pairs of values | 434 | /// Horizontally subtracts, with saturation, the adjacent pairs of values |
| ... | @@ -461,10 +477,11 @@ _mm_hsubs_epi16(__m128i __a, __m128i __b) | ... | @@ -461,10 +477,11 @@ _mm_hsubs_epi16(__m128i __a, __m128i __b) |
| 461 | /// the destination. | 477 | /// the destination. |
| 462 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated | 478 | /// \returns A 64-bit vector of [4 x i16] containing the horizontal saturated |
| 463 | /// differences of both operands. | 479 | /// differences of both operands. |
| 464 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 480 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 465 | _mm_hsubs_pi16(__m64 __a, __m64 __b) | 481 | _mm_hsubs_pi16(__m64 __a, __m64 __b) |
| 466 | { | 482 | { |
| 467 | return (__m64)__builtin_ia32_phsubsw((__v4hi)__a, (__v4hi)__b); | 483 | return __trunc64(__builtin_ia32_phsubsw128( |
| 484 | (__v8hi)__builtin_shufflevector(__a, __b, 0, 1), (__v8hi){})); | ||
| 468 | } | 485 | } |
| 469 | 486 | ||
| 470 | /// Multiplies corresponding pairs of packed 8-bit unsigned integer | 487 | /// Multiplies corresponding pairs of packed 8-bit unsigned integer |
| ... | @@ -525,10 +542,11 @@ _mm_maddubs_epi16(__m128i __a, __m128i __b) | ... | @@ -525,10 +542,11 @@ _mm_maddubs_epi16(__m128i __a, __m128i __b) |
| 525 | /// \a R1 := (\a __a2 * \a __b2) + (\a __a3 * \a __b3) \n | 542 | /// \a R1 := (\a __a2 * \a __b2) + (\a __a3 * \a __b3) \n |
| 526 | /// \a R2 := (\a __a4 * \a __b4) + (\a __a5 * \a __b5) \n | 543 | /// \a R2 := (\a __a4 * \a __b4) + (\a __a5 * \a __b5) \n |
| 527 | /// \a R3 := (\a __a6 * \a __b6) + (\a __a7 * \a __b7) | 544 | /// \a R3 := (\a __a6 * \a __b6) + (\a __a7 * \a __b7) |
| 528 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 545 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 529 | _mm_maddubs_pi16(__m64 __a, __m64 __b) | 546 | _mm_maddubs_pi16(__m64 __a, __m64 __b) |
| 530 | { | 547 | { |
| 531 | return (__m64)__builtin_ia32_pmaddubsw((__v8qi)__a, (__v8qi)__b); | 548 | return __trunc64(__builtin_ia32_pmaddubsw128((__v16qi)__anyext128(__a), |
| 549 | (__v16qi)__anyext128(__b))); | ||
| 532 | } | 550 | } |
| 533 | 551 | ||
| 534 | /// Multiplies packed 16-bit signed integer values, truncates the 32-bit | 552 | /// Multiplies packed 16-bit signed integer values, truncates the 32-bit |
| ... | @@ -565,10 +583,11 @@ _mm_mulhrs_epi16(__m128i __a, __m128i __b) | ... | @@ -565,10 +583,11 @@ _mm_mulhrs_epi16(__m128i __a, __m128i __b) |
| 565 | /// A 64-bit vector of [4 x i16] containing one of the source operands. | 583 | /// A 64-bit vector of [4 x i16] containing one of the source operands. |
| 566 | /// \returns A 64-bit vector of [4 x i16] containing the rounded and scaled | 584 | /// \returns A 64-bit vector of [4 x i16] containing the rounded and scaled |
| 567 | /// products of both operands. | 585 | /// products of both operands. |
| 568 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 586 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 569 | _mm_mulhrs_pi16(__m64 __a, __m64 __b) | 587 | _mm_mulhrs_pi16(__m64 __a, __m64 __b) |
| 570 | { | 588 | { |
| 571 | return (__m64)__builtin_ia32_pmulhrsw((__v4hi)__a, (__v4hi)__b); | 589 | return __trunc64(__builtin_ia32_pmulhrsw128((__v8hi)__anyext128(__a), |
| 590 | (__v8hi)__anyext128(__b))); | ||
| 572 | } | 591 | } |
| 573 | 592 | ||
| 574 | /// Copies the 8-bit integers from a 128-bit integer vector to the | 593 | /// Copies the 8-bit integers from a 128-bit integer vector to the |
| ... | @@ -614,12 +633,15 @@ _mm_shuffle_epi8(__m128i __a, __m128i __b) | ... | @@ -614,12 +633,15 @@ _mm_shuffle_epi8(__m128i __a, __m128i __b) |
| 614 | /// 1: Clear the corresponding byte in the destination. \n | 633 | /// 1: Clear the corresponding byte in the destination. \n |
| 615 | /// 0: Copy the selected source byte to the corresponding byte in the | 634 | /// 0: Copy the selected source byte to the corresponding byte in the |
| 616 | /// destination. \n | 635 | /// destination. \n |
| 617 | /// Bits [3:0] select the source byte to be copied. | 636 | /// Bits [2:0] select the source byte to be copied. |
| 618 | /// \returns A 64-bit integer vector containing the copied or cleared values. | 637 | /// \returns A 64-bit integer vector containing the copied or cleared values. |
| 619 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 638 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 620 | _mm_shuffle_pi8(__m64 __a, __m64 __b) | 639 | _mm_shuffle_pi8(__m64 __a, __m64 __b) |
| 621 | { | 640 | { |
| 622 | return (__m64)__builtin_ia32_pshufb((__v8qi)__a, (__v8qi)__b); | 641 | return __trunc64(__builtin_ia32_pshufb128( |
| 642 | (__v16qi)__builtin_shufflevector( | ||
| 643 | (__v2si)(__a), __extension__ (__v2si){}, 0, 1, 0, 1), | ||
| 644 | (__v16qi)__anyext128(__b))); | ||
| 623 | } | 645 | } |
| 624 | 646 | ||
| 625 | /// For each 8-bit integer in the first source operand, perform one of | 647 | /// For each 8-bit integer in the first source operand, perform one of |
| ... | @@ -720,10 +742,11 @@ _mm_sign_epi32(__m128i __a, __m128i __b) | ... | @@ -720,10 +742,11 @@ _mm_sign_epi32(__m128i __a, __m128i __b) |
| 720 | /// A 64-bit integer vector containing control bytes corresponding to | 742 | /// A 64-bit integer vector containing control bytes corresponding to |
| 721 | /// positions in the destination. | 743 | /// positions in the destination. |
| 722 | /// \returns A 64-bit integer vector containing the resultant values. | 744 | /// \returns A 64-bit integer vector containing the resultant values. |
| 723 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 745 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 724 | _mm_sign_pi8(__m64 __a, __m64 __b) | 746 | _mm_sign_pi8(__m64 __a, __m64 __b) |
| 725 | { | 747 | { |
| 726 | return (__m64)__builtin_ia32_psignb((__v8qi)__a, (__v8qi)__b); | 748 | return __trunc64(__builtin_ia32_psignb128((__v16qi)__anyext128(__a), |
| 749 | (__v16qi)__anyext128(__b))); | ||
| 727 | } | 750 | } |
| 728 | 751 | ||
| 729 | /// For each 16-bit integer in the first source operand, perform one of | 752 | /// For each 16-bit integer in the first source operand, perform one of |
| ... | @@ -746,10 +769,11 @@ _mm_sign_pi8(__m64 __a, __m64 __b) | ... | @@ -746,10 +769,11 @@ _mm_sign_pi8(__m64 __a, __m64 __b) |
| 746 | /// A 64-bit integer vector containing control words corresponding to | 769 | /// A 64-bit integer vector containing control words corresponding to |
| 747 | /// positions in the destination. | 770 | /// positions in the destination. |
| 748 | /// \returns A 64-bit integer vector containing the resultant values. | 771 | /// \returns A 64-bit integer vector containing the resultant values. |
| 749 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 772 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 750 | _mm_sign_pi16(__m64 __a, __m64 __b) | 773 | _mm_sign_pi16(__m64 __a, __m64 __b) |
| 751 | { | 774 | { |
| 752 | return (__m64)__builtin_ia32_psignw((__v4hi)__a, (__v4hi)__b); | 775 | return __trunc64(__builtin_ia32_psignw128((__v8hi)__anyext128(__a), |
| 776 | (__v8hi)__anyext128(__b))); | ||
| 753 | } | 777 | } |
| 754 | 778 | ||
| 755 | /// For each 32-bit integer in the first source operand, perform one of | 779 | /// For each 32-bit integer in the first source operand, perform one of |
| ... | @@ -772,13 +796,15 @@ _mm_sign_pi16(__m64 __a, __m64 __b) | ... | @@ -772,13 +796,15 @@ _mm_sign_pi16(__m64 __a, __m64 __b) |
| 772 | /// A 64-bit integer vector containing two control doublewords corresponding | 796 | /// A 64-bit integer vector containing two control doublewords corresponding |
| 773 | /// to positions in the destination. | 797 | /// to positions in the destination. |
| 774 | /// \returns A 64-bit integer vector containing the resultant values. | 798 | /// \returns A 64-bit integer vector containing the resultant values. |
| 775 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 799 | static __inline__ __m64 __DEFAULT_FN_ATTRS |
| 776 | _mm_sign_pi32(__m64 __a, __m64 __b) | 800 | _mm_sign_pi32(__m64 __a, __m64 __b) |
| 777 | { | 801 | { |
| 778 | return (__m64)__builtin_ia32_psignd((__v2si)__a, (__v2si)__b); | 802 | return __trunc64(__builtin_ia32_psignd128((__v4si)__anyext128(__a), |
| 803 | (__v4si)__anyext128(__b))); | ||
| 779 | } | 804 | } |
| 780 | 805 | ||
| 806 | #undef __anyext128 | ||
| 807 | #undef __trunc64 | ||
| 781 | #undef __DEFAULT_FN_ATTRS | 808 | #undef __DEFAULT_FN_ATTRS |
| 782 | #undef __DEFAULT_FN_ATTRS_MMX | ||
| 783 | 809 | ||
| 784 | #endif /* __TMMINTRIN_H */ | 810 | #endif /* __TMMINTRIN_H */ |
lib/include/vecintrin.h+1778-60| ... | @@ -468,6 +468,27 @@ vec_perm(__vector __bool long long __a, __vector __bool long long __b, | ... | @@ -468,6 +468,27 @@ vec_perm(__vector __bool long long __a, __vector __bool long long __b, |
| 468 | (__vector unsigned char)__a, (__vector unsigned char)__b, __c); | 468 | (__vector unsigned char)__a, (__vector unsigned char)__b, __c); |
| 469 | } | 469 | } |
| 470 | 470 | ||
| 471 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 472 | vec_perm(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 473 | __vector unsigned char __c) { | ||
| 474 | return (__vector signed __int128)__builtin_s390_vperm( | ||
| 475 | (__vector unsigned char)__a, (__vector unsigned char)__b, __c); | ||
| 476 | } | ||
| 477 | |||
| 478 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 479 | vec_perm(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 480 | __vector unsigned char __c) { | ||
| 481 | return (__vector unsigned __int128)__builtin_s390_vperm( | ||
| 482 | (__vector unsigned char)__a, (__vector unsigned char)__b, __c); | ||
| 483 | } | ||
| 484 | |||
| 485 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 486 | vec_perm(__vector __bool __int128 __a, __vector __bool __int128 __b, | ||
| 487 | __vector unsigned char __c) { | ||
| 488 | return (__vector __bool __int128)__builtin_s390_vperm( | ||
| 489 | (__vector unsigned char)__a, (__vector unsigned char)__b, __c); | ||
| 490 | } | ||
| 491 | |||
| 471 | #if __ARCH__ >= 12 | 492 | #if __ARCH__ >= 12 |
| 472 | static inline __ATTRS_o_ai __vector float | 493 | static inline __ATTRS_o_ai __vector float |
| 473 | vec_perm(__vector float __a, __vector float __b, | 494 | vec_perm(__vector float __a, __vector float __b, |
| ... | @@ -514,9 +535,19 @@ vec_permi(__vector double __a, __vector double __b, int __c) | ... | @@ -514,9 +535,19 @@ vec_permi(__vector double __a, __vector double __b, int __c) |
| 514 | (__vector unsigned long long)(Y), \ | 535 | (__vector unsigned long long)(Y), \ |
| 515 | (((Z) & 2) << 1) | ((Z) & 1))) | 536 | (((Z) & 2) << 1) | ((Z) & 1))) |
| 516 | 537 | ||
| 538 | /*-- vec_bperm --------------------------------------------------------------*/ | ||
| 539 | |||
| 540 | #if __ARCH__ >= 12 | ||
| 541 | static inline __ATTRS_ai __vector unsigned long long | ||
| 542 | vec_bperm(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 543 | return __builtin_s390_vbperm((__vector unsigned char)__a, __b); | ||
| 544 | } | ||
| 545 | #endif | ||
| 546 | |||
| 517 | /*-- vec_bperm_u128 ---------------------------------------------------------*/ | 547 | /*-- vec_bperm_u128 ---------------------------------------------------------*/ |
| 518 | 548 | ||
| 519 | #if __ARCH__ >= 12 | 549 | #if __ARCH__ >= 12 |
| 550 | // This prototype is deprecated. | ||
| 520 | static inline __ATTRS_ai __vector unsigned long long | 551 | static inline __ATTRS_ai __vector unsigned long long |
| 521 | vec_bperm_u128(__vector unsigned char __a, __vector unsigned char __b) { | 552 | vec_bperm_u128(__vector unsigned char __a, __vector unsigned char __b) { |
| 522 | return __builtin_s390_vbperm(__a, __b); | 553 | return __builtin_s390_vbperm(__a, __b); |
| ... | @@ -558,6 +589,18 @@ vec_revb(__vector unsigned long long __vec) { | ... | @@ -558,6 +589,18 @@ vec_revb(__vector unsigned long long __vec) { |
| 558 | return __builtin_s390_vlbrg(__vec); | 589 | return __builtin_s390_vlbrg(__vec); |
| 559 | } | 590 | } |
| 560 | 591 | ||
| 592 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 593 | vec_revb(__vector signed __int128 __vec) { | ||
| 594 | return (__vector signed __int128) | ||
| 595 | __builtin_s390_vlbrq((unsigned __int128)__vec); | ||
| 596 | } | ||
| 597 | |||
| 598 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 599 | vec_revb(__vector unsigned __int128 __vec) { | ||
| 600 | return (__vector unsigned __int128) | ||
| 601 | __builtin_s390_vlbrq((unsigned __int128)__vec); | ||
| 602 | } | ||
| 603 | |||
| 561 | #if __ARCH__ >= 12 | 604 | #if __ARCH__ >= 12 |
| 562 | static inline __ATTRS_o_ai __vector float | 605 | static inline __ATTRS_o_ai __vector float |
| 563 | vec_revb(__vector float __vec) { | 606 | vec_revb(__vector float __vec) { |
| ... | @@ -820,6 +863,46 @@ vec_sel(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -820,6 +863,46 @@ vec_sel(__vector unsigned long long __a, __vector unsigned long long __b, |
| 820 | (~(__vector unsigned long long)__c & __a)); | 863 | (~(__vector unsigned long long)__c & __a)); |
| 821 | } | 864 | } |
| 822 | 865 | ||
| 866 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 867 | vec_sel(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 868 | __vector unsigned __int128 __c) { | ||
| 869 | return (((__vector signed __int128)__c & __b) | | ||
| 870 | (~(__vector signed __int128)__c & __a)); | ||
| 871 | } | ||
| 872 | |||
| 873 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 874 | vec_sel(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 875 | __vector __bool __int128 __c) { | ||
| 876 | return (((__vector signed __int128)__c & __b) | | ||
| 877 | (~(__vector signed __int128)__c & __a)); | ||
| 878 | } | ||
| 879 | |||
| 880 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 881 | vec_sel(__vector __bool __int128 __a, __vector __bool __int128 __b, | ||
| 882 | __vector unsigned __int128 __c) { | ||
| 883 | return (((__vector __bool __int128)__c & __b) | | ||
| 884 | (~(__vector __bool __int128)__c & __a)); | ||
| 885 | } | ||
| 886 | |||
| 887 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 888 | vec_sel(__vector __bool __int128 __a, __vector __bool __int128 __b, | ||
| 889 | __vector __bool __int128 __c) { | ||
| 890 | return (__c & __b) | (~__c & __a); | ||
| 891 | } | ||
| 892 | |||
| 893 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 894 | vec_sel(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 895 | __vector unsigned __int128 __c) { | ||
| 896 | return (__c & __b) | (~__c & __a); | ||
| 897 | } | ||
| 898 | |||
| 899 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 900 | vec_sel(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 901 | __vector __bool __int128 __c) { | ||
| 902 | return (((__vector unsigned __int128)__c & __b) | | ||
| 903 | (~(__vector unsigned __int128)__c & __a)); | ||
| 904 | } | ||
| 905 | |||
| 823 | #if __ARCH__ >= 12 | 906 | #if __ARCH__ >= 12 |
| 824 | static inline __ATTRS_o_ai __vector float | 907 | static inline __ATTRS_o_ai __vector float |
| 825 | vec_sel(__vector float __a, __vector float __b, __vector unsigned int __c) { | 908 | vec_sel(__vector float __a, __vector float __b, __vector unsigned int __c) { |
| ... | @@ -1078,6 +1161,22 @@ vec_xl(long __offset, const unsigned long long *__ptr) { | ... | @@ -1078,6 +1161,22 @@ vec_xl(long __offset, const unsigned long long *__ptr) { |
| 1078 | return V; | 1161 | return V; |
| 1079 | } | 1162 | } |
| 1080 | 1163 | ||
| 1164 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 1165 | vec_xl(long __offset, const signed __int128 *__ptr) { | ||
| 1166 | __vector signed __int128 V; | ||
| 1167 | __builtin_memcpy(&V, ((const char *)__ptr + __offset), | ||
| 1168 | sizeof(__vector signed __int128)); | ||
| 1169 | return V; | ||
| 1170 | } | ||
| 1171 | |||
| 1172 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 1173 | vec_xl(long __offset, const unsigned __int128 *__ptr) { | ||
| 1174 | __vector unsigned __int128 V; | ||
| 1175 | __builtin_memcpy(&V, ((const char *)__ptr + __offset), | ||
| 1176 | sizeof(__vector unsigned __int128)); | ||
| 1177 | return V; | ||
| 1178 | } | ||
| 1179 | |||
| 1081 | #if __ARCH__ >= 12 | 1180 | #if __ARCH__ >= 12 |
| 1082 | static inline __ATTRS_o_ai __vector float | 1181 | static inline __ATTRS_o_ai __vector float |
| 1083 | vec_xl(long __offset, const float *__ptr) { | 1182 | vec_xl(long __offset, const float *__ptr) { |
| ... | @@ -1294,6 +1393,22 @@ vec_xst(__vector unsigned long long __vec, long __offset, | ... | @@ -1294,6 +1393,22 @@ vec_xst(__vector unsigned long long __vec, long __offset, |
| 1294 | sizeof(__vector unsigned long long)); | 1393 | sizeof(__vector unsigned long long)); |
| 1295 | } | 1394 | } |
| 1296 | 1395 | ||
| 1396 | static inline __ATTRS_o_ai void | ||
| 1397 | vec_xst(__vector signed __int128 __vec, long __offset, | ||
| 1398 | signed __int128 *__ptr) { | ||
| 1399 | __vector signed __int128 V = __vec; | ||
| 1400 | __builtin_memcpy(((char *)__ptr + __offset), &V, | ||
| 1401 | sizeof(__vector signed __int128)); | ||
| 1402 | } | ||
| 1403 | |||
| 1404 | static inline __ATTRS_o_ai void | ||
| 1405 | vec_xst(__vector unsigned __int128 __vec, long __offset, | ||
| 1406 | unsigned __int128 *__ptr) { | ||
| 1407 | __vector unsigned __int128 V = __vec; | ||
| 1408 | __builtin_memcpy(((char *)__ptr + __offset), &V, | ||
| 1409 | sizeof(__vector unsigned __int128)); | ||
| 1410 | } | ||
| 1411 | |||
| 1297 | #if __ARCH__ >= 12 | 1412 | #if __ARCH__ >= 12 |
| 1298 | static inline __ATTRS_o_ai void | 1413 | static inline __ATTRS_o_ai void |
| 1299 | vec_xst(__vector float __vec, long __offset, float *__ptr) { | 1414 | vec_xst(__vector float __vec, long __offset, float *__ptr) { |
| ... | @@ -1465,6 +1580,14 @@ extern __ATTRS_o __vector unsigned long long | ... | @@ -1465,6 +1580,14 @@ extern __ATTRS_o __vector unsigned long long |
| 1465 | vec_load_bndry(const unsigned long long *__ptr, unsigned short __len) | 1580 | vec_load_bndry(const unsigned long long *__ptr, unsigned short __len) |
| 1466 | __constant_pow2_range(__len, 64, 4096); | 1581 | __constant_pow2_range(__len, 64, 4096); |
| 1467 | 1582 | ||
| 1583 | extern __ATTRS_o __vector signed __int128 | ||
| 1584 | vec_load_bndry(const signed __int128 *__ptr, unsigned short __len) | ||
| 1585 | __constant_pow2_range(__len, 64, 4096); | ||
| 1586 | |||
| 1587 | extern __ATTRS_o __vector unsigned __int128 | ||
| 1588 | vec_load_bndry(const unsigned __int128 *__ptr, unsigned short __len) | ||
| 1589 | __constant_pow2_range(__len, 64, 4096); | ||
| 1590 | |||
| 1468 | #if __ARCH__ >= 12 | 1591 | #if __ARCH__ >= 12 |
| 1469 | extern __ATTRS_o __vector float | 1592 | extern __ATTRS_o __vector float |
| 1470 | vec_load_bndry(const float *__ptr, unsigned short __len) | 1593 | vec_load_bndry(const float *__ptr, unsigned short __len) |
| ... | @@ -1496,43 +1619,51 @@ vec_load_len(const unsigned char *__ptr, unsigned int __len) { | ... | @@ -1496,43 +1619,51 @@ vec_load_len(const unsigned char *__ptr, unsigned int __len) { |
| 1496 | return (__vector unsigned char)__builtin_s390_vll(__len, __ptr); | 1619 | return (__vector unsigned char)__builtin_s390_vll(__len, __ptr); |
| 1497 | } | 1620 | } |
| 1498 | 1621 | ||
| 1622 | // This prototype is deprecated. | ||
| 1499 | static inline __ATTRS_o_ai __vector signed short | 1623 | static inline __ATTRS_o_ai __vector signed short |
| 1500 | vec_load_len(const signed short *__ptr, unsigned int __len) { | 1624 | vec_load_len(const signed short *__ptr, unsigned int __len) { |
| 1501 | return (__vector signed short)__builtin_s390_vll(__len, __ptr); | 1625 | return (__vector signed short)__builtin_s390_vll(__len, __ptr); |
| 1502 | } | 1626 | } |
| 1503 | 1627 | ||
| 1628 | // This prototype is deprecated. | ||
| 1504 | static inline __ATTRS_o_ai __vector unsigned short | 1629 | static inline __ATTRS_o_ai __vector unsigned short |
| 1505 | vec_load_len(const unsigned short *__ptr, unsigned int __len) { | 1630 | vec_load_len(const unsigned short *__ptr, unsigned int __len) { |
| 1506 | return (__vector unsigned short)__builtin_s390_vll(__len, __ptr); | 1631 | return (__vector unsigned short)__builtin_s390_vll(__len, __ptr); |
| 1507 | } | 1632 | } |
| 1508 | 1633 | ||
| 1634 | // This prototype is deprecated. | ||
| 1509 | static inline __ATTRS_o_ai __vector signed int | 1635 | static inline __ATTRS_o_ai __vector signed int |
| 1510 | vec_load_len(const signed int *__ptr, unsigned int __len) { | 1636 | vec_load_len(const signed int *__ptr, unsigned int __len) { |
| 1511 | return (__vector signed int)__builtin_s390_vll(__len, __ptr); | 1637 | return (__vector signed int)__builtin_s390_vll(__len, __ptr); |
| 1512 | } | 1638 | } |
| 1513 | 1639 | ||
| 1640 | // This prototype is deprecated. | ||
| 1514 | static inline __ATTRS_o_ai __vector unsigned int | 1641 | static inline __ATTRS_o_ai __vector unsigned int |
| 1515 | vec_load_len(const unsigned int *__ptr, unsigned int __len) { | 1642 | vec_load_len(const unsigned int *__ptr, unsigned int __len) { |
| 1516 | return (__vector unsigned int)__builtin_s390_vll(__len, __ptr); | 1643 | return (__vector unsigned int)__builtin_s390_vll(__len, __ptr); |
| 1517 | } | 1644 | } |
| 1518 | 1645 | ||
| 1646 | // This prototype is deprecated. | ||
| 1519 | static inline __ATTRS_o_ai __vector signed long long | 1647 | static inline __ATTRS_o_ai __vector signed long long |
| 1520 | vec_load_len(const signed long long *__ptr, unsigned int __len) { | 1648 | vec_load_len(const signed long long *__ptr, unsigned int __len) { |
| 1521 | return (__vector signed long long)__builtin_s390_vll(__len, __ptr); | 1649 | return (__vector signed long long)__builtin_s390_vll(__len, __ptr); |
| 1522 | } | 1650 | } |
| 1523 | 1651 | ||
| 1652 | // This prototype is deprecated. | ||
| 1524 | static inline __ATTRS_o_ai __vector unsigned long long | 1653 | static inline __ATTRS_o_ai __vector unsigned long long |
| 1525 | vec_load_len(const unsigned long long *__ptr, unsigned int __len) { | 1654 | vec_load_len(const unsigned long long *__ptr, unsigned int __len) { |
| 1526 | return (__vector unsigned long long)__builtin_s390_vll(__len, __ptr); | 1655 | return (__vector unsigned long long)__builtin_s390_vll(__len, __ptr); |
| 1527 | } | 1656 | } |
| 1528 | 1657 | ||
| 1529 | #if __ARCH__ >= 12 | 1658 | #if __ARCH__ >= 12 |
| 1659 | // This prototype is deprecated. | ||
| 1530 | static inline __ATTRS_o_ai __vector float | 1660 | static inline __ATTRS_o_ai __vector float |
| 1531 | vec_load_len(const float *__ptr, unsigned int __len) { | 1661 | vec_load_len(const float *__ptr, unsigned int __len) { |
| 1532 | return (__vector float)__builtin_s390_vll(__len, __ptr); | 1662 | return (__vector float)__builtin_s390_vll(__len, __ptr); |
| 1533 | } | 1663 | } |
| 1534 | #endif | 1664 | #endif |
| 1535 | 1665 | ||
| 1666 | // This prototype is deprecated. | ||
| 1536 | static inline __ATTRS_o_ai __vector double | 1667 | static inline __ATTRS_o_ai __vector double |
| 1537 | vec_load_len(const double *__ptr, unsigned int __len) { | 1668 | vec_load_len(const double *__ptr, unsigned int __len) { |
| 1538 | return (__vector double)__builtin_s390_vll(__len, __ptr); | 1669 | return (__vector double)__builtin_s390_vll(__len, __ptr); |
| ... | @@ -1541,7 +1672,12 @@ vec_load_len(const double *__ptr, unsigned int __len) { | ... | @@ -1541,7 +1672,12 @@ vec_load_len(const double *__ptr, unsigned int __len) { |
| 1541 | /*-- vec_load_len_r ---------------------------------------------------------*/ | 1672 | /*-- vec_load_len_r ---------------------------------------------------------*/ |
| 1542 | 1673 | ||
| 1543 | #if __ARCH__ >= 12 | 1674 | #if __ARCH__ >= 12 |
| 1544 | static inline __ATTRS_ai __vector unsigned char | 1675 | static inline __ATTRS_o_ai __vector signed char |
| 1676 | vec_load_len_r(const signed char *__ptr, unsigned int __len) { | ||
| 1677 | return (__vector signed char)__builtin_s390_vlrlr(__len, __ptr); | ||
| 1678 | } | ||
| 1679 | |||
| 1680 | static inline __ATTRS_o_ai __vector unsigned char | ||
| 1545 | vec_load_len_r(const unsigned char *__ptr, unsigned int __len) { | 1681 | vec_load_len_r(const unsigned char *__ptr, unsigned int __len) { |
| 1546 | return (__vector unsigned char)__builtin_s390_vlrlr(__len, __ptr); | 1682 | return (__vector unsigned char)__builtin_s390_vlrlr(__len, __ptr); |
| 1547 | } | 1683 | } |
| ... | @@ -1561,36 +1697,42 @@ vec_store_len(__vector unsigned char __vec, unsigned char *__ptr, | ... | @@ -1561,36 +1697,42 @@ vec_store_len(__vector unsigned char __vec, unsigned char *__ptr, |
| 1561 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1697 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1562 | } | 1698 | } |
| 1563 | 1699 | ||
| 1700 | // This prototype is deprecated. | ||
| 1564 | static inline __ATTRS_o_ai void | 1701 | static inline __ATTRS_o_ai void |
| 1565 | vec_store_len(__vector signed short __vec, signed short *__ptr, | 1702 | vec_store_len(__vector signed short __vec, signed short *__ptr, |
| 1566 | unsigned int __len) { | 1703 | unsigned int __len) { |
| 1567 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1704 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1568 | } | 1705 | } |
| 1569 | 1706 | ||
| 1707 | // This prototype is deprecated. | ||
| 1570 | static inline __ATTRS_o_ai void | 1708 | static inline __ATTRS_o_ai void |
| 1571 | vec_store_len(__vector unsigned short __vec, unsigned short *__ptr, | 1709 | vec_store_len(__vector unsigned short __vec, unsigned short *__ptr, |
| 1572 | unsigned int __len) { | 1710 | unsigned int __len) { |
| 1573 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1711 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1574 | } | 1712 | } |
| 1575 | 1713 | ||
| 1714 | // This prototype is deprecated. | ||
| 1576 | static inline __ATTRS_o_ai void | 1715 | static inline __ATTRS_o_ai void |
| 1577 | vec_store_len(__vector signed int __vec, signed int *__ptr, | 1716 | vec_store_len(__vector signed int __vec, signed int *__ptr, |
| 1578 | unsigned int __len) { | 1717 | unsigned int __len) { |
| 1579 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1718 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1580 | } | 1719 | } |
| 1581 | 1720 | ||
| 1721 | // This prototype is deprecated. | ||
| 1582 | static inline __ATTRS_o_ai void | 1722 | static inline __ATTRS_o_ai void |
| 1583 | vec_store_len(__vector unsigned int __vec, unsigned int *__ptr, | 1723 | vec_store_len(__vector unsigned int __vec, unsigned int *__ptr, |
| 1584 | unsigned int __len) { | 1724 | unsigned int __len) { |
| 1585 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1725 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1586 | } | 1726 | } |
| 1587 | 1727 | ||
| 1728 | // This prototype is deprecated. | ||
| 1588 | static inline __ATTRS_o_ai void | 1729 | static inline __ATTRS_o_ai void |
| 1589 | vec_store_len(__vector signed long long __vec, signed long long *__ptr, | 1730 | vec_store_len(__vector signed long long __vec, signed long long *__ptr, |
| 1590 | unsigned int __len) { | 1731 | unsigned int __len) { |
| 1591 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); | 1732 | __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); |
| 1592 | } | 1733 | } |
| 1593 | 1734 | ||
| 1735 | // This prototype is deprecated. | ||
| 1594 | static inline __ATTRS_o_ai void | 1736 | static inline __ATTRS_o_ai void |
| 1595 | vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr, | 1737 | vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr, |
| 1596 | unsigned int __len) { | 1738 | unsigned int __len) { |
| ... | @@ -1598,6 +1740,7 @@ vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr, | ... | @@ -1598,6 +1740,7 @@ vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr, |
| 1598 | } | 1740 | } |
| 1599 | 1741 | ||
| 1600 | #if __ARCH__ >= 12 | 1742 | #if __ARCH__ >= 12 |
| 1743 | // This prototype is deprecated. | ||
| 1601 | static inline __ATTRS_o_ai void | 1744 | static inline __ATTRS_o_ai void |
| 1602 | vec_store_len(__vector float __vec, float *__ptr, | 1745 | vec_store_len(__vector float __vec, float *__ptr, |
| 1603 | unsigned int __len) { | 1746 | unsigned int __len) { |
| ... | @@ -1605,6 +1748,7 @@ vec_store_len(__vector float __vec, float *__ptr, | ... | @@ -1605,6 +1748,7 @@ vec_store_len(__vector float __vec, float *__ptr, |
| 1605 | } | 1748 | } |
| 1606 | #endif | 1749 | #endif |
| 1607 | 1750 | ||
| 1751 | // This prototype is deprecated. | ||
| 1608 | static inline __ATTRS_o_ai void | 1752 | static inline __ATTRS_o_ai void |
| 1609 | vec_store_len(__vector double __vec, double *__ptr, | 1753 | vec_store_len(__vector double __vec, double *__ptr, |
| 1610 | unsigned int __len) { | 1754 | unsigned int __len) { |
| ... | @@ -1614,7 +1758,13 @@ vec_store_len(__vector double __vec, double *__ptr, | ... | @@ -1614,7 +1758,13 @@ vec_store_len(__vector double __vec, double *__ptr, |
| 1614 | /*-- vec_store_len_r --------------------------------------------------------*/ | 1758 | /*-- vec_store_len_r --------------------------------------------------------*/ |
| 1615 | 1759 | ||
| 1616 | #if __ARCH__ >= 12 | 1760 | #if __ARCH__ >= 12 |
| 1617 | static inline __ATTRS_ai void | 1761 | static inline __ATTRS_o_ai void |
| 1762 | vec_store_len_r(__vector signed char __vec, signed char *__ptr, | ||
| 1763 | unsigned int __len) { | ||
| 1764 | __builtin_s390_vstrlr(__vec, __len, __ptr); | ||
| 1765 | } | ||
| 1766 | |||
| 1767 | static inline __ATTRS_o_ai void | ||
| 1618 | vec_store_len_r(__vector unsigned char __vec, unsigned char *__ptr, | 1768 | vec_store_len_r(__vector unsigned char __vec, unsigned char *__ptr, |
| 1619 | unsigned int __len) { | 1769 | unsigned int __len) { |
| 1620 | __builtin_s390_vstrlr((__vector signed char)__vec, __len, __ptr); | 1770 | __builtin_s390_vstrlr((__vector signed char)__vec, __len, __ptr); |
| ... | @@ -1711,6 +1861,35 @@ vec_genmasks_64(unsigned char __first, unsigned char __last) | ... | @@ -1711,6 +1861,35 @@ vec_genmasks_64(unsigned char __first, unsigned char __last) |
| 1711 | return (__vector unsigned long long)__value; | 1861 | return (__vector unsigned long long)__value; |
| 1712 | } | 1862 | } |
| 1713 | 1863 | ||
| 1864 | /*-- vec_gen_element_masks_* ------------------------------------------------*/ | ||
| 1865 | |||
| 1866 | #if __ARCH__ >= 15 | ||
| 1867 | static inline __ATTRS_ai __vector unsigned char | ||
| 1868 | vec_gen_element_masks_8(__vector unsigned short __mask) { | ||
| 1869 | return __builtin_s390_vgemb(__mask); | ||
| 1870 | } | ||
| 1871 | |||
| 1872 | static inline __ATTRS_ai __vector unsigned short | ||
| 1873 | vec_gen_element_masks_16(__vector unsigned char __mask) { | ||
| 1874 | return __builtin_s390_vgemh(__mask); | ||
| 1875 | } | ||
| 1876 | |||
| 1877 | static inline __ATTRS_ai __vector unsigned int | ||
| 1878 | vec_gen_element_masks_32(__vector unsigned char __mask) { | ||
| 1879 | return __builtin_s390_vgemf(__mask); | ||
| 1880 | } | ||
| 1881 | |||
| 1882 | static inline __ATTRS_ai __vector unsigned long long | ||
| 1883 | vec_gen_element_masks_64(__vector unsigned char __mask) { | ||
| 1884 | return __builtin_s390_vgemg(__mask); | ||
| 1885 | } | ||
| 1886 | |||
| 1887 | static inline __ATTRS_ai __vector unsigned __int128 | ||
| 1888 | vec_gen_element_masks_128(__vector unsigned char __mask) { | ||
| 1889 | return (__vector unsigned __int128)__builtin_s390_vgemq(__mask); | ||
| 1890 | } | ||
| 1891 | #endif | ||
| 1892 | |||
| 1714 | /*-- vec_splat --------------------------------------------------------------*/ | 1893 | /*-- vec_splat --------------------------------------------------------------*/ |
| 1715 | 1894 | ||
| 1716 | static inline __ATTRS_o_ai __vector signed char | 1895 | static inline __ATTRS_o_ai __vector signed char |
| ... | @@ -1894,6 +2073,16 @@ vec_splats(unsigned long long __scalar) { | ... | @@ -1894,6 +2073,16 @@ vec_splats(unsigned long long __scalar) { |
| 1894 | return (__vector unsigned long long)__scalar; | 2073 | return (__vector unsigned long long)__scalar; |
| 1895 | } | 2074 | } |
| 1896 | 2075 | ||
| 2076 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 2077 | vec_splats(signed __int128 __scalar) { | ||
| 2078 | return (__vector signed __int128)__scalar; | ||
| 2079 | } | ||
| 2080 | |||
| 2081 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 2082 | vec_splats(unsigned __int128 __scalar) { | ||
| 2083 | return (__vector unsigned __int128)__scalar; | ||
| 2084 | } | ||
| 2085 | |||
| 1897 | #if __ARCH__ >= 12 | 2086 | #if __ARCH__ >= 12 |
| 1898 | static inline __ATTRS_o_ai __vector float | 2087 | static inline __ATTRS_o_ai __vector float |
| 1899 | vec_splats(float __scalar) { | 2088 | vec_splats(float __scalar) { |
| ... | @@ -2166,6 +2355,27 @@ vec_pack(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2166,6 +2355,27 @@ vec_pack(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2166 | return (__vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]); | 2355 | return (__vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]); |
| 2167 | } | 2356 | } |
| 2168 | 2357 | ||
| 2358 | static inline __ATTRS_o_ai __vector signed long long | ||
| 2359 | vec_pack(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2360 | __vector signed long long __ac = (__vector signed long long)__a; | ||
| 2361 | __vector signed long long __bc = (__vector signed long long)__b; | ||
| 2362 | return (__vector signed long long)(__ac[1], __bc[1]); | ||
| 2363 | } | ||
| 2364 | |||
| 2365 | static inline __ATTRS_o_ai __vector __bool long long | ||
| 2366 | vec_pack(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 2367 | __vector __bool long long __ac = (__vector __bool long long)__a; | ||
| 2368 | __vector __bool long long __bc = (__vector __bool long long)__b; | ||
| 2369 | return (__vector __bool long long)(__ac[1], __bc[1]); | ||
| 2370 | } | ||
| 2371 | |||
| 2372 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 2373 | vec_pack(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2374 | __vector unsigned long long __ac = (__vector unsigned long long)__a; | ||
| 2375 | __vector unsigned long long __bc = (__vector unsigned long long)__b; | ||
| 2376 | return (__vector unsigned long long)(__ac[1], __bc[1]); | ||
| 2377 | } | ||
| 2378 | |||
| 2169 | /*-- vec_packs --------------------------------------------------------------*/ | 2379 | /*-- vec_packs --------------------------------------------------------------*/ |
| 2170 | 2380 | ||
| 2171 | static inline __ATTRS_o_ai __vector signed char | 2381 | static inline __ATTRS_o_ai __vector signed char |
| ... | @@ -2344,6 +2554,24 @@ vec_unpackh(__vector unsigned int __a) { | ... | @@ -2344,6 +2554,24 @@ vec_unpackh(__vector unsigned int __a) { |
| 2344 | return __builtin_s390_vuplhf(__a); | 2554 | return __builtin_s390_vuplhf(__a); |
| 2345 | } | 2555 | } |
| 2346 | 2556 | ||
| 2557 | #if __ARCH__ >= 15 | ||
| 2558 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 2559 | vec_unpackh(__vector signed long long __a) { | ||
| 2560 | return (__vector signed __int128)__builtin_s390_vuphg(__a); | ||
| 2561 | } | ||
| 2562 | |||
| 2563 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2564 | vec_unpackh(__vector __bool long long __a) { | ||
| 2565 | return ((__vector __bool __int128) | ||
| 2566 | __builtin_s390_vuphg((__vector signed long long)__a)); | ||
| 2567 | } | ||
| 2568 | |||
| 2569 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 2570 | vec_unpackh(__vector unsigned long long __a) { | ||
| 2571 | return (__vector unsigned __int128)__builtin_s390_vuplhg(__a); | ||
| 2572 | } | ||
| 2573 | #endif | ||
| 2574 | |||
| 2347 | /*-- vec_unpackl ------------------------------------------------------------*/ | 2575 | /*-- vec_unpackl ------------------------------------------------------------*/ |
| 2348 | 2576 | ||
| 2349 | static inline __ATTRS_o_ai __vector signed short | 2577 | static inline __ATTRS_o_ai __vector signed short |
| ... | @@ -2394,6 +2622,24 @@ vec_unpackl(__vector unsigned int __a) { | ... | @@ -2394,6 +2622,24 @@ vec_unpackl(__vector unsigned int __a) { |
| 2394 | return __builtin_s390_vupllf(__a); | 2622 | return __builtin_s390_vupllf(__a); |
| 2395 | } | 2623 | } |
| 2396 | 2624 | ||
| 2625 | #if __ARCH__ >= 15 | ||
| 2626 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 2627 | vec_unpackl(__vector signed long long __a) { | ||
| 2628 | return (__vector signed __int128)__builtin_s390_vuplg(__a); | ||
| 2629 | } | ||
| 2630 | |||
| 2631 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2632 | vec_unpackl(__vector __bool long long __a) { | ||
| 2633 | return ((__vector __bool __int128) | ||
| 2634 | __builtin_s390_vuplg((__vector signed long long)__a)); | ||
| 2635 | } | ||
| 2636 | |||
| 2637 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 2638 | vec_unpackl(__vector unsigned long long __a) { | ||
| 2639 | return (__vector unsigned __int128)__builtin_s390_vupllg(__a); | ||
| 2640 | } | ||
| 2641 | #endif | ||
| 2642 | |||
| 2397 | /*-- vec_cmpeq --------------------------------------------------------------*/ | 2643 | /*-- vec_cmpeq --------------------------------------------------------------*/ |
| 2398 | 2644 | ||
| 2399 | static inline __ATTRS_o_ai __vector __bool char | 2645 | static inline __ATTRS_o_ai __vector __bool char |
| ... | @@ -2456,6 +2702,21 @@ vec_cmpeq(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2456,6 +2702,21 @@ vec_cmpeq(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2456 | return (__vector __bool long long)(__a == __b); | 2702 | return (__vector __bool long long)(__a == __b); |
| 2457 | } | 2703 | } |
| 2458 | 2704 | ||
| 2705 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2706 | vec_cmpeq(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 2707 | return (__vector __bool __int128)(__a == __b); | ||
| 2708 | } | ||
| 2709 | |||
| 2710 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2711 | vec_cmpeq(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2712 | return (__vector __bool __int128)(__a == __b); | ||
| 2713 | } | ||
| 2714 | |||
| 2715 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2716 | vec_cmpeq(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2717 | return (__vector __bool __int128)(__a == __b); | ||
| 2718 | } | ||
| 2719 | |||
| 2459 | #if __ARCH__ >= 12 | 2720 | #if __ARCH__ >= 12 |
| 2460 | static inline __ATTRS_o_ai __vector __bool int | 2721 | static inline __ATTRS_o_ai __vector __bool int |
| 2461 | vec_cmpeq(__vector float __a, __vector float __b) { | 2722 | vec_cmpeq(__vector float __a, __vector float __b) { |
| ... | @@ -2510,6 +2771,16 @@ vec_cmpge(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2510,6 +2771,16 @@ vec_cmpge(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2510 | return (__vector __bool long long)(__a >= __b); | 2771 | return (__vector __bool long long)(__a >= __b); |
| 2511 | } | 2772 | } |
| 2512 | 2773 | ||
| 2774 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2775 | vec_cmpge(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2776 | return (__vector __bool __int128)(__a >= __b); | ||
| 2777 | } | ||
| 2778 | |||
| 2779 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2780 | vec_cmpge(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2781 | return (__vector __bool __int128)(__a >= __b); | ||
| 2782 | } | ||
| 2783 | |||
| 2513 | #if __ARCH__ >= 12 | 2784 | #if __ARCH__ >= 12 |
| 2514 | static inline __ATTRS_o_ai __vector __bool int | 2785 | static inline __ATTRS_o_ai __vector __bool int |
| 2515 | vec_cmpge(__vector float __a, __vector float __b) { | 2786 | vec_cmpge(__vector float __a, __vector float __b) { |
| ... | @@ -2564,6 +2835,16 @@ vec_cmpgt(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2564,6 +2835,16 @@ vec_cmpgt(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2564 | return (__vector __bool long long)(__a > __b); | 2835 | return (__vector __bool long long)(__a > __b); |
| 2565 | } | 2836 | } |
| 2566 | 2837 | ||
| 2838 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2839 | vec_cmpgt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2840 | return (__vector __bool __int128)(__a > __b); | ||
| 2841 | } | ||
| 2842 | |||
| 2843 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2844 | vec_cmpgt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2845 | return (__vector __bool __int128)(__a > __b); | ||
| 2846 | } | ||
| 2847 | |||
| 2567 | #if __ARCH__ >= 12 | 2848 | #if __ARCH__ >= 12 |
| 2568 | static inline __ATTRS_o_ai __vector __bool int | 2849 | static inline __ATTRS_o_ai __vector __bool int |
| 2569 | vec_cmpgt(__vector float __a, __vector float __b) { | 2850 | vec_cmpgt(__vector float __a, __vector float __b) { |
| ... | @@ -2618,6 +2899,16 @@ vec_cmple(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2618,6 +2899,16 @@ vec_cmple(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2618 | return (__vector __bool long long)(__a <= __b); | 2899 | return (__vector __bool long long)(__a <= __b); |
| 2619 | } | 2900 | } |
| 2620 | 2901 | ||
| 2902 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2903 | vec_cmple(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2904 | return (__vector __bool __int128)(__a <= __b); | ||
| 2905 | } | ||
| 2906 | |||
| 2907 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2908 | vec_cmple(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2909 | return (__vector __bool __int128)(__a <= __b); | ||
| 2910 | } | ||
| 2911 | |||
| 2621 | #if __ARCH__ >= 12 | 2912 | #if __ARCH__ >= 12 |
| 2622 | static inline __ATTRS_o_ai __vector __bool int | 2913 | static inline __ATTRS_o_ai __vector __bool int |
| 2623 | vec_cmple(__vector float __a, __vector float __b) { | 2914 | vec_cmple(__vector float __a, __vector float __b) { |
| ... | @@ -2672,6 +2963,16 @@ vec_cmplt(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -2672,6 +2963,16 @@ vec_cmplt(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 2672 | return (__vector __bool long long)(__a < __b); | 2963 | return (__vector __bool long long)(__a < __b); |
| 2673 | } | 2964 | } |
| 2674 | 2965 | ||
| 2966 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2967 | vec_cmplt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 2968 | return (__vector __bool __int128)(__a < __b); | ||
| 2969 | } | ||
| 2970 | |||
| 2971 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 2972 | vec_cmplt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 2973 | return (__vector __bool __int128)(__a < __b); | ||
| 2974 | } | ||
| 2975 | |||
| 2675 | #if __ARCH__ >= 12 | 2976 | #if __ARCH__ >= 12 |
| 2676 | static inline __ATTRS_o_ai __vector __bool int | 2977 | static inline __ATTRS_o_ai __vector __bool int |
| 2677 | vec_cmplt(__vector float __a, __vector float __b) { | 2978 | vec_cmplt(__vector float __a, __vector float __b) { |
| ... | @@ -2914,6 +3215,29 @@ vec_all_eq(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -2914,6 +3215,29 @@ vec_all_eq(__vector __bool long long __a, __vector __bool long long __b) { |
| 2914 | return __cc == 0; | 3215 | return __cc == 0; |
| 2915 | } | 3216 | } |
| 2916 | 3217 | ||
| 3218 | #if __ARCH__ >= 15 | ||
| 3219 | static inline __ATTRS_o_ai int | ||
| 3220 | vec_all_eq(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 3221 | int __cc; | ||
| 3222 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3223 | return __cc == 0; | ||
| 3224 | } | ||
| 3225 | |||
| 3226 | static inline __ATTRS_o_ai int | ||
| 3227 | vec_all_eq(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 3228 | int __cc; | ||
| 3229 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3230 | return __cc == 0; | ||
| 3231 | } | ||
| 3232 | |||
| 3233 | static inline __ATTRS_o_ai int | ||
| 3234 | vec_all_eq(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 3235 | int __cc; | ||
| 3236 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3237 | return __cc == 0; | ||
| 3238 | } | ||
| 3239 | #endif | ||
| 3240 | |||
| 2917 | #if __ARCH__ >= 12 | 3241 | #if __ARCH__ >= 12 |
| 2918 | static inline __ATTRS_o_ai int | 3242 | static inline __ATTRS_o_ai int |
| 2919 | vec_all_eq(__vector float __a, __vector float __b) { | 3243 | vec_all_eq(__vector float __a, __vector float __b) { |
| ... | @@ -3161,6 +3485,29 @@ vec_all_ne(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -3161,6 +3485,29 @@ vec_all_ne(__vector __bool long long __a, __vector __bool long long __b) { |
| 3161 | return __cc == 3; | 3485 | return __cc == 3; |
| 3162 | } | 3486 | } |
| 3163 | 3487 | ||
| 3488 | #if __ARCH__ >= 15 | ||
| 3489 | static inline __ATTRS_o_ai int | ||
| 3490 | vec_all_ne(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 3491 | int __cc; | ||
| 3492 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3493 | return __cc == 3; | ||
| 3494 | } | ||
| 3495 | |||
| 3496 | static inline __ATTRS_o_ai int | ||
| 3497 | vec_all_ne(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 3498 | int __cc; | ||
| 3499 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3500 | return __cc == 3; | ||
| 3501 | } | ||
| 3502 | |||
| 3503 | static inline __ATTRS_o_ai int | ||
| 3504 | vec_all_ne(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 3505 | int __cc; | ||
| 3506 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 3507 | return __cc == 3; | ||
| 3508 | } | ||
| 3509 | #endif | ||
| 3510 | |||
| 3164 | #if __ARCH__ >= 12 | 3511 | #if __ARCH__ >= 12 |
| 3165 | static inline __ATTRS_o_ai int | 3512 | static inline __ATTRS_o_ai int |
| 3166 | vec_all_ne(__vector float __a, __vector float __b) { | 3513 | vec_all_ne(__vector float __a, __vector float __b) { |
| ... | @@ -3399,6 +3746,22 @@ vec_all_ge(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -3399,6 +3746,22 @@ vec_all_ge(__vector __bool long long __a, __vector __bool long long __b) { |
| 3399 | return __cc == 3; | 3746 | return __cc == 3; |
| 3400 | } | 3747 | } |
| 3401 | 3748 | ||
| 3749 | #if __ARCH__ >= 15 | ||
| 3750 | static inline __ATTRS_o_ai int | ||
| 3751 | vec_all_ge(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 3752 | int __cc; | ||
| 3753 | __builtin_s390_vchqs((signed __int128)__b, (signed __int128)__a, &__cc); | ||
| 3754 | return __cc == 3; | ||
| 3755 | } | ||
| 3756 | |||
| 3757 | static inline __ATTRS_o_ai int | ||
| 3758 | vec_all_ge(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 3759 | int __cc; | ||
| 3760 | __builtin_s390_vchlqs((unsigned __int128)__b, (unsigned __int128)__a, &__cc); | ||
| 3761 | return __cc == 3; | ||
| 3762 | } | ||
| 3763 | #endif | ||
| 3764 | |||
| 3402 | #if __ARCH__ >= 12 | 3765 | #if __ARCH__ >= 12 |
| 3403 | static inline __ATTRS_o_ai int | 3766 | static inline __ATTRS_o_ai int |
| 3404 | vec_all_ge(__vector float __a, __vector float __b) { | 3767 | vec_all_ge(__vector float __a, __vector float __b) { |
| ... | @@ -3637,6 +4000,22 @@ vec_all_gt(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -3637,6 +4000,22 @@ vec_all_gt(__vector __bool long long __a, __vector __bool long long __b) { |
| 3637 | return __cc == 0; | 4000 | return __cc == 0; |
| 3638 | } | 4001 | } |
| 3639 | 4002 | ||
| 4003 | #if __ARCH__ >= 15 | ||
| 4004 | static inline __ATTRS_o_ai int | ||
| 4005 | vec_all_gt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 4006 | int __cc; | ||
| 4007 | __builtin_s390_vchqs((signed __int128)__a, (signed __int128)__b, &__cc); | ||
| 4008 | return __cc == 0; | ||
| 4009 | } | ||
| 4010 | |||
| 4011 | static inline __ATTRS_o_ai int | ||
| 4012 | vec_all_gt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 4013 | int __cc; | ||
| 4014 | __builtin_s390_vchlqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 4015 | return __cc == 0; | ||
| 4016 | } | ||
| 4017 | #endif | ||
| 4018 | |||
| 3640 | #if __ARCH__ >= 12 | 4019 | #if __ARCH__ >= 12 |
| 3641 | static inline __ATTRS_o_ai int | 4020 | static inline __ATTRS_o_ai int |
| 3642 | vec_all_gt(__vector float __a, __vector float __b) { | 4021 | vec_all_gt(__vector float __a, __vector float __b) { |
| ... | @@ -3875,6 +4254,22 @@ vec_all_le(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -3875,6 +4254,22 @@ vec_all_le(__vector __bool long long __a, __vector __bool long long __b) { |
| 3875 | return __cc == 3; | 4254 | return __cc == 3; |
| 3876 | } | 4255 | } |
| 3877 | 4256 | ||
| 4257 | #if __ARCH__ >= 15 | ||
| 4258 | static inline __ATTRS_o_ai int | ||
| 4259 | vec_all_le(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 4260 | int __cc; | ||
| 4261 | __builtin_s390_vchqs((signed __int128)__a, (signed __int128)__b, &__cc); | ||
| 4262 | return __cc == 3; | ||
| 4263 | } | ||
| 4264 | |||
| 4265 | static inline __ATTRS_o_ai int | ||
| 4266 | vec_all_le(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 4267 | int __cc; | ||
| 4268 | __builtin_s390_vchlqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 4269 | return __cc == 3; | ||
| 4270 | } | ||
| 4271 | #endif | ||
| 4272 | |||
| 3878 | #if __ARCH__ >= 12 | 4273 | #if __ARCH__ >= 12 |
| 3879 | static inline __ATTRS_o_ai int | 4274 | static inline __ATTRS_o_ai int |
| 3880 | vec_all_le(__vector float __a, __vector float __b) { | 4275 | vec_all_le(__vector float __a, __vector float __b) { |
| ... | @@ -4113,6 +4508,22 @@ vec_all_lt(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -4113,6 +4508,22 @@ vec_all_lt(__vector __bool long long __a, __vector __bool long long __b) { |
| 4113 | return __cc == 0; | 4508 | return __cc == 0; |
| 4114 | } | 4509 | } |
| 4115 | 4510 | ||
| 4511 | #if __ARCH__ >= 15 | ||
| 4512 | static inline __ATTRS_o_ai int | ||
| 4513 | vec_all_lt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 4514 | int __cc; | ||
| 4515 | __builtin_s390_vchqs((signed __int128)__b, (signed __int128)__a, &__cc); | ||
| 4516 | return __cc == 0; | ||
| 4517 | } | ||
| 4518 | |||
| 4519 | static inline __ATTRS_o_ai int | ||
| 4520 | vec_all_lt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 4521 | int __cc; | ||
| 4522 | __builtin_s390_vchlqs((unsigned __int128)__b, (unsigned __int128)__a, &__cc); | ||
| 4523 | return __cc == 0; | ||
| 4524 | } | ||
| 4525 | #endif | ||
| 4526 | |||
| 4116 | #if __ARCH__ >= 12 | 4527 | #if __ARCH__ >= 12 |
| 4117 | static inline __ATTRS_o_ai int | 4528 | static inline __ATTRS_o_ai int |
| 4118 | vec_all_lt(__vector float __a, __vector float __b) { | 4529 | vec_all_lt(__vector float __a, __vector float __b) { |
| ... | @@ -4467,6 +4878,29 @@ vec_any_eq(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -4467,6 +4878,29 @@ vec_any_eq(__vector __bool long long __a, __vector __bool long long __b) { |
| 4467 | return __cc <= 1; | 4878 | return __cc <= 1; |
| 4468 | } | 4879 | } |
| 4469 | 4880 | ||
| 4881 | #if __ARCH__ >= 15 | ||
| 4882 | static inline __ATTRS_o_ai int | ||
| 4883 | vec_any_eq(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 4884 | int __cc; | ||
| 4885 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 4886 | return __cc <= 1; | ||
| 4887 | } | ||
| 4888 | |||
| 4889 | static inline __ATTRS_o_ai int | ||
| 4890 | vec_any_eq(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 4891 | int __cc; | ||
| 4892 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 4893 | return __cc <= 1; | ||
| 4894 | } | ||
| 4895 | |||
| 4896 | static inline __ATTRS_o_ai int | ||
| 4897 | vec_any_eq(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 4898 | int __cc; | ||
| 4899 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 4900 | return __cc <= 1; | ||
| 4901 | } | ||
| 4902 | #endif | ||
| 4903 | |||
| 4470 | #if __ARCH__ >= 12 | 4904 | #if __ARCH__ >= 12 |
| 4471 | static inline __ATTRS_o_ai int | 4905 | static inline __ATTRS_o_ai int |
| 4472 | vec_any_eq(__vector float __a, __vector float __b) { | 4906 | vec_any_eq(__vector float __a, __vector float __b) { |
| ... | @@ -4713,28 +5147,51 @@ vec_any_ne(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -4713,28 +5147,51 @@ vec_any_ne(__vector __bool long long __a, __vector __bool long long __b) { |
| 4713 | return __cc != 0; | 5147 | return __cc != 0; |
| 4714 | } | 5148 | } |
| 4715 | 5149 | ||
| 4716 | #if __ARCH__ >= 12 | 5150 | #if __ARCH__ >= 15 |
| 4717 | static inline __ATTRS_o_ai int | 5151 | static inline __ATTRS_o_ai int |
| 4718 | vec_any_ne(__vector float __a, __vector float __b) { | 5152 | vec_any_ne(__vector signed __int128 __a, __vector signed __int128 __b) { |
| 4719 | int __cc; | 5153 | int __cc; |
| 4720 | __builtin_s390_vfcesbs(__a, __b, &__cc); | 5154 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); |
| 4721 | return __cc != 0; | 5155 | return __cc != 0; |
| 4722 | } | 5156 | } |
| 4723 | #endif | ||
| 4724 | 5157 | ||
| 4725 | static inline __ATTRS_o_ai int | 5158 | static inline __ATTRS_o_ai int |
| 4726 | vec_any_ne(__vector double __a, __vector double __b) { | 5159 | vec_any_ne(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { |
| 4727 | int __cc; | 5160 | int __cc; |
| 4728 | __builtin_s390_vfcedbs(__a, __b, &__cc); | 5161 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); |
| 4729 | return __cc != 0; | 5162 | return __cc != 0; |
| 4730 | } | 5163 | } |
| 4731 | 5164 | ||
| 4732 | /*-- vec_any_ge -------------------------------------------------------------*/ | ||
| 4733 | |||
| 4734 | static inline __ATTRS_o_ai int | 5165 | static inline __ATTRS_o_ai int |
| 4735 | vec_any_ge(__vector signed char __a, __vector signed char __b) { | 5166 | vec_any_ne(__vector __bool __int128 __a, __vector __bool __int128 __b) { |
| 4736 | int __cc; | 5167 | int __cc; |
| 4737 | __builtin_s390_vchbs(__b, __a, &__cc); | 5168 | __builtin_s390_vceqqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); |
| 5169 | return __cc != 0; | ||
| 5170 | } | ||
| 5171 | #endif | ||
| 5172 | |||
| 5173 | #if __ARCH__ >= 12 | ||
| 5174 | static inline __ATTRS_o_ai int | ||
| 5175 | vec_any_ne(__vector float __a, __vector float __b) { | ||
| 5176 | int __cc; | ||
| 5177 | __builtin_s390_vfcesbs(__a, __b, &__cc); | ||
| 5178 | return __cc != 0; | ||
| 5179 | } | ||
| 5180 | #endif | ||
| 5181 | |||
| 5182 | static inline __ATTRS_o_ai int | ||
| 5183 | vec_any_ne(__vector double __a, __vector double __b) { | ||
| 5184 | int __cc; | ||
| 5185 | __builtin_s390_vfcedbs(__a, __b, &__cc); | ||
| 5186 | return __cc != 0; | ||
| 5187 | } | ||
| 5188 | |||
| 5189 | /*-- vec_any_ge -------------------------------------------------------------*/ | ||
| 5190 | |||
| 5191 | static inline __ATTRS_o_ai int | ||
| 5192 | vec_any_ge(__vector signed char __a, __vector signed char __b) { | ||
| 5193 | int __cc; | ||
| 5194 | __builtin_s390_vchbs(__b, __a, &__cc); | ||
| 4738 | return __cc != 0; | 5195 | return __cc != 0; |
| 4739 | } | 5196 | } |
| 4740 | 5197 | ||
| ... | @@ -4951,6 +5408,22 @@ vec_any_ge(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -4951,6 +5408,22 @@ vec_any_ge(__vector __bool long long __a, __vector __bool long long __b) { |
| 4951 | return __cc != 0; | 5408 | return __cc != 0; |
| 4952 | } | 5409 | } |
| 4953 | 5410 | ||
| 5411 | #if __ARCH__ >= 15 | ||
| 5412 | static inline __ATTRS_o_ai int | ||
| 5413 | vec_any_ge(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 5414 | int __cc; | ||
| 5415 | __builtin_s390_vchqs((signed __int128)__b, (signed __int128)__a, &__cc); | ||
| 5416 | return __cc != 0; | ||
| 5417 | } | ||
| 5418 | |||
| 5419 | static inline __ATTRS_o_ai int | ||
| 5420 | vec_any_ge(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 5421 | int __cc; | ||
| 5422 | __builtin_s390_vchlqs((unsigned __int128)__b, (unsigned __int128)__a, &__cc); | ||
| 5423 | return __cc != 0; | ||
| 5424 | } | ||
| 5425 | #endif | ||
| 5426 | |||
| 4954 | #if __ARCH__ >= 12 | 5427 | #if __ARCH__ >= 12 |
| 4955 | static inline __ATTRS_o_ai int | 5428 | static inline __ATTRS_o_ai int |
| 4956 | vec_any_ge(__vector float __a, __vector float __b) { | 5429 | vec_any_ge(__vector float __a, __vector float __b) { |
| ... | @@ -5189,6 +5662,22 @@ vec_any_gt(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -5189,6 +5662,22 @@ vec_any_gt(__vector __bool long long __a, __vector __bool long long __b) { |
| 5189 | return __cc <= 1; | 5662 | return __cc <= 1; |
| 5190 | } | 5663 | } |
| 5191 | 5664 | ||
| 5665 | #if __ARCH__ >= 15 | ||
| 5666 | static inline __ATTRS_o_ai int | ||
| 5667 | vec_any_gt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 5668 | int __cc; | ||
| 5669 | __builtin_s390_vchqs((signed __int128)__a, (signed __int128)__b, &__cc); | ||
| 5670 | return __cc <= 1; | ||
| 5671 | } | ||
| 5672 | |||
| 5673 | static inline __ATTRS_o_ai int | ||
| 5674 | vec_any_gt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 5675 | int __cc; | ||
| 5676 | __builtin_s390_vchlqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 5677 | return __cc <= 1; | ||
| 5678 | } | ||
| 5679 | #endif | ||
| 5680 | |||
| 5192 | #if __ARCH__ >= 12 | 5681 | #if __ARCH__ >= 12 |
| 5193 | static inline __ATTRS_o_ai int | 5682 | static inline __ATTRS_o_ai int |
| 5194 | vec_any_gt(__vector float __a, __vector float __b) { | 5683 | vec_any_gt(__vector float __a, __vector float __b) { |
| ... | @@ -5427,6 +5916,22 @@ vec_any_le(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -5427,6 +5916,22 @@ vec_any_le(__vector __bool long long __a, __vector __bool long long __b) { |
| 5427 | return __cc != 0; | 5916 | return __cc != 0; |
| 5428 | } | 5917 | } |
| 5429 | 5918 | ||
| 5919 | #if __ARCH__ >= 15 | ||
| 5920 | static inline __ATTRS_o_ai int | ||
| 5921 | vec_any_le(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 5922 | int __cc; | ||
| 5923 | __builtin_s390_vchqs((signed __int128)__a, (signed __int128)__b, &__cc); | ||
| 5924 | return __cc != 0; | ||
| 5925 | } | ||
| 5926 | |||
| 5927 | static inline __ATTRS_o_ai int | ||
| 5928 | vec_any_le(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 5929 | int __cc; | ||
| 5930 | __builtin_s390_vchlqs((unsigned __int128)__a, (unsigned __int128)__b, &__cc); | ||
| 5931 | return __cc != 0; | ||
| 5932 | } | ||
| 5933 | #endif | ||
| 5934 | |||
| 5430 | #if __ARCH__ >= 12 | 5935 | #if __ARCH__ >= 12 |
| 5431 | static inline __ATTRS_o_ai int | 5936 | static inline __ATTRS_o_ai int |
| 5432 | vec_any_le(__vector float __a, __vector float __b) { | 5937 | vec_any_le(__vector float __a, __vector float __b) { |
| ... | @@ -5665,6 +6170,22 @@ vec_any_lt(__vector __bool long long __a, __vector __bool long long __b) { | ... | @@ -5665,6 +6170,22 @@ vec_any_lt(__vector __bool long long __a, __vector __bool long long __b) { |
| 5665 | return __cc <= 1; | 6170 | return __cc <= 1; |
| 5666 | } | 6171 | } |
| 5667 | 6172 | ||
| 6173 | #if __ARCH__ >= 15 | ||
| 6174 | static inline __ATTRS_o_ai int | ||
| 6175 | vec_any_lt(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 6176 | int __cc; | ||
| 6177 | __builtin_s390_vchqs((signed __int128)__b, (signed __int128)__a, &__cc); | ||
| 6178 | return __cc <= 1; | ||
| 6179 | } | ||
| 6180 | |||
| 6181 | static inline __ATTRS_o_ai int | ||
| 6182 | vec_any_lt(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 6183 | int __cc; | ||
| 6184 | __builtin_s390_vchlqs((unsigned __int128)__b, (unsigned __int128)__a, &__cc); | ||
| 6185 | return __cc <= 1; | ||
| 6186 | } | ||
| 6187 | #endif | ||
| 6188 | |||
| 5668 | #if __ARCH__ >= 12 | 6189 | #if __ARCH__ >= 12 |
| 5669 | static inline __ATTRS_o_ai int | 6190 | static inline __ATTRS_o_ai int |
| 5670 | vec_any_lt(__vector float __a, __vector float __b) { | 6191 | vec_any_lt(__vector float __a, __vector float __b) { |
| ... | @@ -5753,40 +6274,419 @@ vec_any_nlt(__vector double __a, __vector double __b) { | ... | @@ -5753,40 +6274,419 @@ vec_any_nlt(__vector double __a, __vector double __b) { |
| 5753 | return __cc != 0; | 6274 | return __cc != 0; |
| 5754 | } | 6275 | } |
| 5755 | 6276 | ||
| 5756 | /*-- vec_any_nan ------------------------------------------------------------*/ | 6277 | /*-- vec_any_nan ------------------------------------------------------------*/ |
| 6278 | |||
| 6279 | #if __ARCH__ >= 12 | ||
| 6280 | static inline __ATTRS_o_ai int | ||
| 6281 | vec_any_nan(__vector float __a) { | ||
| 6282 | int __cc; | ||
| 6283 | __builtin_s390_vftcisb(__a, 15, &__cc); | ||
| 6284 | return __cc != 3; | ||
| 6285 | } | ||
| 6286 | #endif | ||
| 6287 | |||
| 6288 | static inline __ATTRS_o_ai int | ||
| 6289 | vec_any_nan(__vector double __a) { | ||
| 6290 | int __cc; | ||
| 6291 | __builtin_s390_vftcidb(__a, 15, &__cc); | ||
| 6292 | return __cc != 3; | ||
| 6293 | } | ||
| 6294 | |||
| 6295 | /*-- vec_any_numeric --------------------------------------------------------*/ | ||
| 6296 | |||
| 6297 | #if __ARCH__ >= 12 | ||
| 6298 | static inline __ATTRS_o_ai int | ||
| 6299 | vec_any_numeric(__vector float __a) { | ||
| 6300 | int __cc; | ||
| 6301 | __builtin_s390_vftcisb(__a, 15, &__cc); | ||
| 6302 | return __cc != 0; | ||
| 6303 | } | ||
| 6304 | #endif | ||
| 6305 | |||
| 6306 | static inline __ATTRS_o_ai int | ||
| 6307 | vec_any_numeric(__vector double __a) { | ||
| 6308 | int __cc; | ||
| 6309 | __builtin_s390_vftcidb(__a, 15, &__cc); | ||
| 6310 | return __cc != 0; | ||
| 6311 | } | ||
| 6312 | |||
| 6313 | /*-- vec_blend --------------------------------------------------------------*/ | ||
| 6314 | |||
| 6315 | #if __ARCH__ >= 15 | ||
| 6316 | static inline __ATTRS_o_ai __vector signed char | ||
| 6317 | vec_blend(__vector signed char __a, __vector signed char __b, | ||
| 6318 | __vector signed char __c) { | ||
| 6319 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed char)0)); | ||
| 6320 | } | ||
| 6321 | |||
| 6322 | static inline __ATTRS_o_ai __vector __bool char | ||
| 6323 | vec_blend(__vector __bool char __a, __vector __bool char __b, | ||
| 6324 | __vector signed char __c) { | ||
| 6325 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed char)0)); | ||
| 6326 | } | ||
| 6327 | |||
| 6328 | static inline __ATTRS_o_ai __vector unsigned char | ||
| 6329 | vec_blend(__vector unsigned char __a, __vector unsigned char __b, | ||
| 6330 | __vector signed char __c) { | ||
| 6331 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed char)0)); | ||
| 6332 | } | ||
| 6333 | |||
| 6334 | static inline __ATTRS_o_ai __vector signed short | ||
| 6335 | vec_blend(__vector signed short __a, __vector signed short __b, | ||
| 6336 | __vector signed short __c) { | ||
| 6337 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed short)0)); | ||
| 6338 | } | ||
| 6339 | |||
| 6340 | static inline __ATTRS_o_ai __vector __bool short | ||
| 6341 | vec_blend(__vector __bool short __a, __vector __bool short __b, | ||
| 6342 | __vector signed short __c) { | ||
| 6343 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed short)0)); | ||
| 6344 | } | ||
| 6345 | |||
| 6346 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 6347 | vec_blend(__vector unsigned short __a, __vector unsigned short __b, | ||
| 6348 | __vector signed short __c) { | ||
| 6349 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed short)0)); | ||
| 6350 | } | ||
| 6351 | |||
| 6352 | static inline __ATTRS_o_ai __vector signed int | ||
| 6353 | vec_blend(__vector signed int __a, __vector signed int __b, | ||
| 6354 | __vector signed int __c) { | ||
| 6355 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed int)0)); | ||
| 6356 | } | ||
| 6357 | |||
| 6358 | static inline __ATTRS_o_ai __vector __bool int | ||
| 6359 | vec_blend(__vector __bool int __a, __vector __bool int __b, | ||
| 6360 | __vector signed int __c) { | ||
| 6361 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed int)0)); | ||
| 6362 | } | ||
| 6363 | |||
| 6364 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 6365 | vec_blend(__vector unsigned int __a, __vector unsigned int __b, | ||
| 6366 | __vector signed int __c) { | ||
| 6367 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed int)0)); | ||
| 6368 | } | ||
| 6369 | |||
| 6370 | static inline __ATTRS_o_ai __vector signed long long | ||
| 6371 | vec_blend(__vector signed long long __a, __vector signed long long __b, | ||
| 6372 | __vector signed long long __c) { | ||
| 6373 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed long long)0)); | ||
| 6374 | } | ||
| 6375 | |||
| 6376 | static inline __ATTRS_o_ai __vector __bool long long | ||
| 6377 | vec_blend(__vector __bool long long __a, __vector __bool long long __b, | ||
| 6378 | __vector signed long long __c) { | ||
| 6379 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed long long)0)); | ||
| 6380 | } | ||
| 6381 | |||
| 6382 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 6383 | vec_blend(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 6384 | __vector signed long long __c) { | ||
| 6385 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed long long)0)); | ||
| 6386 | } | ||
| 6387 | |||
| 6388 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 6389 | vec_blend(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 6390 | __vector signed __int128 __c) { | ||
| 6391 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed __int128)0)); | ||
| 6392 | } | ||
| 6393 | |||
| 6394 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 6395 | vec_blend(__vector __bool __int128 __a, __vector __bool __int128 __b, | ||
| 6396 | __vector signed __int128 __c) { | ||
| 6397 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed __int128)0)); | ||
| 6398 | } | ||
| 6399 | |||
| 6400 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 6401 | vec_blend(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 6402 | __vector signed __int128 __c) { | ||
| 6403 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed __int128)0)); | ||
| 6404 | } | ||
| 6405 | |||
| 6406 | static inline __ATTRS_o_ai __vector float | ||
| 6407 | vec_blend(__vector float __a, __vector float __b, | ||
| 6408 | __vector signed int __c) { | ||
| 6409 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed int)0)); | ||
| 6410 | } | ||
| 6411 | |||
| 6412 | static inline __ATTRS_o_ai __vector double | ||
| 6413 | vec_blend(__vector double __a, __vector double __b, | ||
| 6414 | __vector signed long long __c) { | ||
| 6415 | return vec_sel(__a, __b, vec_cmplt(__c, (__vector signed long long)0)); | ||
| 6416 | } | ||
| 6417 | #endif | ||
| 6418 | |||
| 6419 | /*-- vec_and ---------------------------------------------------------------*/ | ||
| 6420 | |||
| 6421 | static inline __ATTRS_o_ai __vector __bool char | ||
| 6422 | vec_and(__vector __bool char __a, __vector __bool char __b) { | ||
| 6423 | return __a & __b; | ||
| 6424 | } | ||
| 6425 | |||
| 6426 | static inline __ATTRS_o_ai __vector signed char | ||
| 6427 | vec_and(__vector signed char __a, __vector signed char __b) { | ||
| 6428 | return __a & __b; | ||
| 6429 | } | ||
| 6430 | |||
| 6431 | static inline __ATTRS_o_ai __vector unsigned char | ||
| 6432 | vec_and(__vector unsigned char __a, __vector unsigned char __b) { | ||
| 6433 | return __a & __b; | ||
| 6434 | } | ||
| 6435 | |||
| 6436 | static inline __ATTRS_o_ai __vector __bool short | ||
| 6437 | vec_and(__vector __bool short __a, __vector __bool short __b) { | ||
| 6438 | return __a & __b; | ||
| 6439 | } | ||
| 6440 | |||
| 6441 | static inline __ATTRS_o_ai __vector signed short | ||
| 6442 | vec_and(__vector signed short __a, __vector signed short __b) { | ||
| 6443 | return __a & __b; | ||
| 6444 | } | ||
| 6445 | |||
| 6446 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 6447 | vec_and(__vector unsigned short __a, __vector unsigned short __b) { | ||
| 6448 | return __a & __b; | ||
| 6449 | } | ||
| 6450 | |||
| 6451 | static inline __ATTRS_o_ai __vector __bool int | ||
| 6452 | vec_and(__vector __bool int __a, __vector __bool int __b) { | ||
| 6453 | return __a & __b; | ||
| 6454 | } | ||
| 6455 | |||
| 6456 | static inline __ATTRS_o_ai __vector signed int | ||
| 6457 | vec_and(__vector signed int __a, __vector signed int __b) { | ||
| 6458 | return __a & __b; | ||
| 6459 | } | ||
| 6460 | |||
| 6461 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 6462 | vec_and(__vector unsigned int __a, __vector unsigned int __b) { | ||
| 6463 | return __a & __b; | ||
| 6464 | } | ||
| 6465 | |||
| 6466 | static inline __ATTRS_o_ai __vector __bool long long | ||
| 6467 | vec_and(__vector __bool long long __a, __vector __bool long long __b) { | ||
| 6468 | return __a & __b; | ||
| 6469 | } | ||
| 6470 | |||
| 6471 | static inline __ATTRS_o_ai __vector signed long long | ||
| 6472 | vec_and(__vector signed long long __a, __vector signed long long __b) { | ||
| 6473 | return __a & __b; | ||
| 6474 | } | ||
| 6475 | |||
| 6476 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 6477 | vec_and(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 6478 | return __a & __b; | ||
| 6479 | } | ||
| 6480 | |||
| 6481 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 6482 | vec_and(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 6483 | return __a & __b; | ||
| 6484 | } | ||
| 6485 | |||
| 6486 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 6487 | vec_and(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 6488 | return __a & __b; | ||
| 6489 | } | ||
| 6490 | |||
| 6491 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 6492 | vec_and(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 6493 | return __a & __b; | ||
| 6494 | } | ||
| 6495 | |||
| 6496 | #if __ARCH__ >= 12 | ||
| 6497 | static inline __ATTRS_o_ai __vector float | ||
| 6498 | vec_and(__vector float __a, __vector float __b) { | ||
| 6499 | return (__vector float)((__vector unsigned int)__a & | ||
| 6500 | (__vector unsigned int)__b); | ||
| 6501 | } | ||
| 6502 | #endif | ||
| 6503 | |||
| 6504 | static inline __ATTRS_o_ai __vector double | ||
| 6505 | vec_and(__vector double __a, __vector double __b) { | ||
| 6506 | return (__vector double)((__vector unsigned long long)__a & | ||
| 6507 | (__vector unsigned long long)__b); | ||
| 6508 | } | ||
| 6509 | |||
| 6510 | /*-- vec_or ----------------------------------------------------------------*/ | ||
| 6511 | |||
| 6512 | static inline __ATTRS_o_ai __vector __bool char | ||
| 6513 | vec_or(__vector __bool char __a, __vector __bool char __b) { | ||
| 6514 | return __a | __b; | ||
| 6515 | } | ||
| 6516 | |||
| 6517 | static inline __ATTRS_o_ai __vector signed char | ||
| 6518 | vec_or(__vector signed char __a, __vector signed char __b) { | ||
| 6519 | return __a | __b; | ||
| 6520 | } | ||
| 6521 | |||
| 6522 | static inline __ATTRS_o_ai __vector unsigned char | ||
| 6523 | vec_or(__vector unsigned char __a, __vector unsigned char __b) { | ||
| 6524 | return __a | __b; | ||
| 6525 | } | ||
| 6526 | |||
| 6527 | static inline __ATTRS_o_ai __vector __bool short | ||
| 6528 | vec_or(__vector __bool short __a, __vector __bool short __b) { | ||
| 6529 | return __a | __b; | ||
| 6530 | } | ||
| 6531 | |||
| 6532 | static inline __ATTRS_o_ai __vector signed short | ||
| 6533 | vec_or(__vector signed short __a, __vector signed short __b) { | ||
| 6534 | return __a | __b; | ||
| 6535 | } | ||
| 6536 | |||
| 6537 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 6538 | vec_or(__vector unsigned short __a, __vector unsigned short __b) { | ||
| 6539 | return __a | __b; | ||
| 6540 | } | ||
| 6541 | |||
| 6542 | static inline __ATTRS_o_ai __vector __bool int | ||
| 6543 | vec_or(__vector __bool int __a, __vector __bool int __b) { | ||
| 6544 | return __a | __b; | ||
| 6545 | } | ||
| 6546 | |||
| 6547 | static inline __ATTRS_o_ai __vector signed int | ||
| 6548 | vec_or(__vector signed int __a, __vector signed int __b) { | ||
| 6549 | return __a | __b; | ||
| 6550 | } | ||
| 6551 | |||
| 6552 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 6553 | vec_or(__vector unsigned int __a, __vector unsigned int __b) { | ||
| 6554 | return __a | __b; | ||
| 6555 | } | ||
| 6556 | |||
| 6557 | static inline __ATTRS_o_ai __vector __bool long long | ||
| 6558 | vec_or(__vector __bool long long __a, __vector __bool long long __b) { | ||
| 6559 | return __a | __b; | ||
| 6560 | } | ||
| 6561 | |||
| 6562 | static inline __ATTRS_o_ai __vector signed long long | ||
| 6563 | vec_or(__vector signed long long __a, __vector signed long long __b) { | ||
| 6564 | return __a | __b; | ||
| 6565 | } | ||
| 6566 | |||
| 6567 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 6568 | vec_or(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 6569 | return __a | __b; | ||
| 6570 | } | ||
| 6571 | |||
| 6572 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 6573 | vec_or(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 6574 | return __a | __b; | ||
| 6575 | } | ||
| 6576 | |||
| 6577 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 6578 | vec_or(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 6579 | return __a | __b; | ||
| 6580 | } | ||
| 6581 | |||
| 6582 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 6583 | vec_or(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 6584 | return __a | __b; | ||
| 6585 | } | ||
| 6586 | |||
| 6587 | #if __ARCH__ >= 12 | ||
| 6588 | static inline __ATTRS_o_ai __vector float | ||
| 6589 | vec_or(__vector float __a, __vector float __b) { | ||
| 6590 | return (__vector float)((__vector unsigned int)__a | | ||
| 6591 | (__vector unsigned int)__b); | ||
| 6592 | } | ||
| 6593 | #endif | ||
| 6594 | |||
| 6595 | static inline __ATTRS_o_ai __vector double | ||
| 6596 | vec_or(__vector double __a, __vector double __b) { | ||
| 6597 | return (__vector double)((__vector unsigned long long)__a | | ||
| 6598 | (__vector unsigned long long)__b); | ||
| 6599 | } | ||
| 6600 | |||
| 6601 | /*-- vec_xor ----------------------------------------------------------------*/ | ||
| 6602 | |||
| 6603 | static inline __ATTRS_o_ai __vector __bool char | ||
| 6604 | vec_xor(__vector __bool char __a, __vector __bool char __b) { | ||
| 6605 | return __a ^ __b; | ||
| 6606 | } | ||
| 6607 | |||
| 6608 | static inline __ATTRS_o_ai __vector signed char | ||
| 6609 | vec_xor(__vector signed char __a, __vector signed char __b) { | ||
| 6610 | return __a ^ __b; | ||
| 6611 | } | ||
| 6612 | |||
| 6613 | static inline __ATTRS_o_ai __vector unsigned char | ||
| 6614 | vec_xor(__vector unsigned char __a, __vector unsigned char __b) { | ||
| 6615 | return __a ^ __b; | ||
| 6616 | } | ||
| 6617 | |||
| 6618 | static inline __ATTRS_o_ai __vector __bool short | ||
| 6619 | vec_xor(__vector __bool short __a, __vector __bool short __b) { | ||
| 6620 | return __a ^ __b; | ||
| 6621 | } | ||
| 6622 | |||
| 6623 | static inline __ATTRS_o_ai __vector signed short | ||
| 6624 | vec_xor(__vector signed short __a, __vector signed short __b) { | ||
| 6625 | return __a ^ __b; | ||
| 6626 | } | ||
| 6627 | |||
| 6628 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 6629 | vec_xor(__vector unsigned short __a, __vector unsigned short __b) { | ||
| 6630 | return __a ^ __b; | ||
| 6631 | } | ||
| 6632 | |||
| 6633 | static inline __ATTRS_o_ai __vector __bool int | ||
| 6634 | vec_xor(__vector __bool int __a, __vector __bool int __b) { | ||
| 6635 | return __a ^ __b; | ||
| 6636 | } | ||
| 6637 | |||
| 6638 | static inline __ATTRS_o_ai __vector signed int | ||
| 6639 | vec_xor(__vector signed int __a, __vector signed int __b) { | ||
| 6640 | return __a ^ __b; | ||
| 6641 | } | ||
| 6642 | |||
| 6643 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 6644 | vec_xor(__vector unsigned int __a, __vector unsigned int __b) { | ||
| 6645 | return __a ^ __b; | ||
| 6646 | } | ||
| 6647 | |||
| 6648 | static inline __ATTRS_o_ai __vector __bool long long | ||
| 6649 | vec_xor(__vector __bool long long __a, __vector __bool long long __b) { | ||
| 6650 | return __a ^ __b; | ||
| 6651 | } | ||
| 6652 | |||
| 6653 | static inline __ATTRS_o_ai __vector signed long long | ||
| 6654 | vec_xor(__vector signed long long __a, __vector signed long long __b) { | ||
| 6655 | return __a ^ __b; | ||
| 6656 | } | ||
| 6657 | |||
| 6658 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 6659 | vec_xor(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 6660 | return __a ^ __b; | ||
| 6661 | } | ||
| 5757 | 6662 | ||
| 5758 | #if __ARCH__ >= 12 | 6663 | static inline __ATTRS_o_ai __vector __bool __int128 |
| 5759 | static inline __ATTRS_o_ai int | 6664 | vec_xor(__vector __bool __int128 __a, __vector __bool __int128 __b) { |
| 5760 | vec_any_nan(__vector float __a) { | 6665 | return __a ^ __b; |
| 5761 | int __cc; | ||
| 5762 | __builtin_s390_vftcisb(__a, 15, &__cc); | ||
| 5763 | return __cc != 3; | ||
| 5764 | } | 6666 | } |
| 5765 | #endif | ||
| 5766 | 6667 | ||
| 5767 | static inline __ATTRS_o_ai int | 6668 | static inline __ATTRS_o_ai __vector signed __int128 |
| 5768 | vec_any_nan(__vector double __a) { | 6669 | vec_xor(__vector signed __int128 __a, __vector signed __int128 __b) { |
| 5769 | int __cc; | 6670 | return __a ^ __b; |
| 5770 | __builtin_s390_vftcidb(__a, 15, &__cc); | ||
| 5771 | return __cc != 3; | ||
| 5772 | } | 6671 | } |
| 5773 | 6672 | ||
| 5774 | /*-- vec_any_numeric --------------------------------------------------------*/ | 6673 | static inline __ATTRS_o_ai __vector unsigned __int128 |
| 6674 | vec_xor(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 6675 | return __a ^ __b; | ||
| 6676 | } | ||
| 5775 | 6677 | ||
| 5776 | #if __ARCH__ >= 12 | 6678 | #if __ARCH__ >= 12 |
| 5777 | static inline __ATTRS_o_ai int | 6679 | static inline __ATTRS_o_ai __vector float |
| 5778 | vec_any_numeric(__vector float __a) { | 6680 | vec_xor(__vector float __a, __vector float __b) { |
| 5779 | int __cc; | 6681 | return (__vector float)((__vector unsigned int)__a ^ |
| 5780 | __builtin_s390_vftcisb(__a, 15, &__cc); | 6682 | (__vector unsigned int)__b); |
| 5781 | return __cc != 0; | ||
| 5782 | } | 6683 | } |
| 5783 | #endif | 6684 | #endif |
| 5784 | 6685 | ||
| 5785 | static inline __ATTRS_o_ai int | 6686 | static inline __ATTRS_o_ai __vector double |
| 5786 | vec_any_numeric(__vector double __a) { | 6687 | vec_xor(__vector double __a, __vector double __b) { |
| 5787 | int __cc; | 6688 | return (__vector double)((__vector unsigned long long)__a ^ |
| 5788 | __builtin_s390_vftcidb(__a, 15, &__cc); | 6689 | (__vector unsigned long long)__b); |
| 5789 | return __cc != 0; | ||
| 5790 | } | 6690 | } |
| 5791 | 6691 | ||
| 5792 | /*-- vec_andc ---------------------------------------------------------------*/ | 6692 | /*-- vec_andc ---------------------------------------------------------------*/ |
| ... | @@ -5947,6 +6847,21 @@ vec_andc(__vector unsigned long long __a, __vector __bool long long __b) { | ... | @@ -5947,6 +6847,21 @@ vec_andc(__vector unsigned long long __a, __vector __bool long long __b) { |
| 5947 | return __a & ~__b; | 6847 | return __a & ~__b; |
| 5948 | } | 6848 | } |
| 5949 | 6849 | ||
| 6850 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 6851 | vec_andc(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 6852 | return __a & ~__b; | ||
| 6853 | } | ||
| 6854 | |||
| 6855 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 6856 | vec_andc(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 6857 | return __a & ~__b; | ||
| 6858 | } | ||
| 6859 | |||
| 6860 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 6861 | vec_andc(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 6862 | return __a & ~__b; | ||
| 6863 | } | ||
| 6864 | |||
| 5950 | #if __ARCH__ >= 12 | 6865 | #if __ARCH__ >= 12 |
| 5951 | static inline __ATTRS_o_ai __vector float | 6866 | static inline __ATTRS_o_ai __vector float |
| 5952 | vec_andc(__vector float __a, __vector float __b) { | 6867 | vec_andc(__vector float __a, __vector float __b) { |
| ... | @@ -6133,6 +7048,21 @@ vec_nor(__vector unsigned long long __a, __vector __bool long long __b) { | ... | @@ -6133,6 +7048,21 @@ vec_nor(__vector unsigned long long __a, __vector __bool long long __b) { |
| 6133 | return ~(__a | __b); | 7048 | return ~(__a | __b); |
| 6134 | } | 7049 | } |
| 6135 | 7050 | ||
| 7051 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 7052 | vec_nor(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 7053 | return ~(__a | __b); | ||
| 7054 | } | ||
| 7055 | |||
| 7056 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 7057 | vec_nor(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 7058 | return ~(__a | __b); | ||
| 7059 | } | ||
| 7060 | |||
| 7061 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7062 | vec_nor(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 7063 | return ~(__a | __b); | ||
| 7064 | } | ||
| 7065 | |||
| 6136 | #if __ARCH__ >= 12 | 7066 | #if __ARCH__ >= 12 |
| 6137 | static inline __ATTRS_o_ai __vector float | 7067 | static inline __ATTRS_o_ai __vector float |
| 6138 | vec_nor(__vector float __a, __vector float __b) { | 7068 | vec_nor(__vector float __a, __vector float __b) { |
| ... | @@ -6224,6 +7154,21 @@ vec_orc(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -6224,6 +7154,21 @@ vec_orc(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 6224 | return __a | ~__b; | 7154 | return __a | ~__b; |
| 6225 | } | 7155 | } |
| 6226 | 7156 | ||
| 7157 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 7158 | vec_orc(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 7159 | return __a | ~__b; | ||
| 7160 | } | ||
| 7161 | |||
| 7162 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 7163 | vec_orc(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 7164 | return __a | ~__b; | ||
| 7165 | } | ||
| 7166 | |||
| 7167 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7168 | vec_orc(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 7169 | return __a | ~__b; | ||
| 7170 | } | ||
| 7171 | |||
| 6227 | static inline __ATTRS_o_ai __vector float | 7172 | static inline __ATTRS_o_ai __vector float |
| 6228 | vec_orc(__vector float __a, __vector float __b) { | 7173 | vec_orc(__vector float __a, __vector float __b) { |
| 6229 | return (__vector float)((__vector unsigned int)__a | | 7174 | return (__vector float)((__vector unsigned int)__a | |
| ... | @@ -6300,6 +7245,21 @@ vec_nand(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -6300,6 +7245,21 @@ vec_nand(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 6300 | return ~(__a & __b); | 7245 | return ~(__a & __b); |
| 6301 | } | 7246 | } |
| 6302 | 7247 | ||
| 7248 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 7249 | vec_nand(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 7250 | return ~(__a & __b); | ||
| 7251 | } | ||
| 7252 | |||
| 7253 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 7254 | vec_nand(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 7255 | return ~(__a & __b); | ||
| 7256 | } | ||
| 7257 | |||
| 7258 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7259 | vec_nand(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 7260 | return ~(__a & __b); | ||
| 7261 | } | ||
| 7262 | |||
| 6303 | static inline __ATTRS_o_ai __vector float | 7263 | static inline __ATTRS_o_ai __vector float |
| 6304 | vec_nand(__vector float __a, __vector float __b) { | 7264 | vec_nand(__vector float __a, __vector float __b) { |
| 6305 | return (__vector float)~((__vector unsigned int)__a & | 7265 | return (__vector float)~((__vector unsigned int)__a & |
| ... | @@ -6376,6 +7336,21 @@ vec_eqv(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -6376,6 +7336,21 @@ vec_eqv(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 6376 | return ~(__a ^ __b); | 7336 | return ~(__a ^ __b); |
| 6377 | } | 7337 | } |
| 6378 | 7338 | ||
| 7339 | static inline __ATTRS_o_ai __vector __bool __int128 | ||
| 7340 | vec_eqv(__vector __bool __int128 __a, __vector __bool __int128 __b) { | ||
| 7341 | return ~(__a ^ __b); | ||
| 7342 | } | ||
| 7343 | |||
| 7344 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 7345 | vec_eqv(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 7346 | return ~(__a ^ __b); | ||
| 7347 | } | ||
| 7348 | |||
| 7349 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7350 | vec_eqv(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 7351 | return ~(__a ^ __b); | ||
| 7352 | } | ||
| 7353 | |||
| 6379 | static inline __ATTRS_o_ai __vector float | 7354 | static inline __ATTRS_o_ai __vector float |
| 6380 | vec_eqv(__vector float __a, __vector float __b) { | 7355 | vec_eqv(__vector float __a, __vector float __b) { |
| 6381 | return (__vector float)~((__vector unsigned int)__a ^ | 7356 | return (__vector float)~((__vector unsigned int)__a ^ |
| ... | @@ -6389,6 +7364,91 @@ vec_eqv(__vector double __a, __vector double __b) { | ... | @@ -6389,6 +7364,91 @@ vec_eqv(__vector double __a, __vector double __b) { |
| 6389 | } | 7364 | } |
| 6390 | #endif | 7365 | #endif |
| 6391 | 7366 | ||
| 7367 | /*-- vec_evaluate -----------------------------------------------------------*/ | ||
| 7368 | |||
| 7369 | #if __ARCH__ >= 15 | ||
| 7370 | extern __ATTRS_o __vector signed char | ||
| 7371 | vec_evaluate(__vector signed char __a, __vector signed char __b, | ||
| 7372 | __vector signed char __c, unsigned char __d) | ||
| 7373 | __constant(__d); | ||
| 7374 | |||
| 7375 | extern __ATTRS_o __vector unsigned char | ||
| 7376 | vec_evaluate(__vector unsigned char __a, __vector unsigned char __b, | ||
| 7377 | __vector unsigned char __c, unsigned char __d) | ||
| 7378 | __constant(__d); | ||
| 7379 | |||
| 7380 | extern __ATTRS_o __vector __bool char | ||
| 7381 | vec_evaluate(__vector __bool char __a, __vector __bool char __b, | ||
| 7382 | __vector __bool char __c, unsigned char __d) | ||
| 7383 | __constant(__d); | ||
| 7384 | |||
| 7385 | extern __ATTRS_o __vector signed short | ||
| 7386 | vec_evaluate(__vector signed short __a, __vector signed short __b, | ||
| 7387 | __vector signed short __c, unsigned char __d) | ||
| 7388 | __constant(__d); | ||
| 7389 | |||
| 7390 | extern __ATTRS_o __vector unsigned short | ||
| 7391 | vec_evaluate(__vector unsigned short __a, __vector unsigned short __b, | ||
| 7392 | __vector unsigned short __c, unsigned char __d) | ||
| 7393 | __constant(__d); | ||
| 7394 | |||
| 7395 | extern __ATTRS_o __vector __bool short | ||
| 7396 | vec_evaluate(__vector __bool short __a, __vector __bool short __b, | ||
| 7397 | __vector __bool short __c, unsigned char __d) | ||
| 7398 | __constant(__d); | ||
| 7399 | |||
| 7400 | extern __ATTRS_o __vector signed int | ||
| 7401 | vec_evaluate(__vector signed int __a, __vector signed int __b, | ||
| 7402 | __vector signed int __c, unsigned char __d) | ||
| 7403 | __constant(__d); | ||
| 7404 | |||
| 7405 | extern __ATTRS_o __vector unsigned int | ||
| 7406 | vec_evaluate(__vector unsigned int __a, __vector unsigned int __b, | ||
| 7407 | __vector unsigned int __c, unsigned char __d) | ||
| 7408 | __constant(__d); | ||
| 7409 | |||
| 7410 | extern __ATTRS_o __vector __bool int | ||
| 7411 | vec_evaluate(__vector __bool int __a, __vector __bool int __b, | ||
| 7412 | __vector __bool int __c, unsigned char __d) | ||
| 7413 | __constant(__d); | ||
| 7414 | |||
| 7415 | extern __ATTRS_o __vector signed long long | ||
| 7416 | vec_evaluate(__vector signed long long __a, __vector signed long long __b, | ||
| 7417 | __vector signed long long __c, unsigned char __d) | ||
| 7418 | __constant(__d); | ||
| 7419 | |||
| 7420 | extern __ATTRS_o __vector unsigned long long | ||
| 7421 | vec_evaluate(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 7422 | __vector unsigned long long __c, unsigned char __d) | ||
| 7423 | __constant(__d); | ||
| 7424 | |||
| 7425 | extern __ATTRS_o __vector __bool long long | ||
| 7426 | vec_evaluate(__vector __bool long long __a, __vector __bool long long __b, | ||
| 7427 | __vector __bool long long __c, unsigned char __d) | ||
| 7428 | __constant(__d); | ||
| 7429 | |||
| 7430 | extern __ATTRS_o __vector signed __int128 | ||
| 7431 | vec_evaluate(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 7432 | __vector signed __int128 __c, unsigned char __d) | ||
| 7433 | __constant(__d); | ||
| 7434 | |||
| 7435 | extern __ATTRS_o __vector unsigned __int128 | ||
| 7436 | vec_evaluate(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 7437 | __vector unsigned __int128 __c, unsigned char __d) | ||
| 7438 | __constant(__d); | ||
| 7439 | |||
| 7440 | extern __ATTRS_o __vector __bool __int128 | ||
| 7441 | vec_evaluate(__vector __bool __int128 __a, __vector __bool __int128 __b, | ||
| 7442 | __vector __bool __int128 __c, unsigned char __d) | ||
| 7443 | __constant(__d); | ||
| 7444 | |||
| 7445 | #define vec_evaluate(A, B, C, D) \ | ||
| 7446 | ((__typeof__((vec_evaluate)((A), (B), (C), (D)))) \ | ||
| 7447 | __builtin_s390_veval((__vector unsigned char)(A), \ | ||
| 7448 | (__vector unsigned char)(B), \ | ||
| 7449 | (__vector unsigned char)(C), (D))) | ||
| 7450 | #endif | ||
| 7451 | |||
| 6392 | /*-- vec_cntlz --------------------------------------------------------------*/ | 7452 | /*-- vec_cntlz --------------------------------------------------------------*/ |
| 6393 | 7453 | ||
| 6394 | static inline __ATTRS_o_ai __vector unsigned char | 7454 | static inline __ATTRS_o_ai __vector unsigned char |
| ... | @@ -6431,6 +7491,20 @@ vec_cntlz(__vector unsigned long long __a) { | ... | @@ -6431,6 +7491,20 @@ vec_cntlz(__vector unsigned long long __a) { |
| 6431 | return __builtin_s390_vclzg(__a); | 7491 | return __builtin_s390_vclzg(__a); |
| 6432 | } | 7492 | } |
| 6433 | 7493 | ||
| 7494 | #if __ARCH__ >= 15 | ||
| 7495 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7496 | vec_cntlz(__vector signed __int128 __a) { | ||
| 7497 | return (__vector unsigned __int128) | ||
| 7498 | __builtin_s390_vclzq((unsigned __int128)__a); | ||
| 7499 | } | ||
| 7500 | |||
| 7501 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7502 | vec_cntlz(__vector unsigned __int128 __a) { | ||
| 7503 | return (__vector unsigned __int128) | ||
| 7504 | __builtin_s390_vclzq((unsigned __int128)__a); | ||
| 7505 | } | ||
| 7506 | #endif | ||
| 7507 | |||
| 6434 | /*-- vec_cnttz --------------------------------------------------------------*/ | 7508 | /*-- vec_cnttz --------------------------------------------------------------*/ |
| 6435 | 7509 | ||
| 6436 | static inline __ATTRS_o_ai __vector unsigned char | 7510 | static inline __ATTRS_o_ai __vector unsigned char |
| ... | @@ -6473,46 +7547,60 @@ vec_cnttz(__vector unsigned long long __a) { | ... | @@ -6473,46 +7547,60 @@ vec_cnttz(__vector unsigned long long __a) { |
| 6473 | return __builtin_s390_vctzg(__a); | 7547 | return __builtin_s390_vctzg(__a); |
| 6474 | } | 7548 | } |
| 6475 | 7549 | ||
| 7550 | #if __ARCH__ >= 15 | ||
| 7551 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7552 | vec_cnttz(__vector signed __int128 __a) { | ||
| 7553 | return (__vector unsigned __int128) | ||
| 7554 | __builtin_s390_vctzq((unsigned __int128)__a); | ||
| 7555 | } | ||
| 7556 | |||
| 7557 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 7558 | vec_cnttz(__vector unsigned __int128 __a) { | ||
| 7559 | return (__vector unsigned __int128) | ||
| 7560 | __builtin_s390_vctzq((unsigned __int128)__a); | ||
| 7561 | } | ||
| 7562 | #endif | ||
| 7563 | |||
| 6476 | /*-- vec_popcnt -------------------------------------------------------------*/ | 7564 | /*-- vec_popcnt -------------------------------------------------------------*/ |
| 6477 | 7565 | ||
| 6478 | static inline __ATTRS_o_ai __vector unsigned char | 7566 | static inline __ATTRS_o_ai __vector unsigned char |
| 6479 | vec_popcnt(__vector signed char __a) { | 7567 | vec_popcnt(__vector signed char __a) { |
| 6480 | return __builtin_s390_vpopctb((__vector unsigned char)__a); | 7568 | return __builtin_elementwise_popcount((__vector unsigned char)__a); |
| 6481 | } | 7569 | } |
| 6482 | 7570 | ||
| 6483 | static inline __ATTRS_o_ai __vector unsigned char | 7571 | static inline __ATTRS_o_ai __vector unsigned char |
| 6484 | vec_popcnt(__vector unsigned char __a) { | 7572 | vec_popcnt(__vector unsigned char __a) { |
| 6485 | return __builtin_s390_vpopctb(__a); | 7573 | return __builtin_elementwise_popcount(__a); |
| 6486 | } | 7574 | } |
| 6487 | 7575 | ||
| 6488 | static inline __ATTRS_o_ai __vector unsigned short | 7576 | static inline __ATTRS_o_ai __vector unsigned short |
| 6489 | vec_popcnt(__vector signed short __a) { | 7577 | vec_popcnt(__vector signed short __a) { |
| 6490 | return __builtin_s390_vpopcth((__vector unsigned short)__a); | 7578 | return __builtin_elementwise_popcount((__vector unsigned short)__a); |
| 6491 | } | 7579 | } |
| 6492 | 7580 | ||
| 6493 | static inline __ATTRS_o_ai __vector unsigned short | 7581 | static inline __ATTRS_o_ai __vector unsigned short |
| 6494 | vec_popcnt(__vector unsigned short __a) { | 7582 | vec_popcnt(__vector unsigned short __a) { |
| 6495 | return __builtin_s390_vpopcth(__a); | 7583 | return __builtin_elementwise_popcount(__a); |
| 6496 | } | 7584 | } |
| 6497 | 7585 | ||
| 6498 | static inline __ATTRS_o_ai __vector unsigned int | 7586 | static inline __ATTRS_o_ai __vector unsigned int |
| 6499 | vec_popcnt(__vector signed int __a) { | 7587 | vec_popcnt(__vector signed int __a) { |
| 6500 | return __builtin_s390_vpopctf((__vector unsigned int)__a); | 7588 | return __builtin_elementwise_popcount((__vector unsigned int)__a); |
| 6501 | } | 7589 | } |
| 6502 | 7590 | ||
| 6503 | static inline __ATTRS_o_ai __vector unsigned int | 7591 | static inline __ATTRS_o_ai __vector unsigned int |
| 6504 | vec_popcnt(__vector unsigned int __a) { | 7592 | vec_popcnt(__vector unsigned int __a) { |
| 6505 | return __builtin_s390_vpopctf(__a); | 7593 | return __builtin_elementwise_popcount(__a); |
| 6506 | } | 7594 | } |
| 6507 | 7595 | ||
| 6508 | static inline __ATTRS_o_ai __vector unsigned long long | 7596 | static inline __ATTRS_o_ai __vector unsigned long long |
| 6509 | vec_popcnt(__vector signed long long __a) { | 7597 | vec_popcnt(__vector signed long long __a) { |
| 6510 | return __builtin_s390_vpopctg((__vector unsigned long long)__a); | 7598 | return __builtin_elementwise_popcount((__vector unsigned long long)__a); |
| 6511 | } | 7599 | } |
| 6512 | 7600 | ||
| 6513 | static inline __ATTRS_o_ai __vector unsigned long long | 7601 | static inline __ATTRS_o_ai __vector unsigned long long |
| 6514 | vec_popcnt(__vector unsigned long long __a) { | 7602 | vec_popcnt(__vector unsigned long long __a) { |
| 6515 | return __builtin_s390_vpopctg(__a); | 7603 | return __builtin_elementwise_popcount(__a); |
| 6516 | } | 7604 | } |
| 6517 | 7605 | ||
| 6518 | /*-- vec_rl -----------------------------------------------------------------*/ | 7606 | /*-- vec_rl -----------------------------------------------------------------*/ |
| ... | @@ -6904,8 +7992,21 @@ vec_sll(__vector unsigned long long __a, __vector unsigned int __b) { | ... | @@ -6904,8 +7992,21 @@ vec_sll(__vector unsigned long long __a, __vector unsigned int __b) { |
| 6904 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 7992 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6905 | } | 7993 | } |
| 6906 | 7994 | ||
| 7995 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 7996 | vec_sll(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 7997 | return (__vector signed __int128)__builtin_s390_vsl( | ||
| 7998 | (__vector unsigned char)__a, __b); | ||
| 7999 | } | ||
| 8000 | |||
| 8001 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 8002 | vec_sll(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 8003 | return (__vector unsigned __int128)__builtin_s390_vsl( | ||
| 8004 | (__vector unsigned char)__a, __b); | ||
| 8005 | } | ||
| 8006 | |||
| 6907 | /*-- vec_slb ----------------------------------------------------------------*/ | 8007 | /*-- vec_slb ----------------------------------------------------------------*/ |
| 6908 | 8008 | ||
| 8009 | // This prototype is deprecated. | ||
| 6909 | static inline __ATTRS_o_ai __vector signed char | 8010 | static inline __ATTRS_o_ai __vector signed char |
| 6910 | vec_slb(__vector signed char __a, __vector signed char __b) { | 8011 | vec_slb(__vector signed char __a, __vector signed char __b) { |
| 6911 | return (__vector signed char)__builtin_s390_vslb( | 8012 | return (__vector signed char)__builtin_s390_vslb( |
| ... | @@ -6918,6 +8019,7 @@ vec_slb(__vector signed char __a, __vector unsigned char __b) { | ... | @@ -6918,6 +8019,7 @@ vec_slb(__vector signed char __a, __vector unsigned char __b) { |
| 6918 | (__vector unsigned char)__a, __b); | 8019 | (__vector unsigned char)__a, __b); |
| 6919 | } | 8020 | } |
| 6920 | 8021 | ||
| 8022 | // This prototype is deprecated. | ||
| 6921 | static inline __ATTRS_o_ai __vector unsigned char | 8023 | static inline __ATTRS_o_ai __vector unsigned char |
| 6922 | vec_slb(__vector unsigned char __a, __vector signed char __b) { | 8024 | vec_slb(__vector unsigned char __a, __vector signed char __b) { |
| 6923 | return __builtin_s390_vslb(__a, (__vector unsigned char)__b); | 8025 | return __builtin_s390_vslb(__a, (__vector unsigned char)__b); |
| ... | @@ -6928,110 +8030,187 @@ vec_slb(__vector unsigned char __a, __vector unsigned char __b) { | ... | @@ -6928,110 +8030,187 @@ vec_slb(__vector unsigned char __a, __vector unsigned char __b) { |
| 6928 | return __builtin_s390_vslb(__a, __b); | 8030 | return __builtin_s390_vslb(__a, __b); |
| 6929 | } | 8031 | } |
| 6930 | 8032 | ||
| 8033 | // This prototype is deprecated. | ||
| 6931 | static inline __ATTRS_o_ai __vector signed short | 8034 | static inline __ATTRS_o_ai __vector signed short |
| 6932 | vec_slb(__vector signed short __a, __vector signed short __b) { | 8035 | vec_slb(__vector signed short __a, __vector signed short __b) { |
| 6933 | return (__vector signed short)__builtin_s390_vslb( | 8036 | return (__vector signed short)__builtin_s390_vslb( |
| 6934 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8037 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6935 | } | 8038 | } |
| 6936 | 8039 | ||
| 8040 | // This prototype is deprecated. | ||
| 6937 | static inline __ATTRS_o_ai __vector signed short | 8041 | static inline __ATTRS_o_ai __vector signed short |
| 6938 | vec_slb(__vector signed short __a, __vector unsigned short __b) { | 8042 | vec_slb(__vector signed short __a, __vector unsigned short __b) { |
| 6939 | return (__vector signed short)__builtin_s390_vslb( | 8043 | return (__vector signed short)__builtin_s390_vslb( |
| 6940 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8044 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6941 | } | 8045 | } |
| 6942 | 8046 | ||
| 8047 | static inline __ATTRS_o_ai __vector signed short | ||
| 8048 | vec_slb(__vector signed short __a, __vector unsigned char __b) { | ||
| 8049 | return (__vector signed short)__builtin_s390_vslb( | ||
| 8050 | (__vector unsigned char)__a, __b); | ||
| 8051 | } | ||
| 8052 | |||
| 8053 | // This prototype is deprecated. | ||
| 6943 | static inline __ATTRS_o_ai __vector unsigned short | 8054 | static inline __ATTRS_o_ai __vector unsigned short |
| 6944 | vec_slb(__vector unsigned short __a, __vector signed short __b) { | 8055 | vec_slb(__vector unsigned short __a, __vector signed short __b) { |
| 6945 | return (__vector unsigned short)__builtin_s390_vslb( | 8056 | return (__vector unsigned short)__builtin_s390_vslb( |
| 6946 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8057 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6947 | } | 8058 | } |
| 6948 | 8059 | ||
| 8060 | // This prototype is deprecated. | ||
| 6949 | static inline __ATTRS_o_ai __vector unsigned short | 8061 | static inline __ATTRS_o_ai __vector unsigned short |
| 6950 | vec_slb(__vector unsigned short __a, __vector unsigned short __b) { | 8062 | vec_slb(__vector unsigned short __a, __vector unsigned short __b) { |
| 6951 | return (__vector unsigned short)__builtin_s390_vslb( | 8063 | return (__vector unsigned short)__builtin_s390_vslb( |
| 6952 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8064 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6953 | } | 8065 | } |
| 6954 | 8066 | ||
| 8067 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 8068 | vec_slb(__vector unsigned short __a, __vector unsigned char __b) { | ||
| 8069 | return (__vector unsigned short)__builtin_s390_vslb( | ||
| 8070 | (__vector unsigned char)__a, __b); | ||
| 8071 | } | ||
| 8072 | |||
| 8073 | // This prototype is deprecated. | ||
| 6955 | static inline __ATTRS_o_ai __vector signed int | 8074 | static inline __ATTRS_o_ai __vector signed int |
| 6956 | vec_slb(__vector signed int __a, __vector signed int __b) { | 8075 | vec_slb(__vector signed int __a, __vector signed int __b) { |
| 6957 | return (__vector signed int)__builtin_s390_vslb( | 8076 | return (__vector signed int)__builtin_s390_vslb( |
| 6958 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8077 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6959 | } | 8078 | } |
| 6960 | 8079 | ||
| 8080 | // This prototype is deprecated. | ||
| 6961 | static inline __ATTRS_o_ai __vector signed int | 8081 | static inline __ATTRS_o_ai __vector signed int |
| 6962 | vec_slb(__vector signed int __a, __vector unsigned int __b) { | 8082 | vec_slb(__vector signed int __a, __vector unsigned int __b) { |
| 6963 | return (__vector signed int)__builtin_s390_vslb( | 8083 | return (__vector signed int)__builtin_s390_vslb( |
| 6964 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8084 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6965 | } | 8085 | } |
| 6966 | 8086 | ||
| 8087 | static inline __ATTRS_o_ai __vector signed int | ||
| 8088 | vec_slb(__vector signed int __a, __vector unsigned char __b) { | ||
| 8089 | return (__vector signed int)__builtin_s390_vslb( | ||
| 8090 | (__vector unsigned char)__a, __b); | ||
| 8091 | } | ||
| 8092 | |||
| 8093 | // This prototype is deprecated. | ||
| 6967 | static inline __ATTRS_o_ai __vector unsigned int | 8094 | static inline __ATTRS_o_ai __vector unsigned int |
| 6968 | vec_slb(__vector unsigned int __a, __vector signed int __b) { | 8095 | vec_slb(__vector unsigned int __a, __vector signed int __b) { |
| 6969 | return (__vector unsigned int)__builtin_s390_vslb( | 8096 | return (__vector unsigned int)__builtin_s390_vslb( |
| 6970 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8097 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6971 | } | 8098 | } |
| 6972 | 8099 | ||
| 8100 | // This prototype is deprecated. | ||
| 6973 | static inline __ATTRS_o_ai __vector unsigned int | 8101 | static inline __ATTRS_o_ai __vector unsigned int |
| 6974 | vec_slb(__vector unsigned int __a, __vector unsigned int __b) { | 8102 | vec_slb(__vector unsigned int __a, __vector unsigned int __b) { |
| 6975 | return (__vector unsigned int)__builtin_s390_vslb( | 8103 | return (__vector unsigned int)__builtin_s390_vslb( |
| 6976 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8104 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6977 | } | 8105 | } |
| 6978 | 8106 | ||
| 8107 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 8108 | vec_slb(__vector unsigned int __a, __vector unsigned char __b) { | ||
| 8109 | return (__vector unsigned int)__builtin_s390_vslb( | ||
| 8110 | (__vector unsigned char)__a, __b); | ||
| 8111 | } | ||
| 8112 | |||
| 8113 | // This prototype is deprecated. | ||
| 6979 | static inline __ATTRS_o_ai __vector signed long long | 8114 | static inline __ATTRS_o_ai __vector signed long long |
| 6980 | vec_slb(__vector signed long long __a, __vector signed long long __b) { | 8115 | vec_slb(__vector signed long long __a, __vector signed long long __b) { |
| 6981 | return (__vector signed long long)__builtin_s390_vslb( | 8116 | return (__vector signed long long)__builtin_s390_vslb( |
| 6982 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8117 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6983 | } | 8118 | } |
| 6984 | 8119 | ||
| 8120 | // This prototype is deprecated. | ||
| 6985 | static inline __ATTRS_o_ai __vector signed long long | 8121 | static inline __ATTRS_o_ai __vector signed long long |
| 6986 | vec_slb(__vector signed long long __a, __vector unsigned long long __b) { | 8122 | vec_slb(__vector signed long long __a, __vector unsigned long long __b) { |
| 6987 | return (__vector signed long long)__builtin_s390_vslb( | 8123 | return (__vector signed long long)__builtin_s390_vslb( |
| 6988 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8124 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6989 | } | 8125 | } |
| 6990 | 8126 | ||
| 8127 | static inline __ATTRS_o_ai __vector signed long long | ||
| 8128 | vec_slb(__vector signed long long __a, __vector unsigned char __b) { | ||
| 8129 | return (__vector signed long long)__builtin_s390_vslb( | ||
| 8130 | (__vector unsigned char)__a, __b); | ||
| 8131 | } | ||
| 8132 | |||
| 8133 | // This prototype is deprecated. | ||
| 6991 | static inline __ATTRS_o_ai __vector unsigned long long | 8134 | static inline __ATTRS_o_ai __vector unsigned long long |
| 6992 | vec_slb(__vector unsigned long long __a, __vector signed long long __b) { | 8135 | vec_slb(__vector unsigned long long __a, __vector signed long long __b) { |
| 6993 | return (__vector unsigned long long)__builtin_s390_vslb( | 8136 | return (__vector unsigned long long)__builtin_s390_vslb( |
| 6994 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8137 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 6995 | } | 8138 | } |
| 6996 | 8139 | ||
| 8140 | // This prototype is deprecated. | ||
| 6997 | static inline __ATTRS_o_ai __vector unsigned long long | 8141 | static inline __ATTRS_o_ai __vector unsigned long long |
| 6998 | vec_slb(__vector unsigned long long __a, __vector unsigned long long __b) { | 8142 | vec_slb(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 6999 | return (__vector unsigned long long)__builtin_s390_vslb( | 8143 | return (__vector unsigned long long)__builtin_s390_vslb( |
| 7000 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8144 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7001 | } | 8145 | } |
| 7002 | 8146 | ||
| 8147 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 8148 | vec_slb(__vector unsigned long long __a, __vector unsigned char __b) { | ||
| 8149 | return (__vector unsigned long long)__builtin_s390_vslb( | ||
| 8150 | (__vector unsigned char)__a, __b); | ||
| 8151 | } | ||
| 8152 | |||
| 8153 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 8154 | vec_slb(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 8155 | return (__vector signed __int128)__builtin_s390_vslb( | ||
| 8156 | (__vector unsigned char)__a, __b); | ||
| 8157 | } | ||
| 8158 | |||
| 8159 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 8160 | vec_slb(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 8161 | return (__vector unsigned __int128)__builtin_s390_vslb( | ||
| 8162 | (__vector unsigned char)__a, __b); | ||
| 8163 | } | ||
| 8164 | |||
| 7003 | #if __ARCH__ >= 12 | 8165 | #if __ARCH__ >= 12 |
| 8166 | // This prototype is deprecated. | ||
| 7004 | static inline __ATTRS_o_ai __vector float | 8167 | static inline __ATTRS_o_ai __vector float |
| 7005 | vec_slb(__vector float __a, __vector signed int __b) { | 8168 | vec_slb(__vector float __a, __vector signed int __b) { |
| 7006 | return (__vector float)__builtin_s390_vslb( | 8169 | return (__vector float)__builtin_s390_vslb( |
| 7007 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8170 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7008 | } | 8171 | } |
| 7009 | 8172 | ||
| 8173 | // This prototype is deprecated. | ||
| 7010 | static inline __ATTRS_o_ai __vector float | 8174 | static inline __ATTRS_o_ai __vector float |
| 7011 | vec_slb(__vector float __a, __vector unsigned int __b) { | 8175 | vec_slb(__vector float __a, __vector unsigned int __b) { |
| 7012 | return (__vector float)__builtin_s390_vslb( | 8176 | return (__vector float)__builtin_s390_vslb( |
| 7013 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8177 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7014 | } | 8178 | } |
| 8179 | |||
| 8180 | static inline __ATTRS_o_ai __vector float | ||
| 8181 | vec_slb(__vector float __a, __vector unsigned char __b) { | ||
| 8182 | return (__vector float)__builtin_s390_vslb( | ||
| 8183 | (__vector unsigned char)__a, __b); | ||
| 8184 | } | ||
| 7015 | #endif | 8185 | #endif |
| 7016 | 8186 | ||
| 8187 | // This prototype is deprecated. | ||
| 7017 | static inline __ATTRS_o_ai __vector double | 8188 | static inline __ATTRS_o_ai __vector double |
| 7018 | vec_slb(__vector double __a, __vector signed long long __b) { | 8189 | vec_slb(__vector double __a, __vector signed long long __b) { |
| 7019 | return (__vector double)__builtin_s390_vslb( | 8190 | return (__vector double)__builtin_s390_vslb( |
| 7020 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8191 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7021 | } | 8192 | } |
| 7022 | 8193 | ||
| 8194 | // This prototype is deprecated. | ||
| 7023 | static inline __ATTRS_o_ai __vector double | 8195 | static inline __ATTRS_o_ai __vector double |
| 7024 | vec_slb(__vector double __a, __vector unsigned long long __b) { | 8196 | vec_slb(__vector double __a, __vector unsigned long long __b) { |
| 7025 | return (__vector double)__builtin_s390_vslb( | 8197 | return (__vector double)__builtin_s390_vslb( |
| 7026 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8198 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7027 | } | 8199 | } |
| 7028 | 8200 | ||
| 8201 | static inline __ATTRS_o_ai __vector double | ||
| 8202 | vec_slb(__vector double __a, __vector unsigned char __b) { | ||
| 8203 | return (__vector double)__builtin_s390_vslb( | ||
| 8204 | (__vector unsigned char)__a, __b); | ||
| 8205 | } | ||
| 8206 | |||
| 7029 | /*-- vec_sld ----------------------------------------------------------------*/ | 8207 | /*-- vec_sld ----------------------------------------------------------------*/ |
| 7030 | 8208 | ||
| 7031 | extern __ATTRS_o __vector signed char | 8209 | extern __ATTRS_o __vector signed char |
| 7032 | vec_sld(__vector signed char __a, __vector signed char __b, int __c) | 8210 | vec_sld(__vector signed char __a, __vector signed char __b, int __c) |
| 7033 | __constant_range(__c, 0, 15); | 8211 | __constant_range(__c, 0, 15); |
| 7034 | 8212 | ||
| 8213 | // This prototype is deprecated. | ||
| 7035 | extern __ATTRS_o __vector __bool char | 8214 | extern __ATTRS_o __vector __bool char |
| 7036 | vec_sld(__vector __bool char __a, __vector __bool char __b, int __c) | 8215 | vec_sld(__vector __bool char __a, __vector __bool char __b, int __c) |
| 7037 | __constant_range(__c, 0, 15); | 8216 | __constant_range(__c, 0, 15); |
| ... | @@ -7044,6 +8223,7 @@ extern __ATTRS_o __vector signed short | ... | @@ -7044,6 +8223,7 @@ extern __ATTRS_o __vector signed short |
| 7044 | vec_sld(__vector signed short __a, __vector signed short __b, int __c) | 8223 | vec_sld(__vector signed short __a, __vector signed short __b, int __c) |
| 7045 | __constant_range(__c, 0, 15); | 8224 | __constant_range(__c, 0, 15); |
| 7046 | 8225 | ||
| 8226 | // This prototype is deprecated. | ||
| 7047 | extern __ATTRS_o __vector __bool short | 8227 | extern __ATTRS_o __vector __bool short |
| 7048 | vec_sld(__vector __bool short __a, __vector __bool short __b, int __c) | 8228 | vec_sld(__vector __bool short __a, __vector __bool short __b, int __c) |
| 7049 | __constant_range(__c, 0, 15); | 8229 | __constant_range(__c, 0, 15); |
| ... | @@ -7056,6 +8236,7 @@ extern __ATTRS_o __vector signed int | ... | @@ -7056,6 +8236,7 @@ extern __ATTRS_o __vector signed int |
| 7056 | vec_sld(__vector signed int __a, __vector signed int __b, int __c) | 8236 | vec_sld(__vector signed int __a, __vector signed int __b, int __c) |
| 7057 | __constant_range(__c, 0, 15); | 8237 | __constant_range(__c, 0, 15); |
| 7058 | 8238 | ||
| 8239 | // This prototype is deprecated. | ||
| 7059 | extern __ATTRS_o __vector __bool int | 8240 | extern __ATTRS_o __vector __bool int |
| 7060 | vec_sld(__vector __bool int __a, __vector __bool int __b, int __c) | 8241 | vec_sld(__vector __bool int __a, __vector __bool int __b, int __c) |
| 7061 | __constant_range(__c, 0, 15); | 8242 | __constant_range(__c, 0, 15); |
| ... | @@ -7068,6 +8249,7 @@ extern __ATTRS_o __vector signed long long | ... | @@ -7068,6 +8249,7 @@ extern __ATTRS_o __vector signed long long |
| 7068 | vec_sld(__vector signed long long __a, __vector signed long long __b, int __c) | 8249 | vec_sld(__vector signed long long __a, __vector signed long long __b, int __c) |
| 7069 | __constant_range(__c, 0, 15); | 8250 | __constant_range(__c, 0, 15); |
| 7070 | 8251 | ||
| 8252 | // This prototype is deprecated. | ||
| 7071 | extern __ATTRS_o __vector __bool long long | 8253 | extern __ATTRS_o __vector __bool long long |
| 7072 | vec_sld(__vector __bool long long __a, __vector __bool long long __b, int __c) | 8254 | vec_sld(__vector __bool long long __a, __vector __bool long long __b, int __c) |
| 7073 | __constant_range(__c, 0, 15); | 8255 | __constant_range(__c, 0, 15); |
| ... | @@ -7077,6 +8259,15 @@ vec_sld(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -7077,6 +8259,15 @@ vec_sld(__vector unsigned long long __a, __vector unsigned long long __b, |
| 7077 | int __c) | 8259 | int __c) |
| 7078 | __constant_range(__c, 0, 15); | 8260 | __constant_range(__c, 0, 15); |
| 7079 | 8261 | ||
| 8262 | extern __ATTRS_o __vector signed __int128 | ||
| 8263 | vec_sld(__vector signed __int128 __a, __vector signed __int128 __b, int __c) | ||
| 8264 | __constant_range(__c, 0, 15); | ||
| 8265 | |||
| 8266 | extern __ATTRS_o __vector unsigned __int128 | ||
| 8267 | vec_sld(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 8268 | int __c) | ||
| 8269 | __constant_range(__c, 0, 15); | ||
| 8270 | |||
| 7080 | #if __ARCH__ >= 12 | 8271 | #if __ARCH__ >= 12 |
| 7081 | extern __ATTRS_o __vector float | 8272 | extern __ATTRS_o __vector float |
| 7082 | vec_sld(__vector float __a, __vector float __b, int __c) | 8273 | vec_sld(__vector float __a, __vector float __b, int __c) |
| ... | @@ -7126,6 +8317,15 @@ vec_sldw(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -7126,6 +8317,15 @@ vec_sldw(__vector unsigned long long __a, __vector unsigned long long __b, |
| 7126 | int __c) | 8317 | int __c) |
| 7127 | __constant_range(__c, 0, 3); | 8318 | __constant_range(__c, 0, 3); |
| 7128 | 8319 | ||
| 8320 | extern __ATTRS_o __vector signed __int128 | ||
| 8321 | vec_sldw(__vector signed __int128 __a, __vector signed __int128 __b, int __c) | ||
| 8322 | __constant_range(__c, 0, 3); | ||
| 8323 | |||
| 8324 | extern __ATTRS_o __vector unsigned __int128 | ||
| 8325 | vec_sldw(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 8326 | int __c) | ||
| 8327 | __constant_range(__c, 0, 3); | ||
| 8328 | |||
| 7129 | // This prototype is deprecated. | 8329 | // This prototype is deprecated. |
| 7130 | extern __ATTRS_o __vector double | 8330 | extern __ATTRS_o __vector double |
| 7131 | vec_sldw(__vector double __a, __vector double __b, int __c) | 8331 | vec_sldw(__vector double __a, __vector double __b, int __c) |
| ... | @@ -7172,6 +8372,15 @@ vec_sldb(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -7172,6 +8372,15 @@ vec_sldb(__vector unsigned long long __a, __vector unsigned long long __b, |
| 7172 | int __c) | 8372 | int __c) |
| 7173 | __constant_range(__c, 0, 7); | 8373 | __constant_range(__c, 0, 7); |
| 7174 | 8374 | ||
| 8375 | extern __ATTRS_o __vector signed __int128 | ||
| 8376 | vec_sldb(__vector signed __int128 __a, __vector signed __int128 __b, int __c) | ||
| 8377 | __constant_range(__c, 0, 7); | ||
| 8378 | |||
| 8379 | extern __ATTRS_o __vector unsigned __int128 | ||
| 8380 | vec_sldb(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 8381 | int __c) | ||
| 8382 | __constant_range(__c, 0, 7); | ||
| 8383 | |||
| 7175 | extern __ATTRS_o __vector float | 8384 | extern __ATTRS_o __vector float |
| 7176 | vec_sldb(__vector float __a, __vector float __b, int __c) | 8385 | vec_sldb(__vector float __a, __vector float __b, int __c) |
| 7177 | __constant_range(__c, 0, 7); | 8386 | __constant_range(__c, 0, 7); |
| ... | @@ -7429,8 +8638,21 @@ vec_sral(__vector unsigned long long __a, __vector unsigned int __b) { | ... | @@ -7429,8 +8638,21 @@ vec_sral(__vector unsigned long long __a, __vector unsigned int __b) { |
| 7429 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8638 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7430 | } | 8639 | } |
| 7431 | 8640 | ||
| 8641 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 8642 | vec_sral(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 8643 | return (__vector signed __int128)__builtin_s390_vsra( | ||
| 8644 | (__vector unsigned char)__a, __b); | ||
| 8645 | } | ||
| 8646 | |||
| 8647 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 8648 | vec_sral(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 8649 | return (__vector unsigned __int128)__builtin_s390_vsra( | ||
| 8650 | (__vector unsigned char)__a, __b); | ||
| 8651 | } | ||
| 8652 | |||
| 7432 | /*-- vec_srab ---------------------------------------------------------------*/ | 8653 | /*-- vec_srab ---------------------------------------------------------------*/ |
| 7433 | 8654 | ||
| 8655 | // This prototype is deprecated. | ||
| 7434 | static inline __ATTRS_o_ai __vector signed char | 8656 | static inline __ATTRS_o_ai __vector signed char |
| 7435 | vec_srab(__vector signed char __a, __vector signed char __b) { | 8657 | vec_srab(__vector signed char __a, __vector signed char __b) { |
| 7436 | return (__vector signed char)__builtin_s390_vsrab( | 8658 | return (__vector signed char)__builtin_s390_vsrab( |
| ... | @@ -7443,6 +8665,7 @@ vec_srab(__vector signed char __a, __vector unsigned char __b) { | ... | @@ -7443,6 +8665,7 @@ vec_srab(__vector signed char __a, __vector unsigned char __b) { |
| 7443 | (__vector unsigned char)__a, __b); | 8665 | (__vector unsigned char)__a, __b); |
| 7444 | } | 8666 | } |
| 7445 | 8667 | ||
| 8668 | // This prototype is deprecated. | ||
| 7446 | static inline __ATTRS_o_ai __vector unsigned char | 8669 | static inline __ATTRS_o_ai __vector unsigned char |
| 7447 | vec_srab(__vector unsigned char __a, __vector signed char __b) { | 8670 | vec_srab(__vector unsigned char __a, __vector signed char __b) { |
| 7448 | return __builtin_s390_vsrab(__a, (__vector unsigned char)__b); | 8671 | return __builtin_s390_vsrab(__a, (__vector unsigned char)__b); |
| ... | @@ -7453,104 +8676,180 @@ vec_srab(__vector unsigned char __a, __vector unsigned char __b) { | ... | @@ -7453,104 +8676,180 @@ vec_srab(__vector unsigned char __a, __vector unsigned char __b) { |
| 7453 | return __builtin_s390_vsrab(__a, __b); | 8676 | return __builtin_s390_vsrab(__a, __b); |
| 7454 | } | 8677 | } |
| 7455 | 8678 | ||
| 8679 | // This prototype is deprecated. | ||
| 7456 | static inline __ATTRS_o_ai __vector signed short | 8680 | static inline __ATTRS_o_ai __vector signed short |
| 7457 | vec_srab(__vector signed short __a, __vector signed short __b) { | 8681 | vec_srab(__vector signed short __a, __vector signed short __b) { |
| 7458 | return (__vector signed short)__builtin_s390_vsrab( | 8682 | return (__vector signed short)__builtin_s390_vsrab( |
| 7459 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8683 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7460 | } | 8684 | } |
| 7461 | 8685 | ||
| 8686 | // This prototype is deprecated. | ||
| 7462 | static inline __ATTRS_o_ai __vector signed short | 8687 | static inline __ATTRS_o_ai __vector signed short |
| 7463 | vec_srab(__vector signed short __a, __vector unsigned short __b) { | 8688 | vec_srab(__vector signed short __a, __vector unsigned short __b) { |
| 7464 | return (__vector signed short)__builtin_s390_vsrab( | 8689 | return (__vector signed short)__builtin_s390_vsrab( |
| 7465 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8690 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7466 | } | 8691 | } |
| 7467 | 8692 | ||
| 8693 | static inline __ATTRS_o_ai __vector signed short | ||
| 8694 | vec_srab(__vector signed short __a, __vector unsigned char __b) { | ||
| 8695 | return (__vector signed short)__builtin_s390_vsrab( | ||
| 8696 | (__vector unsigned char)__a, __b); | ||
| 8697 | } | ||
| 8698 | |||
| 8699 | // This prototype is deprecated. | ||
| 7468 | static inline __ATTRS_o_ai __vector unsigned short | 8700 | static inline __ATTRS_o_ai __vector unsigned short |
| 7469 | vec_srab(__vector unsigned short __a, __vector signed short __b) { | 8701 | vec_srab(__vector unsigned short __a, __vector signed short __b) { |
| 7470 | return (__vector unsigned short)__builtin_s390_vsrab( | 8702 | return (__vector unsigned short)__builtin_s390_vsrab( |
| 7471 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8703 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7472 | } | 8704 | } |
| 7473 | 8705 | ||
| 8706 | // This prototype is deprecated. | ||
| 7474 | static inline __ATTRS_o_ai __vector unsigned short | 8707 | static inline __ATTRS_o_ai __vector unsigned short |
| 7475 | vec_srab(__vector unsigned short __a, __vector unsigned short __b) { | 8708 | vec_srab(__vector unsigned short __a, __vector unsigned short __b) { |
| 7476 | return (__vector unsigned short)__builtin_s390_vsrab( | 8709 | return (__vector unsigned short)__builtin_s390_vsrab( |
| 7477 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8710 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7478 | } | 8711 | } |
| 7479 | 8712 | ||
| 8713 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 8714 | vec_srab(__vector unsigned short __a, __vector unsigned char __b) { | ||
| 8715 | return (__vector unsigned short)__builtin_s390_vsrab( | ||
| 8716 | (__vector unsigned char)__a, __b); | ||
| 8717 | } | ||
| 8718 | |||
| 8719 | // This prototype is deprecated. | ||
| 7480 | static inline __ATTRS_o_ai __vector signed int | 8720 | static inline __ATTRS_o_ai __vector signed int |
| 7481 | vec_srab(__vector signed int __a, __vector signed int __b) { | 8721 | vec_srab(__vector signed int __a, __vector signed int __b) { |
| 7482 | return (__vector signed int)__builtin_s390_vsrab( | 8722 | return (__vector signed int)__builtin_s390_vsrab( |
| 7483 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8723 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7484 | } | 8724 | } |
| 7485 | 8725 | ||
| 8726 | // This prototype is deprecated. | ||
| 7486 | static inline __ATTRS_o_ai __vector signed int | 8727 | static inline __ATTRS_o_ai __vector signed int |
| 7487 | vec_srab(__vector signed int __a, __vector unsigned int __b) { | 8728 | vec_srab(__vector signed int __a, __vector unsigned int __b) { |
| 7488 | return (__vector signed int)__builtin_s390_vsrab( | 8729 | return (__vector signed int)__builtin_s390_vsrab( |
| 7489 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8730 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7490 | } | 8731 | } |
| 7491 | 8732 | ||
| 8733 | static inline __ATTRS_o_ai __vector signed int | ||
| 8734 | vec_srab(__vector signed int __a, __vector unsigned char __b) { | ||
| 8735 | return (__vector signed int)__builtin_s390_vsrab( | ||
| 8736 | (__vector unsigned char)__a, __b); | ||
| 8737 | } | ||
| 8738 | |||
| 8739 | // This prototype is deprecated. | ||
| 7492 | static inline __ATTRS_o_ai __vector unsigned int | 8740 | static inline __ATTRS_o_ai __vector unsigned int |
| 7493 | vec_srab(__vector unsigned int __a, __vector signed int __b) { | 8741 | vec_srab(__vector unsigned int __a, __vector signed int __b) { |
| 7494 | return (__vector unsigned int)__builtin_s390_vsrab( | 8742 | return (__vector unsigned int)__builtin_s390_vsrab( |
| 7495 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8743 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7496 | } | 8744 | } |
| 7497 | 8745 | ||
| 8746 | // This prototype is deprecated. | ||
| 7498 | static inline __ATTRS_o_ai __vector unsigned int | 8747 | static inline __ATTRS_o_ai __vector unsigned int |
| 7499 | vec_srab(__vector unsigned int __a, __vector unsigned int __b) { | 8748 | vec_srab(__vector unsigned int __a, __vector unsigned int __b) { |
| 7500 | return (__vector unsigned int)__builtin_s390_vsrab( | 8749 | return (__vector unsigned int)__builtin_s390_vsrab( |
| 7501 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8750 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7502 | } | 8751 | } |
| 7503 | 8752 | ||
| 8753 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 8754 | vec_srab(__vector unsigned int __a, __vector unsigned char __b) { | ||
| 8755 | return (__vector unsigned int)__builtin_s390_vsrab( | ||
| 8756 | (__vector unsigned char)__a, __b); | ||
| 8757 | } | ||
| 8758 | |||
| 8759 | // This prototype is deprecated. | ||
| 7504 | static inline __ATTRS_o_ai __vector signed long long | 8760 | static inline __ATTRS_o_ai __vector signed long long |
| 7505 | vec_srab(__vector signed long long __a, __vector signed long long __b) { | 8761 | vec_srab(__vector signed long long __a, __vector signed long long __b) { |
| 7506 | return (__vector signed long long)__builtin_s390_vsrab( | 8762 | return (__vector signed long long)__builtin_s390_vsrab( |
| 7507 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8763 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7508 | } | 8764 | } |
| 7509 | 8765 | ||
| 8766 | // This prototype is deprecated. | ||
| 7510 | static inline __ATTRS_o_ai __vector signed long long | 8767 | static inline __ATTRS_o_ai __vector signed long long |
| 7511 | vec_srab(__vector signed long long __a, __vector unsigned long long __b) { | 8768 | vec_srab(__vector signed long long __a, __vector unsigned long long __b) { |
| 7512 | return (__vector signed long long)__builtin_s390_vsrab( | 8769 | return (__vector signed long long)__builtin_s390_vsrab( |
| 7513 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8770 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7514 | } | 8771 | } |
| 7515 | 8772 | ||
| 8773 | static inline __ATTRS_o_ai __vector signed long long | ||
| 8774 | vec_srab(__vector signed long long __a, __vector unsigned char __b) { | ||
| 8775 | return (__vector signed long long)__builtin_s390_vsrab( | ||
| 8776 | (__vector unsigned char)__a, __b); | ||
| 8777 | } | ||
| 8778 | |||
| 8779 | // This prototype is deprecated. | ||
| 7516 | static inline __ATTRS_o_ai __vector unsigned long long | 8780 | static inline __ATTRS_o_ai __vector unsigned long long |
| 7517 | vec_srab(__vector unsigned long long __a, __vector signed long long __b) { | 8781 | vec_srab(__vector unsigned long long __a, __vector signed long long __b) { |
| 7518 | return (__vector unsigned long long)__builtin_s390_vsrab( | 8782 | return (__vector unsigned long long)__builtin_s390_vsrab( |
| 7519 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8783 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7520 | } | 8784 | } |
| 7521 | 8785 | ||
| 7522 | static inline __ATTRS_o_ai __vector unsigned long long | 8786 | // This prototype is deprecated. |
| 7523 | vec_srab(__vector unsigned long long __a, __vector unsigned long long __b) { | 8787 | static inline __ATTRS_o_ai __vector unsigned long long |
| 7524 | return (__vector unsigned long long)__builtin_s390_vsrab( | 8788 | vec_srab(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 7525 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8789 | return (__vector unsigned long long)__builtin_s390_vsrab( |
| 8790 | (__vector unsigned char)__a, (__vector unsigned char)__b); | ||
| 8791 | } | ||
| 8792 | |||
| 8793 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 8794 | vec_srab(__vector unsigned long long __a, __vector unsigned char __b) { | ||
| 8795 | return (__vector unsigned long long)__builtin_s390_vsrab( | ||
| 8796 | (__vector unsigned char)__a, __b); | ||
| 8797 | } | ||
| 8798 | |||
| 8799 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 8800 | vec_srab(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 8801 | return (__vector signed __int128)__builtin_s390_vsrab( | ||
| 8802 | (__vector unsigned char)__a, __b); | ||
| 8803 | } | ||
| 8804 | |||
| 8805 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 8806 | vec_srab(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 8807 | return (__vector unsigned __int128)__builtin_s390_vsrab( | ||
| 8808 | (__vector unsigned char)__a, __b); | ||
| 7526 | } | 8809 | } |
| 7527 | 8810 | ||
| 7528 | #if __ARCH__ >= 12 | 8811 | #if __ARCH__ >= 12 |
| 8812 | // This prototype is deprecated. | ||
| 7529 | static inline __ATTRS_o_ai __vector float | 8813 | static inline __ATTRS_o_ai __vector float |
| 7530 | vec_srab(__vector float __a, __vector signed int __b) { | 8814 | vec_srab(__vector float __a, __vector signed int __b) { |
| 7531 | return (__vector float)__builtin_s390_vsrab( | 8815 | return (__vector float)__builtin_s390_vsrab( |
| 7532 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8816 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7533 | } | 8817 | } |
| 7534 | 8818 | ||
| 8819 | // This prototype is deprecated. | ||
| 7535 | static inline __ATTRS_o_ai __vector float | 8820 | static inline __ATTRS_o_ai __vector float |
| 7536 | vec_srab(__vector float __a, __vector unsigned int __b) { | 8821 | vec_srab(__vector float __a, __vector unsigned int __b) { |
| 7537 | return (__vector float)__builtin_s390_vsrab( | 8822 | return (__vector float)__builtin_s390_vsrab( |
| 7538 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8823 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7539 | } | 8824 | } |
| 8825 | |||
| 8826 | static inline __ATTRS_o_ai __vector float | ||
| 8827 | vec_srab(__vector float __a, __vector unsigned char __b) { | ||
| 8828 | return (__vector float)__builtin_s390_vsrab( | ||
| 8829 | (__vector unsigned char)__a, __b); | ||
| 8830 | } | ||
| 7540 | #endif | 8831 | #endif |
| 7541 | 8832 | ||
| 8833 | // This prototype is deprecated. | ||
| 7542 | static inline __ATTRS_o_ai __vector double | 8834 | static inline __ATTRS_o_ai __vector double |
| 7543 | vec_srab(__vector double __a, __vector signed long long __b) { | 8835 | vec_srab(__vector double __a, __vector signed long long __b) { |
| 7544 | return (__vector double)__builtin_s390_vsrab( | 8836 | return (__vector double)__builtin_s390_vsrab( |
| 7545 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8837 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7546 | } | 8838 | } |
| 7547 | 8839 | ||
| 8840 | // This prototype is deprecated. | ||
| 7548 | static inline __ATTRS_o_ai __vector double | 8841 | static inline __ATTRS_o_ai __vector double |
| 7549 | vec_srab(__vector double __a, __vector unsigned long long __b) { | 8842 | vec_srab(__vector double __a, __vector unsigned long long __b) { |
| 7550 | return (__vector double)__builtin_s390_vsrab( | 8843 | return (__vector double)__builtin_s390_vsrab( |
| 7551 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 8844 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7552 | } | 8845 | } |
| 7553 | 8846 | ||
| 8847 | static inline __ATTRS_o_ai __vector double | ||
| 8848 | vec_srab(__vector double __a, __vector unsigned char __b) { | ||
| 8849 | return (__vector double)__builtin_s390_vsrab( | ||
| 8850 | (__vector unsigned char)__a, __b); | ||
| 8851 | } | ||
| 8852 | |||
| 7554 | /*-- vec_srl ----------------------------------------------------------------*/ | 8853 | /*-- vec_srl ----------------------------------------------------------------*/ |
| 7555 | 8854 | ||
| 7556 | static inline __ATTRS_o_ai __vector signed char | 8855 | static inline __ATTRS_o_ai __vector signed char |
| ... | @@ -7794,8 +9093,21 @@ vec_srl(__vector unsigned long long __a, __vector unsigned int __b) { | ... | @@ -7794,8 +9093,21 @@ vec_srl(__vector unsigned long long __a, __vector unsigned int __b) { |
| 7794 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9093 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7795 | } | 9094 | } |
| 7796 | 9095 | ||
| 9096 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9097 | vec_srl(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 9098 | return (__vector signed __int128)__builtin_s390_vsrl( | ||
| 9099 | (__vector unsigned char)__a, __b); | ||
| 9100 | } | ||
| 9101 | |||
| 9102 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9103 | vec_srl(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 9104 | return (__vector unsigned __int128)__builtin_s390_vsrl( | ||
| 9105 | (__vector unsigned char)__a, __b); | ||
| 9106 | } | ||
| 9107 | |||
| 7797 | /*-- vec_srb ----------------------------------------------------------------*/ | 9108 | /*-- vec_srb ----------------------------------------------------------------*/ |
| 7798 | 9109 | ||
| 9110 | // This prototype is deprecated. | ||
| 7799 | static inline __ATTRS_o_ai __vector signed char | 9111 | static inline __ATTRS_o_ai __vector signed char |
| 7800 | vec_srb(__vector signed char __a, __vector signed char __b) { | 9112 | vec_srb(__vector signed char __a, __vector signed char __b) { |
| 7801 | return (__vector signed char)__builtin_s390_vsrlb( | 9113 | return (__vector signed char)__builtin_s390_vsrlb( |
| ... | @@ -7808,6 +9120,7 @@ vec_srb(__vector signed char __a, __vector unsigned char __b) { | ... | @@ -7808,6 +9120,7 @@ vec_srb(__vector signed char __a, __vector unsigned char __b) { |
| 7808 | (__vector unsigned char)__a, __b); | 9120 | (__vector unsigned char)__a, __b); |
| 7809 | } | 9121 | } |
| 7810 | 9122 | ||
| 9123 | // This prototype is deprecated. | ||
| 7811 | static inline __ATTRS_o_ai __vector unsigned char | 9124 | static inline __ATTRS_o_ai __vector unsigned char |
| 7812 | vec_srb(__vector unsigned char __a, __vector signed char __b) { | 9125 | vec_srb(__vector unsigned char __a, __vector signed char __b) { |
| 7813 | return __builtin_s390_vsrlb(__a, (__vector unsigned char)__b); | 9126 | return __builtin_s390_vsrlb(__a, (__vector unsigned char)__b); |
| ... | @@ -7818,104 +9131,180 @@ vec_srb(__vector unsigned char __a, __vector unsigned char __b) { | ... | @@ -7818,104 +9131,180 @@ vec_srb(__vector unsigned char __a, __vector unsigned char __b) { |
| 7818 | return __builtin_s390_vsrlb(__a, __b); | 9131 | return __builtin_s390_vsrlb(__a, __b); |
| 7819 | } | 9132 | } |
| 7820 | 9133 | ||
| 9134 | // This prototype is deprecated. | ||
| 7821 | static inline __ATTRS_o_ai __vector signed short | 9135 | static inline __ATTRS_o_ai __vector signed short |
| 7822 | vec_srb(__vector signed short __a, __vector signed short __b) { | 9136 | vec_srb(__vector signed short __a, __vector signed short __b) { |
| 7823 | return (__vector signed short)__builtin_s390_vsrlb( | 9137 | return (__vector signed short)__builtin_s390_vsrlb( |
| 7824 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9138 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7825 | } | 9139 | } |
| 7826 | 9140 | ||
| 9141 | // This prototype is deprecated. | ||
| 7827 | static inline __ATTRS_o_ai __vector signed short | 9142 | static inline __ATTRS_o_ai __vector signed short |
| 7828 | vec_srb(__vector signed short __a, __vector unsigned short __b) { | 9143 | vec_srb(__vector signed short __a, __vector unsigned short __b) { |
| 7829 | return (__vector signed short)__builtin_s390_vsrlb( | 9144 | return (__vector signed short)__builtin_s390_vsrlb( |
| 7830 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9145 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7831 | } | 9146 | } |
| 7832 | 9147 | ||
| 9148 | static inline __ATTRS_o_ai __vector signed short | ||
| 9149 | vec_srb(__vector signed short __a, __vector unsigned char __b) { | ||
| 9150 | return (__vector signed short)__builtin_s390_vsrlb( | ||
| 9151 | (__vector unsigned char)__a, __b); | ||
| 9152 | } | ||
| 9153 | |||
| 9154 | // This prototype is deprecated. | ||
| 7833 | static inline __ATTRS_o_ai __vector unsigned short | 9155 | static inline __ATTRS_o_ai __vector unsigned short |
| 7834 | vec_srb(__vector unsigned short __a, __vector signed short __b) { | 9156 | vec_srb(__vector unsigned short __a, __vector signed short __b) { |
| 7835 | return (__vector unsigned short)__builtin_s390_vsrlb( | 9157 | return (__vector unsigned short)__builtin_s390_vsrlb( |
| 7836 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9158 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7837 | } | 9159 | } |
| 7838 | 9160 | ||
| 9161 | // This prototype is deprecated. | ||
| 7839 | static inline __ATTRS_o_ai __vector unsigned short | 9162 | static inline __ATTRS_o_ai __vector unsigned short |
| 7840 | vec_srb(__vector unsigned short __a, __vector unsigned short __b) { | 9163 | vec_srb(__vector unsigned short __a, __vector unsigned short __b) { |
| 7841 | return (__vector unsigned short)__builtin_s390_vsrlb( | 9164 | return (__vector unsigned short)__builtin_s390_vsrlb( |
| 7842 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9165 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7843 | } | 9166 | } |
| 7844 | 9167 | ||
| 9168 | static inline __ATTRS_o_ai __vector unsigned short | ||
| 9169 | vec_srb(__vector unsigned short __a, __vector unsigned char __b) { | ||
| 9170 | return (__vector unsigned short)__builtin_s390_vsrlb( | ||
| 9171 | (__vector unsigned char)__a, __b); | ||
| 9172 | } | ||
| 9173 | |||
| 9174 | // This prototype is deprecated. | ||
| 7845 | static inline __ATTRS_o_ai __vector signed int | 9175 | static inline __ATTRS_o_ai __vector signed int |
| 7846 | vec_srb(__vector signed int __a, __vector signed int __b) { | 9176 | vec_srb(__vector signed int __a, __vector signed int __b) { |
| 7847 | return (__vector signed int)__builtin_s390_vsrlb( | 9177 | return (__vector signed int)__builtin_s390_vsrlb( |
| 7848 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9178 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7849 | } | 9179 | } |
| 7850 | 9180 | ||
| 9181 | // This prototype is deprecated. | ||
| 7851 | static inline __ATTRS_o_ai __vector signed int | 9182 | static inline __ATTRS_o_ai __vector signed int |
| 7852 | vec_srb(__vector signed int __a, __vector unsigned int __b) { | 9183 | vec_srb(__vector signed int __a, __vector unsigned int __b) { |
| 7853 | return (__vector signed int)__builtin_s390_vsrlb( | 9184 | return (__vector signed int)__builtin_s390_vsrlb( |
| 7854 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9185 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7855 | } | 9186 | } |
| 7856 | 9187 | ||
| 9188 | static inline __ATTRS_o_ai __vector signed int | ||
| 9189 | vec_srb(__vector signed int __a, __vector unsigned char __b) { | ||
| 9190 | return (__vector signed int)__builtin_s390_vsrlb( | ||
| 9191 | (__vector unsigned char)__a, __b); | ||
| 9192 | } | ||
| 9193 | |||
| 9194 | // This prototype is deprecated. | ||
| 7857 | static inline __ATTRS_o_ai __vector unsigned int | 9195 | static inline __ATTRS_o_ai __vector unsigned int |
| 7858 | vec_srb(__vector unsigned int __a, __vector signed int __b) { | 9196 | vec_srb(__vector unsigned int __a, __vector signed int __b) { |
| 7859 | return (__vector unsigned int)__builtin_s390_vsrlb( | 9197 | return (__vector unsigned int)__builtin_s390_vsrlb( |
| 7860 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9198 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7861 | } | 9199 | } |
| 7862 | 9200 | ||
| 9201 | // This prototype is deprecated. | ||
| 7863 | static inline __ATTRS_o_ai __vector unsigned int | 9202 | static inline __ATTRS_o_ai __vector unsigned int |
| 7864 | vec_srb(__vector unsigned int __a, __vector unsigned int __b) { | 9203 | vec_srb(__vector unsigned int __a, __vector unsigned int __b) { |
| 7865 | return (__vector unsigned int)__builtin_s390_vsrlb( | 9204 | return (__vector unsigned int)__builtin_s390_vsrlb( |
| 7866 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9205 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7867 | } | 9206 | } |
| 7868 | 9207 | ||
| 9208 | static inline __ATTRS_o_ai __vector unsigned int | ||
| 9209 | vec_srb(__vector unsigned int __a, __vector unsigned char __b) { | ||
| 9210 | return (__vector unsigned int)__builtin_s390_vsrlb( | ||
| 9211 | (__vector unsigned char)__a, __b); | ||
| 9212 | } | ||
| 9213 | |||
| 9214 | // This prototype is deprecated. | ||
| 7869 | static inline __ATTRS_o_ai __vector signed long long | 9215 | static inline __ATTRS_o_ai __vector signed long long |
| 7870 | vec_srb(__vector signed long long __a, __vector signed long long __b) { | 9216 | vec_srb(__vector signed long long __a, __vector signed long long __b) { |
| 7871 | return (__vector signed long long)__builtin_s390_vsrlb( | 9217 | return (__vector signed long long)__builtin_s390_vsrlb( |
| 7872 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9218 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7873 | } | 9219 | } |
| 7874 | 9220 | ||
| 9221 | // This prototype is deprecated. | ||
| 7875 | static inline __ATTRS_o_ai __vector signed long long | 9222 | static inline __ATTRS_o_ai __vector signed long long |
| 7876 | vec_srb(__vector signed long long __a, __vector unsigned long long __b) { | 9223 | vec_srb(__vector signed long long __a, __vector unsigned long long __b) { |
| 7877 | return (__vector signed long long)__builtin_s390_vsrlb( | 9224 | return (__vector signed long long)__builtin_s390_vsrlb( |
| 7878 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9225 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7879 | } | 9226 | } |
| 7880 | 9227 | ||
| 9228 | static inline __ATTRS_o_ai __vector signed long long | ||
| 9229 | vec_srb(__vector signed long long __a, __vector unsigned char __b) { | ||
| 9230 | return (__vector signed long long)__builtin_s390_vsrlb( | ||
| 9231 | (__vector unsigned char)__a, __b); | ||
| 9232 | } | ||
| 9233 | |||
| 9234 | // This prototype is deprecated. | ||
| 7881 | static inline __ATTRS_o_ai __vector unsigned long long | 9235 | static inline __ATTRS_o_ai __vector unsigned long long |
| 7882 | vec_srb(__vector unsigned long long __a, __vector signed long long __b) { | 9236 | vec_srb(__vector unsigned long long __a, __vector signed long long __b) { |
| 7883 | return (__vector unsigned long long)__builtin_s390_vsrlb( | 9237 | return (__vector unsigned long long)__builtin_s390_vsrlb( |
| 7884 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9238 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7885 | } | 9239 | } |
| 7886 | 9240 | ||
| 9241 | // This prototype is deprecated. | ||
| 7887 | static inline __ATTRS_o_ai __vector unsigned long long | 9242 | static inline __ATTRS_o_ai __vector unsigned long long |
| 7888 | vec_srb(__vector unsigned long long __a, __vector unsigned long long __b) { | 9243 | vec_srb(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 7889 | return (__vector unsigned long long)__builtin_s390_vsrlb( | 9244 | return (__vector unsigned long long)__builtin_s390_vsrlb( |
| 7890 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9245 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7891 | } | 9246 | } |
| 7892 | 9247 | ||
| 9248 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 9249 | vec_srb(__vector unsigned long long __a, __vector unsigned char __b) { | ||
| 9250 | return (__vector unsigned long long)__builtin_s390_vsrlb( | ||
| 9251 | (__vector unsigned char)__a, __b); | ||
| 9252 | } | ||
| 9253 | |||
| 9254 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9255 | vec_srb(__vector signed __int128 __a, __vector unsigned char __b) { | ||
| 9256 | return (__vector signed __int128)__builtin_s390_vsrlb( | ||
| 9257 | (__vector unsigned char)__a, __b); | ||
| 9258 | } | ||
| 9259 | |||
| 9260 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9261 | vec_srb(__vector unsigned __int128 __a, __vector unsigned char __b) { | ||
| 9262 | return (__vector unsigned __int128)__builtin_s390_vsrlb( | ||
| 9263 | (__vector unsigned char)__a, __b); | ||
| 9264 | } | ||
| 9265 | |||
| 7893 | #if __ARCH__ >= 12 | 9266 | #if __ARCH__ >= 12 |
| 9267 | // This prototype is deprecated. | ||
| 7894 | static inline __ATTRS_o_ai __vector float | 9268 | static inline __ATTRS_o_ai __vector float |
| 7895 | vec_srb(__vector float __a, __vector signed int __b) { | 9269 | vec_srb(__vector float __a, __vector signed int __b) { |
| 7896 | return (__vector float)__builtin_s390_vsrlb( | 9270 | return (__vector float)__builtin_s390_vsrlb( |
| 7897 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9271 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7898 | } | 9272 | } |
| 7899 | 9273 | ||
| 9274 | // This prototype is deprecated. | ||
| 7900 | static inline __ATTRS_o_ai __vector float | 9275 | static inline __ATTRS_o_ai __vector float |
| 7901 | vec_srb(__vector float __a, __vector unsigned int __b) { | 9276 | vec_srb(__vector float __a, __vector unsigned int __b) { |
| 7902 | return (__vector float)__builtin_s390_vsrlb( | 9277 | return (__vector float)__builtin_s390_vsrlb( |
| 7903 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9278 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7904 | } | 9279 | } |
| 9280 | |||
| 9281 | static inline __ATTRS_o_ai __vector float | ||
| 9282 | vec_srb(__vector float __a, __vector unsigned char __b) { | ||
| 9283 | return (__vector float)__builtin_s390_vsrlb( | ||
| 9284 | (__vector unsigned char)__a, __b); | ||
| 9285 | } | ||
| 7905 | #endif | 9286 | #endif |
| 7906 | 9287 | ||
| 9288 | // This prototype is deprecated. | ||
| 7907 | static inline __ATTRS_o_ai __vector double | 9289 | static inline __ATTRS_o_ai __vector double |
| 7908 | vec_srb(__vector double __a, __vector signed long long __b) { | 9290 | vec_srb(__vector double __a, __vector signed long long __b) { |
| 7909 | return (__vector double)__builtin_s390_vsrlb( | 9291 | return (__vector double)__builtin_s390_vsrlb( |
| 7910 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9292 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7911 | } | 9293 | } |
| 7912 | 9294 | ||
| 9295 | // This prototype is deprecated. | ||
| 7913 | static inline __ATTRS_o_ai __vector double | 9296 | static inline __ATTRS_o_ai __vector double |
| 7914 | vec_srb(__vector double __a, __vector unsigned long long __b) { | 9297 | vec_srb(__vector double __a, __vector unsigned long long __b) { |
| 7915 | return (__vector double)__builtin_s390_vsrlb( | 9298 | return (__vector double)__builtin_s390_vsrlb( |
| 7916 | (__vector unsigned char)__a, (__vector unsigned char)__b); | 9299 | (__vector unsigned char)__a, (__vector unsigned char)__b); |
| 7917 | } | 9300 | } |
| 7918 | 9301 | ||
| 9302 | static inline __ATTRS_o_ai __vector double | ||
| 9303 | vec_srb(__vector double __a, __vector unsigned char __b) { | ||
| 9304 | return (__vector double)__builtin_s390_vsrlb( | ||
| 9305 | (__vector unsigned char)__a, __b); | ||
| 9306 | } | ||
| 9307 | |||
| 7919 | /*-- vec_srdb ---------------------------------------------------------------*/ | 9308 | /*-- vec_srdb ---------------------------------------------------------------*/ |
| 7920 | 9309 | ||
| 7921 | #if __ARCH__ >= 13 | 9310 | #if __ARCH__ >= 13 |
| ... | @@ -7953,6 +9342,15 @@ vec_srdb(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -7953,6 +9342,15 @@ vec_srdb(__vector unsigned long long __a, __vector unsigned long long __b, |
| 7953 | int __c) | 9342 | int __c) |
| 7954 | __constant_range(__c, 0, 7); | 9343 | __constant_range(__c, 0, 7); |
| 7955 | 9344 | ||
| 9345 | extern __ATTRS_o __vector signed __int128 | ||
| 9346 | vec_srdb(__vector signed __int128 __a, __vector signed __int128 __b, int __c) | ||
| 9347 | __constant_range(__c, 0, 7); | ||
| 9348 | |||
| 9349 | extern __ATTRS_o __vector unsigned __int128 | ||
| 9350 | vec_srdb(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 9351 | int __c) | ||
| 9352 | __constant_range(__c, 0, 7); | ||
| 9353 | |||
| 7956 | extern __ATTRS_o __vector float | 9354 | extern __ATTRS_o __vector float |
| 7957 | vec_srdb(__vector float __a, __vector float __b, int __c) | 9355 | vec_srdb(__vector float __a, __vector float __b, int __c) |
| 7958 | __constant_range(__c, 0, 7); | 9356 | __constant_range(__c, 0, 7); |
| ... | @@ -7989,6 +9387,11 @@ vec_abs(__vector signed long long __a) { | ... | @@ -7989,6 +9387,11 @@ vec_abs(__vector signed long long __a) { |
| 7989 | return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed long long)0)); | 9387 | return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed long long)0)); |
| 7990 | } | 9388 | } |
| 7991 | 9389 | ||
| 9390 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9391 | vec_abs(__vector signed __int128 __a) { | ||
| 9392 | return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed __int128)0)); | ||
| 9393 | } | ||
| 9394 | |||
| 7992 | #if __ARCH__ >= 12 | 9395 | #if __ARCH__ >= 12 |
| 7993 | static inline __ATTRS_o_ai __vector float | 9396 | static inline __ATTRS_o_ai __vector float |
| 7994 | vec_abs(__vector float __a) { | 9397 | vec_abs(__vector float __a) { |
| ... | @@ -8169,6 +9572,16 @@ vec_max(__vector __bool long long __a, __vector unsigned long long __b) { | ... | @@ -8169,6 +9572,16 @@ vec_max(__vector __bool long long __a, __vector unsigned long long __b) { |
| 8169 | return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); | 9572 | return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); |
| 8170 | } | 9573 | } |
| 8171 | 9574 | ||
| 9575 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9576 | vec_max(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 9577 | return vec_sel(__b, __a, vec_cmpgt(__a, __b)); | ||
| 9578 | } | ||
| 9579 | |||
| 9580 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9581 | vec_max(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 9582 | return vec_sel(__b, __a, vec_cmpgt(__a, __b)); | ||
| 9583 | } | ||
| 9584 | |||
| 8172 | #if __ARCH__ >= 12 | 9585 | #if __ARCH__ >= 12 |
| 8173 | static inline __ATTRS_o_ai __vector float | 9586 | static inline __ATTRS_o_ai __vector float |
| 8174 | vec_max(__vector float __a, __vector float __b) { | 9587 | vec_max(__vector float __a, __vector float __b) { |
| ... | @@ -8339,6 +9752,16 @@ vec_min(__vector __bool long long __a, __vector unsigned long long __b) { | ... | @@ -8339,6 +9752,16 @@ vec_min(__vector __bool long long __a, __vector unsigned long long __b) { |
| 8339 | return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); | 9752 | return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); |
| 8340 | } | 9753 | } |
| 8341 | 9754 | ||
| 9755 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9756 | vec_min(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 9757 | return vec_sel(__a, __b, vec_cmpgt(__a, __b)); | ||
| 9758 | } | ||
| 9759 | |||
| 9760 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9761 | vec_min(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 9762 | return vec_sel(__a, __b, vec_cmpgt(__a, __b)); | ||
| 9763 | } | ||
| 9764 | |||
| 8342 | #if __ARCH__ >= 12 | 9765 | #if __ARCH__ >= 12 |
| 8343 | static inline __ATTRS_o_ai __vector float | 9766 | static inline __ATTRS_o_ai __vector float |
| 8344 | vec_min(__vector float __a, __vector float __b) { | 9767 | vec_min(__vector float __a, __vector float __b) { |
| ... | @@ -8357,9 +9780,11 @@ vec_min(__vector double __a, __vector double __b) { | ... | @@ -8357,9 +9780,11 @@ vec_min(__vector double __a, __vector double __b) { |
| 8357 | 9780 | ||
| 8358 | /*-- vec_add_u128 -----------------------------------------------------------*/ | 9781 | /*-- vec_add_u128 -----------------------------------------------------------*/ |
| 8359 | 9782 | ||
| 9783 | // This prototype is deprecated. | ||
| 8360 | static inline __ATTRS_ai __vector unsigned char | 9784 | static inline __ATTRS_ai __vector unsigned char |
| 8361 | vec_add_u128(__vector unsigned char __a, __vector unsigned char __b) { | 9785 | vec_add_u128(__vector unsigned char __a, __vector unsigned char __b) { |
| 8362 | return (__vector unsigned char)((__int128)__a + (__int128)__b); | 9786 | return (__vector unsigned char)(__vector unsigned __int128) |
| 9787 | ((__int128)__a + (__int128)__b); | ||
| 8363 | } | 9788 | } |
| 8364 | 9789 | ||
| 8365 | /*-- vec_addc ---------------------------------------------------------------*/ | 9790 | /*-- vec_addc ---------------------------------------------------------------*/ |
| ... | @@ -8384,30 +9809,59 @@ vec_addc(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -8384,30 +9809,59 @@ vec_addc(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 8384 | return __builtin_s390_vaccg(__a, __b); | 9809 | return __builtin_s390_vaccg(__a, __b); |
| 8385 | } | 9810 | } |
| 8386 | 9811 | ||
| 9812 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9813 | vec_addc(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 9814 | return (__vector unsigned __int128) | ||
| 9815 | __builtin_s390_vaccq((unsigned __int128)__a, (unsigned __int128)__b); | ||
| 9816 | } | ||
| 9817 | |||
| 8387 | /*-- vec_addc_u128 ----------------------------------------------------------*/ | 9818 | /*-- vec_addc_u128 ----------------------------------------------------------*/ |
| 8388 | 9819 | ||
| 9820 | // This prototype is deprecated. | ||
| 8389 | static inline __ATTRS_ai __vector unsigned char | 9821 | static inline __ATTRS_ai __vector unsigned char |
| 8390 | vec_addc_u128(__vector unsigned char __a, __vector unsigned char __b) { | 9822 | vec_addc_u128(__vector unsigned char __a, __vector unsigned char __b) { |
| 8391 | return (__vector unsigned char) | 9823 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8392 | __builtin_s390_vaccq((unsigned __int128)__a, (unsigned __int128)__b); | 9824 | __builtin_s390_vaccq((unsigned __int128)__a, (unsigned __int128)__b); |
| 8393 | } | 9825 | } |
| 8394 | 9826 | ||
| 9827 | /*-- vec_adde ---------------------------------------------------------------*/ | ||
| 9828 | |||
| 9829 | static inline __ATTRS_ai __vector unsigned __int128 | ||
| 9830 | vec_adde(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 9831 | __vector unsigned __int128 __c) { | ||
| 9832 | return (__vector unsigned __int128) | ||
| 9833 | __builtin_s390_vacq((unsigned __int128)__a, (unsigned __int128)__b, | ||
| 9834 | (unsigned __int128)__c); | ||
| 9835 | } | ||
| 9836 | |||
| 8395 | /*-- vec_adde_u128 ----------------------------------------------------------*/ | 9837 | /*-- vec_adde_u128 ----------------------------------------------------------*/ |
| 8396 | 9838 | ||
| 9839 | // This prototype is deprecated. | ||
| 8397 | static inline __ATTRS_ai __vector unsigned char | 9840 | static inline __ATTRS_ai __vector unsigned char |
| 8398 | vec_adde_u128(__vector unsigned char __a, __vector unsigned char __b, | 9841 | vec_adde_u128(__vector unsigned char __a, __vector unsigned char __b, |
| 8399 | __vector unsigned char __c) { | 9842 | __vector unsigned char __c) { |
| 8400 | return (__vector unsigned char) | 9843 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8401 | __builtin_s390_vacq((unsigned __int128)__a, (unsigned __int128)__b, | 9844 | __builtin_s390_vacq((unsigned __int128)__a, (unsigned __int128)__b, |
| 8402 | (unsigned __int128)__c); | 9845 | (unsigned __int128)__c); |
| 8403 | } | 9846 | } |
| 8404 | 9847 | ||
| 9848 | /*-- vec_addec --------------------------------------------------------------*/ | ||
| 9849 | |||
| 9850 | static inline __ATTRS_ai __vector unsigned __int128 | ||
| 9851 | vec_addec(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 9852 | __vector unsigned __int128 __c) { | ||
| 9853 | return (__vector unsigned __int128) | ||
| 9854 | __builtin_s390_vacccq((unsigned __int128)__a, (unsigned __int128)__b, | ||
| 9855 | (unsigned __int128)__c); | ||
| 9856 | } | ||
| 9857 | |||
| 8405 | /*-- vec_addec_u128 ---------------------------------------------------------*/ | 9858 | /*-- vec_addec_u128 ---------------------------------------------------------*/ |
| 8406 | 9859 | ||
| 9860 | // This prototype is deprecated. | ||
| 8407 | static inline __ATTRS_ai __vector unsigned char | 9861 | static inline __ATTRS_ai __vector unsigned char |
| 8408 | vec_addec_u128(__vector unsigned char __a, __vector unsigned char __b, | 9862 | vec_addec_u128(__vector unsigned char __a, __vector unsigned char __b, |
| 8409 | __vector unsigned char __c) { | 9863 | __vector unsigned char __c) { |
| 8410 | return (__vector unsigned char) | 9864 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8411 | __builtin_s390_vacccq((unsigned __int128)__a, (unsigned __int128)__b, | 9865 | __builtin_s390_vacccq((unsigned __int128)__a, (unsigned __int128)__b, |
| 8412 | (unsigned __int128)__c); | 9866 | (unsigned __int128)__c); |
| 8413 | } | 9867 | } |
| ... | @@ -8434,6 +9888,14 @@ vec_avg(__vector signed long long __a, __vector signed long long __b) { | ... | @@ -8434,6 +9888,14 @@ vec_avg(__vector signed long long __a, __vector signed long long __b) { |
| 8434 | return __builtin_s390_vavgg(__a, __b); | 9888 | return __builtin_s390_vavgg(__a, __b); |
| 8435 | } | 9889 | } |
| 8436 | 9890 | ||
| 9891 | #if __ARCH__ >= 15 | ||
| 9892 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 9893 | vec_avg(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 9894 | return (__vector signed __int128) | ||
| 9895 | __builtin_s390_vavgq((signed __int128)__a, (signed __int128)__b); | ||
| 9896 | } | ||
| 9897 | #endif | ||
| 9898 | |||
| 8437 | static inline __ATTRS_o_ai __vector unsigned char | 9899 | static inline __ATTRS_o_ai __vector unsigned char |
| 8438 | vec_avg(__vector unsigned char __a, __vector unsigned char __b) { | 9900 | vec_avg(__vector unsigned char __a, __vector unsigned char __b) { |
| 8439 | return __builtin_s390_vavglb(__a, __b); | 9901 | return __builtin_s390_vavglb(__a, __b); |
| ... | @@ -8454,6 +9916,14 @@ vec_avg(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -8454,6 +9916,14 @@ vec_avg(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 8454 | return __builtin_s390_vavglg(__a, __b); | 9916 | return __builtin_s390_vavglg(__a, __b); |
| 8455 | } | 9917 | } |
| 8456 | 9918 | ||
| 9919 | #if __ARCH__ >= 15 | ||
| 9920 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9921 | vec_avg(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 9922 | return (__vector unsigned __int128) | ||
| 9923 | __builtin_s390_vavglq((unsigned __int128)__a, (unsigned __int128)__b); | ||
| 9924 | } | ||
| 9925 | #endif | ||
| 9926 | |||
| 8457 | /*-- vec_checksum -----------------------------------------------------------*/ | 9927 | /*-- vec_checksum -----------------------------------------------------------*/ |
| 8458 | 9928 | ||
| 8459 | static inline __ATTRS_ai __vector unsigned int | 9929 | static inline __ATTRS_ai __vector unsigned int |
| ... | @@ -8478,12 +9948,19 @@ vec_gfmsum(__vector unsigned int __a, __vector unsigned int __b) { | ... | @@ -8478,12 +9948,19 @@ vec_gfmsum(__vector unsigned int __a, __vector unsigned int __b) { |
| 8478 | return __builtin_s390_vgfmf(__a, __b); | 9948 | return __builtin_s390_vgfmf(__a, __b); |
| 8479 | } | 9949 | } |
| 8480 | 9950 | ||
| 9951 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9952 | vec_gfmsum(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 9953 | return (__vector unsigned __int128)__builtin_s390_vgfmg(__a, __b); | ||
| 9954 | } | ||
| 9955 | |||
| 8481 | /*-- vec_gfmsum_128 ---------------------------------------------------------*/ | 9956 | /*-- vec_gfmsum_128 ---------------------------------------------------------*/ |
| 8482 | 9957 | ||
| 9958 | // This prototype is deprecated. | ||
| 8483 | static inline __ATTRS_o_ai __vector unsigned char | 9959 | static inline __ATTRS_o_ai __vector unsigned char |
| 8484 | vec_gfmsum_128(__vector unsigned long long __a, | 9960 | vec_gfmsum_128(__vector unsigned long long __a, |
| 8485 | __vector unsigned long long __b) { | 9961 | __vector unsigned long long __b) { |
| 8486 | return (__vector unsigned char)__builtin_s390_vgfmg(__a, __b); | 9962 | return (__vector unsigned char)(__vector unsigned __int128) |
| 9963 | __builtin_s390_vgfmg(__a, __b); | ||
| 8487 | } | 9964 | } |
| 8488 | 9965 | ||
| 8489 | /*-- vec_gfmsum_accum -------------------------------------------------------*/ | 9966 | /*-- vec_gfmsum_accum -------------------------------------------------------*/ |
| ... | @@ -8506,13 +9983,21 @@ vec_gfmsum_accum(__vector unsigned int __a, __vector unsigned int __b, | ... | @@ -8506,13 +9983,21 @@ vec_gfmsum_accum(__vector unsigned int __a, __vector unsigned int __b, |
| 8506 | return __builtin_s390_vgfmaf(__a, __b, __c); | 9983 | return __builtin_s390_vgfmaf(__a, __b, __c); |
| 8507 | } | 9984 | } |
| 8508 | 9985 | ||
| 9986 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 9987 | vec_gfmsum_accum(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 9988 | __vector unsigned __int128 __c) { | ||
| 9989 | return (__vector unsigned __int128) | ||
| 9990 | __builtin_s390_vgfmag(__a, __b, (unsigned __int128)__c); | ||
| 9991 | } | ||
| 9992 | |||
| 8509 | /*-- vec_gfmsum_accum_128 ---------------------------------------------------*/ | 9993 | /*-- vec_gfmsum_accum_128 ---------------------------------------------------*/ |
| 8510 | 9994 | ||
| 9995 | // This prototype is deprecated. | ||
| 8511 | static inline __ATTRS_o_ai __vector unsigned char | 9996 | static inline __ATTRS_o_ai __vector unsigned char |
| 8512 | vec_gfmsum_accum_128(__vector unsigned long long __a, | 9997 | vec_gfmsum_accum_128(__vector unsigned long long __a, |
| 8513 | __vector unsigned long long __b, | 9998 | __vector unsigned long long __b, |
| 8514 | __vector unsigned char __c) { | 9999 | __vector unsigned char __c) { |
| 8515 | return (__vector unsigned char) | 10000 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8516 | __builtin_s390_vgfmag(__a, __b, (unsigned __int128)__c); | 10001 | __builtin_s390_vgfmag(__a, __b, (unsigned __int128)__c); |
| 8517 | } | 10002 | } |
| 8518 | 10003 | ||
| ... | @@ -8590,6 +10075,56 @@ vec_mladd(__vector unsigned int __a, __vector unsigned int __b, | ... | @@ -8590,6 +10075,56 @@ vec_mladd(__vector unsigned int __a, __vector unsigned int __b, |
| 8590 | return __a * __b + __c; | 10075 | return __a * __b + __c; |
| 8591 | } | 10076 | } |
| 8592 | 10077 | ||
| 10078 | #if __ARCH__ >= 15 | ||
| 10079 | static inline __ATTRS_o_ai __vector signed long long | ||
| 10080 | vec_mladd(__vector signed long long __a, __vector signed long long __b, | ||
| 10081 | __vector signed long long __c) { | ||
| 10082 | return __a * __b + __c; | ||
| 10083 | } | ||
| 10084 | |||
| 10085 | static inline __ATTRS_o_ai __vector signed long long | ||
| 10086 | vec_mladd(__vector unsigned long long __a, __vector signed long long __b, | ||
| 10087 | __vector signed long long __c) { | ||
| 10088 | return (__vector signed long long)__a * __b + __c; | ||
| 10089 | } | ||
| 10090 | |||
| 10091 | static inline __ATTRS_o_ai __vector signed long long | ||
| 10092 | vec_mladd(__vector signed long long __a, __vector unsigned long long __b, | ||
| 10093 | __vector unsigned long long __c) { | ||
| 10094 | return __a * (__vector signed long long)__b + (__vector signed long long)__c; | ||
| 10095 | } | ||
| 10096 | |||
| 10097 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 10098 | vec_mladd(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 10099 | __vector unsigned long long __c) { | ||
| 10100 | return __a * __b + __c; | ||
| 10101 | } | ||
| 10102 | |||
| 10103 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10104 | vec_mladd(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 10105 | __vector signed __int128 __c) { | ||
| 10106 | return __a * __b + __c; | ||
| 10107 | } | ||
| 10108 | |||
| 10109 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10110 | vec_mladd(__vector unsigned __int128 __a, __vector signed __int128 __b, | ||
| 10111 | __vector signed __int128 __c) { | ||
| 10112 | return (__vector signed __int128)__a * __b + __c; | ||
| 10113 | } | ||
| 10114 | |||
| 10115 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10116 | vec_mladd(__vector signed __int128 __a, __vector unsigned __int128 __b, | ||
| 10117 | __vector unsigned __int128 __c) { | ||
| 10118 | return __a * (__vector signed __int128)__b + (__vector signed __int128)__c; | ||
| 10119 | } | ||
| 10120 | |||
| 10121 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10122 | vec_mladd(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 10123 | __vector unsigned __int128 __c) { | ||
| 10124 | return __a * __b + __c; | ||
| 10125 | } | ||
| 10126 | #endif | ||
| 10127 | |||
| 8593 | /*-- vec_mhadd --------------------------------------------------------------*/ | 10128 | /*-- vec_mhadd --------------------------------------------------------------*/ |
| 8594 | 10129 | ||
| 8595 | static inline __ATTRS_o_ai __vector signed char | 10130 | static inline __ATTRS_o_ai __vector signed char |
| ... | @@ -8628,6 +10163,34 @@ vec_mhadd(__vector unsigned int __a, __vector unsigned int __b, | ... | @@ -8628,6 +10163,34 @@ vec_mhadd(__vector unsigned int __a, __vector unsigned int __b, |
| 8628 | return __builtin_s390_vmalhf(__a, __b, __c); | 10163 | return __builtin_s390_vmalhf(__a, __b, __c); |
| 8629 | } | 10164 | } |
| 8630 | 10165 | ||
| 10166 | #if __ARCH__ >= 15 | ||
| 10167 | static inline __ATTRS_o_ai __vector signed long long | ||
| 10168 | vec_mhadd(__vector signed long long __a, __vector signed long long __b, | ||
| 10169 | __vector signed long long __c) { | ||
| 10170 | return __builtin_s390_vmahg(__a, __b, __c); | ||
| 10171 | } | ||
| 10172 | |||
| 10173 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 10174 | vec_mhadd(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 10175 | __vector unsigned long long __c) { | ||
| 10176 | return __builtin_s390_vmalhg(__a, __b, __c); | ||
| 10177 | } | ||
| 10178 | |||
| 10179 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10180 | vec_mhadd(__vector signed __int128 __a, __vector signed __int128 __b, | ||
| 10181 | __vector signed __int128 __c) { | ||
| 10182 | return (__vector signed __int128) | ||
| 10183 | __builtin_s390_vmahq((signed __int128)__a, (signed __int128)__b, (signed __int128)__c); | ||
| 10184 | } | ||
| 10185 | |||
| 10186 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10187 | vec_mhadd(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 10188 | __vector unsigned __int128 __c) { | ||
| 10189 | return (__vector unsigned __int128) | ||
| 10190 | __builtin_s390_vmalhq((unsigned __int128)__a, (unsigned __int128)__b, (unsigned __int128)__c); | ||
| 10191 | } | ||
| 10192 | #endif | ||
| 10193 | |||
| 8631 | /*-- vec_meadd --------------------------------------------------------------*/ | 10194 | /*-- vec_meadd --------------------------------------------------------------*/ |
| 8632 | 10195 | ||
| 8633 | static inline __ATTRS_o_ai __vector signed short | 10196 | static inline __ATTRS_o_ai __vector signed short |
| ... | @@ -8666,6 +10229,22 @@ vec_meadd(__vector unsigned int __a, __vector unsigned int __b, | ... | @@ -8666,6 +10229,22 @@ vec_meadd(__vector unsigned int __a, __vector unsigned int __b, |
| 8666 | return __builtin_s390_vmalef(__a, __b, __c); | 10229 | return __builtin_s390_vmalef(__a, __b, __c); |
| 8667 | } | 10230 | } |
| 8668 | 10231 | ||
| 10232 | #if __ARCH__ >= 15 | ||
| 10233 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10234 | vec_meadd(__vector signed long long __a, __vector signed long long __b, | ||
| 10235 | __vector signed __int128 __c) { | ||
| 10236 | return (__vector signed __int128) | ||
| 10237 | __builtin_s390_vmaeg(__a, __b, (signed __int128)__c); | ||
| 10238 | } | ||
| 10239 | |||
| 10240 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10241 | vec_meadd(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 10242 | __vector unsigned __int128 __c) { | ||
| 10243 | return (__vector unsigned __int128) | ||
| 10244 | __builtin_s390_vmaleg(__a, __b, (unsigned __int128)__c); | ||
| 10245 | } | ||
| 10246 | #endif | ||
| 10247 | |||
| 8669 | /*-- vec_moadd --------------------------------------------------------------*/ | 10248 | /*-- vec_moadd --------------------------------------------------------------*/ |
| 8670 | 10249 | ||
| 8671 | static inline __ATTRS_o_ai __vector signed short | 10250 | static inline __ATTRS_o_ai __vector signed short |
| ... | @@ -8704,6 +10283,22 @@ vec_moadd(__vector unsigned int __a, __vector unsigned int __b, | ... | @@ -8704,6 +10283,22 @@ vec_moadd(__vector unsigned int __a, __vector unsigned int __b, |
| 8704 | return __builtin_s390_vmalof(__a, __b, __c); | 10283 | return __builtin_s390_vmalof(__a, __b, __c); |
| 8705 | } | 10284 | } |
| 8706 | 10285 | ||
| 10286 | #if __ARCH__ >= 15 | ||
| 10287 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10288 | vec_moadd(__vector signed long long __a, __vector signed long long __b, | ||
| 10289 | __vector signed __int128 __c) { | ||
| 10290 | return (__vector signed __int128) | ||
| 10291 | __builtin_s390_vmaog(__a, __b, (signed __int128)__c); | ||
| 10292 | } | ||
| 10293 | |||
| 10294 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10295 | vec_moadd(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 10296 | __vector unsigned __int128 __c) { | ||
| 10297 | return (__vector unsigned __int128) | ||
| 10298 | __builtin_s390_vmalog(__a, __b, (unsigned __int128)__c); | ||
| 10299 | } | ||
| 10300 | #endif | ||
| 10301 | |||
| 8707 | /*-- vec_mulh ---------------------------------------------------------------*/ | 10302 | /*-- vec_mulh ---------------------------------------------------------------*/ |
| 8708 | 10303 | ||
| 8709 | static inline __ATTRS_o_ai __vector signed char | 10304 | static inline __ATTRS_o_ai __vector signed char |
| ... | @@ -8736,6 +10331,30 @@ vec_mulh(__vector unsigned int __a, __vector unsigned int __b) { | ... | @@ -8736,6 +10331,30 @@ vec_mulh(__vector unsigned int __a, __vector unsigned int __b) { |
| 8736 | return __builtin_s390_vmlhf(__a, __b); | 10331 | return __builtin_s390_vmlhf(__a, __b); |
| 8737 | } | 10332 | } |
| 8738 | 10333 | ||
| 10334 | #if __ARCH__ >= 15 | ||
| 10335 | static inline __ATTRS_o_ai __vector signed long long | ||
| 10336 | vec_mulh(__vector signed long long __a, __vector signed long long __b) { | ||
| 10337 | return __builtin_s390_vmhg(__a, __b); | ||
| 10338 | } | ||
| 10339 | |||
| 10340 | static inline __ATTRS_o_ai __vector unsigned long long | ||
| 10341 | vec_mulh(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 10342 | return __builtin_s390_vmlhg(__a, __b); | ||
| 10343 | } | ||
| 10344 | |||
| 10345 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10346 | vec_mulh(__vector signed __int128 __a, __vector signed __int128 __b) { | ||
| 10347 | return (__vector signed __int128) | ||
| 10348 | __builtin_s390_vmhq((signed __int128)__a, (signed __int128)__b); | ||
| 10349 | } | ||
| 10350 | |||
| 10351 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10352 | vec_mulh(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 10353 | return (__vector unsigned __int128) | ||
| 10354 | __builtin_s390_vmlhq((unsigned __int128)__a, (unsigned __int128)__b); | ||
| 10355 | } | ||
| 10356 | #endif | ||
| 10357 | |||
| 8739 | /*-- vec_mule ---------------------------------------------------------------*/ | 10358 | /*-- vec_mule ---------------------------------------------------------------*/ |
| 8740 | 10359 | ||
| 8741 | static inline __ATTRS_o_ai __vector signed short | 10360 | static inline __ATTRS_o_ai __vector signed short |
| ... | @@ -8768,6 +10387,18 @@ vec_mule(__vector unsigned int __a, __vector unsigned int __b) { | ... | @@ -8768,6 +10387,18 @@ vec_mule(__vector unsigned int __a, __vector unsigned int __b) { |
| 8768 | return __builtin_s390_vmlef(__a, __b); | 10387 | return __builtin_s390_vmlef(__a, __b); |
| 8769 | } | 10388 | } |
| 8770 | 10389 | ||
| 10390 | #if __ARCH__ >= 15 | ||
| 10391 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10392 | vec_mule(__vector signed long long __a, __vector signed long long __b) { | ||
| 10393 | return (__vector signed __int128)__builtin_s390_vmeg(__a, __b); | ||
| 10394 | } | ||
| 10395 | |||
| 10396 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10397 | vec_mule(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 10398 | return (__vector unsigned __int128)__builtin_s390_vmleg(__a, __b); | ||
| 10399 | } | ||
| 10400 | #endif | ||
| 10401 | |||
| 8771 | /*-- vec_mulo ---------------------------------------------------------------*/ | 10402 | /*-- vec_mulo ---------------------------------------------------------------*/ |
| 8772 | 10403 | ||
| 8773 | static inline __ATTRS_o_ai __vector signed short | 10404 | static inline __ATTRS_o_ai __vector signed short |
| ... | @@ -8800,9 +10431,35 @@ vec_mulo(__vector unsigned int __a, __vector unsigned int __b) { | ... | @@ -8800,9 +10431,35 @@ vec_mulo(__vector unsigned int __a, __vector unsigned int __b) { |
| 8800 | return __builtin_s390_vmlof(__a, __b); | 10431 | return __builtin_s390_vmlof(__a, __b); |
| 8801 | } | 10432 | } |
| 8802 | 10433 | ||
| 10434 | #if __ARCH__ >= 15 | ||
| 10435 | static inline __ATTRS_o_ai __vector signed __int128 | ||
| 10436 | vec_mulo(__vector signed long long __a, __vector signed long long __b) { | ||
| 10437 | return (__vector signed __int128)__builtin_s390_vmog(__a, __b); | ||
| 10438 | } | ||
| 10439 | |||
| 10440 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10441 | vec_mulo(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 10442 | return (__vector unsigned __int128)__builtin_s390_vmlog(__a, __b); | ||
| 10443 | } | ||
| 10444 | #endif | ||
| 10445 | |||
| 10446 | /*-- vec_msum ---------------------------------------------------------------*/ | ||
| 10447 | |||
| 10448 | #if __ARCH__ >= 12 | ||
| 10449 | extern __ATTRS_o __vector unsigned __int128 | ||
| 10450 | vec_msum(__vector unsigned long long __a, __vector unsigned long long __b, | ||
| 10451 | __vector unsigned __int128 __c, int __d) | ||
| 10452 | __constant_range(__d, 0, 15); | ||
| 10453 | |||
| 10454 | #define vec_msum(X, Y, Z, W) \ | ||
| 10455 | ((__typeof__((vec_msum)((X), (Y), (Z), (W)))) \ | ||
| 10456 | __builtin_s390_vmslg((X), (Y), (unsigned __int128)(Z), (W))) | ||
| 10457 | #endif | ||
| 10458 | |||
| 8803 | /*-- vec_msum_u128 ----------------------------------------------------------*/ | 10459 | /*-- vec_msum_u128 ----------------------------------------------------------*/ |
| 8804 | 10460 | ||
| 8805 | #if __ARCH__ >= 12 | 10461 | #if __ARCH__ >= 12 |
| 10462 | // This prototype is deprecated. | ||
| 8806 | extern __ATTRS_o __vector unsigned char | 10463 | extern __ATTRS_o __vector unsigned char |
| 8807 | vec_msum_u128(__vector unsigned long long __a, __vector unsigned long long __b, | 10464 | vec_msum_u128(__vector unsigned long long __a, __vector unsigned long long __b, |
| 8808 | __vector unsigned char __c, int __d) | 10465 | __vector unsigned char __c, int __d) |
| ... | @@ -8810,14 +10467,17 @@ vec_msum_u128(__vector unsigned long long __a, __vector unsigned long long __b, | ... | @@ -8810,14 +10467,17 @@ vec_msum_u128(__vector unsigned long long __a, __vector unsigned long long __b, |
| 8810 | 10467 | ||
| 8811 | #define vec_msum_u128(X, Y, Z, W) \ | 10468 | #define vec_msum_u128(X, Y, Z, W) \ |
| 8812 | ((__typeof__((vec_msum_u128)((X), (Y), (Z), (W)))) \ | 10469 | ((__typeof__((vec_msum_u128)((X), (Y), (Z), (W)))) \ |
| 10470 | (__vector unsigned __int128) \ | ||
| 8813 | __builtin_s390_vmslg((X), (Y), (unsigned __int128)(Z), (W))) | 10471 | __builtin_s390_vmslg((X), (Y), (unsigned __int128)(Z), (W))) |
| 8814 | #endif | 10472 | #endif |
| 8815 | 10473 | ||
| 8816 | /*-- vec_sub_u128 -----------------------------------------------------------*/ | 10474 | /*-- vec_sub_u128 -----------------------------------------------------------*/ |
| 8817 | 10475 | ||
| 10476 | // This prototype is deprecated. | ||
| 8818 | static inline __ATTRS_ai __vector unsigned char | 10477 | static inline __ATTRS_ai __vector unsigned char |
| 8819 | vec_sub_u128(__vector unsigned char __a, __vector unsigned char __b) { | 10478 | vec_sub_u128(__vector unsigned char __a, __vector unsigned char __b) { |
| 8820 | return (__vector unsigned char)((__int128)__a - (__int128)__b); | 10479 | return (__vector unsigned char)(__vector unsigned __int128) |
| 10480 | ((__int128)__a - (__int128)__b); | ||
| 8821 | } | 10481 | } |
| 8822 | 10482 | ||
| 8823 | /*-- vec_subc ---------------------------------------------------------------*/ | 10483 | /*-- vec_subc ---------------------------------------------------------------*/ |
| ... | @@ -8842,30 +10502,59 @@ vec_subc(__vector unsigned long long __a, __vector unsigned long long __b) { | ... | @@ -8842,30 +10502,59 @@ vec_subc(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 8842 | return __builtin_s390_vscbig(__a, __b); | 10502 | return __builtin_s390_vscbig(__a, __b); |
| 8843 | } | 10503 | } |
| 8844 | 10504 | ||
| 10505 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10506 | vec_subc(__vector unsigned __int128 __a, __vector unsigned __int128 __b) { | ||
| 10507 | return (__vector unsigned __int128) | ||
| 10508 | __builtin_s390_vscbiq((unsigned __int128)__a, (unsigned __int128)__b); | ||
| 10509 | } | ||
| 10510 | |||
| 8845 | /*-- vec_subc_u128 ----------------------------------------------------------*/ | 10511 | /*-- vec_subc_u128 ----------------------------------------------------------*/ |
| 8846 | 10512 | ||
| 10513 | // This prototype is deprecated. | ||
| 8847 | static inline __ATTRS_ai __vector unsigned char | 10514 | static inline __ATTRS_ai __vector unsigned char |
| 8848 | vec_subc_u128(__vector unsigned char __a, __vector unsigned char __b) { | 10515 | vec_subc_u128(__vector unsigned char __a, __vector unsigned char __b) { |
| 8849 | return (__vector unsigned char) | 10516 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8850 | __builtin_s390_vscbiq((unsigned __int128)__a, (unsigned __int128)__b); | 10517 | __builtin_s390_vscbiq((unsigned __int128)__a, (unsigned __int128)__b); |
| 8851 | } | 10518 | } |
| 8852 | 10519 | ||
| 10520 | /*-- vec_sube ---------------------------------------------------------------*/ | ||
| 10521 | |||
| 10522 | static inline __ATTRS_ai __vector unsigned __int128 | ||
| 10523 | vec_sube(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 10524 | __vector unsigned __int128 __c) { | ||
| 10525 | return (__vector unsigned __int128) | ||
| 10526 | __builtin_s390_vsbiq((unsigned __int128)__a, (unsigned __int128)__b, | ||
| 10527 | (unsigned __int128)__c); | ||
| 10528 | } | ||
| 10529 | |||
| 8853 | /*-- vec_sube_u128 ----------------------------------------------------------*/ | 10530 | /*-- vec_sube_u128 ----------------------------------------------------------*/ |
| 8854 | 10531 | ||
| 10532 | // This prototype is deprecated. | ||
| 8855 | static inline __ATTRS_ai __vector unsigned char | 10533 | static inline __ATTRS_ai __vector unsigned char |
| 8856 | vec_sube_u128(__vector unsigned char __a, __vector unsigned char __b, | 10534 | vec_sube_u128(__vector unsigned char __a, __vector unsigned char __b, |
| 8857 | __vector unsigned char __c) { | 10535 | __vector unsigned char __c) { |
| 8858 | return (__vector unsigned char) | 10536 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8859 | __builtin_s390_vsbiq((unsigned __int128)__a, (unsigned __int128)__b, | 10537 | __builtin_s390_vsbiq((unsigned __int128)__a, (unsigned __int128)__b, |
| 8860 | (unsigned __int128)__c); | 10538 | (unsigned __int128)__c); |
| 8861 | } | 10539 | } |
| 8862 | 10540 | ||
| 10541 | /*-- vec_subec --------------------------------------------------------------*/ | ||
| 10542 | |||
| 10543 | static inline __ATTRS_ai __vector unsigned __int128 | ||
| 10544 | vec_subec(__vector unsigned __int128 __a, __vector unsigned __int128 __b, | ||
| 10545 | __vector unsigned __int128 __c) { | ||
| 10546 | return (__vector unsigned __int128) | ||
| 10547 | __builtin_s390_vsbcbiq((unsigned __int128)__a, (unsigned __int128)__b, | ||
| 10548 | (unsigned __int128)__c); | ||
| 10549 | } | ||
| 10550 | |||
| 8863 | /*-- vec_subec_u128 ---------------------------------------------------------*/ | 10551 | /*-- vec_subec_u128 ---------------------------------------------------------*/ |
| 8864 | 10552 | ||
| 10553 | // This prototype is deprecated. | ||
| 8865 | static inline __ATTRS_ai __vector unsigned char | 10554 | static inline __ATTRS_ai __vector unsigned char |
| 8866 | vec_subec_u128(__vector unsigned char __a, __vector unsigned char __b, | 10555 | vec_subec_u128(__vector unsigned char __a, __vector unsigned char __b, |
| 8867 | __vector unsigned char __c) { | 10556 | __vector unsigned char __c) { |
| 8868 | return (__vector unsigned char) | 10557 | return (__vector unsigned char)(__vector unsigned __int128) |
| 8869 | __builtin_s390_vsbcbiq((unsigned __int128)__a, (unsigned __int128)__b, | 10558 | __builtin_s390_vsbcbiq((unsigned __int128)__a, (unsigned __int128)__b, |
| 8870 | (unsigned __int128)__c); | 10559 | (unsigned __int128)__c); |
| 8871 | } | 10560 | } |
| ... | @@ -8882,16 +10571,32 @@ vec_sum2(__vector unsigned int __a, __vector unsigned int __b) { | ... | @@ -8882,16 +10571,32 @@ vec_sum2(__vector unsigned int __a, __vector unsigned int __b) { |
| 8882 | return __builtin_s390_vsumgf(__a, __b); | 10571 | return __builtin_s390_vsumgf(__a, __b); |
| 8883 | } | 10572 | } |
| 8884 | 10573 | ||
| 10574 | /*-- vec_sum ----------------------------------------------------------------*/ | ||
| 10575 | |||
| 10576 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10577 | vec_sum(__vector unsigned int __a, __vector unsigned int __b) { | ||
| 10578 | return (__vector unsigned __int128)__builtin_s390_vsumqf(__a, __b); | ||
| 10579 | } | ||
| 10580 | |||
| 10581 | static inline __ATTRS_o_ai __vector unsigned __int128 | ||
| 10582 | vec_sum(__vector unsigned long long __a, __vector unsigned long long __b) { | ||
| 10583 | return (__vector unsigned __int128)__builtin_s390_vsumqg(__a, __b); | ||
| 10584 | } | ||
| 10585 | |||
| 8885 | /*-- vec_sum_u128 -----------------------------------------------------------*/ | 10586 | /*-- vec_sum_u128 -----------------------------------------------------------*/ |
| 8886 | 10587 | ||
| 10588 | // This prototype is deprecated. | ||
| 8887 | static inline __ATTRS_o_ai __vector unsigned char | 10589 | static inline __ATTRS_o_ai __vector unsigned char |
| 8888 | vec_sum_u128(__vector unsigned int __a, __vector unsigned int __b) { | 10590 | vec_sum_u128(__vector unsigned int __a, __vector unsigned int __b) { |
| 8889 | return (__vector unsigned char)__builtin_s390_vsumqf(__a, __b); | 10591 | return (__vector unsigned char)(__vector unsigned __int128) |
| 10592 | __builtin_s390_vsumqf(__a, __b); | ||
| 8890 | } | 10593 | } |
| 8891 | 10594 | ||
| 10595 | // This prototype is deprecated. | ||
| 8892 | static inline __ATTRS_o_ai __vector unsigned char | 10596 | static inline __ATTRS_o_ai __vector unsigned char |
| 8893 | vec_sum_u128(__vector unsigned long long __a, __vector unsigned long long __b) { | 10597 | vec_sum_u128(__vector unsigned long long __a, __vector unsigned long long __b) { |
| 8894 | return (__vector unsigned char)__builtin_s390_vsumqg(__a, __b); | 10598 | return (__vector unsigned char)(__vector unsigned __int128) |
| 10599 | __builtin_s390_vsumqg(__a, __b); | ||
| 8895 | } | 10600 | } |
| 8896 | 10601 | ||
| 8897 | /*-- vec_sum4 ---------------------------------------------------------------*/ | 10602 | /*-- vec_sum4 ---------------------------------------------------------------*/ |
| ... | @@ -8956,6 +10661,19 @@ vec_test_mask(__vector unsigned long long __a, | ... | @@ -8956,6 +10661,19 @@ vec_test_mask(__vector unsigned long long __a, |
| 8956 | (__vector unsigned char)__b); | 10661 | (__vector unsigned char)__b); |
| 8957 | } | 10662 | } |
| 8958 | 10663 | ||
| 10664 | static inline __ATTRS_o_ai int | ||
| 10665 | vec_test_mask(__vector signed __int128 __a, __vector unsigned __int128 __b) { | ||
| 10666 | return __builtin_s390_vtm((__vector unsigned char)__a, | ||
| 10667 | (__vector unsigned char)__b); | ||
| 10668 | } | ||
| 10669 | |||
| 10670 | static inline __ATTRS_o_ai int | ||
| 10671 | vec_test_mask(__vector unsigned __int128 __a, | ||
| 10672 | __vector unsigned __int128 __b) { | ||
| 10673 | return __builtin_s390_vtm((__vector unsigned char)__a, | ||
| 10674 | (__vector unsigned char)__b); | ||
| 10675 | } | ||
| 10676 | |||
| 8959 | #if __ARCH__ >= 12 | 10677 | #if __ARCH__ >= 12 |
| 8960 | static inline __ATTRS_o_ai int | 10678 | static inline __ATTRS_o_ai int |
| 8961 | vec_test_mask(__vector float __a, __vector unsigned int __b) { | 10679 | vec_test_mask(__vector float __a, __vector unsigned int __b) { |
lib/include/wasm_simd128.h+167-21| ... | @@ -33,6 +33,7 @@ typedef unsigned long long __u64x2 | ... | @@ -33,6 +33,7 @@ typedef unsigned long long __u64x2 |
| 33 | __attribute__((__vector_size__(16), __aligned__(16))); | 33 | __attribute__((__vector_size__(16), __aligned__(16))); |
| 34 | typedef float __f32x4 __attribute__((__vector_size__(16), __aligned__(16))); | 34 | typedef float __f32x4 __attribute__((__vector_size__(16), __aligned__(16))); |
| 35 | typedef double __f64x2 __attribute__((__vector_size__(16), __aligned__(16))); | 35 | typedef double __f64x2 __attribute__((__vector_size__(16), __aligned__(16))); |
| 36 | typedef __fp16 __f16x8 __attribute__((__vector_size__(16), __aligned__(16))); | ||
| 36 | 37 | ||
| 37 | typedef signed char __i8x8 __attribute__((__vector_size__(8), __aligned__(8))); | 38 | typedef signed char __i8x8 __attribute__((__vector_size__(8), __aligned__(8))); |
| 38 | typedef unsigned char __u8x8 | 39 | typedef unsigned char __u8x8 |
| ... | @@ -956,7 +957,7 @@ static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i8x16_bitmask(v128_t __a) { | ... | @@ -956,7 +957,7 @@ static __inline__ uint32_t __DEFAULT_FN_ATTRS wasm_i8x16_bitmask(v128_t __a) { |
| 956 | } | 957 | } |
| 957 | 958 | ||
| 958 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_popcnt(v128_t __a) { | 959 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_popcnt(v128_t __a) { |
| 959 | return (v128_t)__builtin_wasm_popcnt_i8x16((__i8x16)__a); | 960 | return (v128_t)__builtin_elementwise_popcount((__i8x16)__a); |
| 960 | } | 961 | } |
| 961 | 962 | ||
| 962 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shl(v128_t __a, | 963 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_shl(v128_t __a, |
| ... | @@ -981,12 +982,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add(v128_t __a, | ... | @@ -981,12 +982,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add(v128_t __a, |
| 981 | 982 | ||
| 982 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add_sat(v128_t __a, | 983 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_add_sat(v128_t __a, |
| 983 | v128_t __b) { | 984 | v128_t __b) { |
| 984 | return (v128_t)__builtin_wasm_add_sat_s_i8x16((__i8x16)__a, (__i8x16)__b); | 985 | return (v128_t)__builtin_elementwise_add_sat((__i8x16)__a, (__i8x16)__b); |
| 985 | } | 986 | } |
| 986 | 987 | ||
| 987 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_add_sat(v128_t __a, | 988 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_add_sat(v128_t __a, |
| 988 | v128_t __b) { | 989 | v128_t __b) { |
| 989 | return (v128_t)__builtin_wasm_add_sat_u_i8x16((__u8x16)__a, (__u8x16)__b); | 990 | return (v128_t)__builtin_elementwise_add_sat((__u8x16)__a, (__u8x16)__b); |
| 990 | } | 991 | } |
| 991 | 992 | ||
| 992 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a, | 993 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a, |
| ... | @@ -996,32 +997,32 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a, | ... | @@ -996,32 +997,32 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub(v128_t __a, |
| 996 | 997 | ||
| 997 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub_sat(v128_t __a, | 998 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_sub_sat(v128_t __a, |
| 998 | v128_t __b) { | 999 | v128_t __b) { |
| 999 | return (v128_t)__builtin_wasm_sub_sat_s_i8x16((__i8x16)__a, (__i8x16)__b); | 1000 | return (v128_t)__builtin_elementwise_sub_sat((__i8x16)__a, (__i8x16)__b); |
| 1000 | } | 1001 | } |
| 1001 | 1002 | ||
| 1002 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_sub_sat(v128_t __a, | 1003 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_sub_sat(v128_t __a, |
| 1003 | v128_t __b) { | 1004 | v128_t __b) { |
| 1004 | return (v128_t)__builtin_wasm_sub_sat_u_i8x16((__u8x16)__a, (__u8x16)__b); | 1005 | return (v128_t)__builtin_elementwise_sub_sat((__u8x16)__a, (__u8x16)__b); |
| 1005 | } | 1006 | } |
| 1006 | 1007 | ||
| 1007 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_min(v128_t __a, | 1008 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_min(v128_t __a, |
| 1008 | v128_t __b) { | 1009 | v128_t __b) { |
| 1009 | return (v128_t)__builtin_wasm_min_s_i8x16((__i8x16)__a, (__i8x16)__b); | 1010 | return (v128_t)__builtin_elementwise_min((__i8x16)__a, (__i8x16)__b); |
| 1010 | } | 1011 | } |
| 1011 | 1012 | ||
| 1012 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_min(v128_t __a, | 1013 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_min(v128_t __a, |
| 1013 | v128_t __b) { | 1014 | v128_t __b) { |
| 1014 | return (v128_t)__builtin_wasm_min_u_i8x16((__u8x16)__a, (__u8x16)__b); | 1015 | return (v128_t)__builtin_elementwise_min((__u8x16)__a, (__u8x16)__b); |
| 1015 | } | 1016 | } |
| 1016 | 1017 | ||
| 1017 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_max(v128_t __a, | 1018 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i8x16_max(v128_t __a, |
| 1018 | v128_t __b) { | 1019 | v128_t __b) { |
| 1019 | return (v128_t)__builtin_wasm_max_s_i8x16((__i8x16)__a, (__i8x16)__b); | 1020 | return (v128_t)__builtin_elementwise_max((__i8x16)__a, (__i8x16)__b); |
| 1020 | } | 1021 | } |
| 1021 | 1022 | ||
| 1022 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_max(v128_t __a, | 1023 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_max(v128_t __a, |
| 1023 | v128_t __b) { | 1024 | v128_t __b) { |
| 1024 | return (v128_t)__builtin_wasm_max_u_i8x16((__u8x16)__a, (__u8x16)__b); | 1025 | return (v128_t)__builtin_elementwise_max((__u8x16)__a, (__u8x16)__b); |
| 1025 | } | 1026 | } |
| 1026 | 1027 | ||
| 1027 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_avgr(v128_t __a, | 1028 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u8x16_avgr(v128_t __a, |
| ... | @@ -1067,12 +1068,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add(v128_t __a, | ... | @@ -1067,12 +1068,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add(v128_t __a, |
| 1067 | 1068 | ||
| 1068 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add_sat(v128_t __a, | 1069 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_add_sat(v128_t __a, |
| 1069 | v128_t __b) { | 1070 | v128_t __b) { |
| 1070 | return (v128_t)__builtin_wasm_add_sat_s_i16x8((__i16x8)__a, (__i16x8)__b); | 1071 | return (v128_t)__builtin_elementwise_add_sat((__i16x8)__a, (__i16x8)__b); |
| 1071 | } | 1072 | } |
| 1072 | 1073 | ||
| 1073 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_add_sat(v128_t __a, | 1074 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_add_sat(v128_t __a, |
| 1074 | v128_t __b) { | 1075 | v128_t __b) { |
| 1075 | return (v128_t)__builtin_wasm_add_sat_u_i16x8((__u16x8)__a, (__u16x8)__b); | 1076 | return (v128_t)__builtin_elementwise_add_sat((__u16x8)__a, (__u16x8)__b); |
| 1076 | } | 1077 | } |
| 1077 | 1078 | ||
| 1078 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a, | 1079 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a, |
| ... | @@ -1082,12 +1083,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a, | ... | @@ -1082,12 +1083,12 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub(v128_t __a, |
| 1082 | 1083 | ||
| 1083 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub_sat(v128_t __a, | 1084 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_sub_sat(v128_t __a, |
| 1084 | v128_t __b) { | 1085 | v128_t __b) { |
| 1085 | return (v128_t)__builtin_wasm_sub_sat_s_i16x8((__i16x8)__a, (__i16x8)__b); | 1086 | return (v128_t)__builtin_elementwise_sub_sat((__i16x8)__a, (__i16x8)__b); |
| 1086 | } | 1087 | } |
| 1087 | 1088 | ||
| 1088 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_sub_sat(v128_t __a, | 1089 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_sub_sat(v128_t __a, |
| 1089 | v128_t __b) { | 1090 | v128_t __b) { |
| 1090 | return (v128_t)__builtin_wasm_sub_sat_u_i16x8((__u16x8)__a, (__u16x8)__b); | 1091 | return (v128_t)__builtin_elementwise_sub_sat((__u16x8)__a, (__u16x8)__b); |
| 1091 | } | 1092 | } |
| 1092 | 1093 | ||
| 1093 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a, | 1094 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a, |
| ... | @@ -1097,22 +1098,22 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a, | ... | @@ -1097,22 +1098,22 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_mul(v128_t __a, |
| 1097 | 1098 | ||
| 1098 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_min(v128_t __a, | 1099 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_min(v128_t __a, |
| 1099 | v128_t __b) { | 1100 | v128_t __b) { |
| 1100 | return (v128_t)__builtin_wasm_min_s_i16x8((__i16x8)__a, (__i16x8)__b); | 1101 | return (v128_t)__builtin_elementwise_min((__i16x8)__a, (__i16x8)__b); |
| 1101 | } | 1102 | } |
| 1102 | 1103 | ||
| 1103 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_min(v128_t __a, | 1104 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_min(v128_t __a, |
| 1104 | v128_t __b) { | 1105 | v128_t __b) { |
| 1105 | return (v128_t)__builtin_wasm_min_u_i16x8((__u16x8)__a, (__u16x8)__b); | 1106 | return (v128_t)__builtin_elementwise_min((__u16x8)__a, (__u16x8)__b); |
| 1106 | } | 1107 | } |
| 1107 | 1108 | ||
| 1108 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_max(v128_t __a, | 1109 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i16x8_max(v128_t __a, |
| 1109 | v128_t __b) { | 1110 | v128_t __b) { |
| 1110 | return (v128_t)__builtin_wasm_max_s_i16x8((__i16x8)__a, (__i16x8)__b); | 1111 | return (v128_t)__builtin_elementwise_max((__i16x8)__a, (__i16x8)__b); |
| 1111 | } | 1112 | } |
| 1112 | 1113 | ||
| 1113 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_max(v128_t __a, | 1114 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_max(v128_t __a, |
| 1114 | v128_t __b) { | 1115 | v128_t __b) { |
| 1115 | return (v128_t)__builtin_wasm_max_u_i16x8((__u16x8)__a, (__u16x8)__b); | 1116 | return (v128_t)__builtin_elementwise_max((__u16x8)__a, (__u16x8)__b); |
| 1116 | } | 1117 | } |
| 1117 | 1118 | ||
| 1118 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_avgr(v128_t __a, | 1119 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u16x8_avgr(v128_t __a, |
| ... | @@ -1168,22 +1169,22 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_mul(v128_t __a, | ... | @@ -1168,22 +1169,22 @@ static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_mul(v128_t __a, |
| 1168 | 1169 | ||
| 1169 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_min(v128_t __a, | 1170 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_min(v128_t __a, |
| 1170 | v128_t __b) { | 1171 | v128_t __b) { |
| 1171 | return (v128_t)__builtin_wasm_min_s_i32x4((__i32x4)__a, (__i32x4)__b); | 1172 | return (v128_t)__builtin_elementwise_min((__i32x4)__a, (__i32x4)__b); |
| 1172 | } | 1173 | } |
| 1173 | 1174 | ||
| 1174 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_min(v128_t __a, | 1175 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_min(v128_t __a, |
| 1175 | v128_t __b) { | 1176 | v128_t __b) { |
| 1176 | return (v128_t)__builtin_wasm_min_u_i32x4((__u32x4)__a, (__u32x4)__b); | 1177 | return (v128_t)__builtin_elementwise_min((__u32x4)__a, (__u32x4)__b); |
| 1177 | } | 1178 | } |
| 1178 | 1179 | ||
| 1179 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_max(v128_t __a, | 1180 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_max(v128_t __a, |
| 1180 | v128_t __b) { | 1181 | v128_t __b) { |
| 1181 | return (v128_t)__builtin_wasm_max_s_i32x4((__i32x4)__a, (__i32x4)__b); | 1182 | return (v128_t)__builtin_elementwise_max((__i32x4)__a, (__i32x4)__b); |
| 1182 | } | 1183 | } |
| 1183 | 1184 | ||
| 1184 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_max(v128_t __a, | 1185 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_u32x4_max(v128_t __a, |
| 1185 | v128_t __b) { | 1186 | v128_t __b) { |
| 1186 | return (v128_t)__builtin_wasm_max_u_i32x4((__u32x4)__a, (__u32x4)__b); | 1187 | return (v128_t)__builtin_elementwise_max((__u32x4)__a, (__u32x4)__b); |
| 1187 | } | 1188 | } |
| 1188 | 1189 | ||
| 1189 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_dot_i16x8(v128_t __a, | 1190 | static __inline__ v128_t __DEFAULT_FN_ATTRS wasm_i32x4_dot_i16x8(v128_t __a, |
| ... | @@ -1878,6 +1879,151 @@ wasm_i32x4_relaxed_dot_i8x16_i7x16_add(v128_t __a, v128_t __b, v128_t __c) { | ... | @@ -1878,6 +1879,151 @@ wasm_i32x4_relaxed_dot_i8x16_i7x16_add(v128_t __a, v128_t __b, v128_t __c) { |
| 1878 | (__i8x16)__a, (__i8x16)__b, (__i32x4)__c); | 1879 | (__i8x16)__a, (__i8x16)__b, (__i32x4)__c); |
| 1879 | } | 1880 | } |
| 1880 | 1881 | ||
| 1882 | // FP16 intrinsics | ||
| 1883 | #define __FP16_FN_ATTRS \ | ||
| 1884 | __attribute__((__always_inline__, __nodebug__, __target__("fp16"), \ | ||
| 1885 | __min_vector_width__(128))) | ||
| 1886 | |||
| 1887 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_splat(float __a) { | ||
| 1888 | return (v128_t)__builtin_wasm_splat_f16x8(__a); | ||
| 1889 | } | ||
| 1890 | |||
| 1891 | #ifdef __wasm_fp16__ | ||
| 1892 | // TODO Replace the following macros with regular C functions and use normal | ||
| 1893 | // target-independent vector code like the other replace/extract instructions. | ||
| 1894 | |||
| 1895 | #define wasm_f16x8_extract_lane(__a, __i) \ | ||
| 1896 | (__builtin_wasm_extract_lane_f16x8((__f16x8)(__a), __i)) | ||
| 1897 | |||
| 1898 | #define wasm_f16x8_replace_lane(__a, __i, __b) \ | ||
| 1899 | ((v128_t)__builtin_wasm_replace_lane_f16x8((__f16x8)(__a), __i, __b)) | ||
| 1900 | |||
| 1901 | #endif | ||
| 1902 | |||
| 1903 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_abs(v128_t __a) { | ||
| 1904 | return (v128_t)__builtin_wasm_abs_f16x8((__f16x8)__a); | ||
| 1905 | } | ||
| 1906 | |||
| 1907 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_neg(v128_t __a) { | ||
| 1908 | return (v128_t)(-(__f16x8)__a); | ||
| 1909 | } | ||
| 1910 | |||
| 1911 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_sqrt(v128_t __a) { | ||
| 1912 | return (v128_t)__builtin_wasm_sqrt_f16x8((__f16x8)__a); | ||
| 1913 | } | ||
| 1914 | |||
| 1915 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_ceil(v128_t __a) { | ||
| 1916 | return (v128_t)__builtin_wasm_ceil_f16x8((__f16x8)__a); | ||
| 1917 | } | ||
| 1918 | |||
| 1919 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_floor(v128_t __a) { | ||
| 1920 | return (v128_t)__builtin_wasm_floor_f16x8((__f16x8)__a); | ||
| 1921 | } | ||
| 1922 | |||
| 1923 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_trunc(v128_t __a) { | ||
| 1924 | return (v128_t)__builtin_wasm_trunc_f16x8((__f16x8)__a); | ||
| 1925 | } | ||
| 1926 | |||
| 1927 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_nearest(v128_t __a) { | ||
| 1928 | return (v128_t)__builtin_wasm_nearest_f16x8((__f16x8)__a); | ||
| 1929 | } | ||
| 1930 | |||
| 1931 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_eq(v128_t __a, v128_t __b) { | ||
| 1932 | return (v128_t)((__f16x8)__a == (__f16x8)__b); | ||
| 1933 | } | ||
| 1934 | |||
| 1935 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_ne(v128_t __a, v128_t __b) { | ||
| 1936 | return (v128_t)((__f16x8)__a != (__f16x8)__b); | ||
| 1937 | } | ||
| 1938 | |||
| 1939 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_lt(v128_t __a, v128_t __b) { | ||
| 1940 | return (v128_t)((__f16x8)__a < (__f16x8)__b); | ||
| 1941 | } | ||
| 1942 | |||
| 1943 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_gt(v128_t __a, v128_t __b) { | ||
| 1944 | return (v128_t)((__f16x8)__a > (__f16x8)__b); | ||
| 1945 | } | ||
| 1946 | |||
| 1947 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_le(v128_t __a, v128_t __b) { | ||
| 1948 | return (v128_t)((__f16x8)__a <= (__f16x8)__b); | ||
| 1949 | } | ||
| 1950 | |||
| 1951 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_ge(v128_t __a, v128_t __b) { | ||
| 1952 | return (v128_t)((__f16x8)__a >= (__f16x8)__b); | ||
| 1953 | } | ||
| 1954 | |||
| 1955 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_add(v128_t __a, | ||
| 1956 | v128_t __b) { | ||
| 1957 | return (v128_t)((__f16x8)__a + (__f16x8)__b); | ||
| 1958 | } | ||
| 1959 | |||
| 1960 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_sub(v128_t __a, | ||
| 1961 | v128_t __b) { | ||
| 1962 | return (v128_t)((__f16x8)__a - (__f16x8)__b); | ||
| 1963 | } | ||
| 1964 | |||
| 1965 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_mul(v128_t __a, | ||
| 1966 | v128_t __b) { | ||
| 1967 | return (v128_t)((__f16x8)__a * (__f16x8)__b); | ||
| 1968 | } | ||
| 1969 | |||
| 1970 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_div(v128_t __a, | ||
| 1971 | v128_t __b) { | ||
| 1972 | return (v128_t)((__f16x8)__a / (__f16x8)__b); | ||
| 1973 | } | ||
| 1974 | |||
| 1975 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_min(v128_t __a, | ||
| 1976 | v128_t __b) { | ||
| 1977 | return (v128_t)__builtin_wasm_min_f16x8((__f16x8)__a, (__f16x8)__b); | ||
| 1978 | } | ||
| 1979 | |||
| 1980 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_max(v128_t __a, | ||
| 1981 | v128_t __b) { | ||
| 1982 | return (v128_t)__builtin_wasm_max_f16x8((__f16x8)__a, (__f16x8)__b); | ||
| 1983 | } | ||
| 1984 | |||
| 1985 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_pmin(v128_t __a, | ||
| 1986 | v128_t __b) { | ||
| 1987 | return (v128_t)__builtin_wasm_pmin_f16x8((__f16x8)__a, (__f16x8)__b); | ||
| 1988 | } | ||
| 1989 | |||
| 1990 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_pmax(v128_t __a, | ||
| 1991 | v128_t __b) { | ||
| 1992 | return (v128_t)__builtin_wasm_pmax_f16x8((__f16x8)__a, (__f16x8)__b); | ||
| 1993 | } | ||
| 1994 | |||
| 1995 | static __inline__ v128_t __FP16_FN_ATTRS | ||
| 1996 | wasm_i16x8_trunc_sat_f16x8(v128_t __a) { | ||
| 1997 | return (v128_t)__builtin_wasm_trunc_saturate_s_i16x8_f16x8((__f16x8)__a); | ||
| 1998 | } | ||
| 1999 | |||
| 2000 | static __inline__ v128_t __FP16_FN_ATTRS | ||
| 2001 | wasm_u16x8_trunc_sat_f16x8(v128_t __a) { | ||
| 2002 | return (v128_t)__builtin_wasm_trunc_saturate_u_i16x8_f16x8((__f16x8)__a); | ||
| 2003 | } | ||
| 2004 | |||
| 2005 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_convert_i16x8(v128_t __a) { | ||
| 2006 | return (v128_t) __builtin_convertvector((__i16x8)__a, __f16x8); | ||
| 2007 | } | ||
| 2008 | |||
| 2009 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_convert_u16x8(v128_t __a) { | ||
| 2010 | return (v128_t) __builtin_convertvector((__u16x8)__a, __f16x8); | ||
| 2011 | } | ||
| 2012 | |||
| 2013 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_relaxed_madd(v128_t __a, | ||
| 2014 | v128_t __b, | ||
| 2015 | v128_t __c) { | ||
| 2016 | return (v128_t)__builtin_wasm_relaxed_madd_f16x8((__f16x8)__a, (__f16x8)__b, | ||
| 2017 | (__f16x8)__c); | ||
| 2018 | } | ||
| 2019 | |||
| 2020 | static __inline__ v128_t __FP16_FN_ATTRS wasm_f16x8_relaxed_nmadd(v128_t __a, | ||
| 2021 | v128_t __b, | ||
| 2022 | v128_t __c) { | ||
| 2023 | return (v128_t)__builtin_wasm_relaxed_nmadd_f16x8((__f16x8)__a, (__f16x8)__b, | ||
| 2024 | (__f16x8)__c); | ||
| 2025 | } | ||
| 2026 | |||
| 1881 | // Deprecated intrinsics | 2027 | // Deprecated intrinsics |
| 1882 | 2028 | ||
| 1883 | static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i8x16_swizzle") | 2029 | static __inline__ v128_t __DEPRECATED_FN_ATTRS("wasm_i8x16_swizzle") |
lib/include/xmmintrin.h+170-177| ... | @@ -32,12 +32,41 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16))); | ... | @@ -32,12 +32,41 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16))); |
| 32 | #endif | 32 | #endif |
| 33 | 33 | ||
| 34 | /* Define the default attributes for the functions in this file. */ | 34 | /* Define the default attributes for the functions in this file. */ |
| 35 | #if defined(__EVEX512__) && !defined(__AVX10_1_512__) | ||
| 35 | #define __DEFAULT_FN_ATTRS \ | 36 | #define __DEFAULT_FN_ATTRS \ |
| 36 | __attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \ | 37 | __attribute__((__always_inline__, __nodebug__, __target__("sse,no-evex512"), \ |
| 37 | __min_vector_width__(128))) | 38 | __min_vector_width__(128))) |
| 38 | #define __DEFAULT_FN_ATTRS_MMX \ | 39 | #define __DEFAULT_FN_ATTRS_SSE2 \ |
| 39 | __attribute__((__always_inline__, __nodebug__, \ | 40 | __attribute__((__always_inline__, __nodebug__, \ |
| 40 | __target__("mmx,sse,no-evex512"), __min_vector_width__(64))) | 41 | __target__("sse2,no-evex512"), __min_vector_width__(128))) |
| 42 | #else | ||
| 43 | #define __DEFAULT_FN_ATTRS \ | ||
| 44 | __attribute__((__always_inline__, __nodebug__, __target__("sse"), \ | ||
| 45 | __min_vector_width__(128))) | ||
| 46 | #define __DEFAULT_FN_ATTRS_SSE2 \ | ||
| 47 | __attribute__((__always_inline__, __nodebug__, __target__("sse2"), \ | ||
| 48 | __min_vector_width__(128))) | ||
| 49 | #endif | ||
| 50 | |||
| 51 | #if defined(__cplusplus) && (__cplusplus >= 201103L) | ||
| 52 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr | ||
| 53 | #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 constexpr | ||
| 54 | #else | ||
| 55 | #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS | ||
| 56 | #define __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR __DEFAULT_FN_ATTRS_SSE2 | ||
| 57 | #endif | ||
| 58 | |||
| 59 | #define __trunc64(x) \ | ||
| 60 | (__m64) __builtin_shufflevector((__v2di)(x), __extension__(__v2di){}, 0) | ||
| 61 | #define __zext128(x) \ | ||
| 62 | (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \ | ||
| 63 | 1, 2, 3) | ||
| 64 | #define __anyext128(x) \ | ||
| 65 | (__m128i) __builtin_shufflevector((__v2si)(x), __extension__(__v2si){}, 0, \ | ||
| 66 | 1, -1, -1) | ||
| 67 | #define __zeroupper64(x) \ | ||
| 68 | (__m128i) __builtin_shufflevector((__v4si)(x), __extension__(__v4si){}, 0, \ | ||
| 69 | 1, 4, 5) | ||
| 41 | 70 | ||
| 42 | /// Adds the 32-bit float values in the low-order bits of the operands. | 71 | /// Adds the 32-bit float values in the low-order bits of the operands. |
| 43 | /// | 72 | /// |
| ... | @@ -54,9 +83,8 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16))); | ... | @@ -54,9 +83,8 @@ typedef unsigned int __v4su __attribute__((__vector_size__(16))); |
| 54 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the sum | 83 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the sum |
| 55 | /// of the lower 32 bits of both operands. The upper 96 bits are copied from | 84 | /// of the lower 32 bits of both operands. The upper 96 bits are copied from |
| 56 | /// the upper 96 bits of the first source operand. | 85 | /// the upper 96 bits of the first source operand. |
| 57 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 86 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 58 | _mm_add_ss(__m128 __a, __m128 __b) | 87 | _mm_add_ss(__m128 __a, __m128 __b) { |
| 59 | { | ||
| 60 | __a[0] += __b[0]; | 88 | __a[0] += __b[0]; |
| 61 | return __a; | 89 | return __a; |
| 62 | } | 90 | } |
| ... | @@ -74,9 +102,8 @@ _mm_add_ss(__m128 __a, __m128 __b) | ... | @@ -74,9 +102,8 @@ _mm_add_ss(__m128 __a, __m128 __b) |
| 74 | /// A 128-bit vector of [4 x float] containing one of the source operands. | 102 | /// A 128-bit vector of [4 x float] containing one of the source operands. |
| 75 | /// \returns A 128-bit vector of [4 x float] containing the sums of both | 103 | /// \returns A 128-bit vector of [4 x float] containing the sums of both |
| 76 | /// operands. | 104 | /// operands. |
| 77 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 105 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 78 | _mm_add_ps(__m128 __a, __m128 __b) | 106 | _mm_add_ps(__m128 __a, __m128 __b) { |
| 79 | { | ||
| 80 | return (__m128)((__v4sf)__a + (__v4sf)__b); | 107 | return (__m128)((__v4sf)__a + (__v4sf)__b); |
| 81 | } | 108 | } |
| 82 | 109 | ||
| ... | @@ -96,9 +123,8 @@ _mm_add_ps(__m128 __a, __m128 __b) | ... | @@ -96,9 +123,8 @@ _mm_add_ps(__m128 __a, __m128 __b) |
| 96 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the | 123 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the |
| 97 | /// difference of the lower 32 bits of both operands. The upper 96 bits are | 124 | /// difference of the lower 32 bits of both operands. The upper 96 bits are |
| 98 | /// copied from the upper 96 bits of the first source operand. | 125 | /// copied from the upper 96 bits of the first source operand. |
| 99 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 126 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 100 | _mm_sub_ss(__m128 __a, __m128 __b) | 127 | _mm_sub_ss(__m128 __a, __m128 __b) { |
| 101 | { | ||
| 102 | __a[0] -= __b[0]; | 128 | __a[0] -= __b[0]; |
| 103 | return __a; | 129 | return __a; |
| 104 | } | 130 | } |
| ... | @@ -117,9 +143,8 @@ _mm_sub_ss(__m128 __a, __m128 __b) | ... | @@ -117,9 +143,8 @@ _mm_sub_ss(__m128 __a, __m128 __b) |
| 117 | /// A 128-bit vector of [4 x float] containing the subtrahend. | 143 | /// A 128-bit vector of [4 x float] containing the subtrahend. |
| 118 | /// \returns A 128-bit vector of [4 x float] containing the differences between | 144 | /// \returns A 128-bit vector of [4 x float] containing the differences between |
| 119 | /// both operands. | 145 | /// both operands. |
| 120 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 146 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 121 | _mm_sub_ps(__m128 __a, __m128 __b) | 147 | _mm_sub_ps(__m128 __a, __m128 __b) { |
| 122 | { | ||
| 123 | return (__m128)((__v4sf)__a - (__v4sf)__b); | 148 | return (__m128)((__v4sf)__a - (__v4sf)__b); |
| 124 | } | 149 | } |
| 125 | 150 | ||
| ... | @@ -139,9 +164,8 @@ _mm_sub_ps(__m128 __a, __m128 __b) | ... | @@ -139,9 +164,8 @@ _mm_sub_ps(__m128 __a, __m128 __b) |
| 139 | /// \returns A 128-bit vector of [4 x float] containing the product of the lower | 164 | /// \returns A 128-bit vector of [4 x float] containing the product of the lower |
| 140 | /// 32 bits of both operands. The upper 96 bits are copied from the upper 96 | 165 | /// 32 bits of both operands. The upper 96 bits are copied from the upper 96 |
| 141 | /// bits of the first source operand. | 166 | /// bits of the first source operand. |
| 142 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 167 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 143 | _mm_mul_ss(__m128 __a, __m128 __b) | 168 | _mm_mul_ss(__m128 __a, __m128 __b) { |
| 144 | { | ||
| 145 | __a[0] *= __b[0]; | 169 | __a[0] *= __b[0]; |
| 146 | return __a; | 170 | return __a; |
| 147 | } | 171 | } |
| ... | @@ -159,9 +183,8 @@ _mm_mul_ss(__m128 __a, __m128 __b) | ... | @@ -159,9 +183,8 @@ _mm_mul_ss(__m128 __a, __m128 __b) |
| 159 | /// A 128-bit vector of [4 x float] containing one of the source operands. | 183 | /// A 128-bit vector of [4 x float] containing one of the source operands. |
| 160 | /// \returns A 128-bit vector of [4 x float] containing the products of both | 184 | /// \returns A 128-bit vector of [4 x float] containing the products of both |
| 161 | /// operands. | 185 | /// operands. |
| 162 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 186 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 163 | _mm_mul_ps(__m128 __a, __m128 __b) | 187 | _mm_mul_ps(__m128 __a, __m128 __b) { |
| 164 | { | ||
| 165 | return (__m128)((__v4sf)__a * (__v4sf)__b); | 188 | return (__m128)((__v4sf)__a * (__v4sf)__b); |
| 166 | } | 189 | } |
| 167 | 190 | ||
| ... | @@ -181,9 +204,8 @@ _mm_mul_ps(__m128 __a, __m128 __b) | ... | @@ -181,9 +204,8 @@ _mm_mul_ps(__m128 __a, __m128 __b) |
| 181 | /// \returns A 128-bit vector of [4 x float] containing the quotients of the | 204 | /// \returns A 128-bit vector of [4 x float] containing the quotients of the |
| 182 | /// lower 32 bits of both operands. The upper 96 bits are copied from the | 205 | /// lower 32 bits of both operands. The upper 96 bits are copied from the |
| 183 | /// upper 96 bits of the first source operand. | 206 | /// upper 96 bits of the first source operand. |
| 184 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 207 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 185 | _mm_div_ss(__m128 __a, __m128 __b) | 208 | _mm_div_ss(__m128 __a, __m128 __b) { |
| 186 | { | ||
| 187 | __a[0] /= __b[0]; | 209 | __a[0] /= __b[0]; |
| 188 | return __a; | 210 | return __a; |
| 189 | } | 211 | } |
| ... | @@ -200,9 +222,8 @@ _mm_div_ss(__m128 __a, __m128 __b) | ... | @@ -200,9 +222,8 @@ _mm_div_ss(__m128 __a, __m128 __b) |
| 200 | /// A 128-bit vector of [4 x float] containing the divisor. | 222 | /// A 128-bit vector of [4 x float] containing the divisor. |
| 201 | /// \returns A 128-bit vector of [4 x float] containing the quotients of both | 223 | /// \returns A 128-bit vector of [4 x float] containing the quotients of both |
| 202 | /// operands. | 224 | /// operands. |
| 203 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 225 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 204 | _mm_div_ps(__m128 __a, __m128 __b) | 226 | _mm_div_ps(__m128 __a, __m128 __b) { |
| 205 | { | ||
| 206 | return (__m128)((__v4sf)__a / (__v4sf)__b); | 227 | return (__m128)((__v4sf)__a / (__v4sf)__b); |
| 207 | } | 228 | } |
| 208 | 229 | ||
| ... | @@ -416,9 +437,8 @@ _mm_max_ps(__m128 __a, __m128 __b) | ... | @@ -416,9 +437,8 @@ _mm_max_ps(__m128 __a, __m128 __b) |
| 416 | /// A 128-bit vector containing one of the source operands. | 437 | /// A 128-bit vector containing one of the source operands. |
| 417 | /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the | 438 | /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the |
| 418 | /// values between both operands. | 439 | /// values between both operands. |
| 419 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 440 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 420 | _mm_and_ps(__m128 __a, __m128 __b) | 441 | _mm_and_ps(__m128 __a, __m128 __b) { |
| 421 | { | ||
| 422 | return (__m128)((__v4su)__a & (__v4su)__b); | 442 | return (__m128)((__v4su)__a & (__v4su)__b); |
| 423 | } | 443 | } |
| 424 | 444 | ||
| ... | @@ -438,9 +458,8 @@ _mm_and_ps(__m128 __a, __m128 __b) | ... | @@ -438,9 +458,8 @@ _mm_and_ps(__m128 __a, __m128 __b) |
| 438 | /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the | 458 | /// \returns A 128-bit vector of [4 x float] containing the bitwise AND of the |
| 439 | /// one's complement of the first operand and the values in the second | 459 | /// one's complement of the first operand and the values in the second |
| 440 | /// operand. | 460 | /// operand. |
| 441 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 461 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 442 | _mm_andnot_ps(__m128 __a, __m128 __b) | 462 | _mm_andnot_ps(__m128 __a, __m128 __b) { |
| 443 | { | ||
| 444 | return (__m128)(~(__v4su)__a & (__v4su)__b); | 463 | return (__m128)(~(__v4su)__a & (__v4su)__b); |
| 445 | } | 464 | } |
| 446 | 465 | ||
| ... | @@ -456,9 +475,8 @@ _mm_andnot_ps(__m128 __a, __m128 __b) | ... | @@ -456,9 +475,8 @@ _mm_andnot_ps(__m128 __a, __m128 __b) |
| 456 | /// A 128-bit vector of [4 x float] containing one of the source operands. | 475 | /// A 128-bit vector of [4 x float] containing one of the source operands. |
| 457 | /// \returns A 128-bit vector of [4 x float] containing the bitwise OR of the | 476 | /// \returns A 128-bit vector of [4 x float] containing the bitwise OR of the |
| 458 | /// values between both operands. | 477 | /// values between both operands. |
| 459 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 478 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 460 | _mm_or_ps(__m128 __a, __m128 __b) | 479 | _mm_or_ps(__m128 __a, __m128 __b) { |
| 461 | { | ||
| 462 | return (__m128)((__v4su)__a | (__v4su)__b); | 480 | return (__m128)((__v4su)__a | (__v4su)__b); |
| 463 | } | 481 | } |
| 464 | 482 | ||
| ... | @@ -475,9 +493,8 @@ _mm_or_ps(__m128 __a, __m128 __b) | ... | @@ -475,9 +493,8 @@ _mm_or_ps(__m128 __a, __m128 __b) |
| 475 | /// A 128-bit vector of [4 x float] containing one of the source operands. | 493 | /// A 128-bit vector of [4 x float] containing one of the source operands. |
| 476 | /// \returns A 128-bit vector of [4 x float] containing the bitwise exclusive OR | 494 | /// \returns A 128-bit vector of [4 x float] containing the bitwise exclusive OR |
| 477 | /// of the values between both operands. | 495 | /// of the values between both operands. |
| 478 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 496 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 479 | _mm_xor_ps(__m128 __a, __m128 __b) | 497 | _mm_xor_ps(__m128 __a, __m128 __b) { |
| 480 | { | ||
| 481 | return (__m128)((__v4su)__a ^ (__v4su)__b); | 498 | return (__m128)((__v4su)__a ^ (__v4su)__b); |
| 482 | } | 499 | } |
| 483 | 500 | ||
| ... | @@ -1448,10 +1465,10 @@ _mm_cvtss_si64(__m128 __a) | ... | @@ -1448,10 +1465,10 @@ _mm_cvtss_si64(__m128 __a) |
| 1448 | /// \param __a | 1465 | /// \param __a |
| 1449 | /// A 128-bit vector of [4 x float]. | 1466 | /// A 128-bit vector of [4 x float]. |
| 1450 | /// \returns A 64-bit integer vector containing the converted values. | 1467 | /// \returns A 64-bit integer vector containing the converted values. |
| 1451 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 1468 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1452 | _mm_cvtps_pi32(__m128 __a) | 1469 | _mm_cvtps_pi32(__m128 __a) |
| 1453 | { | 1470 | { |
| 1454 | return (__m64)__builtin_ia32_cvtps2pi((__v4sf)__a); | 1471 | return __trunc64(__builtin_ia32_cvtps2dq((__v4sf)__zeroupper64(__a))); |
| 1455 | } | 1472 | } |
| 1456 | 1473 | ||
| 1457 | /// Converts two low-order float values in a 128-bit vector of | 1474 | /// Converts two low-order float values in a 128-bit vector of |
| ... | @@ -1468,7 +1485,7 @@ _mm_cvtps_pi32(__m128 __a) | ... | @@ -1468,7 +1485,7 @@ _mm_cvtps_pi32(__m128 __a) |
| 1468 | /// \param __a | 1485 | /// \param __a |
| 1469 | /// A 128-bit vector of [4 x float]. | 1486 | /// A 128-bit vector of [4 x float]. |
| 1470 | /// \returns A 64-bit integer vector containing the converted values. | 1487 | /// \returns A 64-bit integer vector containing the converted values. |
| 1471 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 1488 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1472 | _mm_cvt_ps2pi(__m128 __a) | 1489 | _mm_cvt_ps2pi(__m128 __a) |
| 1473 | { | 1490 | { |
| 1474 | return _mm_cvtps_pi32(__a); | 1491 | return _mm_cvtps_pi32(__a); |
| ... | @@ -1558,10 +1575,10 @@ _mm_cvttss_si64(__m128 __a) | ... | @@ -1558,10 +1575,10 @@ _mm_cvttss_si64(__m128 __a) |
| 1558 | /// \param __a | 1575 | /// \param __a |
| 1559 | /// A 128-bit vector of [4 x float]. | 1576 | /// A 128-bit vector of [4 x float]. |
| 1560 | /// \returns A 64-bit integer vector containing the converted values. | 1577 | /// \returns A 64-bit integer vector containing the converted values. |
| 1561 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 1578 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1562 | _mm_cvttps_pi32(__m128 __a) | 1579 | _mm_cvttps_pi32(__m128 __a) |
| 1563 | { | 1580 | { |
| 1564 | return (__m64)__builtin_ia32_cvttps2pi((__v4sf)__a); | 1581 | return __trunc64(__builtin_ia32_cvttps2dq((__v4sf)__zeroupper64(__a))); |
| 1565 | } | 1582 | } |
| 1566 | 1583 | ||
| 1567 | /// Converts the lower (first) two elements of a 128-bit vector of [4 x float] | 1584 | /// Converts the lower (first) two elements of a 128-bit vector of [4 x float] |
| ... | @@ -1579,7 +1596,7 @@ _mm_cvttps_pi32(__m128 __a) | ... | @@ -1579,7 +1596,7 @@ _mm_cvttps_pi32(__m128 __a) |
| 1579 | /// \param __a | 1596 | /// \param __a |
| 1580 | /// A 128-bit vector of [4 x float]. | 1597 | /// A 128-bit vector of [4 x float]. |
| 1581 | /// \returns A 64-bit integer vector containing the converted values. | 1598 | /// \returns A 64-bit integer vector containing the converted values. |
| 1582 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 1599 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 1583 | _mm_cvtt_ps2pi(__m128 __a) | 1600 | _mm_cvtt_ps2pi(__m128 __a) |
| 1584 | { | 1601 | { |
| 1585 | return _mm_cvttps_pi32(__a); | 1602 | return _mm_cvttps_pi32(__a); |
| ... | @@ -1601,9 +1618,8 @@ _mm_cvtt_ps2pi(__m128 __a) | ... | @@ -1601,9 +1618,8 @@ _mm_cvtt_ps2pi(__m128 __a) |
| 1601 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the | 1618 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the |
| 1602 | /// converted value of the second operand. The upper 96 bits are copied from | 1619 | /// converted value of the second operand. The upper 96 bits are copied from |
| 1603 | /// the upper 96 bits of the first operand. | 1620 | /// the upper 96 bits of the first operand. |
| 1604 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1621 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvtsi32_ss(__m128 __a, |
| 1605 | _mm_cvtsi32_ss(__m128 __a, int __b) | 1622 | int __b) { |
| 1606 | { | ||
| 1607 | __a[0] = __b; | 1623 | __a[0] = __b; |
| 1608 | return __a; | 1624 | return __a; |
| 1609 | } | 1625 | } |
| ... | @@ -1624,9 +1640,8 @@ _mm_cvtsi32_ss(__m128 __a, int __b) | ... | @@ -1624,9 +1640,8 @@ _mm_cvtsi32_ss(__m128 __a, int __b) |
| 1624 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the | 1640 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the |
| 1625 | /// converted value of the second operand. The upper 96 bits are copied from | 1641 | /// converted value of the second operand. The upper 96 bits are copied from |
| 1626 | /// the upper 96 bits of the first operand. | 1642 | /// the upper 96 bits of the first operand. |
| 1627 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1643 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvt_si2ss(__m128 __a, |
| 1628 | _mm_cvt_si2ss(__m128 __a, int __b) | 1644 | int __b) { |
| 1629 | { | ||
| 1630 | return _mm_cvtsi32_ss(__a, __b); | 1645 | return _mm_cvtsi32_ss(__a, __b); |
| 1631 | } | 1646 | } |
| 1632 | 1647 | ||
| ... | @@ -1648,9 +1663,8 @@ _mm_cvt_si2ss(__m128 __a, int __b) | ... | @@ -1648,9 +1663,8 @@ _mm_cvt_si2ss(__m128 __a, int __b) |
| 1648 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the | 1663 | /// \returns A 128-bit vector of [4 x float] whose lower 32 bits contain the |
| 1649 | /// converted value of the second operand. The upper 96 bits are copied from | 1664 | /// converted value of the second operand. The upper 96 bits are copied from |
| 1650 | /// the upper 96 bits of the first operand. | 1665 | /// the upper 96 bits of the first operand. |
| 1651 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1666 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1652 | _mm_cvtsi64_ss(__m128 __a, long long __b) | 1667 | _mm_cvtsi64_ss(__m128 __a, long long __b) { |
| 1653 | { | ||
| 1654 | __a[0] = __b; | 1668 | __a[0] = __b; |
| 1655 | return __a; | 1669 | return __a; |
| 1656 | } | 1670 | } |
| ... | @@ -1674,10 +1688,13 @@ _mm_cvtsi64_ss(__m128 __a, long long __b) | ... | @@ -1674,10 +1688,13 @@ _mm_cvtsi64_ss(__m128 __a, long long __b) |
| 1674 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the | 1688 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the |
| 1675 | /// converted value of the second operand. The upper 64 bits are copied from | 1689 | /// converted value of the second operand. The upper 64 bits are copied from |
| 1676 | /// the upper 64 bits of the first operand. | 1690 | /// the upper 64 bits of the first operand. |
| 1677 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 1691 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 1678 | _mm_cvtpi32_ps(__m128 __a, __m64 __b) | 1692 | _mm_cvtpi32_ps(__m128 __a, __m64 __b) |
| 1679 | { | 1693 | { |
| 1680 | return __builtin_ia32_cvtpi2ps((__v4sf)__a, (__v2si)__b); | 1694 | return (__m128)__builtin_shufflevector( |
| 1695 | (__v4sf)__a, | ||
| 1696 | __builtin_convertvector((__v4si)__zext128(__b), __v4sf), | ||
| 1697 | 4, 5, 2, 3); | ||
| 1681 | } | 1698 | } |
| 1682 | 1699 | ||
| 1683 | /// Converts two elements of a 64-bit vector of [2 x i32] into two | 1700 | /// Converts two elements of a 64-bit vector of [2 x i32] into two |
| ... | @@ -1697,7 +1714,7 @@ _mm_cvtpi32_ps(__m128 __a, __m64 __b) | ... | @@ -1697,7 +1714,7 @@ _mm_cvtpi32_ps(__m128 __a, __m64 __b) |
| 1697 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the | 1714 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the |
| 1698 | /// converted value from the second operand. The upper 64 bits are copied | 1715 | /// converted value from the second operand. The upper 64 bits are copied |
| 1699 | /// from the upper 64 bits of the first operand. | 1716 | /// from the upper 64 bits of the first operand. |
| 1700 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 1717 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 1701 | _mm_cvt_pi2ps(__m128 __a, __m64 __b) | 1718 | _mm_cvt_pi2ps(__m128 __a, __m64 __b) |
| 1702 | { | 1719 | { |
| 1703 | return _mm_cvtpi32_ps(__a, __b); | 1720 | return _mm_cvtpi32_ps(__a, __b); |
| ... | @@ -1714,9 +1731,8 @@ _mm_cvt_pi2ps(__m128 __a, __m64 __b) | ... | @@ -1714,9 +1731,8 @@ _mm_cvt_pi2ps(__m128 __a, __m64 __b) |
| 1714 | /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are | 1731 | /// A 128-bit vector of [4 x float]. The lower 32 bits of this operand are |
| 1715 | /// used in the extraction. | 1732 | /// used in the extraction. |
| 1716 | /// \returns A 32-bit float containing the extracted value. | 1733 | /// \returns A 32-bit float containing the extracted value. |
| 1717 | static __inline__ float __DEFAULT_FN_ATTRS | 1734 | static __inline__ float __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1718 | _mm_cvtss_f32(__m128 __a) | 1735 | _mm_cvtss_f32(__m128 __a) { |
| 1719 | { | ||
| 1720 | return __a[0]; | 1736 | return __a[0]; |
| 1721 | } | 1737 | } |
| 1722 | 1738 | ||
| ... | @@ -1907,9 +1923,8 @@ _mm_undefined_ps(void) | ... | @@ -1907,9 +1923,8 @@ _mm_undefined_ps(void) |
| 1907 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. The | 1923 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. The |
| 1908 | /// lower 32 bits contain the value provided in the source operand. The | 1924 | /// lower 32 bits contain the value provided in the source operand. The |
| 1909 | /// upper 96 bits are set to zero. | 1925 | /// upper 96 bits are set to zero. |
| 1910 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1926 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1911 | _mm_set_ss(float __w) | 1927 | _mm_set_ss(float __w) { |
| 1912 | { | ||
| 1913 | return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f }; | 1928 | return __extension__ (__m128){ __w, 0.0f, 0.0f, 0.0f }; |
| 1914 | } | 1929 | } |
| 1915 | 1930 | ||
| ... | @@ -1925,9 +1940,8 @@ _mm_set_ss(float __w) | ... | @@ -1925,9 +1940,8 @@ _mm_set_ss(float __w) |
| 1925 | /// A single-precision floating-point value used to initialize each vector | 1940 | /// A single-precision floating-point value used to initialize each vector |
| 1926 | /// element of the result. | 1941 | /// element of the result. |
| 1927 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. | 1942 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. |
| 1928 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1943 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1929 | _mm_set1_ps(float __w) | 1944 | _mm_set1_ps(float __w) { |
| 1930 | { | ||
| 1931 | return __extension__ (__m128){ __w, __w, __w, __w }; | 1945 | return __extension__ (__m128){ __w, __w, __w, __w }; |
| 1932 | } | 1946 | } |
| 1933 | 1947 | ||
| ... | @@ -1944,9 +1958,8 @@ _mm_set1_ps(float __w) | ... | @@ -1944,9 +1958,8 @@ _mm_set1_ps(float __w) |
| 1944 | /// A single-precision floating-point value used to initialize each vector | 1958 | /// A single-precision floating-point value used to initialize each vector |
| 1945 | /// element of the result. | 1959 | /// element of the result. |
| 1946 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. | 1960 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. |
| 1947 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1961 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1948 | _mm_set_ps1(float __w) | 1962 | _mm_set_ps1(float __w) { |
| 1949 | { | ||
| 1950 | return _mm_set1_ps(__w); | 1963 | return _mm_set1_ps(__w); |
| 1951 | } | 1964 | } |
| 1952 | 1965 | ||
| ... | @@ -1971,9 +1984,8 @@ _mm_set_ps1(float __w) | ... | @@ -1971,9 +1984,8 @@ _mm_set_ps1(float __w) |
| 1971 | /// A single-precision floating-point value used to initialize bits [31:0] | 1984 | /// A single-precision floating-point value used to initialize bits [31:0] |
| 1972 | /// of the result. | 1985 | /// of the result. |
| 1973 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. | 1986 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. |
| 1974 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 1987 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 1975 | _mm_set_ps(float __z, float __y, float __x, float __w) | 1988 | _mm_set_ps(float __z, float __y, float __x, float __w) { |
| 1976 | { | ||
| 1977 | return __extension__ (__m128){ __w, __x, __y, __z }; | 1989 | return __extension__ (__m128){ __w, __x, __y, __z }; |
| 1978 | } | 1990 | } |
| 1979 | 1991 | ||
| ... | @@ -1999,9 +2011,8 @@ _mm_set_ps(float __z, float __y, float __x, float __w) | ... | @@ -1999,9 +2011,8 @@ _mm_set_ps(float __z, float __y, float __x, float __w) |
| 1999 | /// A single-precision floating-point value used to initialize bits [127:96] | 2011 | /// A single-precision floating-point value used to initialize bits [127:96] |
| 2000 | /// of the result. | 2012 | /// of the result. |
| 2001 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. | 2013 | /// \returns An initialized 128-bit floating-point vector of [4 x float]. |
| 2002 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2014 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2003 | _mm_setr_ps(float __z, float __y, float __x, float __w) | 2015 | _mm_setr_ps(float __z, float __y, float __x, float __w) { |
| 2004 | { | ||
| 2005 | return __extension__ (__m128){ __z, __y, __x, __w }; | 2016 | return __extension__ (__m128){ __z, __y, __x, __w }; |
| 2006 | } | 2017 | } |
| 2007 | 2018 | ||
| ... | @@ -2014,9 +2025,8 @@ _mm_setr_ps(float __z, float __y, float __x, float __w) | ... | @@ -2014,9 +2025,8 @@ _mm_setr_ps(float __z, float __y, float __x, float __w) |
| 2014 | /// | 2025 | /// |
| 2015 | /// \returns An initialized 128-bit floating-point vector of [4 x float] with | 2026 | /// \returns An initialized 128-bit floating-point vector of [4 x float] with |
| 2016 | /// all elements set to zero. | 2027 | /// all elements set to zero. |
| 2017 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2028 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2018 | _mm_setzero_ps(void) | 2029 | _mm_setzero_ps(void) { |
| 2019 | { | ||
| 2020 | return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f }; | 2030 | return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f }; |
| 2021 | } | 2031 | } |
| 2022 | 2032 | ||
| ... | @@ -2231,10 +2241,10 @@ _mm_storer_ps(float *__p, __m128 __a) | ... | @@ -2231,10 +2241,10 @@ _mm_storer_ps(float *__p, __m128 __a) |
| 2231 | /// A pointer to an aligned memory location used to store the register value. | 2241 | /// A pointer to an aligned memory location used to store the register value. |
| 2232 | /// \param __a | 2242 | /// \param __a |
| 2233 | /// A 64-bit integer containing the value to be stored. | 2243 | /// A 64-bit integer containing the value to be stored. |
| 2234 | static __inline__ void __DEFAULT_FN_ATTRS_MMX | 2244 | static __inline__ void __DEFAULT_FN_ATTRS |
| 2235 | _mm_stream_pi(void *__p, __m64 __a) | 2245 | _mm_stream_pi(void *__p, __m64 __a) |
| 2236 | { | 2246 | { |
| 2237 | __builtin_ia32_movntq((__m64 *)__p, __a); | 2247 | __builtin_nontemporal_store(__a, (__m64 *)__p); |
| 2238 | } | 2248 | } |
| 2239 | 2249 | ||
| 2240 | /// Moves packed float values from a 128-bit vector of [4 x float] to a | 2250 | /// Moves packed float values from a 128-bit vector of [4 x float] to a |
| ... | @@ -2296,7 +2306,7 @@ void _mm_sfence(void); | ... | @@ -2296,7 +2306,7 @@ void _mm_sfence(void); |
| 2296 | /// 3: Bits [63:48] are copied to the destination. | 2306 | /// 3: Bits [63:48] are copied to the destination. |
| 2297 | /// \returns A 16-bit integer containing the extracted 16 bits of packed data. | 2307 | /// \returns A 16-bit integer containing the extracted 16 bits of packed data. |
| 2298 | #define _mm_extract_pi16(a, n) \ | 2308 | #define _mm_extract_pi16(a, n) \ |
| 2299 | ((int)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n)) | 2309 | ((int)(unsigned short)__builtin_ia32_vec_ext_v4hi((__v4hi)a, (int)n)) |
| 2300 | 2310 | ||
| 2301 | /// Copies data from the 64-bit vector of [4 x i16] to the destination, | 2311 | /// Copies data from the 64-bit vector of [4 x i16] to the destination, |
| 2302 | /// and inserts the lower 16-bits of an integer operand at the 16-bit offset | 2312 | /// and inserts the lower 16-bits of an integer operand at the 16-bit offset |
| ... | @@ -2342,10 +2352,10 @@ void _mm_sfence(void); | ... | @@ -2342,10 +2352,10 @@ void _mm_sfence(void); |
| 2342 | /// \param __b | 2352 | /// \param __b |
| 2343 | /// A 64-bit integer vector containing one of the source operands. | 2353 | /// A 64-bit integer vector containing one of the source operands. |
| 2344 | /// \returns A 64-bit integer vector containing the comparison results. | 2354 | /// \returns A 64-bit integer vector containing the comparison results. |
| 2345 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2355 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2346 | _mm_max_pi16(__m64 __a, __m64 __b) | 2356 | _mm_max_pi16(__m64 __a, __m64 __b) |
| 2347 | { | 2357 | { |
| 2348 | return (__m64)__builtin_ia32_pmaxsw((__v4hi)__a, (__v4hi)__b); | 2358 | return (__m64)__builtin_elementwise_max((__v4hi)__a, (__v4hi)__b); |
| 2349 | } | 2359 | } |
| 2350 | 2360 | ||
| 2351 | /// Compares each of the corresponding packed 8-bit unsigned integer | 2361 | /// Compares each of the corresponding packed 8-bit unsigned integer |
| ... | @@ -2361,10 +2371,10 @@ _mm_max_pi16(__m64 __a, __m64 __b) | ... | @@ -2361,10 +2371,10 @@ _mm_max_pi16(__m64 __a, __m64 __b) |
| 2361 | /// \param __b | 2371 | /// \param __b |
| 2362 | /// A 64-bit integer vector containing one of the source operands. | 2372 | /// A 64-bit integer vector containing one of the source operands. |
| 2363 | /// \returns A 64-bit integer vector containing the comparison results. | 2373 | /// \returns A 64-bit integer vector containing the comparison results. |
| 2364 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2374 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2365 | _mm_max_pu8(__m64 __a, __m64 __b) | 2375 | _mm_max_pu8(__m64 __a, __m64 __b) |
| 2366 | { | 2376 | { |
| 2367 | return (__m64)__builtin_ia32_pmaxub((__v8qi)__a, (__v8qi)__b); | 2377 | return (__m64)__builtin_elementwise_max((__v8qu)__a, (__v8qu)__b); |
| 2368 | } | 2378 | } |
| 2369 | 2379 | ||
| 2370 | /// Compares each of the corresponding packed 16-bit integer values of | 2380 | /// Compares each of the corresponding packed 16-bit integer values of |
| ... | @@ -2380,10 +2390,10 @@ _mm_max_pu8(__m64 __a, __m64 __b) | ... | @@ -2380,10 +2390,10 @@ _mm_max_pu8(__m64 __a, __m64 __b) |
| 2380 | /// \param __b | 2390 | /// \param __b |
| 2381 | /// A 64-bit integer vector containing one of the source operands. | 2391 | /// A 64-bit integer vector containing one of the source operands. |
| 2382 | /// \returns A 64-bit integer vector containing the comparison results. | 2392 | /// \returns A 64-bit integer vector containing the comparison results. |
| 2383 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2393 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2384 | _mm_min_pi16(__m64 __a, __m64 __b) | 2394 | _mm_min_pi16(__m64 __a, __m64 __b) |
| 2385 | { | 2395 | { |
| 2386 | return (__m64)__builtin_ia32_pminsw((__v4hi)__a, (__v4hi)__b); | 2396 | return (__m64)__builtin_elementwise_min((__v4hi)__a, (__v4hi)__b); |
| 2387 | } | 2397 | } |
| 2388 | 2398 | ||
| 2389 | /// Compares each of the corresponding packed 8-bit unsigned integer | 2399 | /// Compares each of the corresponding packed 8-bit unsigned integer |
| ... | @@ -2399,10 +2409,10 @@ _mm_min_pi16(__m64 __a, __m64 __b) | ... | @@ -2399,10 +2409,10 @@ _mm_min_pi16(__m64 __a, __m64 __b) |
| 2399 | /// \param __b | 2409 | /// \param __b |
| 2400 | /// A 64-bit integer vector containing one of the source operands. | 2410 | /// A 64-bit integer vector containing one of the source operands. |
| 2401 | /// \returns A 64-bit integer vector containing the comparison results. | 2411 | /// \returns A 64-bit integer vector containing the comparison results. |
| 2402 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2412 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2403 | _mm_min_pu8(__m64 __a, __m64 __b) | 2413 | _mm_min_pu8(__m64 __a, __m64 __b) |
| 2404 | { | 2414 | { |
| 2405 | return (__m64)__builtin_ia32_pminub((__v8qi)__a, (__v8qi)__b); | 2415 | return (__m64)__builtin_elementwise_min((__v8qu)__a, (__v8qu)__b); |
| 2406 | } | 2416 | } |
| 2407 | 2417 | ||
| 2408 | /// Takes the most significant bit from each 8-bit element in a 64-bit | 2418 | /// Takes the most significant bit from each 8-bit element in a 64-bit |
| ... | @@ -2417,10 +2427,10 @@ _mm_min_pu8(__m64 __a, __m64 __b) | ... | @@ -2417,10 +2427,10 @@ _mm_min_pu8(__m64 __a, __m64 __b) |
| 2417 | /// A 64-bit integer vector containing the values with bits to be extracted. | 2427 | /// A 64-bit integer vector containing the values with bits to be extracted. |
| 2418 | /// \returns The most significant bit from each 8-bit element in \a __a, | 2428 | /// \returns The most significant bit from each 8-bit element in \a __a, |
| 2419 | /// written to bits [7:0]. | 2429 | /// written to bits [7:0]. |
| 2420 | static __inline__ int __DEFAULT_FN_ATTRS_MMX | 2430 | static __inline__ int __DEFAULT_FN_ATTRS_SSE2 |
| 2421 | _mm_movemask_pi8(__m64 __a) | 2431 | _mm_movemask_pi8(__m64 __a) |
| 2422 | { | 2432 | { |
| 2423 | return __builtin_ia32_pmovmskb((__v8qi)__a); | 2433 | return __builtin_ia32_pmovmskb128((__v16qi)__zext128(__a)); |
| 2424 | } | 2434 | } |
| 2425 | 2435 | ||
| 2426 | /// Multiplies packed 16-bit unsigned integer values and writes the | 2436 | /// Multiplies packed 16-bit unsigned integer values and writes the |
| ... | @@ -2436,10 +2446,11 @@ _mm_movemask_pi8(__m64 __a) | ... | @@ -2436,10 +2446,11 @@ _mm_movemask_pi8(__m64 __a) |
| 2436 | /// \param __b | 2446 | /// \param __b |
| 2437 | /// A 64-bit integer vector containing one of the source operands. | 2447 | /// A 64-bit integer vector containing one of the source operands. |
| 2438 | /// \returns A 64-bit integer vector containing the products of both operands. | 2448 | /// \returns A 64-bit integer vector containing the products of both operands. |
| 2439 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2449 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2440 | _mm_mulhi_pu16(__m64 __a, __m64 __b) | 2450 | _mm_mulhi_pu16(__m64 __a, __m64 __b) |
| 2441 | { | 2451 | { |
| 2442 | return (__m64)__builtin_ia32_pmulhuw((__v4hi)__a, (__v4hi)__b); | 2452 | return __trunc64(__builtin_ia32_pmulhuw128((__v8hi)__anyext128(__a), |
| 2453 | (__v8hi)__anyext128(__b))); | ||
| 2443 | } | 2454 | } |
| 2444 | 2455 | ||
| 2445 | /// Shuffles the 4 16-bit integers from a 64-bit integer vector to the | 2456 | /// Shuffles the 4 16-bit integers from a 64-bit integer vector to the |
| ... | @@ -2476,8 +2487,10 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b) | ... | @@ -2476,8 +2487,10 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b) |
| 2476 | /// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form | 2487 | /// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form |
| 2477 | /// <c>[b6, b4, b2, b0]</c>. | 2488 | /// <c>[b6, b4, b2, b0]</c>. |
| 2478 | /// \returns A 64-bit integer vector containing the shuffled values. | 2489 | /// \returns A 64-bit integer vector containing the shuffled values. |
| 2479 | #define _mm_shuffle_pi16(a, n) \ | 2490 | #define _mm_shuffle_pi16(a, n) \ |
| 2480 | ((__m64)__builtin_ia32_pshufw((__v4hi)(__m64)(a), (n))) | 2491 | ((__m64)__builtin_shufflevector((__v4hi)(__m64)(a), __extension__(__v4hi){}, \ |
| 2492 | (n) & 0x3, ((n) >> 2) & 0x3, \ | ||
| 2493 | ((n) >> 4) & 0x3, ((n) >> 6) & 0x3)) | ||
| 2481 | 2494 | ||
| 2482 | /// Conditionally copies the values from each 8-bit element in the first | 2495 | /// Conditionally copies the values from each 8-bit element in the first |
| 2483 | /// 64-bit integer vector operand to the specified memory location, as | 2496 | /// 64-bit integer vector operand to the specified memory location, as |
| ... | @@ -2502,10 +2515,25 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b) | ... | @@ -2502,10 +2515,25 @@ _mm_mulhi_pu16(__m64 __a, __m64 __b) |
| 2502 | /// A pointer to a 64-bit memory location that will receive the conditionally | 2515 | /// A pointer to a 64-bit memory location that will receive the conditionally |
| 2503 | /// copied integer values. The address of the memory location does not have | 2516 | /// copied integer values. The address of the memory location does not have |
| 2504 | /// to be aligned. | 2517 | /// to be aligned. |
| 2505 | static __inline__ void __DEFAULT_FN_ATTRS_MMX | 2518 | static __inline__ void __DEFAULT_FN_ATTRS_SSE2 |
| 2506 | _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p) | 2519 | _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p) |
| 2507 | { | 2520 | { |
| 2508 | __builtin_ia32_maskmovq((__v8qi)__d, (__v8qi)__n, __p); | 2521 | // This is complex, because we need to support the case where __p is pointing |
| 2522 | // within the last 15 to 8 bytes of a page. In that case, using a 128-bit | ||
| 2523 | // write might cause a trap where a 64-bit maskmovq would not. (Memory | ||
| 2524 | // locations not selected by the mask bits might still cause traps.) | ||
| 2525 | __m128i __d128 = __anyext128(__d); | ||
| 2526 | __m128i __n128 = __zext128(__n); | ||
| 2527 | if (((__SIZE_TYPE__)__p & 0xfff) >= 4096-15 && | ||
| 2528 | ((__SIZE_TYPE__)__p & 0xfff) <= 4096-8) { | ||
| 2529 | // If there's a risk of spurious trap due to a 128-bit write, back up the | ||
| 2530 | // pointer by 8 bytes and shift values in registers to match. | ||
| 2531 | __p -= 8; | ||
| 2532 | __d128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__d128, 8); | ||
| 2533 | __n128 = __builtin_ia32_pslldqi128_byteshift((__v2di)__n128, 8); | ||
| 2534 | } | ||
| 2535 | |||
| 2536 | __builtin_ia32_maskmovdqu((__v16qi)__d128, (__v16qi)__n128, __p); | ||
| 2509 | } | 2537 | } |
| 2510 | 2538 | ||
| 2511 | /// Computes the rounded averages of the packed unsigned 8-bit integer | 2539 | /// Computes the rounded averages of the packed unsigned 8-bit integer |
| ... | @@ -2521,10 +2549,11 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p) | ... | @@ -2521,10 +2549,11 @@ _mm_maskmove_si64(__m64 __d, __m64 __n, char *__p) |
| 2521 | /// \param __b | 2549 | /// \param __b |
| 2522 | /// A 64-bit integer vector containing one of the source operands. | 2550 | /// A 64-bit integer vector containing one of the source operands. |
| 2523 | /// \returns A 64-bit integer vector containing the averages of both operands. | 2551 | /// \returns A 64-bit integer vector containing the averages of both operands. |
| 2524 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2552 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2525 | _mm_avg_pu8(__m64 __a, __m64 __b) | 2553 | _mm_avg_pu8(__m64 __a, __m64 __b) |
| 2526 | { | 2554 | { |
| 2527 | return (__m64)__builtin_ia32_pavgb((__v8qi)__a, (__v8qi)__b); | 2555 | return __trunc64(__builtin_ia32_pavgb128((__v16qi)__anyext128(__a), |
| 2556 | (__v16qi)__anyext128(__b))); | ||
| 2528 | } | 2557 | } |
| 2529 | 2558 | ||
| 2530 | /// Computes the rounded averages of the packed unsigned 16-bit integer | 2559 | /// Computes the rounded averages of the packed unsigned 16-bit integer |
| ... | @@ -2540,10 +2569,11 @@ _mm_avg_pu8(__m64 __a, __m64 __b) | ... | @@ -2540,10 +2569,11 @@ _mm_avg_pu8(__m64 __a, __m64 __b) |
| 2540 | /// \param __b | 2569 | /// \param __b |
| 2541 | /// A 64-bit integer vector containing one of the source operands. | 2570 | /// A 64-bit integer vector containing one of the source operands. |
| 2542 | /// \returns A 64-bit integer vector containing the averages of both operands. | 2571 | /// \returns A 64-bit integer vector containing the averages of both operands. |
| 2543 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2572 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2544 | _mm_avg_pu16(__m64 __a, __m64 __b) | 2573 | _mm_avg_pu16(__m64 __a, __m64 __b) |
| 2545 | { | 2574 | { |
| 2546 | return (__m64)__builtin_ia32_pavgw((__v4hi)__a, (__v4hi)__b); | 2575 | return __trunc64(__builtin_ia32_pavgw128((__v8hi)__anyext128(__a), |
| 2576 | (__v8hi)__anyext128(__b))); | ||
| 2547 | } | 2577 | } |
| 2548 | 2578 | ||
| 2549 | /// Subtracts the corresponding 8-bit unsigned integer values of the two | 2579 | /// Subtracts the corresponding 8-bit unsigned integer values of the two |
| ... | @@ -2562,10 +2592,11 @@ _mm_avg_pu16(__m64 __a, __m64 __b) | ... | @@ -2562,10 +2592,11 @@ _mm_avg_pu16(__m64 __a, __m64 __b) |
| 2562 | /// \returns A 64-bit integer vector whose lower 16 bits contain the sums of the | 2592 | /// \returns A 64-bit integer vector whose lower 16 bits contain the sums of the |
| 2563 | /// sets of absolute differences between both operands. The upper bits are | 2593 | /// sets of absolute differences between both operands. The upper bits are |
| 2564 | /// cleared. | 2594 | /// cleared. |
| 2565 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2595 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2566 | _mm_sad_pu8(__m64 __a, __m64 __b) | 2596 | _mm_sad_pu8(__m64 __a, __m64 __b) |
| 2567 | { | 2597 | { |
| 2568 | return (__m64)__builtin_ia32_psadbw((__v8qi)__a, (__v8qi)__b); | 2598 | return __trunc64(__builtin_ia32_psadbw128((__v16qi)__zext128(__a), |
| 2599 | (__v16qi)__zext128(__b))); | ||
| 2569 | } | 2600 | } |
| 2570 | 2601 | ||
| 2571 | #if defined(__cplusplus) | 2602 | #if defined(__cplusplus) |
| ... | @@ -2741,9 +2772,8 @@ void _mm_setcsr(unsigned int __i); | ... | @@ -2741,9 +2772,8 @@ void _mm_setcsr(unsigned int __i); |
| 2741 | /// Bits [95:64] are written to bits [63:32] of the destination. \n | 2772 | /// Bits [95:64] are written to bits [63:32] of the destination. \n |
| 2742 | /// Bits [127:96] are written to bits [127:96] of the destination. | 2773 | /// Bits [127:96] are written to bits [127:96] of the destination. |
| 2743 | /// \returns A 128-bit vector of [4 x float] containing the interleaved values. | 2774 | /// \returns A 128-bit vector of [4 x float] containing the interleaved values. |
| 2744 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2775 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2745 | _mm_unpackhi_ps(__m128 __a, __m128 __b) | 2776 | _mm_unpackhi_ps(__m128 __a, __m128 __b) { |
| 2746 | { | ||
| 2747 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7); | 2777 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 2, 6, 3, 7); |
| 2748 | } | 2778 | } |
| 2749 | 2779 | ||
| ... | @@ -2763,9 +2793,8 @@ _mm_unpackhi_ps(__m128 __a, __m128 __b) | ... | @@ -2763,9 +2793,8 @@ _mm_unpackhi_ps(__m128 __a, __m128 __b) |
| 2763 | /// Bits [31:0] are written to bits [63:32] of the destination. \n | 2793 | /// Bits [31:0] are written to bits [63:32] of the destination. \n |
| 2764 | /// Bits [63:32] are written to bits [127:96] of the destination. | 2794 | /// Bits [63:32] are written to bits [127:96] of the destination. |
| 2765 | /// \returns A 128-bit vector of [4 x float] containing the interleaved values. | 2795 | /// \returns A 128-bit vector of [4 x float] containing the interleaved values. |
| 2766 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2796 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2767 | _mm_unpacklo_ps(__m128 __a, __m128 __b) | 2797 | _mm_unpacklo_ps(__m128 __a, __m128 __b) { |
| 2768 | { | ||
| 2769 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5); | 2798 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 4, 1, 5); |
| 2770 | } | 2799 | } |
| 2771 | 2800 | ||
| ... | @@ -2785,9 +2814,8 @@ _mm_unpacklo_ps(__m128 __a, __m128 __b) | ... | @@ -2785,9 +2814,8 @@ _mm_unpacklo_ps(__m128 __a, __m128 __b) |
| 2785 | /// A 128-bit floating-point vector of [4 x float]. The lower 32 bits are | 2814 | /// A 128-bit floating-point vector of [4 x float]. The lower 32 bits are |
| 2786 | /// written to the lower 32 bits of the result. | 2815 | /// written to the lower 32 bits of the result. |
| 2787 | /// \returns A 128-bit floating-point vector of [4 x float]. | 2816 | /// \returns A 128-bit floating-point vector of [4 x float]. |
| 2788 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2817 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2789 | _mm_move_ss(__m128 __a, __m128 __b) | 2818 | _mm_move_ss(__m128 __a, __m128 __b) { |
| 2790 | { | ||
| 2791 | __a[0] = __b[0]; | 2819 | __a[0] = __b[0]; |
| 2792 | return __a; | 2820 | return __a; |
| 2793 | } | 2821 | } |
| ... | @@ -2807,9 +2835,8 @@ _mm_move_ss(__m128 __a, __m128 __b) | ... | @@ -2807,9 +2835,8 @@ _mm_move_ss(__m128 __a, __m128 __b) |
| 2807 | /// A 128-bit floating-point vector of [4 x float]. The upper 64 bits are | 2835 | /// A 128-bit floating-point vector of [4 x float]. The upper 64 bits are |
| 2808 | /// written to the lower 64 bits of the result. | 2836 | /// written to the lower 64 bits of the result. |
| 2809 | /// \returns A 128-bit floating-point vector of [4 x float]. | 2837 | /// \returns A 128-bit floating-point vector of [4 x float]. |
| 2810 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2838 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2811 | _mm_movehl_ps(__m128 __a, __m128 __b) | 2839 | _mm_movehl_ps(__m128 __a, __m128 __b) { |
| 2812 | { | ||
| 2813 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3); | 2840 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 6, 7, 2, 3); |
| 2814 | } | 2841 | } |
| 2815 | 2842 | ||
| ... | @@ -2828,9 +2855,8 @@ _mm_movehl_ps(__m128 __a, __m128 __b) | ... | @@ -2828,9 +2855,8 @@ _mm_movehl_ps(__m128 __a, __m128 __b) |
| 2828 | /// A 128-bit floating-point vector of [4 x float]. The lower 64 bits are | 2855 | /// A 128-bit floating-point vector of [4 x float]. The lower 64 bits are |
| 2829 | /// written to the upper 64 bits of the result. | 2856 | /// written to the upper 64 bits of the result. |
| 2830 | /// \returns A 128-bit floating-point vector of [4 x float]. | 2857 | /// \returns A 128-bit floating-point vector of [4 x float]. |
| 2831 | static __inline__ __m128 __DEFAULT_FN_ATTRS | 2858 | static __inline__ __m128 __DEFAULT_FN_ATTRS_CONSTEXPR |
| 2832 | _mm_movelh_ps(__m128 __a, __m128 __b) | 2859 | _mm_movelh_ps(__m128 __a, __m128 __b) { |
| 2833 | { | ||
| 2834 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5); | 2860 | return __builtin_shufflevector((__v4sf)__a, (__v4sf)__b, 0, 1, 4, 5); |
| 2835 | } | 2861 | } |
| 2836 | 2862 | ||
| ... | @@ -2846,22 +2872,10 @@ _mm_movelh_ps(__m128 __a, __m128 __b) | ... | @@ -2846,22 +2872,10 @@ _mm_movelh_ps(__m128 __a, __m128 __b) |
| 2846 | /// from the corresponding elements in this operand. | 2872 | /// from the corresponding elements in this operand. |
| 2847 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted | 2873 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted |
| 2848 | /// values from the operand. | 2874 | /// values from the operand. |
| 2849 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 2875 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 2850 | _mm_cvtpi16_ps(__m64 __a) | 2876 | _mm_cvtpi16_ps(__m64 __a) |
| 2851 | { | 2877 | { |
| 2852 | __m64 __b, __c; | 2878 | return __builtin_convertvector((__v4hi)__a, __v4sf); |
| 2853 | __m128 __r; | ||
| 2854 | |||
| 2855 | __b = _mm_setzero_si64(); | ||
| 2856 | __b = _mm_cmpgt_pi16(__b, __a); | ||
| 2857 | __c = _mm_unpackhi_pi16(__a, __b); | ||
| 2858 | __r = _mm_setzero_ps(); | ||
| 2859 | __r = _mm_cvtpi32_ps(__r, __c); | ||
| 2860 | __r = _mm_movelh_ps(__r, __r); | ||
| 2861 | __c = _mm_unpacklo_pi16(__a, __b); | ||
| 2862 | __r = _mm_cvtpi32_ps(__r, __c); | ||
| 2863 | |||
| 2864 | return __r; | ||
| 2865 | } | 2879 | } |
| 2866 | 2880 | ||
| 2867 | /// Converts a 64-bit vector of 16-bit unsigned integer values into a | 2881 | /// Converts a 64-bit vector of 16-bit unsigned integer values into a |
| ... | @@ -2876,21 +2890,10 @@ _mm_cvtpi16_ps(__m64 __a) | ... | @@ -2876,21 +2890,10 @@ _mm_cvtpi16_ps(__m64 __a) |
| 2876 | /// destination are copied from the corresponding elements in this operand. | 2890 | /// destination are copied from the corresponding elements in this operand. |
| 2877 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted | 2891 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted |
| 2878 | /// values from the operand. | 2892 | /// values from the operand. |
| 2879 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 2893 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 2880 | _mm_cvtpu16_ps(__m64 __a) | 2894 | _mm_cvtpu16_ps(__m64 __a) |
| 2881 | { | 2895 | { |
| 2882 | __m64 __b, __c; | 2896 | return __builtin_convertvector((__v4hu)__a, __v4sf); |
| 2883 | __m128 __r; | ||
| 2884 | |||
| 2885 | __b = _mm_setzero_si64(); | ||
| 2886 | __c = _mm_unpackhi_pi16(__a, __b); | ||
| 2887 | __r = _mm_setzero_ps(); | ||
| 2888 | __r = _mm_cvtpi32_ps(__r, __c); | ||
| 2889 | __r = _mm_movelh_ps(__r, __r); | ||
| 2890 | __c = _mm_unpacklo_pi16(__a, __b); | ||
| 2891 | __r = _mm_cvtpi32_ps(__r, __c); | ||
| 2892 | |||
| 2893 | return __r; | ||
| 2894 | } | 2897 | } |
| 2895 | 2898 | ||
| 2896 | /// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8] | 2899 | /// Converts the lower four 8-bit values from a 64-bit vector of [8 x i8] |
| ... | @@ -2905,16 +2908,12 @@ _mm_cvtpu16_ps(__m64 __a) | ... | @@ -2905,16 +2908,12 @@ _mm_cvtpu16_ps(__m64 __a) |
| 2905 | /// from the corresponding lower 4 elements in this operand. | 2908 | /// from the corresponding lower 4 elements in this operand. |
| 2906 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted | 2909 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted |
| 2907 | /// values from the operand. | 2910 | /// values from the operand. |
| 2908 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 2911 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 2909 | _mm_cvtpi8_ps(__m64 __a) | 2912 | _mm_cvtpi8_ps(__m64 __a) |
| 2910 | { | 2913 | { |
| 2911 | __m64 __b; | 2914 | return __builtin_convertvector( |
| 2912 | 2915 | __builtin_shufflevector((__v8qs)__a, __extension__ (__v8qs){}, | |
| 2913 | __b = _mm_setzero_si64(); | 2916 | 0, 1, 2, 3), __v4sf); |
| 2914 | __b = _mm_cmpgt_pi8(__b, __a); | ||
| 2915 | __b = _mm_unpacklo_pi8(__a, __b); | ||
| 2916 | |||
| 2917 | return _mm_cvtpi16_ps(__b); | ||
| 2918 | } | 2917 | } |
| 2919 | 2918 | ||
| 2920 | /// Converts the lower four unsigned 8-bit integer values from a 64-bit | 2919 | /// Converts the lower four unsigned 8-bit integer values from a 64-bit |
| ... | @@ -2930,15 +2929,12 @@ _mm_cvtpi8_ps(__m64 __a) | ... | @@ -2930,15 +2929,12 @@ _mm_cvtpi8_ps(__m64 __a) |
| 2930 | /// operand. | 2929 | /// operand. |
| 2931 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted | 2930 | /// \returns A 128-bit vector of [4 x float] containing the copied and converted |
| 2932 | /// values from the source operand. | 2931 | /// values from the source operand. |
| 2933 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 2932 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 2934 | _mm_cvtpu8_ps(__m64 __a) | 2933 | _mm_cvtpu8_ps(__m64 __a) |
| 2935 | { | 2934 | { |
| 2936 | __m64 __b; | 2935 | return __builtin_convertvector( |
| 2937 | 2936 | __builtin_shufflevector((__v8qu)__a, __extension__ (__v8qu){}, | |
| 2938 | __b = _mm_setzero_si64(); | 2937 | 0, 1, 2, 3), __v4sf); |
| 2939 | __b = _mm_unpacklo_pi8(__a, __b); | ||
| 2940 | |||
| 2941 | return _mm_cvtpi16_ps(__b); | ||
| 2942 | } | 2938 | } |
| 2943 | 2939 | ||
| 2944 | /// Converts the two 32-bit signed integer values from each 64-bit vector | 2940 | /// Converts the two 32-bit signed integer values from each 64-bit vector |
| ... | @@ -2957,16 +2953,12 @@ _mm_cvtpu8_ps(__m64 __a) | ... | @@ -2957,16 +2953,12 @@ _mm_cvtpu8_ps(__m64 __a) |
| 2957 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the | 2953 | /// \returns A 128-bit vector of [4 x float] whose lower 64 bits contain the |
| 2958 | /// copied and converted values from the first operand. The upper 64 bits | 2954 | /// copied and converted values from the first operand. The upper 64 bits |
| 2959 | /// contain the copied and converted values from the second operand. | 2955 | /// contain the copied and converted values from the second operand. |
| 2960 | static __inline__ __m128 __DEFAULT_FN_ATTRS_MMX | 2956 | static __inline__ __m128 __DEFAULT_FN_ATTRS_SSE2 |
| 2961 | _mm_cvtpi32x2_ps(__m64 __a, __m64 __b) | 2957 | _mm_cvtpi32x2_ps(__m64 __a, __m64 __b) |
| 2962 | { | 2958 | { |
| 2963 | __m128 __c; | 2959 | return __builtin_convertvector( |
| 2964 | 2960 | __builtin_shufflevector((__v2si)__a, (__v2si)__b, | |
| 2965 | __c = _mm_setzero_ps(); | 2961 | 0, 1, 2, 3), __v4sf); |
| 2966 | __c = _mm_cvtpi32_ps(__c, __b); | ||
| 2967 | __c = _mm_movelh_ps(__c, __c); | ||
| 2968 | |||
| 2969 | return _mm_cvtpi32_ps(__c, __a); | ||
| 2970 | } | 2962 | } |
| 2971 | 2963 | ||
| 2972 | /// Converts each single-precision floating-point element of a 128-bit | 2964 | /// Converts each single-precision floating-point element of a 128-bit |
| ... | @@ -2986,16 +2978,11 @@ _mm_cvtpi32x2_ps(__m64 __a, __m64 __b) | ... | @@ -2986,16 +2978,11 @@ _mm_cvtpi32x2_ps(__m64 __a, __m64 __b) |
| 2986 | /// A 128-bit floating-point vector of [4 x float]. | 2978 | /// A 128-bit floating-point vector of [4 x float]. |
| 2987 | /// \returns A 64-bit integer vector of [4 x i16] containing the converted | 2979 | /// \returns A 64-bit integer vector of [4 x i16] containing the converted |
| 2988 | /// values. | 2980 | /// values. |
| 2989 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 2981 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 2990 | _mm_cvtps_pi16(__m128 __a) | 2982 | _mm_cvtps_pi16(__m128 __a) |
| 2991 | { | 2983 | { |
| 2992 | __m64 __b, __c; | 2984 | return __trunc64(__builtin_ia32_packssdw128( |
| 2993 | 2985 | (__v4si)__builtin_ia32_cvtps2dq((__v4sf)__a), (__v4si)_mm_setzero_ps())); | |
| 2994 | __b = _mm_cvtps_pi32(__a); | ||
| 2995 | __a = _mm_movehl_ps(__a, __a); | ||
| 2996 | __c = _mm_cvtps_pi32(__a); | ||
| 2997 | |||
| 2998 | return _mm_packs_pi32(__b, __c); | ||
| 2999 | } | 2986 | } |
| 3000 | 2987 | ||
| 3001 | /// Converts each single-precision floating-point element of a 128-bit | 2988 | /// Converts each single-precision floating-point element of a 128-bit |
| ... | @@ -3016,7 +3003,7 @@ _mm_cvtps_pi16(__m128 __a) | ... | @@ -3016,7 +3003,7 @@ _mm_cvtps_pi16(__m128 __a) |
| 3016 | /// 128-bit floating-point vector of [4 x float]. | 3003 | /// 128-bit floating-point vector of [4 x float]. |
| 3017 | /// \returns A 64-bit integer vector of [8 x i8]. The lower 32 bits contain the | 3004 | /// \returns A 64-bit integer vector of [8 x i8]. The lower 32 bits contain the |
| 3018 | /// converted values and the uppper 32 bits are set to zero. | 3005 | /// converted values and the uppper 32 bits are set to zero. |
| 3019 | static __inline__ __m64 __DEFAULT_FN_ATTRS_MMX | 3006 | static __inline__ __m64 __DEFAULT_FN_ATTRS_SSE2 |
| 3020 | _mm_cvtps_pi8(__m128 __a) | 3007 | _mm_cvtps_pi8(__m128 __a) |
| 3021 | { | 3008 | { |
| 3022 | __m64 __b, __c; | 3009 | __m64 __b, __c; |
| ... | @@ -3196,8 +3183,14 @@ do { \ | ... | @@ -3196,8 +3183,14 @@ do { \ |
| 3196 | #define _m_psadbw _mm_sad_pu8 | 3183 | #define _m_psadbw _mm_sad_pu8 |
| 3197 | #define _m_ _mm_ | 3184 | #define _m_ _mm_ |
| 3198 | 3185 | ||
| 3186 | #undef __trunc64 | ||
| 3187 | #undef __zext128 | ||
| 3188 | #undef __anyext128 | ||
| 3189 | #undef __zeroupper64 | ||
| 3199 | #undef __DEFAULT_FN_ATTRS | 3190 | #undef __DEFAULT_FN_ATTRS |
| 3200 | #undef __DEFAULT_FN_ATTRS_MMX | 3191 | #undef __DEFAULT_FN_ATTRS_CONSTEXPR |
| 3192 | #undef __DEFAULT_FN_ATTRS_SSE2 | ||
| 3193 | #undef __DEFAULT_FN_ATTRS_SSE2_CONSTEXPR | ||
| 3201 | 3194 | ||
| 3202 | /* Ugly hack for backwards-compatibility (compatible with gcc) */ | 3195 | /* Ugly hack for backwards-compatibility (compatible with gcc) */ |
| 3203 | #if defined(__SSE2__) && !__building_module(_Builtin_intrinsics) | 3196 | #if defined(__SSE2__) && !__building_module(_Builtin_intrinsics) |