Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/aarch64/arm_neon.h @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 /* ARM NEON intrinsics include file. | 1 /* ARM NEON intrinsics include file. |
2 | 2 |
3 Copyright (C) 2011-2017 Free Software Foundation, Inc. | 3 Copyright (C) 2011-2018 Free Software Foundation, Inc. |
4 Contributed by ARM Ltd. | 4 Contributed by ARM Ltd. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
8 GCC is free software; you can redistribute it and/or modify it | 8 GCC is free software; you can redistribute it and/or modify it |
11820 vabsq_s64 (int64x2_t __a) | 11820 vabsq_s64 (int64x2_t __a) |
11821 { | 11821 { |
11822 return __builtin_aarch64_absv2di (__a); | 11822 return __builtin_aarch64_absv2di (__a); |
11823 } | 11823 } |
11824 | 11824 |
11825 /* Try to avoid moving between integer and vector registers. | |
11826 For why the cast to unsigned is needed check the vnegd_s64 intrinsic. | |
11827 There is a testcase related to this issue: | |
11828 gcc.target/aarch64/vabsd_s64.c. */ | |
11829 | |
11830 __extension__ extern __inline int64_t | |
11831 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
11832 vabsd_s64 (int64_t __a) | |
11833 { | |
11834 return __a < 0 ? - (uint64_t) __a : __a; | |
11835 } | |
11836 | |
11825 /* vadd */ | 11837 /* vadd */ |
11826 | 11838 |
11827 __extension__ extern __inline int64_t | 11839 __extension__ extern __inline int64_t |
11828 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 11840 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
11829 vaddd_s64 (int64_t __a, int64_t __b) | 11841 vaddd_s64 (int64_t __a, int64_t __b) |
17143 vld1_u64 (const uint64_t *a) | 17155 vld1_u64 (const uint64_t *a) |
17144 { | 17156 { |
17145 return (uint64x1_t) {*a}; | 17157 return (uint64x1_t) {*a}; |
17146 } | 17158 } |
17147 | 17159 |
17160 /* vld1x3 */ | |
17161 | |
17162 __extension__ extern __inline uint8x8x3_t | |
17163 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17164 vld1_u8_x3 (const uint8_t *__a) | |
17165 { | |
17166 uint8x8x3_t __i; | |
17167 __builtin_aarch64_simd_ci __o; | |
17168 __o = (__builtin_aarch64_simd_ci)__builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17169 __i.val[0] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17170 __i.val[1] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17171 __i.val[2] = (uint8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17172 return __i; | |
17173 } | |
17174 | |
17175 __extension__ extern __inline int8x8x3_t | |
17176 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17177 vld1_s8_x3 (const uint8_t *__a) | |
17178 { | |
17179 int8x8x3_t __i; | |
17180 __builtin_aarch64_simd_ci __o; | |
17181 __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17182 __i.val[0] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17183 __i.val[1] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17184 __i.val[2] = (int8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17185 return __i; | |
17186 } | |
17187 | |
17188 __extension__ extern __inline uint16x4x3_t | |
17189 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17190 vld1_u16_x3 (const uint16_t *__a) | |
17191 { | |
17192 uint16x4x3_t __i; | |
17193 __builtin_aarch64_simd_ci __o; | |
17194 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17195 __i.val[0] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17196 __i.val[1] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17197 __i.val[2] = (uint16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17198 return __i; | |
17199 } | |
17200 | |
17201 __extension__ extern __inline int16x4x3_t | |
17202 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17203 vld1_s16_x3 (const int16_t *__a) | |
17204 { | |
17205 int16x4x3_t __i; | |
17206 __builtin_aarch64_simd_ci __o; | |
17207 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17208 __i.val[0] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17209 __i.val[1] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17210 __i.val[2] = (int16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17211 return __i; | |
17212 } | |
17213 | |
17214 __extension__ extern __inline uint32x2x3_t | |
17215 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17216 vld1_u32_x3 (const uint32_t *__a) | |
17217 { | |
17218 uint32x2x3_t __i; | |
17219 __builtin_aarch64_simd_ci __o; | |
17220 __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); | |
17221 __i.val[0] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
17222 __i.val[1] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
17223 __i.val[2] = (uint32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
17224 return __i; | |
17225 } | |
17226 | |
17227 __extension__ extern __inline int32x2x3_t | |
17228 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17229 vld1_s32_x3 (const uint32_t *__a) | |
17230 { | |
17231 int32x2x3_t __i; | |
17232 __builtin_aarch64_simd_ci __o; | |
17233 __o = __builtin_aarch64_ld1x3v2si ((const __builtin_aarch64_simd_si *) __a); | |
17234 __i.val[0] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 0); | |
17235 __i.val[1] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 1); | |
17236 __i.val[2] = (int32x2_t) __builtin_aarch64_get_dregciv2si (__o, 2); | |
17237 return __i; | |
17238 } | |
17239 | |
17240 __extension__ extern __inline uint64x1x3_t | |
17241 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17242 vld1_u64_x3 (const uint64_t *__a) | |
17243 { | |
17244 uint64x1x3_t __i; | |
17245 __builtin_aarch64_simd_ci __o; | |
17246 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17247 __i.val[0] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17248 __i.val[1] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17249 __i.val[2] = (uint64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17250 return __i; | |
17251 } | |
17252 | |
17253 __extension__ extern __inline int64x1x3_t | |
17254 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17255 vld1_s64_x3 (const int64_t *__a) | |
17256 { | |
17257 int64x1x3_t __i; | |
17258 __builtin_aarch64_simd_ci __o; | |
17259 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17260 __i.val[0] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17261 __i.val[1] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17262 __i.val[2] = (int64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17263 | |
17264 return __i; | |
17265 } | |
17266 | |
17267 __extension__ extern __inline float16x4x3_t | |
17268 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17269 vld1_f16_x3 (const float16_t *__a) | |
17270 { | |
17271 float16x4x3_t __i; | |
17272 __builtin_aarch64_simd_ci __o; | |
17273 __o = __builtin_aarch64_ld1x3v4hf ((const __builtin_aarch64_simd_hf *) __a); | |
17274 __i.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0); | |
17275 __i.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1); | |
17276 __i.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2); | |
17277 return __i; | |
17278 } | |
17279 | |
17280 __extension__ extern __inline float32x2x3_t | |
17281 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17282 vld1_f32_x3 (const float32_t *__a) | |
17283 { | |
17284 float32x2x3_t __i; | |
17285 __builtin_aarch64_simd_ci __o; | |
17286 __o = __builtin_aarch64_ld1x3v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
17287 __i.val[0] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 0); | |
17288 __i.val[1] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 1); | |
17289 __i.val[2] = (float32x2_t) __builtin_aarch64_get_dregciv2sf (__o, 2); | |
17290 return __i; | |
17291 } | |
17292 | |
17293 __extension__ extern __inline float64x1x3_t | |
17294 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17295 vld1_f64_x3 (const float64_t *__a) | |
17296 { | |
17297 float64x1x3_t __i; | |
17298 __builtin_aarch64_simd_ci __o; | |
17299 __o = __builtin_aarch64_ld1x3df ((const __builtin_aarch64_simd_df *) __a); | |
17300 __i.val[0] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17301 __i.val[1] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17302 __i.val[2] = (float64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17303 return __i; | |
17304 } | |
17305 | |
17306 __extension__ extern __inline poly8x8x3_t | |
17307 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17308 vld1_p8_x3 (const poly8_t *__a) | |
17309 { | |
17310 poly8x8x3_t __i; | |
17311 __builtin_aarch64_simd_ci __o; | |
17312 __o = __builtin_aarch64_ld1x3v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17313 __i.val[0] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 0); | |
17314 __i.val[1] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 1); | |
17315 __i.val[2] = (poly8x8_t) __builtin_aarch64_get_dregciv8qi (__o, 2); | |
17316 return __i; | |
17317 } | |
17318 | |
17319 __extension__ extern __inline poly16x4x3_t | |
17320 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17321 vld1_p16_x3 (const poly16_t *__a) | |
17322 { | |
17323 poly16x4x3_t __i; | |
17324 __builtin_aarch64_simd_ci __o; | |
17325 __o = __builtin_aarch64_ld1x3v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17326 __i.val[0] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 0); | |
17327 __i.val[1] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 1); | |
17328 __i.val[2] = (poly16x4_t) __builtin_aarch64_get_dregciv4hi (__o, 2); | |
17329 return __i; | |
17330 } | |
17331 | |
17332 __extension__ extern __inline poly64x1x3_t | |
17333 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17334 vld1_p64_x3 (const poly64_t *__a) | |
17335 { | |
17336 poly64x1x3_t __i; | |
17337 __builtin_aarch64_simd_ci __o; | |
17338 __o = __builtin_aarch64_ld1x3di ((const __builtin_aarch64_simd_di *) __a); | |
17339 __i.val[0] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 0); | |
17340 __i.val[1] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 1); | |
17341 __i.val[2] = (poly64x1_t) __builtin_aarch64_get_dregcidi (__o, 2); | |
17342 | |
17343 return __i; | |
17344 } | |
17345 | |
17346 __extension__ extern __inline uint8x16x3_t | |
17347 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17348 vld1q_u8_x3 (const uint8_t *__a) | |
17349 { | |
17350 uint8x16x3_t __i; | |
17351 __builtin_aarch64_simd_ci __o; | |
17352 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17353 __i.val[0] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17354 __i.val[1] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17355 __i.val[2] = (uint8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17356 return __i; | |
17357 } | |
17358 | |
17359 __extension__ extern __inline int8x16x3_t | |
17360 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17361 vld1q_s8_x3 (const int8_t *__a) | |
17362 { | |
17363 int8x16x3_t __i; | |
17364 __builtin_aarch64_simd_ci __o; | |
17365 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17366 __i.val[0] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17367 __i.val[1] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17368 __i.val[2] = (int8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17369 return __i; | |
17370 } | |
17371 | |
17372 __extension__ extern __inline uint16x8x3_t | |
17373 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17374 vld1q_u16_x3 (const uint16_t *__a) | |
17375 { | |
17376 uint16x8x3_t __i; | |
17377 __builtin_aarch64_simd_ci __o; | |
17378 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17379 __i.val[0] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17380 __i.val[1] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17381 __i.val[2] = (uint16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17382 return __i; | |
17383 } | |
17384 | |
17385 __extension__ extern __inline int16x8x3_t | |
17386 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17387 vld1q_s16_x3 (const int16_t *__a) | |
17388 { | |
17389 int16x8x3_t __i; | |
17390 __builtin_aarch64_simd_ci __o; | |
17391 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17392 __i.val[0] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17393 __i.val[1] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17394 __i.val[2] = (int16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17395 return __i; | |
17396 } | |
17397 | |
17398 __extension__ extern __inline uint32x4x3_t | |
17399 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17400 vld1q_u32_x3 (const uint32_t *__a) | |
17401 { | |
17402 uint32x4x3_t __i; | |
17403 __builtin_aarch64_simd_ci __o; | |
17404 __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); | |
17405 __i.val[0] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
17406 __i.val[1] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
17407 __i.val[2] = (uint32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
17408 return __i; | |
17409 } | |
17410 | |
17411 __extension__ extern __inline int32x4x3_t | |
17412 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17413 vld1q_s32_x3 (const int32_t *__a) | |
17414 { | |
17415 int32x4x3_t __i; | |
17416 __builtin_aarch64_simd_ci __o; | |
17417 __o = __builtin_aarch64_ld1x3v4si ((const __builtin_aarch64_simd_si *) __a); | |
17418 __i.val[0] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 0); | |
17419 __i.val[1] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 1); | |
17420 __i.val[2] = (int32x4_t) __builtin_aarch64_get_qregciv4si (__o, 2); | |
17421 return __i; | |
17422 } | |
17423 | |
17424 __extension__ extern __inline uint64x2x3_t | |
17425 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17426 vld1q_u64_x3 (const uint64_t *__a) | |
17427 { | |
17428 uint64x2x3_t __i; | |
17429 __builtin_aarch64_simd_ci __o; | |
17430 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17431 __i.val[0] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17432 __i.val[1] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17433 __i.val[2] = (uint64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17434 return __i; | |
17435 } | |
17436 | |
17437 __extension__ extern __inline int64x2x3_t | |
17438 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17439 vld1q_s64_x3 (const int64_t *__a) | |
17440 { | |
17441 int64x2x3_t __i; | |
17442 __builtin_aarch64_simd_ci __o; | |
17443 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17444 __i.val[0] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17445 __i.val[1] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17446 __i.val[2] = (int64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17447 return __i; | |
17448 } | |
17449 | |
17450 __extension__ extern __inline float16x8x3_t | |
17451 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17452 vld1q_f16_x3 (const float16_t *__a) | |
17453 { | |
17454 float16x8x3_t __i; | |
17455 __builtin_aarch64_simd_ci __o; | |
17456 __o = __builtin_aarch64_ld1x3v8hf ((const __builtin_aarch64_simd_hf *) __a); | |
17457 __i.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0); | |
17458 __i.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1); | |
17459 __i.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2); | |
17460 return __i; | |
17461 } | |
17462 | |
17463 __extension__ extern __inline float32x4x3_t | |
17464 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17465 vld1q_f32_x3 (const float32_t *__a) | |
17466 { | |
17467 float32x4x3_t __i; | |
17468 __builtin_aarch64_simd_ci __o; | |
17469 __o = __builtin_aarch64_ld1x3v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
17470 __i.val[0] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 0); | |
17471 __i.val[1] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 1); | |
17472 __i.val[2] = (float32x4_t) __builtin_aarch64_get_qregciv4sf (__o, 2); | |
17473 return __i; | |
17474 } | |
17475 | |
17476 __extension__ extern __inline float64x2x3_t | |
17477 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17478 vld1q_f64_x3 (const float64_t *__a) | |
17479 { | |
17480 float64x2x3_t __i; | |
17481 __builtin_aarch64_simd_ci __o; | |
17482 __o = __builtin_aarch64_ld1x3v2df ((const __builtin_aarch64_simd_df *) __a); | |
17483 __i.val[0] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 0); | |
17484 __i.val[1] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 1); | |
17485 __i.val[2] = (float64x2_t) __builtin_aarch64_get_qregciv2df (__o, 2); | |
17486 return __i; | |
17487 } | |
17488 | |
17489 __extension__ extern __inline poly8x16x3_t | |
17490 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17491 vld1q_p8_x3 (const poly8_t *__a) | |
17492 { | |
17493 poly8x16x3_t __i; | |
17494 __builtin_aarch64_simd_ci __o; | |
17495 __o = __builtin_aarch64_ld1x3v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17496 __i.val[0] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 0); | |
17497 __i.val[1] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 1); | |
17498 __i.val[2] = (poly8x16_t) __builtin_aarch64_get_qregciv16qi (__o, 2); | |
17499 return __i; | |
17500 } | |
17501 | |
17502 __extension__ extern __inline poly16x8x3_t | |
17503 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17504 vld1q_p16_x3 (const poly16_t *__a) | |
17505 { | |
17506 poly16x8x3_t __i; | |
17507 __builtin_aarch64_simd_ci __o; | |
17508 __o = __builtin_aarch64_ld1x3v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17509 __i.val[0] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 0); | |
17510 __i.val[1] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 1); | |
17511 __i.val[2] = (poly16x8_t) __builtin_aarch64_get_qregciv8hi (__o, 2); | |
17512 return __i; | |
17513 } | |
17514 | |
17515 __extension__ extern __inline poly64x2x3_t | |
17516 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17517 vld1q_p64_x3 (const poly64_t *__a) | |
17518 { | |
17519 poly64x2x3_t __i; | |
17520 __builtin_aarch64_simd_ci __o; | |
17521 __o = __builtin_aarch64_ld1x3v2di ((const __builtin_aarch64_simd_di *) __a); | |
17522 __i.val[0] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 0); | |
17523 __i.val[1] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 1); | |
17524 __i.val[2] = (poly64x2_t) __builtin_aarch64_get_qregciv2di (__o, 2); | |
17525 return __i; | |
17526 } | |
17527 | |
17148 /* vld1q */ | 17528 /* vld1q */ |
17149 | 17529 |
17150 __extension__ extern __inline float16x8_t | 17530 __extension__ extern __inline float16x8_t |
17151 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 17531 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
17152 vld1q_f16 (const float16_t *__a) | 17532 vld1q_f16 (const float16_t *__a) |
17224 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 17604 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
17225 vld1q_u8 (const uint8_t *a) | 17605 vld1q_u8 (const uint8_t *a) |
17226 { | 17606 { |
17227 return (uint8x16_t) | 17607 return (uint8x16_t) |
17228 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a); | 17608 __builtin_aarch64_ld1v16qi ((const __builtin_aarch64_simd_qi *) a); |
17609 } | |
17610 | |
17611 __extension__ extern __inline uint8x8x2_t | |
17612 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17613 vld1_u8_x2 (const uint8_t *__a) | |
17614 { | |
17615 uint8x8x2_t ret; | |
17616 __builtin_aarch64_simd_oi __o; | |
17617 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17618 ret.val[0] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17619 ret.val[1] = (uint8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17620 return ret; | |
17621 } | |
17622 | |
17623 __extension__ extern __inline int8x8x2_t | |
17624 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17625 vld1_s8_x2 (const int8_t *__a) | |
17626 { | |
17627 int8x8x2_t ret; | |
17628 __builtin_aarch64_simd_oi __o; | |
17629 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17630 ret.val[0] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17631 ret.val[1] = (int8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17632 return ret; | |
17633 } | |
17634 | |
17635 __extension__ extern __inline uint16x4x2_t | |
17636 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17637 vld1_u16_x2 (const uint16_t *__a) | |
17638 { | |
17639 uint16x4x2_t ret; | |
17640 __builtin_aarch64_simd_oi __o; | |
17641 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17642 ret.val[0] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17643 ret.val[1] = (uint16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17644 return ret; | |
17645 } | |
17646 | |
17647 __extension__ extern __inline int16x4x2_t | |
17648 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17649 vld1_s16_x2 (const int16_t *__a) | |
17650 { | |
17651 int16x4x2_t ret; | |
17652 __builtin_aarch64_simd_oi __o; | |
17653 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17654 ret.val[0] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17655 ret.val[1] = (int16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17656 return ret; | |
17657 } | |
17658 | |
17659 __extension__ extern __inline uint32x2x2_t | |
17660 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17661 vld1_u32_x2 (const uint32_t *__a) | |
17662 { | |
17663 uint32x2x2_t ret; | |
17664 __builtin_aarch64_simd_oi __o; | |
17665 __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); | |
17666 ret.val[0] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
17667 ret.val[1] = (uint32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
17668 return ret; | |
17669 } | |
17670 | |
17671 __extension__ extern __inline int32x2x2_t | |
17672 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17673 vld1_s32_x2 (const int32_t *__a) | |
17674 { | |
17675 int32x2x2_t ret; | |
17676 __builtin_aarch64_simd_oi __o; | |
17677 __o = __builtin_aarch64_ld1x2v2si ((const __builtin_aarch64_simd_si *) __a); | |
17678 ret.val[0] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 0); | |
17679 ret.val[1] = (int32x2_t) __builtin_aarch64_get_dregoiv2si (__o, 1); | |
17680 return ret; | |
17681 } | |
17682 | |
17683 __extension__ extern __inline uint64x1x2_t | |
17684 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17685 vld1_u64_x2 (const uint64_t *__a) | |
17686 { | |
17687 uint64x1x2_t ret; | |
17688 __builtin_aarch64_simd_oi __o; | |
17689 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17690 ret.val[0] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17691 ret.val[1] = (uint64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17692 return ret; | |
17693 } | |
17694 | |
17695 __extension__ extern __inline int64x1x2_t | |
17696 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17697 vld1_s64_x2 (const int64_t *__a) | |
17698 { | |
17699 int64x1x2_t ret; | |
17700 __builtin_aarch64_simd_oi __o; | |
17701 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17702 ret.val[0] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17703 ret.val[1] = (int64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17704 return ret; | |
17705 } | |
17706 | |
17707 __extension__ extern __inline float16x4x2_t | |
17708 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17709 vld1_f16_x2 (const float16_t *__a) | |
17710 { | |
17711 float16x4x2_t ret; | |
17712 __builtin_aarch64_simd_oi __o; | |
17713 __o = __builtin_aarch64_ld1x2v4hf ((const __builtin_aarch64_simd_hf *) __a); | |
17714 ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 0); | |
17715 ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1); | |
17716 return ret; | |
17717 } | |
17718 | |
17719 __extension__ extern __inline float32x2x2_t | |
17720 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17721 vld1_f32_x2 (const float32_t *__a) | |
17722 { | |
17723 float32x2x2_t ret; | |
17724 __builtin_aarch64_simd_oi __o; | |
17725 __o = __builtin_aarch64_ld1x2v2sf ((const __builtin_aarch64_simd_sf *) __a); | |
17726 ret.val[0] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 0); | |
17727 ret.val[1] = (float32x2_t) __builtin_aarch64_get_dregoiv2sf (__o, 1); | |
17728 return ret; | |
17729 } | |
17730 | |
17731 __extension__ extern __inline float64x1x2_t | |
17732 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17733 vld1_f64_x2 (const float64_t *__a) | |
17734 { | |
17735 float64x1x2_t ret; | |
17736 __builtin_aarch64_simd_oi __o; | |
17737 __o = __builtin_aarch64_ld1x2df ((const __builtin_aarch64_simd_df *) __a); | |
17738 ret.val[0] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 0)}; | |
17739 ret.val[1] = (float64x1_t) {__builtin_aarch64_get_dregoidf (__o, 1)}; | |
17740 return ret; | |
17741 } | |
17742 | |
17743 __extension__ extern __inline poly8x8x2_t | |
17744 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17745 vld1_p8_x2 (const poly8_t *__a) | |
17746 { | |
17747 poly8x8x2_t ret; | |
17748 __builtin_aarch64_simd_oi __o; | |
17749 __o = __builtin_aarch64_ld1x2v8qi ((const __builtin_aarch64_simd_qi *) __a); | |
17750 ret.val[0] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 0); | |
17751 ret.val[1] = (poly8x8_t) __builtin_aarch64_get_dregoiv8qi (__o, 1); | |
17752 return ret; | |
17753 } | |
17754 | |
17755 __extension__ extern __inline poly16x4x2_t | |
17756 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17757 vld1_p16_x2 (const poly16_t *__a) | |
17758 { | |
17759 poly16x4x2_t ret; | |
17760 __builtin_aarch64_simd_oi __o; | |
17761 __o = __builtin_aarch64_ld1x2v4hi ((const __builtin_aarch64_simd_hi *) __a); | |
17762 ret.val[0] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 0); | |
17763 ret.val[1] = (poly16x4_t) __builtin_aarch64_get_dregoiv4hi (__o, 1); | |
17764 return ret; | |
17765 } | |
17766 | |
17767 __extension__ extern __inline poly64x1x2_t | |
17768 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17769 vld1_p64_x2 (const poly64_t *__a) | |
17770 { | |
17771 poly64x1x2_t ret; | |
17772 __builtin_aarch64_simd_oi __o; | |
17773 __o = __builtin_aarch64_ld1x2di ((const __builtin_aarch64_simd_di *) __a); | |
17774 ret.val[0] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 0); | |
17775 ret.val[1] = (poly64x1_t) __builtin_aarch64_get_dregoidi (__o, 1); | |
17776 return ret; | |
17777 } | |
17778 | |
17779 __extension__ extern __inline uint8x16x2_t | |
17780 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17781 vld1q_u8_x2 (const uint8_t *__a) | |
17782 { | |
17783 uint8x16x2_t ret; | |
17784 __builtin_aarch64_simd_oi __o; | |
17785 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17786 ret.val[0] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17787 ret.val[1] = (uint8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17788 return ret; | |
17789 } | |
17790 | |
17791 __extension__ extern __inline int8x16x2_t | |
17792 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17793 vld1q_s8_x2 (const int8_t *__a) | |
17794 { | |
17795 int8x16x2_t ret; | |
17796 __builtin_aarch64_simd_oi __o; | |
17797 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17798 ret.val[0] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17799 ret.val[1] = (int8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17800 return ret; | |
17801 } | |
17802 | |
17803 __extension__ extern __inline uint16x8x2_t | |
17804 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17805 vld1q_u16_x2 (const uint16_t *__a) | |
17806 { | |
17807 uint16x8x2_t ret; | |
17808 __builtin_aarch64_simd_oi __o; | |
17809 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17810 ret.val[0] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17811 ret.val[1] = (uint16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17812 return ret; | |
17813 } | |
17814 | |
17815 __extension__ extern __inline int16x8x2_t | |
17816 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17817 vld1q_s16_x2 (const int16_t *__a) | |
17818 { | |
17819 int16x8x2_t ret; | |
17820 __builtin_aarch64_simd_oi __o; | |
17821 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17822 ret.val[0] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17823 ret.val[1] = (int16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17824 return ret; | |
17825 } | |
17826 | |
17827 __extension__ extern __inline uint32x4x2_t | |
17828 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17829 vld1q_u32_x2 (const uint32_t *__a) | |
17830 { | |
17831 uint32x4x2_t ret; | |
17832 __builtin_aarch64_simd_oi __o; | |
17833 __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); | |
17834 ret.val[0] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
17835 ret.val[1] = (uint32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
17836 return ret; | |
17837 } | |
17838 | |
17839 __extension__ extern __inline int32x4x2_t | |
17840 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17841 vld1q_s32_x2 (const int32_t *__a) | |
17842 { | |
17843 int32x4x2_t ret; | |
17844 __builtin_aarch64_simd_oi __o; | |
17845 __o = __builtin_aarch64_ld1x2v4si ((const __builtin_aarch64_simd_si *) __a); | |
17846 ret.val[0] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 0); | |
17847 ret.val[1] = (int32x4_t) __builtin_aarch64_get_qregoiv4si (__o, 1); | |
17848 return ret; | |
17849 } | |
17850 | |
17851 __extension__ extern __inline uint64x2x2_t | |
17852 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17853 vld1q_u64_x2 (const uint64_t *__a) | |
17854 { | |
17855 uint64x2x2_t ret; | |
17856 __builtin_aarch64_simd_oi __o; | |
17857 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17858 ret.val[0] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17859 ret.val[1] = (uint64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17860 return ret; | |
17861 } | |
17862 | |
17863 __extension__ extern __inline int64x2x2_t | |
17864 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17865 vld1q_s64_x2 (const int64_t *__a) | |
17866 { | |
17867 int64x2x2_t ret; | |
17868 __builtin_aarch64_simd_oi __o; | |
17869 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17870 ret.val[0] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17871 ret.val[1] = (int64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17872 return ret; | |
17873 } | |
17874 | |
17875 __extension__ extern __inline float16x8x2_t | |
17876 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17877 vld1q_f16_x2 (const float16_t *__a) | |
17878 { | |
17879 float16x8x2_t ret; | |
17880 __builtin_aarch64_simd_oi __o; | |
17881 __o = __builtin_aarch64_ld1x2v8hf ((const __builtin_aarch64_simd_hf *) __a); | |
17882 ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0); | |
17883 ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 1); | |
17884 return ret; | |
17885 } | |
17886 | |
17887 __extension__ extern __inline float32x4x2_t | |
17888 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17889 vld1q_f32_x2 (const float32_t *__a) | |
17890 { | |
17891 float32x4x2_t ret; | |
17892 __builtin_aarch64_simd_oi __o; | |
17893 __o = __builtin_aarch64_ld1x2v4sf ((const __builtin_aarch64_simd_sf *) __a); | |
17894 ret.val[0] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 0); | |
17895 ret.val[1] = (float32x4_t) __builtin_aarch64_get_qregoiv4sf (__o, 1); | |
17896 return ret; | |
17897 } | |
17898 | |
17899 __extension__ extern __inline float64x2x2_t | |
17900 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17901 vld1q_f64_x2 (const float64_t *__a) | |
17902 { | |
17903 float64x2x2_t ret; | |
17904 __builtin_aarch64_simd_oi __o; | |
17905 __o = __builtin_aarch64_ld1x2v2df ((const __builtin_aarch64_simd_df *) __a); | |
17906 ret.val[0] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 0); | |
17907 ret.val[1] = (float64x2_t) __builtin_aarch64_get_qregoiv2df (__o, 1); | |
17908 return ret; | |
17909 } | |
17910 | |
17911 __extension__ extern __inline poly8x16x2_t | |
17912 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17913 vld1q_p8_x2 (const poly8_t *__a) | |
17914 { | |
17915 poly8x16x2_t ret; | |
17916 __builtin_aarch64_simd_oi __o; | |
17917 __o = __builtin_aarch64_ld1x2v16qi ((const __builtin_aarch64_simd_qi *) __a); | |
17918 ret.val[0] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 0); | |
17919 ret.val[1] = (poly8x16_t) __builtin_aarch64_get_qregoiv16qi (__o, 1); | |
17920 return ret; | |
17921 } | |
17922 | |
17923 __extension__ extern __inline poly16x8x2_t | |
17924 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17925 vld1q_p16_x2 (const poly16_t *__a) | |
17926 { | |
17927 poly16x8x2_t ret; | |
17928 __builtin_aarch64_simd_oi __o; | |
17929 __o = __builtin_aarch64_ld1x2v8hi ((const __builtin_aarch64_simd_hi *) __a); | |
17930 ret.val[0] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 0); | |
17931 ret.val[1] = (poly16x8_t) __builtin_aarch64_get_qregoiv8hi (__o, 1); | |
17932 return ret; | |
17933 } | |
17934 | |
17935 __extension__ extern __inline poly64x2x2_t | |
17936 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
17937 vld1q_p64_x2 (const poly64_t *__a) | |
17938 { | |
17939 poly64x2x2_t ret; | |
17940 __builtin_aarch64_simd_oi __o; | |
17941 __o = __builtin_aarch64_ld1x2v2di ((const __builtin_aarch64_simd_di *) __a); | |
17942 ret.val[0] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 0); | |
17943 ret.val[1] = (poly64x2_t) __builtin_aarch64_get_qregoiv2di (__o, 1); | |
17944 return ret; | |
17229 } | 17945 } |
17230 | 17946 |
17231 __extension__ extern __inline uint16x8_t | 17947 __extension__ extern __inline uint16x8_t |
17232 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 17948 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
17233 vld1q_u16 (const uint16_t *a) | 17949 vld1q_u16 (const uint16_t *a) |
22201 vneg_s64 (int64x1_t __a) | 22917 vneg_s64 (int64x1_t __a) |
22202 { | 22918 { |
22203 return -__a; | 22919 return -__a; |
22204 } | 22920 } |
22205 | 22921 |
22922 /* According to the ACLE, the negative of the minimum (signed) | |
22923 value is itself. This leads to a semantics mismatch, as this is | |
22924 undefined behaviour in C. The value range predictor is not | |
22925 aware that the negation of a negative number can still be negative | |
22926 and it may try to fold the expression. See the test in | |
22927 gcc.target/aarch64/vnegd_s64.c for an example. | |
22928 | |
22929 The cast below tricks the value range predictor to include | |
22930 INT64_MIN in the range it computes. So for x in the range | |
22931 [INT64_MIN, y] the range prediction after vnegd_s64 (x) will | |
22932 be ~[INT64_MIN + 1, y]. */ | |
22933 | |
22934 __extension__ extern __inline int64_t | |
22935 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
22936 vnegd_s64 (int64_t __a) | |
22937 { | |
22938 return - (uint64_t) __a; | |
22939 } | |
22940 | |
22206 __extension__ extern __inline float32x4_t | 22941 __extension__ extern __inline float32x4_t |
22207 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 22942 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
22208 vnegq_f32 (float32x4_t __a) | 22943 vnegq_f32 (float32x4_t __a) |
22209 { | 22944 { |
22210 return -__a; | 22945 return -__a; |
27157 __extension__ extern __inline void | 27892 __extension__ extern __inline void |
27158 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 27893 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
27159 vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane) | 27894 vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane) |
27160 { | 27895 { |
27161 *__a = __aarch64_vget_lane_any (__b, __lane); | 27896 *__a = __aarch64_vget_lane_any (__b, __lane); |
27897 } | |
27898 | |
27899 /* vst1x2 */ | |
27900 | |
27901 __extension__ extern __inline void | |
27902 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27903 vst1_s64_x2 (int64_t * __a, int64x1x2_t val) | |
27904 { | |
27905 __builtin_aarch64_simd_oi __o; | |
27906 int64x2x2_t temp; | |
27907 temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); | |
27908 temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
27909 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); | |
27910 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
27911 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
27912 } | |
27913 | |
27914 __extension__ extern __inline void | |
27915 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27916 vst1_u64_x2 (uint64_t * __a, uint64x1x2_t val) | |
27917 { | |
27918 __builtin_aarch64_simd_oi __o; | |
27919 uint64x2x2_t temp; | |
27920 temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
27921 temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
27922 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[0], 0); | |
27923 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) temp.val[1], 1); | |
27924 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
27925 } | |
27926 | |
27927 __extension__ extern __inline void | |
27928 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27929 vst1_f64_x2 (float64_t * __a, float64x1x2_t val) | |
27930 { | |
27931 __builtin_aarch64_simd_oi __o; | |
27932 float64x2x2_t temp; | |
27933 temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
27934 temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
27935 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[0], 0); | |
27936 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) temp.val[1], 1); | |
27937 __builtin_aarch64_st1x2df ((__builtin_aarch64_simd_df *) __a, __o); | |
27938 } | |
27939 | |
27940 __extension__ extern __inline void | |
27941 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27942 vst1_s8_x2 (int8_t * __a, int8x8x2_t val) | |
27943 { | |
27944 __builtin_aarch64_simd_oi __o; | |
27945 int8x16x2_t temp; | |
27946 temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); | |
27947 temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
27948 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
27949 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
27950 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
27951 } | |
27952 | |
27953 __extension__ extern __inline void | |
27954 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27955 vst1_p8_x2 (poly8_t * __a, poly8x8x2_t val) | |
27956 { | |
27957 __builtin_aarch64_simd_oi __o; | |
27958 poly8x16x2_t temp; | |
27959 temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
27960 temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
27961 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
27962 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
27963 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
27964 } | |
27965 | |
27966 __extension__ extern __inline void | |
27967 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27968 vst1_s16_x2 (int16_t * __a, int16x4x2_t val) | |
27969 { | |
27970 __builtin_aarch64_simd_oi __o; | |
27971 int16x8x2_t temp; | |
27972 temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); | |
27973 temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
27974 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
27975 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
27976 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
27977 } | |
27978 | |
27979 __extension__ extern __inline void | |
27980 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27981 vst1_p16_x2 (poly16_t * __a, poly16x4x2_t val) | |
27982 { | |
27983 __builtin_aarch64_simd_oi __o; | |
27984 poly16x8x2_t temp; | |
27985 temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
27986 temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
27987 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
27988 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
27989 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
27990 } | |
27991 | |
27992 __extension__ extern __inline void | |
27993 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
27994 vst1_s32_x2 (int32_t * __a, int32x2x2_t val) | |
27995 { | |
27996 __builtin_aarch64_simd_oi __o; | |
27997 int32x4x2_t temp; | |
27998 temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); | |
27999 temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28000 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); | |
28001 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28002 __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28003 } | |
28004 | |
28005 __extension__ extern __inline void | |
28006 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28007 vst1_u8_x2 (uint8_t * __a, uint8x8x2_t val) | |
28008 { | |
28009 __builtin_aarch64_simd_oi __o; | |
28010 uint8x16x2_t temp; | |
28011 temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28012 temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28013 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28014 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28015 __builtin_aarch64_st1x2v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28016 } | |
28017 | |
28018 __extension__ extern __inline void | |
28019 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28020 vst1_u16_x2 (uint16_t * __a, uint16x4x2_t val) | |
28021 { | |
28022 __builtin_aarch64_simd_oi __o; | |
28023 uint16x8x2_t temp; | |
28024 temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28025 temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28026 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28027 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28028 __builtin_aarch64_st1x2v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28029 } | |
28030 | |
28031 __extension__ extern __inline void | |
28032 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28033 vst1_u32_x2 (uint32_t * __a, uint32x2x2_t val) | |
28034 { | |
28035 __builtin_aarch64_simd_oi __o; | |
28036 uint32x4x2_t temp; | |
28037 temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28038 temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28039 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[0], 0); | |
28040 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) temp.val[1], 1); | |
28041 __builtin_aarch64_st1x2v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28042 } | |
28043 | |
28044 __extension__ extern __inline void | |
28045 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28046 vst1_f16_x2 (float16_t * __a, float16x4x2_t val) | |
28047 { | |
28048 __builtin_aarch64_simd_oi __o; | |
28049 float16x8x2_t temp; | |
28050 temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28051 temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28052 __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0); | |
28053 __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1); | |
28054 __builtin_aarch64_st1x2v4hf (__a, __o); | |
28055 } | |
28056 | |
28057 __extension__ extern __inline void | |
28058 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28059 vst1_f32_x2 (float32_t * __a, float32x2x2_t val) | |
28060 { | |
28061 __builtin_aarch64_simd_oi __o; | |
28062 float32x4x2_t temp; | |
28063 temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28064 temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28065 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[0], 0); | |
28066 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) temp.val[1], 1); | |
28067 __builtin_aarch64_st1x2v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28068 } | |
28069 | |
28070 __extension__ extern __inline void | |
28071 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28072 vst1_p64_x2 (poly64_t * __a, poly64x1x2_t val) | |
28073 { | |
28074 __builtin_aarch64_simd_oi __o; | |
28075 poly64x2x2_t temp; | |
28076 temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28077 temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28078 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28079 (poly64x2_t) temp.val[0], 0); | |
28080 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28081 (poly64x2_t) temp.val[1], 1); | |
28082 __builtin_aarch64_st1x2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28083 } | |
28084 | |
28085 __extension__ extern __inline void | |
28086 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28087 vst1q_s8_x2 (int8_t * __a, int8x16x2_t val) | |
28088 { | |
28089 __builtin_aarch64_simd_oi __o; | |
28090 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28091 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28092 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28093 } | |
28094 | |
28095 __extension__ extern __inline void | |
28096 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28097 vst1q_p8_x2 (poly8_t * __a, poly8x16x2_t val) | |
28098 { | |
28099 __builtin_aarch64_simd_oi __o; | |
28100 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28101 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28102 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28103 } | |
28104 | |
28105 __extension__ extern __inline void | |
28106 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28107 vst1q_s16_x2 (int16_t * __a, int16x8x2_t val) | |
28108 { | |
28109 __builtin_aarch64_simd_oi __o; | |
28110 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28111 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28112 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28113 } | |
28114 | |
28115 __extension__ extern __inline void | |
28116 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28117 vst1q_p16_x2 (poly16_t * __a, poly16x8x2_t val) | |
28118 { | |
28119 __builtin_aarch64_simd_oi __o; | |
28120 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28121 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28122 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28123 } | |
28124 | |
28125 __extension__ extern __inline void | |
28126 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28127 vst1q_s32_x2 (int32_t * __a, int32x4x2_t val) | |
28128 { | |
28129 __builtin_aarch64_simd_oi __o; | |
28130 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28131 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28132 __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28133 } | |
28134 | |
28135 __extension__ extern __inline void | |
28136 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28137 vst1q_s64_x2 (int64_t * __a, int64x2x2_t val) | |
28138 { | |
28139 __builtin_aarch64_simd_oi __o; | |
28140 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28141 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28142 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28143 } | |
28144 | |
28145 __extension__ extern __inline void | |
28146 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28147 vst1q_u8_x2 (uint8_t * __a, uint8x16x2_t val) | |
28148 { | |
28149 __builtin_aarch64_simd_oi __o; | |
28150 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[0], 0); | |
28151 __o = __builtin_aarch64_set_qregoiv16qi (__o, (int8x16_t) val.val[1], 1); | |
28152 __builtin_aarch64_st1x2v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28153 } | |
28154 | |
28155 __extension__ extern __inline void | |
28156 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28157 vst1q_u16_x2 (uint16_t * __a, uint16x8x2_t val) | |
28158 { | |
28159 __builtin_aarch64_simd_oi __o; | |
28160 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[0], 0); | |
28161 __o = __builtin_aarch64_set_qregoiv8hi (__o, (int16x8_t) val.val[1], 1); | |
28162 __builtin_aarch64_st1x2v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28163 } | |
28164 | |
28165 __extension__ extern __inline void | |
28166 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28167 vst1q_u32_x2 (uint32_t * __a, uint32x4x2_t val) | |
28168 { | |
28169 __builtin_aarch64_simd_oi __o; | |
28170 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[0], 0); | |
28171 __o = __builtin_aarch64_set_qregoiv4si (__o, (int32x4_t) val.val[1], 1); | |
28172 __builtin_aarch64_st1x2v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28173 } | |
28174 | |
28175 __extension__ extern __inline void | |
28176 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28177 vst1q_u64_x2 (uint64_t * __a, uint64x2x2_t val) | |
28178 { | |
28179 __builtin_aarch64_simd_oi __o; | |
28180 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[0], 0); | |
28181 __o = __builtin_aarch64_set_qregoiv2di (__o, (int64x2_t) val.val[1], 1); | |
28182 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28183 } | |
28184 | |
28185 __extension__ extern __inline void | |
28186 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28187 vst1q_f16_x2 (float16_t * __a, float16x8x2_t val) | |
28188 { | |
28189 __builtin_aarch64_simd_oi __o; | |
28190 __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0); | |
28191 __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1); | |
28192 __builtin_aarch64_st1x2v8hf (__a, __o); | |
28193 } | |
28194 | |
28195 __extension__ extern __inline void | |
28196 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28197 vst1q_f32_x2 (float32_t * __a, float32x4x2_t val) | |
28198 { | |
28199 __builtin_aarch64_simd_oi __o; | |
28200 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[0], 0); | |
28201 __o = __builtin_aarch64_set_qregoiv4sf (__o, (float32x4_t) val.val[1], 1); | |
28202 __builtin_aarch64_st1x2v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28203 } | |
28204 | |
28205 __extension__ extern __inline void | |
28206 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28207 vst1q_f64_x2 (float64_t * __a, float64x2x2_t val) | |
28208 { | |
28209 __builtin_aarch64_simd_oi __o; | |
28210 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[0], 0); | |
28211 __o = __builtin_aarch64_set_qregoiv2df (__o, (float64x2_t) val.val[1], 1); | |
28212 __builtin_aarch64_st1x2v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28213 } | |
28214 | |
28215 __extension__ extern __inline void | |
28216 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28217 vst1q_p64_x2 (poly64_t * __a, poly64x2x2_t val) | |
28218 { | |
28219 __builtin_aarch64_simd_oi __o; | |
28220 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28221 (poly64x2_t) val.val[0], 0); | |
28222 __o = __builtin_aarch64_set_qregoiv2di_ssps (__o, | |
28223 (poly64x2_t) val.val[1], 1); | |
28224 __builtin_aarch64_st1x2v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28225 } | |
28226 | |
28227 /* vst1x3 */ | |
28228 | |
28229 __extension__ extern __inline void | |
28230 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28231 vst1_s64_x3 (int64_t * __a, int64x1x3_t val) | |
28232 { | |
28233 __builtin_aarch64_simd_ci __o; | |
28234 int64x2x3_t temp; | |
28235 temp.val[0] = vcombine_s64 (val.val[0], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28236 temp.val[1] = vcombine_s64 (val.val[1], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28237 temp.val[2] = vcombine_s64 (val.val[2], vcreate_s64 (__AARCH64_INT64_C (0))); | |
28238 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); | |
28239 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28240 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28241 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28242 } | |
28243 | |
28244 __extension__ extern __inline void | |
28245 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28246 vst1_u64_x3 (uint64_t * __a, uint64x1x3_t val) | |
28247 { | |
28248 __builtin_aarch64_simd_ci __o; | |
28249 uint64x2x3_t temp; | |
28250 temp.val[0] = vcombine_u64 (val.val[0], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28251 temp.val[1] = vcombine_u64 (val.val[1], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28252 temp.val[2] = vcombine_u64 (val.val[2], vcreate_u64 (__AARCH64_UINT64_C (0))); | |
28253 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[0], 0); | |
28254 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[1], 1); | |
28255 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) temp.val[2], 2); | |
28256 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28257 } | |
28258 | |
28259 __extension__ extern __inline void | |
28260 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28261 vst1_f64_x3 (float64_t * __a, float64x1x3_t val) | |
28262 { | |
28263 __builtin_aarch64_simd_ci __o; | |
28264 float64x2x3_t temp; | |
28265 temp.val[0] = vcombine_f64 (val.val[0], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28266 temp.val[1] = vcombine_f64 (val.val[1], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28267 temp.val[2] = vcombine_f64 (val.val[2], vcreate_f64 (__AARCH64_UINT64_C (0))); | |
28268 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[0], 0); | |
28269 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[1], 1); | |
28270 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) temp.val[2], 2); | |
28271 __builtin_aarch64_st1x3df ((__builtin_aarch64_simd_df *) __a, __o); | |
28272 } | |
28273 | |
28274 __extension__ extern __inline void | |
28275 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28276 vst1_s8_x3 (int8_t * __a, int8x8x3_t val) | |
28277 { | |
28278 __builtin_aarch64_simd_ci __o; | |
28279 int8x16x3_t temp; | |
28280 temp.val[0] = vcombine_s8 (val.val[0], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28281 temp.val[1] = vcombine_s8 (val.val[1], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28282 temp.val[2] = vcombine_s8 (val.val[2], vcreate_s8 (__AARCH64_INT64_C (0))); | |
28283 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28284 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28285 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28286 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28287 } | |
28288 | |
28289 __extension__ extern __inline void | |
28290 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28291 vst1_p8_x3 (poly8_t * __a, poly8x8x3_t val) | |
28292 { | |
28293 __builtin_aarch64_simd_ci __o; | |
28294 poly8x16x3_t temp; | |
28295 temp.val[0] = vcombine_p8 (val.val[0], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28296 temp.val[1] = vcombine_p8 (val.val[1], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28297 temp.val[2] = vcombine_p8 (val.val[2], vcreate_p8 (__AARCH64_UINT64_C (0))); | |
28298 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28299 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28300 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28301 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28302 } | |
28303 | |
28304 __extension__ extern __inline void | |
28305 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28306 vst1_s16_x3 (int16_t * __a, int16x4x3_t val) | |
28307 { | |
28308 __builtin_aarch64_simd_ci __o; | |
28309 int16x8x3_t temp; | |
28310 temp.val[0] = vcombine_s16 (val.val[0], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28311 temp.val[1] = vcombine_s16 (val.val[1], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28312 temp.val[2] = vcombine_s16 (val.val[2], vcreate_s16 (__AARCH64_INT64_C (0))); | |
28313 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28314 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28315 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28316 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28317 } | |
28318 | |
28319 __extension__ extern __inline void | |
28320 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28321 vst1_p16_x3 (poly16_t * __a, poly16x4x3_t val) | |
28322 { | |
28323 __builtin_aarch64_simd_ci __o; | |
28324 poly16x8x3_t temp; | |
28325 temp.val[0] = vcombine_p16 (val.val[0], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28326 temp.val[1] = vcombine_p16 (val.val[1], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28327 temp.val[2] = vcombine_p16 (val.val[2], vcreate_p16 (__AARCH64_UINT64_C (0))); | |
28328 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28329 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28330 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28331 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28332 } | |
28333 | |
28334 __extension__ extern __inline void | |
28335 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28336 vst1_s32_x3 (int32_t * __a, int32x2x3_t val) | |
28337 { | |
28338 __builtin_aarch64_simd_ci __o; | |
28339 int32x4x3_t temp; | |
28340 temp.val[0] = vcombine_s32 (val.val[0], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28341 temp.val[1] = vcombine_s32 (val.val[1], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28342 temp.val[2] = vcombine_s32 (val.val[2], vcreate_s32 (__AARCH64_INT64_C (0))); | |
28343 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); | |
28344 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
28345 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
28346 __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28347 } | |
28348 | |
28349 __extension__ extern __inline void | |
28350 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28351 vst1_u8_x3 (uint8_t * __a, uint8x8x3_t val) | |
28352 { | |
28353 __builtin_aarch64_simd_ci __o; | |
28354 uint8x16x3_t temp; | |
28355 temp.val[0] = vcombine_u8 (val.val[0], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28356 temp.val[1] = vcombine_u8 (val.val[1], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28357 temp.val[2] = vcombine_u8 (val.val[2], vcreate_u8 (__AARCH64_UINT64_C (0))); | |
28358 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[0], 0); | |
28359 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[1], 1); | |
28360 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) temp.val[2], 2); | |
28361 __builtin_aarch64_st1x3v8qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28362 } | |
28363 | |
28364 __extension__ extern __inline void | |
28365 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28366 vst1_u16_x3 (uint16_t * __a, uint16x4x3_t val) | |
28367 { | |
28368 __builtin_aarch64_simd_ci __o; | |
28369 uint16x8x3_t temp; | |
28370 temp.val[0] = vcombine_u16 (val.val[0], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28371 temp.val[1] = vcombine_u16 (val.val[1], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28372 temp.val[2] = vcombine_u16 (val.val[2], vcreate_u16 (__AARCH64_UINT64_C (0))); | |
28373 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[0], 0); | |
28374 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[1], 1); | |
28375 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) temp.val[2], 2); | |
28376 __builtin_aarch64_st1x3v4hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28377 } | |
28378 | |
28379 __extension__ extern __inline void | |
28380 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28381 vst1_u32_x3 (uint32_t * __a, uint32x2x3_t val) | |
28382 { | |
28383 __builtin_aarch64_simd_ci __o; | |
28384 uint32x4x3_t temp; | |
28385 temp.val[0] = vcombine_u32 (val.val[0], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28386 temp.val[1] = vcombine_u32 (val.val[1], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28387 temp.val[2] = vcombine_u32 (val.val[2], vcreate_u32 (__AARCH64_UINT64_C (0))); | |
28388 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[0], 0); | |
28389 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[1], 1); | |
28390 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) temp.val[2], 2); | |
28391 __builtin_aarch64_st1x3v2si ((__builtin_aarch64_simd_si *) __a, __o); | |
28392 } | |
28393 | |
28394 __extension__ extern __inline void | |
28395 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28396 vst1_f16_x3 (float16_t * __a, float16x4x3_t val) | |
28397 { | |
28398 __builtin_aarch64_simd_ci __o; | |
28399 float16x8x3_t temp; | |
28400 temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28401 temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28402 temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0))); | |
28403 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0); | |
28404 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1); | |
28405 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2); | |
28406 __builtin_aarch64_st1x3v4hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
28407 } | |
28408 | |
28409 __extension__ extern __inline void | |
28410 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28411 vst1_f32_x3 (float32_t * __a, float32x2x3_t val) | |
28412 { | |
28413 __builtin_aarch64_simd_ci __o; | |
28414 float32x4x3_t temp; | |
28415 temp.val[0] = vcombine_f32 (val.val[0], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28416 temp.val[1] = vcombine_f32 (val.val[1], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28417 temp.val[2] = vcombine_f32 (val.val[2], vcreate_f32 (__AARCH64_UINT64_C (0))); | |
28418 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[0], 0); | |
28419 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[1], 1); | |
28420 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) temp.val[2], 2); | |
28421 __builtin_aarch64_st1x3v2sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28422 } | |
28423 | |
28424 __extension__ extern __inline void | |
28425 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28426 vst1_p64_x3 (poly64_t * __a, poly64x1x3_t val) | |
28427 { | |
28428 __builtin_aarch64_simd_ci __o; | |
28429 poly64x2x3_t temp; | |
28430 temp.val[0] = vcombine_p64 (val.val[0], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28431 temp.val[1] = vcombine_p64 (val.val[1], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28432 temp.val[2] = vcombine_p64 (val.val[2], vcreate_p64 (__AARCH64_UINT64_C (0))); | |
28433 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28434 (poly64x2_t) temp.val[0], 0); | |
28435 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28436 (poly64x2_t) temp.val[1], 1); | |
28437 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28438 (poly64x2_t) temp.val[2], 2); | |
28439 __builtin_aarch64_st1x3di ((__builtin_aarch64_simd_di *) __a, __o); | |
28440 } | |
28441 | |
28442 __extension__ extern __inline void | |
28443 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28444 vst1q_s8_x3 (int8_t * __a, int8x16x3_t val) | |
28445 { | |
28446 __builtin_aarch64_simd_ci __o; | |
28447 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28448 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28449 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28450 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28451 } | |
28452 | |
28453 __extension__ extern __inline void | |
28454 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28455 vst1q_p8_x3 (poly8_t * __a, poly8x16x3_t val) | |
28456 { | |
28457 __builtin_aarch64_simd_ci __o; | |
28458 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28459 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28460 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28461 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28462 } | |
28463 | |
28464 __extension__ extern __inline void | |
28465 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28466 vst1q_s16_x3 (int16_t * __a, int16x8x3_t val) | |
28467 { | |
28468 __builtin_aarch64_simd_ci __o; | |
28469 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28470 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28471 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28472 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28473 } | |
28474 | |
28475 __extension__ extern __inline void | |
28476 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28477 vst1q_p16_x3 (poly16_t * __a, poly16x8x3_t val) | |
28478 { | |
28479 __builtin_aarch64_simd_ci __o; | |
28480 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28481 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28482 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28483 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28484 } | |
28485 | |
28486 __extension__ extern __inline void | |
28487 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28488 vst1q_s32_x3 (int32_t * __a, int32x4x3_t val) | |
28489 { | |
28490 __builtin_aarch64_simd_ci __o; | |
28491 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
28492 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
28493 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
28494 __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28495 } | |
28496 | |
28497 __extension__ extern __inline void | |
28498 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28499 vst1q_s64_x3 (int64_t * __a, int64x2x3_t val) | |
28500 { | |
28501 __builtin_aarch64_simd_ci __o; | |
28502 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
28503 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
28504 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
28505 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28506 } | |
28507 | |
28508 __extension__ extern __inline void | |
28509 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28510 vst1q_u8_x3 (uint8_t * __a, uint8x16x3_t val) | |
28511 { | |
28512 __builtin_aarch64_simd_ci __o; | |
28513 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[0], 0); | |
28514 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[1], 1); | |
28515 __o = __builtin_aarch64_set_qregciv16qi (__o, (int8x16_t) val.val[2], 2); | |
28516 __builtin_aarch64_st1x3v16qi ((__builtin_aarch64_simd_qi *) __a, __o); | |
28517 } | |
28518 | |
28519 __extension__ extern __inline void | |
28520 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28521 vst1q_u16_x3 (uint16_t * __a, uint16x8x3_t val) | |
28522 { | |
28523 __builtin_aarch64_simd_ci __o; | |
28524 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[0], 0); | |
28525 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[1], 1); | |
28526 __o = __builtin_aarch64_set_qregciv8hi (__o, (int16x8_t) val.val[2], 2); | |
28527 __builtin_aarch64_st1x3v8hi ((__builtin_aarch64_simd_hi *) __a, __o); | |
28528 } | |
28529 | |
28530 __extension__ extern __inline void | |
28531 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28532 vst1q_u32_x3 (uint32_t * __a, uint32x4x3_t val) | |
28533 { | |
28534 __builtin_aarch64_simd_ci __o; | |
28535 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[0], 0); | |
28536 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[1], 1); | |
28537 __o = __builtin_aarch64_set_qregciv4si (__o, (int32x4_t) val.val[2], 2); | |
28538 __builtin_aarch64_st1x3v4si ((__builtin_aarch64_simd_si *) __a, __o); | |
28539 } | |
28540 | |
28541 __extension__ extern __inline void | |
28542 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28543 vst1q_u64_x3 (uint64_t * __a, uint64x2x3_t val) | |
28544 { | |
28545 __builtin_aarch64_simd_ci __o; | |
28546 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[0], 0); | |
28547 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[1], 1); | |
28548 __o = __builtin_aarch64_set_qregciv2di (__o, (int64x2_t) val.val[2], 2); | |
28549 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
28550 } | |
28551 | |
28552 __extension__ extern __inline void | |
28553 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28554 vst1q_f16_x3 (float16_t * __a, float16x8x3_t val) | |
28555 { | |
28556 __builtin_aarch64_simd_ci __o; | |
28557 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0); | |
28558 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1); | |
28559 __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2); | |
28560 __builtin_aarch64_st1x3v8hf ((__builtin_aarch64_simd_hf *) __a, __o); | |
28561 } | |
28562 | |
28563 __extension__ extern __inline void | |
28564 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28565 vst1q_f32_x3 (float32_t * __a, float32x4x3_t val) | |
28566 { | |
28567 __builtin_aarch64_simd_ci __o; | |
28568 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[0], 0); | |
28569 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[1], 1); | |
28570 __o = __builtin_aarch64_set_qregciv4sf (__o, (float32x4_t) val.val[2], 2); | |
28571 __builtin_aarch64_st1x3v4sf ((__builtin_aarch64_simd_sf *) __a, __o); | |
28572 } | |
28573 | |
28574 __extension__ extern __inline void | |
28575 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28576 vst1q_f64_x3 (float64_t * __a, float64x2x3_t val) | |
28577 { | |
28578 __builtin_aarch64_simd_ci __o; | |
28579 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[0], 0); | |
28580 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[1], 1); | |
28581 __o = __builtin_aarch64_set_qregciv2df (__o, (float64x2_t) val.val[2], 2); | |
28582 __builtin_aarch64_st1x3v2df ((__builtin_aarch64_simd_df *) __a, __o); | |
28583 } | |
28584 | |
28585 __extension__ extern __inline void | |
28586 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
28587 vst1q_p64_x3 (poly64_t * __a, poly64x2x3_t val) | |
28588 { | |
28589 __builtin_aarch64_simd_ci __o; | |
28590 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28591 (poly64x2_t) val.val[0], 0); | |
28592 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28593 (poly64x2_t) val.val[1], 1); | |
28594 __o = __builtin_aarch64_set_qregciv2di_ssps (__o, | |
28595 (poly64x2_t) val.val[2], 2); | |
28596 __builtin_aarch64_st1x3v2di ((__builtin_aarch64_simd_di *) __a, __o); | |
27162 } | 28597 } |
27163 | 28598 |
27164 /* vstn */ | 28599 /* vstn */ |
27165 | 28600 |
27166 __extension__ extern __inline void | 28601 __extension__ extern __inline void |
31630 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | 33065 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) |
31631 vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) | 33066 vdotq_laneq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b, const int __index) |
31632 { | 33067 { |
31633 return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); | 33068 return __builtin_aarch64_sdot_laneqv16qi (__r, __a, __b, __index); |
31634 } | 33069 } |
33070 #pragma GCC pop_options | |
33071 | |
33072 #pragma GCC push_options | |
33073 #pragma GCC target(("arch=armv8.2-a+sm4")) | |
33074 | |
33075 __extension__ extern __inline uint32x4_t | |
33076 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33077 vsm3ss1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33078 { | |
33079 return __builtin_aarch64_sm3ss1qv4si_uuuu (__a, __b, __c); | |
33080 } | |
33081 | |
33082 __extension__ extern __inline uint32x4_t | |
33083 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33084 vsm3tt1aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33085 { | |
33086 return __builtin_aarch64_sm3tt1aqv4si_uuuus (__a, __b, __c, __imm2); | |
33087 } | |
33088 | |
33089 __extension__ extern __inline uint32x4_t | |
33090 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33091 vsm3tt1bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33092 { | |
33093 return __builtin_aarch64_sm3tt1bqv4si_uuuus (__a, __b, __c, __imm2); | |
33094 } | |
33095 | |
33096 __extension__ extern __inline uint32x4_t | |
33097 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33098 vsm3tt2aq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33099 { | |
33100 return __builtin_aarch64_sm3tt2aqv4si_uuuus (__a, __b, __c, __imm2); | |
33101 } | |
33102 | |
33103 __extension__ extern __inline uint32x4_t | |
33104 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33105 vsm3tt2bq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c, const int __imm2) | |
33106 { | |
33107 return __builtin_aarch64_sm3tt2bqv4si_uuuus (__a, __b, __c, __imm2); | |
33108 } | |
33109 | |
33110 __extension__ extern __inline uint32x4_t | |
33111 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33112 vsm3partw1q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33113 { | |
33114 return __builtin_aarch64_sm3partw1qv4si_uuuu (__a, __b, __c); | |
33115 } | |
33116 __extension__ extern __inline uint32x4_t | |
33117 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33118 vsm3partw2q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33119 { | |
33120 return __builtin_aarch64_sm3partw2qv4si_uuuu (__a, __b, __c); | |
33121 } | |
33122 | |
33123 __extension__ extern __inline uint32x4_t | |
33124 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33125 vsm4eq_u32 (uint32x4_t __a, uint32x4_t __b) | |
33126 { | |
33127 return __builtin_aarch64_sm4eqv4si_uuu (__a, __b); | |
33128 } | |
33129 | |
33130 __extension__ extern __inline uint32x4_t | |
33131 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33132 vsm4ekeyq_u32 (uint32x4_t __a, uint32x4_t __b) | |
33133 { | |
33134 return __builtin_aarch64_sm4ekeyqv4si_uuu (__a, __b); | |
33135 } | |
33136 | |
33137 #pragma GCC pop_options | |
33138 | |
33139 #pragma GCC push_options | |
33140 #pragma GCC target(("arch=armv8.2-a+crypto")) | |
33141 | |
33142 __extension__ extern __inline uint64x2_t | |
33143 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33144 vsha512hq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33145 { | |
33146 return __builtin_aarch64_crypto_sha512hqv2di_uuuu (__a, __b, __c); | |
33147 } | |
33148 | |
33149 __extension__ extern __inline uint64x2_t | |
33150 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33151 vsha512h2q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33152 { | |
33153 return __builtin_aarch64_crypto_sha512h2qv2di_uuuu (__a, __b, __c); | |
33154 } | |
33155 | |
33156 __extension__ extern __inline uint64x2_t | |
33157 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33158 vsha512su0q_u64 (uint64x2_t __a, uint64x2_t __b) | |
33159 { | |
33160 return __builtin_aarch64_crypto_sha512su0qv2di_uuu (__a, __b); | |
33161 } | |
33162 | |
33163 __extension__ extern __inline uint64x2_t | |
33164 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33165 vsha512su1q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33166 { | |
33167 return __builtin_aarch64_crypto_sha512su1qv2di_uuuu (__a, __b, __c); | |
33168 } | |
33169 | |
33170 __extension__ extern __inline uint8x16_t | |
33171 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33172 veor3q_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) | |
33173 { | |
33174 return __builtin_aarch64_eor3qv16qi_uuuu (__a, __b, __c); | |
33175 } | |
33176 | |
33177 __extension__ extern __inline uint16x8_t | |
33178 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33179 veor3q_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) | |
33180 { | |
33181 return __builtin_aarch64_eor3qv8hi_uuuu (__a, __b, __c); | |
33182 } | |
33183 | |
33184 __extension__ extern __inline uint32x4_t | |
33185 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33186 veor3q_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33187 { | |
33188 return __builtin_aarch64_eor3qv4si_uuuu (__a, __b, __c); | |
33189 } | |
33190 | |
33191 __extension__ extern __inline uint64x2_t | |
33192 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33193 veor3q_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33194 { | |
33195 return __builtin_aarch64_eor3qv2di_uuuu (__a, __b, __c); | |
33196 } | |
33197 | |
33198 | |
33199 __extension__ extern __inline int8x16_t | |
33200 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33201 veor3q_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) | |
33202 { | |
33203 return __builtin_aarch64_eor3qv16qi (__a, __b, __c); | |
33204 } | |
33205 | |
33206 __extension__ extern __inline int16x8_t | |
33207 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33208 veor3q_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) | |
33209 { | |
33210 return __builtin_aarch64_eor3qv8hi (__a, __b, __c); | |
33211 } | |
33212 | |
33213 __extension__ extern __inline int32x4_t | |
33214 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33215 veor3q_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) | |
33216 { | |
33217 return __builtin_aarch64_eor3qv4si (__a, __b, __c); | |
33218 } | |
33219 | |
33220 __extension__ extern __inline int64x2_t | |
33221 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33222 veor3q_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) | |
33223 { | |
33224 return __builtin_aarch64_eor3qv2di (__a, __b, __c); | |
33225 } | |
33226 | |
33227 __extension__ extern __inline uint64x2_t | |
33228 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33229 vrax1q_u64 (uint64x2_t __a, uint64x2_t __b) | |
33230 { | |
33231 return __builtin_aarch64_rax1qv2di_uuu (__a, __b); | |
33232 } | |
33233 | |
33234 __extension__ extern __inline uint64x2_t | |
33235 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33236 vxarq_u64 (uint64x2_t __a, uint64x2_t __b, const int imm6) | |
33237 { | |
33238 return __builtin_aarch64_xarqv2di_uuus (__a, __b,imm6); | |
33239 } | |
33240 | |
33241 __extension__ extern __inline uint8x16_t | |
33242 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33243 vbcaxq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c) | |
33244 { | |
33245 return __builtin_aarch64_bcaxqv16qi_uuuu (__a, __b, __c); | |
33246 } | |
33247 | |
33248 __extension__ extern __inline uint16x8_t | |
33249 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33250 vbcaxq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c) | |
33251 { | |
33252 return __builtin_aarch64_bcaxqv8hi_uuuu (__a, __b, __c); | |
33253 } | |
33254 | |
33255 __extension__ extern __inline uint32x4_t | |
33256 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33257 vbcaxq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c) | |
33258 { | |
33259 return __builtin_aarch64_bcaxqv4si_uuuu (__a, __b, __c); | |
33260 } | |
33261 | |
33262 __extension__ extern __inline uint64x2_t | |
33263 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33264 vbcaxq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c) | |
33265 { | |
33266 return __builtin_aarch64_bcaxqv2di_uuuu (__a, __b, __c); | |
33267 } | |
33268 | |
33269 __extension__ extern __inline int8x16_t | |
33270 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33271 vbcaxq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c) | |
33272 { | |
33273 return __builtin_aarch64_bcaxqv16qi (__a, __b, __c); | |
33274 } | |
33275 | |
33276 __extension__ extern __inline int16x8_t | |
33277 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33278 vbcaxq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c) | |
33279 { | |
33280 return __builtin_aarch64_bcaxqv8hi (__a, __b, __c); | |
33281 } | |
33282 | |
33283 __extension__ extern __inline int32x4_t | |
33284 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33285 vbcaxq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c) | |
33286 { | |
33287 return __builtin_aarch64_bcaxqv4si (__a, __b, __c); | |
33288 } | |
33289 | |
33290 __extension__ extern __inline int64x2_t | |
33291 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33292 vbcaxq_s64 (int64x2_t __a, int64x2_t __b, int64x2_t __c) | |
33293 { | |
33294 return __builtin_aarch64_bcaxqv2di (__a, __b, __c); | |
33295 } | |
33296 | |
33297 | |
33298 #pragma GCC pop_options | |
33299 | |
33300 #pragma GCC push_options | |
33301 #pragma GCC target(("arch=armv8.2-a+fp16fml")) | |
33302 | |
33303 __extension__ extern __inline float32x2_t | |
33304 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33305 vfmlal_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33306 { | |
33307 return __builtin_aarch64_fmlal_lowv2sf (__r, __a, __b); | |
33308 } | |
33309 | |
33310 __extension__ extern __inline float32x2_t | |
33311 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33312 vfmlsl_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33313 { | |
33314 return __builtin_aarch64_fmlsl_lowv2sf (__r, __a, __b); | |
33315 } | |
33316 | |
33317 __extension__ extern __inline float32x4_t | |
33318 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33319 vfmlalq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33320 { | |
33321 return __builtin_aarch64_fmlalq_lowv4sf (__r, __a, __b); | |
33322 } | |
33323 | |
33324 __extension__ extern __inline float32x4_t | |
33325 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33326 vfmlslq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33327 { | |
33328 return __builtin_aarch64_fmlslq_lowv4sf (__r, __a, __b); | |
33329 } | |
33330 | |
33331 __extension__ extern __inline float32x2_t | |
33332 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33333 vfmlal_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33334 { | |
33335 return __builtin_aarch64_fmlal_highv2sf (__r, __a, __b); | |
33336 } | |
33337 | |
33338 __extension__ extern __inline float32x2_t | |
33339 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33340 vfmlsl_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b) | |
33341 { | |
33342 return __builtin_aarch64_fmlsl_highv2sf (__r, __a, __b); | |
33343 } | |
33344 | |
33345 __extension__ extern __inline float32x4_t | |
33346 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33347 vfmlalq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33348 { | |
33349 return __builtin_aarch64_fmlalq_highv4sf (__r, __a, __b); | |
33350 } | |
33351 | |
33352 __extension__ extern __inline float32x4_t | |
33353 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33354 vfmlslq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b) | |
33355 { | |
33356 return __builtin_aarch64_fmlslq_highv4sf (__r, __a, __b); | |
33357 } | |
33358 | |
33359 __extension__ extern __inline float32x2_t | |
33360 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33361 vfmlal_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33362 const int __lane) | |
33363 { | |
33364 return __builtin_aarch64_fmlal_lane_lowv2sf (__r, __a, __b, __lane); | |
33365 } | |
33366 | |
33367 __extension__ extern __inline float32x2_t | |
33368 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33369 vfmlsl_lane_low_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33370 const int __lane) | |
33371 { | |
33372 return __builtin_aarch64_fmlsl_lane_lowv2sf (__r, __a, __b, __lane); | |
33373 } | |
33374 | |
33375 __extension__ extern __inline float32x2_t | |
33376 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33377 vfmlal_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33378 const int __lane) | |
33379 { | |
33380 return __builtin_aarch64_fmlal_laneq_lowv2sf (__r, __a, __b, __lane); | |
33381 } | |
33382 | |
33383 __extension__ extern __inline float32x2_t | |
33384 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33385 vfmlsl_laneq_low_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33386 const int __lane) | |
33387 { | |
33388 return __builtin_aarch64_fmlsl_laneq_lowv2sf (__r, __a, __b, __lane); | |
33389 } | |
33390 | |
33391 __extension__ extern __inline float32x4_t | |
33392 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33393 vfmlalq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33394 const int __lane) | |
33395 { | |
33396 return __builtin_aarch64_fmlalq_lane_lowv4sf (__r, __a, __b, __lane); | |
33397 } | |
33398 | |
33399 __extension__ extern __inline float32x4_t | |
33400 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33401 vfmlslq_lane_low_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33402 const int __lane) | |
33403 { | |
33404 return __builtin_aarch64_fmlslq_lane_lowv4sf (__r, __a, __b, __lane); | |
33405 } | |
33406 | |
33407 __extension__ extern __inline float32x4_t | |
33408 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33409 vfmlalq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33410 const int __lane) | |
33411 { | |
33412 return __builtin_aarch64_fmlalq_laneq_lowv4sf (__r, __a, __b, __lane); | |
33413 } | |
33414 | |
33415 __extension__ extern __inline float32x4_t | |
33416 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33417 vfmlslq_laneq_low_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33418 const int __lane) | |
33419 { | |
33420 return __builtin_aarch64_fmlslq_laneq_lowv4sf (__r, __a, __b, __lane); | |
33421 } | |
33422 | |
33423 __extension__ extern __inline float32x2_t | |
33424 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33425 vfmlal_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33426 const int __lane) | |
33427 { | |
33428 return __builtin_aarch64_fmlal_lane_highv2sf (__r, __a, __b, __lane); | |
33429 } | |
33430 | |
33431 __extension__ extern __inline float32x2_t | |
33432 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33433 vfmlsl_lane_high_u32 (float32x2_t __r, float16x4_t __a, float16x4_t __b, | |
33434 const int __lane) | |
33435 { | |
33436 return __builtin_aarch64_fmlsl_lane_highv2sf (__r, __a, __b, __lane); | |
33437 } | |
33438 | |
33439 __extension__ extern __inline float32x2_t | |
33440 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33441 vfmlal_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33442 const int __lane) | |
33443 { | |
33444 return __builtin_aarch64_fmlal_laneq_highv2sf (__r, __a, __b, __lane); | |
33445 } | |
33446 | |
33447 __extension__ extern __inline float32x2_t | |
33448 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33449 vfmlsl_laneq_high_u32 (float32x2_t __r, float16x4_t __a, float16x8_t __b, | |
33450 const int __lane) | |
33451 { | |
33452 return __builtin_aarch64_fmlsl_laneq_highv2sf (__r, __a, __b, __lane); | |
33453 } | |
33454 | |
33455 __extension__ extern __inline float32x4_t | |
33456 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33457 vfmlalq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33458 const int __lane) | |
33459 { | |
33460 return __builtin_aarch64_fmlalq_lane_highv4sf (__r, __a, __b, __lane); | |
33461 } | |
33462 | |
33463 __extension__ extern __inline float32x4_t | |
33464 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33465 vfmlslq_lane_high_u32 (float32x4_t __r, float16x8_t __a, float16x4_t __b, | |
33466 const int __lane) | |
33467 { | |
33468 return __builtin_aarch64_fmlslq_lane_highv4sf (__r, __a, __b, __lane); | |
33469 } | |
33470 | |
33471 __extension__ extern __inline float32x4_t | |
33472 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33473 vfmlalq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33474 const int __lane) | |
33475 { | |
33476 return __builtin_aarch64_fmlalq_laneq_highv4sf (__r, __a, __b, __lane); | |
33477 } | |
33478 | |
33479 __extension__ extern __inline float32x4_t | |
33480 __attribute__ ((__always_inline__, __gnu_inline__, __artificial__)) | |
33481 vfmlslq_laneq_high_u32 (float32x4_t __r, float16x8_t __a, float16x8_t __b, | |
33482 const int __lane) | |
33483 { | |
33484 return __builtin_aarch64_fmlslq_laneq_highv4sf (__r, __a, __b, __lane); | |
33485 } | |
33486 | |
31635 #pragma GCC pop_options | 33487 #pragma GCC pop_options |
31636 | 33488 |
31637 #undef __aarch64_vget_lane_any | 33489 #undef __aarch64_vget_lane_any |
31638 | 33490 |
31639 #undef __aarch64_vdup_lane_any | 33491 #undef __aarch64_vdup_lane_any |