You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

19678 lines
607KB

  1. /* ARM NEON intrinsics include file.
  2. Copyright (C) 2006-2020 Free Software Foundation, Inc.
  3. Contributed by CodeSourcery.
  4. This file is part of GCC.
  5. GCC is free software; you can redistribute it and/or modify it
  6. under the terms of the GNU General Public License as published
  7. by the Free Software Foundation; either version 3, or (at your
  8. option) any later version.
  9. GCC is distributed in the hope that it will be useful, but WITHOUT
  10. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11. or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
  12. License for more details.
  13. Under Section 7 of GPL version 3, you are granted additional
  14. permissions described in the GCC Runtime Library Exception, version
  15. 3.1, as published by the Free Software Foundation.
  16. You should have received a copy of the GNU General Public License and
  17. a copy of the GCC Runtime Library Exception along with this program;
  18. see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
  19. <http://www.gnu.org/licenses/>. */
  20. #ifndef _GCC_ARM_NEON_H
  21. #define _GCC_ARM_NEON_H 1
  22. #ifndef __ARM_FP
  23. #error "NEON intrinsics not available with the soft-float ABI. Please use -mfloat-abi=softfp or -mfloat-abi=hard"
  24. #else
  25. #pragma GCC push_options
  26. #pragma GCC target ("fpu=neon")
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. #include <arm_fp16.h>
  31. #include <arm_bf16.h>
  32. #include <stdint.h>
  33. /* For big-endian, GCC's vector indices are reversed within each 64
  34. bits compared to the architectural lane indices used by Neon
  35. intrinsics. */
  36. #ifdef __ARM_BIG_ENDIAN
  37. #define __ARM_NUM_LANES(__v) (sizeof (__v) / sizeof (__v[0]))
  38. #define __arm_lane(__vec, __idx) (__idx ^ (__ARM_NUM_LANES(__vec) - 1))
  39. #define __arm_laneq(__vec, __idx) (__idx ^ (__ARM_NUM_LANES(__vec)/2 - 1))
  40. #else
  41. #define __arm_lane(__vec, __idx) __idx
  42. #define __arm_laneq(__vec, __idx) __idx
  43. #endif
  44. typedef __simd64_int8_t int8x8_t;
  45. typedef __simd64_int16_t int16x4_t;
  46. typedef __simd64_int32_t int32x2_t;
  47. typedef __builtin_neon_di int64x1_t;
  48. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  49. typedef __fp16 float16_t;
  50. typedef __simd64_float16_t float16x4_t;
  51. #endif
  52. typedef __simd64_float32_t float32x2_t;
  53. typedef __simd64_poly8_t poly8x8_t;
  54. typedef __simd64_poly16_t poly16x4_t;
  55. #pragma GCC push_options
  56. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  57. typedef __builtin_neon_poly64 poly64x1_t;
  58. #pragma GCC pop_options
  59. typedef __simd64_uint8_t uint8x8_t;
  60. typedef __simd64_uint16_t uint16x4_t;
  61. typedef __simd64_uint32_t uint32x2_t;
  62. typedef __builtin_neon_udi uint64x1_t;
  63. typedef __simd128_int8_t int8x16_t;
  64. typedef __simd128_int16_t int16x8_t;
  65. typedef __simd128_int32_t int32x4_t;
  66. typedef __simd128_int64_t int64x2_t;
  67. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  68. typedef __simd128_float16_t float16x8_t;
  69. #endif
  70. typedef __simd128_float32_t float32x4_t;
  71. typedef __simd128_poly8_t poly8x16_t;
  72. typedef __simd128_poly16_t poly16x8_t;
  73. #pragma GCC push_options
  74. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  75. typedef __builtin_neon_poly64 poly64x2_t __attribute__ ((__vector_size__ (16)));
  76. #pragma GCC pop_options
  77. typedef __simd128_uint8_t uint8x16_t;
  78. typedef __simd128_uint16_t uint16x8_t;
  79. typedef __simd128_uint32_t uint32x4_t;
  80. typedef __simd128_uint64_t uint64x2_t;
  81. typedef float float32_t;
  82. typedef __simd128_bfloat16_t bfloat16x8_t;
  83. typedef __simd64_bfloat16_t bfloat16x4_t;
  84. /* The Poly types are user visible and live in their own world,
  85. keep them that way. */
  86. typedef __builtin_neon_poly8 poly8_t;
  87. typedef __builtin_neon_poly16 poly16_t;
  88. #pragma GCC push_options
  89. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  90. typedef __builtin_neon_poly64 poly64_t;
  91. typedef __builtin_neon_poly128 poly128_t;
  92. #pragma GCC pop_options
  93. typedef struct int8x8x2_t
  94. {
  95. int8x8_t val[2];
  96. } int8x8x2_t;
  97. typedef struct int8x16x2_t
  98. {
  99. int8x16_t val[2];
  100. } int8x16x2_t;
  101. typedef struct int16x4x2_t
  102. {
  103. int16x4_t val[2];
  104. } int16x4x2_t;
  105. typedef struct int16x8x2_t
  106. {
  107. int16x8_t val[2];
  108. } int16x8x2_t;
  109. typedef struct int32x2x2_t
  110. {
  111. int32x2_t val[2];
  112. } int32x2x2_t;
  113. typedef struct int32x4x2_t
  114. {
  115. int32x4_t val[2];
  116. } int32x4x2_t;
  117. typedef struct int64x1x2_t
  118. {
  119. int64x1_t val[2];
  120. } int64x1x2_t;
  121. typedef struct int64x2x2_t
  122. {
  123. int64x2_t val[2];
  124. } int64x2x2_t;
  125. typedef struct uint8x8x2_t
  126. {
  127. uint8x8_t val[2];
  128. } uint8x8x2_t;
  129. typedef struct uint8x16x2_t
  130. {
  131. uint8x16_t val[2];
  132. } uint8x16x2_t;
  133. typedef struct uint16x4x2_t
  134. {
  135. uint16x4_t val[2];
  136. } uint16x4x2_t;
  137. typedef struct uint16x8x2_t
  138. {
  139. uint16x8_t val[2];
  140. } uint16x8x2_t;
  141. typedef struct uint32x2x2_t
  142. {
  143. uint32x2_t val[2];
  144. } uint32x2x2_t;
  145. typedef struct uint32x4x2_t
  146. {
  147. uint32x4_t val[2];
  148. } uint32x4x2_t;
  149. typedef struct uint64x1x2_t
  150. {
  151. uint64x1_t val[2];
  152. } uint64x1x2_t;
  153. typedef struct uint64x2x2_t
  154. {
  155. uint64x2_t val[2];
  156. } uint64x2x2_t;
  157. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  158. typedef struct float16x4x2_t
  159. {
  160. float16x4_t val[2];
  161. } float16x4x2_t;
  162. #endif
  163. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  164. typedef struct float16x8x2_t
  165. {
  166. float16x8_t val[2];
  167. } float16x8x2_t;
  168. #endif
  169. typedef struct float32x2x2_t
  170. {
  171. float32x2_t val[2];
  172. } float32x2x2_t;
  173. typedef struct float32x4x2_t
  174. {
  175. float32x4_t val[2];
  176. } float32x4x2_t;
  177. typedef struct poly8x8x2_t
  178. {
  179. poly8x8_t val[2];
  180. } poly8x8x2_t;
  181. typedef struct poly8x16x2_t
  182. {
  183. poly8x16_t val[2];
  184. } poly8x16x2_t;
  185. typedef struct poly16x4x2_t
  186. {
  187. poly16x4_t val[2];
  188. } poly16x4x2_t;
  189. typedef struct poly16x8x2_t
  190. {
  191. poly16x8_t val[2];
  192. } poly16x8x2_t;
  193. #pragma GCC push_options
  194. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  195. typedef struct poly64x1x2_t
  196. {
  197. poly64x1_t val[2];
  198. } poly64x1x2_t;
  199. typedef struct poly64x2x2_t
  200. {
  201. poly64x2_t val[2];
  202. } poly64x2x2_t;
  203. #pragma GCC pop_options
  204. typedef struct int8x8x3_t
  205. {
  206. int8x8_t val[3];
  207. } int8x8x3_t;
  208. typedef struct int8x16x3_t
  209. {
  210. int8x16_t val[3];
  211. } int8x16x3_t;
  212. typedef struct int16x4x3_t
  213. {
  214. int16x4_t val[3];
  215. } int16x4x3_t;
  216. typedef struct int16x8x3_t
  217. {
  218. int16x8_t val[3];
  219. } int16x8x3_t;
  220. typedef struct int32x2x3_t
  221. {
  222. int32x2_t val[3];
  223. } int32x2x3_t;
  224. typedef struct int32x4x3_t
  225. {
  226. int32x4_t val[3];
  227. } int32x4x3_t;
  228. typedef struct int64x1x3_t
  229. {
  230. int64x1_t val[3];
  231. } int64x1x3_t;
  232. typedef struct int64x2x3_t
  233. {
  234. int64x2_t val[3];
  235. } int64x2x3_t;
  236. typedef struct uint8x8x3_t
  237. {
  238. uint8x8_t val[3];
  239. } uint8x8x3_t;
  240. typedef struct uint8x16x3_t
  241. {
  242. uint8x16_t val[3];
  243. } uint8x16x3_t;
  244. typedef struct uint16x4x3_t
  245. {
  246. uint16x4_t val[3];
  247. } uint16x4x3_t;
  248. typedef struct uint16x8x3_t
  249. {
  250. uint16x8_t val[3];
  251. } uint16x8x3_t;
  252. typedef struct uint32x2x3_t
  253. {
  254. uint32x2_t val[3];
  255. } uint32x2x3_t;
  256. typedef struct uint32x4x3_t
  257. {
  258. uint32x4_t val[3];
  259. } uint32x4x3_t;
  260. typedef struct uint64x1x3_t
  261. {
  262. uint64x1_t val[3];
  263. } uint64x1x3_t;
  264. typedef struct uint64x2x3_t
  265. {
  266. uint64x2_t val[3];
  267. } uint64x2x3_t;
  268. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  269. typedef struct float16x4x3_t
  270. {
  271. float16x4_t val[3];
  272. } float16x4x3_t;
  273. #endif
  274. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  275. typedef struct float16x8x3_t
  276. {
  277. float16x8_t val[3];
  278. } float16x8x3_t;
  279. #endif
  280. typedef struct float32x2x3_t
  281. {
  282. float32x2_t val[3];
  283. } float32x2x3_t;
  284. typedef struct float32x4x3_t
  285. {
  286. float32x4_t val[3];
  287. } float32x4x3_t;
  288. typedef struct poly8x8x3_t
  289. {
  290. poly8x8_t val[3];
  291. } poly8x8x3_t;
  292. typedef struct poly8x16x3_t
  293. {
  294. poly8x16_t val[3];
  295. } poly8x16x3_t;
  296. typedef struct poly16x4x3_t
  297. {
  298. poly16x4_t val[3];
  299. } poly16x4x3_t;
  300. typedef struct poly16x8x3_t
  301. {
  302. poly16x8_t val[3];
  303. } poly16x8x3_t;
  304. #pragma GCC push_options
  305. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  306. typedef struct poly64x1x3_t
  307. {
  308. poly64x1_t val[3];
  309. } poly64x1x3_t;
  310. typedef struct poly64x2x3_t
  311. {
  312. poly64x2_t val[3];
  313. } poly64x2x3_t;
  314. #pragma GCC pop_options
  315. typedef struct int8x8x4_t
  316. {
  317. int8x8_t val[4];
  318. } int8x8x4_t;
  319. typedef struct int8x16x4_t
  320. {
  321. int8x16_t val[4];
  322. } int8x16x4_t;
  323. typedef struct int16x4x4_t
  324. {
  325. int16x4_t val[4];
  326. } int16x4x4_t;
  327. typedef struct int16x8x4_t
  328. {
  329. int16x8_t val[4];
  330. } int16x8x4_t;
  331. typedef struct int32x2x4_t
  332. {
  333. int32x2_t val[4];
  334. } int32x2x4_t;
  335. typedef struct int32x4x4_t
  336. {
  337. int32x4_t val[4];
  338. } int32x4x4_t;
  339. typedef struct int64x1x4_t
  340. {
  341. int64x1_t val[4];
  342. } int64x1x4_t;
  343. typedef struct int64x2x4_t
  344. {
  345. int64x2_t val[4];
  346. } int64x2x4_t;
  347. typedef struct uint8x8x4_t
  348. {
  349. uint8x8_t val[4];
  350. } uint8x8x4_t;
  351. typedef struct uint8x16x4_t
  352. {
  353. uint8x16_t val[4];
  354. } uint8x16x4_t;
  355. typedef struct uint16x4x4_t
  356. {
  357. uint16x4_t val[4];
  358. } uint16x4x4_t;
  359. typedef struct uint16x8x4_t
  360. {
  361. uint16x8_t val[4];
  362. } uint16x8x4_t;
  363. typedef struct uint32x2x4_t
  364. {
  365. uint32x2_t val[4];
  366. } uint32x2x4_t;
  367. typedef struct uint32x4x4_t
  368. {
  369. uint32x4_t val[4];
  370. } uint32x4x4_t;
  371. typedef struct uint64x1x4_t
  372. {
  373. uint64x1_t val[4];
  374. } uint64x1x4_t;
  375. typedef struct uint64x2x4_t
  376. {
  377. uint64x2_t val[4];
  378. } uint64x2x4_t;
  379. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  380. typedef struct float16x4x4_t
  381. {
  382. float16x4_t val[4];
  383. } float16x4x4_t;
  384. #endif
  385. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  386. typedef struct float16x8x4_t
  387. {
  388. float16x8_t val[4];
  389. } float16x8x4_t;
  390. #endif
  391. typedef struct float32x2x4_t
  392. {
  393. float32x2_t val[4];
  394. } float32x2x4_t;
  395. typedef struct float32x4x4_t
  396. {
  397. float32x4_t val[4];
  398. } float32x4x4_t;
  399. typedef struct poly8x8x4_t
  400. {
  401. poly8x8_t val[4];
  402. } poly8x8x4_t;
  403. typedef struct poly8x16x4_t
  404. {
  405. poly8x16_t val[4];
  406. } poly8x16x4_t;
  407. typedef struct poly16x4x4_t
  408. {
  409. poly16x4_t val[4];
  410. } poly16x4x4_t;
  411. typedef struct poly16x8x4_t
  412. {
  413. poly16x8_t val[4];
  414. } poly16x8x4_t;
  415. #pragma GCC push_options
  416. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  417. typedef struct poly64x1x4_t
  418. {
  419. poly64x1_t val[4];
  420. } poly64x1x4_t;
  421. typedef struct poly64x2x4_t
  422. {
  423. poly64x2_t val[4];
  424. } poly64x2x4_t;
  425. #pragma GCC pop_options
  426. /* vadd */
  427. __extension__ extern __inline int8x8_t
  428. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  429. vadd_s8 (int8x8_t __a, int8x8_t __b)
  430. {
  431. return __a + __b;
  432. }
  433. __extension__ extern __inline int16x4_t
  434. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  435. vadd_s16 (int16x4_t __a, int16x4_t __b)
  436. {
  437. return __a + __b;
  438. }
  439. __extension__ extern __inline int32x2_t
  440. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  441. vadd_s32 (int32x2_t __a, int32x2_t __b)
  442. {
  443. return __a + __b;
  444. }
  445. __extension__ extern __inline float32x2_t
  446. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  447. vadd_f32 (float32x2_t __a, float32x2_t __b)
  448. {
  449. #ifdef __FAST_MATH__
  450. return __a + __b;
  451. #else
  452. return (float32x2_t) __builtin_neon_vaddv2sf (__a, __b);
  453. #endif
  454. }
  455. __extension__ extern __inline uint8x8_t
  456. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  457. vadd_u8 (uint8x8_t __a, uint8x8_t __b)
  458. {
  459. return __a + __b;
  460. }
  461. __extension__ extern __inline uint16x4_t
  462. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  463. vadd_u16 (uint16x4_t __a, uint16x4_t __b)
  464. {
  465. return __a + __b;
  466. }
  467. __extension__ extern __inline uint32x2_t
  468. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  469. vadd_u32 (uint32x2_t __a, uint32x2_t __b)
  470. {
  471. return __a + __b;
  472. }
  473. __extension__ extern __inline int64x1_t
  474. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  475. vadd_s64 (int64x1_t __a, int64x1_t __b)
  476. {
  477. return __a + __b;
  478. }
  479. __extension__ extern __inline uint64x1_t
  480. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  481. vadd_u64 (uint64x1_t __a, uint64x1_t __b)
  482. {
  483. return __a + __b;
  484. }
  485. __extension__ extern __inline int8x16_t
  486. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  487. vaddq_s8 (int8x16_t __a, int8x16_t __b)
  488. {
  489. return __a + __b;
  490. }
  491. __extension__ extern __inline int16x8_t
  492. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  493. vaddq_s16 (int16x8_t __a, int16x8_t __b)
  494. {
  495. return __a + __b;
  496. }
  497. __extension__ extern __inline int32x4_t
  498. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  499. vaddq_s32 (int32x4_t __a, int32x4_t __b)
  500. {
  501. return __a + __b;
  502. }
  503. __extension__ extern __inline int64x2_t
  504. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  505. vaddq_s64 (int64x2_t __a, int64x2_t __b)
  506. {
  507. return __a + __b;
  508. }
  509. __extension__ extern __inline float32x4_t
  510. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  511. vaddq_f32 (float32x4_t __a, float32x4_t __b)
  512. {
  513. #ifdef __FAST_MATH__
  514. return __a + __b;
  515. #else
  516. return (float32x4_t) __builtin_neon_vaddv4sf (__a, __b);
  517. #endif
  518. }
  519. __extension__ extern __inline uint8x16_t
  520. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  521. vaddq_u8 (uint8x16_t __a, uint8x16_t __b)
  522. {
  523. return __a + __b;
  524. }
  525. __extension__ extern __inline uint16x8_t
  526. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  527. vaddq_u16 (uint16x8_t __a, uint16x8_t __b)
  528. {
  529. return __a + __b;
  530. }
  531. __extension__ extern __inline uint32x4_t
  532. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  533. vaddq_u32 (uint32x4_t __a, uint32x4_t __b)
  534. {
  535. return __a + __b;
  536. }
  537. __extension__ extern __inline uint64x2_t
  538. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  539. vaddq_u64 (uint64x2_t __a, uint64x2_t __b)
  540. {
  541. return __a + __b;
  542. }
  543. __extension__ extern __inline int16x8_t
  544. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  545. vaddl_s8 (int8x8_t __a, int8x8_t __b)
  546. {
  547. return (int16x8_t)__builtin_neon_vaddlsv8qi (__a, __b);
  548. }
  549. __extension__ extern __inline int32x4_t
  550. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  551. vaddl_s16 (int16x4_t __a, int16x4_t __b)
  552. {
  553. return (int32x4_t)__builtin_neon_vaddlsv4hi (__a, __b);
  554. }
  555. __extension__ extern __inline int64x2_t
  556. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  557. vaddl_s32 (int32x2_t __a, int32x2_t __b)
  558. {
  559. return (int64x2_t)__builtin_neon_vaddlsv2si (__a, __b);
  560. }
  561. __extension__ extern __inline uint16x8_t
  562. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  563. vaddl_u8 (uint8x8_t __a, uint8x8_t __b)
  564. {
  565. return (uint16x8_t)__builtin_neon_vaddluv8qi ((int8x8_t) __a, (int8x8_t) __b);
  566. }
  567. __extension__ extern __inline uint32x4_t
  568. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  569. vaddl_u16 (uint16x4_t __a, uint16x4_t __b)
  570. {
  571. return (uint32x4_t)__builtin_neon_vaddluv4hi ((int16x4_t) __a, (int16x4_t) __b);
  572. }
  573. __extension__ extern __inline uint64x2_t
  574. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  575. vaddl_u32 (uint32x2_t __a, uint32x2_t __b)
  576. {
  577. return (uint64x2_t)__builtin_neon_vaddluv2si ((int32x2_t) __a, (int32x2_t) __b);
  578. }
  579. __extension__ extern __inline int16x8_t
  580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  581. vaddw_s8 (int16x8_t __a, int8x8_t __b)
  582. {
  583. return (int16x8_t)__builtin_neon_vaddwsv8qi (__a, __b);
  584. }
  585. __extension__ extern __inline int32x4_t
  586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  587. vaddw_s16 (int32x4_t __a, int16x4_t __b)
  588. {
  589. return (int32x4_t)__builtin_neon_vaddwsv4hi (__a, __b);
  590. }
  591. __extension__ extern __inline int64x2_t
  592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  593. vaddw_s32 (int64x2_t __a, int32x2_t __b)
  594. {
  595. return (int64x2_t)__builtin_neon_vaddwsv2si (__a, __b);
  596. }
  597. __extension__ extern __inline uint16x8_t
  598. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  599. vaddw_u8 (uint16x8_t __a, uint8x8_t __b)
  600. {
  601. return (uint16x8_t)__builtin_neon_vaddwuv8qi ((int16x8_t) __a, (int8x8_t) __b);
  602. }
  603. __extension__ extern __inline uint32x4_t
  604. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  605. vaddw_u16 (uint32x4_t __a, uint16x4_t __b)
  606. {
  607. return (uint32x4_t)__builtin_neon_vaddwuv4hi ((int32x4_t) __a, (int16x4_t) __b);
  608. }
  609. __extension__ extern __inline uint64x2_t
  610. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  611. vaddw_u32 (uint64x2_t __a, uint32x2_t __b)
  612. {
  613. return (uint64x2_t)__builtin_neon_vaddwuv2si ((int64x2_t) __a, (int32x2_t) __b);
  614. }
  615. __extension__ extern __inline int8x8_t
  616. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  617. vhadd_s8 (int8x8_t __a, int8x8_t __b)
  618. {
  619. return (int8x8_t)__builtin_neon_vhaddsv8qi (__a, __b);
  620. }
  621. __extension__ extern __inline int16x4_t
  622. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  623. vhadd_s16 (int16x4_t __a, int16x4_t __b)
  624. {
  625. return (int16x4_t)__builtin_neon_vhaddsv4hi (__a, __b);
  626. }
  627. __extension__ extern __inline int32x2_t
  628. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  629. vhadd_s32 (int32x2_t __a, int32x2_t __b)
  630. {
  631. return (int32x2_t)__builtin_neon_vhaddsv2si (__a, __b);
  632. }
  633. __extension__ extern __inline uint8x8_t
  634. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  635. vhadd_u8 (uint8x8_t __a, uint8x8_t __b)
  636. {
  637. return (uint8x8_t)__builtin_neon_vhadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
  638. }
  639. __extension__ extern __inline uint16x4_t
  640. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  641. vhadd_u16 (uint16x4_t __a, uint16x4_t __b)
  642. {
  643. return (uint16x4_t)__builtin_neon_vhadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
  644. }
  645. __extension__ extern __inline uint32x2_t
  646. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  647. vhadd_u32 (uint32x2_t __a, uint32x2_t __b)
  648. {
  649. return (uint32x2_t)__builtin_neon_vhadduv2si ((int32x2_t) __a, (int32x2_t) __b);
  650. }
  651. __extension__ extern __inline int8x16_t
  652. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  653. vhaddq_s8 (int8x16_t __a, int8x16_t __b)
  654. {
  655. return (int8x16_t)__builtin_neon_vhaddsv16qi (__a, __b);
  656. }
  657. __extension__ extern __inline int16x8_t
  658. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  659. vhaddq_s16 (int16x8_t __a, int16x8_t __b)
  660. {
  661. return (int16x8_t)__builtin_neon_vhaddsv8hi (__a, __b);
  662. }
  663. __extension__ extern __inline int32x4_t
  664. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  665. vhaddq_s32 (int32x4_t __a, int32x4_t __b)
  666. {
  667. return (int32x4_t)__builtin_neon_vhaddsv4si (__a, __b);
  668. }
  669. __extension__ extern __inline uint8x16_t
  670. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  671. vhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
  672. {
  673. return (uint8x16_t)__builtin_neon_vhadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
  674. }
  675. __extension__ extern __inline uint16x8_t
  676. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  677. vhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
  678. {
  679. return (uint16x8_t)__builtin_neon_vhadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
  680. }
  681. __extension__ extern __inline uint32x4_t
  682. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  683. vhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
  684. {
  685. return (uint32x4_t)__builtin_neon_vhadduv4si ((int32x4_t) __a, (int32x4_t) __b);
  686. }
  687. __extension__ extern __inline int8x8_t
  688. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  689. vrhadd_s8 (int8x8_t __a, int8x8_t __b)
  690. {
  691. return (int8x8_t)__builtin_neon_vrhaddsv8qi (__a, __b);
  692. }
  693. __extension__ extern __inline int16x4_t
  694. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  695. vrhadd_s16 (int16x4_t __a, int16x4_t __b)
  696. {
  697. return (int16x4_t)__builtin_neon_vrhaddsv4hi (__a, __b);
  698. }
  699. __extension__ extern __inline int32x2_t
  700. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  701. vrhadd_s32 (int32x2_t __a, int32x2_t __b)
  702. {
  703. return (int32x2_t)__builtin_neon_vrhaddsv2si (__a, __b);
  704. }
  705. __extension__ extern __inline uint8x8_t
  706. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  707. vrhadd_u8 (uint8x8_t __a, uint8x8_t __b)
  708. {
  709. return (uint8x8_t)__builtin_neon_vrhadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
  710. }
  711. __extension__ extern __inline uint16x4_t
  712. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  713. vrhadd_u16 (uint16x4_t __a, uint16x4_t __b)
  714. {
  715. return (uint16x4_t)__builtin_neon_vrhadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
  716. }
  717. __extension__ extern __inline uint32x2_t
  718. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  719. vrhadd_u32 (uint32x2_t __a, uint32x2_t __b)
  720. {
  721. return (uint32x2_t)__builtin_neon_vrhadduv2si ((int32x2_t) __a, (int32x2_t) __b);
  722. }
  723. __extension__ extern __inline int8x16_t
  724. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  725. vrhaddq_s8 (int8x16_t __a, int8x16_t __b)
  726. {
  727. return (int8x16_t)__builtin_neon_vrhaddsv16qi (__a, __b);
  728. }
  729. __extension__ extern __inline int16x8_t
  730. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  731. vrhaddq_s16 (int16x8_t __a, int16x8_t __b)
  732. {
  733. return (int16x8_t)__builtin_neon_vrhaddsv8hi (__a, __b);
  734. }
  735. __extension__ extern __inline int32x4_t
  736. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  737. vrhaddq_s32 (int32x4_t __a, int32x4_t __b)
  738. {
  739. return (int32x4_t)__builtin_neon_vrhaddsv4si (__a, __b);
  740. }
  741. __extension__ extern __inline uint8x16_t
  742. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  743. vrhaddq_u8 (uint8x16_t __a, uint8x16_t __b)
  744. {
  745. return (uint8x16_t)__builtin_neon_vrhadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
  746. }
  747. __extension__ extern __inline uint16x8_t
  748. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  749. vrhaddq_u16 (uint16x8_t __a, uint16x8_t __b)
  750. {
  751. return (uint16x8_t)__builtin_neon_vrhadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
  752. }
  753. __extension__ extern __inline uint32x4_t
  754. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  755. vrhaddq_u32 (uint32x4_t __a, uint32x4_t __b)
  756. {
  757. return (uint32x4_t)__builtin_neon_vrhadduv4si ((int32x4_t) __a, (int32x4_t) __b);
  758. }
  759. __extension__ extern __inline int8x8_t
  760. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  761. vqadd_s8 (int8x8_t __a, int8x8_t __b)
  762. {
  763. return (int8x8_t)__builtin_neon_vqaddsv8qi (__a, __b);
  764. }
  765. __extension__ extern __inline int16x4_t
  766. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  767. vqadd_s16 (int16x4_t __a, int16x4_t __b)
  768. {
  769. return (int16x4_t)__builtin_neon_vqaddsv4hi (__a, __b);
  770. }
  771. __extension__ extern __inline int32x2_t
  772. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  773. vqadd_s32 (int32x2_t __a, int32x2_t __b)
  774. {
  775. return (int32x2_t)__builtin_neon_vqaddsv2si (__a, __b);
  776. }
  777. __extension__ extern __inline int64x1_t
  778. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  779. vqadd_s64 (int64x1_t __a, int64x1_t __b)
  780. {
  781. return (int64x1_t)__builtin_neon_vqaddsdi (__a, __b);
  782. }
  783. __extension__ extern __inline uint8x8_t
  784. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  785. vqadd_u8 (uint8x8_t __a, uint8x8_t __b)
  786. {
  787. return (uint8x8_t)__builtin_neon_vqadduv8qi ((int8x8_t) __a, (int8x8_t) __b);
  788. }
  789. __extension__ extern __inline uint16x4_t
  790. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  791. vqadd_u16 (uint16x4_t __a, uint16x4_t __b)
  792. {
  793. return (uint16x4_t)__builtin_neon_vqadduv4hi ((int16x4_t) __a, (int16x4_t) __b);
  794. }
  795. __extension__ extern __inline uint32x2_t
  796. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  797. vqadd_u32 (uint32x2_t __a, uint32x2_t __b)
  798. {
  799. return (uint32x2_t)__builtin_neon_vqadduv2si ((int32x2_t) __a, (int32x2_t) __b);
  800. }
  801. __extension__ extern __inline uint64x1_t
  802. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  803. vqadd_u64 (uint64x1_t __a, uint64x1_t __b)
  804. {
  805. return (uint64x1_t)__builtin_neon_vqaddudi ((int64x1_t) __a, (int64x1_t) __b);
  806. }
  807. __extension__ extern __inline int8x16_t
  808. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  809. vqaddq_s8 (int8x16_t __a, int8x16_t __b)
  810. {
  811. return (int8x16_t)__builtin_neon_vqaddsv16qi (__a, __b);
  812. }
  813. __extension__ extern __inline int16x8_t
  814. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  815. vqaddq_s16 (int16x8_t __a, int16x8_t __b)
  816. {
  817. return (int16x8_t)__builtin_neon_vqaddsv8hi (__a, __b);
  818. }
  819. __extension__ extern __inline int32x4_t
  820. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  821. vqaddq_s32 (int32x4_t __a, int32x4_t __b)
  822. {
  823. return (int32x4_t)__builtin_neon_vqaddsv4si (__a, __b);
  824. }
  825. __extension__ extern __inline int64x2_t
  826. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  827. vqaddq_s64 (int64x2_t __a, int64x2_t __b)
  828. {
  829. return (int64x2_t)__builtin_neon_vqaddsv2di (__a, __b);
  830. }
  831. __extension__ extern __inline uint8x16_t
  832. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  833. vqaddq_u8 (uint8x16_t __a, uint8x16_t __b)
  834. {
  835. return (uint8x16_t)__builtin_neon_vqadduv16qi ((int8x16_t) __a, (int8x16_t) __b);
  836. }
  837. __extension__ extern __inline uint16x8_t
  838. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  839. vqaddq_u16 (uint16x8_t __a, uint16x8_t __b)
  840. {
  841. return (uint16x8_t)__builtin_neon_vqadduv8hi ((int16x8_t) __a, (int16x8_t) __b);
  842. }
  843. __extension__ extern __inline uint32x4_t
  844. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  845. vqaddq_u32 (uint32x4_t __a, uint32x4_t __b)
  846. {
  847. return (uint32x4_t)__builtin_neon_vqadduv4si ((int32x4_t) __a, (int32x4_t) __b);
  848. }
  849. __extension__ extern __inline uint64x2_t
  850. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  851. vqaddq_u64 (uint64x2_t __a, uint64x2_t __b)
  852. {
  853. return (uint64x2_t)__builtin_neon_vqadduv2di ((int64x2_t) __a, (int64x2_t) __b);
  854. }
  855. __extension__ extern __inline int8x8_t
  856. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  857. vaddhn_s16 (int16x8_t __a, int16x8_t __b)
  858. {
  859. return (int8x8_t)__builtin_neon_vaddhnv8hi (__a, __b);
  860. }
  861. __extension__ extern __inline int16x4_t
  862. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  863. vaddhn_s32 (int32x4_t __a, int32x4_t __b)
  864. {
  865. return (int16x4_t)__builtin_neon_vaddhnv4si (__a, __b);
  866. }
  867. __extension__ extern __inline int32x2_t
  868. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  869. vaddhn_s64 (int64x2_t __a, int64x2_t __b)
  870. {
  871. return (int32x2_t)__builtin_neon_vaddhnv2di (__a, __b);
  872. }
  873. __extension__ extern __inline uint8x8_t
  874. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  875. vaddhn_u16 (uint16x8_t __a, uint16x8_t __b)
  876. {
  877. return (uint8x8_t)__builtin_neon_vaddhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
  878. }
  879. __extension__ extern __inline uint16x4_t
  880. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  881. vaddhn_u32 (uint32x4_t __a, uint32x4_t __b)
  882. {
  883. return (uint16x4_t)__builtin_neon_vaddhnv4si ((int32x4_t) __a, (int32x4_t) __b);
  884. }
  885. __extension__ extern __inline uint32x2_t
  886. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  887. vaddhn_u64 (uint64x2_t __a, uint64x2_t __b)
  888. {
  889. return (uint32x2_t)__builtin_neon_vaddhnv2di ((int64x2_t) __a, (int64x2_t) __b);
  890. }
  891. __extension__ extern __inline int8x8_t
  892. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  893. vraddhn_s16 (int16x8_t __a, int16x8_t __b)
  894. {
  895. return (int8x8_t)__builtin_neon_vraddhnv8hi (__a, __b);
  896. }
  897. __extension__ extern __inline int16x4_t
  898. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  899. vraddhn_s32 (int32x4_t __a, int32x4_t __b)
  900. {
  901. return (int16x4_t)__builtin_neon_vraddhnv4si (__a, __b);
  902. }
  903. __extension__ extern __inline int32x2_t
  904. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  905. vraddhn_s64 (int64x2_t __a, int64x2_t __b)
  906. {
  907. return (int32x2_t)__builtin_neon_vraddhnv2di (__a, __b);
  908. }
  909. __extension__ extern __inline uint8x8_t
  910. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  911. vraddhn_u16 (uint16x8_t __a, uint16x8_t __b)
  912. {
  913. return (uint8x8_t)__builtin_neon_vraddhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
  914. }
  915. __extension__ extern __inline uint16x4_t
  916. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  917. vraddhn_u32 (uint32x4_t __a, uint32x4_t __b)
  918. {
  919. return (uint16x4_t)__builtin_neon_vraddhnv4si ((int32x4_t) __a, (int32x4_t) __b);
  920. }
  921. __extension__ extern __inline uint32x2_t
  922. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  923. vraddhn_u64 (uint64x2_t __a, uint64x2_t __b)
  924. {
  925. return (uint32x2_t)__builtin_neon_vraddhnv2di ((int64x2_t) __a, (int64x2_t) __b);
  926. }
  927. __extension__ extern __inline int8x8_t
  928. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  929. vmul_s8 (int8x8_t __a, int8x8_t __b)
  930. {
  931. return __a * __b;
  932. }
  933. __extension__ extern __inline int16x4_t
  934. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  935. vmul_s16 (int16x4_t __a, int16x4_t __b)
  936. {
  937. return __a * __b;
  938. }
  939. __extension__ extern __inline int32x2_t
  940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  941. vmul_s32 (int32x2_t __a, int32x2_t __b)
  942. {
  943. return __a * __b;
  944. }
  945. __extension__ extern __inline float32x2_t
  946. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  947. vmul_f32 (float32x2_t __a, float32x2_t __b)
  948. {
  949. #ifdef __FAST_MATH__
  950. return __a * __b;
  951. #else
  952. return (float32x2_t) __builtin_neon_vmulfv2sf (__a, __b);
  953. #endif
  954. }
  955. __extension__ extern __inline uint8x8_t
  956. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  957. vmul_u8 (uint8x8_t __a, uint8x8_t __b)
  958. {
  959. return __a * __b;
  960. }
  961. __extension__ extern __inline uint16x4_t
  962. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  963. vmul_u16 (uint16x4_t __a, uint16x4_t __b)
  964. {
  965. return __a * __b;
  966. }
  967. __extension__ extern __inline uint32x2_t
  968. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  969. vmul_u32 (uint32x2_t __a, uint32x2_t __b)
  970. {
  971. return __a * __b;
  972. }
  973. __extension__ extern __inline int8x16_t
  974. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  975. vmulq_s8 (int8x16_t __a, int8x16_t __b)
  976. {
  977. return __a * __b;
  978. }
  979. __extension__ extern __inline int16x8_t
  980. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  981. vmulq_s16 (int16x8_t __a, int16x8_t __b)
  982. {
  983. return __a * __b;
  984. }
  985. __extension__ extern __inline int32x4_t
  986. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  987. vmulq_s32 (int32x4_t __a, int32x4_t __b)
  988. {
  989. return __a * __b;
  990. }
  991. __extension__ extern __inline float32x4_t
  992. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  993. vmulq_f32 (float32x4_t __a, float32x4_t __b)
  994. {
  995. #ifdef __FAST_MATH__
  996. return __a * __b;
  997. #else
  998. return (float32x4_t) __builtin_neon_vmulfv4sf (__a, __b);
  999. #endif
  1000. }
  1001. __extension__ extern __inline uint8x16_t
  1002. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1003. vmulq_u8 (uint8x16_t __a, uint8x16_t __b)
  1004. {
  1005. return __a * __b;
  1006. }
  1007. __extension__ extern __inline uint16x8_t
  1008. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1009. vmulq_u16 (uint16x8_t __a, uint16x8_t __b)
  1010. {
  1011. return __a * __b;
  1012. }
  1013. __extension__ extern __inline uint32x4_t
  1014. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1015. vmulq_u32 (uint32x4_t __a, uint32x4_t __b)
  1016. {
  1017. return __a * __b;
  1018. }
  1019. __extension__ extern __inline poly8x8_t
  1020. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1021. vmul_p8 (poly8x8_t __a, poly8x8_t __b)
  1022. {
  1023. return (poly8x8_t)__builtin_neon_vmulpv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1024. }
  1025. __extension__ extern __inline poly8x16_t
  1026. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1027. vmulq_p8 (poly8x16_t __a, poly8x16_t __b)
  1028. {
  1029. return (poly8x16_t)__builtin_neon_vmulpv16qi ((int8x16_t) __a, (int8x16_t) __b);
  1030. }
  1031. __extension__ extern __inline int16x4_t
  1032. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1033. vqdmulh_s16 (int16x4_t __a, int16x4_t __b)
  1034. {
  1035. return (int16x4_t)__builtin_neon_vqdmulhv4hi (__a, __b);
  1036. }
  1037. __extension__ extern __inline int32x2_t
  1038. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1039. vqdmulh_s32 (int32x2_t __a, int32x2_t __b)
  1040. {
  1041. return (int32x2_t)__builtin_neon_vqdmulhv2si (__a, __b);
  1042. }
  1043. __extension__ extern __inline int16x8_t
  1044. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1045. vqdmulhq_s16 (int16x8_t __a, int16x8_t __b)
  1046. {
  1047. return (int16x8_t)__builtin_neon_vqdmulhv8hi (__a, __b);
  1048. }
  1049. __extension__ extern __inline int32x4_t
  1050. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1051. vqdmulhq_s32 (int32x4_t __a, int32x4_t __b)
  1052. {
  1053. return (int32x4_t)__builtin_neon_vqdmulhv4si (__a, __b);
  1054. }
  1055. __extension__ extern __inline int16x4_t
  1056. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1057. vqrdmulh_s16 (int16x4_t __a, int16x4_t __b)
  1058. {
  1059. return (int16x4_t)__builtin_neon_vqrdmulhv4hi (__a, __b);
  1060. }
  1061. __extension__ extern __inline int32x2_t
  1062. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1063. vqrdmulh_s32 (int32x2_t __a, int32x2_t __b)
  1064. {
  1065. return (int32x2_t)__builtin_neon_vqrdmulhv2si (__a, __b);
  1066. }
  1067. __extension__ extern __inline int16x8_t
  1068. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1069. vqrdmulhq_s16 (int16x8_t __a, int16x8_t __b)
  1070. {
  1071. return (int16x8_t)__builtin_neon_vqrdmulhv8hi (__a, __b);
  1072. }
  1073. __extension__ extern __inline int32x4_t
  1074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1075. vqrdmulhq_s32 (int32x4_t __a, int32x4_t __b)
  1076. {
  1077. return (int32x4_t)__builtin_neon_vqrdmulhv4si (__a, __b);
  1078. }
  1079. #ifdef __ARM_FEATURE_QRDMX
  1080. __extension__ extern __inline int16x4_t
  1081. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1082. vqrdmlah_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  1083. {
  1084. return (int16x4_t)__builtin_neon_vqrdmlahv4hi (__a, __b, __c);
  1085. }
  1086. __extension__ extern __inline int32x2_t
  1087. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1088. vqrdmlah_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  1089. {
  1090. return (int32x2_t)__builtin_neon_vqrdmlahv2si (__a, __b, __c);
  1091. }
  1092. __extension__ extern __inline int16x8_t
  1093. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1094. vqrdmlahq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  1095. {
  1096. return (int16x8_t)__builtin_neon_vqrdmlahv8hi (__a, __b, __c);
  1097. }
  1098. __extension__ extern __inline int32x4_t
  1099. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1100. vqrdmlahq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  1101. {
  1102. return (int32x4_t)__builtin_neon_vqrdmlahv4si (__a, __b, __c);
  1103. }
  1104. __extension__ extern __inline int16x4_t
  1105. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1106. vqrdmlsh_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  1107. {
  1108. return (int16x4_t)__builtin_neon_vqrdmlshv4hi (__a, __b, __c);
  1109. }
  1110. __extension__ extern __inline int32x2_t
  1111. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1112. vqrdmlsh_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  1113. {
  1114. return (int32x2_t)__builtin_neon_vqrdmlshv2si (__a, __b, __c);
  1115. }
  1116. __extension__ extern __inline int16x8_t
  1117. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1118. vqrdmlshq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  1119. {
  1120. return (int16x8_t)__builtin_neon_vqrdmlshv8hi (__a, __b, __c);
  1121. }
  1122. __extension__ extern __inline int32x4_t
  1123. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1124. vqrdmlshq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  1125. {
  1126. return (int32x4_t)__builtin_neon_vqrdmlshv4si (__a, __b, __c);
  1127. }
  1128. #endif
  1129. __extension__ extern __inline int16x8_t
  1130. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1131. vmull_s8 (int8x8_t __a, int8x8_t __b)
  1132. {
  1133. return (int16x8_t)__builtin_neon_vmullsv8qi (__a, __b);
  1134. }
  1135. __extension__ extern __inline int32x4_t
  1136. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1137. vmull_s16 (int16x4_t __a, int16x4_t __b)
  1138. {
  1139. return (int32x4_t)__builtin_neon_vmullsv4hi (__a, __b);
  1140. }
  1141. __extension__ extern __inline int64x2_t
  1142. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1143. vmull_s32 (int32x2_t __a, int32x2_t __b)
  1144. {
  1145. return (int64x2_t)__builtin_neon_vmullsv2si (__a, __b);
  1146. }
  1147. __extension__ extern __inline uint16x8_t
  1148. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1149. vmull_u8 (uint8x8_t __a, uint8x8_t __b)
  1150. {
  1151. return (uint16x8_t)__builtin_neon_vmulluv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1152. }
  1153. __extension__ extern __inline uint32x4_t
  1154. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1155. vmull_u16 (uint16x4_t __a, uint16x4_t __b)
  1156. {
  1157. return (uint32x4_t)__builtin_neon_vmulluv4hi ((int16x4_t) __a, (int16x4_t) __b);
  1158. }
  1159. __extension__ extern __inline uint64x2_t
  1160. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1161. vmull_u32 (uint32x2_t __a, uint32x2_t __b)
  1162. {
  1163. return (uint64x2_t)__builtin_neon_vmulluv2si ((int32x2_t) __a, (int32x2_t) __b);
  1164. }
  1165. __extension__ extern __inline poly16x8_t
  1166. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1167. vmull_p8 (poly8x8_t __a, poly8x8_t __b)
  1168. {
  1169. return (poly16x8_t)__builtin_neon_vmullpv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1170. }
  1171. __extension__ extern __inline int32x4_t
  1172. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1173. vqdmull_s16 (int16x4_t __a, int16x4_t __b)
  1174. {
  1175. return (int32x4_t)__builtin_neon_vqdmullv4hi (__a, __b);
  1176. }
  1177. __extension__ extern __inline int64x2_t
  1178. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1179. vqdmull_s32 (int32x2_t __a, int32x2_t __b)
  1180. {
  1181. return (int64x2_t)__builtin_neon_vqdmullv2si (__a, __b);
  1182. }
  1183. __extension__ extern __inline int8x8_t
  1184. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1185. vmla_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  1186. {
  1187. return (int8x8_t)__builtin_neon_vmlav8qi (__a, __b, __c);
  1188. }
  1189. __extension__ extern __inline int16x4_t
  1190. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1191. vmla_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  1192. {
  1193. return (int16x4_t)__builtin_neon_vmlav4hi (__a, __b, __c);
  1194. }
  1195. __extension__ extern __inline int32x2_t
  1196. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1197. vmla_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  1198. {
  1199. return (int32x2_t)__builtin_neon_vmlav2si (__a, __b, __c);
  1200. }
  1201. __extension__ extern __inline float32x2_t
  1202. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1203. vmla_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
  1204. {
  1205. return (float32x2_t)__builtin_neon_vmlav2sf (__a, __b, __c);
  1206. }
  1207. __extension__ extern __inline uint8x8_t
  1208. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1209. vmla_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  1210. {
  1211. return (uint8x8_t)__builtin_neon_vmlav8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  1212. }
  1213. __extension__ extern __inline uint16x4_t
  1214. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1215. vmla_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  1216. {
  1217. return (uint16x4_t)__builtin_neon_vmlav4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  1218. }
  1219. __extension__ extern __inline uint32x2_t
  1220. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1221. vmla_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  1222. {
  1223. return (uint32x2_t)__builtin_neon_vmlav2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  1224. }
  1225. __extension__ extern __inline int8x16_t
  1226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1227. vmlaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  1228. {
  1229. return (int8x16_t)__builtin_neon_vmlav16qi (__a, __b, __c);
  1230. }
  1231. __extension__ extern __inline int16x8_t
  1232. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1233. vmlaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  1234. {
  1235. return (int16x8_t)__builtin_neon_vmlav8hi (__a, __b, __c);
  1236. }
  1237. __extension__ extern __inline int32x4_t
  1238. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1239. vmlaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  1240. {
  1241. return (int32x4_t)__builtin_neon_vmlav4si (__a, __b, __c);
  1242. }
  1243. __extension__ extern __inline float32x4_t
  1244. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1245. vmlaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  1246. {
  1247. return (float32x4_t)__builtin_neon_vmlav4sf (__a, __b, __c);
  1248. }
  1249. __extension__ extern __inline uint8x16_t
  1250. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1251. vmlaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  1252. {
  1253. return (uint8x16_t)__builtin_neon_vmlav16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
  1254. }
  1255. __extension__ extern __inline uint16x8_t
  1256. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1257. vmlaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  1258. {
  1259. return (uint16x8_t)__builtin_neon_vmlav8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
  1260. }
  1261. __extension__ extern __inline uint32x4_t
  1262. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1263. vmlaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  1264. {
  1265. return (uint32x4_t)__builtin_neon_vmlav4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
  1266. }
  1267. __extension__ extern __inline int16x8_t
  1268. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1269. vmlal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  1270. {
  1271. return (int16x8_t)__builtin_neon_vmlalsv8qi (__a, __b, __c);
  1272. }
  1273. __extension__ extern __inline int32x4_t
  1274. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1275. vmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  1276. {
  1277. return (int32x4_t)__builtin_neon_vmlalsv4hi (__a, __b, __c);
  1278. }
  1279. __extension__ extern __inline int64x2_t
  1280. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1281. vmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  1282. {
  1283. return (int64x2_t)__builtin_neon_vmlalsv2si (__a, __b, __c);
  1284. }
  1285. __extension__ extern __inline uint16x8_t
  1286. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1287. vmlal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  1288. {
  1289. return (uint16x8_t)__builtin_neon_vmlaluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  1290. }
  1291. __extension__ extern __inline uint32x4_t
  1292. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1293. vmlal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  1294. {
  1295. return (uint32x4_t)__builtin_neon_vmlaluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  1296. }
  1297. __extension__ extern __inline uint64x2_t
  1298. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1299. vmlal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  1300. {
  1301. return (uint64x2_t)__builtin_neon_vmlaluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  1302. }
  1303. __extension__ extern __inline int32x4_t
  1304. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1305. vqdmlal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  1306. {
  1307. return (int32x4_t)__builtin_neon_vqdmlalv4hi (__a, __b, __c);
  1308. }
  1309. __extension__ extern __inline int64x2_t
  1310. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1311. vqdmlal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  1312. {
  1313. return (int64x2_t)__builtin_neon_vqdmlalv2si (__a, __b, __c);
  1314. }
  1315. __extension__ extern __inline int8x8_t
  1316. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1317. vmls_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  1318. {
  1319. return (int8x8_t)__builtin_neon_vmlsv8qi (__a, __b, __c);
  1320. }
  1321. __extension__ extern __inline int16x4_t
  1322. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1323. vmls_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  1324. {
  1325. return (int16x4_t)__builtin_neon_vmlsv4hi (__a, __b, __c);
  1326. }
  1327. __extension__ extern __inline int32x2_t
  1328. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1329. vmls_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  1330. {
  1331. return (int32x2_t)__builtin_neon_vmlsv2si (__a, __b, __c);
  1332. }
  1333. __extension__ extern __inline float32x2_t
  1334. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1335. vmls_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
  1336. {
  1337. return (float32x2_t)__builtin_neon_vmlsv2sf (__a, __b, __c);
  1338. }
  1339. __extension__ extern __inline uint8x8_t
  1340. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1341. vmls_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  1342. {
  1343. return (uint8x8_t)__builtin_neon_vmlsv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  1344. }
  1345. __extension__ extern __inline uint16x4_t
  1346. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1347. vmls_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  1348. {
  1349. return (uint16x4_t)__builtin_neon_vmlsv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  1350. }
  1351. __extension__ extern __inline uint32x2_t
  1352. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1353. vmls_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  1354. {
  1355. return (uint32x2_t)__builtin_neon_vmlsv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  1356. }
  1357. __extension__ extern __inline int8x16_t
  1358. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1359. vmlsq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  1360. {
  1361. return (int8x16_t)__builtin_neon_vmlsv16qi (__a, __b, __c);
  1362. }
  1363. __extension__ extern __inline int16x8_t
  1364. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1365. vmlsq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  1366. {
  1367. return (int16x8_t)__builtin_neon_vmlsv8hi (__a, __b, __c);
  1368. }
  1369. __extension__ extern __inline int32x4_t
  1370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1371. vmlsq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  1372. {
  1373. return (int32x4_t)__builtin_neon_vmlsv4si (__a, __b, __c);
  1374. }
  1375. __extension__ extern __inline float32x4_t
  1376. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1377. vmlsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  1378. {
  1379. return (float32x4_t)__builtin_neon_vmlsv4sf (__a, __b, __c);
  1380. }
  1381. __extension__ extern __inline uint8x16_t
  1382. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1383. vmlsq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  1384. {
  1385. return (uint8x16_t)__builtin_neon_vmlsv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
  1386. }
  1387. __extension__ extern __inline uint16x8_t
  1388. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1389. vmlsq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  1390. {
  1391. return (uint16x8_t)__builtin_neon_vmlsv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
  1392. }
  1393. __extension__ extern __inline uint32x4_t
  1394. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1395. vmlsq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  1396. {
  1397. return (uint32x4_t)__builtin_neon_vmlsv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
  1398. }
  1399. __extension__ extern __inline int16x8_t
  1400. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1401. vmlsl_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  1402. {
  1403. return (int16x8_t)__builtin_neon_vmlslsv8qi (__a, __b, __c);
  1404. }
  1405. __extension__ extern __inline int32x4_t
  1406. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1407. vmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  1408. {
  1409. return (int32x4_t)__builtin_neon_vmlslsv4hi (__a, __b, __c);
  1410. }
  1411. __extension__ extern __inline int64x2_t
  1412. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1413. vmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  1414. {
  1415. return (int64x2_t)__builtin_neon_vmlslsv2si (__a, __b, __c);
  1416. }
  1417. __extension__ extern __inline uint16x8_t
  1418. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1419. vmlsl_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  1420. {
  1421. return (uint16x8_t)__builtin_neon_vmlsluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  1422. }
  1423. __extension__ extern __inline uint32x4_t
  1424. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1425. vmlsl_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  1426. {
  1427. return (uint32x4_t)__builtin_neon_vmlsluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  1428. }
  1429. __extension__ extern __inline uint64x2_t
  1430. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1431. vmlsl_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  1432. {
  1433. return (uint64x2_t)__builtin_neon_vmlsluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  1434. }
  1435. __extension__ extern __inline int32x4_t
  1436. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1437. vqdmlsl_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  1438. {
  1439. return (int32x4_t)__builtin_neon_vqdmlslv4hi (__a, __b, __c);
  1440. }
  1441. __extension__ extern __inline int64x2_t
  1442. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1443. vqdmlsl_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  1444. {
  1445. return (int64x2_t)__builtin_neon_vqdmlslv2si (__a, __b, __c);
  1446. }
  1447. #pragma GCC push_options
  1448. #pragma GCC target ("fpu=neon-vfpv4")
  1449. __extension__ extern __inline float32x2_t
  1450. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1451. vfma_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
  1452. {
  1453. return (float32x2_t)__builtin_neon_vfmav2sf (__a, __b, __c);
  1454. }
  1455. __extension__ extern __inline float32x4_t
  1456. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1457. vfmaq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  1458. {
  1459. return (float32x4_t)__builtin_neon_vfmav4sf (__a, __b, __c);
  1460. }
  1461. __extension__ extern __inline float32x2_t
  1462. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1463. vfms_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c)
  1464. {
  1465. return (float32x2_t)__builtin_neon_vfmsv2sf (__a, __b, __c);
  1466. }
  1467. __extension__ extern __inline float32x4_t
  1468. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1469. vfmsq_f32 (float32x4_t __a, float32x4_t __b, float32x4_t __c)
  1470. {
  1471. return (float32x4_t)__builtin_neon_vfmsv4sf (__a, __b, __c);
  1472. }
  1473. #pragma GCC pop_options
  1474. #if __ARM_ARCH >= 8
  1475. __extension__ extern __inline float32x2_t
  1476. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1477. vrndn_f32 (float32x2_t __a)
  1478. {
  1479. return (float32x2_t)__builtin_neon_vrintnv2sf (__a);
  1480. }
  1481. #endif
  1482. #if __ARM_ARCH >= 8
  1483. __extension__ extern __inline float32x4_t
  1484. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1485. vrndnq_f32 (float32x4_t __a)
  1486. {
  1487. return (float32x4_t)__builtin_neon_vrintnv4sf (__a);
  1488. }
  1489. #endif
  1490. #if __ARM_ARCH >= 8
  1491. __extension__ extern __inline float32x2_t
  1492. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1493. vrnda_f32 (float32x2_t __a)
  1494. {
  1495. return (float32x2_t)__builtin_neon_vrintav2sf (__a);
  1496. }
  1497. #endif
  1498. #if __ARM_ARCH >= 8
  1499. __extension__ extern __inline float32x4_t
  1500. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1501. vrndaq_f32 (float32x4_t __a)
  1502. {
  1503. return (float32x4_t)__builtin_neon_vrintav4sf (__a);
  1504. }
  1505. #endif
  1506. #if __ARM_ARCH >= 8
  1507. __extension__ extern __inline float32x2_t
  1508. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1509. vrndp_f32 (float32x2_t __a)
  1510. {
  1511. return (float32x2_t)__builtin_neon_vrintpv2sf (__a);
  1512. }
  1513. #endif
  1514. #if __ARM_ARCH >= 8
  1515. __extension__ extern __inline float32x4_t
  1516. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1517. vrndpq_f32 (float32x4_t __a)
  1518. {
  1519. return (float32x4_t)__builtin_neon_vrintpv4sf (__a);
  1520. }
  1521. #endif
  1522. #if __ARM_ARCH >= 8
  1523. __extension__ extern __inline float32x2_t
  1524. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1525. vrndm_f32 (float32x2_t __a)
  1526. {
  1527. return (float32x2_t)__builtin_neon_vrintmv2sf (__a);
  1528. }
  1529. #endif
  1530. #if __ARM_ARCH >= 8
  1531. __extension__ extern __inline float32x4_t
  1532. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1533. vrndmq_f32 (float32x4_t __a)
  1534. {
  1535. return (float32x4_t)__builtin_neon_vrintmv4sf (__a);
  1536. }
  1537. #endif
  1538. #if __ARM_ARCH >= 8
  1539. __extension__ extern __inline float32x2_t
  1540. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1541. vrndx_f32 (float32x2_t __a)
  1542. {
  1543. return (float32x2_t)__builtin_neon_vrintxv2sf (__a);
  1544. }
  1545. #endif
  1546. #if __ARM_ARCH >= 8
  1547. __extension__ extern __inline float32x4_t
  1548. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1549. vrndxq_f32 (float32x4_t __a)
  1550. {
  1551. return (float32x4_t)__builtin_neon_vrintxv4sf (__a);
  1552. }
  1553. #endif
  1554. #if __ARM_ARCH >= 8
  1555. __extension__ extern __inline float32x2_t
  1556. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1557. vrnd_f32 (float32x2_t __a)
  1558. {
  1559. return (float32x2_t)__builtin_neon_vrintzv2sf (__a);
  1560. }
  1561. #endif
  1562. #if __ARM_ARCH >= 8
  1563. __extension__ extern __inline float32x4_t
  1564. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1565. vrndq_f32 (float32x4_t __a)
  1566. {
  1567. return (float32x4_t)__builtin_neon_vrintzv4sf (__a);
  1568. }
  1569. #endif
  1570. __extension__ extern __inline int8x8_t
  1571. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1572. vsub_s8 (int8x8_t __a, int8x8_t __b)
  1573. {
  1574. return __a - __b;
  1575. }
  1576. __extension__ extern __inline int16x4_t
  1577. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1578. vsub_s16 (int16x4_t __a, int16x4_t __b)
  1579. {
  1580. return __a - __b;
  1581. }
  1582. __extension__ extern __inline int32x2_t
  1583. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1584. vsub_s32 (int32x2_t __a, int32x2_t __b)
  1585. {
  1586. return __a - __b;
  1587. }
  1588. __extension__ extern __inline float32x2_t
  1589. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1590. vsub_f32 (float32x2_t __a, float32x2_t __b)
  1591. {
  1592. #ifdef __FAST_MATH__
  1593. return __a - __b;
  1594. #else
  1595. return (float32x2_t) __builtin_neon_vsubv2sf (__a, __b);
  1596. #endif
  1597. }
  1598. __extension__ extern __inline uint8x8_t
  1599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1600. vsub_u8 (uint8x8_t __a, uint8x8_t __b)
  1601. {
  1602. return __a - __b;
  1603. }
  1604. __extension__ extern __inline uint16x4_t
  1605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1606. vsub_u16 (uint16x4_t __a, uint16x4_t __b)
  1607. {
  1608. return __a - __b;
  1609. }
  1610. __extension__ extern __inline uint32x2_t
  1611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1612. vsub_u32 (uint32x2_t __a, uint32x2_t __b)
  1613. {
  1614. return __a - __b;
  1615. }
  1616. __extension__ extern __inline int64x1_t
  1617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1618. vsub_s64 (int64x1_t __a, int64x1_t __b)
  1619. {
  1620. return __a - __b;
  1621. }
  1622. __extension__ extern __inline uint64x1_t
  1623. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1624. vsub_u64 (uint64x1_t __a, uint64x1_t __b)
  1625. {
  1626. return __a - __b;
  1627. }
  1628. __extension__ extern __inline int8x16_t
  1629. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1630. vsubq_s8 (int8x16_t __a, int8x16_t __b)
  1631. {
  1632. return __a - __b;
  1633. }
  1634. __extension__ extern __inline int16x8_t
  1635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1636. vsubq_s16 (int16x8_t __a, int16x8_t __b)
  1637. {
  1638. return __a - __b;
  1639. }
  1640. __extension__ extern __inline int32x4_t
  1641. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1642. vsubq_s32 (int32x4_t __a, int32x4_t __b)
  1643. {
  1644. return __a - __b;
  1645. }
  1646. __extension__ extern __inline int64x2_t
  1647. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1648. vsubq_s64 (int64x2_t __a, int64x2_t __b)
  1649. {
  1650. return __a - __b;
  1651. }
  1652. __extension__ extern __inline float32x4_t
  1653. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1654. vsubq_f32 (float32x4_t __a, float32x4_t __b)
  1655. {
  1656. #ifdef __FAST_MATH__
  1657. return __a - __b;
  1658. #else
  1659. return (float32x4_t) __builtin_neon_vsubv4sf (__a, __b);
  1660. #endif
  1661. }
  1662. __extension__ extern __inline uint8x16_t
  1663. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1664. vsubq_u8 (uint8x16_t __a, uint8x16_t __b)
  1665. {
  1666. return __a - __b;
  1667. }
  1668. __extension__ extern __inline uint16x8_t
  1669. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1670. vsubq_u16 (uint16x8_t __a, uint16x8_t __b)
  1671. {
  1672. return __a - __b;
  1673. }
  1674. __extension__ extern __inline uint32x4_t
  1675. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1676. vsubq_u32 (uint32x4_t __a, uint32x4_t __b)
  1677. {
  1678. return __a - __b;
  1679. }
  1680. __extension__ extern __inline uint64x2_t
  1681. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1682. vsubq_u64 (uint64x2_t __a, uint64x2_t __b)
  1683. {
  1684. return __a - __b;
  1685. }
  1686. __extension__ extern __inline int16x8_t
  1687. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1688. vsubl_s8 (int8x8_t __a, int8x8_t __b)
  1689. {
  1690. return (int16x8_t)__builtin_neon_vsublsv8qi (__a, __b);
  1691. }
  1692. __extension__ extern __inline int32x4_t
  1693. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1694. vsubl_s16 (int16x4_t __a, int16x4_t __b)
  1695. {
  1696. return (int32x4_t)__builtin_neon_vsublsv4hi (__a, __b);
  1697. }
  1698. __extension__ extern __inline int64x2_t
  1699. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1700. vsubl_s32 (int32x2_t __a, int32x2_t __b)
  1701. {
  1702. return (int64x2_t)__builtin_neon_vsublsv2si (__a, __b);
  1703. }
  1704. __extension__ extern __inline uint16x8_t
  1705. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1706. vsubl_u8 (uint8x8_t __a, uint8x8_t __b)
  1707. {
  1708. return (uint16x8_t)__builtin_neon_vsubluv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1709. }
  1710. __extension__ extern __inline uint32x4_t
  1711. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1712. vsubl_u16 (uint16x4_t __a, uint16x4_t __b)
  1713. {
  1714. return (uint32x4_t)__builtin_neon_vsubluv4hi ((int16x4_t) __a, (int16x4_t) __b);
  1715. }
  1716. __extension__ extern __inline uint64x2_t
  1717. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1718. vsubl_u32 (uint32x2_t __a, uint32x2_t __b)
  1719. {
  1720. return (uint64x2_t)__builtin_neon_vsubluv2si ((int32x2_t) __a, (int32x2_t) __b);
  1721. }
  1722. __extension__ extern __inline int16x8_t
  1723. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1724. vsubw_s8 (int16x8_t __a, int8x8_t __b)
  1725. {
  1726. return (int16x8_t)__builtin_neon_vsubwsv8qi (__a, __b);
  1727. }
  1728. __extension__ extern __inline int32x4_t
  1729. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1730. vsubw_s16 (int32x4_t __a, int16x4_t __b)
  1731. {
  1732. return (int32x4_t)__builtin_neon_vsubwsv4hi (__a, __b);
  1733. }
  1734. __extension__ extern __inline int64x2_t
  1735. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1736. vsubw_s32 (int64x2_t __a, int32x2_t __b)
  1737. {
  1738. return (int64x2_t)__builtin_neon_vsubwsv2si (__a, __b);
  1739. }
  1740. __extension__ extern __inline uint16x8_t
  1741. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1742. vsubw_u8 (uint16x8_t __a, uint8x8_t __b)
  1743. {
  1744. return (uint16x8_t)__builtin_neon_vsubwuv8qi ((int16x8_t) __a, (int8x8_t) __b);
  1745. }
  1746. __extension__ extern __inline uint32x4_t
  1747. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1748. vsubw_u16 (uint32x4_t __a, uint16x4_t __b)
  1749. {
  1750. return (uint32x4_t)__builtin_neon_vsubwuv4hi ((int32x4_t) __a, (int16x4_t) __b);
  1751. }
  1752. __extension__ extern __inline uint64x2_t
  1753. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1754. vsubw_u32 (uint64x2_t __a, uint32x2_t __b)
  1755. {
  1756. return (uint64x2_t)__builtin_neon_vsubwuv2si ((int64x2_t) __a, (int32x2_t) __b);
  1757. }
  1758. __extension__ extern __inline int8x8_t
  1759. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1760. vhsub_s8 (int8x8_t __a, int8x8_t __b)
  1761. {
  1762. return (int8x8_t)__builtin_neon_vhsubsv8qi (__a, __b);
  1763. }
  1764. __extension__ extern __inline int16x4_t
  1765. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1766. vhsub_s16 (int16x4_t __a, int16x4_t __b)
  1767. {
  1768. return (int16x4_t)__builtin_neon_vhsubsv4hi (__a, __b);
  1769. }
  1770. __extension__ extern __inline int32x2_t
  1771. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1772. vhsub_s32 (int32x2_t __a, int32x2_t __b)
  1773. {
  1774. return (int32x2_t)__builtin_neon_vhsubsv2si (__a, __b);
  1775. }
  1776. __extension__ extern __inline uint8x8_t
  1777. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1778. vhsub_u8 (uint8x8_t __a, uint8x8_t __b)
  1779. {
  1780. return (uint8x8_t)__builtin_neon_vhsubuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1781. }
  1782. __extension__ extern __inline uint16x4_t
  1783. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1784. vhsub_u16 (uint16x4_t __a, uint16x4_t __b)
  1785. {
  1786. return (uint16x4_t)__builtin_neon_vhsubuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  1787. }
  1788. __extension__ extern __inline uint32x2_t
  1789. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1790. vhsub_u32 (uint32x2_t __a, uint32x2_t __b)
  1791. {
  1792. return (uint32x2_t)__builtin_neon_vhsubuv2si ((int32x2_t) __a, (int32x2_t) __b);
  1793. }
  1794. __extension__ extern __inline int8x16_t
  1795. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1796. vhsubq_s8 (int8x16_t __a, int8x16_t __b)
  1797. {
  1798. return (int8x16_t)__builtin_neon_vhsubsv16qi (__a, __b);
  1799. }
  1800. __extension__ extern __inline int16x8_t
  1801. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1802. vhsubq_s16 (int16x8_t __a, int16x8_t __b)
  1803. {
  1804. return (int16x8_t)__builtin_neon_vhsubsv8hi (__a, __b);
  1805. }
  1806. __extension__ extern __inline int32x4_t
  1807. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1808. vhsubq_s32 (int32x4_t __a, int32x4_t __b)
  1809. {
  1810. return (int32x4_t)__builtin_neon_vhsubsv4si (__a, __b);
  1811. }
  1812. __extension__ extern __inline uint8x16_t
  1813. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1814. vhsubq_u8 (uint8x16_t __a, uint8x16_t __b)
  1815. {
  1816. return (uint8x16_t)__builtin_neon_vhsubuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  1817. }
  1818. __extension__ extern __inline uint16x8_t
  1819. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1820. vhsubq_u16 (uint16x8_t __a, uint16x8_t __b)
  1821. {
  1822. return (uint16x8_t)__builtin_neon_vhsubuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  1823. }
  1824. __extension__ extern __inline uint32x4_t
  1825. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1826. vhsubq_u32 (uint32x4_t __a, uint32x4_t __b)
  1827. {
  1828. return (uint32x4_t)__builtin_neon_vhsubuv4si ((int32x4_t) __a, (int32x4_t) __b);
  1829. }
  1830. __extension__ extern __inline int8x8_t
  1831. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1832. vqsub_s8 (int8x8_t __a, int8x8_t __b)
  1833. {
  1834. return (int8x8_t)__builtin_neon_vqsubsv8qi (__a, __b);
  1835. }
  1836. __extension__ extern __inline int16x4_t
  1837. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1838. vqsub_s16 (int16x4_t __a, int16x4_t __b)
  1839. {
  1840. return (int16x4_t)__builtin_neon_vqsubsv4hi (__a, __b);
  1841. }
  1842. __extension__ extern __inline int32x2_t
  1843. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1844. vqsub_s32 (int32x2_t __a, int32x2_t __b)
  1845. {
  1846. return (int32x2_t)__builtin_neon_vqsubsv2si (__a, __b);
  1847. }
  1848. __extension__ extern __inline int64x1_t
  1849. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1850. vqsub_s64 (int64x1_t __a, int64x1_t __b)
  1851. {
  1852. return (int64x1_t)__builtin_neon_vqsubsdi (__a, __b);
  1853. }
  1854. __extension__ extern __inline uint8x8_t
  1855. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1856. vqsub_u8 (uint8x8_t __a, uint8x8_t __b)
  1857. {
  1858. return (uint8x8_t)__builtin_neon_vqsubuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  1859. }
  1860. __extension__ extern __inline uint16x4_t
  1861. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1862. vqsub_u16 (uint16x4_t __a, uint16x4_t __b)
  1863. {
  1864. return (uint16x4_t)__builtin_neon_vqsubuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  1865. }
  1866. __extension__ extern __inline uint32x2_t
  1867. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1868. vqsub_u32 (uint32x2_t __a, uint32x2_t __b)
  1869. {
  1870. return (uint32x2_t)__builtin_neon_vqsubuv2si ((int32x2_t) __a, (int32x2_t) __b);
  1871. }
  1872. __extension__ extern __inline uint64x1_t
  1873. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1874. vqsub_u64 (uint64x1_t __a, uint64x1_t __b)
  1875. {
  1876. return (uint64x1_t)__builtin_neon_vqsubudi ((int64x1_t) __a, (int64x1_t) __b);
  1877. }
  1878. __extension__ extern __inline int8x16_t
  1879. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1880. vqsubq_s8 (int8x16_t __a, int8x16_t __b)
  1881. {
  1882. return (int8x16_t)__builtin_neon_vqsubsv16qi (__a, __b);
  1883. }
  1884. __extension__ extern __inline int16x8_t
  1885. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1886. vqsubq_s16 (int16x8_t __a, int16x8_t __b)
  1887. {
  1888. return (int16x8_t)__builtin_neon_vqsubsv8hi (__a, __b);
  1889. }
  1890. __extension__ extern __inline int32x4_t
  1891. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1892. vqsubq_s32 (int32x4_t __a, int32x4_t __b)
  1893. {
  1894. return (int32x4_t)__builtin_neon_vqsubsv4si (__a, __b);
  1895. }
  1896. __extension__ extern __inline int64x2_t
  1897. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1898. vqsubq_s64 (int64x2_t __a, int64x2_t __b)
  1899. {
  1900. return (int64x2_t)__builtin_neon_vqsubsv2di (__a, __b);
  1901. }
  1902. __extension__ extern __inline uint8x16_t
  1903. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1904. vqsubq_u8 (uint8x16_t __a, uint8x16_t __b)
  1905. {
  1906. return (uint8x16_t)__builtin_neon_vqsubuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  1907. }
  1908. __extension__ extern __inline uint16x8_t
  1909. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1910. vqsubq_u16 (uint16x8_t __a, uint16x8_t __b)
  1911. {
  1912. return (uint16x8_t)__builtin_neon_vqsubuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  1913. }
  1914. __extension__ extern __inline uint32x4_t
  1915. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1916. vqsubq_u32 (uint32x4_t __a, uint32x4_t __b)
  1917. {
  1918. return (uint32x4_t)__builtin_neon_vqsubuv4si ((int32x4_t) __a, (int32x4_t) __b);
  1919. }
  1920. __extension__ extern __inline uint64x2_t
  1921. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1922. vqsubq_u64 (uint64x2_t __a, uint64x2_t __b)
  1923. {
  1924. return (uint64x2_t)__builtin_neon_vqsubuv2di ((int64x2_t) __a, (int64x2_t) __b);
  1925. }
  1926. __extension__ extern __inline int8x8_t
  1927. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1928. vsubhn_s16 (int16x8_t __a, int16x8_t __b)
  1929. {
  1930. return (int8x8_t)__builtin_neon_vsubhnv8hi (__a, __b);
  1931. }
  1932. __extension__ extern __inline int16x4_t
  1933. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1934. vsubhn_s32 (int32x4_t __a, int32x4_t __b)
  1935. {
  1936. return (int16x4_t)__builtin_neon_vsubhnv4si (__a, __b);
  1937. }
  1938. __extension__ extern __inline int32x2_t
  1939. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1940. vsubhn_s64 (int64x2_t __a, int64x2_t __b)
  1941. {
  1942. return (int32x2_t)__builtin_neon_vsubhnv2di (__a, __b);
  1943. }
  1944. __extension__ extern __inline uint8x8_t
  1945. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1946. vsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
  1947. {
  1948. return (uint8x8_t)__builtin_neon_vsubhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
  1949. }
  1950. __extension__ extern __inline uint16x4_t
  1951. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1952. vsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
  1953. {
  1954. return (uint16x4_t)__builtin_neon_vsubhnv4si ((int32x4_t) __a, (int32x4_t) __b);
  1955. }
  1956. __extension__ extern __inline uint32x2_t
  1957. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1958. vsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
  1959. {
  1960. return (uint32x2_t)__builtin_neon_vsubhnv2di ((int64x2_t) __a, (int64x2_t) __b);
  1961. }
  1962. __extension__ extern __inline int8x8_t
  1963. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1964. vrsubhn_s16 (int16x8_t __a, int16x8_t __b)
  1965. {
  1966. return (int8x8_t)__builtin_neon_vrsubhnv8hi (__a, __b);
  1967. }
  1968. __extension__ extern __inline int16x4_t
  1969. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1970. vrsubhn_s32 (int32x4_t __a, int32x4_t __b)
  1971. {
  1972. return (int16x4_t)__builtin_neon_vrsubhnv4si (__a, __b);
  1973. }
  1974. __extension__ extern __inline int32x2_t
  1975. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1976. vrsubhn_s64 (int64x2_t __a, int64x2_t __b)
  1977. {
  1978. return (int32x2_t)__builtin_neon_vrsubhnv2di (__a, __b);
  1979. }
  1980. __extension__ extern __inline uint8x8_t
  1981. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1982. vrsubhn_u16 (uint16x8_t __a, uint16x8_t __b)
  1983. {
  1984. return (uint8x8_t)__builtin_neon_vrsubhnv8hi ((int16x8_t) __a, (int16x8_t) __b);
  1985. }
  1986. __extension__ extern __inline uint16x4_t
  1987. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1988. vrsubhn_u32 (uint32x4_t __a, uint32x4_t __b)
  1989. {
  1990. return (uint16x4_t)__builtin_neon_vrsubhnv4si ((int32x4_t) __a, (int32x4_t) __b);
  1991. }
  1992. __extension__ extern __inline uint32x2_t
  1993. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  1994. vrsubhn_u64 (uint64x2_t __a, uint64x2_t __b)
  1995. {
  1996. return (uint32x2_t)__builtin_neon_vrsubhnv2di ((int64x2_t) __a, (int64x2_t) __b);
  1997. }
  1998. __extension__ extern __inline uint8x8_t
  1999. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2000. vceq_s8 (int8x8_t __a, int8x8_t __b)
  2001. {
  2002. return (uint8x8_t)__builtin_neon_vceqv8qi (__a, __b);
  2003. }
  2004. __extension__ extern __inline uint16x4_t
  2005. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2006. vceq_s16 (int16x4_t __a, int16x4_t __b)
  2007. {
  2008. return (uint16x4_t)__builtin_neon_vceqv4hi (__a, __b);
  2009. }
  2010. __extension__ extern __inline uint32x2_t
  2011. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2012. vceq_s32 (int32x2_t __a, int32x2_t __b)
  2013. {
  2014. return (uint32x2_t)__builtin_neon_vceqv2si (__a, __b);
  2015. }
  2016. __extension__ extern __inline uint32x2_t
  2017. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2018. vceq_f32 (float32x2_t __a, float32x2_t __b)
  2019. {
  2020. return (uint32x2_t)__builtin_neon_vceqv2sf (__a, __b);
  2021. }
  2022. __extension__ extern __inline uint8x8_t
  2023. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2024. vceq_u8 (uint8x8_t __a, uint8x8_t __b)
  2025. {
  2026. return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2027. }
  2028. __extension__ extern __inline uint16x4_t
  2029. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2030. vceq_u16 (uint16x4_t __a, uint16x4_t __b)
  2031. {
  2032. return (uint16x4_t)__builtin_neon_vceqv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2033. }
  2034. __extension__ extern __inline uint32x2_t
  2035. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2036. vceq_u32 (uint32x2_t __a, uint32x2_t __b)
  2037. {
  2038. return (uint32x2_t)__builtin_neon_vceqv2si ((int32x2_t) __a, (int32x2_t) __b);
  2039. }
  2040. __extension__ extern __inline uint8x8_t
  2041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2042. vceq_p8 (poly8x8_t __a, poly8x8_t __b)
  2043. {
  2044. return (uint8x8_t)__builtin_neon_vceqv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2045. }
  2046. __extension__ extern __inline uint8x16_t
  2047. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2048. vceqq_s8 (int8x16_t __a, int8x16_t __b)
  2049. {
  2050. return (uint8x16_t)__builtin_neon_vceqv16qi (__a, __b);
  2051. }
  2052. __extension__ extern __inline uint16x8_t
  2053. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2054. vceqq_s16 (int16x8_t __a, int16x8_t __b)
  2055. {
  2056. return (uint16x8_t)__builtin_neon_vceqv8hi (__a, __b);
  2057. }
  2058. __extension__ extern __inline uint32x4_t
  2059. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2060. vceqq_s32 (int32x4_t __a, int32x4_t __b)
  2061. {
  2062. return (uint32x4_t)__builtin_neon_vceqv4si (__a, __b);
  2063. }
  2064. __extension__ extern __inline uint32x4_t
  2065. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2066. vceqq_f32 (float32x4_t __a, float32x4_t __b)
  2067. {
  2068. return (uint32x4_t)__builtin_neon_vceqv4sf (__a, __b);
  2069. }
  2070. __extension__ extern __inline uint8x16_t
  2071. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2072. vceqq_u8 (uint8x16_t __a, uint8x16_t __b)
  2073. {
  2074. return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2075. }
  2076. __extension__ extern __inline uint16x8_t
  2077. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2078. vceqq_u16 (uint16x8_t __a, uint16x8_t __b)
  2079. {
  2080. return (uint16x8_t)__builtin_neon_vceqv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2081. }
  2082. __extension__ extern __inline uint32x4_t
  2083. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2084. vceqq_u32 (uint32x4_t __a, uint32x4_t __b)
  2085. {
  2086. return (uint32x4_t)__builtin_neon_vceqv4si ((int32x4_t) __a, (int32x4_t) __b);
  2087. }
  2088. __extension__ extern __inline uint8x16_t
  2089. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2090. vceqq_p8 (poly8x16_t __a, poly8x16_t __b)
  2091. {
  2092. return (uint8x16_t)__builtin_neon_vceqv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2093. }
  2094. __extension__ extern __inline uint8x8_t
  2095. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2096. vcge_s8 (int8x8_t __a, int8x8_t __b)
  2097. {
  2098. return (uint8x8_t)__builtin_neon_vcgev8qi (__a, __b);
  2099. }
  2100. __extension__ extern __inline uint16x4_t
  2101. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2102. vcge_s16 (int16x4_t __a, int16x4_t __b)
  2103. {
  2104. return (uint16x4_t)__builtin_neon_vcgev4hi (__a, __b);
  2105. }
  2106. __extension__ extern __inline uint32x2_t
  2107. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2108. vcge_s32 (int32x2_t __a, int32x2_t __b)
  2109. {
  2110. return (uint32x2_t)__builtin_neon_vcgev2si (__a, __b);
  2111. }
  2112. __extension__ extern __inline uint32x2_t
  2113. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2114. vcge_f32 (float32x2_t __a, float32x2_t __b)
  2115. {
  2116. return (uint32x2_t)__builtin_neon_vcgev2sf (__a, __b);
  2117. }
  2118. __extension__ extern __inline uint8x8_t
  2119. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2120. vcge_u8 (uint8x8_t __a, uint8x8_t __b)
  2121. {
  2122. return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2123. }
  2124. __extension__ extern __inline uint16x4_t
  2125. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2126. vcge_u16 (uint16x4_t __a, uint16x4_t __b)
  2127. {
  2128. return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2129. }
  2130. __extension__ extern __inline uint32x2_t
  2131. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2132. vcge_u32 (uint32x2_t __a, uint32x2_t __b)
  2133. {
  2134. return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __a, (int32x2_t) __b);
  2135. }
  2136. __extension__ extern __inline uint8x16_t
  2137. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2138. vcgeq_s8 (int8x16_t __a, int8x16_t __b)
  2139. {
  2140. return (uint8x16_t)__builtin_neon_vcgev16qi (__a, __b);
  2141. }
  2142. __extension__ extern __inline uint16x8_t
  2143. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2144. vcgeq_s16 (int16x8_t __a, int16x8_t __b)
  2145. {
  2146. return (uint16x8_t)__builtin_neon_vcgev8hi (__a, __b);
  2147. }
  2148. __extension__ extern __inline uint32x4_t
  2149. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2150. vcgeq_s32 (int32x4_t __a, int32x4_t __b)
  2151. {
  2152. return (uint32x4_t)__builtin_neon_vcgev4si (__a, __b);
  2153. }
  2154. __extension__ extern __inline uint32x4_t
  2155. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2156. vcgeq_f32 (float32x4_t __a, float32x4_t __b)
  2157. {
  2158. return (uint32x4_t)__builtin_neon_vcgev4sf (__a, __b);
  2159. }
  2160. __extension__ extern __inline uint8x16_t
  2161. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2162. vcgeq_u8 (uint8x16_t __a, uint8x16_t __b)
  2163. {
  2164. return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2165. }
  2166. __extension__ extern __inline uint16x8_t
  2167. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2168. vcgeq_u16 (uint16x8_t __a, uint16x8_t __b)
  2169. {
  2170. return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2171. }
  2172. __extension__ extern __inline uint32x4_t
  2173. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2174. vcgeq_u32 (uint32x4_t __a, uint32x4_t __b)
  2175. {
  2176. return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __a, (int32x4_t) __b);
  2177. }
  2178. __extension__ extern __inline uint8x8_t
  2179. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2180. vcle_s8 (int8x8_t __a, int8x8_t __b)
  2181. {
  2182. return (uint8x8_t)__builtin_neon_vcgev8qi (__b, __a);
  2183. }
  2184. __extension__ extern __inline uint16x4_t
  2185. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2186. vcle_s16 (int16x4_t __a, int16x4_t __b)
  2187. {
  2188. return (uint16x4_t)__builtin_neon_vcgev4hi (__b, __a);
  2189. }
  2190. __extension__ extern __inline uint32x2_t
  2191. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2192. vcle_s32 (int32x2_t __a, int32x2_t __b)
  2193. {
  2194. return (uint32x2_t)__builtin_neon_vcgev2si (__b, __a);
  2195. }
  2196. __extension__ extern __inline uint32x2_t
  2197. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2198. vcle_f32 (float32x2_t __a, float32x2_t __b)
  2199. {
  2200. return (uint32x2_t)__builtin_neon_vcgev2sf (__b, __a);
  2201. }
  2202. __extension__ extern __inline uint8x8_t
  2203. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2204. vcle_u8 (uint8x8_t __a, uint8x8_t __b)
  2205. {
  2206. return (uint8x8_t)__builtin_neon_vcgeuv8qi ((int8x8_t) __b, (int8x8_t) __a);
  2207. }
  2208. __extension__ extern __inline uint16x4_t
  2209. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2210. vcle_u16 (uint16x4_t __a, uint16x4_t __b)
  2211. {
  2212. return (uint16x4_t)__builtin_neon_vcgeuv4hi ((int16x4_t) __b, (int16x4_t) __a);
  2213. }
  2214. __extension__ extern __inline uint32x2_t
  2215. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2216. vcle_u32 (uint32x2_t __a, uint32x2_t __b)
  2217. {
  2218. return (uint32x2_t)__builtin_neon_vcgeuv2si ((int32x2_t) __b, (int32x2_t) __a);
  2219. }
  2220. __extension__ extern __inline uint8x16_t
  2221. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2222. vcleq_s8 (int8x16_t __a, int8x16_t __b)
  2223. {
  2224. return (uint8x16_t)__builtin_neon_vcgev16qi (__b, __a);
  2225. }
  2226. __extension__ extern __inline uint16x8_t
  2227. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2228. vcleq_s16 (int16x8_t __a, int16x8_t __b)
  2229. {
  2230. return (uint16x8_t)__builtin_neon_vcgev8hi (__b, __a);
  2231. }
  2232. __extension__ extern __inline uint32x4_t
  2233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2234. vcleq_s32 (int32x4_t __a, int32x4_t __b)
  2235. {
  2236. return (uint32x4_t)__builtin_neon_vcgev4si (__b, __a);
  2237. }
  2238. __extension__ extern __inline uint32x4_t
  2239. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2240. vcleq_f32 (float32x4_t __a, float32x4_t __b)
  2241. {
  2242. return (uint32x4_t)__builtin_neon_vcgev4sf (__b, __a);
  2243. }
  2244. __extension__ extern __inline uint8x16_t
  2245. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2246. vcleq_u8 (uint8x16_t __a, uint8x16_t __b)
  2247. {
  2248. return (uint8x16_t)__builtin_neon_vcgeuv16qi ((int8x16_t) __b, (int8x16_t) __a);
  2249. }
  2250. __extension__ extern __inline uint16x8_t
  2251. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2252. vcleq_u16 (uint16x8_t __a, uint16x8_t __b)
  2253. {
  2254. return (uint16x8_t)__builtin_neon_vcgeuv8hi ((int16x8_t) __b, (int16x8_t) __a);
  2255. }
  2256. __extension__ extern __inline uint32x4_t
  2257. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2258. vcleq_u32 (uint32x4_t __a, uint32x4_t __b)
  2259. {
  2260. return (uint32x4_t)__builtin_neon_vcgeuv4si ((int32x4_t) __b, (int32x4_t) __a);
  2261. }
  2262. __extension__ extern __inline uint8x8_t
  2263. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2264. vcgt_s8 (int8x8_t __a, int8x8_t __b)
  2265. {
  2266. return (uint8x8_t)__builtin_neon_vcgtv8qi (__a, __b);
  2267. }
  2268. __extension__ extern __inline uint16x4_t
  2269. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2270. vcgt_s16 (int16x4_t __a, int16x4_t __b)
  2271. {
  2272. return (uint16x4_t)__builtin_neon_vcgtv4hi (__a, __b);
  2273. }
  2274. __extension__ extern __inline uint32x2_t
  2275. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2276. vcgt_s32 (int32x2_t __a, int32x2_t __b)
  2277. {
  2278. return (uint32x2_t)__builtin_neon_vcgtv2si (__a, __b);
  2279. }
  2280. __extension__ extern __inline uint32x2_t
  2281. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2282. vcgt_f32 (float32x2_t __a, float32x2_t __b)
  2283. {
  2284. return (uint32x2_t)__builtin_neon_vcgtv2sf (__a, __b);
  2285. }
  2286. __extension__ extern __inline uint8x8_t
  2287. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2288. vcgt_u8 (uint8x8_t __a, uint8x8_t __b)
  2289. {
  2290. return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2291. }
  2292. __extension__ extern __inline uint16x4_t
  2293. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2294. vcgt_u16 (uint16x4_t __a, uint16x4_t __b)
  2295. {
  2296. return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2297. }
  2298. __extension__ extern __inline uint32x2_t
  2299. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2300. vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
  2301. {
  2302. return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __a, (int32x2_t) __b);
  2303. }
  2304. __extension__ extern __inline uint8x16_t
  2305. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2306. vcgtq_s8 (int8x16_t __a, int8x16_t __b)
  2307. {
  2308. return (uint8x16_t)__builtin_neon_vcgtv16qi (__a, __b);
  2309. }
  2310. __extension__ extern __inline uint16x8_t
  2311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2312. vcgtq_s16 (int16x8_t __a, int16x8_t __b)
  2313. {
  2314. return (uint16x8_t)__builtin_neon_vcgtv8hi (__a, __b);
  2315. }
  2316. __extension__ extern __inline uint32x4_t
  2317. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2318. vcgtq_s32 (int32x4_t __a, int32x4_t __b)
  2319. {
  2320. return (uint32x4_t)__builtin_neon_vcgtv4si (__a, __b);
  2321. }
  2322. __extension__ extern __inline uint32x4_t
  2323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2324. vcgtq_f32 (float32x4_t __a, float32x4_t __b)
  2325. {
  2326. return (uint32x4_t)__builtin_neon_vcgtv4sf (__a, __b);
  2327. }
  2328. __extension__ extern __inline uint8x16_t
  2329. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2330. vcgtq_u8 (uint8x16_t __a, uint8x16_t __b)
  2331. {
  2332. return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2333. }
  2334. __extension__ extern __inline uint16x8_t
  2335. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2336. vcgtq_u16 (uint16x8_t __a, uint16x8_t __b)
  2337. {
  2338. return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2339. }
  2340. __extension__ extern __inline uint32x4_t
  2341. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2342. vcgtq_u32 (uint32x4_t __a, uint32x4_t __b)
  2343. {
  2344. return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __a, (int32x4_t) __b);
  2345. }
  2346. __extension__ extern __inline uint8x8_t
  2347. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2348. vclt_s8 (int8x8_t __a, int8x8_t __b)
  2349. {
  2350. return (uint8x8_t)__builtin_neon_vcgtv8qi (__b, __a);
  2351. }
  2352. __extension__ extern __inline uint16x4_t
  2353. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2354. vclt_s16 (int16x4_t __a, int16x4_t __b)
  2355. {
  2356. return (uint16x4_t)__builtin_neon_vcgtv4hi (__b, __a);
  2357. }
  2358. __extension__ extern __inline uint32x2_t
  2359. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2360. vclt_s32 (int32x2_t __a, int32x2_t __b)
  2361. {
  2362. return (uint32x2_t)__builtin_neon_vcgtv2si (__b, __a);
  2363. }
  2364. __extension__ extern __inline uint32x2_t
  2365. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2366. vclt_f32 (float32x2_t __a, float32x2_t __b)
  2367. {
  2368. return (uint32x2_t)__builtin_neon_vcgtv2sf (__b, __a);
  2369. }
  2370. __extension__ extern __inline uint8x8_t
  2371. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2372. vclt_u8 (uint8x8_t __a, uint8x8_t __b)
  2373. {
  2374. return (uint8x8_t)__builtin_neon_vcgtuv8qi ((int8x8_t) __b, (int8x8_t) __a);
  2375. }
  2376. __extension__ extern __inline uint16x4_t
  2377. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2378. vclt_u16 (uint16x4_t __a, uint16x4_t __b)
  2379. {
  2380. return (uint16x4_t)__builtin_neon_vcgtuv4hi ((int16x4_t) __b, (int16x4_t) __a);
  2381. }
  2382. __extension__ extern __inline uint32x2_t
  2383. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2384. vclt_u32 (uint32x2_t __a, uint32x2_t __b)
  2385. {
  2386. return (uint32x2_t)__builtin_neon_vcgtuv2si ((int32x2_t) __b, (int32x2_t) __a);
  2387. }
  2388. __extension__ extern __inline uint8x16_t
  2389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2390. vcltq_s8 (int8x16_t __a, int8x16_t __b)
  2391. {
  2392. return (uint8x16_t)__builtin_neon_vcgtv16qi (__b, __a);
  2393. }
  2394. __extension__ extern __inline uint16x8_t
  2395. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2396. vcltq_s16 (int16x8_t __a, int16x8_t __b)
  2397. {
  2398. return (uint16x8_t)__builtin_neon_vcgtv8hi (__b, __a);
  2399. }
  2400. __extension__ extern __inline uint32x4_t
  2401. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2402. vcltq_s32 (int32x4_t __a, int32x4_t __b)
  2403. {
  2404. return (uint32x4_t)__builtin_neon_vcgtv4si (__b, __a);
  2405. }
  2406. __extension__ extern __inline uint32x4_t
  2407. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2408. vcltq_f32 (float32x4_t __a, float32x4_t __b)
  2409. {
  2410. return (uint32x4_t)__builtin_neon_vcgtv4sf (__b, __a);
  2411. }
  2412. __extension__ extern __inline uint8x16_t
  2413. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2414. vcltq_u8 (uint8x16_t __a, uint8x16_t __b)
  2415. {
  2416. return (uint8x16_t)__builtin_neon_vcgtuv16qi ((int8x16_t) __b, (int8x16_t) __a);
  2417. }
  2418. __extension__ extern __inline uint16x8_t
  2419. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2420. vcltq_u16 (uint16x8_t __a, uint16x8_t __b)
  2421. {
  2422. return (uint16x8_t)__builtin_neon_vcgtuv8hi ((int16x8_t) __b, (int16x8_t) __a);
  2423. }
  2424. __extension__ extern __inline uint32x4_t
  2425. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2426. vcltq_u32 (uint32x4_t __a, uint32x4_t __b)
  2427. {
  2428. return (uint32x4_t)__builtin_neon_vcgtuv4si ((int32x4_t) __b, (int32x4_t) __a);
  2429. }
  2430. __extension__ extern __inline uint32x2_t
  2431. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2432. vcage_f32 (float32x2_t __a, float32x2_t __b)
  2433. {
  2434. return (uint32x2_t)__builtin_neon_vcagev2sf (__a, __b);
  2435. }
  2436. __extension__ extern __inline uint32x4_t
  2437. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2438. vcageq_f32 (float32x4_t __a, float32x4_t __b)
  2439. {
  2440. return (uint32x4_t)__builtin_neon_vcagev4sf (__a, __b);
  2441. }
  2442. __extension__ extern __inline uint32x2_t
  2443. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2444. vcale_f32 (float32x2_t __a, float32x2_t __b)
  2445. {
  2446. return (uint32x2_t)__builtin_neon_vcagev2sf (__b, __a);
  2447. }
  2448. __extension__ extern __inline uint32x4_t
  2449. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2450. vcaleq_f32 (float32x4_t __a, float32x4_t __b)
  2451. {
  2452. return (uint32x4_t)__builtin_neon_vcagev4sf (__b, __a);
  2453. }
  2454. __extension__ extern __inline uint32x2_t
  2455. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2456. vcagt_f32 (float32x2_t __a, float32x2_t __b)
  2457. {
  2458. return (uint32x2_t)__builtin_neon_vcagtv2sf (__a, __b);
  2459. }
  2460. __extension__ extern __inline uint32x4_t
  2461. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2462. vcagtq_f32 (float32x4_t __a, float32x4_t __b)
  2463. {
  2464. return (uint32x4_t)__builtin_neon_vcagtv4sf (__a, __b);
  2465. }
  2466. __extension__ extern __inline uint32x2_t
  2467. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2468. vcalt_f32 (float32x2_t __a, float32x2_t __b)
  2469. {
  2470. return (uint32x2_t)__builtin_neon_vcagtv2sf (__b, __a);
  2471. }
  2472. __extension__ extern __inline uint32x4_t
  2473. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2474. vcaltq_f32 (float32x4_t __a, float32x4_t __b)
  2475. {
  2476. return (uint32x4_t)__builtin_neon_vcagtv4sf (__b, __a);
  2477. }
  2478. __extension__ extern __inline uint8x8_t
  2479. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2480. vtst_s8 (int8x8_t __a, int8x8_t __b)
  2481. {
  2482. return (uint8x8_t)__builtin_neon_vtstv8qi (__a, __b);
  2483. }
  2484. __extension__ extern __inline uint16x4_t
  2485. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2486. vtst_s16 (int16x4_t __a, int16x4_t __b)
  2487. {
  2488. return (uint16x4_t)__builtin_neon_vtstv4hi (__a, __b);
  2489. }
  2490. __extension__ extern __inline uint32x2_t
  2491. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2492. vtst_s32 (int32x2_t __a, int32x2_t __b)
  2493. {
  2494. return (uint32x2_t)__builtin_neon_vtstv2si (__a, __b);
  2495. }
  2496. __extension__ extern __inline uint8x8_t
  2497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2498. vtst_u8 (uint8x8_t __a, uint8x8_t __b)
  2499. {
  2500. return (uint8x8_t)__builtin_neon_vtstv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2501. }
  2502. __extension__ extern __inline uint16x4_t
  2503. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2504. vtst_u16 (uint16x4_t __a, uint16x4_t __b)
  2505. {
  2506. return (uint16x4_t)__builtin_neon_vtstv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2507. }
  2508. __extension__ extern __inline uint32x2_t
  2509. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2510. vtst_u32 (uint32x2_t __a, uint32x2_t __b)
  2511. {
  2512. return (uint32x2_t)__builtin_neon_vtstv2si ((int32x2_t) __a, (int32x2_t) __b);
  2513. }
  2514. __extension__ extern __inline uint8x8_t
  2515. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2516. vtst_p8 (poly8x8_t __a, poly8x8_t __b)
  2517. {
  2518. return (uint8x8_t)__builtin_neon_vtstv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2519. }
  2520. __extension__ extern __inline uint16x4_t
  2521. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2522. vtst_p16 (poly16x4_t __a, poly16x4_t __b)
  2523. {
  2524. return (uint16x4_t)__builtin_neon_vtstv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2525. }
  2526. __extension__ extern __inline uint8x16_t
  2527. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2528. vtstq_s8 (int8x16_t __a, int8x16_t __b)
  2529. {
  2530. return (uint8x16_t)__builtin_neon_vtstv16qi (__a, __b);
  2531. }
  2532. __extension__ extern __inline uint16x8_t
  2533. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2534. vtstq_s16 (int16x8_t __a, int16x8_t __b)
  2535. {
  2536. return (uint16x8_t)__builtin_neon_vtstv8hi (__a, __b);
  2537. }
  2538. __extension__ extern __inline uint32x4_t
  2539. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2540. vtstq_s32 (int32x4_t __a, int32x4_t __b)
  2541. {
  2542. return (uint32x4_t)__builtin_neon_vtstv4si (__a, __b);
  2543. }
  2544. __extension__ extern __inline uint8x16_t
  2545. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2546. vtstq_u8 (uint8x16_t __a, uint8x16_t __b)
  2547. {
  2548. return (uint8x16_t)__builtin_neon_vtstv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2549. }
  2550. __extension__ extern __inline uint16x8_t
  2551. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2552. vtstq_u16 (uint16x8_t __a, uint16x8_t __b)
  2553. {
  2554. return (uint16x8_t)__builtin_neon_vtstv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2555. }
  2556. __extension__ extern __inline uint32x4_t
  2557. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2558. vtstq_u32 (uint32x4_t __a, uint32x4_t __b)
  2559. {
  2560. return (uint32x4_t)__builtin_neon_vtstv4si ((int32x4_t) __a, (int32x4_t) __b);
  2561. }
  2562. __extension__ extern __inline uint8x16_t
  2563. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2564. vtstq_p8 (poly8x16_t __a, poly8x16_t __b)
  2565. {
  2566. return (uint8x16_t)__builtin_neon_vtstv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2567. }
  2568. __extension__ extern __inline uint16x8_t
  2569. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2570. vtstq_p16 (poly16x8_t __a, poly16x8_t __b)
  2571. {
  2572. return (uint16x8_t)__builtin_neon_vtstv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2573. }
  2574. __extension__ extern __inline int8x8_t
  2575. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2576. vabd_s8 (int8x8_t __a, int8x8_t __b)
  2577. {
  2578. return (int8x8_t)__builtin_neon_vabdsv8qi (__a, __b);
  2579. }
  2580. __extension__ extern __inline int16x4_t
  2581. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2582. vabd_s16 (int16x4_t __a, int16x4_t __b)
  2583. {
  2584. return (int16x4_t)__builtin_neon_vabdsv4hi (__a, __b);
  2585. }
  2586. __extension__ extern __inline int32x2_t
  2587. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2588. vabd_s32 (int32x2_t __a, int32x2_t __b)
  2589. {
  2590. return (int32x2_t)__builtin_neon_vabdsv2si (__a, __b);
  2591. }
  2592. __extension__ extern __inline float32x2_t
  2593. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2594. vabd_f32 (float32x2_t __a, float32x2_t __b)
  2595. {
  2596. return (float32x2_t)__builtin_neon_vabdfv2sf (__a, __b);
  2597. }
  2598. __extension__ extern __inline uint8x8_t
  2599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2600. vabd_u8 (uint8x8_t __a, uint8x8_t __b)
  2601. {
  2602. return (uint8x8_t)__builtin_neon_vabduv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2603. }
  2604. __extension__ extern __inline uint16x4_t
  2605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2606. vabd_u16 (uint16x4_t __a, uint16x4_t __b)
  2607. {
  2608. return (uint16x4_t)__builtin_neon_vabduv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2609. }
  2610. __extension__ extern __inline uint32x2_t
  2611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2612. vabd_u32 (uint32x2_t __a, uint32x2_t __b)
  2613. {
  2614. return (uint32x2_t)__builtin_neon_vabduv2si ((int32x2_t) __a, (int32x2_t) __b);
  2615. }
  2616. __extension__ extern __inline int8x16_t
  2617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2618. vabdq_s8 (int8x16_t __a, int8x16_t __b)
  2619. {
  2620. return (int8x16_t)__builtin_neon_vabdsv16qi (__a, __b);
  2621. }
  2622. __extension__ extern __inline int16x8_t
  2623. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2624. vabdq_s16 (int16x8_t __a, int16x8_t __b)
  2625. {
  2626. return (int16x8_t)__builtin_neon_vabdsv8hi (__a, __b);
  2627. }
  2628. __extension__ extern __inline int32x4_t
  2629. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2630. vabdq_s32 (int32x4_t __a, int32x4_t __b)
  2631. {
  2632. return (int32x4_t)__builtin_neon_vabdsv4si (__a, __b);
  2633. }
  2634. __extension__ extern __inline float32x4_t
  2635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2636. vabdq_f32 (float32x4_t __a, float32x4_t __b)
  2637. {
  2638. return (float32x4_t)__builtin_neon_vabdfv4sf (__a, __b);
  2639. }
  2640. __extension__ extern __inline uint8x16_t
  2641. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2642. vabdq_u8 (uint8x16_t __a, uint8x16_t __b)
  2643. {
  2644. return (uint8x16_t)__builtin_neon_vabduv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2645. }
  2646. __extension__ extern __inline uint16x8_t
  2647. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2648. vabdq_u16 (uint16x8_t __a, uint16x8_t __b)
  2649. {
  2650. return (uint16x8_t)__builtin_neon_vabduv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2651. }
  2652. __extension__ extern __inline uint32x4_t
  2653. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2654. vabdq_u32 (uint32x4_t __a, uint32x4_t __b)
  2655. {
  2656. return (uint32x4_t)__builtin_neon_vabduv4si ((int32x4_t) __a, (int32x4_t) __b);
  2657. }
  2658. __extension__ extern __inline int16x8_t
  2659. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2660. vabdl_s8 (int8x8_t __a, int8x8_t __b)
  2661. {
  2662. return (int16x8_t)__builtin_neon_vabdlsv8qi (__a, __b);
  2663. }
  2664. __extension__ extern __inline int32x4_t
  2665. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2666. vabdl_s16 (int16x4_t __a, int16x4_t __b)
  2667. {
  2668. return (int32x4_t)__builtin_neon_vabdlsv4hi (__a, __b);
  2669. }
  2670. __extension__ extern __inline int64x2_t
  2671. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2672. vabdl_s32 (int32x2_t __a, int32x2_t __b)
  2673. {
  2674. return (int64x2_t)__builtin_neon_vabdlsv2si (__a, __b);
  2675. }
  2676. __extension__ extern __inline uint16x8_t
  2677. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2678. vabdl_u8 (uint8x8_t __a, uint8x8_t __b)
  2679. {
  2680. return (uint16x8_t)__builtin_neon_vabdluv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2681. }
  2682. __extension__ extern __inline uint32x4_t
  2683. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2684. vabdl_u16 (uint16x4_t __a, uint16x4_t __b)
  2685. {
  2686. return (uint32x4_t)__builtin_neon_vabdluv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2687. }
  2688. __extension__ extern __inline uint64x2_t
  2689. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2690. vabdl_u32 (uint32x2_t __a, uint32x2_t __b)
  2691. {
  2692. return (uint64x2_t)__builtin_neon_vabdluv2si ((int32x2_t) __a, (int32x2_t) __b);
  2693. }
  2694. __extension__ extern __inline int8x8_t
  2695. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2696. vaba_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  2697. {
  2698. return (int8x8_t)__builtin_neon_vabasv8qi (__a, __b, __c);
  2699. }
  2700. __extension__ extern __inline int16x4_t
  2701. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2702. vaba_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c)
  2703. {
  2704. return (int16x4_t)__builtin_neon_vabasv4hi (__a, __b, __c);
  2705. }
  2706. __extension__ extern __inline int32x2_t
  2707. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2708. vaba_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c)
  2709. {
  2710. return (int32x2_t)__builtin_neon_vabasv2si (__a, __b, __c);
  2711. }
  2712. __extension__ extern __inline uint8x8_t
  2713. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2714. vaba_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  2715. {
  2716. return (uint8x8_t)__builtin_neon_vabauv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  2717. }
  2718. __extension__ extern __inline uint16x4_t
  2719. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2720. vaba_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  2721. {
  2722. return (uint16x4_t)__builtin_neon_vabauv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  2723. }
  2724. __extension__ extern __inline uint32x2_t
  2725. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2726. vaba_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  2727. {
  2728. return (uint32x2_t)__builtin_neon_vabauv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  2729. }
  2730. __extension__ extern __inline int8x16_t
  2731. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2732. vabaq_s8 (int8x16_t __a, int8x16_t __b, int8x16_t __c)
  2733. {
  2734. return (int8x16_t)__builtin_neon_vabasv16qi (__a, __b, __c);
  2735. }
  2736. __extension__ extern __inline int16x8_t
  2737. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2738. vabaq_s16 (int16x8_t __a, int16x8_t __b, int16x8_t __c)
  2739. {
  2740. return (int16x8_t)__builtin_neon_vabasv8hi (__a, __b, __c);
  2741. }
  2742. __extension__ extern __inline int32x4_t
  2743. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2744. vabaq_s32 (int32x4_t __a, int32x4_t __b, int32x4_t __c)
  2745. {
  2746. return (int32x4_t)__builtin_neon_vabasv4si (__a, __b, __c);
  2747. }
  2748. __extension__ extern __inline uint8x16_t
  2749. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2750. vabaq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  2751. {
  2752. return (uint8x16_t)__builtin_neon_vabauv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
  2753. }
  2754. __extension__ extern __inline uint16x8_t
  2755. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2756. vabaq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  2757. {
  2758. return (uint16x8_t)__builtin_neon_vabauv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
  2759. }
  2760. __extension__ extern __inline uint32x4_t
  2761. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2762. vabaq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  2763. {
  2764. return (uint32x4_t)__builtin_neon_vabauv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
  2765. }
  2766. __extension__ extern __inline int16x8_t
  2767. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2768. vabal_s8 (int16x8_t __a, int8x8_t __b, int8x8_t __c)
  2769. {
  2770. return (int16x8_t)__builtin_neon_vabalsv8qi (__a, __b, __c);
  2771. }
  2772. __extension__ extern __inline int32x4_t
  2773. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2774. vabal_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c)
  2775. {
  2776. return (int32x4_t)__builtin_neon_vabalsv4hi (__a, __b, __c);
  2777. }
  2778. __extension__ extern __inline int64x2_t
  2779. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2780. vabal_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c)
  2781. {
  2782. return (int64x2_t)__builtin_neon_vabalsv2si (__a, __b, __c);
  2783. }
  2784. __extension__ extern __inline uint16x8_t
  2785. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2786. vabal_u8 (uint16x8_t __a, uint8x8_t __b, uint8x8_t __c)
  2787. {
  2788. return (uint16x8_t)__builtin_neon_vabaluv8qi ((int16x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  2789. }
  2790. __extension__ extern __inline uint32x4_t
  2791. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2792. vabal_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c)
  2793. {
  2794. return (uint32x4_t)__builtin_neon_vabaluv4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  2795. }
  2796. __extension__ extern __inline uint64x2_t
  2797. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2798. vabal_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c)
  2799. {
  2800. return (uint64x2_t)__builtin_neon_vabaluv2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  2801. }
  2802. __extension__ extern __inline int8x8_t
  2803. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2804. vmax_s8 (int8x8_t __a, int8x8_t __b)
  2805. {
  2806. return (int8x8_t)__builtin_neon_vmaxsv8qi (__a, __b);
  2807. }
  2808. __extension__ extern __inline int16x4_t
  2809. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2810. vmax_s16 (int16x4_t __a, int16x4_t __b)
  2811. {
  2812. return (int16x4_t)__builtin_neon_vmaxsv4hi (__a, __b);
  2813. }
  2814. __extension__ extern __inline int32x2_t
  2815. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2816. vmax_s32 (int32x2_t __a, int32x2_t __b)
  2817. {
  2818. return (int32x2_t)__builtin_neon_vmaxsv2si (__a, __b);
  2819. }
  2820. __extension__ extern __inline float32x2_t
  2821. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2822. vmax_f32 (float32x2_t __a, float32x2_t __b)
  2823. {
  2824. return (float32x2_t)__builtin_neon_vmaxfv2sf (__a, __b);
  2825. }
  2826. __extension__ extern __inline uint8x8_t
  2827. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2828. vmax_u8 (uint8x8_t __a, uint8x8_t __b)
  2829. {
  2830. return (uint8x8_t)__builtin_neon_vmaxuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2831. }
  2832. __extension__ extern __inline uint16x4_t
  2833. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2834. vmax_u16 (uint16x4_t __a, uint16x4_t __b)
  2835. {
  2836. return (uint16x4_t)__builtin_neon_vmaxuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2837. }
  2838. __extension__ extern __inline uint32x2_t
  2839. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2840. vmax_u32 (uint32x2_t __a, uint32x2_t __b)
  2841. {
  2842. return (uint32x2_t)__builtin_neon_vmaxuv2si ((int32x2_t) __a, (int32x2_t) __b);
  2843. }
  2844. __extension__ extern __inline int8x16_t
  2845. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2846. vmaxq_s8 (int8x16_t __a, int8x16_t __b)
  2847. {
  2848. return (int8x16_t)__builtin_neon_vmaxsv16qi (__a, __b);
  2849. }
  2850. __extension__ extern __inline int16x8_t
  2851. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2852. vmaxq_s16 (int16x8_t __a, int16x8_t __b)
  2853. {
  2854. return (int16x8_t)__builtin_neon_vmaxsv8hi (__a, __b);
  2855. }
  2856. __extension__ extern __inline int32x4_t
  2857. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2858. vmaxq_s32 (int32x4_t __a, int32x4_t __b)
  2859. {
  2860. return (int32x4_t)__builtin_neon_vmaxsv4si (__a, __b);
  2861. }
  2862. __extension__ extern __inline float32x4_t
  2863. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2864. vmaxq_f32 (float32x4_t __a, float32x4_t __b)
  2865. {
  2866. return (float32x4_t)__builtin_neon_vmaxfv4sf (__a, __b);
  2867. }
  2868. #pragma GCC push_options
  2869. #pragma GCC target ("fpu=neon-fp-armv8")
  2870. __extension__ extern __inline float32x2_t
  2871. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2872. vmaxnm_f32 (float32x2_t a, float32x2_t b)
  2873. {
  2874. return (float32x2_t)__builtin_neon_vmaxnmv2sf (a, b);
  2875. }
  2876. __extension__ extern __inline float32x4_t
  2877. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2878. vmaxnmq_f32 (float32x4_t a, float32x4_t b)
  2879. {
  2880. return (float32x4_t)__builtin_neon_vmaxnmv4sf (a, b);
  2881. }
  2882. __extension__ extern __inline float32x2_t
  2883. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2884. vminnm_f32 (float32x2_t a, float32x2_t b)
  2885. {
  2886. return (float32x2_t)__builtin_neon_vminnmv2sf (a, b);
  2887. }
  2888. __extension__ extern __inline float32x4_t
  2889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2890. vminnmq_f32 (float32x4_t a, float32x4_t b)
  2891. {
  2892. return (float32x4_t)__builtin_neon_vminnmv4sf (a, b);
  2893. }
  2894. #pragma GCC pop_options
  2895. __extension__ extern __inline uint8x16_t
  2896. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2897. vmaxq_u8 (uint8x16_t __a, uint8x16_t __b)
  2898. {
  2899. return (uint8x16_t)__builtin_neon_vmaxuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2900. }
  2901. __extension__ extern __inline uint16x8_t
  2902. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2903. vmaxq_u16 (uint16x8_t __a, uint16x8_t __b)
  2904. {
  2905. return (uint16x8_t)__builtin_neon_vmaxuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2906. }
  2907. __extension__ extern __inline uint32x4_t
  2908. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2909. vmaxq_u32 (uint32x4_t __a, uint32x4_t __b)
  2910. {
  2911. return (uint32x4_t)__builtin_neon_vmaxuv4si ((int32x4_t) __a, (int32x4_t) __b);
  2912. }
  2913. __extension__ extern __inline int8x8_t
  2914. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2915. vmin_s8 (int8x8_t __a, int8x8_t __b)
  2916. {
  2917. return (int8x8_t)__builtin_neon_vminsv8qi (__a, __b);
  2918. }
  2919. __extension__ extern __inline int16x4_t
  2920. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2921. vmin_s16 (int16x4_t __a, int16x4_t __b)
  2922. {
  2923. return (int16x4_t)__builtin_neon_vminsv4hi (__a, __b);
  2924. }
  2925. __extension__ extern __inline int32x2_t
  2926. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2927. vmin_s32 (int32x2_t __a, int32x2_t __b)
  2928. {
  2929. return (int32x2_t)__builtin_neon_vminsv2si (__a, __b);
  2930. }
  2931. __extension__ extern __inline float32x2_t
  2932. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2933. vmin_f32 (float32x2_t __a, float32x2_t __b)
  2934. {
  2935. return (float32x2_t)__builtin_neon_vminfv2sf (__a, __b);
  2936. }
  2937. __extension__ extern __inline uint8x8_t
  2938. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2939. vmin_u8 (uint8x8_t __a, uint8x8_t __b)
  2940. {
  2941. return (uint8x8_t)__builtin_neon_vminuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  2942. }
  2943. __extension__ extern __inline uint16x4_t
  2944. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2945. vmin_u16 (uint16x4_t __a, uint16x4_t __b)
  2946. {
  2947. return (uint16x4_t)__builtin_neon_vminuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  2948. }
  2949. __extension__ extern __inline uint32x2_t
  2950. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2951. vmin_u32 (uint32x2_t __a, uint32x2_t __b)
  2952. {
  2953. return (uint32x2_t)__builtin_neon_vminuv2si ((int32x2_t) __a, (int32x2_t) __b);
  2954. }
  2955. __extension__ extern __inline int8x16_t
  2956. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2957. vminq_s8 (int8x16_t __a, int8x16_t __b)
  2958. {
  2959. return (int8x16_t)__builtin_neon_vminsv16qi (__a, __b);
  2960. }
  2961. __extension__ extern __inline int16x8_t
  2962. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2963. vminq_s16 (int16x8_t __a, int16x8_t __b)
  2964. {
  2965. return (int16x8_t)__builtin_neon_vminsv8hi (__a, __b);
  2966. }
  2967. __extension__ extern __inline int32x4_t
  2968. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2969. vminq_s32 (int32x4_t __a, int32x4_t __b)
  2970. {
  2971. return (int32x4_t)__builtin_neon_vminsv4si (__a, __b);
  2972. }
  2973. __extension__ extern __inline float32x4_t
  2974. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2975. vminq_f32 (float32x4_t __a, float32x4_t __b)
  2976. {
  2977. return (float32x4_t)__builtin_neon_vminfv4sf (__a, __b);
  2978. }
  2979. __extension__ extern __inline uint8x16_t
  2980. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2981. vminq_u8 (uint8x16_t __a, uint8x16_t __b)
  2982. {
  2983. return (uint8x16_t)__builtin_neon_vminuv16qi ((int8x16_t) __a, (int8x16_t) __b);
  2984. }
  2985. __extension__ extern __inline uint16x8_t
  2986. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2987. vminq_u16 (uint16x8_t __a, uint16x8_t __b)
  2988. {
  2989. return (uint16x8_t)__builtin_neon_vminuv8hi ((int16x8_t) __a, (int16x8_t) __b);
  2990. }
  2991. __extension__ extern __inline uint32x4_t
  2992. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2993. vminq_u32 (uint32x4_t __a, uint32x4_t __b)
  2994. {
  2995. return (uint32x4_t)__builtin_neon_vminuv4si ((int32x4_t) __a, (int32x4_t) __b);
  2996. }
  2997. __extension__ extern __inline int8x8_t
  2998. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  2999. vpadd_s8 (int8x8_t __a, int8x8_t __b)
  3000. {
  3001. return (int8x8_t)__builtin_neon_vpaddv8qi (__a, __b);
  3002. }
  3003. __extension__ extern __inline int16x4_t
  3004. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3005. vpadd_s16 (int16x4_t __a, int16x4_t __b)
  3006. {
  3007. return (int16x4_t)__builtin_neon_vpaddv4hi (__a, __b);
  3008. }
  3009. __extension__ extern __inline int32x2_t
  3010. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3011. vpadd_s32 (int32x2_t __a, int32x2_t __b)
  3012. {
  3013. return (int32x2_t)__builtin_neon_vpaddv2si (__a, __b);
  3014. }
  3015. __extension__ extern __inline float32x2_t
  3016. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3017. vpadd_f32 (float32x2_t __a, float32x2_t __b)
  3018. {
  3019. return (float32x2_t)__builtin_neon_vpaddv2sf (__a, __b);
  3020. }
  3021. __extension__ extern __inline uint8x8_t
  3022. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3023. vpadd_u8 (uint8x8_t __a, uint8x8_t __b)
  3024. {
  3025. return (uint8x8_t)__builtin_neon_vpaddv8qi ((int8x8_t) __a, (int8x8_t) __b);
  3026. }
  3027. __extension__ extern __inline uint16x4_t
  3028. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3029. vpadd_u16 (uint16x4_t __a, uint16x4_t __b)
  3030. {
  3031. return (uint16x4_t)__builtin_neon_vpaddv4hi ((int16x4_t) __a, (int16x4_t) __b);
  3032. }
  3033. __extension__ extern __inline uint32x2_t
  3034. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3035. vpadd_u32 (uint32x2_t __a, uint32x2_t __b)
  3036. {
  3037. return (uint32x2_t)__builtin_neon_vpaddv2si ((int32x2_t) __a, (int32x2_t) __b);
  3038. }
  3039. __extension__ extern __inline int16x4_t
  3040. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3041. vpaddl_s8 (int8x8_t __a)
  3042. {
  3043. return (int16x4_t)__builtin_neon_vpaddlsv8qi (__a);
  3044. }
  3045. __extension__ extern __inline int32x2_t
  3046. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3047. vpaddl_s16 (int16x4_t __a)
  3048. {
  3049. return (int32x2_t)__builtin_neon_vpaddlsv4hi (__a);
  3050. }
  3051. __extension__ extern __inline int64x1_t
  3052. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3053. vpaddl_s32 (int32x2_t __a)
  3054. {
  3055. return (int64x1_t)__builtin_neon_vpaddlsv2si (__a);
  3056. }
  3057. __extension__ extern __inline uint16x4_t
  3058. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3059. vpaddl_u8 (uint8x8_t __a)
  3060. {
  3061. return (uint16x4_t)__builtin_neon_vpaddluv8qi ((int8x8_t) __a);
  3062. }
  3063. __extension__ extern __inline uint32x2_t
  3064. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3065. vpaddl_u16 (uint16x4_t __a)
  3066. {
  3067. return (uint32x2_t)__builtin_neon_vpaddluv4hi ((int16x4_t) __a);
  3068. }
  3069. __extension__ extern __inline uint64x1_t
  3070. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3071. vpaddl_u32 (uint32x2_t __a)
  3072. {
  3073. return (uint64x1_t)__builtin_neon_vpaddluv2si ((int32x2_t) __a);
  3074. }
  3075. __extension__ extern __inline int16x8_t
  3076. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3077. vpaddlq_s8 (int8x16_t __a)
  3078. {
  3079. return (int16x8_t)__builtin_neon_vpaddlsv16qi (__a);
  3080. }
  3081. __extension__ extern __inline int32x4_t
  3082. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3083. vpaddlq_s16 (int16x8_t __a)
  3084. {
  3085. return (int32x4_t)__builtin_neon_vpaddlsv8hi (__a);
  3086. }
  3087. __extension__ extern __inline int64x2_t
  3088. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3089. vpaddlq_s32 (int32x4_t __a)
  3090. {
  3091. return (int64x2_t)__builtin_neon_vpaddlsv4si (__a);
  3092. }
  3093. __extension__ extern __inline uint16x8_t
  3094. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3095. vpaddlq_u8 (uint8x16_t __a)
  3096. {
  3097. return (uint16x8_t)__builtin_neon_vpaddluv16qi ((int8x16_t) __a);
  3098. }
  3099. __extension__ extern __inline uint32x4_t
  3100. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3101. vpaddlq_u16 (uint16x8_t __a)
  3102. {
  3103. return (uint32x4_t)__builtin_neon_vpaddluv8hi ((int16x8_t) __a);
  3104. }
  3105. __extension__ extern __inline uint64x2_t
  3106. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3107. vpaddlq_u32 (uint32x4_t __a)
  3108. {
  3109. return (uint64x2_t)__builtin_neon_vpaddluv4si ((int32x4_t) __a);
  3110. }
  3111. __extension__ extern __inline int16x4_t
  3112. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3113. vpadal_s8 (int16x4_t __a, int8x8_t __b)
  3114. {
  3115. return (int16x4_t)__builtin_neon_vpadalsv8qi (__a, __b);
  3116. }
  3117. __extension__ extern __inline int32x2_t
  3118. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3119. vpadal_s16 (int32x2_t __a, int16x4_t __b)
  3120. {
  3121. return (int32x2_t)__builtin_neon_vpadalsv4hi (__a, __b);
  3122. }
  3123. __extension__ extern __inline int64x1_t
  3124. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3125. vpadal_s32 (int64x1_t __a, int32x2_t __b)
  3126. {
  3127. return (int64x1_t)__builtin_neon_vpadalsv2si (__a, __b);
  3128. }
  3129. __extension__ extern __inline uint16x4_t
  3130. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3131. vpadal_u8 (uint16x4_t __a, uint8x8_t __b)
  3132. {
  3133. return (uint16x4_t)__builtin_neon_vpadaluv8qi ((int16x4_t) __a, (int8x8_t) __b);
  3134. }
  3135. __extension__ extern __inline uint32x2_t
  3136. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3137. vpadal_u16 (uint32x2_t __a, uint16x4_t __b)
  3138. {
  3139. return (uint32x2_t)__builtin_neon_vpadaluv4hi ((int32x2_t) __a, (int16x4_t) __b);
  3140. }
  3141. __extension__ extern __inline uint64x1_t
  3142. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3143. vpadal_u32 (uint64x1_t __a, uint32x2_t __b)
  3144. {
  3145. return (uint64x1_t)__builtin_neon_vpadaluv2si ((int64x1_t) __a, (int32x2_t) __b);
  3146. }
  3147. __extension__ extern __inline int16x8_t
  3148. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3149. vpadalq_s8 (int16x8_t __a, int8x16_t __b)
  3150. {
  3151. return (int16x8_t)__builtin_neon_vpadalsv16qi (__a, __b);
  3152. }
  3153. __extension__ extern __inline int32x4_t
  3154. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3155. vpadalq_s16 (int32x4_t __a, int16x8_t __b)
  3156. {
  3157. return (int32x4_t)__builtin_neon_vpadalsv8hi (__a, __b);
  3158. }
  3159. __extension__ extern __inline int64x2_t
  3160. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3161. vpadalq_s32 (int64x2_t __a, int32x4_t __b)
  3162. {
  3163. return (int64x2_t)__builtin_neon_vpadalsv4si (__a, __b);
  3164. }
  3165. __extension__ extern __inline uint16x8_t
  3166. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3167. vpadalq_u8 (uint16x8_t __a, uint8x16_t __b)
  3168. {
  3169. return (uint16x8_t)__builtin_neon_vpadaluv16qi ((int16x8_t) __a, (int8x16_t) __b);
  3170. }
  3171. __extension__ extern __inline uint32x4_t
  3172. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3173. vpadalq_u16 (uint32x4_t __a, uint16x8_t __b)
  3174. {
  3175. return (uint32x4_t)__builtin_neon_vpadaluv8hi ((int32x4_t) __a, (int16x8_t) __b);
  3176. }
  3177. __extension__ extern __inline uint64x2_t
  3178. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3179. vpadalq_u32 (uint64x2_t __a, uint32x4_t __b)
  3180. {
  3181. return (uint64x2_t)__builtin_neon_vpadaluv4si ((int64x2_t) __a, (int32x4_t) __b);
  3182. }
  3183. __extension__ extern __inline int8x8_t
  3184. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3185. vpmax_s8 (int8x8_t __a, int8x8_t __b)
  3186. {
  3187. return (int8x8_t)__builtin_neon_vpmaxsv8qi (__a, __b);
  3188. }
  3189. __extension__ extern __inline int16x4_t
  3190. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3191. vpmax_s16 (int16x4_t __a, int16x4_t __b)
  3192. {
  3193. return (int16x4_t)__builtin_neon_vpmaxsv4hi (__a, __b);
  3194. }
  3195. __extension__ extern __inline int32x2_t
  3196. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3197. vpmax_s32 (int32x2_t __a, int32x2_t __b)
  3198. {
  3199. return (int32x2_t)__builtin_neon_vpmaxsv2si (__a, __b);
  3200. }
  3201. __extension__ extern __inline float32x2_t
  3202. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3203. vpmax_f32 (float32x2_t __a, float32x2_t __b)
  3204. {
  3205. return (float32x2_t)__builtin_neon_vpmaxfv2sf (__a, __b);
  3206. }
  3207. __extension__ extern __inline uint8x8_t
  3208. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3209. vpmax_u8 (uint8x8_t __a, uint8x8_t __b)
  3210. {
  3211. return (uint8x8_t)__builtin_neon_vpmaxuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  3212. }
  3213. __extension__ extern __inline uint16x4_t
  3214. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3215. vpmax_u16 (uint16x4_t __a, uint16x4_t __b)
  3216. {
  3217. return (uint16x4_t)__builtin_neon_vpmaxuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  3218. }
  3219. __extension__ extern __inline uint32x2_t
  3220. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3221. vpmax_u32 (uint32x2_t __a, uint32x2_t __b)
  3222. {
  3223. return (uint32x2_t)__builtin_neon_vpmaxuv2si ((int32x2_t) __a, (int32x2_t) __b);
  3224. }
  3225. __extension__ extern __inline int8x8_t
  3226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3227. vpmin_s8 (int8x8_t __a, int8x8_t __b)
  3228. {
  3229. return (int8x8_t)__builtin_neon_vpminsv8qi (__a, __b);
  3230. }
  3231. __extension__ extern __inline int16x4_t
  3232. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3233. vpmin_s16 (int16x4_t __a, int16x4_t __b)
  3234. {
  3235. return (int16x4_t)__builtin_neon_vpminsv4hi (__a, __b);
  3236. }
  3237. __extension__ extern __inline int32x2_t
  3238. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3239. vpmin_s32 (int32x2_t __a, int32x2_t __b)
  3240. {
  3241. return (int32x2_t)__builtin_neon_vpminsv2si (__a, __b);
  3242. }
  3243. __extension__ extern __inline float32x2_t
  3244. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3245. vpmin_f32 (float32x2_t __a, float32x2_t __b)
  3246. {
  3247. return (float32x2_t)__builtin_neon_vpminfv2sf (__a, __b);
  3248. }
  3249. __extension__ extern __inline uint8x8_t
  3250. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3251. vpmin_u8 (uint8x8_t __a, uint8x8_t __b)
  3252. {
  3253. return (uint8x8_t)__builtin_neon_vpminuv8qi ((int8x8_t) __a, (int8x8_t) __b);
  3254. }
  3255. __extension__ extern __inline uint16x4_t
  3256. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3257. vpmin_u16 (uint16x4_t __a, uint16x4_t __b)
  3258. {
  3259. return (uint16x4_t)__builtin_neon_vpminuv4hi ((int16x4_t) __a, (int16x4_t) __b);
  3260. }
  3261. __extension__ extern __inline uint32x2_t
  3262. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3263. vpmin_u32 (uint32x2_t __a, uint32x2_t __b)
  3264. {
  3265. return (uint32x2_t)__builtin_neon_vpminuv2si ((int32x2_t) __a, (int32x2_t) __b);
  3266. }
  3267. __extension__ extern __inline float32x2_t
  3268. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3269. vrecps_f32 (float32x2_t __a, float32x2_t __b)
  3270. {
  3271. return (float32x2_t)__builtin_neon_vrecpsv2sf (__a, __b);
  3272. }
  3273. __extension__ extern __inline float32x4_t
  3274. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3275. vrecpsq_f32 (float32x4_t __a, float32x4_t __b)
  3276. {
  3277. return (float32x4_t)__builtin_neon_vrecpsv4sf (__a, __b);
  3278. }
  3279. __extension__ extern __inline float32x2_t
  3280. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3281. vrsqrts_f32 (float32x2_t __a, float32x2_t __b)
  3282. {
  3283. return (float32x2_t)__builtin_neon_vrsqrtsv2sf (__a, __b);
  3284. }
  3285. __extension__ extern __inline float32x4_t
  3286. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3287. vrsqrtsq_f32 (float32x4_t __a, float32x4_t __b)
  3288. {
  3289. return (float32x4_t)__builtin_neon_vrsqrtsv4sf (__a, __b);
  3290. }
  3291. __extension__ extern __inline int8x8_t
  3292. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3293. vshl_s8 (int8x8_t __a, int8x8_t __b)
  3294. {
  3295. return (int8x8_t)__builtin_neon_vshlsv8qi (__a, __b);
  3296. }
  3297. __extension__ extern __inline int16x4_t
  3298. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3299. vshl_s16 (int16x4_t __a, int16x4_t __b)
  3300. {
  3301. return (int16x4_t)__builtin_neon_vshlsv4hi (__a, __b);
  3302. }
  3303. __extension__ extern __inline int32x2_t
  3304. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3305. vshl_s32 (int32x2_t __a, int32x2_t __b)
  3306. {
  3307. return (int32x2_t)__builtin_neon_vshlsv2si (__a, __b);
  3308. }
  3309. __extension__ extern __inline int64x1_t
  3310. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3311. vshl_s64 (int64x1_t __a, int64x1_t __b)
  3312. {
  3313. return (int64x1_t)__builtin_neon_vshlsdi (__a, __b);
  3314. }
  3315. __extension__ extern __inline uint8x8_t
  3316. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3317. vshl_u8 (uint8x8_t __a, int8x8_t __b)
  3318. {
  3319. return (uint8x8_t)__builtin_neon_vshluv8qi ((int8x8_t) __a, __b);
  3320. }
  3321. __extension__ extern __inline uint16x4_t
  3322. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3323. vshl_u16 (uint16x4_t __a, int16x4_t __b)
  3324. {
  3325. return (uint16x4_t)__builtin_neon_vshluv4hi ((int16x4_t) __a, __b);
  3326. }
  3327. __extension__ extern __inline uint32x2_t
  3328. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3329. vshl_u32 (uint32x2_t __a, int32x2_t __b)
  3330. {
  3331. return (uint32x2_t)__builtin_neon_vshluv2si ((int32x2_t) __a, __b);
  3332. }
  3333. __extension__ extern __inline uint64x1_t
  3334. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3335. vshl_u64 (uint64x1_t __a, int64x1_t __b)
  3336. {
  3337. return (uint64x1_t)__builtin_neon_vshludi ((int64x1_t) __a, __b);
  3338. }
  3339. __extension__ extern __inline int8x16_t
  3340. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3341. vshlq_s8 (int8x16_t __a, int8x16_t __b)
  3342. {
  3343. return (int8x16_t)__builtin_neon_vshlsv16qi (__a, __b);
  3344. }
  3345. __extension__ extern __inline int16x8_t
  3346. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3347. vshlq_s16 (int16x8_t __a, int16x8_t __b)
  3348. {
  3349. return (int16x8_t)__builtin_neon_vshlsv8hi (__a, __b);
  3350. }
  3351. __extension__ extern __inline int32x4_t
  3352. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3353. vshlq_s32 (int32x4_t __a, int32x4_t __b)
  3354. {
  3355. return (int32x4_t)__builtin_neon_vshlsv4si (__a, __b);
  3356. }
  3357. __extension__ extern __inline int64x2_t
  3358. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3359. vshlq_s64 (int64x2_t __a, int64x2_t __b)
  3360. {
  3361. return (int64x2_t)__builtin_neon_vshlsv2di (__a, __b);
  3362. }
  3363. __extension__ extern __inline uint8x16_t
  3364. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3365. vshlq_u8 (uint8x16_t __a, int8x16_t __b)
  3366. {
  3367. return (uint8x16_t)__builtin_neon_vshluv16qi ((int8x16_t) __a, __b);
  3368. }
  3369. __extension__ extern __inline uint16x8_t
  3370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3371. vshlq_u16 (uint16x8_t __a, int16x8_t __b)
  3372. {
  3373. return (uint16x8_t)__builtin_neon_vshluv8hi ((int16x8_t) __a, __b);
  3374. }
  3375. __extension__ extern __inline uint32x4_t
  3376. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3377. vshlq_u32 (uint32x4_t __a, int32x4_t __b)
  3378. {
  3379. return (uint32x4_t)__builtin_neon_vshluv4si ((int32x4_t) __a, __b);
  3380. }
  3381. __extension__ extern __inline uint64x2_t
  3382. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3383. vshlq_u64 (uint64x2_t __a, int64x2_t __b)
  3384. {
  3385. return (uint64x2_t)__builtin_neon_vshluv2di ((int64x2_t) __a, __b);
  3386. }
  3387. __extension__ extern __inline int8x8_t
  3388. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3389. vrshl_s8 (int8x8_t __a, int8x8_t __b)
  3390. {
  3391. return (int8x8_t)__builtin_neon_vrshlsv8qi (__a, __b);
  3392. }
  3393. __extension__ extern __inline int16x4_t
  3394. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3395. vrshl_s16 (int16x4_t __a, int16x4_t __b)
  3396. {
  3397. return (int16x4_t)__builtin_neon_vrshlsv4hi (__a, __b);
  3398. }
  3399. __extension__ extern __inline int32x2_t
  3400. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3401. vrshl_s32 (int32x2_t __a, int32x2_t __b)
  3402. {
  3403. return (int32x2_t)__builtin_neon_vrshlsv2si (__a, __b);
  3404. }
  3405. __extension__ extern __inline int64x1_t
  3406. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3407. vrshl_s64 (int64x1_t __a, int64x1_t __b)
  3408. {
  3409. return (int64x1_t)__builtin_neon_vrshlsdi (__a, __b);
  3410. }
  3411. __extension__ extern __inline uint8x8_t
  3412. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3413. vrshl_u8 (uint8x8_t __a, int8x8_t __b)
  3414. {
  3415. return (uint8x8_t)__builtin_neon_vrshluv8qi ((int8x8_t) __a, __b);
  3416. }
  3417. __extension__ extern __inline uint16x4_t
  3418. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3419. vrshl_u16 (uint16x4_t __a, int16x4_t __b)
  3420. {
  3421. return (uint16x4_t)__builtin_neon_vrshluv4hi ((int16x4_t) __a, __b);
  3422. }
  3423. __extension__ extern __inline uint32x2_t
  3424. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3425. vrshl_u32 (uint32x2_t __a, int32x2_t __b)
  3426. {
  3427. return (uint32x2_t)__builtin_neon_vrshluv2si ((int32x2_t) __a, __b);
  3428. }
  3429. __extension__ extern __inline uint64x1_t
  3430. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3431. vrshl_u64 (uint64x1_t __a, int64x1_t __b)
  3432. {
  3433. return (uint64x1_t)__builtin_neon_vrshludi ((int64x1_t) __a, __b);
  3434. }
  3435. __extension__ extern __inline int8x16_t
  3436. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3437. vrshlq_s8 (int8x16_t __a, int8x16_t __b)
  3438. {
  3439. return (int8x16_t)__builtin_neon_vrshlsv16qi (__a, __b);
  3440. }
  3441. __extension__ extern __inline int16x8_t
  3442. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3443. vrshlq_s16 (int16x8_t __a, int16x8_t __b)
  3444. {
  3445. return (int16x8_t)__builtin_neon_vrshlsv8hi (__a, __b);
  3446. }
  3447. __extension__ extern __inline int32x4_t
  3448. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3449. vrshlq_s32 (int32x4_t __a, int32x4_t __b)
  3450. {
  3451. return (int32x4_t)__builtin_neon_vrshlsv4si (__a, __b);
  3452. }
  3453. __extension__ extern __inline int64x2_t
  3454. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3455. vrshlq_s64 (int64x2_t __a, int64x2_t __b)
  3456. {
  3457. return (int64x2_t)__builtin_neon_vrshlsv2di (__a, __b);
  3458. }
  3459. __extension__ extern __inline uint8x16_t
  3460. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3461. vrshlq_u8 (uint8x16_t __a, int8x16_t __b)
  3462. {
  3463. return (uint8x16_t)__builtin_neon_vrshluv16qi ((int8x16_t) __a, __b);
  3464. }
  3465. __extension__ extern __inline uint16x8_t
  3466. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3467. vrshlq_u16 (uint16x8_t __a, int16x8_t __b)
  3468. {
  3469. return (uint16x8_t)__builtin_neon_vrshluv8hi ((int16x8_t) __a, __b);
  3470. }
  3471. __extension__ extern __inline uint32x4_t
  3472. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3473. vrshlq_u32 (uint32x4_t __a, int32x4_t __b)
  3474. {
  3475. return (uint32x4_t)__builtin_neon_vrshluv4si ((int32x4_t) __a, __b);
  3476. }
  3477. __extension__ extern __inline uint64x2_t
  3478. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3479. vrshlq_u64 (uint64x2_t __a, int64x2_t __b)
  3480. {
  3481. return (uint64x2_t)__builtin_neon_vrshluv2di ((int64x2_t) __a, __b);
  3482. }
  3483. __extension__ extern __inline int8x8_t
  3484. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3485. vqshl_s8 (int8x8_t __a, int8x8_t __b)
  3486. {
  3487. return (int8x8_t)__builtin_neon_vqshlsv8qi (__a, __b);
  3488. }
  3489. __extension__ extern __inline int16x4_t
  3490. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3491. vqshl_s16 (int16x4_t __a, int16x4_t __b)
  3492. {
  3493. return (int16x4_t)__builtin_neon_vqshlsv4hi (__a, __b);
  3494. }
  3495. __extension__ extern __inline int32x2_t
  3496. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3497. vqshl_s32 (int32x2_t __a, int32x2_t __b)
  3498. {
  3499. return (int32x2_t)__builtin_neon_vqshlsv2si (__a, __b);
  3500. }
  3501. __extension__ extern __inline int64x1_t
  3502. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3503. vqshl_s64 (int64x1_t __a, int64x1_t __b)
  3504. {
  3505. return (int64x1_t)__builtin_neon_vqshlsdi (__a, __b);
  3506. }
  3507. __extension__ extern __inline uint8x8_t
  3508. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3509. vqshl_u8 (uint8x8_t __a, int8x8_t __b)
  3510. {
  3511. return (uint8x8_t)__builtin_neon_vqshluv8qi ((int8x8_t) __a, __b);
  3512. }
  3513. __extension__ extern __inline uint16x4_t
  3514. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3515. vqshl_u16 (uint16x4_t __a, int16x4_t __b)
  3516. {
  3517. return (uint16x4_t)__builtin_neon_vqshluv4hi ((int16x4_t) __a, __b);
  3518. }
  3519. __extension__ extern __inline uint32x2_t
  3520. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3521. vqshl_u32 (uint32x2_t __a, int32x2_t __b)
  3522. {
  3523. return (uint32x2_t)__builtin_neon_vqshluv2si ((int32x2_t) __a, __b);
  3524. }
  3525. __extension__ extern __inline uint64x1_t
  3526. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3527. vqshl_u64 (uint64x1_t __a, int64x1_t __b)
  3528. {
  3529. return (uint64x1_t)__builtin_neon_vqshludi ((int64x1_t) __a, __b);
  3530. }
  3531. __extension__ extern __inline int8x16_t
  3532. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3533. vqshlq_s8 (int8x16_t __a, int8x16_t __b)
  3534. {
  3535. return (int8x16_t)__builtin_neon_vqshlsv16qi (__a, __b);
  3536. }
  3537. __extension__ extern __inline int16x8_t
  3538. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3539. vqshlq_s16 (int16x8_t __a, int16x8_t __b)
  3540. {
  3541. return (int16x8_t)__builtin_neon_vqshlsv8hi (__a, __b);
  3542. }
  3543. __extension__ extern __inline int32x4_t
  3544. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3545. vqshlq_s32 (int32x4_t __a, int32x4_t __b)
  3546. {
  3547. return (int32x4_t)__builtin_neon_vqshlsv4si (__a, __b);
  3548. }
  3549. __extension__ extern __inline int64x2_t
  3550. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3551. vqshlq_s64 (int64x2_t __a, int64x2_t __b)
  3552. {
  3553. return (int64x2_t)__builtin_neon_vqshlsv2di (__a, __b);
  3554. }
  3555. __extension__ extern __inline uint8x16_t
  3556. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3557. vqshlq_u8 (uint8x16_t __a, int8x16_t __b)
  3558. {
  3559. return (uint8x16_t)__builtin_neon_vqshluv16qi ((int8x16_t) __a, __b);
  3560. }
  3561. __extension__ extern __inline uint16x8_t
  3562. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3563. vqshlq_u16 (uint16x8_t __a, int16x8_t __b)
  3564. {
  3565. return (uint16x8_t)__builtin_neon_vqshluv8hi ((int16x8_t) __a, __b);
  3566. }
  3567. __extension__ extern __inline uint32x4_t
  3568. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3569. vqshlq_u32 (uint32x4_t __a, int32x4_t __b)
  3570. {
  3571. return (uint32x4_t)__builtin_neon_vqshluv4si ((int32x4_t) __a, __b);
  3572. }
  3573. __extension__ extern __inline uint64x2_t
  3574. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3575. vqshlq_u64 (uint64x2_t __a, int64x2_t __b)
  3576. {
  3577. return (uint64x2_t)__builtin_neon_vqshluv2di ((int64x2_t) __a, __b);
  3578. }
  3579. __extension__ extern __inline int8x8_t
  3580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3581. vqrshl_s8 (int8x8_t __a, int8x8_t __b)
  3582. {
  3583. return (int8x8_t)__builtin_neon_vqrshlsv8qi (__a, __b);
  3584. }
  3585. __extension__ extern __inline int16x4_t
  3586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3587. vqrshl_s16 (int16x4_t __a, int16x4_t __b)
  3588. {
  3589. return (int16x4_t)__builtin_neon_vqrshlsv4hi (__a, __b);
  3590. }
  3591. __extension__ extern __inline int32x2_t
  3592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3593. vqrshl_s32 (int32x2_t __a, int32x2_t __b)
  3594. {
  3595. return (int32x2_t)__builtin_neon_vqrshlsv2si (__a, __b);
  3596. }
  3597. __extension__ extern __inline int64x1_t
  3598. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3599. vqrshl_s64 (int64x1_t __a, int64x1_t __b)
  3600. {
  3601. return (int64x1_t)__builtin_neon_vqrshlsdi (__a, __b);
  3602. }
  3603. __extension__ extern __inline uint8x8_t
  3604. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3605. vqrshl_u8 (uint8x8_t __a, int8x8_t __b)
  3606. {
  3607. return (uint8x8_t)__builtin_neon_vqrshluv8qi ((int8x8_t) __a, __b);
  3608. }
  3609. __extension__ extern __inline uint16x4_t
  3610. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3611. vqrshl_u16 (uint16x4_t __a, int16x4_t __b)
  3612. {
  3613. return (uint16x4_t)__builtin_neon_vqrshluv4hi ((int16x4_t) __a, __b);
  3614. }
  3615. __extension__ extern __inline uint32x2_t
  3616. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3617. vqrshl_u32 (uint32x2_t __a, int32x2_t __b)
  3618. {
  3619. return (uint32x2_t)__builtin_neon_vqrshluv2si ((int32x2_t) __a, __b);
  3620. }
  3621. __extension__ extern __inline uint64x1_t
  3622. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3623. vqrshl_u64 (uint64x1_t __a, int64x1_t __b)
  3624. {
  3625. return (uint64x1_t)__builtin_neon_vqrshludi ((int64x1_t) __a, __b);
  3626. }
  3627. __extension__ extern __inline int8x16_t
  3628. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3629. vqrshlq_s8 (int8x16_t __a, int8x16_t __b)
  3630. {
  3631. return (int8x16_t)__builtin_neon_vqrshlsv16qi (__a, __b);
  3632. }
  3633. __extension__ extern __inline int16x8_t
  3634. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3635. vqrshlq_s16 (int16x8_t __a, int16x8_t __b)
  3636. {
  3637. return (int16x8_t)__builtin_neon_vqrshlsv8hi (__a, __b);
  3638. }
  3639. __extension__ extern __inline int32x4_t
  3640. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3641. vqrshlq_s32 (int32x4_t __a, int32x4_t __b)
  3642. {
  3643. return (int32x4_t)__builtin_neon_vqrshlsv4si (__a, __b);
  3644. }
  3645. __extension__ extern __inline int64x2_t
  3646. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3647. vqrshlq_s64 (int64x2_t __a, int64x2_t __b)
  3648. {
  3649. return (int64x2_t)__builtin_neon_vqrshlsv2di (__a, __b);
  3650. }
  3651. __extension__ extern __inline uint8x16_t
  3652. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3653. vqrshlq_u8 (uint8x16_t __a, int8x16_t __b)
  3654. {
  3655. return (uint8x16_t)__builtin_neon_vqrshluv16qi ((int8x16_t) __a, __b);
  3656. }
  3657. __extension__ extern __inline uint16x8_t
  3658. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3659. vqrshlq_u16 (uint16x8_t __a, int16x8_t __b)
  3660. {
  3661. return (uint16x8_t)__builtin_neon_vqrshluv8hi ((int16x8_t) __a, __b);
  3662. }
  3663. __extension__ extern __inline uint32x4_t
  3664. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3665. vqrshlq_u32 (uint32x4_t __a, int32x4_t __b)
  3666. {
  3667. return (uint32x4_t)__builtin_neon_vqrshluv4si ((int32x4_t) __a, __b);
  3668. }
  3669. __extension__ extern __inline uint64x2_t
  3670. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3671. vqrshlq_u64 (uint64x2_t __a, int64x2_t __b)
  3672. {
  3673. return (uint64x2_t)__builtin_neon_vqrshluv2di ((int64x2_t) __a, __b);
  3674. }
  3675. __extension__ extern __inline int8x8_t
  3676. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3677. vshr_n_s8 (int8x8_t __a, const int __b)
  3678. {
  3679. return (int8x8_t)__builtin_neon_vshrs_nv8qi (__a, __b);
  3680. }
  3681. __extension__ extern __inline int16x4_t
  3682. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3683. vshr_n_s16 (int16x4_t __a, const int __b)
  3684. {
  3685. return (int16x4_t)__builtin_neon_vshrs_nv4hi (__a, __b);
  3686. }
  3687. __extension__ extern __inline int32x2_t
  3688. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3689. vshr_n_s32 (int32x2_t __a, const int __b)
  3690. {
  3691. return (int32x2_t)__builtin_neon_vshrs_nv2si (__a, __b);
  3692. }
  3693. __extension__ extern __inline int64x1_t
  3694. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3695. vshr_n_s64 (int64x1_t __a, const int __b)
  3696. {
  3697. return (int64x1_t)__builtin_neon_vshrs_ndi (__a, __b);
  3698. }
  3699. __extension__ extern __inline uint8x8_t
  3700. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3701. vshr_n_u8 (uint8x8_t __a, const int __b)
  3702. {
  3703. return (uint8x8_t)__builtin_neon_vshru_nv8qi ((int8x8_t) __a, __b);
  3704. }
  3705. __extension__ extern __inline uint16x4_t
  3706. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3707. vshr_n_u16 (uint16x4_t __a, const int __b)
  3708. {
  3709. return (uint16x4_t)__builtin_neon_vshru_nv4hi ((int16x4_t) __a, __b);
  3710. }
  3711. __extension__ extern __inline uint32x2_t
  3712. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3713. vshr_n_u32 (uint32x2_t __a, const int __b)
  3714. {
  3715. return (uint32x2_t)__builtin_neon_vshru_nv2si ((int32x2_t) __a, __b);
  3716. }
  3717. __extension__ extern __inline uint64x1_t
  3718. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3719. vshr_n_u64 (uint64x1_t __a, const int __b)
  3720. {
  3721. return (uint64x1_t)__builtin_neon_vshru_ndi ((int64x1_t) __a, __b);
  3722. }
  3723. __extension__ extern __inline int8x16_t
  3724. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3725. vshrq_n_s8 (int8x16_t __a, const int __b)
  3726. {
  3727. return (int8x16_t)__builtin_neon_vshrs_nv16qi (__a, __b);
  3728. }
  3729. __extension__ extern __inline int16x8_t
  3730. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3731. vshrq_n_s16 (int16x8_t __a, const int __b)
  3732. {
  3733. return (int16x8_t)__builtin_neon_vshrs_nv8hi (__a, __b);
  3734. }
  3735. __extension__ extern __inline int32x4_t
  3736. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3737. vshrq_n_s32 (int32x4_t __a, const int __b)
  3738. {
  3739. return (int32x4_t)__builtin_neon_vshrs_nv4si (__a, __b);
  3740. }
  3741. __extension__ extern __inline int64x2_t
  3742. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3743. vshrq_n_s64 (int64x2_t __a, const int __b)
  3744. {
  3745. return (int64x2_t)__builtin_neon_vshrs_nv2di (__a, __b);
  3746. }
  3747. __extension__ extern __inline uint8x16_t
  3748. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3749. vshrq_n_u8 (uint8x16_t __a, const int __b)
  3750. {
  3751. return (uint8x16_t)__builtin_neon_vshru_nv16qi ((int8x16_t) __a, __b);
  3752. }
  3753. __extension__ extern __inline uint16x8_t
  3754. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3755. vshrq_n_u16 (uint16x8_t __a, const int __b)
  3756. {
  3757. return (uint16x8_t)__builtin_neon_vshru_nv8hi ((int16x8_t) __a, __b);
  3758. }
  3759. __extension__ extern __inline uint32x4_t
  3760. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3761. vshrq_n_u32 (uint32x4_t __a, const int __b)
  3762. {
  3763. return (uint32x4_t)__builtin_neon_vshru_nv4si ((int32x4_t) __a, __b);
  3764. }
  3765. __extension__ extern __inline uint64x2_t
  3766. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3767. vshrq_n_u64 (uint64x2_t __a, const int __b)
  3768. {
  3769. return (uint64x2_t)__builtin_neon_vshru_nv2di ((int64x2_t) __a, __b);
  3770. }
  3771. __extension__ extern __inline int8x8_t
  3772. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3773. vrshr_n_s8 (int8x8_t __a, const int __b)
  3774. {
  3775. return (int8x8_t)__builtin_neon_vrshrs_nv8qi (__a, __b);
  3776. }
  3777. __extension__ extern __inline int16x4_t
  3778. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3779. vrshr_n_s16 (int16x4_t __a, const int __b)
  3780. {
  3781. return (int16x4_t)__builtin_neon_vrshrs_nv4hi (__a, __b);
  3782. }
  3783. __extension__ extern __inline int32x2_t
  3784. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3785. vrshr_n_s32 (int32x2_t __a, const int __b)
  3786. {
  3787. return (int32x2_t)__builtin_neon_vrshrs_nv2si (__a, __b);
  3788. }
  3789. __extension__ extern __inline int64x1_t
  3790. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3791. vrshr_n_s64 (int64x1_t __a, const int __b)
  3792. {
  3793. return (int64x1_t)__builtin_neon_vrshrs_ndi (__a, __b);
  3794. }
  3795. __extension__ extern __inline uint8x8_t
  3796. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3797. vrshr_n_u8 (uint8x8_t __a, const int __b)
  3798. {
  3799. return (uint8x8_t)__builtin_neon_vrshru_nv8qi ((int8x8_t) __a, __b);
  3800. }
  3801. __extension__ extern __inline uint16x4_t
  3802. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3803. vrshr_n_u16 (uint16x4_t __a, const int __b)
  3804. {
  3805. return (uint16x4_t)__builtin_neon_vrshru_nv4hi ((int16x4_t) __a, __b);
  3806. }
  3807. __extension__ extern __inline uint32x2_t
  3808. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3809. vrshr_n_u32 (uint32x2_t __a, const int __b)
  3810. {
  3811. return (uint32x2_t)__builtin_neon_vrshru_nv2si ((int32x2_t) __a, __b);
  3812. }
  3813. __extension__ extern __inline uint64x1_t
  3814. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3815. vrshr_n_u64 (uint64x1_t __a, const int __b)
  3816. {
  3817. return (uint64x1_t)__builtin_neon_vrshru_ndi ((int64x1_t) __a, __b);
  3818. }
  3819. __extension__ extern __inline int8x16_t
  3820. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3821. vrshrq_n_s8 (int8x16_t __a, const int __b)
  3822. {
  3823. return (int8x16_t)__builtin_neon_vrshrs_nv16qi (__a, __b);
  3824. }
  3825. __extension__ extern __inline int16x8_t
  3826. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3827. vrshrq_n_s16 (int16x8_t __a, const int __b)
  3828. {
  3829. return (int16x8_t)__builtin_neon_vrshrs_nv8hi (__a, __b);
  3830. }
  3831. __extension__ extern __inline int32x4_t
  3832. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3833. vrshrq_n_s32 (int32x4_t __a, const int __b)
  3834. {
  3835. return (int32x4_t)__builtin_neon_vrshrs_nv4si (__a, __b);
  3836. }
  3837. __extension__ extern __inline int64x2_t
  3838. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3839. vrshrq_n_s64 (int64x2_t __a, const int __b)
  3840. {
  3841. return (int64x2_t)__builtin_neon_vrshrs_nv2di (__a, __b);
  3842. }
  3843. __extension__ extern __inline uint8x16_t
  3844. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3845. vrshrq_n_u8 (uint8x16_t __a, const int __b)
  3846. {
  3847. return (uint8x16_t)__builtin_neon_vrshru_nv16qi ((int8x16_t) __a, __b);
  3848. }
  3849. __extension__ extern __inline uint16x8_t
  3850. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3851. vrshrq_n_u16 (uint16x8_t __a, const int __b)
  3852. {
  3853. return (uint16x8_t)__builtin_neon_vrshru_nv8hi ((int16x8_t) __a, __b);
  3854. }
  3855. __extension__ extern __inline uint32x4_t
  3856. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3857. vrshrq_n_u32 (uint32x4_t __a, const int __b)
  3858. {
  3859. return (uint32x4_t)__builtin_neon_vrshru_nv4si ((int32x4_t) __a, __b);
  3860. }
  3861. __extension__ extern __inline uint64x2_t
  3862. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3863. vrshrq_n_u64 (uint64x2_t __a, const int __b)
  3864. {
  3865. return (uint64x2_t)__builtin_neon_vrshru_nv2di ((int64x2_t) __a, __b);
  3866. }
  3867. __extension__ extern __inline int8x8_t
  3868. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3869. vshrn_n_s16 (int16x8_t __a, const int __b)
  3870. {
  3871. return (int8x8_t)__builtin_neon_vshrn_nv8hi (__a, __b);
  3872. }
  3873. __extension__ extern __inline int16x4_t
  3874. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3875. vshrn_n_s32 (int32x4_t __a, const int __b)
  3876. {
  3877. return (int16x4_t)__builtin_neon_vshrn_nv4si (__a, __b);
  3878. }
  3879. __extension__ extern __inline int32x2_t
  3880. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3881. vshrn_n_s64 (int64x2_t __a, const int __b)
  3882. {
  3883. return (int32x2_t)__builtin_neon_vshrn_nv2di (__a, __b);
  3884. }
  3885. __extension__ extern __inline uint8x8_t
  3886. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3887. vshrn_n_u16 (uint16x8_t __a, const int __b)
  3888. {
  3889. return (uint8x8_t)__builtin_neon_vshrn_nv8hi ((int16x8_t) __a, __b);
  3890. }
  3891. __extension__ extern __inline uint16x4_t
  3892. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3893. vshrn_n_u32 (uint32x4_t __a, const int __b)
  3894. {
  3895. return (uint16x4_t)__builtin_neon_vshrn_nv4si ((int32x4_t) __a, __b);
  3896. }
  3897. __extension__ extern __inline uint32x2_t
  3898. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3899. vshrn_n_u64 (uint64x2_t __a, const int __b)
  3900. {
  3901. return (uint32x2_t)__builtin_neon_vshrn_nv2di ((int64x2_t) __a, __b);
  3902. }
  3903. __extension__ extern __inline int8x8_t
  3904. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3905. vrshrn_n_s16 (int16x8_t __a, const int __b)
  3906. {
  3907. return (int8x8_t)__builtin_neon_vrshrn_nv8hi (__a, __b);
  3908. }
  3909. __extension__ extern __inline int16x4_t
  3910. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3911. vrshrn_n_s32 (int32x4_t __a, const int __b)
  3912. {
  3913. return (int16x4_t)__builtin_neon_vrshrn_nv4si (__a, __b);
  3914. }
  3915. __extension__ extern __inline int32x2_t
  3916. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3917. vrshrn_n_s64 (int64x2_t __a, const int __b)
  3918. {
  3919. return (int32x2_t)__builtin_neon_vrshrn_nv2di (__a, __b);
  3920. }
  3921. __extension__ extern __inline uint8x8_t
  3922. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3923. vrshrn_n_u16 (uint16x8_t __a, const int __b)
  3924. {
  3925. return (uint8x8_t)__builtin_neon_vrshrn_nv8hi ((int16x8_t) __a, __b);
  3926. }
  3927. __extension__ extern __inline uint16x4_t
  3928. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3929. vrshrn_n_u32 (uint32x4_t __a, const int __b)
  3930. {
  3931. return (uint16x4_t)__builtin_neon_vrshrn_nv4si ((int32x4_t) __a, __b);
  3932. }
  3933. __extension__ extern __inline uint32x2_t
  3934. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3935. vrshrn_n_u64 (uint64x2_t __a, const int __b)
  3936. {
  3937. return (uint32x2_t)__builtin_neon_vrshrn_nv2di ((int64x2_t) __a, __b);
  3938. }
  3939. __extension__ extern __inline int8x8_t
  3940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3941. vqshrn_n_s16 (int16x8_t __a, const int __b)
  3942. {
  3943. return (int8x8_t)__builtin_neon_vqshrns_nv8hi (__a, __b);
  3944. }
  3945. __extension__ extern __inline int16x4_t
  3946. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3947. vqshrn_n_s32 (int32x4_t __a, const int __b)
  3948. {
  3949. return (int16x4_t)__builtin_neon_vqshrns_nv4si (__a, __b);
  3950. }
  3951. __extension__ extern __inline int32x2_t
  3952. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3953. vqshrn_n_s64 (int64x2_t __a, const int __b)
  3954. {
  3955. return (int32x2_t)__builtin_neon_vqshrns_nv2di (__a, __b);
  3956. }
  3957. __extension__ extern __inline uint8x8_t
  3958. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3959. vqshrn_n_u16 (uint16x8_t __a, const int __b)
  3960. {
  3961. return (uint8x8_t)__builtin_neon_vqshrnu_nv8hi ((int16x8_t) __a, __b);
  3962. }
  3963. __extension__ extern __inline uint16x4_t
  3964. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3965. vqshrn_n_u32 (uint32x4_t __a, const int __b)
  3966. {
  3967. return (uint16x4_t)__builtin_neon_vqshrnu_nv4si ((int32x4_t) __a, __b);
  3968. }
  3969. __extension__ extern __inline uint32x2_t
  3970. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3971. vqshrn_n_u64 (uint64x2_t __a, const int __b)
  3972. {
  3973. return (uint32x2_t)__builtin_neon_vqshrnu_nv2di ((int64x2_t) __a, __b);
  3974. }
  3975. __extension__ extern __inline int8x8_t
  3976. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3977. vqrshrn_n_s16 (int16x8_t __a, const int __b)
  3978. {
  3979. return (int8x8_t)__builtin_neon_vqrshrns_nv8hi (__a, __b);
  3980. }
  3981. __extension__ extern __inline int16x4_t
  3982. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3983. vqrshrn_n_s32 (int32x4_t __a, const int __b)
  3984. {
  3985. return (int16x4_t)__builtin_neon_vqrshrns_nv4si (__a, __b);
  3986. }
  3987. __extension__ extern __inline int32x2_t
  3988. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3989. vqrshrn_n_s64 (int64x2_t __a, const int __b)
  3990. {
  3991. return (int32x2_t)__builtin_neon_vqrshrns_nv2di (__a, __b);
  3992. }
  3993. __extension__ extern __inline uint8x8_t
  3994. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  3995. vqrshrn_n_u16 (uint16x8_t __a, const int __b)
  3996. {
  3997. return (uint8x8_t)__builtin_neon_vqrshrnu_nv8hi ((int16x8_t) __a, __b);
  3998. }
  3999. __extension__ extern __inline uint16x4_t
  4000. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4001. vqrshrn_n_u32 (uint32x4_t __a, const int __b)
  4002. {
  4003. return (uint16x4_t)__builtin_neon_vqrshrnu_nv4si ((int32x4_t) __a, __b);
  4004. }
  4005. __extension__ extern __inline uint32x2_t
  4006. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4007. vqrshrn_n_u64 (uint64x2_t __a, const int __b)
  4008. {
  4009. return (uint32x2_t)__builtin_neon_vqrshrnu_nv2di ((int64x2_t) __a, __b);
  4010. }
  4011. __extension__ extern __inline uint8x8_t
  4012. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4013. vqshrun_n_s16 (int16x8_t __a, const int __b)
  4014. {
  4015. return (uint8x8_t)__builtin_neon_vqshrun_nv8hi (__a, __b);
  4016. }
  4017. __extension__ extern __inline uint16x4_t
  4018. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4019. vqshrun_n_s32 (int32x4_t __a, const int __b)
  4020. {
  4021. return (uint16x4_t)__builtin_neon_vqshrun_nv4si (__a, __b);
  4022. }
  4023. __extension__ extern __inline uint32x2_t
  4024. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4025. vqshrun_n_s64 (int64x2_t __a, const int __b)
  4026. {
  4027. return (uint32x2_t)__builtin_neon_vqshrun_nv2di (__a, __b);
  4028. }
  4029. __extension__ extern __inline uint8x8_t
  4030. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4031. vqrshrun_n_s16 (int16x8_t __a, const int __b)
  4032. {
  4033. return (uint8x8_t)__builtin_neon_vqrshrun_nv8hi (__a, __b);
  4034. }
  4035. __extension__ extern __inline uint16x4_t
  4036. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4037. vqrshrun_n_s32 (int32x4_t __a, const int __b)
  4038. {
  4039. return (uint16x4_t)__builtin_neon_vqrshrun_nv4si (__a, __b);
  4040. }
  4041. __extension__ extern __inline uint32x2_t
  4042. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4043. vqrshrun_n_s64 (int64x2_t __a, const int __b)
  4044. {
  4045. return (uint32x2_t)__builtin_neon_vqrshrun_nv2di (__a, __b);
  4046. }
  4047. __extension__ extern __inline int8x8_t
  4048. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4049. vshl_n_s8 (int8x8_t __a, const int __b)
  4050. {
  4051. return (int8x8_t)__builtin_neon_vshl_nv8qi (__a, __b);
  4052. }
  4053. __extension__ extern __inline int16x4_t
  4054. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4055. vshl_n_s16 (int16x4_t __a, const int __b)
  4056. {
  4057. return (int16x4_t)__builtin_neon_vshl_nv4hi (__a, __b);
  4058. }
  4059. __extension__ extern __inline int32x2_t
  4060. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4061. vshl_n_s32 (int32x2_t __a, const int __b)
  4062. {
  4063. return (int32x2_t)__builtin_neon_vshl_nv2si (__a, __b);
  4064. }
  4065. __extension__ extern __inline int64x1_t
  4066. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4067. vshl_n_s64 (int64x1_t __a, const int __b)
  4068. {
  4069. return (int64x1_t)__builtin_neon_vshl_ndi (__a, __b);
  4070. }
  4071. __extension__ extern __inline uint8x8_t
  4072. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4073. vshl_n_u8 (uint8x8_t __a, const int __b)
  4074. {
  4075. return (uint8x8_t)__builtin_neon_vshl_nv8qi ((int8x8_t) __a, __b);
  4076. }
  4077. __extension__ extern __inline uint16x4_t
  4078. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4079. vshl_n_u16 (uint16x4_t __a, const int __b)
  4080. {
  4081. return (uint16x4_t)__builtin_neon_vshl_nv4hi ((int16x4_t) __a, __b);
  4082. }
  4083. __extension__ extern __inline uint32x2_t
  4084. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4085. vshl_n_u32 (uint32x2_t __a, const int __b)
  4086. {
  4087. return (uint32x2_t)__builtin_neon_vshl_nv2si ((int32x2_t) __a, __b);
  4088. }
  4089. __extension__ extern __inline uint64x1_t
  4090. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4091. vshl_n_u64 (uint64x1_t __a, const int __b)
  4092. {
  4093. return (uint64x1_t)__builtin_neon_vshl_ndi ((int64x1_t) __a, __b);
  4094. }
  4095. __extension__ extern __inline int8x16_t
  4096. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4097. vshlq_n_s8 (int8x16_t __a, const int __b)
  4098. {
  4099. return (int8x16_t)__builtin_neon_vshl_nv16qi (__a, __b);
  4100. }
  4101. __extension__ extern __inline int16x8_t
  4102. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4103. vshlq_n_s16 (int16x8_t __a, const int __b)
  4104. {
  4105. return (int16x8_t)__builtin_neon_vshl_nv8hi (__a, __b);
  4106. }
  4107. __extension__ extern __inline int32x4_t
  4108. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4109. vshlq_n_s32 (int32x4_t __a, const int __b)
  4110. {
  4111. return (int32x4_t)__builtin_neon_vshl_nv4si (__a, __b);
  4112. }
  4113. __extension__ extern __inline int64x2_t
  4114. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4115. vshlq_n_s64 (int64x2_t __a, const int __b)
  4116. {
  4117. return (int64x2_t)__builtin_neon_vshl_nv2di (__a, __b);
  4118. }
  4119. __extension__ extern __inline uint8x16_t
  4120. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4121. vshlq_n_u8 (uint8x16_t __a, const int __b)
  4122. {
  4123. return (uint8x16_t)__builtin_neon_vshl_nv16qi ((int8x16_t) __a, __b);
  4124. }
  4125. __extension__ extern __inline uint16x8_t
  4126. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4127. vshlq_n_u16 (uint16x8_t __a, const int __b)
  4128. {
  4129. return (uint16x8_t)__builtin_neon_vshl_nv8hi ((int16x8_t) __a, __b);
  4130. }
  4131. __extension__ extern __inline uint32x4_t
  4132. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4133. vshlq_n_u32 (uint32x4_t __a, const int __b)
  4134. {
  4135. return (uint32x4_t)__builtin_neon_vshl_nv4si ((int32x4_t) __a, __b);
  4136. }
  4137. __extension__ extern __inline uint64x2_t
  4138. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4139. vshlq_n_u64 (uint64x2_t __a, const int __b)
  4140. {
  4141. return (uint64x2_t)__builtin_neon_vshl_nv2di ((int64x2_t) __a, __b);
  4142. }
  4143. __extension__ extern __inline int8x8_t
  4144. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4145. vqshl_n_s8 (int8x8_t __a, const int __b)
  4146. {
  4147. return (int8x8_t)__builtin_neon_vqshl_s_nv8qi (__a, __b);
  4148. }
  4149. __extension__ extern __inline int16x4_t
  4150. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4151. vqshl_n_s16 (int16x4_t __a, const int __b)
  4152. {
  4153. return (int16x4_t)__builtin_neon_vqshl_s_nv4hi (__a, __b);
  4154. }
  4155. __extension__ extern __inline int32x2_t
  4156. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4157. vqshl_n_s32 (int32x2_t __a, const int __b)
  4158. {
  4159. return (int32x2_t)__builtin_neon_vqshl_s_nv2si (__a, __b);
  4160. }
  4161. __extension__ extern __inline int64x1_t
  4162. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4163. vqshl_n_s64 (int64x1_t __a, const int __b)
  4164. {
  4165. return (int64x1_t)__builtin_neon_vqshl_s_ndi (__a, __b);
  4166. }
  4167. __extension__ extern __inline uint8x8_t
  4168. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4169. vqshl_n_u8 (uint8x8_t __a, const int __b)
  4170. {
  4171. return (uint8x8_t)__builtin_neon_vqshl_u_nv8qi ((int8x8_t) __a, __b);
  4172. }
  4173. __extension__ extern __inline uint16x4_t
  4174. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4175. vqshl_n_u16 (uint16x4_t __a, const int __b)
  4176. {
  4177. return (uint16x4_t)__builtin_neon_vqshl_u_nv4hi ((int16x4_t) __a, __b);
  4178. }
  4179. __extension__ extern __inline uint32x2_t
  4180. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4181. vqshl_n_u32 (uint32x2_t __a, const int __b)
  4182. {
  4183. return (uint32x2_t)__builtin_neon_vqshl_u_nv2si ((int32x2_t) __a, __b);
  4184. }
  4185. __extension__ extern __inline uint64x1_t
  4186. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4187. vqshl_n_u64 (uint64x1_t __a, const int __b)
  4188. {
  4189. return (uint64x1_t)__builtin_neon_vqshl_u_ndi ((int64x1_t) __a, __b);
  4190. }
  4191. __extension__ extern __inline int8x16_t
  4192. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4193. vqshlq_n_s8 (int8x16_t __a, const int __b)
  4194. {
  4195. return (int8x16_t)__builtin_neon_vqshl_s_nv16qi (__a, __b);
  4196. }
  4197. __extension__ extern __inline int16x8_t
  4198. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4199. vqshlq_n_s16 (int16x8_t __a, const int __b)
  4200. {
  4201. return (int16x8_t)__builtin_neon_vqshl_s_nv8hi (__a, __b);
  4202. }
  4203. __extension__ extern __inline int32x4_t
  4204. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4205. vqshlq_n_s32 (int32x4_t __a, const int __b)
  4206. {
  4207. return (int32x4_t)__builtin_neon_vqshl_s_nv4si (__a, __b);
  4208. }
  4209. __extension__ extern __inline int64x2_t
  4210. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4211. vqshlq_n_s64 (int64x2_t __a, const int __b)
  4212. {
  4213. return (int64x2_t)__builtin_neon_vqshl_s_nv2di (__a, __b);
  4214. }
  4215. __extension__ extern __inline uint8x16_t
  4216. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4217. vqshlq_n_u8 (uint8x16_t __a, const int __b)
  4218. {
  4219. return (uint8x16_t)__builtin_neon_vqshl_u_nv16qi ((int8x16_t) __a, __b);
  4220. }
  4221. __extension__ extern __inline uint16x8_t
  4222. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4223. vqshlq_n_u16 (uint16x8_t __a, const int __b)
  4224. {
  4225. return (uint16x8_t)__builtin_neon_vqshl_u_nv8hi ((int16x8_t) __a, __b);
  4226. }
  4227. __extension__ extern __inline uint32x4_t
  4228. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4229. vqshlq_n_u32 (uint32x4_t __a, const int __b)
  4230. {
  4231. return (uint32x4_t)__builtin_neon_vqshl_u_nv4si ((int32x4_t) __a, __b);
  4232. }
  4233. __extension__ extern __inline uint64x2_t
  4234. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4235. vqshlq_n_u64 (uint64x2_t __a, const int __b)
  4236. {
  4237. return (uint64x2_t)__builtin_neon_vqshl_u_nv2di ((int64x2_t) __a, __b);
  4238. }
  4239. __extension__ extern __inline uint8x8_t
  4240. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4241. vqshlu_n_s8 (int8x8_t __a, const int __b)
  4242. {
  4243. return (uint8x8_t)__builtin_neon_vqshlu_nv8qi (__a, __b);
  4244. }
  4245. __extension__ extern __inline uint16x4_t
  4246. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4247. vqshlu_n_s16 (int16x4_t __a, const int __b)
  4248. {
  4249. return (uint16x4_t)__builtin_neon_vqshlu_nv4hi (__a, __b);
  4250. }
  4251. __extension__ extern __inline uint32x2_t
  4252. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4253. vqshlu_n_s32 (int32x2_t __a, const int __b)
  4254. {
  4255. return (uint32x2_t)__builtin_neon_vqshlu_nv2si (__a, __b);
  4256. }
  4257. __extension__ extern __inline uint64x1_t
  4258. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4259. vqshlu_n_s64 (int64x1_t __a, const int __b)
  4260. {
  4261. return (uint64x1_t)__builtin_neon_vqshlu_ndi (__a, __b);
  4262. }
  4263. __extension__ extern __inline uint8x16_t
  4264. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4265. vqshluq_n_s8 (int8x16_t __a, const int __b)
  4266. {
  4267. return (uint8x16_t)__builtin_neon_vqshlu_nv16qi (__a, __b);
  4268. }
  4269. __extension__ extern __inline uint16x8_t
  4270. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4271. vqshluq_n_s16 (int16x8_t __a, const int __b)
  4272. {
  4273. return (uint16x8_t)__builtin_neon_vqshlu_nv8hi (__a, __b);
  4274. }
  4275. __extension__ extern __inline uint32x4_t
  4276. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4277. vqshluq_n_s32 (int32x4_t __a, const int __b)
  4278. {
  4279. return (uint32x4_t)__builtin_neon_vqshlu_nv4si (__a, __b);
  4280. }
  4281. __extension__ extern __inline uint64x2_t
  4282. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4283. vqshluq_n_s64 (int64x2_t __a, const int __b)
  4284. {
  4285. return (uint64x2_t)__builtin_neon_vqshlu_nv2di (__a, __b);
  4286. }
  4287. __extension__ extern __inline int16x8_t
  4288. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4289. vshll_n_s8 (int8x8_t __a, const int __b)
  4290. {
  4291. return (int16x8_t)__builtin_neon_vshlls_nv8qi (__a, __b);
  4292. }
  4293. __extension__ extern __inline int32x4_t
  4294. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4295. vshll_n_s16 (int16x4_t __a, const int __b)
  4296. {
  4297. return (int32x4_t)__builtin_neon_vshlls_nv4hi (__a, __b);
  4298. }
  4299. __extension__ extern __inline int64x2_t
  4300. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4301. vshll_n_s32 (int32x2_t __a, const int __b)
  4302. {
  4303. return (int64x2_t)__builtin_neon_vshlls_nv2si (__a, __b);
  4304. }
  4305. __extension__ extern __inline uint16x8_t
  4306. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4307. vshll_n_u8 (uint8x8_t __a, const int __b)
  4308. {
  4309. return (uint16x8_t)__builtin_neon_vshllu_nv8qi ((int8x8_t) __a, __b);
  4310. }
  4311. __extension__ extern __inline uint32x4_t
  4312. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4313. vshll_n_u16 (uint16x4_t __a, const int __b)
  4314. {
  4315. return (uint32x4_t)__builtin_neon_vshllu_nv4hi ((int16x4_t) __a, __b);
  4316. }
  4317. __extension__ extern __inline uint64x2_t
  4318. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4319. vshll_n_u32 (uint32x2_t __a, const int __b)
  4320. {
  4321. return (uint64x2_t)__builtin_neon_vshllu_nv2si ((int32x2_t) __a, __b);
  4322. }
  4323. __extension__ extern __inline int8x8_t
  4324. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4325. vsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
  4326. {
  4327. return (int8x8_t)__builtin_neon_vsras_nv8qi (__a, __b, __c);
  4328. }
  4329. __extension__ extern __inline int16x4_t
  4330. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4331. vsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  4332. {
  4333. return (int16x4_t)__builtin_neon_vsras_nv4hi (__a, __b, __c);
  4334. }
  4335. __extension__ extern __inline int32x2_t
  4336. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4337. vsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  4338. {
  4339. return (int32x2_t)__builtin_neon_vsras_nv2si (__a, __b, __c);
  4340. }
  4341. __extension__ extern __inline int64x1_t
  4342. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4343. vsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
  4344. {
  4345. return (int64x1_t)__builtin_neon_vsras_ndi (__a, __b, __c);
  4346. }
  4347. __extension__ extern __inline uint8x8_t
  4348. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4349. vsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
  4350. {
  4351. return (uint8x8_t)__builtin_neon_vsrau_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4352. }
  4353. __extension__ extern __inline uint16x4_t
  4354. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4355. vsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  4356. {
  4357. return (uint16x4_t)__builtin_neon_vsrau_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4358. }
  4359. __extension__ extern __inline uint32x2_t
  4360. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4361. vsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  4362. {
  4363. return (uint32x2_t)__builtin_neon_vsrau_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  4364. }
  4365. __extension__ extern __inline uint64x1_t
  4366. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4367. vsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
  4368. {
  4369. return (uint64x1_t)__builtin_neon_vsrau_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
  4370. }
  4371. __extension__ extern __inline int8x16_t
  4372. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4373. vsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
  4374. {
  4375. return (int8x16_t)__builtin_neon_vsras_nv16qi (__a, __b, __c);
  4376. }
  4377. __extension__ extern __inline int16x8_t
  4378. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4379. vsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
  4380. {
  4381. return (int16x8_t)__builtin_neon_vsras_nv8hi (__a, __b, __c);
  4382. }
  4383. __extension__ extern __inline int32x4_t
  4384. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4385. vsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
  4386. {
  4387. return (int32x4_t)__builtin_neon_vsras_nv4si (__a, __b, __c);
  4388. }
  4389. __extension__ extern __inline int64x2_t
  4390. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4391. vsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
  4392. {
  4393. return (int64x2_t)__builtin_neon_vsras_nv2di (__a, __b, __c);
  4394. }
  4395. __extension__ extern __inline uint8x16_t
  4396. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4397. vsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
  4398. {
  4399. return (uint8x16_t)__builtin_neon_vsrau_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4400. }
  4401. __extension__ extern __inline uint16x8_t
  4402. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4403. vsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
  4404. {
  4405. return (uint16x8_t)__builtin_neon_vsrau_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4406. }
  4407. __extension__ extern __inline uint32x4_t
  4408. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4409. vsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
  4410. {
  4411. return (uint32x4_t)__builtin_neon_vsrau_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
  4412. }
  4413. __extension__ extern __inline uint64x2_t
  4414. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4415. vsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
  4416. {
  4417. return (uint64x2_t)__builtin_neon_vsrau_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4418. }
  4419. __extension__ extern __inline int8x8_t
  4420. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4421. vrsra_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
  4422. {
  4423. return (int8x8_t)__builtin_neon_vrsras_nv8qi (__a, __b, __c);
  4424. }
  4425. __extension__ extern __inline int16x4_t
  4426. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4427. vrsra_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  4428. {
  4429. return (int16x4_t)__builtin_neon_vrsras_nv4hi (__a, __b, __c);
  4430. }
  4431. __extension__ extern __inline int32x2_t
  4432. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4433. vrsra_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  4434. {
  4435. return (int32x2_t)__builtin_neon_vrsras_nv2si (__a, __b, __c);
  4436. }
  4437. __extension__ extern __inline int64x1_t
  4438. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4439. vrsra_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
  4440. {
  4441. return (int64x1_t)__builtin_neon_vrsras_ndi (__a, __b, __c);
  4442. }
  4443. __extension__ extern __inline uint8x8_t
  4444. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4445. vrsra_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
  4446. {
  4447. return (uint8x8_t)__builtin_neon_vrsrau_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4448. }
  4449. __extension__ extern __inline uint16x4_t
  4450. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4451. vrsra_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  4452. {
  4453. return (uint16x4_t)__builtin_neon_vrsrau_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4454. }
  4455. __extension__ extern __inline uint32x2_t
  4456. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4457. vrsra_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  4458. {
  4459. return (uint32x2_t)__builtin_neon_vrsrau_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  4460. }
  4461. __extension__ extern __inline uint64x1_t
  4462. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4463. vrsra_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
  4464. {
  4465. return (uint64x1_t)__builtin_neon_vrsrau_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
  4466. }
  4467. __extension__ extern __inline int8x16_t
  4468. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4469. vrsraq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
  4470. {
  4471. return (int8x16_t)__builtin_neon_vrsras_nv16qi (__a, __b, __c);
  4472. }
  4473. __extension__ extern __inline int16x8_t
  4474. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4475. vrsraq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
  4476. {
  4477. return (int16x8_t)__builtin_neon_vrsras_nv8hi (__a, __b, __c);
  4478. }
  4479. __extension__ extern __inline int32x4_t
  4480. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4481. vrsraq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
  4482. {
  4483. return (int32x4_t)__builtin_neon_vrsras_nv4si (__a, __b, __c);
  4484. }
  4485. __extension__ extern __inline int64x2_t
  4486. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4487. vrsraq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
  4488. {
  4489. return (int64x2_t)__builtin_neon_vrsras_nv2di (__a, __b, __c);
  4490. }
  4491. __extension__ extern __inline uint8x16_t
  4492. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4493. vrsraq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
  4494. {
  4495. return (uint8x16_t)__builtin_neon_vrsrau_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4496. }
  4497. __extension__ extern __inline uint16x8_t
  4498. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4499. vrsraq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
  4500. {
  4501. return (uint16x8_t)__builtin_neon_vrsrau_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4502. }
  4503. __extension__ extern __inline uint32x4_t
  4504. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4505. vrsraq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
  4506. {
  4507. return (uint32x4_t)__builtin_neon_vrsrau_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
  4508. }
  4509. __extension__ extern __inline uint64x2_t
  4510. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4511. vrsraq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
  4512. {
  4513. return (uint64x2_t)__builtin_neon_vrsrau_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4514. }
  4515. #pragma GCC push_options
  4516. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  4517. __extension__ extern __inline poly64x1_t
  4518. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4519. vsri_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
  4520. {
  4521. return (poly64x1_t)__builtin_neon_vsri_ndi (__a, __b, __c);
  4522. }
  4523. #pragma GCC pop_options
  4524. __extension__ extern __inline int8x8_t
  4525. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4526. vsri_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
  4527. {
  4528. return (int8x8_t)__builtin_neon_vsri_nv8qi (__a, __b, __c);
  4529. }
  4530. __extension__ extern __inline int16x4_t
  4531. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4532. vsri_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  4533. {
  4534. return (int16x4_t)__builtin_neon_vsri_nv4hi (__a, __b, __c);
  4535. }
  4536. __extension__ extern __inline int32x2_t
  4537. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4538. vsri_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  4539. {
  4540. return (int32x2_t)__builtin_neon_vsri_nv2si (__a, __b, __c);
  4541. }
  4542. __extension__ extern __inline int64x1_t
  4543. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4544. vsri_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
  4545. {
  4546. return (int64x1_t)__builtin_neon_vsri_ndi (__a, __b, __c);
  4547. }
  4548. __extension__ extern __inline uint8x8_t
  4549. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4550. vsri_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
  4551. {
  4552. return (uint8x8_t)__builtin_neon_vsri_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4553. }
  4554. __extension__ extern __inline uint16x4_t
  4555. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4556. vsri_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  4557. {
  4558. return (uint16x4_t)__builtin_neon_vsri_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4559. }
  4560. __extension__ extern __inline uint32x2_t
  4561. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4562. vsri_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  4563. {
  4564. return (uint32x2_t)__builtin_neon_vsri_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  4565. }
  4566. __extension__ extern __inline uint64x1_t
  4567. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4568. vsri_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
  4569. {
  4570. return (uint64x1_t)__builtin_neon_vsri_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
  4571. }
  4572. __extension__ extern __inline poly8x8_t
  4573. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4574. vsri_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
  4575. {
  4576. return (poly8x8_t)__builtin_neon_vsri_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4577. }
  4578. __extension__ extern __inline poly16x4_t
  4579. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4580. vsri_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
  4581. {
  4582. return (poly16x4_t)__builtin_neon_vsri_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4583. }
  4584. #pragma GCC push_options
  4585. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  4586. __extension__ extern __inline poly64x2_t
  4587. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4588. vsriq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
  4589. {
  4590. return (poly64x2_t)__builtin_neon_vsri_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4591. }
  4592. #pragma GCC pop_options
  4593. __extension__ extern __inline int8x16_t
  4594. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4595. vsriq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
  4596. {
  4597. return (int8x16_t)__builtin_neon_vsri_nv16qi (__a, __b, __c);
  4598. }
  4599. __extension__ extern __inline int16x8_t
  4600. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4601. vsriq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
  4602. {
  4603. return (int16x8_t)__builtin_neon_vsri_nv8hi (__a, __b, __c);
  4604. }
  4605. __extension__ extern __inline int32x4_t
  4606. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4607. vsriq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
  4608. {
  4609. return (int32x4_t)__builtin_neon_vsri_nv4si (__a, __b, __c);
  4610. }
  4611. __extension__ extern __inline int64x2_t
  4612. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4613. vsriq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
  4614. {
  4615. return (int64x2_t)__builtin_neon_vsri_nv2di (__a, __b, __c);
  4616. }
  4617. __extension__ extern __inline uint8x16_t
  4618. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4619. vsriq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
  4620. {
  4621. return (uint8x16_t)__builtin_neon_vsri_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4622. }
  4623. __extension__ extern __inline uint16x8_t
  4624. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4625. vsriq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
  4626. {
  4627. return (uint16x8_t)__builtin_neon_vsri_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4628. }
  4629. __extension__ extern __inline uint32x4_t
  4630. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4631. vsriq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
  4632. {
  4633. return (uint32x4_t)__builtin_neon_vsri_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
  4634. }
  4635. __extension__ extern __inline uint64x2_t
  4636. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4637. vsriq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
  4638. {
  4639. return (uint64x2_t)__builtin_neon_vsri_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4640. }
  4641. __extension__ extern __inline poly8x16_t
  4642. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4643. vsriq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
  4644. {
  4645. return (poly8x16_t)__builtin_neon_vsri_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4646. }
  4647. __extension__ extern __inline poly16x8_t
  4648. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4649. vsriq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
  4650. {
  4651. return (poly16x8_t)__builtin_neon_vsri_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4652. }
  4653. #pragma GCC push_options
  4654. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  4655. __extension__ extern __inline poly64x1_t
  4656. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4657. vsli_n_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
  4658. {
  4659. return (poly64x1_t)__builtin_neon_vsli_ndi (__a, __b, __c);
  4660. }
  4661. #pragma GCC pop_options
  4662. __extension__ extern __inline int8x8_t
  4663. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4664. vsli_n_s8 (int8x8_t __a, int8x8_t __b, const int __c)
  4665. {
  4666. return (int8x8_t)__builtin_neon_vsli_nv8qi (__a, __b, __c);
  4667. }
  4668. __extension__ extern __inline int16x4_t
  4669. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4670. vsli_n_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  4671. {
  4672. return (int16x4_t)__builtin_neon_vsli_nv4hi (__a, __b, __c);
  4673. }
  4674. __extension__ extern __inline int32x2_t
  4675. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4676. vsli_n_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  4677. {
  4678. return (int32x2_t)__builtin_neon_vsli_nv2si (__a, __b, __c);
  4679. }
  4680. __extension__ extern __inline int64x1_t
  4681. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4682. vsli_n_s64 (int64x1_t __a, int64x1_t __b, const int __c)
  4683. {
  4684. return (int64x1_t)__builtin_neon_vsli_ndi (__a, __b, __c);
  4685. }
  4686. __extension__ extern __inline uint8x8_t
  4687. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4688. vsli_n_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
  4689. {
  4690. return (uint8x8_t)__builtin_neon_vsli_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4691. }
  4692. __extension__ extern __inline uint16x4_t
  4693. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4694. vsli_n_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  4695. {
  4696. return (uint16x4_t)__builtin_neon_vsli_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4697. }
  4698. __extension__ extern __inline uint32x2_t
  4699. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4700. vsli_n_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  4701. {
  4702. return (uint32x2_t)__builtin_neon_vsli_nv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  4703. }
  4704. __extension__ extern __inline uint64x1_t
  4705. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4706. vsli_n_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
  4707. {
  4708. return (uint64x1_t)__builtin_neon_vsli_ndi ((int64x1_t) __a, (int64x1_t) __b, __c);
  4709. }
  4710. __extension__ extern __inline poly8x8_t
  4711. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4712. vsli_n_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
  4713. {
  4714. return (poly8x8_t)__builtin_neon_vsli_nv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  4715. }
  4716. __extension__ extern __inline poly16x4_t
  4717. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4718. vsli_n_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
  4719. {
  4720. return (poly16x4_t)__builtin_neon_vsli_nv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  4721. }
  4722. #pragma GCC push_options
  4723. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  4724. __extension__ extern __inline poly64x2_t
  4725. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4726. vsliq_n_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
  4727. {
  4728. return (poly64x2_t)__builtin_neon_vsli_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4729. }
  4730. #pragma GCC pop_options
  4731. __extension__ extern __inline int8x16_t
  4732. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4733. vsliq_n_s8 (int8x16_t __a, int8x16_t __b, const int __c)
  4734. {
  4735. return (int8x16_t)__builtin_neon_vsli_nv16qi (__a, __b, __c);
  4736. }
  4737. __extension__ extern __inline int16x8_t
  4738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4739. vsliq_n_s16 (int16x8_t __a, int16x8_t __b, const int __c)
  4740. {
  4741. return (int16x8_t)__builtin_neon_vsli_nv8hi (__a, __b, __c);
  4742. }
  4743. __extension__ extern __inline int32x4_t
  4744. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4745. vsliq_n_s32 (int32x4_t __a, int32x4_t __b, const int __c)
  4746. {
  4747. return (int32x4_t)__builtin_neon_vsli_nv4si (__a, __b, __c);
  4748. }
  4749. __extension__ extern __inline int64x2_t
  4750. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4751. vsliq_n_s64 (int64x2_t __a, int64x2_t __b, const int __c)
  4752. {
  4753. return (int64x2_t)__builtin_neon_vsli_nv2di (__a, __b, __c);
  4754. }
  4755. __extension__ extern __inline uint8x16_t
  4756. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4757. vsliq_n_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
  4758. {
  4759. return (uint8x16_t)__builtin_neon_vsli_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4760. }
  4761. __extension__ extern __inline uint16x8_t
  4762. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4763. vsliq_n_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
  4764. {
  4765. return (uint16x8_t)__builtin_neon_vsli_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4766. }
  4767. __extension__ extern __inline uint32x4_t
  4768. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4769. vsliq_n_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
  4770. {
  4771. return (uint32x4_t)__builtin_neon_vsli_nv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
  4772. }
  4773. __extension__ extern __inline uint64x2_t
  4774. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4775. vsliq_n_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
  4776. {
  4777. return (uint64x2_t)__builtin_neon_vsli_nv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  4778. }
  4779. __extension__ extern __inline poly8x16_t
  4780. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4781. vsliq_n_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
  4782. {
  4783. return (poly8x16_t)__builtin_neon_vsli_nv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  4784. }
  4785. __extension__ extern __inline poly16x8_t
  4786. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4787. vsliq_n_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
  4788. {
  4789. return (poly16x8_t)__builtin_neon_vsli_nv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  4790. }
  4791. __extension__ extern __inline int8x8_t
  4792. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4793. vabs_s8 (int8x8_t __a)
  4794. {
  4795. return (int8x8_t)__builtin_neon_vabsv8qi (__a);
  4796. }
  4797. __extension__ extern __inline int16x4_t
  4798. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4799. vabs_s16 (int16x4_t __a)
  4800. {
  4801. return (int16x4_t)__builtin_neon_vabsv4hi (__a);
  4802. }
  4803. __extension__ extern __inline int32x2_t
  4804. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4805. vabs_s32 (int32x2_t __a)
  4806. {
  4807. return (int32x2_t)__builtin_neon_vabsv2si (__a);
  4808. }
  4809. __extension__ extern __inline float32x2_t
  4810. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4811. vabs_f32 (float32x2_t __a)
  4812. {
  4813. return (float32x2_t)__builtin_neon_vabsv2sf (__a);
  4814. }
  4815. __extension__ extern __inline int8x16_t
  4816. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4817. vabsq_s8 (int8x16_t __a)
  4818. {
  4819. return (int8x16_t)__builtin_neon_vabsv16qi (__a);
  4820. }
  4821. __extension__ extern __inline int16x8_t
  4822. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4823. vabsq_s16 (int16x8_t __a)
  4824. {
  4825. return (int16x8_t)__builtin_neon_vabsv8hi (__a);
  4826. }
  4827. __extension__ extern __inline int32x4_t
  4828. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4829. vabsq_s32 (int32x4_t __a)
  4830. {
  4831. return (int32x4_t)__builtin_neon_vabsv4si (__a);
  4832. }
  4833. __extension__ extern __inline float32x4_t
  4834. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4835. vabsq_f32 (float32x4_t __a)
  4836. {
  4837. return (float32x4_t)__builtin_neon_vabsv4sf (__a);
  4838. }
  4839. __extension__ extern __inline int8x8_t
  4840. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4841. vqabs_s8 (int8x8_t __a)
  4842. {
  4843. return (int8x8_t)__builtin_neon_vqabsv8qi (__a);
  4844. }
  4845. __extension__ extern __inline int16x4_t
  4846. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4847. vqabs_s16 (int16x4_t __a)
  4848. {
  4849. return (int16x4_t)__builtin_neon_vqabsv4hi (__a);
  4850. }
  4851. __extension__ extern __inline int32x2_t
  4852. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4853. vqabs_s32 (int32x2_t __a)
  4854. {
  4855. return (int32x2_t)__builtin_neon_vqabsv2si (__a);
  4856. }
  4857. __extension__ extern __inline int8x16_t
  4858. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4859. vqabsq_s8 (int8x16_t __a)
  4860. {
  4861. return (int8x16_t)__builtin_neon_vqabsv16qi (__a);
  4862. }
  4863. __extension__ extern __inline int16x8_t
  4864. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4865. vqabsq_s16 (int16x8_t __a)
  4866. {
  4867. return (int16x8_t)__builtin_neon_vqabsv8hi (__a);
  4868. }
  4869. __extension__ extern __inline int32x4_t
  4870. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4871. vqabsq_s32 (int32x4_t __a)
  4872. {
  4873. return (int32x4_t)__builtin_neon_vqabsv4si (__a);
  4874. }
  4875. __extension__ extern __inline int8x8_t
  4876. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4877. vneg_s8 (int8x8_t __a)
  4878. {
  4879. return (int8x8_t)__builtin_neon_vnegv8qi (__a);
  4880. }
  4881. __extension__ extern __inline int16x4_t
  4882. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4883. vneg_s16 (int16x4_t __a)
  4884. {
  4885. return (int16x4_t)__builtin_neon_vnegv4hi (__a);
  4886. }
  4887. __extension__ extern __inline int32x2_t
  4888. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4889. vneg_s32 (int32x2_t __a)
  4890. {
  4891. return (int32x2_t)__builtin_neon_vnegv2si (__a);
  4892. }
  4893. __extension__ extern __inline float32x2_t
  4894. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4895. vneg_f32 (float32x2_t __a)
  4896. {
  4897. return (float32x2_t)__builtin_neon_vnegv2sf (__a);
  4898. }
  4899. __extension__ extern __inline int8x16_t
  4900. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4901. vnegq_s8 (int8x16_t __a)
  4902. {
  4903. return (int8x16_t)__builtin_neon_vnegv16qi (__a);
  4904. }
  4905. __extension__ extern __inline int16x8_t
  4906. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4907. vnegq_s16 (int16x8_t __a)
  4908. {
  4909. return (int16x8_t)__builtin_neon_vnegv8hi (__a);
  4910. }
  4911. __extension__ extern __inline int32x4_t
  4912. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4913. vnegq_s32 (int32x4_t __a)
  4914. {
  4915. return (int32x4_t)__builtin_neon_vnegv4si (__a);
  4916. }
  4917. __extension__ extern __inline float32x4_t
  4918. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4919. vnegq_f32 (float32x4_t __a)
  4920. {
  4921. return (float32x4_t)__builtin_neon_vnegv4sf (__a);
  4922. }
  4923. __extension__ extern __inline int8x8_t
  4924. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4925. vqneg_s8 (int8x8_t __a)
  4926. {
  4927. return (int8x8_t)__builtin_neon_vqnegv8qi (__a);
  4928. }
  4929. __extension__ extern __inline int16x4_t
  4930. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4931. vqneg_s16 (int16x4_t __a)
  4932. {
  4933. return (int16x4_t)__builtin_neon_vqnegv4hi (__a);
  4934. }
  4935. __extension__ extern __inline int32x2_t
  4936. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4937. vqneg_s32 (int32x2_t __a)
  4938. {
  4939. return (int32x2_t)__builtin_neon_vqnegv2si (__a);
  4940. }
  4941. __extension__ extern __inline int8x16_t
  4942. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4943. vqnegq_s8 (int8x16_t __a)
  4944. {
  4945. return (int8x16_t)__builtin_neon_vqnegv16qi (__a);
  4946. }
  4947. __extension__ extern __inline int16x8_t
  4948. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4949. vqnegq_s16 (int16x8_t __a)
  4950. {
  4951. return (int16x8_t)__builtin_neon_vqnegv8hi (__a);
  4952. }
  4953. __extension__ extern __inline int32x4_t
  4954. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4955. vqnegq_s32 (int32x4_t __a)
  4956. {
  4957. return (int32x4_t)__builtin_neon_vqnegv4si (__a);
  4958. }
  4959. __extension__ extern __inline int8x8_t
  4960. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4961. vmvn_s8 (int8x8_t __a)
  4962. {
  4963. return (int8x8_t)__builtin_neon_vmvnv8qi (__a);
  4964. }
  4965. __extension__ extern __inline int16x4_t
  4966. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4967. vmvn_s16 (int16x4_t __a)
  4968. {
  4969. return (int16x4_t)__builtin_neon_vmvnv4hi (__a);
  4970. }
  4971. __extension__ extern __inline int32x2_t
  4972. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4973. vmvn_s32 (int32x2_t __a)
  4974. {
  4975. return (int32x2_t)__builtin_neon_vmvnv2si (__a);
  4976. }
  4977. __extension__ extern __inline uint8x8_t
  4978. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4979. vmvn_u8 (uint8x8_t __a)
  4980. {
  4981. return (uint8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
  4982. }
  4983. __extension__ extern __inline uint16x4_t
  4984. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4985. vmvn_u16 (uint16x4_t __a)
  4986. {
  4987. return (uint16x4_t)__builtin_neon_vmvnv4hi ((int16x4_t) __a);
  4988. }
  4989. __extension__ extern __inline uint32x2_t
  4990. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4991. vmvn_u32 (uint32x2_t __a)
  4992. {
  4993. return (uint32x2_t)__builtin_neon_vmvnv2si ((int32x2_t) __a);
  4994. }
  4995. __extension__ extern __inline poly8x8_t
  4996. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  4997. vmvn_p8 (poly8x8_t __a)
  4998. {
  4999. return (poly8x8_t)__builtin_neon_vmvnv8qi ((int8x8_t) __a);
  5000. }
  5001. __extension__ extern __inline int8x16_t
  5002. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5003. vmvnq_s8 (int8x16_t __a)
  5004. {
  5005. return (int8x16_t)__builtin_neon_vmvnv16qi (__a);
  5006. }
  5007. __extension__ extern __inline int16x8_t
  5008. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5009. vmvnq_s16 (int16x8_t __a)
  5010. {
  5011. return (int16x8_t)__builtin_neon_vmvnv8hi (__a);
  5012. }
  5013. __extension__ extern __inline int32x4_t
  5014. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5015. vmvnq_s32 (int32x4_t __a)
  5016. {
  5017. return (int32x4_t)__builtin_neon_vmvnv4si (__a);
  5018. }
  5019. __extension__ extern __inline uint8x16_t
  5020. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5021. vmvnq_u8 (uint8x16_t __a)
  5022. {
  5023. return (uint8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
  5024. }
  5025. __extension__ extern __inline uint16x8_t
  5026. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5027. vmvnq_u16 (uint16x8_t __a)
  5028. {
  5029. return (uint16x8_t)__builtin_neon_vmvnv8hi ((int16x8_t) __a);
  5030. }
  5031. __extension__ extern __inline uint32x4_t
  5032. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5033. vmvnq_u32 (uint32x4_t __a)
  5034. {
  5035. return (uint32x4_t)__builtin_neon_vmvnv4si ((int32x4_t) __a);
  5036. }
  5037. __extension__ extern __inline poly8x16_t
  5038. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5039. vmvnq_p8 (poly8x16_t __a)
  5040. {
  5041. return (poly8x16_t)__builtin_neon_vmvnv16qi ((int8x16_t) __a);
  5042. }
  5043. __extension__ extern __inline int8x8_t
  5044. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5045. vcls_s8 (int8x8_t __a)
  5046. {
  5047. return (int8x8_t)__builtin_neon_vclsv8qi (__a);
  5048. }
  5049. __extension__ extern __inline int16x4_t
  5050. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5051. vcls_s16 (int16x4_t __a)
  5052. {
  5053. return (int16x4_t)__builtin_neon_vclsv4hi (__a);
  5054. }
  5055. __extension__ extern __inline int32x2_t
  5056. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5057. vcls_s32 (int32x2_t __a)
  5058. {
  5059. return (int32x2_t)__builtin_neon_vclsv2si (__a);
  5060. }
  5061. __extension__ extern __inline int8x16_t
  5062. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5063. vclsq_s8 (int8x16_t __a)
  5064. {
  5065. return (int8x16_t)__builtin_neon_vclsv16qi (__a);
  5066. }
  5067. __extension__ extern __inline int16x8_t
  5068. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5069. vclsq_s16 (int16x8_t __a)
  5070. {
  5071. return (int16x8_t)__builtin_neon_vclsv8hi (__a);
  5072. }
  5073. __extension__ extern __inline int32x4_t
  5074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5075. vclsq_s32 (int32x4_t __a)
  5076. {
  5077. return (int32x4_t)__builtin_neon_vclsv4si (__a);
  5078. }
  5079. __extension__ extern __inline int8x8_t
  5080. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5081. vclz_s8 (int8x8_t __a)
  5082. {
  5083. return (int8x8_t)__builtin_neon_vclzv8qi (__a);
  5084. }
  5085. __extension__ extern __inline int16x4_t
  5086. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5087. vclz_s16 (int16x4_t __a)
  5088. {
  5089. return (int16x4_t)__builtin_neon_vclzv4hi (__a);
  5090. }
  5091. __extension__ extern __inline int32x2_t
  5092. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5093. vclz_s32 (int32x2_t __a)
  5094. {
  5095. return (int32x2_t)__builtin_neon_vclzv2si (__a);
  5096. }
  5097. __extension__ extern __inline uint8x8_t
  5098. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5099. vclz_u8 (uint8x8_t __a)
  5100. {
  5101. return (uint8x8_t)__builtin_neon_vclzv8qi ((int8x8_t) __a);
  5102. }
  5103. __extension__ extern __inline uint16x4_t
  5104. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5105. vclz_u16 (uint16x4_t __a)
  5106. {
  5107. return (uint16x4_t)__builtin_neon_vclzv4hi ((int16x4_t) __a);
  5108. }
  5109. __extension__ extern __inline uint32x2_t
  5110. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5111. vclz_u32 (uint32x2_t __a)
  5112. {
  5113. return (uint32x2_t)__builtin_neon_vclzv2si ((int32x2_t) __a);
  5114. }
  5115. __extension__ extern __inline int8x16_t
  5116. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5117. vclzq_s8 (int8x16_t __a)
  5118. {
  5119. return (int8x16_t)__builtin_neon_vclzv16qi (__a);
  5120. }
  5121. __extension__ extern __inline int16x8_t
  5122. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5123. vclzq_s16 (int16x8_t __a)
  5124. {
  5125. return (int16x8_t)__builtin_neon_vclzv8hi (__a);
  5126. }
  5127. __extension__ extern __inline int32x4_t
  5128. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5129. vclzq_s32 (int32x4_t __a)
  5130. {
  5131. return (int32x4_t)__builtin_neon_vclzv4si (__a);
  5132. }
  5133. __extension__ extern __inline uint8x16_t
  5134. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5135. vclzq_u8 (uint8x16_t __a)
  5136. {
  5137. return (uint8x16_t)__builtin_neon_vclzv16qi ((int8x16_t) __a);
  5138. }
  5139. __extension__ extern __inline uint16x8_t
  5140. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5141. vclzq_u16 (uint16x8_t __a)
  5142. {
  5143. return (uint16x8_t)__builtin_neon_vclzv8hi ((int16x8_t) __a);
  5144. }
  5145. __extension__ extern __inline uint32x4_t
  5146. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5147. vclzq_u32 (uint32x4_t __a)
  5148. {
  5149. return (uint32x4_t)__builtin_neon_vclzv4si ((int32x4_t) __a);
  5150. }
  5151. __extension__ extern __inline int8x8_t
  5152. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5153. vcnt_s8 (int8x8_t __a)
  5154. {
  5155. return (int8x8_t)__builtin_neon_vcntv8qi (__a);
  5156. }
  5157. __extension__ extern __inline uint8x8_t
  5158. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5159. vcnt_u8 (uint8x8_t __a)
  5160. {
  5161. return (uint8x8_t)__builtin_neon_vcntv8qi ((int8x8_t) __a);
  5162. }
  5163. __extension__ extern __inline poly8x8_t
  5164. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5165. vcnt_p8 (poly8x8_t __a)
  5166. {
  5167. return (poly8x8_t)__builtin_neon_vcntv8qi ((int8x8_t) __a);
  5168. }
  5169. __extension__ extern __inline int8x16_t
  5170. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5171. vcntq_s8 (int8x16_t __a)
  5172. {
  5173. return (int8x16_t)__builtin_neon_vcntv16qi (__a);
  5174. }
  5175. __extension__ extern __inline uint8x16_t
  5176. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5177. vcntq_u8 (uint8x16_t __a)
  5178. {
  5179. return (uint8x16_t)__builtin_neon_vcntv16qi ((int8x16_t) __a);
  5180. }
  5181. __extension__ extern __inline poly8x16_t
  5182. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5183. vcntq_p8 (poly8x16_t __a)
  5184. {
  5185. return (poly8x16_t)__builtin_neon_vcntv16qi ((int8x16_t) __a);
  5186. }
  5187. __extension__ extern __inline float32x2_t
  5188. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5189. vrecpe_f32 (float32x2_t __a)
  5190. {
  5191. return (float32x2_t)__builtin_neon_vrecpev2sf (__a);
  5192. }
  5193. __extension__ extern __inline uint32x2_t
  5194. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5195. vrecpe_u32 (uint32x2_t __a)
  5196. {
  5197. return (uint32x2_t)__builtin_neon_vrecpev2si ((int32x2_t) __a);
  5198. }
  5199. __extension__ extern __inline float32x4_t
  5200. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5201. vrecpeq_f32 (float32x4_t __a)
  5202. {
  5203. return (float32x4_t)__builtin_neon_vrecpev4sf (__a);
  5204. }
  5205. __extension__ extern __inline uint32x4_t
  5206. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5207. vrecpeq_u32 (uint32x4_t __a)
  5208. {
  5209. return (uint32x4_t)__builtin_neon_vrecpev4si ((int32x4_t) __a);
  5210. }
  5211. __extension__ extern __inline float32x2_t
  5212. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5213. vrsqrte_f32 (float32x2_t __a)
  5214. {
  5215. return (float32x2_t)__builtin_neon_vrsqrtev2sf (__a);
  5216. }
  5217. __extension__ extern __inline uint32x2_t
  5218. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5219. vrsqrte_u32 (uint32x2_t __a)
  5220. {
  5221. return (uint32x2_t)__builtin_neon_vrsqrtev2si ((int32x2_t) __a);
  5222. }
  5223. __extension__ extern __inline float32x4_t
  5224. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5225. vrsqrteq_f32 (float32x4_t __a)
  5226. {
  5227. return (float32x4_t)__builtin_neon_vrsqrtev4sf (__a);
  5228. }
  5229. __extension__ extern __inline uint32x4_t
  5230. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5231. vrsqrteq_u32 (uint32x4_t __a)
  5232. {
  5233. return (uint32x4_t)__builtin_neon_vrsqrtev4si ((int32x4_t) __a);
  5234. }
  5235. __extension__ extern __inline int8_t
  5236. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5237. vget_lane_s8 (int8x8_t __a, const int __b)
  5238. {
  5239. return (int8_t)__builtin_neon_vget_lanev8qi (__a, __b);
  5240. }
  5241. __extension__ extern __inline int16_t
  5242. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5243. vget_lane_s16 (int16x4_t __a, const int __b)
  5244. {
  5245. return (int16_t)__builtin_neon_vget_lanev4hi (__a, __b);
  5246. }
  5247. __extension__ extern __inline int32_t
  5248. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5249. vget_lane_s32 (int32x2_t __a, const int __b)
  5250. {
  5251. return (int32_t)__builtin_neon_vget_lanev2si (__a, __b);
  5252. }
  5253. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  5254. /* Functions cannot accept or return __FP16 types. Even if the function
  5255. were marked always-inline so there were no call sites, the declaration
  5256. would nonetheless raise an error. Hence, we must use a macro instead. */
  5257. #define vget_lane_f16(__v, __idx) \
  5258. __extension__ \
  5259. ({ \
  5260. float16x4_t __vec = (__v); \
  5261. __builtin_arm_lane_check (4, __idx); \
  5262. float16_t __res = __vec[__arm_lane(__vec, __idx)]; \
  5263. __res; \
  5264. })
  5265. #endif
  5266. __extension__ extern __inline float32_t
  5267. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5268. vget_lane_f32 (float32x2_t __a, const int __b)
  5269. {
  5270. return (float32_t)__builtin_neon_vget_lanev2sf (__a, __b);
  5271. }
  5272. __extension__ extern __inline uint8_t
  5273. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5274. vget_lane_u8 (uint8x8_t __a, const int __b)
  5275. {
  5276. return (uint8_t)__builtin_neon_vget_laneuv8qi ((int8x8_t) __a, __b);
  5277. }
  5278. __extension__ extern __inline uint16_t
  5279. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5280. vget_lane_u16 (uint16x4_t __a, const int __b)
  5281. {
  5282. return (uint16_t)__builtin_neon_vget_laneuv4hi ((int16x4_t) __a, __b);
  5283. }
  5284. __extension__ extern __inline uint32_t
  5285. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5286. vget_lane_u32 (uint32x2_t __a, const int __b)
  5287. {
  5288. return (uint32_t)__builtin_neon_vget_laneuv2si ((int32x2_t) __a, __b);
  5289. }
  5290. __extension__ extern __inline poly8_t
  5291. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5292. vget_lane_p8 (poly8x8_t __a, const int __b)
  5293. {
  5294. return (poly8_t)__builtin_neon_vget_laneuv8qi ((int8x8_t) __a, __b);
  5295. }
  5296. __extension__ extern __inline poly16_t
  5297. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5298. vget_lane_p16 (poly16x4_t __a, const int __b)
  5299. {
  5300. return (poly16_t)__builtin_neon_vget_laneuv4hi ((int16x4_t) __a, __b);
  5301. }
  5302. __extension__ extern __inline int64_t
  5303. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5304. vget_lane_s64 (int64x1_t __a, const int __b)
  5305. {
  5306. return (int64_t)__builtin_neon_vget_lanedi (__a, __b);
  5307. }
  5308. #pragma GCC push_options
  5309. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5310. __extension__ extern __inline poly64_t
  5311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5312. vget_lane_p64 (poly64x1_t __a, const int __b)
  5313. {
  5314. return (poly64_t)__builtin_neon_vget_lanedi ((int64x1_t) __a, __b);
  5315. }
  5316. #pragma GCC pop_options
  5317. __extension__ extern __inline uint64_t
  5318. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5319. vget_lane_u64 (uint64x1_t __a, const int __b)
  5320. {
  5321. return (uint64_t)__builtin_neon_vget_lanedi ((int64x1_t) __a, __b);
  5322. }
  5323. __extension__ extern __inline int8_t
  5324. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5325. vgetq_lane_s8 (int8x16_t __a, const int __b)
  5326. {
  5327. return (int8_t)__builtin_neon_vget_lanev16qi (__a, __b);
  5328. }
  5329. __extension__ extern __inline int16_t
  5330. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5331. vgetq_lane_s16 (int16x8_t __a, const int __b)
  5332. {
  5333. return (int16_t)__builtin_neon_vget_lanev8hi (__a, __b);
  5334. }
  5335. __extension__ extern __inline int32_t
  5336. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5337. vgetq_lane_s32 (int32x4_t __a, const int __b)
  5338. {
  5339. return (int32_t)__builtin_neon_vget_lanev4si (__a, __b);
  5340. }
  5341. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  5342. #define vgetq_lane_f16(__v, __idx) \
  5343. __extension__ \
  5344. ({ \
  5345. float16x8_t __vec = (__v); \
  5346. __builtin_arm_lane_check (8, __idx); \
  5347. float16_t __res = __vec[__arm_laneq(__vec, __idx)]; \
  5348. __res; \
  5349. })
  5350. #endif
  5351. __extension__ extern __inline float32_t
  5352. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5353. vgetq_lane_f32 (float32x4_t __a, const int __b)
  5354. {
  5355. return (float32_t)__builtin_neon_vget_lanev4sf (__a, __b);
  5356. }
  5357. __extension__ extern __inline uint8_t
  5358. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5359. vgetq_lane_u8 (uint8x16_t __a, const int __b)
  5360. {
  5361. return (uint8_t)__builtin_neon_vget_laneuv16qi ((int8x16_t) __a, __b);
  5362. }
  5363. __extension__ extern __inline uint16_t
  5364. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5365. vgetq_lane_u16 (uint16x8_t __a, const int __b)
  5366. {
  5367. return (uint16_t)__builtin_neon_vget_laneuv8hi ((int16x8_t) __a, __b);
  5368. }
  5369. __extension__ extern __inline uint32_t
  5370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5371. vgetq_lane_u32 (uint32x4_t __a, const int __b)
  5372. {
  5373. return (uint32_t)__builtin_neon_vget_laneuv4si ((int32x4_t) __a, __b);
  5374. }
  5375. __extension__ extern __inline poly8_t
  5376. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5377. vgetq_lane_p8 (poly8x16_t __a, const int __b)
  5378. {
  5379. return (poly8_t)__builtin_neon_vget_laneuv16qi ((int8x16_t) __a, __b);
  5380. }
  5381. __extension__ extern __inline poly16_t
  5382. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5383. vgetq_lane_p16 (poly16x8_t __a, const int __b)
  5384. {
  5385. return (poly16_t)__builtin_neon_vget_laneuv8hi ((int16x8_t) __a, __b);
  5386. }
  5387. __extension__ extern __inline int64_t
  5388. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5389. vgetq_lane_s64 (int64x2_t __a, const int __b)
  5390. {
  5391. return (int64_t)__builtin_neon_vget_lanev2di (__a, __b);
  5392. }
  5393. #pragma GCC push_options
  5394. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5395. __extension__ extern __inline poly64_t
  5396. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5397. vgetq_lane_p64 (poly64x2_t __a, const int __b)
  5398. {
  5399. return (poly64_t)__builtin_neon_vget_lanev2di ((int64x2_t) __a, __b);
  5400. }
  5401. #pragma GCC pop_options
  5402. __extension__ extern __inline uint64_t
  5403. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5404. vgetq_lane_u64 (uint64x2_t __a, const int __b)
  5405. {
  5406. return (uint64_t)__builtin_neon_vget_lanev2di ((int64x2_t) __a, __b);
  5407. }
  5408. __extension__ extern __inline int8x8_t
  5409. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5410. vset_lane_s8 (int8_t __a, int8x8_t __b, const int __c)
  5411. {
  5412. return (int8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, __b, __c);
  5413. }
  5414. __extension__ extern __inline int16x4_t
  5415. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5416. vset_lane_s16 (int16_t __a, int16x4_t __b, const int __c)
  5417. {
  5418. return (int16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, __b, __c);
  5419. }
  5420. __extension__ extern __inline int32x2_t
  5421. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5422. vset_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
  5423. {
  5424. return (int32x2_t)__builtin_neon_vset_lanev2si ((__builtin_neon_si) __a, __b, __c);
  5425. }
  5426. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  5427. #define vset_lane_f16(__e, __v, __idx) \
  5428. __extension__ \
  5429. ({ \
  5430. float16_t __elem = (__e); \
  5431. float16x4_t __vec = (__v); \
  5432. __builtin_arm_lane_check (4, __idx); \
  5433. __vec[__arm_lane (__vec, __idx)] = __elem; \
  5434. __vec; \
  5435. })
  5436. #endif
  5437. __extension__ extern __inline float32x2_t
  5438. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5439. vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c)
  5440. {
  5441. return (float32x2_t)__builtin_neon_vset_lanev2sf ((__builtin_neon_sf) __a, __b, __c);
  5442. }
  5443. __extension__ extern __inline uint8x8_t
  5444. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5445. vset_lane_u8 (uint8_t __a, uint8x8_t __b, const int __c)
  5446. {
  5447. return (uint8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, (int8x8_t) __b, __c);
  5448. }
  5449. __extension__ extern __inline uint16x4_t
  5450. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5451. vset_lane_u16 (uint16_t __a, uint16x4_t __b, const int __c)
  5452. {
  5453. return (uint16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, (int16x4_t) __b, __c);
  5454. }
  5455. __extension__ extern __inline uint32x2_t
  5456. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5457. vset_lane_u32 (uint32_t __a, uint32x2_t __b, const int __c)
  5458. {
  5459. return (uint32x2_t)__builtin_neon_vset_lanev2si ((__builtin_neon_si) __a, (int32x2_t) __b, __c);
  5460. }
  5461. __extension__ extern __inline poly8x8_t
  5462. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5463. vset_lane_p8 (poly8_t __a, poly8x8_t __b, const int __c)
  5464. {
  5465. return (poly8x8_t)__builtin_neon_vset_lanev8qi ((__builtin_neon_qi) __a, (int8x8_t) __b, __c);
  5466. }
  5467. __extension__ extern __inline poly16x4_t
  5468. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5469. vset_lane_p16 (poly16_t __a, poly16x4_t __b, const int __c)
  5470. {
  5471. return (poly16x4_t)__builtin_neon_vset_lanev4hi ((__builtin_neon_hi) __a, (int16x4_t) __b, __c);
  5472. }
  5473. __extension__ extern __inline int64x1_t
  5474. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5475. vset_lane_s64 (int64_t __a, int64x1_t __b, const int __c)
  5476. {
  5477. return (int64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, __b, __c);
  5478. }
  5479. __extension__ extern __inline uint64x1_t
  5480. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5481. vset_lane_u64 (uint64_t __a, uint64x1_t __b, const int __c)
  5482. {
  5483. return (uint64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, (int64x1_t) __b, __c);
  5484. }
  5485. #pragma GCC push_options
  5486. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5487. __extension__ extern __inline poly64x1_t
  5488. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5489. vset_lane_p64 (poly64_t __a, poly64x1_t __b, const int __c)
  5490. {
  5491. return (poly64x1_t)__builtin_neon_vset_lanedi ((__builtin_neon_di) __a, (int64x1_t) __b, __c);
  5492. }
  5493. #pragma GCC pop_options
  5494. __extension__ extern __inline int8x16_t
  5495. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5496. vsetq_lane_s8 (int8_t __a, int8x16_t __b, const int __c)
  5497. {
  5498. return (int8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, __b, __c);
  5499. }
  5500. __extension__ extern __inline int16x8_t
  5501. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5502. vsetq_lane_s16 (int16_t __a, int16x8_t __b, const int __c)
  5503. {
  5504. return (int16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, __b, __c);
  5505. }
  5506. __extension__ extern __inline int32x4_t
  5507. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5508. vsetq_lane_s32 (int32_t __a, int32x4_t __b, const int __c)
  5509. {
  5510. return (int32x4_t)__builtin_neon_vset_lanev4si ((__builtin_neon_si) __a, __b, __c);
  5511. }
  5512. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  5513. #define vsetq_lane_f16(__e, __v, __idx) \
  5514. __extension__ \
  5515. ({ \
  5516. float16_t __elem = (__e); \
  5517. float16x8_t __vec = (__v); \
  5518. __builtin_arm_lane_check (8, __idx); \
  5519. __vec[__arm_laneq (__vec, __idx)] = __elem; \
  5520. __vec; \
  5521. })
  5522. #endif
  5523. __extension__ extern __inline float32x4_t
  5524. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5525. vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c)
  5526. {
  5527. return (float32x4_t)__builtin_neon_vset_lanev4sf ((__builtin_neon_sf) __a, __b, __c);
  5528. }
  5529. __extension__ extern __inline uint8x16_t
  5530. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5531. vsetq_lane_u8 (uint8_t __a, uint8x16_t __b, const int __c)
  5532. {
  5533. return (uint8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, (int8x16_t) __b, __c);
  5534. }
  5535. __extension__ extern __inline uint16x8_t
  5536. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5537. vsetq_lane_u16 (uint16_t __a, uint16x8_t __b, const int __c)
  5538. {
  5539. return (uint16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, (int16x8_t) __b, __c);
  5540. }
  5541. __extension__ extern __inline uint32x4_t
  5542. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5543. vsetq_lane_u32 (uint32_t __a, uint32x4_t __b, const int __c)
  5544. {
  5545. return (uint32x4_t)__builtin_neon_vset_lanev4si ((__builtin_neon_si) __a, (int32x4_t) __b, __c);
  5546. }
  5547. __extension__ extern __inline poly8x16_t
  5548. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5549. vsetq_lane_p8 (poly8_t __a, poly8x16_t __b, const int __c)
  5550. {
  5551. return (poly8x16_t)__builtin_neon_vset_lanev16qi ((__builtin_neon_qi) __a, (int8x16_t) __b, __c);
  5552. }
  5553. __extension__ extern __inline poly16x8_t
  5554. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5555. vsetq_lane_p16 (poly16_t __a, poly16x8_t __b, const int __c)
  5556. {
  5557. return (poly16x8_t)__builtin_neon_vset_lanev8hi ((__builtin_neon_hi) __a, (int16x8_t) __b, __c);
  5558. }
  5559. __extension__ extern __inline int64x2_t
  5560. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5561. vsetq_lane_s64 (int64_t __a, int64x2_t __b, const int __c)
  5562. {
  5563. return (int64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, __b, __c);
  5564. }
  5565. __extension__ extern __inline uint64x2_t
  5566. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5567. vsetq_lane_u64 (uint64_t __a, uint64x2_t __b, const int __c)
  5568. {
  5569. return (uint64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, (int64x2_t) __b, __c);
  5570. }
  5571. #pragma GCC push_options
  5572. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5573. __extension__ extern __inline poly64x2_t
  5574. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5575. vsetq_lane_p64 (poly64_t __a, poly64x2_t __b, const int __c)
  5576. {
  5577. return (poly64x2_t)__builtin_neon_vset_lanev2di ((__builtin_neon_di) __a, (int64x2_t) __b, __c);
  5578. }
  5579. __extension__ extern __inline poly64x1_t
  5580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5581. vcreate_p64 (uint64_t __a)
  5582. {
  5583. return (poly64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  5584. }
  5585. #pragma GCC pop_options
  5586. __extension__ extern __inline int8x8_t
  5587. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5588. vcreate_s8 (uint64_t __a)
  5589. {
  5590. return (int8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  5591. }
  5592. __extension__ extern __inline int16x4_t
  5593. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5594. vcreate_s16 (uint64_t __a)
  5595. {
  5596. return (int16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  5597. }
  5598. __extension__ extern __inline int32x2_t
  5599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5600. vcreate_s32 (uint64_t __a)
  5601. {
  5602. return (int32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
  5603. }
  5604. __extension__ extern __inline int64x1_t
  5605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5606. vcreate_s64 (uint64_t __a)
  5607. {
  5608. return (int64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  5609. }
  5610. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  5611. __extension__ extern __inline float16x4_t
  5612. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5613. vcreate_f16 (uint64_t __a)
  5614. {
  5615. return (float16x4_t) __a;
  5616. }
  5617. #endif
  5618. __extension__ extern __inline float32x2_t
  5619. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5620. vcreate_f32 (uint64_t __a)
  5621. {
  5622. return (float32x2_t)__builtin_neon_vcreatev2sf ((__builtin_neon_di) __a);
  5623. }
  5624. __extension__ extern __inline uint8x8_t
  5625. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5626. vcreate_u8 (uint64_t __a)
  5627. {
  5628. return (uint8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  5629. }
  5630. __extension__ extern __inline uint16x4_t
  5631. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5632. vcreate_u16 (uint64_t __a)
  5633. {
  5634. return (uint16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  5635. }
  5636. __extension__ extern __inline uint32x2_t
  5637. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5638. vcreate_u32 (uint64_t __a)
  5639. {
  5640. return (uint32x2_t)__builtin_neon_vcreatev2si ((__builtin_neon_di) __a);
  5641. }
  5642. __extension__ extern __inline uint64x1_t
  5643. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5644. vcreate_u64 (uint64_t __a)
  5645. {
  5646. return (uint64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
  5647. }
  5648. __extension__ extern __inline poly8x8_t
  5649. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5650. vcreate_p8 (uint64_t __a)
  5651. {
  5652. return (poly8x8_t)__builtin_neon_vcreatev8qi ((__builtin_neon_di) __a);
  5653. }
  5654. __extension__ extern __inline poly16x4_t
  5655. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5656. vcreate_p16 (uint64_t __a)
  5657. {
  5658. return (poly16x4_t)__builtin_neon_vcreatev4hi ((__builtin_neon_di) __a);
  5659. }
  5660. __extension__ extern __inline int8x8_t
  5661. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5662. vdup_n_s8 (int8_t __a)
  5663. {
  5664. return (int8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5665. }
  5666. __extension__ extern __inline int16x4_t
  5667. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5668. vdup_n_s16 (int16_t __a)
  5669. {
  5670. return (int16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5671. }
  5672. __extension__ extern __inline int32x2_t
  5673. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5674. vdup_n_s32 (int32_t __a)
  5675. {
  5676. return (int32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
  5677. }
  5678. __extension__ extern __inline float32x2_t
  5679. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5680. vdup_n_f32 (float32_t __a)
  5681. {
  5682. return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
  5683. }
  5684. __extension__ extern __inline uint8x8_t
  5685. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5686. vdup_n_u8 (uint8_t __a)
  5687. {
  5688. return (uint8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5689. }
  5690. __extension__ extern __inline uint16x4_t
  5691. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5692. vdup_n_u16 (uint16_t __a)
  5693. {
  5694. return (uint16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5695. }
  5696. __extension__ extern __inline uint32x2_t
  5697. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5698. vdup_n_u32 (uint32_t __a)
  5699. {
  5700. return (uint32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
  5701. }
  5702. __extension__ extern __inline poly8x8_t
  5703. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5704. vdup_n_p8 (poly8_t __a)
  5705. {
  5706. return (poly8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5707. }
  5708. __extension__ extern __inline poly16x4_t
  5709. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5710. vdup_n_p16 (poly16_t __a)
  5711. {
  5712. return (poly16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5713. }
  5714. #pragma GCC push_options
  5715. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5716. __extension__ extern __inline poly64x1_t
  5717. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5718. vdup_n_p64 (poly64_t __a)
  5719. {
  5720. return (poly64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
  5721. }
  5722. #pragma GCC pop_options
  5723. __extension__ extern __inline int64x1_t
  5724. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5725. vdup_n_s64 (int64_t __a)
  5726. {
  5727. return (int64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
  5728. }
  5729. __extension__ extern __inline uint64x1_t
  5730. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5731. vdup_n_u64 (uint64_t __a)
  5732. {
  5733. return (uint64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
  5734. }
  5735. #pragma GCC push_options
  5736. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5737. __extension__ extern __inline poly64x2_t
  5738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5739. vdupq_n_p64 (poly64_t __a)
  5740. {
  5741. return (poly64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
  5742. }
  5743. #pragma GCC pop_options
  5744. __extension__ extern __inline int8x16_t
  5745. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5746. vdupq_n_s8 (int8_t __a)
  5747. {
  5748. return (int8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5749. }
  5750. __extension__ extern __inline int16x8_t
  5751. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5752. vdupq_n_s16 (int16_t __a)
  5753. {
  5754. return (int16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5755. }
  5756. __extension__ extern __inline int32x4_t
  5757. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5758. vdupq_n_s32 (int32_t __a)
  5759. {
  5760. return (int32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
  5761. }
  5762. __extension__ extern __inline float32x4_t
  5763. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5764. vdupq_n_f32 (float32_t __a)
  5765. {
  5766. return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
  5767. }
  5768. __extension__ extern __inline uint8x16_t
  5769. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5770. vdupq_n_u8 (uint8_t __a)
  5771. {
  5772. return (uint8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5773. }
  5774. __extension__ extern __inline uint16x8_t
  5775. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5776. vdupq_n_u16 (uint16_t __a)
  5777. {
  5778. return (uint16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5779. }
  5780. __extension__ extern __inline uint32x4_t
  5781. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5782. vdupq_n_u32 (uint32_t __a)
  5783. {
  5784. return (uint32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
  5785. }
  5786. __extension__ extern __inline poly8x16_t
  5787. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5788. vdupq_n_p8 (poly8_t __a)
  5789. {
  5790. return (poly8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5791. }
  5792. __extension__ extern __inline poly16x8_t
  5793. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5794. vdupq_n_p16 (poly16_t __a)
  5795. {
  5796. return (poly16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5797. }
  5798. __extension__ extern __inline int64x2_t
  5799. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5800. vdupq_n_s64 (int64_t __a)
  5801. {
  5802. return (int64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
  5803. }
  5804. __extension__ extern __inline uint64x2_t
  5805. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5806. vdupq_n_u64 (uint64_t __a)
  5807. {
  5808. return (uint64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
  5809. }
  5810. __extension__ extern __inline int8x8_t
  5811. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5812. vmov_n_s8 (int8_t __a)
  5813. {
  5814. return (int8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5815. }
  5816. __extension__ extern __inline int16x4_t
  5817. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5818. vmov_n_s16 (int16_t __a)
  5819. {
  5820. return (int16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5821. }
  5822. __extension__ extern __inline int32x2_t
  5823. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5824. vmov_n_s32 (int32_t __a)
  5825. {
  5826. return (int32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
  5827. }
  5828. __extension__ extern __inline float32x2_t
  5829. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5830. vmov_n_f32 (float32_t __a)
  5831. {
  5832. return (float32x2_t)__builtin_neon_vdup_nv2sf ((__builtin_neon_sf) __a);
  5833. }
  5834. __extension__ extern __inline uint8x8_t
  5835. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5836. vmov_n_u8 (uint8_t __a)
  5837. {
  5838. return (uint8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5839. }
  5840. __extension__ extern __inline uint16x4_t
  5841. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5842. vmov_n_u16 (uint16_t __a)
  5843. {
  5844. return (uint16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5845. }
  5846. __extension__ extern __inline uint32x2_t
  5847. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5848. vmov_n_u32 (uint32_t __a)
  5849. {
  5850. return (uint32x2_t)__builtin_neon_vdup_nv2si ((__builtin_neon_si) __a);
  5851. }
  5852. __extension__ extern __inline poly8x8_t
  5853. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5854. vmov_n_p8 (poly8_t __a)
  5855. {
  5856. return (poly8x8_t)__builtin_neon_vdup_nv8qi ((__builtin_neon_qi) __a);
  5857. }
  5858. __extension__ extern __inline poly16x4_t
  5859. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5860. vmov_n_p16 (poly16_t __a)
  5861. {
  5862. return (poly16x4_t)__builtin_neon_vdup_nv4hi ((__builtin_neon_hi) __a);
  5863. }
  5864. __extension__ extern __inline int64x1_t
  5865. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5866. vmov_n_s64 (int64_t __a)
  5867. {
  5868. return (int64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
  5869. }
  5870. __extension__ extern __inline uint64x1_t
  5871. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5872. vmov_n_u64 (uint64_t __a)
  5873. {
  5874. return (uint64x1_t)__builtin_neon_vdup_ndi ((__builtin_neon_di) __a);
  5875. }
  5876. __extension__ extern __inline int8x16_t
  5877. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5878. vmovq_n_s8 (int8_t __a)
  5879. {
  5880. return (int8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5881. }
  5882. __extension__ extern __inline int16x8_t
  5883. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5884. vmovq_n_s16 (int16_t __a)
  5885. {
  5886. return (int16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5887. }
  5888. __extension__ extern __inline int32x4_t
  5889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5890. vmovq_n_s32 (int32_t __a)
  5891. {
  5892. return (int32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
  5893. }
  5894. __extension__ extern __inline float32x4_t
  5895. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5896. vmovq_n_f32 (float32_t __a)
  5897. {
  5898. return (float32x4_t)__builtin_neon_vdup_nv4sf ((__builtin_neon_sf) __a);
  5899. }
  5900. __extension__ extern __inline uint8x16_t
  5901. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5902. vmovq_n_u8 (uint8_t __a)
  5903. {
  5904. return (uint8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5905. }
  5906. __extension__ extern __inline uint16x8_t
  5907. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5908. vmovq_n_u16 (uint16_t __a)
  5909. {
  5910. return (uint16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5911. }
  5912. __extension__ extern __inline uint32x4_t
  5913. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5914. vmovq_n_u32 (uint32_t __a)
  5915. {
  5916. return (uint32x4_t)__builtin_neon_vdup_nv4si ((__builtin_neon_si) __a);
  5917. }
  5918. __extension__ extern __inline poly8x16_t
  5919. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5920. vmovq_n_p8 (poly8_t __a)
  5921. {
  5922. return (poly8x16_t)__builtin_neon_vdup_nv16qi ((__builtin_neon_qi) __a);
  5923. }
  5924. __extension__ extern __inline poly16x8_t
  5925. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5926. vmovq_n_p16 (poly16_t __a)
  5927. {
  5928. return (poly16x8_t)__builtin_neon_vdup_nv8hi ((__builtin_neon_hi) __a);
  5929. }
  5930. __extension__ extern __inline int64x2_t
  5931. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5932. vmovq_n_s64 (int64_t __a)
  5933. {
  5934. return (int64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
  5935. }
  5936. __extension__ extern __inline uint64x2_t
  5937. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5938. vmovq_n_u64 (uint64_t __a)
  5939. {
  5940. return (uint64x2_t)__builtin_neon_vdup_nv2di ((__builtin_neon_di) __a);
  5941. }
  5942. __extension__ extern __inline int8x8_t
  5943. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5944. vdup_lane_s8 (int8x8_t __a, const int __b)
  5945. {
  5946. return (int8x8_t)__builtin_neon_vdup_lanev8qi (__a, __b);
  5947. }
  5948. __extension__ extern __inline int16x4_t
  5949. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5950. vdup_lane_s16 (int16x4_t __a, const int __b)
  5951. {
  5952. return (int16x4_t)__builtin_neon_vdup_lanev4hi (__a, __b);
  5953. }
  5954. __extension__ extern __inline int32x2_t
  5955. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5956. vdup_lane_s32 (int32x2_t __a, const int __b)
  5957. {
  5958. return (int32x2_t)__builtin_neon_vdup_lanev2si (__a, __b);
  5959. }
  5960. __extension__ extern __inline float32x2_t
  5961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5962. vdup_lane_f32 (float32x2_t __a, const int __b)
  5963. {
  5964. return (float32x2_t)__builtin_neon_vdup_lanev2sf (__a, __b);
  5965. }
  5966. __extension__ extern __inline uint8x8_t
  5967. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5968. vdup_lane_u8 (uint8x8_t __a, const int __b)
  5969. {
  5970. return (uint8x8_t)__builtin_neon_vdup_lanev8qi ((int8x8_t) __a, __b);
  5971. }
  5972. __extension__ extern __inline uint16x4_t
  5973. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5974. vdup_lane_u16 (uint16x4_t __a, const int __b)
  5975. {
  5976. return (uint16x4_t)__builtin_neon_vdup_lanev4hi ((int16x4_t) __a, __b);
  5977. }
  5978. __extension__ extern __inline uint32x2_t
  5979. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5980. vdup_lane_u32 (uint32x2_t __a, const int __b)
  5981. {
  5982. return (uint32x2_t)__builtin_neon_vdup_lanev2si ((int32x2_t) __a, __b);
  5983. }
  5984. __extension__ extern __inline poly8x8_t
  5985. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5986. vdup_lane_p8 (poly8x8_t __a, const int __b)
  5987. {
  5988. return (poly8x8_t)__builtin_neon_vdup_lanev8qi ((int8x8_t) __a, __b);
  5989. }
  5990. __extension__ extern __inline poly16x4_t
  5991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  5992. vdup_lane_p16 (poly16x4_t __a, const int __b)
  5993. {
  5994. return (poly16x4_t)__builtin_neon_vdup_lanev4hi ((int16x4_t) __a, __b);
  5995. }
  5996. #pragma GCC push_options
  5997. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  5998. __extension__ extern __inline poly64x1_t
  5999. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6000. vdup_lane_p64 (poly64x1_t __a, const int __b)
  6001. {
  6002. return (poly64x1_t)__builtin_neon_vdup_lanedi (__a, __b);
  6003. }
  6004. #pragma GCC pop_options
  6005. __extension__ extern __inline int64x1_t
  6006. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6007. vdup_lane_s64 (int64x1_t __a, const int __b)
  6008. {
  6009. return (int64x1_t)__builtin_neon_vdup_lanedi (__a, __b);
  6010. }
  6011. __extension__ extern __inline uint64x1_t
  6012. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6013. vdup_lane_u64 (uint64x1_t __a, const int __b)
  6014. {
  6015. return (uint64x1_t)__builtin_neon_vdup_lanedi ((int64x1_t) __a, __b);
  6016. }
  6017. __extension__ extern __inline int8x16_t
  6018. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6019. vdupq_lane_s8 (int8x8_t __a, const int __b)
  6020. {
  6021. return (int8x16_t)__builtin_neon_vdup_lanev16qi (__a, __b);
  6022. }
  6023. __extension__ extern __inline int16x8_t
  6024. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6025. vdupq_lane_s16 (int16x4_t __a, const int __b)
  6026. {
  6027. return (int16x8_t)__builtin_neon_vdup_lanev8hi (__a, __b);
  6028. }
  6029. __extension__ extern __inline int32x4_t
  6030. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6031. vdupq_lane_s32 (int32x2_t __a, const int __b)
  6032. {
  6033. return (int32x4_t)__builtin_neon_vdup_lanev4si (__a, __b);
  6034. }
  6035. __extension__ extern __inline float32x4_t
  6036. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6037. vdupq_lane_f32 (float32x2_t __a, const int __b)
  6038. {
  6039. return (float32x4_t)__builtin_neon_vdup_lanev4sf (__a, __b);
  6040. }
  6041. __extension__ extern __inline uint8x16_t
  6042. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6043. vdupq_lane_u8 (uint8x8_t __a, const int __b)
  6044. {
  6045. return (uint8x16_t)__builtin_neon_vdup_lanev16qi ((int8x8_t) __a, __b);
  6046. }
  6047. __extension__ extern __inline uint16x8_t
  6048. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6049. vdupq_lane_u16 (uint16x4_t __a, const int __b)
  6050. {
  6051. return (uint16x8_t)__builtin_neon_vdup_lanev8hi ((int16x4_t) __a, __b);
  6052. }
  6053. __extension__ extern __inline uint32x4_t
  6054. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6055. vdupq_lane_u32 (uint32x2_t __a, const int __b)
  6056. {
  6057. return (uint32x4_t)__builtin_neon_vdup_lanev4si ((int32x2_t) __a, __b);
  6058. }
  6059. __extension__ extern __inline poly8x16_t
  6060. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6061. vdupq_lane_p8 (poly8x8_t __a, const int __b)
  6062. {
  6063. return (poly8x16_t)__builtin_neon_vdup_lanev16qi ((int8x8_t) __a, __b);
  6064. }
  6065. __extension__ extern __inline poly16x8_t
  6066. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6067. vdupq_lane_p16 (poly16x4_t __a, const int __b)
  6068. {
  6069. return (poly16x8_t)__builtin_neon_vdup_lanev8hi ((int16x4_t) __a, __b);
  6070. }
  6071. #pragma GCC push_options
  6072. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  6073. __extension__ extern __inline poly64x2_t
  6074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6075. vdupq_lane_p64 (poly64x1_t __a, const int __b)
  6076. {
  6077. return (poly64x2_t)__builtin_neon_vdup_lanev2di (__a, __b);
  6078. }
  6079. #pragma GCC pop_options
  6080. __extension__ extern __inline int64x2_t
  6081. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6082. vdupq_lane_s64 (int64x1_t __a, const int __b)
  6083. {
  6084. return (int64x2_t)__builtin_neon_vdup_lanev2di (__a, __b);
  6085. }
  6086. __extension__ extern __inline uint64x2_t
  6087. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6088. vdupq_lane_u64 (uint64x1_t __a, const int __b)
  6089. {
  6090. return (uint64x2_t)__builtin_neon_vdup_lanev2di ((int64x1_t) __a, __b);
  6091. }
  6092. #pragma GCC push_options
  6093. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  6094. __extension__ extern __inline poly64x2_t
  6095. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6096. vcombine_p64 (poly64x1_t __a, poly64x1_t __b)
  6097. {
  6098. return (poly64x2_t)__builtin_neon_vcombinedi (__a, __b);
  6099. }
  6100. #pragma GCC pop_options
  6101. __extension__ extern __inline int8x16_t
  6102. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6103. vcombine_s8 (int8x8_t __a, int8x8_t __b)
  6104. {
  6105. return (int8x16_t)__builtin_neon_vcombinev8qi (__a, __b);
  6106. }
  6107. __extension__ extern __inline int16x8_t
  6108. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6109. vcombine_s16 (int16x4_t __a, int16x4_t __b)
  6110. {
  6111. return (int16x8_t)__builtin_neon_vcombinev4hi (__a, __b);
  6112. }
  6113. __extension__ extern __inline int32x4_t
  6114. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6115. vcombine_s32 (int32x2_t __a, int32x2_t __b)
  6116. {
  6117. return (int32x4_t)__builtin_neon_vcombinev2si (__a, __b);
  6118. }
  6119. __extension__ extern __inline int64x2_t
  6120. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6121. vcombine_s64 (int64x1_t __a, int64x1_t __b)
  6122. {
  6123. return (int64x2_t)__builtin_neon_vcombinedi (__a, __b);
  6124. }
  6125. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  6126. __extension__ extern __inline float16x8_t
  6127. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6128. vcombine_f16 (float16x4_t __a, float16x4_t __b)
  6129. {
  6130. return __builtin_neon_vcombinev4hf (__a, __b);
  6131. }
  6132. #endif
  6133. __extension__ extern __inline float32x4_t
  6134. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6135. vcombine_f32 (float32x2_t __a, float32x2_t __b)
  6136. {
  6137. return (float32x4_t)__builtin_neon_vcombinev2sf (__a, __b);
  6138. }
  6139. __extension__ extern __inline uint8x16_t
  6140. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6141. vcombine_u8 (uint8x8_t __a, uint8x8_t __b)
  6142. {
  6143. return (uint8x16_t)__builtin_neon_vcombinev8qi ((int8x8_t) __a, (int8x8_t) __b);
  6144. }
  6145. __extension__ extern __inline uint16x8_t
  6146. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6147. vcombine_u16 (uint16x4_t __a, uint16x4_t __b)
  6148. {
  6149. return (uint16x8_t)__builtin_neon_vcombinev4hi ((int16x4_t) __a, (int16x4_t) __b);
  6150. }
  6151. __extension__ extern __inline uint32x4_t
  6152. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6153. vcombine_u32 (uint32x2_t __a, uint32x2_t __b)
  6154. {
  6155. return (uint32x4_t)__builtin_neon_vcombinev2si ((int32x2_t) __a, (int32x2_t) __b);
  6156. }
  6157. __extension__ extern __inline uint64x2_t
  6158. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6159. vcombine_u64 (uint64x1_t __a, uint64x1_t __b)
  6160. {
  6161. return (uint64x2_t)__builtin_neon_vcombinedi ((int64x1_t) __a, (int64x1_t) __b);
  6162. }
  6163. __extension__ extern __inline poly8x16_t
  6164. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6165. vcombine_p8 (poly8x8_t __a, poly8x8_t __b)
  6166. {
  6167. return (poly8x16_t)__builtin_neon_vcombinev8qi ((int8x8_t) __a, (int8x8_t) __b);
  6168. }
  6169. __extension__ extern __inline poly16x8_t
  6170. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6171. vcombine_p16 (poly16x4_t __a, poly16x4_t __b)
  6172. {
  6173. return (poly16x8_t)__builtin_neon_vcombinev4hi ((int16x4_t) __a, (int16x4_t) __b);
  6174. }
  6175. #pragma GCC push_options
  6176. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  6177. __extension__ extern __inline poly64x1_t
  6178. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6179. vget_high_p64 (poly64x2_t __a)
  6180. {
  6181. return (poly64x1_t)__builtin_neon_vget_highv2di ((int64x2_t) __a);
  6182. }
  6183. #pragma GCC pop_options
  6184. __extension__ extern __inline int8x8_t
  6185. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6186. vget_high_s8 (int8x16_t __a)
  6187. {
  6188. return (int8x8_t)__builtin_neon_vget_highv16qi (__a);
  6189. }
  6190. __extension__ extern __inline int16x4_t
  6191. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6192. vget_high_s16 (int16x8_t __a)
  6193. {
  6194. return (int16x4_t)__builtin_neon_vget_highv8hi (__a);
  6195. }
  6196. __extension__ extern __inline int32x2_t
  6197. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6198. vget_high_s32 (int32x4_t __a)
  6199. {
  6200. return (int32x2_t)__builtin_neon_vget_highv4si (__a);
  6201. }
  6202. __extension__ extern __inline int64x1_t
  6203. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6204. vget_high_s64 (int64x2_t __a)
  6205. {
  6206. return (int64x1_t)__builtin_neon_vget_highv2di (__a);
  6207. }
  6208. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  6209. __extension__ extern __inline float16x4_t
  6210. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6211. vget_high_f16 (float16x8_t __a)
  6212. {
  6213. return __builtin_neon_vget_highv8hf (__a);
  6214. }
  6215. #endif
  6216. __extension__ extern __inline float32x2_t
  6217. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6218. vget_high_f32 (float32x4_t __a)
  6219. {
  6220. return (float32x2_t)__builtin_neon_vget_highv4sf (__a);
  6221. }
  6222. __extension__ extern __inline uint8x8_t
  6223. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6224. vget_high_u8 (uint8x16_t __a)
  6225. {
  6226. return (uint8x8_t)__builtin_neon_vget_highv16qi ((int8x16_t) __a);
  6227. }
  6228. __extension__ extern __inline uint16x4_t
  6229. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6230. vget_high_u16 (uint16x8_t __a)
  6231. {
  6232. return (uint16x4_t)__builtin_neon_vget_highv8hi ((int16x8_t) __a);
  6233. }
  6234. __extension__ extern __inline uint32x2_t
  6235. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6236. vget_high_u32 (uint32x4_t __a)
  6237. {
  6238. return (uint32x2_t)__builtin_neon_vget_highv4si ((int32x4_t) __a);
  6239. }
  6240. __extension__ extern __inline uint64x1_t
  6241. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6242. vget_high_u64 (uint64x2_t __a)
  6243. {
  6244. return (uint64x1_t)__builtin_neon_vget_highv2di ((int64x2_t) __a);
  6245. }
  6246. __extension__ extern __inline poly8x8_t
  6247. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6248. vget_high_p8 (poly8x16_t __a)
  6249. {
  6250. return (poly8x8_t)__builtin_neon_vget_highv16qi ((int8x16_t) __a);
  6251. }
  6252. __extension__ extern __inline poly16x4_t
  6253. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6254. vget_high_p16 (poly16x8_t __a)
  6255. {
  6256. return (poly16x4_t)__builtin_neon_vget_highv8hi ((int16x8_t) __a);
  6257. }
  6258. __extension__ extern __inline int8x8_t
  6259. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6260. vget_low_s8 (int8x16_t __a)
  6261. {
  6262. return (int8x8_t)__builtin_neon_vget_lowv16qi (__a);
  6263. }
  6264. __extension__ extern __inline int16x4_t
  6265. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6266. vget_low_s16 (int16x8_t __a)
  6267. {
  6268. return (int16x4_t)__builtin_neon_vget_lowv8hi (__a);
  6269. }
  6270. __extension__ extern __inline int32x2_t
  6271. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6272. vget_low_s32 (int32x4_t __a)
  6273. {
  6274. return (int32x2_t)__builtin_neon_vget_lowv4si (__a);
  6275. }
  6276. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  6277. __extension__ extern __inline float16x4_t
  6278. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6279. vget_low_f16 (float16x8_t __a)
  6280. {
  6281. return __builtin_neon_vget_lowv8hf (__a);
  6282. }
  6283. #endif
  6284. __extension__ extern __inline float32x2_t
  6285. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6286. vget_low_f32 (float32x4_t __a)
  6287. {
  6288. return (float32x2_t)__builtin_neon_vget_lowv4sf (__a);
  6289. }
  6290. __extension__ extern __inline uint8x8_t
  6291. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6292. vget_low_u8 (uint8x16_t __a)
  6293. {
  6294. return (uint8x8_t)__builtin_neon_vget_lowv16qi ((int8x16_t) __a);
  6295. }
  6296. __extension__ extern __inline uint16x4_t
  6297. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6298. vget_low_u16 (uint16x8_t __a)
  6299. {
  6300. return (uint16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a);
  6301. }
  6302. __extension__ extern __inline uint32x2_t
  6303. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6304. vget_low_u32 (uint32x4_t __a)
  6305. {
  6306. return (uint32x2_t)__builtin_neon_vget_lowv4si ((int32x4_t) __a);
  6307. }
  6308. __extension__ extern __inline poly8x8_t
  6309. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6310. vget_low_p8 (poly8x16_t __a)
  6311. {
  6312. return (poly8x8_t)__builtin_neon_vget_lowv16qi ((int8x16_t) __a);
  6313. }
  6314. __extension__ extern __inline poly16x4_t
  6315. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6316. vget_low_p16 (poly16x8_t __a)
  6317. {
  6318. return (poly16x4_t)__builtin_neon_vget_lowv8hi ((int16x8_t) __a);
  6319. }
  6320. #pragma GCC push_options
  6321. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  6322. __extension__ extern __inline poly64x1_t
  6323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6324. vget_low_p64 (poly64x2_t __a)
  6325. {
  6326. return (poly64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
  6327. }
  6328. #pragma GCC pop_options
  6329. __extension__ extern __inline int64x1_t
  6330. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6331. vget_low_s64 (int64x2_t __a)
  6332. {
  6333. return (int64x1_t)__builtin_neon_vget_lowv2di (__a);
  6334. }
  6335. __extension__ extern __inline uint64x1_t
  6336. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6337. vget_low_u64 (uint64x2_t __a)
  6338. {
  6339. return (uint64x1_t)__builtin_neon_vget_lowv2di ((int64x2_t) __a);
  6340. }
  6341. __extension__ extern __inline int32x2_t
  6342. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6343. vcvt_s32_f32 (float32x2_t __a)
  6344. {
  6345. return (int32x2_t)__builtin_neon_vcvtsv2sf (__a);
  6346. }
  6347. __extension__ extern __inline float32x2_t
  6348. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6349. vcvt_f32_s32 (int32x2_t __a)
  6350. {
  6351. return (float32x2_t)__builtin_neon_vcvtsv2si (__a);
  6352. }
  6353. __extension__ extern __inline float32x2_t
  6354. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6355. vcvt_f32_u32 (uint32x2_t __a)
  6356. {
  6357. return (float32x2_t)__builtin_neon_vcvtuv2si ((int32x2_t) __a);
  6358. }
  6359. __extension__ extern __inline uint32x2_t
  6360. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6361. vcvt_u32_f32 (float32x2_t __a)
  6362. {
  6363. return (uint32x2_t)__builtin_neon_vcvtuv2sf (__a);
  6364. }
  6365. __extension__ extern __inline int32x4_t
  6366. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6367. vcvtq_s32_f32 (float32x4_t __a)
  6368. {
  6369. return (int32x4_t)__builtin_neon_vcvtsv4sf (__a);
  6370. }
  6371. __extension__ extern __inline float32x4_t
  6372. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6373. vcvtq_f32_s32 (int32x4_t __a)
  6374. {
  6375. return (float32x4_t)__builtin_neon_vcvtsv4si (__a);
  6376. }
  6377. __extension__ extern __inline float32x4_t
  6378. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6379. vcvtq_f32_u32 (uint32x4_t __a)
  6380. {
  6381. return (float32x4_t)__builtin_neon_vcvtuv4si ((int32x4_t) __a);
  6382. }
  6383. __extension__ extern __inline uint32x4_t
  6384. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6385. vcvtq_u32_f32 (float32x4_t __a)
  6386. {
  6387. return (uint32x4_t)__builtin_neon_vcvtuv4sf (__a);
  6388. }
  6389. #pragma GCC push_options
  6390. #pragma GCC target ("fpu=neon-fp16")
  6391. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  6392. __extension__ extern __inline float16x4_t
  6393. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6394. vcvt_f16_f32 (float32x4_t __a)
  6395. {
  6396. return (float16x4_t)__builtin_neon_vcvtv4hfv4sf (__a);
  6397. }
  6398. #endif
  6399. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  6400. __extension__ extern __inline float32x4_t
  6401. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6402. vcvt_f32_f16 (float16x4_t __a)
  6403. {
  6404. return (float32x4_t)__builtin_neon_vcvtv4sfv4hf (__a);
  6405. }
  6406. #endif
  6407. #pragma GCC pop_options
  6408. __extension__ extern __inline int32x2_t
  6409. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6410. vcvt_n_s32_f32 (float32x2_t __a, const int __b)
  6411. {
  6412. return (int32x2_t)__builtin_neon_vcvts_nv2sf (__a, __b);
  6413. }
  6414. __extension__ extern __inline float32x2_t
  6415. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6416. vcvt_n_f32_s32 (int32x2_t __a, const int __b)
  6417. {
  6418. return (float32x2_t)__builtin_neon_vcvts_nv2si (__a, __b);
  6419. }
  6420. __extension__ extern __inline float32x2_t
  6421. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6422. vcvt_n_f32_u32 (uint32x2_t __a, const int __b)
  6423. {
  6424. return (float32x2_t)__builtin_neon_vcvtu_nv2si ((int32x2_t) __a, __b);
  6425. }
  6426. __extension__ extern __inline uint32x2_t
  6427. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6428. vcvt_n_u32_f32 (float32x2_t __a, const int __b)
  6429. {
  6430. return (uint32x2_t)__builtin_neon_vcvtu_nv2sf (__a, __b);
  6431. }
  6432. __extension__ extern __inline int32x4_t
  6433. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6434. vcvtq_n_s32_f32 (float32x4_t __a, const int __b)
  6435. {
  6436. return (int32x4_t)__builtin_neon_vcvts_nv4sf (__a, __b);
  6437. }
  6438. __extension__ extern __inline float32x4_t
  6439. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6440. vcvtq_n_f32_s32 (int32x4_t __a, const int __b)
  6441. {
  6442. return (float32x4_t)__builtin_neon_vcvts_nv4si (__a, __b);
  6443. }
  6444. __extension__ extern __inline float32x4_t
  6445. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6446. vcvtq_n_f32_u32 (uint32x4_t __a, const int __b)
  6447. {
  6448. return (float32x4_t)__builtin_neon_vcvtu_nv4si ((int32x4_t) __a, __b);
  6449. }
  6450. __extension__ extern __inline uint32x4_t
  6451. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6452. vcvtq_n_u32_f32 (float32x4_t __a, const int __b)
  6453. {
  6454. return (uint32x4_t)__builtin_neon_vcvtu_nv4sf (__a, __b);
  6455. }
  6456. __extension__ extern __inline int8x8_t
  6457. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6458. vmovn_s16 (int16x8_t __a)
  6459. {
  6460. return (int8x8_t)__builtin_neon_vmovnv8hi (__a);
  6461. }
  6462. __extension__ extern __inline int16x4_t
  6463. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6464. vmovn_s32 (int32x4_t __a)
  6465. {
  6466. return (int16x4_t)__builtin_neon_vmovnv4si (__a);
  6467. }
  6468. __extension__ extern __inline int32x2_t
  6469. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6470. vmovn_s64 (int64x2_t __a)
  6471. {
  6472. return (int32x2_t)__builtin_neon_vmovnv2di (__a);
  6473. }
  6474. __extension__ extern __inline uint8x8_t
  6475. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6476. vmovn_u16 (uint16x8_t __a)
  6477. {
  6478. return (uint8x8_t)__builtin_neon_vmovnv8hi ((int16x8_t) __a);
  6479. }
  6480. __extension__ extern __inline uint16x4_t
  6481. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6482. vmovn_u32 (uint32x4_t __a)
  6483. {
  6484. return (uint16x4_t)__builtin_neon_vmovnv4si ((int32x4_t) __a);
  6485. }
  6486. __extension__ extern __inline uint32x2_t
  6487. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6488. vmovn_u64 (uint64x2_t __a)
  6489. {
  6490. return (uint32x2_t)__builtin_neon_vmovnv2di ((int64x2_t) __a);
  6491. }
  6492. __extension__ extern __inline int8x8_t
  6493. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6494. vqmovn_s16 (int16x8_t __a)
  6495. {
  6496. return (int8x8_t)__builtin_neon_vqmovnsv8hi (__a);
  6497. }
  6498. __extension__ extern __inline int16x4_t
  6499. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6500. vqmovn_s32 (int32x4_t __a)
  6501. {
  6502. return (int16x4_t)__builtin_neon_vqmovnsv4si (__a);
  6503. }
  6504. __extension__ extern __inline int32x2_t
  6505. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6506. vqmovn_s64 (int64x2_t __a)
  6507. {
  6508. return (int32x2_t)__builtin_neon_vqmovnsv2di (__a);
  6509. }
  6510. __extension__ extern __inline uint8x8_t
  6511. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6512. vqmovn_u16 (uint16x8_t __a)
  6513. {
  6514. return (uint8x8_t)__builtin_neon_vqmovnuv8hi ((int16x8_t) __a);
  6515. }
  6516. __extension__ extern __inline uint16x4_t
  6517. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6518. vqmovn_u32 (uint32x4_t __a)
  6519. {
  6520. return (uint16x4_t)__builtin_neon_vqmovnuv4si ((int32x4_t) __a);
  6521. }
  6522. __extension__ extern __inline uint32x2_t
  6523. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6524. vqmovn_u64 (uint64x2_t __a)
  6525. {
  6526. return (uint32x2_t)__builtin_neon_vqmovnuv2di ((int64x2_t) __a);
  6527. }
  6528. __extension__ extern __inline uint8x8_t
  6529. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6530. vqmovun_s16 (int16x8_t __a)
  6531. {
  6532. return (uint8x8_t)__builtin_neon_vqmovunv8hi (__a);
  6533. }
  6534. __extension__ extern __inline uint16x4_t
  6535. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6536. vqmovun_s32 (int32x4_t __a)
  6537. {
  6538. return (uint16x4_t)__builtin_neon_vqmovunv4si (__a);
  6539. }
  6540. __extension__ extern __inline uint32x2_t
  6541. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6542. vqmovun_s64 (int64x2_t __a)
  6543. {
  6544. return (uint32x2_t)__builtin_neon_vqmovunv2di (__a);
  6545. }
  6546. __extension__ extern __inline int16x8_t
  6547. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6548. vmovl_s8 (int8x8_t __a)
  6549. {
  6550. return (int16x8_t)__builtin_neon_vmovlsv8qi (__a);
  6551. }
  6552. __extension__ extern __inline int32x4_t
  6553. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6554. vmovl_s16 (int16x4_t __a)
  6555. {
  6556. return (int32x4_t)__builtin_neon_vmovlsv4hi (__a);
  6557. }
  6558. __extension__ extern __inline int64x2_t
  6559. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6560. vmovl_s32 (int32x2_t __a)
  6561. {
  6562. return (int64x2_t)__builtin_neon_vmovlsv2si (__a);
  6563. }
  6564. __extension__ extern __inline uint16x8_t
  6565. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6566. vmovl_u8 (uint8x8_t __a)
  6567. {
  6568. return (uint16x8_t)__builtin_neon_vmovluv8qi ((int8x8_t) __a);
  6569. }
  6570. __extension__ extern __inline uint32x4_t
  6571. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6572. vmovl_u16 (uint16x4_t __a)
  6573. {
  6574. return (uint32x4_t)__builtin_neon_vmovluv4hi ((int16x4_t) __a);
  6575. }
  6576. __extension__ extern __inline uint64x2_t
  6577. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6578. vmovl_u32 (uint32x2_t __a)
  6579. {
  6580. return (uint64x2_t)__builtin_neon_vmovluv2si ((int32x2_t) __a);
  6581. }
  6582. __extension__ extern __inline int8x8_t
  6583. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6584. vtbl1_s8 (int8x8_t __a, int8x8_t __b)
  6585. {
  6586. return (int8x8_t)__builtin_neon_vtbl1v8qi (__a, __b);
  6587. }
  6588. __extension__ extern __inline uint8x8_t
  6589. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6590. vtbl1_u8 (uint8x8_t __a, uint8x8_t __b)
  6591. {
  6592. return (uint8x8_t)__builtin_neon_vtbl1v8qi ((int8x8_t) __a, (int8x8_t) __b);
  6593. }
  6594. __extension__ extern __inline poly8x8_t
  6595. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6596. vtbl1_p8 (poly8x8_t __a, uint8x8_t __b)
  6597. {
  6598. return (poly8x8_t)__builtin_neon_vtbl1v8qi ((int8x8_t) __a, (int8x8_t) __b);
  6599. }
  6600. __extension__ extern __inline int8x8_t
  6601. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6602. vtbl2_s8 (int8x8x2_t __a, int8x8_t __b)
  6603. {
  6604. union { int8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
  6605. return (int8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, __b);
  6606. }
  6607. __extension__ extern __inline uint8x8_t
  6608. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6609. vtbl2_u8 (uint8x8x2_t __a, uint8x8_t __b)
  6610. {
  6611. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
  6612. return (uint8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, (int8x8_t) __b);
  6613. }
  6614. __extension__ extern __inline poly8x8_t
  6615. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6616. vtbl2_p8 (poly8x8x2_t __a, uint8x8_t __b)
  6617. {
  6618. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __au = { __a };
  6619. return (poly8x8_t)__builtin_neon_vtbl2v8qi (__au.__o, (int8x8_t) __b);
  6620. }
  6621. __extension__ extern __inline int8x8_t
  6622. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6623. vtbl3_s8 (int8x8x3_t __a, int8x8_t __b)
  6624. {
  6625. union { int8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
  6626. return (int8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, __b);
  6627. }
  6628. __extension__ extern __inline uint8x8_t
  6629. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6630. vtbl3_u8 (uint8x8x3_t __a, uint8x8_t __b)
  6631. {
  6632. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
  6633. return (uint8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, (int8x8_t) __b);
  6634. }
  6635. __extension__ extern __inline poly8x8_t
  6636. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6637. vtbl3_p8 (poly8x8x3_t __a, uint8x8_t __b)
  6638. {
  6639. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __au = { __a };
  6640. return (poly8x8_t)__builtin_neon_vtbl3v8qi (__au.__o, (int8x8_t) __b);
  6641. }
  6642. __extension__ extern __inline int8x8_t
  6643. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6644. vtbl4_s8 (int8x8x4_t __a, int8x8_t __b)
  6645. {
  6646. union { int8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
  6647. return (int8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, __b);
  6648. }
  6649. __extension__ extern __inline uint8x8_t
  6650. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6651. vtbl4_u8 (uint8x8x4_t __a, uint8x8_t __b)
  6652. {
  6653. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
  6654. return (uint8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, (int8x8_t) __b);
  6655. }
  6656. __extension__ extern __inline poly8x8_t
  6657. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6658. vtbl4_p8 (poly8x8x4_t __a, uint8x8_t __b)
  6659. {
  6660. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __au = { __a };
  6661. return (poly8x8_t)__builtin_neon_vtbl4v8qi (__au.__o, (int8x8_t) __b);
  6662. }
  6663. __extension__ extern __inline int8x8_t
  6664. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6665. vtbx1_s8 (int8x8_t __a, int8x8_t __b, int8x8_t __c)
  6666. {
  6667. return (int8x8_t)__builtin_neon_vtbx1v8qi (__a, __b, __c);
  6668. }
  6669. __extension__ extern __inline uint8x8_t
  6670. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6671. vtbx1_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  6672. {
  6673. return (uint8x8_t)__builtin_neon_vtbx1v8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  6674. }
  6675. __extension__ extern __inline poly8x8_t
  6676. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6677. vtbx1_p8 (poly8x8_t __a, poly8x8_t __b, uint8x8_t __c)
  6678. {
  6679. return (poly8x8_t)__builtin_neon_vtbx1v8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  6680. }
  6681. __extension__ extern __inline int8x8_t
  6682. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6683. vtbx2_s8 (int8x8_t __a, int8x8x2_t __b, int8x8_t __c)
  6684. {
  6685. union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  6686. return (int8x8_t)__builtin_neon_vtbx2v8qi (__a, __bu.__o, __c);
  6687. }
  6688. __extension__ extern __inline uint8x8_t
  6689. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6690. vtbx2_u8 (uint8x8_t __a, uint8x8x2_t __b, uint8x8_t __c)
  6691. {
  6692. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  6693. return (uint8x8_t)__builtin_neon_vtbx2v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6694. }
  6695. __extension__ extern __inline poly8x8_t
  6696. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6697. vtbx2_p8 (poly8x8_t __a, poly8x8x2_t __b, uint8x8_t __c)
  6698. {
  6699. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  6700. return (poly8x8_t)__builtin_neon_vtbx2v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6701. }
  6702. __extension__ extern __inline int8x8_t
  6703. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6704. vtbx3_s8 (int8x8_t __a, int8x8x3_t __b, int8x8_t __c)
  6705. {
  6706. union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  6707. return (int8x8_t)__builtin_neon_vtbx3v8qi (__a, __bu.__o, __c);
  6708. }
  6709. __extension__ extern __inline uint8x8_t
  6710. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6711. vtbx3_u8 (uint8x8_t __a, uint8x8x3_t __b, uint8x8_t __c)
  6712. {
  6713. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  6714. return (uint8x8_t)__builtin_neon_vtbx3v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6715. }
  6716. __extension__ extern __inline poly8x8_t
  6717. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6718. vtbx3_p8 (poly8x8_t __a, poly8x8x3_t __b, uint8x8_t __c)
  6719. {
  6720. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  6721. return (poly8x8_t)__builtin_neon_vtbx3v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6722. }
  6723. __extension__ extern __inline int8x8_t
  6724. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6725. vtbx4_s8 (int8x8_t __a, int8x8x4_t __b, int8x8_t __c)
  6726. {
  6727. union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  6728. return (int8x8_t)__builtin_neon_vtbx4v8qi (__a, __bu.__o, __c);
  6729. }
  6730. __extension__ extern __inline uint8x8_t
  6731. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6732. vtbx4_u8 (uint8x8_t __a, uint8x8x4_t __b, uint8x8_t __c)
  6733. {
  6734. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  6735. return (uint8x8_t)__builtin_neon_vtbx4v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6736. }
  6737. __extension__ extern __inline poly8x8_t
  6738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6739. vtbx4_p8 (poly8x8_t __a, poly8x8x4_t __b, uint8x8_t __c)
  6740. {
  6741. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  6742. return (poly8x8_t)__builtin_neon_vtbx4v8qi ((int8x8_t) __a, __bu.__o, (int8x8_t) __c);
  6743. }
  6744. __extension__ extern __inline int16x4_t
  6745. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6746. vmul_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  6747. {
  6748. return (int16x4_t)__builtin_neon_vmul_lanev4hi (__a, __b, __c);
  6749. }
  6750. __extension__ extern __inline int32x2_t
  6751. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6752. vmul_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  6753. {
  6754. return (int32x2_t)__builtin_neon_vmul_lanev2si (__a, __b, __c);
  6755. }
  6756. __extension__ extern __inline float32x2_t
  6757. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6758. vmul_lane_f32 (float32x2_t __a, float32x2_t __b, const int __c)
  6759. {
  6760. return (float32x2_t)__builtin_neon_vmul_lanev2sf (__a, __b, __c);
  6761. }
  6762. __extension__ extern __inline uint16x4_t
  6763. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6764. vmul_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  6765. {
  6766. return (uint16x4_t)__builtin_neon_vmul_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  6767. }
  6768. __extension__ extern __inline uint32x2_t
  6769. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6770. vmul_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  6771. {
  6772. return (uint32x2_t)__builtin_neon_vmul_lanev2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  6773. }
  6774. __extension__ extern __inline int16x8_t
  6775. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6776. vmulq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
  6777. {
  6778. return (int16x8_t)__builtin_neon_vmul_lanev8hi (__a, __b, __c);
  6779. }
  6780. __extension__ extern __inline int32x4_t
  6781. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6782. vmulq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
  6783. {
  6784. return (int32x4_t)__builtin_neon_vmul_lanev4si (__a, __b, __c);
  6785. }
  6786. __extension__ extern __inline float32x4_t
  6787. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6788. vmulq_lane_f32 (float32x4_t __a, float32x2_t __b, const int __c)
  6789. {
  6790. return (float32x4_t)__builtin_neon_vmul_lanev4sf (__a, __b, __c);
  6791. }
  6792. __extension__ extern __inline uint16x8_t
  6793. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6794. vmulq_lane_u16 (uint16x8_t __a, uint16x4_t __b, const int __c)
  6795. {
  6796. return (uint16x8_t)__builtin_neon_vmul_lanev8hi ((int16x8_t) __a, (int16x4_t) __b, __c);
  6797. }
  6798. __extension__ extern __inline uint32x4_t
  6799. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6800. vmulq_lane_u32 (uint32x4_t __a, uint32x2_t __b, const int __c)
  6801. {
  6802. return (uint32x4_t)__builtin_neon_vmul_lanev4si ((int32x4_t) __a, (int32x2_t) __b, __c);
  6803. }
  6804. __extension__ extern __inline int16x4_t
  6805. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6806. vmla_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6807. {
  6808. return (int16x4_t)__builtin_neon_vmla_lanev4hi (__a, __b, __c, __d);
  6809. }
  6810. __extension__ extern __inline int32x2_t
  6811. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6812. vmla_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6813. {
  6814. return (int32x2_t)__builtin_neon_vmla_lanev2si (__a, __b, __c, __d);
  6815. }
  6816. __extension__ extern __inline float32x2_t
  6817. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6818. vmla_lane_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c, const int __d)
  6819. {
  6820. return (float32x2_t)__builtin_neon_vmla_lanev2sf (__a, __b, __c, __d);
  6821. }
  6822. __extension__ extern __inline uint16x4_t
  6823. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6824. vmla_lane_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
  6825. {
  6826. return (uint16x4_t)__builtin_neon_vmla_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
  6827. }
  6828. __extension__ extern __inline uint32x2_t
  6829. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6830. vmla_lane_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
  6831. {
  6832. return (uint32x2_t)__builtin_neon_vmla_lanev2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
  6833. }
  6834. __extension__ extern __inline int16x8_t
  6835. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6836. vmlaq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
  6837. {
  6838. return (int16x8_t)__builtin_neon_vmla_lanev8hi (__a, __b, __c, __d);
  6839. }
  6840. __extension__ extern __inline int32x4_t
  6841. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6842. vmlaq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
  6843. {
  6844. return (int32x4_t)__builtin_neon_vmla_lanev4si (__a, __b, __c, __d);
  6845. }
  6846. __extension__ extern __inline float32x4_t
  6847. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6848. vmlaq_lane_f32 (float32x4_t __a, float32x4_t __b, float32x2_t __c, const int __d)
  6849. {
  6850. return (float32x4_t)__builtin_neon_vmla_lanev4sf (__a, __b, __c, __d);
  6851. }
  6852. __extension__ extern __inline uint16x8_t
  6853. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6854. vmlaq_lane_u16 (uint16x8_t __a, uint16x8_t __b, uint16x4_t __c, const int __d)
  6855. {
  6856. return (uint16x8_t)__builtin_neon_vmla_lanev8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x4_t) __c, __d);
  6857. }
  6858. __extension__ extern __inline uint32x4_t
  6859. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6860. vmlaq_lane_u32 (uint32x4_t __a, uint32x4_t __b, uint32x2_t __c, const int __d)
  6861. {
  6862. return (uint32x4_t)__builtin_neon_vmla_lanev4si ((int32x4_t) __a, (int32x4_t) __b, (int32x2_t) __c, __d);
  6863. }
  6864. __extension__ extern __inline int32x4_t
  6865. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6866. vmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6867. {
  6868. return (int32x4_t)__builtin_neon_vmlals_lanev4hi (__a, __b, __c, __d);
  6869. }
  6870. __extension__ extern __inline int64x2_t
  6871. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6872. vmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6873. {
  6874. return (int64x2_t)__builtin_neon_vmlals_lanev2si (__a, __b, __c, __d);
  6875. }
  6876. __extension__ extern __inline uint32x4_t
  6877. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6878. vmlal_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
  6879. {
  6880. return (uint32x4_t)__builtin_neon_vmlalu_lanev4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
  6881. }
  6882. __extension__ extern __inline uint64x2_t
  6883. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6884. vmlal_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
  6885. {
  6886. return (uint64x2_t)__builtin_neon_vmlalu_lanev2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
  6887. }
  6888. __extension__ extern __inline int32x4_t
  6889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6890. vqdmlal_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6891. {
  6892. return (int32x4_t)__builtin_neon_vqdmlal_lanev4hi (__a, __b, __c, __d);
  6893. }
  6894. __extension__ extern __inline int64x2_t
  6895. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6896. vqdmlal_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6897. {
  6898. return (int64x2_t)__builtin_neon_vqdmlal_lanev2si (__a, __b, __c, __d);
  6899. }
  6900. __extension__ extern __inline int16x4_t
  6901. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6902. vmls_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6903. {
  6904. return (int16x4_t)__builtin_neon_vmls_lanev4hi (__a, __b, __c, __d);
  6905. }
  6906. __extension__ extern __inline int32x2_t
  6907. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6908. vmls_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6909. {
  6910. return (int32x2_t)__builtin_neon_vmls_lanev2si (__a, __b, __c, __d);
  6911. }
  6912. __extension__ extern __inline float32x2_t
  6913. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6914. vmls_lane_f32 (float32x2_t __a, float32x2_t __b, float32x2_t __c, const int __d)
  6915. {
  6916. return (float32x2_t)__builtin_neon_vmls_lanev2sf (__a, __b, __c, __d);
  6917. }
  6918. __extension__ extern __inline uint16x4_t
  6919. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6920. vmls_lane_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
  6921. {
  6922. return (uint16x4_t)__builtin_neon_vmls_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
  6923. }
  6924. __extension__ extern __inline uint32x2_t
  6925. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6926. vmls_lane_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
  6927. {
  6928. return (uint32x2_t)__builtin_neon_vmls_lanev2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
  6929. }
  6930. __extension__ extern __inline int16x8_t
  6931. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6932. vmlsq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
  6933. {
  6934. return (int16x8_t)__builtin_neon_vmls_lanev8hi (__a, __b, __c, __d);
  6935. }
  6936. __extension__ extern __inline int32x4_t
  6937. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6938. vmlsq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
  6939. {
  6940. return (int32x4_t)__builtin_neon_vmls_lanev4si (__a, __b, __c, __d);
  6941. }
  6942. __extension__ extern __inline float32x4_t
  6943. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6944. vmlsq_lane_f32 (float32x4_t __a, float32x4_t __b, float32x2_t __c, const int __d)
  6945. {
  6946. return (float32x4_t)__builtin_neon_vmls_lanev4sf (__a, __b, __c, __d);
  6947. }
  6948. __extension__ extern __inline uint16x8_t
  6949. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6950. vmlsq_lane_u16 (uint16x8_t __a, uint16x8_t __b, uint16x4_t __c, const int __d)
  6951. {
  6952. return (uint16x8_t)__builtin_neon_vmls_lanev8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x4_t) __c, __d);
  6953. }
  6954. __extension__ extern __inline uint32x4_t
  6955. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6956. vmlsq_lane_u32 (uint32x4_t __a, uint32x4_t __b, uint32x2_t __c, const int __d)
  6957. {
  6958. return (uint32x4_t)__builtin_neon_vmls_lanev4si ((int32x4_t) __a, (int32x4_t) __b, (int32x2_t) __c, __d);
  6959. }
  6960. __extension__ extern __inline int32x4_t
  6961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6962. vmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6963. {
  6964. return (int32x4_t)__builtin_neon_vmlsls_lanev4hi (__a, __b, __c, __d);
  6965. }
  6966. __extension__ extern __inline int64x2_t
  6967. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6968. vmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6969. {
  6970. return (int64x2_t)__builtin_neon_vmlsls_lanev2si (__a, __b, __c, __d);
  6971. }
  6972. __extension__ extern __inline uint32x4_t
  6973. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6974. vmlsl_lane_u16 (uint32x4_t __a, uint16x4_t __b, uint16x4_t __c, const int __d)
  6975. {
  6976. return (uint32x4_t)__builtin_neon_vmlslu_lanev4hi ((int32x4_t) __a, (int16x4_t) __b, (int16x4_t) __c, __d);
  6977. }
  6978. __extension__ extern __inline uint64x2_t
  6979. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6980. vmlsl_lane_u32 (uint64x2_t __a, uint32x2_t __b, uint32x2_t __c, const int __d)
  6981. {
  6982. return (uint64x2_t)__builtin_neon_vmlslu_lanev2si ((int64x2_t) __a, (int32x2_t) __b, (int32x2_t) __c, __d);
  6983. }
  6984. __extension__ extern __inline int32x4_t
  6985. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6986. vqdmlsl_lane_s16 (int32x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  6987. {
  6988. return (int32x4_t)__builtin_neon_vqdmlsl_lanev4hi (__a, __b, __c, __d);
  6989. }
  6990. __extension__ extern __inline int64x2_t
  6991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6992. vqdmlsl_lane_s32 (int64x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  6993. {
  6994. return (int64x2_t)__builtin_neon_vqdmlsl_lanev2si (__a, __b, __c, __d);
  6995. }
  6996. __extension__ extern __inline int32x4_t
  6997. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  6998. vmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  6999. {
  7000. return (int32x4_t)__builtin_neon_vmulls_lanev4hi (__a, __b, __c);
  7001. }
  7002. __extension__ extern __inline int64x2_t
  7003. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7004. vmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  7005. {
  7006. return (int64x2_t)__builtin_neon_vmulls_lanev2si (__a, __b, __c);
  7007. }
  7008. __extension__ extern __inline uint32x4_t
  7009. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7010. vmull_lane_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  7011. {
  7012. return (uint32x4_t)__builtin_neon_vmullu_lanev4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  7013. }
  7014. __extension__ extern __inline uint64x2_t
  7015. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7016. vmull_lane_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  7017. {
  7018. return (uint64x2_t)__builtin_neon_vmullu_lanev2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  7019. }
  7020. __extension__ extern __inline int32x4_t
  7021. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7022. vqdmull_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  7023. {
  7024. return (int32x4_t)__builtin_neon_vqdmull_lanev4hi (__a, __b, __c);
  7025. }
  7026. __extension__ extern __inline int64x2_t
  7027. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7028. vqdmull_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  7029. {
  7030. return (int64x2_t)__builtin_neon_vqdmull_lanev2si (__a, __b, __c);
  7031. }
  7032. __extension__ extern __inline int16x8_t
  7033. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7034. vqdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
  7035. {
  7036. return (int16x8_t)__builtin_neon_vqdmulh_lanev8hi (__a, __b, __c);
  7037. }
  7038. __extension__ extern __inline int32x4_t
  7039. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7040. vqdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
  7041. {
  7042. return (int32x4_t)__builtin_neon_vqdmulh_lanev4si (__a, __b, __c);
  7043. }
  7044. __extension__ extern __inline int16x4_t
  7045. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7046. vqdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  7047. {
  7048. return (int16x4_t)__builtin_neon_vqdmulh_lanev4hi (__a, __b, __c);
  7049. }
  7050. __extension__ extern __inline int32x2_t
  7051. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7052. vqdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  7053. {
  7054. return (int32x2_t)__builtin_neon_vqdmulh_lanev2si (__a, __b, __c);
  7055. }
  7056. __extension__ extern __inline int16x8_t
  7057. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7058. vqrdmulhq_lane_s16 (int16x8_t __a, int16x4_t __b, const int __c)
  7059. {
  7060. return (int16x8_t)__builtin_neon_vqrdmulh_lanev8hi (__a, __b, __c);
  7061. }
  7062. __extension__ extern __inline int32x4_t
  7063. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7064. vqrdmulhq_lane_s32 (int32x4_t __a, int32x2_t __b, const int __c)
  7065. {
  7066. return (int32x4_t)__builtin_neon_vqrdmulh_lanev4si (__a, __b, __c);
  7067. }
  7068. __extension__ extern __inline int16x4_t
  7069. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7070. vqrdmulh_lane_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  7071. {
  7072. return (int16x4_t)__builtin_neon_vqrdmulh_lanev4hi (__a, __b, __c);
  7073. }
  7074. __extension__ extern __inline int32x2_t
  7075. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7076. vqrdmulh_lane_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  7077. {
  7078. return (int32x2_t)__builtin_neon_vqrdmulh_lanev2si (__a, __b, __c);
  7079. }
  7080. #ifdef __ARM_FEATURE_QRDMX
  7081. __extension__ extern __inline int16x8_t
  7082. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7083. vqrdmlahq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
  7084. {
  7085. return (int16x8_t)__builtin_neon_vqrdmlah_lanev8hi (__a, __b, __c, __d);
  7086. }
  7087. __extension__ extern __inline int32x4_t
  7088. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7089. vqrdmlahq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
  7090. {
  7091. return (int32x4_t)__builtin_neon_vqrdmlah_lanev4si (__a, __b, __c, __d);
  7092. }
  7093. __extension__ extern __inline int16x4_t
  7094. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7095. vqrdmlah_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  7096. {
  7097. return (int16x4_t)__builtin_neon_vqrdmlah_lanev4hi (__a, __b, __c, __d);
  7098. }
  7099. __extension__ extern __inline int32x2_t
  7100. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7101. vqrdmlah_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  7102. {
  7103. return (int32x2_t)__builtin_neon_vqrdmlah_lanev2si (__a, __b, __c, __d);
  7104. }
  7105. __extension__ extern __inline int16x8_t
  7106. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7107. vqrdmlshq_lane_s16 (int16x8_t __a, int16x8_t __b, int16x4_t __c, const int __d)
  7108. {
  7109. return (int16x8_t)__builtin_neon_vqrdmlsh_lanev8hi (__a, __b, __c, __d);
  7110. }
  7111. __extension__ extern __inline int32x4_t
  7112. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7113. vqrdmlshq_lane_s32 (int32x4_t __a, int32x4_t __b, int32x2_t __c, const int __d)
  7114. {
  7115. return (int32x4_t)__builtin_neon_vqrdmlsh_lanev4si (__a, __b, __c, __d);
  7116. }
  7117. __extension__ extern __inline int16x4_t
  7118. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7119. vqrdmlsh_lane_s16 (int16x4_t __a, int16x4_t __b, int16x4_t __c, const int __d)
  7120. {
  7121. return (int16x4_t)__builtin_neon_vqrdmlsh_lanev4hi (__a, __b, __c, __d);
  7122. }
  7123. __extension__ extern __inline int32x2_t
  7124. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7125. vqrdmlsh_lane_s32 (int32x2_t __a, int32x2_t __b, int32x2_t __c, const int __d)
  7126. {
  7127. return (int32x2_t)__builtin_neon_vqrdmlsh_lanev2si (__a, __b, __c, __d);
  7128. }
  7129. #endif
  7130. __extension__ extern __inline int16x4_t
  7131. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7132. vmul_n_s16 (int16x4_t __a, int16_t __b)
  7133. {
  7134. return (int16x4_t)__builtin_neon_vmul_nv4hi (__a, (__builtin_neon_hi) __b);
  7135. }
  7136. __extension__ extern __inline int32x2_t
  7137. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7138. vmul_n_s32 (int32x2_t __a, int32_t __b)
  7139. {
  7140. return (int32x2_t)__builtin_neon_vmul_nv2si (__a, (__builtin_neon_si) __b);
  7141. }
  7142. __extension__ extern __inline float32x2_t
  7143. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7144. vmul_n_f32 (float32x2_t __a, float32_t __b)
  7145. {
  7146. return (float32x2_t)__builtin_neon_vmul_nv2sf (__a, (__builtin_neon_sf) __b);
  7147. }
  7148. __extension__ extern __inline uint16x4_t
  7149. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7150. vmul_n_u16 (uint16x4_t __a, uint16_t __b)
  7151. {
  7152. return (uint16x4_t)__builtin_neon_vmul_nv4hi ((int16x4_t) __a, (__builtin_neon_hi) __b);
  7153. }
  7154. __extension__ extern __inline uint32x2_t
  7155. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7156. vmul_n_u32 (uint32x2_t __a, uint32_t __b)
  7157. {
  7158. return (uint32x2_t)__builtin_neon_vmul_nv2si ((int32x2_t) __a, (__builtin_neon_si) __b);
  7159. }
  7160. __extension__ extern __inline int16x8_t
  7161. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7162. vmulq_n_s16 (int16x8_t __a, int16_t __b)
  7163. {
  7164. return (int16x8_t)__builtin_neon_vmul_nv8hi (__a, (__builtin_neon_hi) __b);
  7165. }
  7166. __extension__ extern __inline int32x4_t
  7167. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7168. vmulq_n_s32 (int32x4_t __a, int32_t __b)
  7169. {
  7170. return (int32x4_t)__builtin_neon_vmul_nv4si (__a, (__builtin_neon_si) __b);
  7171. }
  7172. __extension__ extern __inline float32x4_t
  7173. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7174. vmulq_n_f32 (float32x4_t __a, float32_t __b)
  7175. {
  7176. return (float32x4_t)__builtin_neon_vmul_nv4sf (__a, (__builtin_neon_sf) __b);
  7177. }
  7178. __extension__ extern __inline uint16x8_t
  7179. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7180. vmulq_n_u16 (uint16x8_t __a, uint16_t __b)
  7181. {
  7182. return (uint16x8_t)__builtin_neon_vmul_nv8hi ((int16x8_t) __a, (__builtin_neon_hi) __b);
  7183. }
  7184. __extension__ extern __inline uint32x4_t
  7185. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7186. vmulq_n_u32 (uint32x4_t __a, uint32_t __b)
  7187. {
  7188. return (uint32x4_t)__builtin_neon_vmul_nv4si ((int32x4_t) __a, (__builtin_neon_si) __b);
  7189. }
  7190. __extension__ extern __inline int32x4_t
  7191. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7192. vmull_n_s16 (int16x4_t __a, int16_t __b)
  7193. {
  7194. return (int32x4_t)__builtin_neon_vmulls_nv4hi (__a, (__builtin_neon_hi) __b);
  7195. }
  7196. __extension__ extern __inline int64x2_t
  7197. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7198. vmull_n_s32 (int32x2_t __a, int32_t __b)
  7199. {
  7200. return (int64x2_t)__builtin_neon_vmulls_nv2si (__a, (__builtin_neon_si) __b);
  7201. }
  7202. __extension__ extern __inline uint32x4_t
  7203. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7204. vmull_n_u16 (uint16x4_t __a, uint16_t __b)
  7205. {
  7206. return (uint32x4_t)__builtin_neon_vmullu_nv4hi ((int16x4_t) __a, (__builtin_neon_hi) __b);
  7207. }
  7208. __extension__ extern __inline uint64x2_t
  7209. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7210. vmull_n_u32 (uint32x2_t __a, uint32_t __b)
  7211. {
  7212. return (uint64x2_t)__builtin_neon_vmullu_nv2si ((int32x2_t) __a, (__builtin_neon_si) __b);
  7213. }
  7214. __extension__ extern __inline int32x4_t
  7215. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7216. vqdmull_n_s16 (int16x4_t __a, int16_t __b)
  7217. {
  7218. return (int32x4_t)__builtin_neon_vqdmull_nv4hi (__a, (__builtin_neon_hi) __b);
  7219. }
  7220. __extension__ extern __inline int64x2_t
  7221. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7222. vqdmull_n_s32 (int32x2_t __a, int32_t __b)
  7223. {
  7224. return (int64x2_t)__builtin_neon_vqdmull_nv2si (__a, (__builtin_neon_si) __b);
  7225. }
  7226. __extension__ extern __inline int16x8_t
  7227. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7228. vqdmulhq_n_s16 (int16x8_t __a, int16_t __b)
  7229. {
  7230. return (int16x8_t)__builtin_neon_vqdmulh_nv8hi (__a, (__builtin_neon_hi) __b);
  7231. }
  7232. __extension__ extern __inline int32x4_t
  7233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7234. vqdmulhq_n_s32 (int32x4_t __a, int32_t __b)
  7235. {
  7236. return (int32x4_t)__builtin_neon_vqdmulh_nv4si (__a, (__builtin_neon_si) __b);
  7237. }
  7238. __extension__ extern __inline int16x4_t
  7239. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7240. vqdmulh_n_s16 (int16x4_t __a, int16_t __b)
  7241. {
  7242. return (int16x4_t)__builtin_neon_vqdmulh_nv4hi (__a, (__builtin_neon_hi) __b);
  7243. }
  7244. __extension__ extern __inline int32x2_t
  7245. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7246. vqdmulh_n_s32 (int32x2_t __a, int32_t __b)
  7247. {
  7248. return (int32x2_t)__builtin_neon_vqdmulh_nv2si (__a, (__builtin_neon_si) __b);
  7249. }
  7250. __extension__ extern __inline int16x8_t
  7251. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7252. vqrdmulhq_n_s16 (int16x8_t __a, int16_t __b)
  7253. {
  7254. return (int16x8_t)__builtin_neon_vqrdmulh_nv8hi (__a, (__builtin_neon_hi) __b);
  7255. }
  7256. __extension__ extern __inline int32x4_t
  7257. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7258. vqrdmulhq_n_s32 (int32x4_t __a, int32_t __b)
  7259. {
  7260. return (int32x4_t)__builtin_neon_vqrdmulh_nv4si (__a, (__builtin_neon_si) __b);
  7261. }
  7262. __extension__ extern __inline int16x4_t
  7263. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7264. vqrdmulh_n_s16 (int16x4_t __a, int16_t __b)
  7265. {
  7266. return (int16x4_t)__builtin_neon_vqrdmulh_nv4hi (__a, (__builtin_neon_hi) __b);
  7267. }
  7268. __extension__ extern __inline int32x2_t
  7269. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7270. vqrdmulh_n_s32 (int32x2_t __a, int32_t __b)
  7271. {
  7272. return (int32x2_t)__builtin_neon_vqrdmulh_nv2si (__a, (__builtin_neon_si) __b);
  7273. }
  7274. __extension__ extern __inline int16x4_t
  7275. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7276. vmla_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  7277. {
  7278. return (int16x4_t)__builtin_neon_vmla_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7279. }
  7280. __extension__ extern __inline int32x2_t
  7281. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7282. vmla_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  7283. {
  7284. return (int32x2_t)__builtin_neon_vmla_nv2si (__a, __b, (__builtin_neon_si) __c);
  7285. }
  7286. __extension__ extern __inline float32x2_t
  7287. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7288. vmla_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
  7289. {
  7290. return (float32x2_t)__builtin_neon_vmla_nv2sf (__a, __b, (__builtin_neon_sf) __c);
  7291. }
  7292. __extension__ extern __inline uint16x4_t
  7293. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7294. vmla_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  7295. {
  7296. return (uint16x4_t)__builtin_neon_vmla_nv4hi ((int16x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
  7297. }
  7298. __extension__ extern __inline uint32x2_t
  7299. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7300. vmla_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  7301. {
  7302. return (uint32x2_t)__builtin_neon_vmla_nv2si ((int32x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
  7303. }
  7304. __extension__ extern __inline int16x8_t
  7305. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7306. vmlaq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  7307. {
  7308. return (int16x8_t)__builtin_neon_vmla_nv8hi (__a, __b, (__builtin_neon_hi) __c);
  7309. }
  7310. __extension__ extern __inline int32x4_t
  7311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7312. vmlaq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  7313. {
  7314. return (int32x4_t)__builtin_neon_vmla_nv4si (__a, __b, (__builtin_neon_si) __c);
  7315. }
  7316. __extension__ extern __inline float32x4_t
  7317. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7318. vmlaq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
  7319. {
  7320. return (float32x4_t)__builtin_neon_vmla_nv4sf (__a, __b, (__builtin_neon_sf) __c);
  7321. }
  7322. __extension__ extern __inline uint16x8_t
  7323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7324. vmlaq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  7325. {
  7326. return (uint16x8_t)__builtin_neon_vmla_nv8hi ((int16x8_t) __a, (int16x8_t) __b, (__builtin_neon_hi) __c);
  7327. }
  7328. __extension__ extern __inline uint32x4_t
  7329. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7330. vmlaq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  7331. {
  7332. return (uint32x4_t)__builtin_neon_vmla_nv4si ((int32x4_t) __a, (int32x4_t) __b, (__builtin_neon_si) __c);
  7333. }
  7334. __extension__ extern __inline int32x4_t
  7335. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7336. vmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  7337. {
  7338. return (int32x4_t)__builtin_neon_vmlals_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7339. }
  7340. __extension__ extern __inline int64x2_t
  7341. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7342. vmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  7343. {
  7344. return (int64x2_t)__builtin_neon_vmlals_nv2si (__a, __b, (__builtin_neon_si) __c);
  7345. }
  7346. __extension__ extern __inline uint32x4_t
  7347. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7348. vmlal_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  7349. {
  7350. return (uint32x4_t)__builtin_neon_vmlalu_nv4hi ((int32x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
  7351. }
  7352. __extension__ extern __inline uint64x2_t
  7353. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7354. vmlal_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  7355. {
  7356. return (uint64x2_t)__builtin_neon_vmlalu_nv2si ((int64x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
  7357. }
  7358. __extension__ extern __inline int32x4_t
  7359. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7360. vqdmlal_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  7361. {
  7362. return (int32x4_t)__builtin_neon_vqdmlal_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7363. }
  7364. __extension__ extern __inline int64x2_t
  7365. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7366. vqdmlal_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  7367. {
  7368. return (int64x2_t)__builtin_neon_vqdmlal_nv2si (__a, __b, (__builtin_neon_si) __c);
  7369. }
  7370. __extension__ extern __inline int16x4_t
  7371. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7372. vmls_n_s16 (int16x4_t __a, int16x4_t __b, int16_t __c)
  7373. {
  7374. return (int16x4_t)__builtin_neon_vmls_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7375. }
  7376. __extension__ extern __inline int32x2_t
  7377. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7378. vmls_n_s32 (int32x2_t __a, int32x2_t __b, int32_t __c)
  7379. {
  7380. return (int32x2_t)__builtin_neon_vmls_nv2si (__a, __b, (__builtin_neon_si) __c);
  7381. }
  7382. __extension__ extern __inline float32x2_t
  7383. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7384. vmls_n_f32 (float32x2_t __a, float32x2_t __b, float32_t __c)
  7385. {
  7386. return (float32x2_t)__builtin_neon_vmls_nv2sf (__a, __b, (__builtin_neon_sf) __c);
  7387. }
  7388. __extension__ extern __inline uint16x4_t
  7389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7390. vmls_n_u16 (uint16x4_t __a, uint16x4_t __b, uint16_t __c)
  7391. {
  7392. return (uint16x4_t)__builtin_neon_vmls_nv4hi ((int16x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
  7393. }
  7394. __extension__ extern __inline uint32x2_t
  7395. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7396. vmls_n_u32 (uint32x2_t __a, uint32x2_t __b, uint32_t __c)
  7397. {
  7398. return (uint32x2_t)__builtin_neon_vmls_nv2si ((int32x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
  7399. }
  7400. __extension__ extern __inline int16x8_t
  7401. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7402. vmlsq_n_s16 (int16x8_t __a, int16x8_t __b, int16_t __c)
  7403. {
  7404. return (int16x8_t)__builtin_neon_vmls_nv8hi (__a, __b, (__builtin_neon_hi) __c);
  7405. }
  7406. __extension__ extern __inline int32x4_t
  7407. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7408. vmlsq_n_s32 (int32x4_t __a, int32x4_t __b, int32_t __c)
  7409. {
  7410. return (int32x4_t)__builtin_neon_vmls_nv4si (__a, __b, (__builtin_neon_si) __c);
  7411. }
  7412. __extension__ extern __inline float32x4_t
  7413. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7414. vmlsq_n_f32 (float32x4_t __a, float32x4_t __b, float32_t __c)
  7415. {
  7416. return (float32x4_t)__builtin_neon_vmls_nv4sf (__a, __b, (__builtin_neon_sf) __c);
  7417. }
  7418. __extension__ extern __inline uint16x8_t
  7419. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7420. vmlsq_n_u16 (uint16x8_t __a, uint16x8_t __b, uint16_t __c)
  7421. {
  7422. return (uint16x8_t)__builtin_neon_vmls_nv8hi ((int16x8_t) __a, (int16x8_t) __b, (__builtin_neon_hi) __c);
  7423. }
  7424. __extension__ extern __inline uint32x4_t
  7425. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7426. vmlsq_n_u32 (uint32x4_t __a, uint32x4_t __b, uint32_t __c)
  7427. {
  7428. return (uint32x4_t)__builtin_neon_vmls_nv4si ((int32x4_t) __a, (int32x4_t) __b, (__builtin_neon_si) __c);
  7429. }
  7430. __extension__ extern __inline int32x4_t
  7431. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7432. vmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  7433. {
  7434. return (int32x4_t)__builtin_neon_vmlsls_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7435. }
  7436. __extension__ extern __inline int64x2_t
  7437. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7438. vmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  7439. {
  7440. return (int64x2_t)__builtin_neon_vmlsls_nv2si (__a, __b, (__builtin_neon_si) __c);
  7441. }
  7442. __extension__ extern __inline uint32x4_t
  7443. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7444. vmlsl_n_u16 (uint32x4_t __a, uint16x4_t __b, uint16_t __c)
  7445. {
  7446. return (uint32x4_t)__builtin_neon_vmlslu_nv4hi ((int32x4_t) __a, (int16x4_t) __b, (__builtin_neon_hi) __c);
  7447. }
  7448. __extension__ extern __inline uint64x2_t
  7449. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7450. vmlsl_n_u32 (uint64x2_t __a, uint32x2_t __b, uint32_t __c)
  7451. {
  7452. return (uint64x2_t)__builtin_neon_vmlslu_nv2si ((int64x2_t) __a, (int32x2_t) __b, (__builtin_neon_si) __c);
  7453. }
  7454. __extension__ extern __inline int32x4_t
  7455. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7456. vqdmlsl_n_s16 (int32x4_t __a, int16x4_t __b, int16_t __c)
  7457. {
  7458. return (int32x4_t)__builtin_neon_vqdmlsl_nv4hi (__a, __b, (__builtin_neon_hi) __c);
  7459. }
  7460. __extension__ extern __inline int64x2_t
  7461. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7462. vqdmlsl_n_s32 (int64x2_t __a, int32x2_t __b, int32_t __c)
  7463. {
  7464. return (int64x2_t)__builtin_neon_vqdmlsl_nv2si (__a, __b, (__builtin_neon_si) __c);
  7465. }
  7466. #pragma GCC push_options
  7467. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  7468. __extension__ extern __inline poly64x1_t
  7469. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7470. vext_p64 (poly64x1_t __a, poly64x1_t __b, const int __c)
  7471. {
  7472. return (poly64x1_t)__builtin_neon_vextdi (__a, __b, __c);
  7473. }
  7474. #pragma GCC pop_options
  7475. __extension__ extern __inline int8x8_t
  7476. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7477. vext_s8 (int8x8_t __a, int8x8_t __b, const int __c)
  7478. {
  7479. return (int8x8_t)__builtin_neon_vextv8qi (__a, __b, __c);
  7480. }
  7481. __extension__ extern __inline int16x4_t
  7482. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7483. vext_s16 (int16x4_t __a, int16x4_t __b, const int __c)
  7484. {
  7485. return (int16x4_t)__builtin_neon_vextv4hi (__a, __b, __c);
  7486. }
  7487. __extension__ extern __inline int32x2_t
  7488. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7489. vext_s32 (int32x2_t __a, int32x2_t __b, const int __c)
  7490. {
  7491. return (int32x2_t)__builtin_neon_vextv2si (__a, __b, __c);
  7492. }
  7493. __extension__ extern __inline int64x1_t
  7494. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7495. vext_s64 (int64x1_t __a, int64x1_t __b, const int __c)
  7496. {
  7497. return (int64x1_t)__builtin_neon_vextdi (__a, __b, __c);
  7498. }
  7499. __extension__ extern __inline float32x2_t
  7500. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7501. vext_f32 (float32x2_t __a, float32x2_t __b, const int __c)
  7502. {
  7503. return (float32x2_t)__builtin_neon_vextv2sf (__a, __b, __c);
  7504. }
  7505. __extension__ extern __inline uint8x8_t
  7506. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7507. vext_u8 (uint8x8_t __a, uint8x8_t __b, const int __c)
  7508. {
  7509. return (uint8x8_t)__builtin_neon_vextv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  7510. }
  7511. __extension__ extern __inline uint16x4_t
  7512. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7513. vext_u16 (uint16x4_t __a, uint16x4_t __b, const int __c)
  7514. {
  7515. return (uint16x4_t)__builtin_neon_vextv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  7516. }
  7517. __extension__ extern __inline uint32x2_t
  7518. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7519. vext_u32 (uint32x2_t __a, uint32x2_t __b, const int __c)
  7520. {
  7521. return (uint32x2_t)__builtin_neon_vextv2si ((int32x2_t) __a, (int32x2_t) __b, __c);
  7522. }
  7523. __extension__ extern __inline uint64x1_t
  7524. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7525. vext_u64 (uint64x1_t __a, uint64x1_t __b, const int __c)
  7526. {
  7527. return (uint64x1_t)__builtin_neon_vextdi ((int64x1_t) __a, (int64x1_t) __b, __c);
  7528. }
  7529. __extension__ extern __inline poly8x8_t
  7530. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7531. vext_p8 (poly8x8_t __a, poly8x8_t __b, const int __c)
  7532. {
  7533. return (poly8x8_t)__builtin_neon_vextv8qi ((int8x8_t) __a, (int8x8_t) __b, __c);
  7534. }
  7535. __extension__ extern __inline poly16x4_t
  7536. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7537. vext_p16 (poly16x4_t __a, poly16x4_t __b, const int __c)
  7538. {
  7539. return (poly16x4_t)__builtin_neon_vextv4hi ((int16x4_t) __a, (int16x4_t) __b, __c);
  7540. }
  7541. #pragma GCC push_options
  7542. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  7543. __extension__ extern __inline poly64x2_t
  7544. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7545. vextq_p64 (poly64x2_t __a, poly64x2_t __b, const int __c)
  7546. {
  7547. return (poly64x2_t)__builtin_neon_vextv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  7548. }
  7549. #pragma GCC pop_options
  7550. __extension__ extern __inline int8x16_t
  7551. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7552. vextq_s8 (int8x16_t __a, int8x16_t __b, const int __c)
  7553. {
  7554. return (int8x16_t)__builtin_neon_vextv16qi (__a, __b, __c);
  7555. }
  7556. __extension__ extern __inline int16x8_t
  7557. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7558. vextq_s16 (int16x8_t __a, int16x8_t __b, const int __c)
  7559. {
  7560. return (int16x8_t)__builtin_neon_vextv8hi (__a, __b, __c);
  7561. }
  7562. __extension__ extern __inline int32x4_t
  7563. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7564. vextq_s32 (int32x4_t __a, int32x4_t __b, const int __c)
  7565. {
  7566. return (int32x4_t)__builtin_neon_vextv4si (__a, __b, __c);
  7567. }
  7568. __extension__ extern __inline int64x2_t
  7569. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7570. vextq_s64 (int64x2_t __a, int64x2_t __b, const int __c)
  7571. {
  7572. return (int64x2_t)__builtin_neon_vextv2di (__a, __b, __c);
  7573. }
  7574. __extension__ extern __inline float32x4_t
  7575. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7576. vextq_f32 (float32x4_t __a, float32x4_t __b, const int __c)
  7577. {
  7578. return (float32x4_t)__builtin_neon_vextv4sf (__a, __b, __c);
  7579. }
  7580. __extension__ extern __inline uint8x16_t
  7581. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7582. vextq_u8 (uint8x16_t __a, uint8x16_t __b, const int __c)
  7583. {
  7584. return (uint8x16_t)__builtin_neon_vextv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  7585. }
  7586. __extension__ extern __inline uint16x8_t
  7587. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7588. vextq_u16 (uint16x8_t __a, uint16x8_t __b, const int __c)
  7589. {
  7590. return (uint16x8_t)__builtin_neon_vextv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  7591. }
  7592. __extension__ extern __inline uint32x4_t
  7593. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7594. vextq_u32 (uint32x4_t __a, uint32x4_t __b, const int __c)
  7595. {
  7596. return (uint32x4_t)__builtin_neon_vextv4si ((int32x4_t) __a, (int32x4_t) __b, __c);
  7597. }
  7598. __extension__ extern __inline uint64x2_t
  7599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7600. vextq_u64 (uint64x2_t __a, uint64x2_t __b, const int __c)
  7601. {
  7602. return (uint64x2_t)__builtin_neon_vextv2di ((int64x2_t) __a, (int64x2_t) __b, __c);
  7603. }
  7604. __extension__ extern __inline poly8x16_t
  7605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7606. vextq_p8 (poly8x16_t __a, poly8x16_t __b, const int __c)
  7607. {
  7608. return (poly8x16_t)__builtin_neon_vextv16qi ((int8x16_t) __a, (int8x16_t) __b, __c);
  7609. }
  7610. __extension__ extern __inline poly16x8_t
  7611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7612. vextq_p16 (poly16x8_t __a, poly16x8_t __b, const int __c)
  7613. {
  7614. return (poly16x8_t)__builtin_neon_vextv8hi ((int16x8_t) __a, (int16x8_t) __b, __c);
  7615. }
  7616. __extension__ extern __inline int8x8_t
  7617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7618. vrev64_s8 (int8x8_t __a)
  7619. {
  7620. return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
  7621. }
  7622. __extension__ extern __inline int16x4_t
  7623. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7624. vrev64_s16 (int16x4_t __a)
  7625. {
  7626. return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
  7627. }
  7628. __extension__ extern __inline int32x2_t
  7629. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7630. vrev64_s32 (int32x2_t __a)
  7631. {
  7632. return (int32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
  7633. }
  7634. __extension__ extern __inline float32x2_t
  7635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7636. vrev64_f32 (float32x2_t __a)
  7637. {
  7638. return (float32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
  7639. }
  7640. __extension__ extern __inline uint8x8_t
  7641. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7642. vrev64_u8 (uint8x8_t __a)
  7643. {
  7644. return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
  7645. }
  7646. __extension__ extern __inline uint16x4_t
  7647. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7648. vrev64_u16 (uint16x4_t __a)
  7649. {
  7650. return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
  7651. }
  7652. __extension__ extern __inline uint32x2_t
  7653. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7654. vrev64_u32 (uint32x2_t __a)
  7655. {
  7656. return (uint32x2_t) __builtin_shuffle (__a, (uint32x2_t) { 1, 0 });
  7657. }
  7658. __extension__ extern __inline poly8x8_t
  7659. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7660. vrev64_p8 (poly8x8_t __a)
  7661. {
  7662. return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 7, 6, 5, 4, 3, 2, 1, 0 });
  7663. }
  7664. __extension__ extern __inline poly16x4_t
  7665. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7666. vrev64_p16 (poly16x4_t __a)
  7667. {
  7668. return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 3, 2, 1, 0 });
  7669. }
  7670. __extension__ extern __inline int8x16_t
  7671. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7672. vrev64q_s8 (int8x16_t __a)
  7673. {
  7674. return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
  7675. }
  7676. __extension__ extern __inline int16x8_t
  7677. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7678. vrev64q_s16 (int16x8_t __a)
  7679. {
  7680. return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7681. }
  7682. __extension__ extern __inline int32x4_t
  7683. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7684. vrev64q_s32 (int32x4_t __a)
  7685. {
  7686. return (int32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
  7687. }
  7688. __extension__ extern __inline float32x4_t
  7689. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7690. vrev64q_f32 (float32x4_t __a)
  7691. {
  7692. return (float32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
  7693. }
  7694. __extension__ extern __inline uint8x16_t
  7695. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7696. vrev64q_u8 (uint8x16_t __a)
  7697. {
  7698. return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
  7699. }
  7700. __extension__ extern __inline uint16x8_t
  7701. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7702. vrev64q_u16 (uint16x8_t __a)
  7703. {
  7704. return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7705. }
  7706. __extension__ extern __inline uint32x4_t
  7707. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7708. vrev64q_u32 (uint32x4_t __a)
  7709. {
  7710. return (uint32x4_t) __builtin_shuffle (__a, (uint32x4_t) { 1, 0, 3, 2 });
  7711. }
  7712. __extension__ extern __inline poly8x16_t
  7713. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7714. vrev64q_p8 (poly8x16_t __a)
  7715. {
  7716. return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 });
  7717. }
  7718. __extension__ extern __inline poly16x8_t
  7719. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7720. vrev64q_p16 (poly16x8_t __a)
  7721. {
  7722. return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7723. }
  7724. __extension__ extern __inline int8x8_t
  7725. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7726. vrev32_s8 (int8x8_t __a)
  7727. {
  7728. return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7729. }
  7730. __extension__ extern __inline int16x4_t
  7731. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7732. vrev32_s16 (int16x4_t __a)
  7733. {
  7734. return (int16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
  7735. }
  7736. __extension__ extern __inline uint8x8_t
  7737. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7738. vrev32_u8 (uint8x8_t __a)
  7739. {
  7740. return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7741. }
  7742. __extension__ extern __inline uint16x4_t
  7743. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7744. vrev32_u16 (uint16x4_t __a)
  7745. {
  7746. return (uint16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
  7747. }
  7748. __extension__ extern __inline poly8x8_t
  7749. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7750. vrev32_p8 (poly8x8_t __a)
  7751. {
  7752. return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 3, 2, 1, 0, 7, 6, 5, 4 });
  7753. }
  7754. __extension__ extern __inline poly16x4_t
  7755. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7756. vrev32_p16 (poly16x4_t __a)
  7757. {
  7758. return (poly16x4_t) __builtin_shuffle (__a, (uint16x4_t) { 1, 0, 3, 2 });
  7759. }
  7760. __extension__ extern __inline int8x16_t
  7761. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7762. vrev32q_s8 (int8x16_t __a)
  7763. {
  7764. return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
  7765. }
  7766. __extension__ extern __inline int16x8_t
  7767. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7768. vrev32q_s16 (int16x8_t __a)
  7769. {
  7770. return (int16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7771. }
  7772. __extension__ extern __inline uint8x16_t
  7773. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7774. vrev32q_u8 (uint8x16_t __a)
  7775. {
  7776. return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
  7777. }
  7778. __extension__ extern __inline uint16x8_t
  7779. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7780. vrev32q_u16 (uint16x8_t __a)
  7781. {
  7782. return (uint16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7783. }
  7784. __extension__ extern __inline poly8x16_t
  7785. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7786. vrev32q_p8 (poly8x16_t __a)
  7787. {
  7788. return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 });
  7789. }
  7790. __extension__ extern __inline poly16x8_t
  7791. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7792. vrev32q_p16 (poly16x8_t __a)
  7793. {
  7794. return (poly16x8_t) __builtin_shuffle (__a, (uint16x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7795. }
  7796. __extension__ extern __inline int8x8_t
  7797. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7798. vrev16_s8 (int8x8_t __a)
  7799. {
  7800. return (int8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7801. }
  7802. __extension__ extern __inline uint8x8_t
  7803. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7804. vrev16_u8 (uint8x8_t __a)
  7805. {
  7806. return (uint8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7807. }
  7808. __extension__ extern __inline poly8x8_t
  7809. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7810. vrev16_p8 (poly8x8_t __a)
  7811. {
  7812. return (poly8x8_t) __builtin_shuffle (__a, (uint8x8_t) { 1, 0, 3, 2, 5, 4, 7, 6 });
  7813. }
  7814. __extension__ extern __inline int8x16_t
  7815. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7816. vrev16q_s8 (int8x16_t __a)
  7817. {
  7818. return (int8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
  7819. }
  7820. __extension__ extern __inline uint8x16_t
  7821. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7822. vrev16q_u8 (uint8x16_t __a)
  7823. {
  7824. return (uint8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
  7825. }
  7826. __extension__ extern __inline poly8x16_t
  7827. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7828. vrev16q_p8 (poly8x16_t __a)
  7829. {
  7830. return (poly8x16_t) __builtin_shuffle (__a, (uint8x16_t) { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 });
  7831. }
  7832. #pragma GCC push_options
  7833. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  7834. __extension__ extern __inline poly64x1_t
  7835. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7836. vbsl_p64 (uint64x1_t __a, poly64x1_t __b, poly64x1_t __c)
  7837. {
  7838. return (poly64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, __b, __c);
  7839. }
  7840. #pragma GCC pop_options
  7841. __extension__ extern __inline int8x8_t
  7842. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7843. vbsl_s8 (uint8x8_t __a, int8x8_t __b, int8x8_t __c)
  7844. {
  7845. return (int8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, __b, __c);
  7846. }
  7847. __extension__ extern __inline int16x4_t
  7848. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7849. vbsl_s16 (uint16x4_t __a, int16x4_t __b, int16x4_t __c)
  7850. {
  7851. return (int16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, __b, __c);
  7852. }
  7853. __extension__ extern __inline int32x2_t
  7854. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7855. vbsl_s32 (uint32x2_t __a, int32x2_t __b, int32x2_t __c)
  7856. {
  7857. return (int32x2_t)__builtin_neon_vbslv2si ((int32x2_t) __a, __b, __c);
  7858. }
  7859. __extension__ extern __inline int64x1_t
  7860. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7861. vbsl_s64 (uint64x1_t __a, int64x1_t __b, int64x1_t __c)
  7862. {
  7863. return (int64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, __b, __c);
  7864. }
  7865. __extension__ extern __inline float32x2_t
  7866. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7867. vbsl_f32 (uint32x2_t __a, float32x2_t __b, float32x2_t __c)
  7868. {
  7869. return (float32x2_t)__builtin_neon_vbslv2sf ((int32x2_t) __a, __b, __c);
  7870. }
  7871. __extension__ extern __inline uint8x8_t
  7872. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7873. vbsl_u8 (uint8x8_t __a, uint8x8_t __b, uint8x8_t __c)
  7874. {
  7875. return (uint8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  7876. }
  7877. __extension__ extern __inline uint16x4_t
  7878. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7879. vbsl_u16 (uint16x4_t __a, uint16x4_t __b, uint16x4_t __c)
  7880. {
  7881. return (uint16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  7882. }
  7883. __extension__ extern __inline uint32x2_t
  7884. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7885. vbsl_u32 (uint32x2_t __a, uint32x2_t __b, uint32x2_t __c)
  7886. {
  7887. return (uint32x2_t)__builtin_neon_vbslv2si ((int32x2_t) __a, (int32x2_t) __b, (int32x2_t) __c);
  7888. }
  7889. __extension__ extern __inline uint64x1_t
  7890. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7891. vbsl_u64 (uint64x1_t __a, uint64x1_t __b, uint64x1_t __c)
  7892. {
  7893. return (uint64x1_t)__builtin_neon_vbsldi ((int64x1_t) __a, (int64x1_t) __b, (int64x1_t) __c);
  7894. }
  7895. __extension__ extern __inline poly8x8_t
  7896. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7897. vbsl_p8 (uint8x8_t __a, poly8x8_t __b, poly8x8_t __c)
  7898. {
  7899. return (poly8x8_t)__builtin_neon_vbslv8qi ((int8x8_t) __a, (int8x8_t) __b, (int8x8_t) __c);
  7900. }
  7901. __extension__ extern __inline poly16x4_t
  7902. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7903. vbsl_p16 (uint16x4_t __a, poly16x4_t __b, poly16x4_t __c)
  7904. {
  7905. return (poly16x4_t)__builtin_neon_vbslv4hi ((int16x4_t) __a, (int16x4_t) __b, (int16x4_t) __c);
  7906. }
  7907. #pragma GCC push_options
  7908. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  7909. __extension__ extern __inline poly64x2_t
  7910. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7911. vbslq_p64 (uint64x2_t __a, poly64x2_t __b, poly64x2_t __c)
  7912. {
  7913. return (poly64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, (int64x2_t) __b, (int64x2_t) __c);
  7914. }
  7915. #pragma GCC pop_options
  7916. __extension__ extern __inline int8x16_t
  7917. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7918. vbslq_s8 (uint8x16_t __a, int8x16_t __b, int8x16_t __c)
  7919. {
  7920. return (int8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, __b, __c);
  7921. }
  7922. __extension__ extern __inline int16x8_t
  7923. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7924. vbslq_s16 (uint16x8_t __a, int16x8_t __b, int16x8_t __c)
  7925. {
  7926. return (int16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, __b, __c);
  7927. }
  7928. __extension__ extern __inline int32x4_t
  7929. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7930. vbslq_s32 (uint32x4_t __a, int32x4_t __b, int32x4_t __c)
  7931. {
  7932. return (int32x4_t)__builtin_neon_vbslv4si ((int32x4_t) __a, __b, __c);
  7933. }
  7934. __extension__ extern __inline int64x2_t
  7935. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7936. vbslq_s64 (uint64x2_t __a, int64x2_t __b, int64x2_t __c)
  7937. {
  7938. return (int64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, __b, __c);
  7939. }
  7940. __extension__ extern __inline float32x4_t
  7941. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7942. vbslq_f32 (uint32x4_t __a, float32x4_t __b, float32x4_t __c)
  7943. {
  7944. return (float32x4_t)__builtin_neon_vbslv4sf ((int32x4_t) __a, __b, __c);
  7945. }
  7946. __extension__ extern __inline uint8x16_t
  7947. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7948. vbslq_u8 (uint8x16_t __a, uint8x16_t __b, uint8x16_t __c)
  7949. {
  7950. return (uint8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
  7951. }
  7952. __extension__ extern __inline uint16x8_t
  7953. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7954. vbslq_u16 (uint16x8_t __a, uint16x8_t __b, uint16x8_t __c)
  7955. {
  7956. return (uint16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
  7957. }
  7958. __extension__ extern __inline uint32x4_t
  7959. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7960. vbslq_u32 (uint32x4_t __a, uint32x4_t __b, uint32x4_t __c)
  7961. {
  7962. return (uint32x4_t)__builtin_neon_vbslv4si ((int32x4_t) __a, (int32x4_t) __b, (int32x4_t) __c);
  7963. }
  7964. __extension__ extern __inline uint64x2_t
  7965. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7966. vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
  7967. {
  7968. return (uint64x2_t)__builtin_neon_vbslv2di ((int64x2_t) __a, (int64x2_t) __b, (int64x2_t) __c);
  7969. }
  7970. __extension__ extern __inline poly8x16_t
  7971. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7972. vbslq_p8 (uint8x16_t __a, poly8x16_t __b, poly8x16_t __c)
  7973. {
  7974. return (poly8x16_t)__builtin_neon_vbslv16qi ((int8x16_t) __a, (int8x16_t) __b, (int8x16_t) __c);
  7975. }
  7976. __extension__ extern __inline poly16x8_t
  7977. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7978. vbslq_p16 (uint16x8_t __a, poly16x8_t __b, poly16x8_t __c)
  7979. {
  7980. return (poly16x8_t)__builtin_neon_vbslv8hi ((int16x8_t) __a, (int16x8_t) __b, (int16x8_t) __c);
  7981. }
  7982. /* For big-endian, the shuffle masks for ZIP, UZP and TRN must be changed as
  7983. follows. (nelt = the number of elements within a vector.)
  7984. Firstly, a value of N within a mask, becomes (N ^ (nelt - 1)), as gcc vector
  7985. extension's indexing scheme is reversed *within each vector* (relative to the
  7986. neon intrinsics view), but without changing which of the two vectors.
  7987. Secondly, the elements within each mask are reversed, as the mask is itself a
  7988. vector, and will itself be loaded in reverse order (again, relative to the
  7989. neon intrinsics view, i.e. that would result from a "vld1" instruction). */
  7990. __extension__ extern __inline int8x8x2_t
  7991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  7992. vtrn_s8 (int8x8_t __a, int8x8_t __b)
  7993. {
  7994. int8x8x2_t __rv;
  7995. #ifdef __ARM_BIG_ENDIAN
  7996. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  7997. { 9, 1, 11, 3, 13, 5, 15, 7 });
  7998. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  7999. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8000. #else
  8001. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8002. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8003. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8004. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8005. #endif
  8006. return __rv;
  8007. }
  8008. __extension__ extern __inline int16x4x2_t
  8009. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8010. vtrn_s16 (int16x4_t __a, int16x4_t __b)
  8011. {
  8012. int16x4x2_t __rv;
  8013. #ifdef __ARM_BIG_ENDIAN
  8014. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
  8015. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
  8016. #else
  8017. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
  8018. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
  8019. #endif
  8020. return __rv;
  8021. }
  8022. __extension__ extern __inline uint8x8x2_t
  8023. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8024. vtrn_u8 (uint8x8_t __a, uint8x8_t __b)
  8025. {
  8026. uint8x8x2_t __rv;
  8027. #ifdef __ARM_BIG_ENDIAN
  8028. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8029. { 9, 1, 11, 3, 13, 5, 15, 7 });
  8030. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8031. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8032. #else
  8033. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8034. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8035. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8036. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8037. #endif
  8038. return __rv;
  8039. }
  8040. __extension__ extern __inline uint16x4x2_t
  8041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8042. vtrn_u16 (uint16x4_t __a, uint16x4_t __b)
  8043. {
  8044. uint16x4x2_t __rv;
  8045. #ifdef __ARM_BIG_ENDIAN
  8046. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
  8047. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
  8048. #else
  8049. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
  8050. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
  8051. #endif
  8052. return __rv;
  8053. }
  8054. __extension__ extern __inline poly8x8x2_t
  8055. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8056. vtrn_p8 (poly8x8_t __a, poly8x8_t __b)
  8057. {
  8058. poly8x8x2_t __rv;
  8059. #ifdef __ARM_BIG_ENDIAN
  8060. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8061. { 9, 1, 11, 3, 13, 5, 15, 7 });
  8062. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8063. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8064. #else
  8065. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8066. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8067. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8068. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8069. #endif
  8070. return __rv;
  8071. }
  8072. __extension__ extern __inline poly16x4x2_t
  8073. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8074. vtrn_p16 (poly16x4_t __a, poly16x4_t __b)
  8075. {
  8076. poly16x4x2_t __rv;
  8077. #ifdef __ARM_BIG_ENDIAN
  8078. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 1, 7, 3 });
  8079. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 6, 2 });
  8080. #else
  8081. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 2, 6 });
  8082. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 5, 3, 7 });
  8083. #endif
  8084. return __rv;
  8085. }
  8086. __extension__ extern __inline int32x2x2_t
  8087. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8088. vtrn_s32 (int32x2_t __a, int32x2_t __b)
  8089. {
  8090. int32x2x2_t __rv;
  8091. #ifdef __ARM_BIG_ENDIAN
  8092. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8093. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8094. #else
  8095. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8096. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8097. #endif
  8098. return __rv;
  8099. }
  8100. __extension__ extern __inline float32x2x2_t
  8101. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8102. vtrn_f32 (float32x2_t __a, float32x2_t __b)
  8103. {
  8104. float32x2x2_t __rv;
  8105. #ifdef __ARM_BIG_ENDIAN
  8106. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8107. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8108. #else
  8109. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8110. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8111. #endif
  8112. return __rv;
  8113. }
  8114. __extension__ extern __inline uint32x2x2_t
  8115. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8116. vtrn_u32 (uint32x2_t __a, uint32x2_t __b)
  8117. {
  8118. uint32x2x2_t __rv;
  8119. #ifdef __ARM_BIG_ENDIAN
  8120. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8121. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8122. #else
  8123. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8124. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8125. #endif
  8126. return __rv;
  8127. }
  8128. __extension__ extern __inline int8x16x2_t
  8129. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8130. vtrnq_s8 (int8x16_t __a, int8x16_t __b)
  8131. {
  8132. int8x16x2_t __rv;
  8133. #ifdef __ARM_BIG_ENDIAN
  8134. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8135. { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
  8136. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8137. { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
  8138. #else
  8139. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8140. { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
  8141. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8142. { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
  8143. #endif
  8144. return __rv;
  8145. }
  8146. __extension__ extern __inline int16x8x2_t
  8147. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8148. vtrnq_s16 (int16x8_t __a, int16x8_t __b)
  8149. {
  8150. int16x8x2_t __rv;
  8151. #ifdef __ARM_BIG_ENDIAN
  8152. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8153. { 9, 1, 11, 3, 13, 5, 15, 7 });
  8154. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8155. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8156. #else
  8157. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8158. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8159. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8160. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8161. #endif
  8162. return __rv;
  8163. }
  8164. __extension__ extern __inline int32x4x2_t
  8165. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8166. vtrnq_s32 (int32x4_t __a, int32x4_t __b)
  8167. {
  8168. int32x4x2_t __rv;
  8169. #ifdef __ARM_BIG_ENDIAN
  8170. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
  8171. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
  8172. #else
  8173. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
  8174. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
  8175. #endif
  8176. return __rv;
  8177. }
  8178. __extension__ extern __inline float32x4x2_t
  8179. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8180. vtrnq_f32 (float32x4_t __a, float32x4_t __b)
  8181. {
  8182. float32x4x2_t __rv;
  8183. #ifdef __ARM_BIG_ENDIAN
  8184. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
  8185. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
  8186. #else
  8187. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
  8188. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
  8189. #endif
  8190. return __rv;
  8191. }
  8192. __extension__ extern __inline uint8x16x2_t
  8193. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8194. vtrnq_u8 (uint8x16_t __a, uint8x16_t __b)
  8195. {
  8196. uint8x16x2_t __rv;
  8197. #ifdef __ARM_BIG_ENDIAN
  8198. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8199. { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
  8200. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8201. { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
  8202. #else
  8203. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8204. { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
  8205. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8206. { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
  8207. #endif
  8208. return __rv;
  8209. }
  8210. __extension__ extern __inline uint16x8x2_t
  8211. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8212. vtrnq_u16 (uint16x8_t __a, uint16x8_t __b)
  8213. {
  8214. uint16x8x2_t __rv;
  8215. #ifdef __ARM_BIG_ENDIAN
  8216. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8217. { 9, 1, 11, 3, 13, 5, 15, 7 });
  8218. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8219. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8220. #else
  8221. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8222. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8223. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8224. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8225. #endif
  8226. return __rv;
  8227. }
  8228. __extension__ extern __inline uint32x4x2_t
  8229. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8230. vtrnq_u32 (uint32x4_t __a, uint32x4_t __b)
  8231. {
  8232. uint32x4x2_t __rv;
  8233. #ifdef __ARM_BIG_ENDIAN
  8234. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 7, 3 });
  8235. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 4, 0, 6, 2 });
  8236. #else
  8237. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 2, 6 });
  8238. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 5, 3, 7 });
  8239. #endif
  8240. return __rv;
  8241. }
  8242. __extension__ extern __inline poly8x16x2_t
  8243. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8244. vtrnq_p8 (poly8x16_t __a, poly8x16_t __b)
  8245. {
  8246. poly8x16x2_t __rv;
  8247. #ifdef __ARM_BIG_ENDIAN
  8248. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8249. { 17, 1, 19, 3, 21, 5, 23, 7, 25, 9, 27, 11, 29, 13, 31, 15 });
  8250. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8251. { 16, 0, 18, 2, 20, 4, 22, 6, 24, 8, 26, 10, 28, 12, 30, 14 });
  8252. #else
  8253. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8254. { 0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30 });
  8255. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8256. { 1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31 });
  8257. #endif
  8258. return __rv;
  8259. }
  8260. __extension__ extern __inline poly16x8x2_t
  8261. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8262. vtrnq_p16 (poly16x8_t __a, poly16x8_t __b)
  8263. {
  8264. poly16x8x2_t __rv;
  8265. #ifdef __ARM_BIG_ENDIAN
  8266. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8267. { 9, 1, 11, 3, 13, 5, 15, 7 });
  8268. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8269. { 8, 0, 10, 2, 12, 4, 14, 6 });
  8270. #else
  8271. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8272. { 0, 8, 2, 10, 4, 12, 6, 14 });
  8273. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8274. { 1, 9, 3, 11, 5, 13, 7, 15 });
  8275. #endif
  8276. return __rv;
  8277. }
  8278. __extension__ extern __inline int8x8x2_t
  8279. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8280. vzip_s8 (int8x8_t __a, int8x8_t __b)
  8281. {
  8282. int8x8x2_t __rv;
  8283. #ifdef __ARM_BIG_ENDIAN
  8284. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8285. { 12, 4, 13, 5, 14, 6, 15, 7 });
  8286. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8287. { 8, 0, 9, 1, 10, 2, 11, 3 });
  8288. #else
  8289. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8290. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8291. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8292. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8293. #endif
  8294. return __rv;
  8295. }
  8296. __extension__ extern __inline int16x4x2_t
  8297. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8298. vzip_s16 (int16x4_t __a, int16x4_t __b)
  8299. {
  8300. int16x4x2_t __rv;
  8301. #ifdef __ARM_BIG_ENDIAN
  8302. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
  8303. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
  8304. #else
  8305. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
  8306. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
  8307. #endif
  8308. return __rv;
  8309. }
  8310. __extension__ extern __inline uint8x8x2_t
  8311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8312. vzip_u8 (uint8x8_t __a, uint8x8_t __b)
  8313. {
  8314. uint8x8x2_t __rv;
  8315. #ifdef __ARM_BIG_ENDIAN
  8316. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8317. { 12, 4, 13, 5, 14, 6, 15, 7 });
  8318. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8319. { 8, 0, 9, 1, 10, 2, 11, 3 });
  8320. #else
  8321. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8322. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8323. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8324. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8325. #endif
  8326. return __rv;
  8327. }
  8328. __extension__ extern __inline uint16x4x2_t
  8329. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8330. vzip_u16 (uint16x4_t __a, uint16x4_t __b)
  8331. {
  8332. uint16x4x2_t __rv;
  8333. #ifdef __ARM_BIG_ENDIAN
  8334. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
  8335. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
  8336. #else
  8337. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
  8338. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
  8339. #endif
  8340. return __rv;
  8341. }
  8342. __extension__ extern __inline poly8x8x2_t
  8343. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8344. vzip_p8 (poly8x8_t __a, poly8x8_t __b)
  8345. {
  8346. poly8x8x2_t __rv;
  8347. #ifdef __ARM_BIG_ENDIAN
  8348. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8349. { 12, 4, 13, 5, 14, 6, 15, 7 });
  8350. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8351. { 8, 0, 9, 1, 10, 2, 11, 3 });
  8352. #else
  8353. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8354. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8355. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8356. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8357. #endif
  8358. return __rv;
  8359. }
  8360. __extension__ extern __inline poly16x4x2_t
  8361. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8362. vzip_p16 (poly16x4_t __a, poly16x4_t __b)
  8363. {
  8364. poly16x4x2_t __rv;
  8365. #ifdef __ARM_BIG_ENDIAN
  8366. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 6, 2, 7, 3 });
  8367. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 0, 5, 1 });
  8368. #else
  8369. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 4, 1, 5 });
  8370. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 2, 6, 3, 7 });
  8371. #endif
  8372. return __rv;
  8373. }
  8374. __extension__ extern __inline int32x2x2_t
  8375. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8376. vzip_s32 (int32x2_t __a, int32x2_t __b)
  8377. {
  8378. int32x2x2_t __rv;
  8379. #ifdef __ARM_BIG_ENDIAN
  8380. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8381. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8382. #else
  8383. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8384. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8385. #endif
  8386. return __rv;
  8387. }
  8388. __extension__ extern __inline float32x2x2_t
  8389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8390. vzip_f32 (float32x2_t __a, float32x2_t __b)
  8391. {
  8392. float32x2x2_t __rv;
  8393. #ifdef __ARM_BIG_ENDIAN
  8394. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8395. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8396. #else
  8397. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8398. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8399. #endif
  8400. return __rv;
  8401. }
  8402. __extension__ extern __inline uint32x2x2_t
  8403. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8404. vzip_u32 (uint32x2_t __a, uint32x2_t __b)
  8405. {
  8406. uint32x2x2_t __rv;
  8407. #ifdef __ARM_BIG_ENDIAN
  8408. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8409. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8410. #else
  8411. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8412. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8413. #endif
  8414. return __rv;
  8415. }
  8416. __extension__ extern __inline int8x16x2_t
  8417. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8418. vzipq_s8 (int8x16_t __a, int8x16_t __b)
  8419. {
  8420. int8x16x2_t __rv;
  8421. #ifdef __ARM_BIG_ENDIAN
  8422. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8423. { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
  8424. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8425. { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
  8426. #else
  8427. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8428. { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
  8429. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8430. { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
  8431. #endif
  8432. return __rv;
  8433. }
  8434. __extension__ extern __inline int16x8x2_t
  8435. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8436. vzipq_s16 (int16x8_t __a, int16x8_t __b)
  8437. {
  8438. int16x8x2_t __rv;
  8439. #ifdef __ARM_BIG_ENDIAN
  8440. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8441. { 10, 2, 11, 3, 8, 0, 9, 1 });
  8442. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8443. { 14, 6, 15, 7, 12, 4, 13, 5 });
  8444. #else
  8445. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8446. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8447. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8448. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8449. #endif
  8450. return __rv;
  8451. }
  8452. __extension__ extern __inline int32x4x2_t
  8453. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8454. vzipq_s32 (int32x4_t __a, int32x4_t __b)
  8455. {
  8456. int32x4x2_t __rv;
  8457. #ifdef __ARM_BIG_ENDIAN
  8458. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
  8459. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
  8460. #else
  8461. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
  8462. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
  8463. #endif
  8464. return __rv;
  8465. }
  8466. __extension__ extern __inline float32x4x2_t
  8467. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8468. vzipq_f32 (float32x4_t __a, float32x4_t __b)
  8469. {
  8470. float32x4x2_t __rv;
  8471. #ifdef __ARM_BIG_ENDIAN
  8472. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
  8473. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
  8474. #else
  8475. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
  8476. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
  8477. #endif
  8478. return __rv;
  8479. }
  8480. __extension__ extern __inline uint8x16x2_t
  8481. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8482. vzipq_u8 (uint8x16_t __a, uint8x16_t __b)
  8483. {
  8484. uint8x16x2_t __rv;
  8485. #ifdef __ARM_BIG_ENDIAN
  8486. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8487. { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
  8488. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8489. { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
  8490. #else
  8491. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8492. { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
  8493. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8494. { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
  8495. #endif
  8496. return __rv;
  8497. }
  8498. __extension__ extern __inline uint16x8x2_t
  8499. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8500. vzipq_u16 (uint16x8_t __a, uint16x8_t __b)
  8501. {
  8502. uint16x8x2_t __rv;
  8503. #ifdef __ARM_BIG_ENDIAN
  8504. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8505. { 10, 2, 11, 3, 8, 0, 9, 1 });
  8506. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8507. { 14, 6, 15, 7, 12, 4, 13, 5 });
  8508. #else
  8509. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8510. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8511. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8512. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8513. #endif
  8514. return __rv;
  8515. }
  8516. __extension__ extern __inline uint32x4x2_t
  8517. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8518. vzipq_u32 (uint32x4_t __a, uint32x4_t __b)
  8519. {
  8520. uint32x4x2_t __rv;
  8521. #ifdef __ARM_BIG_ENDIAN
  8522. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 5, 1, 4, 0 });
  8523. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 7, 3, 6, 2 });
  8524. #else
  8525. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 4, 1, 5 });
  8526. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 6, 3, 7 });
  8527. #endif
  8528. return __rv;
  8529. }
  8530. __extension__ extern __inline poly8x16x2_t
  8531. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8532. vzipq_p8 (poly8x16_t __a, poly8x16_t __b)
  8533. {
  8534. poly8x16x2_t __rv;
  8535. #ifdef __ARM_BIG_ENDIAN
  8536. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8537. { 20, 4, 21, 5, 22, 6, 23, 7, 16, 0, 17, 1, 18, 2, 19, 3 });
  8538. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8539. { 28, 12, 29, 13, 30, 14, 31, 15, 24, 8, 25, 9, 26, 10, 27, 11 });
  8540. #else
  8541. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8542. { 0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23 });
  8543. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8544. { 8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31 });
  8545. #endif
  8546. return __rv;
  8547. }
  8548. __extension__ extern __inline poly16x8x2_t
  8549. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8550. vzipq_p16 (poly16x8_t __a, poly16x8_t __b)
  8551. {
  8552. poly16x8x2_t __rv;
  8553. #ifdef __ARM_BIG_ENDIAN
  8554. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8555. { 10, 2, 11, 3, 8, 0, 9, 1 });
  8556. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8557. { 14, 6, 15, 7, 12, 4, 13, 5 });
  8558. #else
  8559. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8560. { 0, 8, 1, 9, 2, 10, 3, 11 });
  8561. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8562. { 4, 12, 5, 13, 6, 14, 7, 15 });
  8563. #endif
  8564. return __rv;
  8565. }
  8566. __extension__ extern __inline int8x8x2_t
  8567. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8568. vuzp_s8 (int8x8_t __a, int8x8_t __b)
  8569. {
  8570. int8x8x2_t __rv;
  8571. #ifdef __ARM_BIG_ENDIAN
  8572. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8573. { 9, 11, 13, 15, 1, 3, 5, 7 });
  8574. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8575. { 8, 10, 12, 14, 0, 2, 4, 6 });
  8576. #else
  8577. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8578. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8579. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8580. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8581. #endif
  8582. return __rv;
  8583. }
  8584. __extension__ extern __inline int16x4x2_t
  8585. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8586. vuzp_s16 (int16x4_t __a, int16x4_t __b)
  8587. {
  8588. int16x4x2_t __rv;
  8589. #ifdef __ARM_BIG_ENDIAN
  8590. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
  8591. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
  8592. #else
  8593. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
  8594. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
  8595. #endif
  8596. return __rv;
  8597. }
  8598. __extension__ extern __inline int32x2x2_t
  8599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8600. vuzp_s32 (int32x2_t __a, int32x2_t __b)
  8601. {
  8602. int32x2x2_t __rv;
  8603. #ifdef __ARM_BIG_ENDIAN
  8604. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8605. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8606. #else
  8607. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8608. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8609. #endif
  8610. return __rv;
  8611. }
  8612. __extension__ extern __inline float32x2x2_t
  8613. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8614. vuzp_f32 (float32x2_t __a, float32x2_t __b)
  8615. {
  8616. float32x2x2_t __rv;
  8617. #ifdef __ARM_BIG_ENDIAN
  8618. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8619. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8620. #else
  8621. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8622. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8623. #endif
  8624. return __rv;
  8625. }
  8626. __extension__ extern __inline uint8x8x2_t
  8627. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8628. vuzp_u8 (uint8x8_t __a, uint8x8_t __b)
  8629. {
  8630. uint8x8x2_t __rv;
  8631. #ifdef __ARM_BIG_ENDIAN
  8632. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8633. { 9, 11, 13, 15, 1, 3, 5, 7 });
  8634. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8635. { 8, 10, 12, 14, 0, 2, 4, 6 });
  8636. #else
  8637. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8638. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8639. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8640. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8641. #endif
  8642. return __rv;
  8643. }
  8644. __extension__ extern __inline uint16x4x2_t
  8645. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8646. vuzp_u16 (uint16x4_t __a, uint16x4_t __b)
  8647. {
  8648. uint16x4x2_t __rv;
  8649. #ifdef __ARM_BIG_ENDIAN
  8650. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
  8651. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
  8652. #else
  8653. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
  8654. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
  8655. #endif
  8656. return __rv;
  8657. }
  8658. __extension__ extern __inline uint32x2x2_t
  8659. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8660. vuzp_u32 (uint32x2_t __a, uint32x2_t __b)
  8661. {
  8662. uint32x2x2_t __rv;
  8663. #ifdef __ARM_BIG_ENDIAN
  8664. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 3, 1 });
  8665. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 2, 0 });
  8666. #else
  8667. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x2_t) { 0, 2 });
  8668. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x2_t) { 1, 3 });
  8669. #endif
  8670. return __rv;
  8671. }
  8672. __extension__ extern __inline poly8x8x2_t
  8673. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8674. vuzp_p8 (poly8x8_t __a, poly8x8_t __b)
  8675. {
  8676. poly8x8x2_t __rv;
  8677. #ifdef __ARM_BIG_ENDIAN
  8678. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8679. { 9, 11, 13, 15, 1, 3, 5, 7 });
  8680. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8681. { 8, 10, 12, 14, 0, 2, 4, 6 });
  8682. #else
  8683. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8684. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8685. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x8_t)
  8686. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8687. #endif
  8688. return __rv;
  8689. }
  8690. __extension__ extern __inline poly16x4x2_t
  8691. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8692. vuzp_p16 (poly16x4_t __a, poly16x4_t __b)
  8693. {
  8694. poly16x4x2_t __rv;
  8695. #ifdef __ARM_BIG_ENDIAN
  8696. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 5, 7, 1, 3 });
  8697. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 4, 6, 0, 2 });
  8698. #else
  8699. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t) { 0, 2, 4, 6 });
  8700. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t) { 1, 3, 5, 7 });
  8701. #endif
  8702. return __rv;
  8703. }
  8704. __extension__ extern __inline int8x16x2_t
  8705. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8706. vuzpq_s8 (int8x16_t __a, int8x16_t __b)
  8707. {
  8708. int8x16x2_t __rv;
  8709. #ifdef __ARM_BIG_ENDIAN
  8710. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8711. { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
  8712. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8713. { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
  8714. #else
  8715. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8716. { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
  8717. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8718. { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
  8719. #endif
  8720. return __rv;
  8721. }
  8722. __extension__ extern __inline int16x8x2_t
  8723. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8724. vuzpq_s16 (int16x8_t __a, int16x8_t __b)
  8725. {
  8726. int16x8x2_t __rv;
  8727. #ifdef __ARM_BIG_ENDIAN
  8728. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8729. { 5, 7, 1, 3, 13, 15, 9, 11 });
  8730. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8731. { 4, 6, 0, 2, 12, 14, 8, 10 });
  8732. #else
  8733. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8734. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8735. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8736. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8737. #endif
  8738. return __rv;
  8739. }
  8740. __extension__ extern __inline int32x4x2_t
  8741. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8742. vuzpq_s32 (int32x4_t __a, int32x4_t __b)
  8743. {
  8744. int32x4x2_t __rv;
  8745. #ifdef __ARM_BIG_ENDIAN
  8746. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
  8747. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
  8748. #else
  8749. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
  8750. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
  8751. #endif
  8752. return __rv;
  8753. }
  8754. __extension__ extern __inline float32x4x2_t
  8755. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8756. vuzpq_f32 (float32x4_t __a, float32x4_t __b)
  8757. {
  8758. float32x4x2_t __rv;
  8759. #ifdef __ARM_BIG_ENDIAN
  8760. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
  8761. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
  8762. #else
  8763. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
  8764. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
  8765. #endif
  8766. return __rv;
  8767. }
  8768. __extension__ extern __inline uint8x16x2_t
  8769. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8770. vuzpq_u8 (uint8x16_t __a, uint8x16_t __b)
  8771. {
  8772. uint8x16x2_t __rv;
  8773. #ifdef __ARM_BIG_ENDIAN
  8774. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8775. { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
  8776. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8777. { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
  8778. #else
  8779. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8780. { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
  8781. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8782. { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
  8783. #endif
  8784. return __rv;
  8785. }
  8786. __extension__ extern __inline uint16x8x2_t
  8787. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8788. vuzpq_u16 (uint16x8_t __a, uint16x8_t __b)
  8789. {
  8790. uint16x8x2_t __rv;
  8791. #ifdef __ARM_BIG_ENDIAN
  8792. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8793. { 5, 7, 1, 3, 13, 15, 9, 11 });
  8794. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8795. { 4, 6, 0, 2, 12, 14, 8, 10 });
  8796. #else
  8797. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8798. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8799. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8800. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8801. #endif
  8802. return __rv;
  8803. }
  8804. __extension__ extern __inline uint32x4x2_t
  8805. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8806. vuzpq_u32 (uint32x4_t __a, uint32x4_t __b)
  8807. {
  8808. uint32x4x2_t __rv;
  8809. #ifdef __ARM_BIG_ENDIAN
  8810. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 3, 1, 7, 5 });
  8811. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 2, 0, 6, 4 });
  8812. #else
  8813. __rv.val[0] = __builtin_shuffle (__a, __b, (uint32x4_t) { 0, 2, 4, 6 });
  8814. __rv.val[1] = __builtin_shuffle (__a, __b, (uint32x4_t) { 1, 3, 5, 7 });
  8815. #endif
  8816. return __rv;
  8817. }
  8818. __extension__ extern __inline poly8x16x2_t
  8819. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8820. vuzpq_p8 (poly8x16_t __a, poly8x16_t __b)
  8821. {
  8822. poly8x16x2_t __rv;
  8823. #ifdef __ARM_BIG_ENDIAN
  8824. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8825. { 9, 11, 13, 15, 1, 3, 5, 7, 25, 27, 29, 31, 17, 19, 21, 23 });
  8826. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8827. { 8, 10, 12, 14, 0, 2, 4, 6, 24, 26, 28, 30, 16, 18, 20, 22 });
  8828. #else
  8829. __rv.val[0] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8830. { 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 });
  8831. __rv.val[1] = __builtin_shuffle (__a, __b, (uint8x16_t)
  8832. { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 });
  8833. #endif
  8834. return __rv;
  8835. }
  8836. __extension__ extern __inline poly16x8x2_t
  8837. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8838. vuzpq_p16 (poly16x8_t __a, poly16x8_t __b)
  8839. {
  8840. poly16x8x2_t __rv;
  8841. #ifdef __ARM_BIG_ENDIAN
  8842. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8843. { 5, 7, 1, 3, 13, 15, 9, 11 });
  8844. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8845. { 4, 6, 0, 2, 12, 14, 8, 10 });
  8846. #else
  8847. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8848. { 0, 2, 4, 6, 8, 10, 12, 14 });
  8849. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  8850. { 1, 3, 5, 7, 9, 11, 13, 15 });
  8851. #endif
  8852. return __rv;
  8853. }
  8854. #pragma GCC push_options
  8855. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  8856. __extension__ extern __inline poly64x1_t
  8857. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8858. vld1_p64 (const poly64_t * __a)
  8859. {
  8860. return (poly64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
  8861. }
  8862. #pragma GCC pop_options
  8863. __extension__ extern __inline int8x8_t
  8864. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8865. vld1_s8 (const int8_t * __a)
  8866. {
  8867. return (int8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
  8868. }
  8869. __extension__ extern __inline int16x4_t
  8870. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8871. vld1_s16 (const int16_t * __a)
  8872. {
  8873. return (int16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
  8874. }
  8875. __extension__ extern __inline int32x2_t
  8876. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8877. vld1_s32 (const int32_t * __a)
  8878. {
  8879. return (int32x2_t)__builtin_neon_vld1v2si ((const __builtin_neon_si *) __a);
  8880. }
  8881. __extension__ extern __inline int64x1_t
  8882. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8883. vld1_s64 (const int64_t * __a)
  8884. {
  8885. return (int64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
  8886. }
  8887. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  8888. __extension__ extern __inline float16x4_t
  8889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8890. vld1_f16 (const float16_t * __a)
  8891. {
  8892. return __builtin_neon_vld1v4hf (__a);
  8893. }
  8894. #endif
  8895. __extension__ extern __inline float32x2_t
  8896. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8897. vld1_f32 (const float32_t * __a)
  8898. {
  8899. return (float32x2_t)__builtin_neon_vld1v2sf ((const __builtin_neon_sf *) __a);
  8900. }
  8901. __extension__ extern __inline uint8x8_t
  8902. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8903. vld1_u8 (const uint8_t * __a)
  8904. {
  8905. return (uint8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
  8906. }
  8907. __extension__ extern __inline uint16x4_t
  8908. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8909. vld1_u16 (const uint16_t * __a)
  8910. {
  8911. return (uint16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
  8912. }
  8913. __extension__ extern __inline uint32x2_t
  8914. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8915. vld1_u32 (const uint32_t * __a)
  8916. {
  8917. return (uint32x2_t)__builtin_neon_vld1v2si ((const __builtin_neon_si *) __a);
  8918. }
  8919. __extension__ extern __inline uint64x1_t
  8920. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8921. vld1_u64 (const uint64_t * __a)
  8922. {
  8923. return (uint64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
  8924. }
  8925. __extension__ extern __inline poly8x8_t
  8926. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8927. vld1_p8 (const poly8_t * __a)
  8928. {
  8929. return (poly8x8_t)__builtin_neon_vld1v8qi ((const __builtin_neon_qi *) __a);
  8930. }
  8931. __extension__ extern __inline poly16x4_t
  8932. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8933. vld1_p16 (const poly16_t * __a)
  8934. {
  8935. return (poly16x4_t)__builtin_neon_vld1v4hi ((const __builtin_neon_hi *) __a);
  8936. }
  8937. #pragma GCC push_options
  8938. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  8939. __extension__ extern __inline poly64x2_t
  8940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8941. vld1q_p64 (const poly64_t * __a)
  8942. {
  8943. return (poly64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
  8944. }
  8945. #pragma GCC pop_options
  8946. __extension__ extern __inline int8x16_t
  8947. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8948. vld1q_s8 (const int8_t * __a)
  8949. {
  8950. return (int8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
  8951. }
  8952. __extension__ extern __inline int16x8_t
  8953. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8954. vld1q_s16 (const int16_t * __a)
  8955. {
  8956. return (int16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
  8957. }
  8958. __extension__ extern __inline int32x4_t
  8959. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8960. vld1q_s32 (const int32_t * __a)
  8961. {
  8962. return (int32x4_t)__builtin_neon_vld1v4si ((const __builtin_neon_si *) __a);
  8963. }
  8964. __extension__ extern __inline int64x2_t
  8965. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8966. vld1q_s64 (const int64_t * __a)
  8967. {
  8968. return (int64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
  8969. }
  8970. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  8971. __extension__ extern __inline float16x8_t
  8972. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8973. vld1q_f16 (const float16_t * __a)
  8974. {
  8975. return __builtin_neon_vld1v8hf (__a);
  8976. }
  8977. #endif
  8978. __extension__ extern __inline float32x4_t
  8979. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8980. vld1q_f32 (const float32_t * __a)
  8981. {
  8982. return (float32x4_t)__builtin_neon_vld1v4sf ((const __builtin_neon_sf *) __a);
  8983. }
  8984. __extension__ extern __inline uint8x16_t
  8985. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8986. vld1q_u8 (const uint8_t * __a)
  8987. {
  8988. return (uint8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
  8989. }
  8990. __extension__ extern __inline uint16x8_t
  8991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8992. vld1q_u16 (const uint16_t * __a)
  8993. {
  8994. return (uint16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
  8995. }
  8996. __extension__ extern __inline uint32x4_t
  8997. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  8998. vld1q_u32 (const uint32_t * __a)
  8999. {
  9000. return (uint32x4_t)__builtin_neon_vld1v4si ((const __builtin_neon_si *) __a);
  9001. }
  9002. __extension__ extern __inline uint64x2_t
  9003. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9004. vld1q_u64 (const uint64_t * __a)
  9005. {
  9006. return (uint64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
  9007. }
  9008. __extension__ extern __inline poly8x16_t
  9009. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9010. vld1q_p8 (const poly8_t * __a)
  9011. {
  9012. return (poly8x16_t)__builtin_neon_vld1v16qi ((const __builtin_neon_qi *) __a);
  9013. }
  9014. __extension__ extern __inline poly16x8_t
  9015. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9016. vld1q_p16 (const poly16_t * __a)
  9017. {
  9018. return (poly16x8_t)__builtin_neon_vld1v8hi ((const __builtin_neon_hi *) __a);
  9019. }
  9020. __extension__ extern __inline int8x8_t
  9021. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9022. vld1_lane_s8 (const int8_t * __a, int8x8_t __b, const int __c)
  9023. {
  9024. return (int8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, __b, __c);
  9025. }
  9026. __extension__ extern __inline int16x4_t
  9027. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9028. vld1_lane_s16 (const int16_t * __a, int16x4_t __b, const int __c)
  9029. {
  9030. return (int16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, __b, __c);
  9031. }
  9032. __extension__ extern __inline int32x2_t
  9033. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9034. vld1_lane_s32 (const int32_t * __a, int32x2_t __b, const int __c)
  9035. {
  9036. return (int32x2_t)__builtin_neon_vld1_lanev2si ((const __builtin_neon_si *) __a, __b, __c);
  9037. }
  9038. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9039. __extension__ extern __inline float16x4_t
  9040. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9041. vld1_lane_f16 (const float16_t * __a, float16x4_t __b, const int __c)
  9042. {
  9043. return vset_lane_f16 (*__a, __b, __c);
  9044. }
  9045. #endif
  9046. __extension__ extern __inline float32x2_t
  9047. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9048. vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c)
  9049. {
  9050. return (float32x2_t)__builtin_neon_vld1_lanev2sf ((const __builtin_neon_sf *) __a, __b, __c);
  9051. }
  9052. __extension__ extern __inline uint8x8_t
  9053. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9054. vld1_lane_u8 (const uint8_t * __a, uint8x8_t __b, const int __c)
  9055. {
  9056. return (uint8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, (int8x8_t) __b, __c);
  9057. }
  9058. __extension__ extern __inline uint16x4_t
  9059. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9060. vld1_lane_u16 (const uint16_t * __a, uint16x4_t __b, const int __c)
  9061. {
  9062. return (uint16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, (int16x4_t) __b, __c);
  9063. }
  9064. __extension__ extern __inline uint32x2_t
  9065. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9066. vld1_lane_u32 (const uint32_t * __a, uint32x2_t __b, const int __c)
  9067. {
  9068. return (uint32x2_t)__builtin_neon_vld1_lanev2si ((const __builtin_neon_si *) __a, (int32x2_t) __b, __c);
  9069. }
  9070. __extension__ extern __inline poly8x8_t
  9071. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9072. vld1_lane_p8 (const poly8_t * __a, poly8x8_t __b, const int __c)
  9073. {
  9074. return (poly8x8_t)__builtin_neon_vld1_lanev8qi ((const __builtin_neon_qi *) __a, (int8x8_t) __b, __c);
  9075. }
  9076. __extension__ extern __inline poly16x4_t
  9077. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9078. vld1_lane_p16 (const poly16_t * __a, poly16x4_t __b, const int __c)
  9079. {
  9080. return (poly16x4_t)__builtin_neon_vld1_lanev4hi ((const __builtin_neon_hi *) __a, (int16x4_t) __b, __c);
  9081. }
  9082. #pragma GCC push_options
  9083. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9084. __extension__ extern __inline poly64x1_t
  9085. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9086. vld1_lane_p64 (const poly64_t * __a, poly64x1_t __b, const int __c)
  9087. {
  9088. return (poly64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, __b, __c);
  9089. }
  9090. #pragma GCC pop_options
  9091. __extension__ extern __inline int64x1_t
  9092. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9093. vld1_lane_s64 (const int64_t * __a, int64x1_t __b, const int __c)
  9094. {
  9095. return (int64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, __b, __c);
  9096. }
  9097. __extension__ extern __inline uint64x1_t
  9098. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9099. vld1_lane_u64 (const uint64_t * __a, uint64x1_t __b, const int __c)
  9100. {
  9101. return (uint64x1_t)__builtin_neon_vld1_lanedi ((const __builtin_neon_di *) __a, (int64x1_t) __b, __c);
  9102. }
  9103. __extension__ extern __inline int8x16_t
  9104. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9105. vld1q_lane_s8 (const int8_t * __a, int8x16_t __b, const int __c)
  9106. {
  9107. return (int8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, __b, __c);
  9108. }
  9109. __extension__ extern __inline int16x8_t
  9110. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9111. vld1q_lane_s16 (const int16_t * __a, int16x8_t __b, const int __c)
  9112. {
  9113. return (int16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, __b, __c);
  9114. }
  9115. __extension__ extern __inline int32x4_t
  9116. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9117. vld1q_lane_s32 (const int32_t * __a, int32x4_t __b, const int __c)
  9118. {
  9119. return (int32x4_t)__builtin_neon_vld1_lanev4si ((const __builtin_neon_si *) __a, __b, __c);
  9120. }
  9121. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9122. __extension__ extern __inline float16x8_t
  9123. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9124. vld1q_lane_f16 (const float16_t * __a, float16x8_t __b, const int __c)
  9125. {
  9126. return vsetq_lane_f16 (*__a, __b, __c);
  9127. }
  9128. #endif
  9129. __extension__ extern __inline float32x4_t
  9130. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9131. vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c)
  9132. {
  9133. return (float32x4_t)__builtin_neon_vld1_lanev4sf ((const __builtin_neon_sf *) __a, __b, __c);
  9134. }
  9135. __extension__ extern __inline uint8x16_t
  9136. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9137. vld1q_lane_u8 (const uint8_t * __a, uint8x16_t __b, const int __c)
  9138. {
  9139. return (uint8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, (int8x16_t) __b, __c);
  9140. }
  9141. __extension__ extern __inline uint16x8_t
  9142. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9143. vld1q_lane_u16 (const uint16_t * __a, uint16x8_t __b, const int __c)
  9144. {
  9145. return (uint16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, (int16x8_t) __b, __c);
  9146. }
  9147. __extension__ extern __inline uint32x4_t
  9148. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9149. vld1q_lane_u32 (const uint32_t * __a, uint32x4_t __b, const int __c)
  9150. {
  9151. return (uint32x4_t)__builtin_neon_vld1_lanev4si ((const __builtin_neon_si *) __a, (int32x4_t) __b, __c);
  9152. }
  9153. __extension__ extern __inline poly8x16_t
  9154. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9155. vld1q_lane_p8 (const poly8_t * __a, poly8x16_t __b, const int __c)
  9156. {
  9157. return (poly8x16_t)__builtin_neon_vld1_lanev16qi ((const __builtin_neon_qi *) __a, (int8x16_t) __b, __c);
  9158. }
  9159. __extension__ extern __inline poly16x8_t
  9160. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9161. vld1q_lane_p16 (const poly16_t * __a, poly16x8_t __b, const int __c)
  9162. {
  9163. return (poly16x8_t)__builtin_neon_vld1_lanev8hi ((const __builtin_neon_hi *) __a, (int16x8_t) __b, __c);
  9164. }
  9165. #pragma GCC push_options
  9166. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9167. __extension__ extern __inline poly64x2_t
  9168. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9169. vld1q_lane_p64 (const poly64_t * __a, poly64x2_t __b, const int __c)
  9170. {
  9171. return (poly64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, (int64x2_t) __b, __c);
  9172. }
  9173. #pragma GCC pop_options
  9174. __extension__ extern __inline int64x2_t
  9175. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9176. vld1q_lane_s64 (const int64_t * __a, int64x2_t __b, const int __c)
  9177. {
  9178. return (int64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, __b, __c);
  9179. }
  9180. __extension__ extern __inline uint64x2_t
  9181. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9182. vld1q_lane_u64 (const uint64_t * __a, uint64x2_t __b, const int __c)
  9183. {
  9184. return (uint64x2_t)__builtin_neon_vld1_lanev2di ((const __builtin_neon_di *) __a, (int64x2_t) __b, __c);
  9185. }
  9186. __extension__ extern __inline int8x8_t
  9187. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9188. vld1_dup_s8 (const int8_t * __a)
  9189. {
  9190. return (int8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
  9191. }
  9192. __extension__ extern __inline int16x4_t
  9193. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9194. vld1_dup_s16 (const int16_t * __a)
  9195. {
  9196. return (int16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
  9197. }
  9198. __extension__ extern __inline int32x2_t
  9199. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9200. vld1_dup_s32 (const int32_t * __a)
  9201. {
  9202. return (int32x2_t)__builtin_neon_vld1_dupv2si ((const __builtin_neon_si *) __a);
  9203. }
  9204. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9205. __extension__ extern __inline float16x4_t
  9206. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9207. vld1_dup_f16 (const float16_t * __a)
  9208. {
  9209. float16_t __f = *__a;
  9210. return (float16x4_t) { __f, __f, __f, __f };
  9211. }
  9212. #endif
  9213. __extension__ extern __inline float32x2_t
  9214. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9215. vld1_dup_f32 (const float32_t * __a)
  9216. {
  9217. return (float32x2_t)__builtin_neon_vld1_dupv2sf ((const __builtin_neon_sf *) __a);
  9218. }
  9219. __extension__ extern __inline uint8x8_t
  9220. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9221. vld1_dup_u8 (const uint8_t * __a)
  9222. {
  9223. return (uint8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
  9224. }
  9225. __extension__ extern __inline uint16x4_t
  9226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9227. vld1_dup_u16 (const uint16_t * __a)
  9228. {
  9229. return (uint16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
  9230. }
  9231. __extension__ extern __inline uint32x2_t
  9232. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9233. vld1_dup_u32 (const uint32_t * __a)
  9234. {
  9235. return (uint32x2_t)__builtin_neon_vld1_dupv2si ((const __builtin_neon_si *) __a);
  9236. }
  9237. __extension__ extern __inline poly8x8_t
  9238. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9239. vld1_dup_p8 (const poly8_t * __a)
  9240. {
  9241. return (poly8x8_t)__builtin_neon_vld1_dupv8qi ((const __builtin_neon_qi *) __a);
  9242. }
  9243. __extension__ extern __inline poly16x4_t
  9244. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9245. vld1_dup_p16 (const poly16_t * __a)
  9246. {
  9247. return (poly16x4_t)__builtin_neon_vld1_dupv4hi ((const __builtin_neon_hi *) __a);
  9248. }
  9249. #pragma GCC push_options
  9250. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9251. __extension__ extern __inline poly64x1_t
  9252. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9253. vld1_dup_p64 (const poly64_t * __a)
  9254. {
  9255. return (poly64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
  9256. }
  9257. #pragma GCC pop_options
  9258. __extension__ extern __inline int64x1_t
  9259. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9260. vld1_dup_s64 (const int64_t * __a)
  9261. {
  9262. return (int64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
  9263. }
  9264. __extension__ extern __inline uint64x1_t
  9265. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9266. vld1_dup_u64 (const uint64_t * __a)
  9267. {
  9268. return (uint64x1_t)__builtin_neon_vld1_dupdi ((const __builtin_neon_di *) __a);
  9269. }
  9270. __extension__ extern __inline int8x16_t
  9271. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9272. vld1q_dup_s8 (const int8_t * __a)
  9273. {
  9274. return (int8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
  9275. }
  9276. __extension__ extern __inline int16x8_t
  9277. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9278. vld1q_dup_s16 (const int16_t * __a)
  9279. {
  9280. return (int16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
  9281. }
  9282. __extension__ extern __inline int32x4_t
  9283. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9284. vld1q_dup_s32 (const int32_t * __a)
  9285. {
  9286. return (int32x4_t)__builtin_neon_vld1_dupv4si ((const __builtin_neon_si *) __a);
  9287. }
  9288. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9289. __extension__ extern __inline float16x8_t
  9290. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9291. vld1q_dup_f16 (const float16_t * __a)
  9292. {
  9293. float16_t __f = *__a;
  9294. return (float16x8_t) { __f, __f, __f, __f, __f, __f, __f, __f };
  9295. }
  9296. #endif
  9297. __extension__ extern __inline float32x4_t
  9298. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9299. vld1q_dup_f32 (const float32_t * __a)
  9300. {
  9301. return (float32x4_t)__builtin_neon_vld1_dupv4sf ((const __builtin_neon_sf *) __a);
  9302. }
  9303. __extension__ extern __inline uint8x16_t
  9304. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9305. vld1q_dup_u8 (const uint8_t * __a)
  9306. {
  9307. return (uint8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
  9308. }
  9309. __extension__ extern __inline uint16x8_t
  9310. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9311. vld1q_dup_u16 (const uint16_t * __a)
  9312. {
  9313. return (uint16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
  9314. }
  9315. __extension__ extern __inline uint32x4_t
  9316. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9317. vld1q_dup_u32 (const uint32_t * __a)
  9318. {
  9319. return (uint32x4_t)__builtin_neon_vld1_dupv4si ((const __builtin_neon_si *) __a);
  9320. }
  9321. __extension__ extern __inline poly8x16_t
  9322. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9323. vld1q_dup_p8 (const poly8_t * __a)
  9324. {
  9325. return (poly8x16_t)__builtin_neon_vld1_dupv16qi ((const __builtin_neon_qi *) __a);
  9326. }
  9327. __extension__ extern __inline poly16x8_t
  9328. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9329. vld1q_dup_p16 (const poly16_t * __a)
  9330. {
  9331. return (poly16x8_t)__builtin_neon_vld1_dupv8hi ((const __builtin_neon_hi *) __a);
  9332. }
  9333. #pragma GCC push_options
  9334. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9335. __extension__ extern __inline poly64x2_t
  9336. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9337. vld1q_dup_p64 (const poly64_t * __a)
  9338. {
  9339. return (poly64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
  9340. }
  9341. #pragma GCC pop_options
  9342. __extension__ extern __inline int64x2_t
  9343. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9344. vld1q_dup_s64 (const int64_t * __a)
  9345. {
  9346. return (int64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
  9347. }
  9348. __extension__ extern __inline uint64x2_t
  9349. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9350. vld1q_dup_u64 (const uint64_t * __a)
  9351. {
  9352. return (uint64x2_t)__builtin_neon_vld1_dupv2di ((const __builtin_neon_di *) __a);
  9353. }
  9354. #pragma GCC push_options
  9355. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9356. __extension__ extern __inline void
  9357. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9358. vst1_p64 (poly64_t * __a, poly64x1_t __b)
  9359. {
  9360. __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b);
  9361. }
  9362. #pragma GCC pop_options
  9363. __extension__ extern __inline void
  9364. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9365. vst1_s8 (int8_t * __a, int8x8_t __b)
  9366. {
  9367. __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, __b);
  9368. }
  9369. __extension__ extern __inline void
  9370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9371. vst1_s16 (int16_t * __a, int16x4_t __b)
  9372. {
  9373. __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, __b);
  9374. }
  9375. __extension__ extern __inline void
  9376. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9377. vst1_s32 (int32_t * __a, int32x2_t __b)
  9378. {
  9379. __builtin_neon_vst1v2si ((__builtin_neon_si *) __a, __b);
  9380. }
  9381. __extension__ extern __inline void
  9382. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9383. vst1_s64 (int64_t * __a, int64x1_t __b)
  9384. {
  9385. __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b);
  9386. }
  9387. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9388. __extension__ extern __inline void
  9389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9390. vst1_f16 (float16_t * __a, float16x4_t __b)
  9391. {
  9392. __builtin_neon_vst1v4hf (__a, __b);
  9393. }
  9394. #endif
  9395. __extension__ extern __inline void
  9396. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9397. vst1_f32 (float32_t * __a, float32x2_t __b)
  9398. {
  9399. __builtin_neon_vst1v2sf ((__builtin_neon_sf *) __a, __b);
  9400. }
  9401. __extension__ extern __inline void
  9402. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9403. vst1_u8 (uint8_t * __a, uint8x8_t __b)
  9404. {
  9405. __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b);
  9406. }
  9407. __extension__ extern __inline void
  9408. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9409. vst1_u16 (uint16_t * __a, uint16x4_t __b)
  9410. {
  9411. __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b);
  9412. }
  9413. __extension__ extern __inline void
  9414. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9415. vst1_u32 (uint32_t * __a, uint32x2_t __b)
  9416. {
  9417. __builtin_neon_vst1v2si ((__builtin_neon_si *) __a, (int32x2_t) __b);
  9418. }
  9419. __extension__ extern __inline void
  9420. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9421. vst1_u64 (uint64_t * __a, uint64x1_t __b)
  9422. {
  9423. __builtin_neon_vst1di ((__builtin_neon_di *) __a, (int64x1_t) __b);
  9424. }
  9425. __extension__ extern __inline void
  9426. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9427. vst1_p8 (poly8_t * __a, poly8x8_t __b)
  9428. {
  9429. __builtin_neon_vst1v8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b);
  9430. }
  9431. __extension__ extern __inline void
  9432. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9433. vst1_p16 (poly16_t * __a, poly16x4_t __b)
  9434. {
  9435. __builtin_neon_vst1v4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b);
  9436. }
  9437. #pragma GCC push_options
  9438. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9439. __extension__ extern __inline void
  9440. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9441. vst1q_p64 (poly64_t * __a, poly64x2_t __b)
  9442. {
  9443. __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, (int64x2_t) __b);
  9444. }
  9445. #pragma GCC pop_options
  9446. __extension__ extern __inline void
  9447. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9448. vst1q_s8 (int8_t * __a, int8x16_t __b)
  9449. {
  9450. __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, __b);
  9451. }
  9452. __extension__ extern __inline void
  9453. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9454. vst1q_s16 (int16_t * __a, int16x8_t __b)
  9455. {
  9456. __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, __b);
  9457. }
  9458. __extension__ extern __inline void
  9459. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9460. vst1q_s32 (int32_t * __a, int32x4_t __b)
  9461. {
  9462. __builtin_neon_vst1v4si ((__builtin_neon_si *) __a, __b);
  9463. }
  9464. __extension__ extern __inline void
  9465. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9466. vst1q_s64 (int64_t * __a, int64x2_t __b)
  9467. {
  9468. __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, __b);
  9469. }
  9470. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9471. __extension__ extern __inline void
  9472. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9473. vst1q_f16 (float16_t * __a, float16x8_t __b)
  9474. {
  9475. __builtin_neon_vst1v8hf (__a, __b);
  9476. }
  9477. #endif
  9478. __extension__ extern __inline void
  9479. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9480. vst1q_f32 (float32_t * __a, float32x4_t __b)
  9481. {
  9482. __builtin_neon_vst1v4sf ((__builtin_neon_sf *) __a, __b);
  9483. }
  9484. __extension__ extern __inline void
  9485. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9486. vst1q_u8 (uint8_t * __a, uint8x16_t __b)
  9487. {
  9488. __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b);
  9489. }
  9490. __extension__ extern __inline void
  9491. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9492. vst1q_u16 (uint16_t * __a, uint16x8_t __b)
  9493. {
  9494. __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b);
  9495. }
  9496. __extension__ extern __inline void
  9497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9498. vst1q_u32 (uint32_t * __a, uint32x4_t __b)
  9499. {
  9500. __builtin_neon_vst1v4si ((__builtin_neon_si *) __a, (int32x4_t) __b);
  9501. }
  9502. __extension__ extern __inline void
  9503. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9504. vst1q_u64 (uint64_t * __a, uint64x2_t __b)
  9505. {
  9506. __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, (int64x2_t) __b);
  9507. }
  9508. __extension__ extern __inline void
  9509. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9510. vst1q_p8 (poly8_t * __a, poly8x16_t __b)
  9511. {
  9512. __builtin_neon_vst1v16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b);
  9513. }
  9514. __extension__ extern __inline void
  9515. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9516. vst1q_p16 (poly16_t * __a, poly16x8_t __b)
  9517. {
  9518. __builtin_neon_vst1v8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b);
  9519. }
  9520. __extension__ extern __inline void
  9521. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9522. vst1_lane_s8 (int8_t * __a, int8x8_t __b, const int __c)
  9523. {
  9524. __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, __b, __c);
  9525. }
  9526. __extension__ extern __inline void
  9527. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9528. vst1_lane_s16 (int16_t * __a, int16x4_t __b, const int __c)
  9529. {
  9530. __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, __b, __c);
  9531. }
  9532. __extension__ extern __inline void
  9533. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9534. vst1_lane_s32 (int32_t * __a, int32x2_t __b, const int __c)
  9535. {
  9536. __builtin_neon_vst1_lanev2si ((__builtin_neon_si *) __a, __b, __c);
  9537. }
  9538. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9539. __extension__ extern __inline void
  9540. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9541. vst1_lane_f16 (float16_t * __a, float16x4_t __b, const int __c)
  9542. {
  9543. __builtin_neon_vst1_lanev4hf (__a, __b, __c);
  9544. }
  9545. #endif
  9546. __extension__ extern __inline void
  9547. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9548. vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c)
  9549. {
  9550. __builtin_neon_vst1_lanev2sf ((__builtin_neon_sf *) __a, __b, __c);
  9551. }
  9552. __extension__ extern __inline void
  9553. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9554. vst1_lane_u8 (uint8_t * __a, uint8x8_t __b, const int __c)
  9555. {
  9556. __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b, __c);
  9557. }
  9558. __extension__ extern __inline void
  9559. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9560. vst1_lane_u16 (uint16_t * __a, uint16x4_t __b, const int __c)
  9561. {
  9562. __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b, __c);
  9563. }
  9564. __extension__ extern __inline void
  9565. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9566. vst1_lane_u32 (uint32_t * __a, uint32x2_t __b, const int __c)
  9567. {
  9568. __builtin_neon_vst1_lanev2si ((__builtin_neon_si *) __a, (int32x2_t) __b, __c);
  9569. }
  9570. __extension__ extern __inline void
  9571. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9572. vst1_lane_p8 (poly8_t * __a, poly8x8_t __b, const int __c)
  9573. {
  9574. __builtin_neon_vst1_lanev8qi ((__builtin_neon_qi *) __a, (int8x8_t) __b, __c);
  9575. }
  9576. __extension__ extern __inline void
  9577. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9578. vst1_lane_p16 (poly16_t * __a, poly16x4_t __b, const int __c)
  9579. {
  9580. __builtin_neon_vst1_lanev4hi ((__builtin_neon_hi *) __a, (int16x4_t) __b, __c);
  9581. }
  9582. #pragma GCC push_options
  9583. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9584. __extension__ extern __inline void
  9585. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9586. vst1_lane_p64 (poly64_t * __a, poly64x1_t __b, const int __c)
  9587. {
  9588. __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, __b, __c);
  9589. }
  9590. #pragma GCC pop_options
  9591. __extension__ extern __inline void
  9592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9593. vst1_lane_s64 (int64_t * __a, int64x1_t __b, const int __c)
  9594. {
  9595. __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, __b, __c);
  9596. }
  9597. __extension__ extern __inline void
  9598. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9599. vst1_lane_u64 (uint64_t * __a, uint64x1_t __b, const int __c)
  9600. {
  9601. __builtin_neon_vst1_lanedi ((__builtin_neon_di *) __a, (int64x1_t) __b, __c);
  9602. }
  9603. __extension__ extern __inline void
  9604. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9605. vst1q_lane_s8 (int8_t * __a, int8x16_t __b, const int __c)
  9606. {
  9607. __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, __b, __c);
  9608. }
  9609. __extension__ extern __inline void
  9610. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9611. vst1q_lane_s16 (int16_t * __a, int16x8_t __b, const int __c)
  9612. {
  9613. __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, __b, __c);
  9614. }
  9615. __extension__ extern __inline void
  9616. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9617. vst1q_lane_s32 (int32_t * __a, int32x4_t __b, const int __c)
  9618. {
  9619. __builtin_neon_vst1_lanev4si ((__builtin_neon_si *) __a, __b, __c);
  9620. }
  9621. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9622. __extension__ extern __inline void
  9623. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9624. vst1q_lane_f16 (float16_t * __a, float16x8_t __b, const int __c)
  9625. {
  9626. __builtin_neon_vst1_lanev8hf (__a, __b, __c);
  9627. }
  9628. #endif
  9629. __extension__ extern __inline void
  9630. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9631. vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c)
  9632. {
  9633. __builtin_neon_vst1_lanev4sf ((__builtin_neon_sf *) __a, __b, __c);
  9634. }
  9635. __extension__ extern __inline void
  9636. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9637. vst1q_lane_u8 (uint8_t * __a, uint8x16_t __b, const int __c)
  9638. {
  9639. __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b, __c);
  9640. }
  9641. __extension__ extern __inline void
  9642. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9643. vst1q_lane_u16 (uint16_t * __a, uint16x8_t __b, const int __c)
  9644. {
  9645. __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b, __c);
  9646. }
  9647. __extension__ extern __inline void
  9648. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9649. vst1q_lane_u32 (uint32_t * __a, uint32x4_t __b, const int __c)
  9650. {
  9651. __builtin_neon_vst1_lanev4si ((__builtin_neon_si *) __a, (int32x4_t) __b, __c);
  9652. }
  9653. __extension__ extern __inline void
  9654. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9655. vst1q_lane_p8 (poly8_t * __a, poly8x16_t __b, const int __c)
  9656. {
  9657. __builtin_neon_vst1_lanev16qi ((__builtin_neon_qi *) __a, (int8x16_t) __b, __c);
  9658. }
  9659. __extension__ extern __inline void
  9660. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9661. vst1q_lane_p16 (poly16_t * __a, poly16x8_t __b, const int __c)
  9662. {
  9663. __builtin_neon_vst1_lanev8hi ((__builtin_neon_hi *) __a, (int16x8_t) __b, __c);
  9664. }
  9665. #pragma GCC push_options
  9666. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9667. __extension__ extern __inline void
  9668. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9669. vst1q_lane_p64 (poly64_t * __a, poly64x2_t __b, const int __c)
  9670. {
  9671. __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, (int64x2_t) __b, __c);
  9672. }
  9673. #pragma GCC pop_options
  9674. __extension__ extern __inline void
  9675. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9676. vst1q_lane_s64 (int64_t * __a, int64x2_t __b, const int __c)
  9677. {
  9678. __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, __b, __c);
  9679. }
  9680. __extension__ extern __inline void
  9681. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9682. vst1q_lane_u64 (uint64_t * __a, uint64x2_t __b, const int __c)
  9683. {
  9684. __builtin_neon_vst1_lanev2di ((__builtin_neon_di *) __a, (int64x2_t) __b, __c);
  9685. }
  9686. __extension__ extern __inline int8x8x2_t
  9687. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9688. vld2_s8 (const int8_t * __a)
  9689. {
  9690. union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9691. __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
  9692. return __rv.__i;
  9693. }
  9694. __extension__ extern __inline int16x4x2_t
  9695. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9696. vld2_s16 (const int16_t * __a)
  9697. {
  9698. union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9699. __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
  9700. return __rv.__i;
  9701. }
  9702. __extension__ extern __inline int32x2x2_t
  9703. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9704. vld2_s32 (const int32_t * __a)
  9705. {
  9706. union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9707. __rv.__o = __builtin_neon_vld2v2si ((const __builtin_neon_si *) __a);
  9708. return __rv.__i;
  9709. }
  9710. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9711. __extension__ extern __inline float16x4x2_t
  9712. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9713. vld2_f16 (const float16_t * __a)
  9714. {
  9715. union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9716. __rv.__o = __builtin_neon_vld2v4hf (__a);
  9717. return __rv.__i;
  9718. }
  9719. #endif
  9720. __extension__ extern __inline float32x2x2_t
  9721. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9722. vld2_f32 (const float32_t * __a)
  9723. {
  9724. union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9725. __rv.__o = __builtin_neon_vld2v2sf ((const __builtin_neon_sf *) __a);
  9726. return __rv.__i;
  9727. }
  9728. __extension__ extern __inline uint8x8x2_t
  9729. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9730. vld2_u8 (const uint8_t * __a)
  9731. {
  9732. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9733. __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
  9734. return __rv.__i;
  9735. }
  9736. __extension__ extern __inline uint16x4x2_t
  9737. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9738. vld2_u16 (const uint16_t * __a)
  9739. {
  9740. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9741. __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
  9742. return __rv.__i;
  9743. }
  9744. __extension__ extern __inline uint32x2x2_t
  9745. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9746. vld2_u32 (const uint32_t * __a)
  9747. {
  9748. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9749. __rv.__o = __builtin_neon_vld2v2si ((const __builtin_neon_si *) __a);
  9750. return __rv.__i;
  9751. }
  9752. __extension__ extern __inline poly8x8x2_t
  9753. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9754. vld2_p8 (const poly8_t * __a)
  9755. {
  9756. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9757. __rv.__o = __builtin_neon_vld2v8qi ((const __builtin_neon_qi *) __a);
  9758. return __rv.__i;
  9759. }
  9760. __extension__ extern __inline poly16x4x2_t
  9761. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9762. vld2_p16 (const poly16_t * __a)
  9763. {
  9764. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9765. __rv.__o = __builtin_neon_vld2v4hi ((const __builtin_neon_hi *) __a);
  9766. return __rv.__i;
  9767. }
  9768. #pragma GCC push_options
  9769. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  9770. __extension__ extern __inline poly64x1x2_t
  9771. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9772. vld2_p64 (const poly64_t * __a)
  9773. {
  9774. union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  9775. __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
  9776. return __rv.__i;
  9777. }
  9778. #pragma GCC pop_options
  9779. __extension__ extern __inline int64x1x2_t
  9780. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9781. vld2_s64 (const int64_t * __a)
  9782. {
  9783. union { int64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  9784. __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
  9785. return __rv.__i;
  9786. }
  9787. __extension__ extern __inline uint64x1x2_t
  9788. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9789. vld2_u64 (const uint64_t * __a)
  9790. {
  9791. union { uint64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  9792. __rv.__o = __builtin_neon_vld2di ((const __builtin_neon_di *) __a);
  9793. return __rv.__i;
  9794. }
  9795. __extension__ extern __inline int8x16x2_t
  9796. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9797. vld2q_s8 (const int8_t * __a)
  9798. {
  9799. union { int8x16x2_t __i; __builtin_neon_oi __o; } __rv;
  9800. __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
  9801. return __rv.__i;
  9802. }
  9803. __extension__ extern __inline int16x8x2_t
  9804. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9805. vld2q_s16 (const int16_t * __a)
  9806. {
  9807. union { int16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9808. __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
  9809. return __rv.__i;
  9810. }
  9811. __extension__ extern __inline int32x4x2_t
  9812. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9813. vld2q_s32 (const int32_t * __a)
  9814. {
  9815. union { int32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  9816. __rv.__o = __builtin_neon_vld2v4si ((const __builtin_neon_si *) __a);
  9817. return __rv.__i;
  9818. }
  9819. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9820. __extension__ extern __inline float16x8x2_t
  9821. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9822. vld2q_f16 (const float16_t * __a)
  9823. {
  9824. union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9825. __rv.__o = __builtin_neon_vld2v8hf (__a);
  9826. return __rv.__i;
  9827. }
  9828. #endif
  9829. __extension__ extern __inline float32x4x2_t
  9830. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9831. vld2q_f32 (const float32_t * __a)
  9832. {
  9833. union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  9834. __rv.__o = __builtin_neon_vld2v4sf ((const __builtin_neon_sf *) __a);
  9835. return __rv.__i;
  9836. }
  9837. __extension__ extern __inline uint8x16x2_t
  9838. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9839. vld2q_u8 (const uint8_t * __a)
  9840. {
  9841. union { uint8x16x2_t __i; __builtin_neon_oi __o; } __rv;
  9842. __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
  9843. return __rv.__i;
  9844. }
  9845. __extension__ extern __inline uint16x8x2_t
  9846. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9847. vld2q_u16 (const uint16_t * __a)
  9848. {
  9849. union { uint16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9850. __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
  9851. return __rv.__i;
  9852. }
  9853. __extension__ extern __inline uint32x4x2_t
  9854. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9855. vld2q_u32 (const uint32_t * __a)
  9856. {
  9857. union { uint32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  9858. __rv.__o = __builtin_neon_vld2v4si ((const __builtin_neon_si *) __a);
  9859. return __rv.__i;
  9860. }
  9861. __extension__ extern __inline poly8x16x2_t
  9862. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9863. vld2q_p8 (const poly8_t * __a)
  9864. {
  9865. union { poly8x16x2_t __i; __builtin_neon_oi __o; } __rv;
  9866. __rv.__o = __builtin_neon_vld2v16qi ((const __builtin_neon_qi *) __a);
  9867. return __rv.__i;
  9868. }
  9869. __extension__ extern __inline poly16x8x2_t
  9870. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9871. vld2q_p16 (const poly16_t * __a)
  9872. {
  9873. union { poly16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9874. __rv.__o = __builtin_neon_vld2v8hi ((const __builtin_neon_hi *) __a);
  9875. return __rv.__i;
  9876. }
  9877. __extension__ extern __inline int8x8x2_t
  9878. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9879. vld2_lane_s8 (const int8_t * __a, int8x8x2_t __b, const int __c)
  9880. {
  9881. union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9882. union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9883. __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  9884. return __rv.__i;
  9885. }
  9886. __extension__ extern __inline int16x4x2_t
  9887. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9888. vld2_lane_s16 (const int16_t * __a, int16x4x2_t __b, const int __c)
  9889. {
  9890. union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9891. union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9892. __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  9893. return __rv.__i;
  9894. }
  9895. __extension__ extern __inline int32x2x2_t
  9896. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9897. vld2_lane_s32 (const int32_t * __a, int32x2x2_t __b, const int __c)
  9898. {
  9899. union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9900. union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9901. __rv.__o = __builtin_neon_vld2_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  9902. return __rv.__i;
  9903. }
  9904. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9905. __extension__ extern __inline float16x4x2_t
  9906. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9907. vld2_lane_f16 (const float16_t * __a, float16x4x2_t __b, const int __c)
  9908. {
  9909. union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9910. union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9911. __rv.__o = __builtin_neon_vld2_lanev4hf ( __a, __bu.__o, __c);
  9912. return __rv.__i;
  9913. }
  9914. #endif
  9915. __extension__ extern __inline float32x2x2_t
  9916. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9917. vld2_lane_f32 (const float32_t * __a, float32x2x2_t __b, const int __c)
  9918. {
  9919. union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9920. union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9921. __rv.__o = __builtin_neon_vld2_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  9922. return __rv.__i;
  9923. }
  9924. __extension__ extern __inline uint8x8x2_t
  9925. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9926. vld2_lane_u8 (const uint8_t * __a, uint8x8x2_t __b, const int __c)
  9927. {
  9928. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9929. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9930. __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  9931. return __rv.__i;
  9932. }
  9933. __extension__ extern __inline uint16x4x2_t
  9934. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9935. vld2_lane_u16 (const uint16_t * __a, uint16x4x2_t __b, const int __c)
  9936. {
  9937. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9938. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9939. __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  9940. return __rv.__i;
  9941. }
  9942. __extension__ extern __inline uint32x2x2_t
  9943. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9944. vld2_lane_u32 (const uint32_t * __a, uint32x2x2_t __b, const int __c)
  9945. {
  9946. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9947. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  9948. __rv.__o = __builtin_neon_vld2_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  9949. return __rv.__i;
  9950. }
  9951. __extension__ extern __inline poly8x8x2_t
  9952. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9953. vld2_lane_p8 (const poly8_t * __a, poly8x8x2_t __b, const int __c)
  9954. {
  9955. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9956. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  9957. __rv.__o = __builtin_neon_vld2_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  9958. return __rv.__i;
  9959. }
  9960. __extension__ extern __inline poly16x4x2_t
  9961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9962. vld2_lane_p16 (const poly16_t * __a, poly16x4x2_t __b, const int __c)
  9963. {
  9964. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  9965. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  9966. __rv.__o = __builtin_neon_vld2_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  9967. return __rv.__i;
  9968. }
  9969. __extension__ extern __inline int16x8x2_t
  9970. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9971. vld2q_lane_s16 (const int16_t * __a, int16x8x2_t __b, const int __c)
  9972. {
  9973. union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  9974. union { int16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9975. __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  9976. return __rv.__i;
  9977. }
  9978. __extension__ extern __inline int32x4x2_t
  9979. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9980. vld2q_lane_s32 (const int32_t * __a, int32x4x2_t __b, const int __c)
  9981. {
  9982. union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  9983. union { int32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  9984. __rv.__o = __builtin_neon_vld2_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  9985. return __rv.__i;
  9986. }
  9987. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  9988. __extension__ extern __inline float16x8x2_t
  9989. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  9990. vld2q_lane_f16 (const float16_t * __a, float16x8x2_t __b, const int __c)
  9991. {
  9992. union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  9993. union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  9994. __rv.__o = __builtin_neon_vld2_lanev8hf (__a, __bu.__o, __c);
  9995. return __rv.__i;
  9996. }
  9997. #endif
  9998. __extension__ extern __inline float32x4x2_t
  9999. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10000. vld2q_lane_f32 (const float32_t * __a, float32x4x2_t __b, const int __c)
  10001. {
  10002. union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10003. union { float32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  10004. __rv.__o = __builtin_neon_vld2_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  10005. return __rv.__i;
  10006. }
  10007. __extension__ extern __inline uint16x8x2_t
  10008. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10009. vld2q_lane_u16 (const uint16_t * __a, uint16x8x2_t __b, const int __c)
  10010. {
  10011. union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10012. union { uint16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  10013. __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10014. return __rv.__i;
  10015. }
  10016. __extension__ extern __inline uint32x4x2_t
  10017. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10018. vld2q_lane_u32 (const uint32_t * __a, uint32x4x2_t __b, const int __c)
  10019. {
  10020. union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10021. union { uint32x4x2_t __i; __builtin_neon_oi __o; } __rv;
  10022. __rv.__o = __builtin_neon_vld2_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  10023. return __rv.__i;
  10024. }
  10025. __extension__ extern __inline poly16x8x2_t
  10026. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10027. vld2q_lane_p16 (const poly16_t * __a, poly16x8x2_t __b, const int __c)
  10028. {
  10029. union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10030. union { poly16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  10031. __rv.__o = __builtin_neon_vld2_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10032. return __rv.__i;
  10033. }
  10034. __extension__ extern __inline int8x8x2_t
  10035. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10036. vld2_dup_s8 (const int8_t * __a)
  10037. {
  10038. union { int8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  10039. __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
  10040. return __rv.__i;
  10041. }
  10042. __extension__ extern __inline int16x4x2_t
  10043. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10044. vld2_dup_s16 (const int16_t * __a)
  10045. {
  10046. union { int16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  10047. __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
  10048. return __rv.__i;
  10049. }
  10050. __extension__ extern __inline int32x2x2_t
  10051. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10052. vld2_dup_s32 (const int32_t * __a)
  10053. {
  10054. union { int32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  10055. __rv.__o = __builtin_neon_vld2_dupv2si ((const __builtin_neon_si *) __a);
  10056. return __rv.__i;
  10057. }
  10058. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10059. __extension__ extern __inline float16x4x2_t
  10060. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10061. vld2_dup_f16 (const float16_t * __a)
  10062. {
  10063. union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  10064. __rv.__o = __builtin_neon_vld2_dupv4hf (__a);
  10065. return __rv.__i;
  10066. }
  10067. #endif
  10068. __extension__ extern __inline float32x2x2_t
  10069. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10070. vld2_dup_f32 (const float32_t * __a)
  10071. {
  10072. union { float32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  10073. __rv.__o = __builtin_neon_vld2_dupv2sf ((const __builtin_neon_sf *) __a);
  10074. return __rv.__i;
  10075. }
  10076. __extension__ extern __inline uint8x8x2_t
  10077. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10078. vld2_dup_u8 (const uint8_t * __a)
  10079. {
  10080. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  10081. __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
  10082. return __rv.__i;
  10083. }
  10084. __extension__ extern __inline uint16x4x2_t
  10085. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10086. vld2_dup_u16 (const uint16_t * __a)
  10087. {
  10088. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  10089. __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
  10090. return __rv.__i;
  10091. }
  10092. __extension__ extern __inline uint32x2x2_t
  10093. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10094. vld2_dup_u32 (const uint32_t * __a)
  10095. {
  10096. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __rv;
  10097. __rv.__o = __builtin_neon_vld2_dupv2si ((const __builtin_neon_si *) __a);
  10098. return __rv.__i;
  10099. }
  10100. __extension__ extern __inline poly8x8x2_t
  10101. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10102. vld2_dup_p8 (const poly8_t * __a)
  10103. {
  10104. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __rv;
  10105. __rv.__o = __builtin_neon_vld2_dupv8qi ((const __builtin_neon_qi *) __a);
  10106. return __rv.__i;
  10107. }
  10108. __extension__ extern __inline poly16x4x2_t
  10109. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10110. vld2_dup_p16 (const poly16_t * __a)
  10111. {
  10112. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  10113. __rv.__o = __builtin_neon_vld2_dupv4hi ((const __builtin_neon_hi *) __a);
  10114. return __rv.__i;
  10115. }
  10116. #pragma GCC push_options
  10117. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  10118. __extension__ extern __inline poly64x1x2_t
  10119. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10120. vld2_dup_p64 (const poly64_t * __a)
  10121. {
  10122. union { poly64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  10123. __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
  10124. return __rv.__i;
  10125. }
  10126. #pragma GCC pop_options
  10127. __extension__ extern __inline int64x1x2_t
  10128. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10129. vld2_dup_s64 (const int64_t * __a)
  10130. {
  10131. union { int64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  10132. __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
  10133. return __rv.__i;
  10134. }
  10135. __extension__ extern __inline uint64x1x2_t
  10136. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10137. vld2_dup_u64 (const uint64_t * __a)
  10138. {
  10139. union { uint64x1x2_t __i; __builtin_neon_ti __o; } __rv;
  10140. __rv.__o = __builtin_neon_vld2_dupdi ((const __builtin_neon_di *) __a);
  10141. return __rv.__i;
  10142. }
  10143. __extension__ extern __inline void
  10144. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10145. vst2_s8 (int8_t * __a, int8x8x2_t __b)
  10146. {
  10147. union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10148. __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10149. }
  10150. __extension__ extern __inline void
  10151. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10152. vst2_s16 (int16_t * __a, int16x4x2_t __b)
  10153. {
  10154. union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10155. __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10156. }
  10157. __extension__ extern __inline void
  10158. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10159. vst2_s32 (int32_t * __a, int32x2x2_t __b)
  10160. {
  10161. union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10162. __builtin_neon_vst2v2si ((__builtin_neon_si *) __a, __bu.__o);
  10163. }
  10164. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10165. __extension__ extern __inline void
  10166. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10167. vst2_f16 (float16_t * __a, float16x4x2_t __b)
  10168. {
  10169. union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10170. __builtin_neon_vst2v4hf (__a, __bu.__o);
  10171. }
  10172. #endif
  10173. __extension__ extern __inline void
  10174. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10175. vst2_f32 (float32_t * __a, float32x2x2_t __b)
  10176. {
  10177. union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10178. __builtin_neon_vst2v2sf ((__builtin_neon_sf *) __a, __bu.__o);
  10179. }
  10180. __extension__ extern __inline void
  10181. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10182. vst2_u8 (uint8_t * __a, uint8x8x2_t __b)
  10183. {
  10184. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10185. __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10186. }
  10187. __extension__ extern __inline void
  10188. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10189. vst2_u16 (uint16_t * __a, uint16x4x2_t __b)
  10190. {
  10191. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10192. __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10193. }
  10194. __extension__ extern __inline void
  10195. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10196. vst2_u32 (uint32_t * __a, uint32x2x2_t __b)
  10197. {
  10198. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10199. __builtin_neon_vst2v2si ((__builtin_neon_si *) __a, __bu.__o);
  10200. }
  10201. __extension__ extern __inline void
  10202. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10203. vst2_p8 (poly8_t * __a, poly8x8x2_t __b)
  10204. {
  10205. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10206. __builtin_neon_vst2v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10207. }
  10208. __extension__ extern __inline void
  10209. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10210. vst2_p16 (poly16_t * __a, poly16x4x2_t __b)
  10211. {
  10212. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10213. __builtin_neon_vst2v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10214. }
  10215. #pragma GCC push_options
  10216. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  10217. __extension__ extern __inline void
  10218. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10219. vst2_p64 (poly64_t * __a, poly64x1x2_t __b)
  10220. {
  10221. union { poly64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10222. __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
  10223. }
  10224. #pragma GCC pop_options
  10225. __extension__ extern __inline void
  10226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10227. vst2_s64 (int64_t * __a, int64x1x2_t __b)
  10228. {
  10229. union { int64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10230. __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
  10231. }
  10232. __extension__ extern __inline void
  10233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10234. vst2_u64 (uint64_t * __a, uint64x1x2_t __b)
  10235. {
  10236. union { uint64x1x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10237. __builtin_neon_vst2di ((__builtin_neon_di *) __a, __bu.__o);
  10238. }
  10239. __extension__ extern __inline void
  10240. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10241. vst2q_s8 (int8_t * __a, int8x16x2_t __b)
  10242. {
  10243. union { int8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10244. __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  10245. }
  10246. __extension__ extern __inline void
  10247. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10248. vst2q_s16 (int16_t * __a, int16x8x2_t __b)
  10249. {
  10250. union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10251. __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  10252. }
  10253. __extension__ extern __inline void
  10254. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10255. vst2q_s32 (int32_t * __a, int32x4x2_t __b)
  10256. {
  10257. union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10258. __builtin_neon_vst2v4si ((__builtin_neon_si *) __a, __bu.__o);
  10259. }
  10260. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10261. __extension__ extern __inline void
  10262. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10263. vst2q_f16 (float16_t * __a, float16x8x2_t __b)
  10264. {
  10265. union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10266. __builtin_neon_vst2v8hf (__a, __bu.__o);
  10267. }
  10268. #endif
  10269. __extension__ extern __inline void
  10270. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10271. vst2q_f32 (float32_t * __a, float32x4x2_t __b)
  10272. {
  10273. union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10274. __builtin_neon_vst2v4sf ((__builtin_neon_sf *) __a, __bu.__o);
  10275. }
  10276. __extension__ extern __inline void
  10277. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10278. vst2q_u8 (uint8_t * __a, uint8x16x2_t __b)
  10279. {
  10280. union { uint8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10281. __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  10282. }
  10283. __extension__ extern __inline void
  10284. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10285. vst2q_u16 (uint16_t * __a, uint16x8x2_t __b)
  10286. {
  10287. union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10288. __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  10289. }
  10290. __extension__ extern __inline void
  10291. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10292. vst2q_u32 (uint32_t * __a, uint32x4x2_t __b)
  10293. {
  10294. union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10295. __builtin_neon_vst2v4si ((__builtin_neon_si *) __a, __bu.__o);
  10296. }
  10297. __extension__ extern __inline void
  10298. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10299. vst2q_p8 (poly8_t * __a, poly8x16x2_t __b)
  10300. {
  10301. union { poly8x16x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10302. __builtin_neon_vst2v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  10303. }
  10304. __extension__ extern __inline void
  10305. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10306. vst2q_p16 (poly16_t * __a, poly16x8x2_t __b)
  10307. {
  10308. union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10309. __builtin_neon_vst2v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  10310. }
  10311. __extension__ extern __inline void
  10312. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10313. vst2_lane_s8 (int8_t * __a, int8x8x2_t __b, const int __c)
  10314. {
  10315. union { int8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10316. __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  10317. }
  10318. __extension__ extern __inline void
  10319. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10320. vst2_lane_s16 (int16_t * __a, int16x4x2_t __b, const int __c)
  10321. {
  10322. union { int16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10323. __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10324. }
  10325. __extension__ extern __inline void
  10326. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10327. vst2_lane_s32 (int32_t * __a, int32x2x2_t __b, const int __c)
  10328. {
  10329. union { int32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10330. __builtin_neon_vst2_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  10331. }
  10332. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10333. __extension__ extern __inline void
  10334. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10335. vst2_lane_f16 (float16_t * __a, float16x4x2_t __b, const int __c)
  10336. {
  10337. union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10338. __builtin_neon_vst2_lanev4hf (__a, __bu.__o, __c);
  10339. }
  10340. #endif
  10341. __extension__ extern __inline void
  10342. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10343. vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c)
  10344. {
  10345. union { float32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10346. __builtin_neon_vst2_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  10347. }
  10348. __extension__ extern __inline void
  10349. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10350. vst2_lane_u8 (uint8_t * __a, uint8x8x2_t __b, const int __c)
  10351. {
  10352. union { uint8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10353. __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  10354. }
  10355. __extension__ extern __inline void
  10356. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10357. vst2_lane_u16 (uint16_t * __a, uint16x4x2_t __b, const int __c)
  10358. {
  10359. union { uint16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10360. __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10361. }
  10362. __extension__ extern __inline void
  10363. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10364. vst2_lane_u32 (uint32_t * __a, uint32x2x2_t __b, const int __c)
  10365. {
  10366. union { uint32x2x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10367. __builtin_neon_vst2_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  10368. }
  10369. __extension__ extern __inline void
  10370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10371. vst2_lane_p8 (poly8_t * __a, poly8x8x2_t __b, const int __c)
  10372. {
  10373. union { poly8x8x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10374. __builtin_neon_vst2_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  10375. }
  10376. __extension__ extern __inline void
  10377. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10378. vst2_lane_p16 (poly16_t * __a, poly16x4x2_t __b, const int __c)
  10379. {
  10380. union { poly16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
  10381. __builtin_neon_vst2_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10382. }
  10383. __extension__ extern __inline void
  10384. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10385. vst2q_lane_s16 (int16_t * __a, int16x8x2_t __b, const int __c)
  10386. {
  10387. union { int16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10388. __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10389. }
  10390. __extension__ extern __inline void
  10391. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10392. vst2q_lane_s32 (int32_t * __a, int32x4x2_t __b, const int __c)
  10393. {
  10394. union { int32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10395. __builtin_neon_vst2_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  10396. }
  10397. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10398. __extension__ extern __inline void
  10399. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10400. vst2q_lane_f16 (float16_t * __a, float16x8x2_t __b, const int __c)
  10401. {
  10402. union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10403. __builtin_neon_vst2_lanev8hf (__a, __bu.__o, __c);
  10404. }
  10405. #endif
  10406. __extension__ extern __inline void
  10407. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10408. vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c)
  10409. {
  10410. union { float32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10411. __builtin_neon_vst2_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  10412. }
  10413. __extension__ extern __inline void
  10414. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10415. vst2q_lane_u16 (uint16_t * __a, uint16x8x2_t __b, const int __c)
  10416. {
  10417. union { uint16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10418. __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10419. }
  10420. __extension__ extern __inline void
  10421. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10422. vst2q_lane_u32 (uint32_t * __a, uint32x4x2_t __b, const int __c)
  10423. {
  10424. union { uint32x4x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10425. __builtin_neon_vst2_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  10426. }
  10427. __extension__ extern __inline void
  10428. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10429. vst2q_lane_p16 (poly16_t * __a, poly16x8x2_t __b, const int __c)
  10430. {
  10431. union { poly16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
  10432. __builtin_neon_vst2_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  10433. }
  10434. __extension__ extern __inline int8x8x3_t
  10435. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10436. vld3_s8 (const int8_t * __a)
  10437. {
  10438. union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10439. __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
  10440. return __rv.__i;
  10441. }
  10442. __extension__ extern __inline int16x4x3_t
  10443. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10444. vld3_s16 (const int16_t * __a)
  10445. {
  10446. union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10447. __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
  10448. return __rv.__i;
  10449. }
  10450. __extension__ extern __inline int32x2x3_t
  10451. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10452. vld3_s32 (const int32_t * __a)
  10453. {
  10454. union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10455. __rv.__o = __builtin_neon_vld3v2si ((const __builtin_neon_si *) __a);
  10456. return __rv.__i;
  10457. }
  10458. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10459. __extension__ extern __inline float16x4x3_t
  10460. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10461. vld3_f16 (const float16_t * __a)
  10462. {
  10463. union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10464. __rv.__o = __builtin_neon_vld3v4hf (__a);
  10465. return __rv.__i;
  10466. }
  10467. #endif
  10468. __extension__ extern __inline float32x2x3_t
  10469. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10470. vld3_f32 (const float32_t * __a)
  10471. {
  10472. union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10473. __rv.__o = __builtin_neon_vld3v2sf ((const __builtin_neon_sf *) __a);
  10474. return __rv.__i;
  10475. }
  10476. __extension__ extern __inline uint8x8x3_t
  10477. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10478. vld3_u8 (const uint8_t * __a)
  10479. {
  10480. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10481. __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
  10482. return __rv.__i;
  10483. }
  10484. __extension__ extern __inline uint16x4x3_t
  10485. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10486. vld3_u16 (const uint16_t * __a)
  10487. {
  10488. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10489. __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
  10490. return __rv.__i;
  10491. }
  10492. __extension__ extern __inline uint32x2x3_t
  10493. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10494. vld3_u32 (const uint32_t * __a)
  10495. {
  10496. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10497. __rv.__o = __builtin_neon_vld3v2si ((const __builtin_neon_si *) __a);
  10498. return __rv.__i;
  10499. }
  10500. __extension__ extern __inline poly8x8x3_t
  10501. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10502. vld3_p8 (const poly8_t * __a)
  10503. {
  10504. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10505. __rv.__o = __builtin_neon_vld3v8qi ((const __builtin_neon_qi *) __a);
  10506. return __rv.__i;
  10507. }
  10508. __extension__ extern __inline poly16x4x3_t
  10509. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10510. vld3_p16 (const poly16_t * __a)
  10511. {
  10512. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10513. __rv.__o = __builtin_neon_vld3v4hi ((const __builtin_neon_hi *) __a);
  10514. return __rv.__i;
  10515. }
  10516. #pragma GCC push_options
  10517. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  10518. __extension__ extern __inline poly64x1x3_t
  10519. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10520. vld3_p64 (const poly64_t * __a)
  10521. {
  10522. union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10523. __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
  10524. return __rv.__i;
  10525. }
  10526. #pragma GCC pop_options
  10527. __extension__ extern __inline int64x1x3_t
  10528. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10529. vld3_s64 (const int64_t * __a)
  10530. {
  10531. union { int64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10532. __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
  10533. return __rv.__i;
  10534. }
  10535. __extension__ extern __inline uint64x1x3_t
  10536. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10537. vld3_u64 (const uint64_t * __a)
  10538. {
  10539. union { uint64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10540. __rv.__o = __builtin_neon_vld3di ((const __builtin_neon_di *) __a);
  10541. return __rv.__i;
  10542. }
  10543. __extension__ extern __inline int8x16x3_t
  10544. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10545. vld3q_s8 (const int8_t * __a)
  10546. {
  10547. union { int8x16x3_t __i; __builtin_neon_ci __o; } __rv;
  10548. __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
  10549. return __rv.__i;
  10550. }
  10551. __extension__ extern __inline int16x8x3_t
  10552. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10553. vld3q_s16 (const int16_t * __a)
  10554. {
  10555. union { int16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10556. __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
  10557. return __rv.__i;
  10558. }
  10559. __extension__ extern __inline int32x4x3_t
  10560. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10561. vld3q_s32 (const int32_t * __a)
  10562. {
  10563. union { int32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10564. __rv.__o = __builtin_neon_vld3v4si ((const __builtin_neon_si *) __a);
  10565. return __rv.__i;
  10566. }
  10567. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10568. __extension__ extern __inline float16x8x3_t
  10569. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10570. vld3q_f16 (const float16_t * __a)
  10571. {
  10572. union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10573. __rv.__o = __builtin_neon_vld3v8hf (__a);
  10574. return __rv.__i;
  10575. }
  10576. #endif
  10577. __extension__ extern __inline float32x4x3_t
  10578. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10579. vld3q_f32 (const float32_t * __a)
  10580. {
  10581. union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10582. __rv.__o = __builtin_neon_vld3v4sf ((const __builtin_neon_sf *) __a);
  10583. return __rv.__i;
  10584. }
  10585. __extension__ extern __inline uint8x16x3_t
  10586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10587. vld3q_u8 (const uint8_t * __a)
  10588. {
  10589. union { uint8x16x3_t __i; __builtin_neon_ci __o; } __rv;
  10590. __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
  10591. return __rv.__i;
  10592. }
  10593. __extension__ extern __inline uint16x8x3_t
  10594. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10595. vld3q_u16 (const uint16_t * __a)
  10596. {
  10597. union { uint16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10598. __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
  10599. return __rv.__i;
  10600. }
  10601. __extension__ extern __inline uint32x4x3_t
  10602. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10603. vld3q_u32 (const uint32_t * __a)
  10604. {
  10605. union { uint32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10606. __rv.__o = __builtin_neon_vld3v4si ((const __builtin_neon_si *) __a);
  10607. return __rv.__i;
  10608. }
  10609. __extension__ extern __inline poly8x16x3_t
  10610. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10611. vld3q_p8 (const poly8_t * __a)
  10612. {
  10613. union { poly8x16x3_t __i; __builtin_neon_ci __o; } __rv;
  10614. __rv.__o = __builtin_neon_vld3v16qi ((const __builtin_neon_qi *) __a);
  10615. return __rv.__i;
  10616. }
  10617. __extension__ extern __inline poly16x8x3_t
  10618. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10619. vld3q_p16 (const poly16_t * __a)
  10620. {
  10621. union { poly16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10622. __rv.__o = __builtin_neon_vld3v8hi ((const __builtin_neon_hi *) __a);
  10623. return __rv.__i;
  10624. }
  10625. __extension__ extern __inline int8x8x3_t
  10626. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10627. vld3_lane_s8 (const int8_t * __a, int8x8x3_t __b, const int __c)
  10628. {
  10629. union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10630. union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10631. __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  10632. return __rv.__i;
  10633. }
  10634. __extension__ extern __inline int16x4x3_t
  10635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10636. vld3_lane_s16 (const int16_t * __a, int16x4x3_t __b, const int __c)
  10637. {
  10638. union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10639. union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10640. __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10641. return __rv.__i;
  10642. }
  10643. __extension__ extern __inline int32x2x3_t
  10644. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10645. vld3_lane_s32 (const int32_t * __a, int32x2x3_t __b, const int __c)
  10646. {
  10647. union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10648. union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10649. __rv.__o = __builtin_neon_vld3_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  10650. return __rv.__i;
  10651. }
  10652. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10653. __extension__ extern __inline float16x4x3_t
  10654. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10655. vld3_lane_f16 (const float16_t * __a, float16x4x3_t __b, const int __c)
  10656. {
  10657. union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10658. union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10659. __rv.__o = __builtin_neon_vld3_lanev4hf (__a, __bu.__o, __c);
  10660. return __rv.__i;
  10661. }
  10662. #endif
  10663. __extension__ extern __inline float32x2x3_t
  10664. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10665. vld3_lane_f32 (const float32_t * __a, float32x2x3_t __b, const int __c)
  10666. {
  10667. union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10668. union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10669. __rv.__o = __builtin_neon_vld3_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  10670. return __rv.__i;
  10671. }
  10672. __extension__ extern __inline uint8x8x3_t
  10673. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10674. vld3_lane_u8 (const uint8_t * __a, uint8x8x3_t __b, const int __c)
  10675. {
  10676. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10677. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10678. __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  10679. return __rv.__i;
  10680. }
  10681. __extension__ extern __inline uint16x4x3_t
  10682. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10683. vld3_lane_u16 (const uint16_t * __a, uint16x4x3_t __b, const int __c)
  10684. {
  10685. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10686. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10687. __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10688. return __rv.__i;
  10689. }
  10690. __extension__ extern __inline uint32x2x3_t
  10691. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10692. vld3_lane_u32 (const uint32_t * __a, uint32x2x3_t __b, const int __c)
  10693. {
  10694. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10695. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10696. __rv.__o = __builtin_neon_vld3_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  10697. return __rv.__i;
  10698. }
  10699. __extension__ extern __inline poly8x8x3_t
  10700. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10701. vld3_lane_p8 (const poly8_t * __a, poly8x8x3_t __b, const int __c)
  10702. {
  10703. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10704. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10705. __rv.__o = __builtin_neon_vld3_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  10706. return __rv.__i;
  10707. }
  10708. __extension__ extern __inline poly16x4x3_t
  10709. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10710. vld3_lane_p16 (const poly16_t * __a, poly16x4x3_t __b, const int __c)
  10711. {
  10712. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10713. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10714. __rv.__o = __builtin_neon_vld3_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10715. return __rv.__i;
  10716. }
  10717. __extension__ extern __inline int16x8x3_t
  10718. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10719. vld3q_lane_s16 (const int16_t * __a, int16x8x3_t __b, const int __c)
  10720. {
  10721. union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10722. union { int16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10723. __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10724. return __rv.__i;
  10725. }
  10726. __extension__ extern __inline int32x4x3_t
  10727. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10728. vld3q_lane_s32 (const int32_t * __a, int32x4x3_t __b, const int __c)
  10729. {
  10730. union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10731. union { int32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10732. __rv.__o = __builtin_neon_vld3_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  10733. return __rv.__i;
  10734. }
  10735. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10736. __extension__ extern __inline float16x8x3_t
  10737. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10738. vld3q_lane_f16 (const float16_t * __a, float16x8x3_t __b, const int __c)
  10739. {
  10740. union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10741. union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10742. __rv.__o = __builtin_neon_vld3_lanev8hf (__a, __bu.__o, __c);
  10743. return __rv.__i;
  10744. }
  10745. #endif
  10746. __extension__ extern __inline float32x4x3_t
  10747. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10748. vld3q_lane_f32 (const float32_t * __a, float32x4x3_t __b, const int __c)
  10749. {
  10750. union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10751. union { float32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10752. __rv.__o = __builtin_neon_vld3_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  10753. return __rv.__i;
  10754. }
  10755. __extension__ extern __inline uint16x8x3_t
  10756. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10757. vld3q_lane_u16 (const uint16_t * __a, uint16x8x3_t __b, const int __c)
  10758. {
  10759. union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10760. union { uint16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10761. __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10762. return __rv.__i;
  10763. }
  10764. __extension__ extern __inline uint32x4x3_t
  10765. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10766. vld3q_lane_u32 (const uint32_t * __a, uint32x4x3_t __b, const int __c)
  10767. {
  10768. union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10769. union { uint32x4x3_t __i; __builtin_neon_ci __o; } __rv;
  10770. __rv.__o = __builtin_neon_vld3_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  10771. return __rv.__i;
  10772. }
  10773. __extension__ extern __inline poly16x8x3_t
  10774. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10775. vld3q_lane_p16 (const poly16_t * __a, poly16x8x3_t __b, const int __c)
  10776. {
  10777. union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10778. union { poly16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  10779. __rv.__o = __builtin_neon_vld3_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  10780. return __rv.__i;
  10781. }
  10782. __extension__ extern __inline int8x8x3_t
  10783. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10784. vld3_dup_s8 (const int8_t * __a)
  10785. {
  10786. union { int8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10787. __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
  10788. return __rv.__i;
  10789. }
  10790. __extension__ extern __inline int16x4x3_t
  10791. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10792. vld3_dup_s16 (const int16_t * __a)
  10793. {
  10794. union { int16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10795. __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
  10796. return __rv.__i;
  10797. }
  10798. __extension__ extern __inline int32x2x3_t
  10799. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10800. vld3_dup_s32 (const int32_t * __a)
  10801. {
  10802. union { int32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10803. __rv.__o = __builtin_neon_vld3_dupv2si ((const __builtin_neon_si *) __a);
  10804. return __rv.__i;
  10805. }
  10806. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10807. __extension__ extern __inline float16x4x3_t
  10808. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10809. vld3_dup_f16 (const float16_t * __a)
  10810. {
  10811. union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10812. __rv.__o = __builtin_neon_vld3_dupv4hf (__a);
  10813. return __rv.__i;
  10814. }
  10815. #endif
  10816. __extension__ extern __inline float32x2x3_t
  10817. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10818. vld3_dup_f32 (const float32_t * __a)
  10819. {
  10820. union { float32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10821. __rv.__o = __builtin_neon_vld3_dupv2sf ((const __builtin_neon_sf *) __a);
  10822. return __rv.__i;
  10823. }
  10824. __extension__ extern __inline uint8x8x3_t
  10825. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10826. vld3_dup_u8 (const uint8_t * __a)
  10827. {
  10828. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10829. __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
  10830. return __rv.__i;
  10831. }
  10832. __extension__ extern __inline uint16x4x3_t
  10833. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10834. vld3_dup_u16 (const uint16_t * __a)
  10835. {
  10836. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10837. __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
  10838. return __rv.__i;
  10839. }
  10840. __extension__ extern __inline uint32x2x3_t
  10841. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10842. vld3_dup_u32 (const uint32_t * __a)
  10843. {
  10844. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __rv;
  10845. __rv.__o = __builtin_neon_vld3_dupv2si ((const __builtin_neon_si *) __a);
  10846. return __rv.__i;
  10847. }
  10848. __extension__ extern __inline poly8x8x3_t
  10849. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10850. vld3_dup_p8 (const poly8_t * __a)
  10851. {
  10852. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __rv;
  10853. __rv.__o = __builtin_neon_vld3_dupv8qi ((const __builtin_neon_qi *) __a);
  10854. return __rv.__i;
  10855. }
  10856. __extension__ extern __inline poly16x4x3_t
  10857. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10858. vld3_dup_p16 (const poly16_t * __a)
  10859. {
  10860. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  10861. __rv.__o = __builtin_neon_vld3_dupv4hi ((const __builtin_neon_hi *) __a);
  10862. return __rv.__i;
  10863. }
  10864. #pragma GCC push_options
  10865. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  10866. __extension__ extern __inline poly64x1x3_t
  10867. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10868. vld3_dup_p64 (const poly64_t * __a)
  10869. {
  10870. union { poly64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10871. __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
  10872. return __rv.__i;
  10873. }
  10874. #pragma GCC pop_options
  10875. __extension__ extern __inline int64x1x3_t
  10876. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10877. vld3_dup_s64 (const int64_t * __a)
  10878. {
  10879. union { int64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10880. __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
  10881. return __rv.__i;
  10882. }
  10883. __extension__ extern __inline uint64x1x3_t
  10884. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10885. vld3_dup_u64 (const uint64_t * __a)
  10886. {
  10887. union { uint64x1x3_t __i; __builtin_neon_ei __o; } __rv;
  10888. __rv.__o = __builtin_neon_vld3_dupdi ((const __builtin_neon_di *) __a);
  10889. return __rv.__i;
  10890. }
  10891. __extension__ extern __inline void
  10892. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10893. vst3_s8 (int8_t * __a, int8x8x3_t __b)
  10894. {
  10895. union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10896. __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10897. }
  10898. __extension__ extern __inline void
  10899. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10900. vst3_s16 (int16_t * __a, int16x4x3_t __b)
  10901. {
  10902. union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10903. __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10904. }
  10905. __extension__ extern __inline void
  10906. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10907. vst3_s32 (int32_t * __a, int32x2x3_t __b)
  10908. {
  10909. union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10910. __builtin_neon_vst3v2si ((__builtin_neon_si *) __a, __bu.__o);
  10911. }
  10912. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  10913. __extension__ extern __inline void
  10914. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10915. vst3_f16 (float16_t * __a, float16x4x3_t __b)
  10916. {
  10917. union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10918. __builtin_neon_vst3v4hf (__a, __bu.__o);
  10919. }
  10920. #endif
  10921. __extension__ extern __inline void
  10922. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10923. vst3_f32 (float32_t * __a, float32x2x3_t __b)
  10924. {
  10925. union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10926. __builtin_neon_vst3v2sf ((__builtin_neon_sf *) __a, __bu.__o);
  10927. }
  10928. __extension__ extern __inline void
  10929. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10930. vst3_u8 (uint8_t * __a, uint8x8x3_t __b)
  10931. {
  10932. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10933. __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10934. }
  10935. __extension__ extern __inline void
  10936. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10937. vst3_u16 (uint16_t * __a, uint16x4x3_t __b)
  10938. {
  10939. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10940. __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10941. }
  10942. __extension__ extern __inline void
  10943. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10944. vst3_u32 (uint32_t * __a, uint32x2x3_t __b)
  10945. {
  10946. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10947. __builtin_neon_vst3v2si ((__builtin_neon_si *) __a, __bu.__o);
  10948. }
  10949. __extension__ extern __inline void
  10950. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10951. vst3_p8 (poly8_t * __a, poly8x8x3_t __b)
  10952. {
  10953. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10954. __builtin_neon_vst3v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  10955. }
  10956. __extension__ extern __inline void
  10957. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10958. vst3_p16 (poly16_t * __a, poly16x4x3_t __b)
  10959. {
  10960. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10961. __builtin_neon_vst3v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  10962. }
  10963. #pragma GCC push_options
  10964. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  10965. __extension__ extern __inline void
  10966. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10967. vst3_p64 (poly64_t * __a, poly64x1x3_t __b)
  10968. {
  10969. union { poly64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10970. __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
  10971. }
  10972. #pragma GCC pop_options
  10973. __extension__ extern __inline void
  10974. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10975. vst3_s64 (int64_t * __a, int64x1x3_t __b)
  10976. {
  10977. union { int64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10978. __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
  10979. }
  10980. __extension__ extern __inline void
  10981. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10982. vst3_u64 (uint64_t * __a, uint64x1x3_t __b)
  10983. {
  10984. union { uint64x1x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  10985. __builtin_neon_vst3di ((__builtin_neon_di *) __a, __bu.__o);
  10986. }
  10987. __extension__ extern __inline void
  10988. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10989. vst3q_s8 (int8_t * __a, int8x16x3_t __b)
  10990. {
  10991. union { int8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10992. __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  10993. }
  10994. __extension__ extern __inline void
  10995. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  10996. vst3q_s16 (int16_t * __a, int16x8x3_t __b)
  10997. {
  10998. union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  10999. __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11000. }
  11001. __extension__ extern __inline void
  11002. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11003. vst3q_s32 (int32_t * __a, int32x4x3_t __b)
  11004. {
  11005. union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11006. __builtin_neon_vst3v4si ((__builtin_neon_si *) __a, __bu.__o);
  11007. }
  11008. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11009. __extension__ extern __inline void
  11010. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11011. vst3q_f16 (float16_t * __a, float16x8x3_t __b)
  11012. {
  11013. union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11014. __builtin_neon_vst3v8hf (__a, __bu.__o);
  11015. }
  11016. #endif
  11017. __extension__ extern __inline void
  11018. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11019. vst3q_f32 (float32_t * __a, float32x4x3_t __b)
  11020. {
  11021. union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11022. __builtin_neon_vst3v4sf ((__builtin_neon_sf *) __a, __bu.__o);
  11023. }
  11024. __extension__ extern __inline void
  11025. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11026. vst3q_u8 (uint8_t * __a, uint8x16x3_t __b)
  11027. {
  11028. union { uint8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11029. __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  11030. }
  11031. __extension__ extern __inline void
  11032. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11033. vst3q_u16 (uint16_t * __a, uint16x8x3_t __b)
  11034. {
  11035. union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11036. __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11037. }
  11038. __extension__ extern __inline void
  11039. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11040. vst3q_u32 (uint32_t * __a, uint32x4x3_t __b)
  11041. {
  11042. union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11043. __builtin_neon_vst3v4si ((__builtin_neon_si *) __a, __bu.__o);
  11044. }
  11045. __extension__ extern __inline void
  11046. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11047. vst3q_p8 (poly8_t * __a, poly8x16x3_t __b)
  11048. {
  11049. union { poly8x16x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11050. __builtin_neon_vst3v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  11051. }
  11052. __extension__ extern __inline void
  11053. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11054. vst3q_p16 (poly16_t * __a, poly16x8x3_t __b)
  11055. {
  11056. union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11057. __builtin_neon_vst3v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11058. }
  11059. __extension__ extern __inline void
  11060. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11061. vst3_lane_s8 (int8_t * __a, int8x8x3_t __b, const int __c)
  11062. {
  11063. union { int8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11064. __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11065. }
  11066. __extension__ extern __inline void
  11067. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11068. vst3_lane_s16 (int16_t * __a, int16x4x3_t __b, const int __c)
  11069. {
  11070. union { int16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11071. __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11072. }
  11073. __extension__ extern __inline void
  11074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11075. vst3_lane_s32 (int32_t * __a, int32x2x3_t __b, const int __c)
  11076. {
  11077. union { int32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11078. __builtin_neon_vst3_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11079. }
  11080. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11081. __extension__ extern __inline void
  11082. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11083. vst3_lane_f16 (float16_t * __a, float16x4x3_t __b, const int __c)
  11084. {
  11085. union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11086. __builtin_neon_vst3_lanev4hf (__a, __bu.__o, __c);
  11087. }
  11088. #endif
  11089. __extension__ extern __inline void
  11090. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11091. vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c)
  11092. {
  11093. union { float32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11094. __builtin_neon_vst3_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  11095. }
  11096. __extension__ extern __inline void
  11097. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11098. vst3_lane_u8 (uint8_t * __a, uint8x8x3_t __b, const int __c)
  11099. {
  11100. union { uint8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11101. __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11102. }
  11103. __extension__ extern __inline void
  11104. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11105. vst3_lane_u16 (uint16_t * __a, uint16x4x3_t __b, const int __c)
  11106. {
  11107. union { uint16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11108. __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11109. }
  11110. __extension__ extern __inline void
  11111. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11112. vst3_lane_u32 (uint32_t * __a, uint32x2x3_t __b, const int __c)
  11113. {
  11114. union { uint32x2x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11115. __builtin_neon_vst3_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11116. }
  11117. __extension__ extern __inline void
  11118. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11119. vst3_lane_p8 (poly8_t * __a, poly8x8x3_t __b, const int __c)
  11120. {
  11121. union { poly8x8x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11122. __builtin_neon_vst3_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11123. }
  11124. __extension__ extern __inline void
  11125. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11126. vst3_lane_p16 (poly16_t * __a, poly16x4x3_t __b, const int __c)
  11127. {
  11128. union { poly16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
  11129. __builtin_neon_vst3_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11130. }
  11131. __extension__ extern __inline void
  11132. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11133. vst3q_lane_s16 (int16_t * __a, int16x8x3_t __b, const int __c)
  11134. {
  11135. union { int16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11136. __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11137. }
  11138. __extension__ extern __inline void
  11139. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11140. vst3q_lane_s32 (int32_t * __a, int32x4x3_t __b, const int __c)
  11141. {
  11142. union { int32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11143. __builtin_neon_vst3_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11144. }
  11145. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11146. __extension__ extern __inline void
  11147. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11148. vst3q_lane_f16 (float16_t * __a, float16x8x3_t __b, const int __c)
  11149. {
  11150. union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11151. __builtin_neon_vst3_lanev8hf (__a, __bu.__o, __c);
  11152. }
  11153. #endif
  11154. __extension__ extern __inline void
  11155. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11156. vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c)
  11157. {
  11158. union { float32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11159. __builtin_neon_vst3_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  11160. }
  11161. __extension__ extern __inline void
  11162. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11163. vst3q_lane_u16 (uint16_t * __a, uint16x8x3_t __b, const int __c)
  11164. {
  11165. union { uint16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11166. __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11167. }
  11168. __extension__ extern __inline void
  11169. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11170. vst3q_lane_u32 (uint32_t * __a, uint32x4x3_t __b, const int __c)
  11171. {
  11172. union { uint32x4x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11173. __builtin_neon_vst3_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11174. }
  11175. __extension__ extern __inline void
  11176. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11177. vst3q_lane_p16 (poly16_t * __a, poly16x8x3_t __b, const int __c)
  11178. {
  11179. union { poly16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
  11180. __builtin_neon_vst3_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11181. }
  11182. __extension__ extern __inline int8x8x4_t
  11183. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11184. vld4_s8 (const int8_t * __a)
  11185. {
  11186. union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11187. __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
  11188. return __rv.__i;
  11189. }
  11190. __extension__ extern __inline int16x4x4_t
  11191. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11192. vld4_s16 (const int16_t * __a)
  11193. {
  11194. union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11195. __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
  11196. return __rv.__i;
  11197. }
  11198. __extension__ extern __inline int32x2x4_t
  11199. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11200. vld4_s32 (const int32_t * __a)
  11201. {
  11202. union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11203. __rv.__o = __builtin_neon_vld4v2si ((const __builtin_neon_si *) __a);
  11204. return __rv.__i;
  11205. }
  11206. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11207. __extension__ extern __inline float16x4x4_t
  11208. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11209. vld4_f16 (const float16_t * __a)
  11210. {
  11211. union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11212. __rv.__o = __builtin_neon_vld4v4hf (__a);
  11213. return __rv.__i;
  11214. }
  11215. #endif
  11216. __extension__ extern __inline float32x2x4_t
  11217. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11218. vld4_f32 (const float32_t * __a)
  11219. {
  11220. union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11221. __rv.__o = __builtin_neon_vld4v2sf ((const __builtin_neon_sf *) __a);
  11222. return __rv.__i;
  11223. }
  11224. __extension__ extern __inline uint8x8x4_t
  11225. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11226. vld4_u8 (const uint8_t * __a)
  11227. {
  11228. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11229. __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
  11230. return __rv.__i;
  11231. }
  11232. __extension__ extern __inline uint16x4x4_t
  11233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11234. vld4_u16 (const uint16_t * __a)
  11235. {
  11236. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11237. __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
  11238. return __rv.__i;
  11239. }
  11240. __extension__ extern __inline uint32x2x4_t
  11241. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11242. vld4_u32 (const uint32_t * __a)
  11243. {
  11244. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11245. __rv.__o = __builtin_neon_vld4v2si ((const __builtin_neon_si *) __a);
  11246. return __rv.__i;
  11247. }
  11248. __extension__ extern __inline poly8x8x4_t
  11249. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11250. vld4_p8 (const poly8_t * __a)
  11251. {
  11252. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11253. __rv.__o = __builtin_neon_vld4v8qi ((const __builtin_neon_qi *) __a);
  11254. return __rv.__i;
  11255. }
  11256. __extension__ extern __inline poly16x4x4_t
  11257. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11258. vld4_p16 (const poly16_t * __a)
  11259. {
  11260. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11261. __rv.__o = __builtin_neon_vld4v4hi ((const __builtin_neon_hi *) __a);
  11262. return __rv.__i;
  11263. }
  11264. #pragma GCC push_options
  11265. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  11266. __extension__ extern __inline poly64x1x4_t
  11267. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11268. vld4_p64 (const poly64_t * __a)
  11269. {
  11270. union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11271. __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
  11272. return __rv.__i;
  11273. }
  11274. #pragma GCC pop_options
  11275. __extension__ extern __inline int64x1x4_t
  11276. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11277. vld4_s64 (const int64_t * __a)
  11278. {
  11279. union { int64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11280. __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
  11281. return __rv.__i;
  11282. }
  11283. __extension__ extern __inline uint64x1x4_t
  11284. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11285. vld4_u64 (const uint64_t * __a)
  11286. {
  11287. union { uint64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11288. __rv.__o = __builtin_neon_vld4di ((const __builtin_neon_di *) __a);
  11289. return __rv.__i;
  11290. }
  11291. __extension__ extern __inline int8x16x4_t
  11292. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11293. vld4q_s8 (const int8_t * __a)
  11294. {
  11295. union { int8x16x4_t __i; __builtin_neon_xi __o; } __rv;
  11296. __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
  11297. return __rv.__i;
  11298. }
  11299. __extension__ extern __inline int16x8x4_t
  11300. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11301. vld4q_s16 (const int16_t * __a)
  11302. {
  11303. union { int16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11304. __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
  11305. return __rv.__i;
  11306. }
  11307. __extension__ extern __inline int32x4x4_t
  11308. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11309. vld4q_s32 (const int32_t * __a)
  11310. {
  11311. union { int32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11312. __rv.__o = __builtin_neon_vld4v4si ((const __builtin_neon_si *) __a);
  11313. return __rv.__i;
  11314. }
  11315. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11316. __extension__ extern __inline float16x8x4_t
  11317. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11318. vld4q_f16 (const float16_t * __a)
  11319. {
  11320. union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11321. __rv.__o = __builtin_neon_vld4v8hf (__a);
  11322. return __rv.__i;
  11323. }
  11324. #endif
  11325. __extension__ extern __inline float32x4x4_t
  11326. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11327. vld4q_f32 (const float32_t * __a)
  11328. {
  11329. union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11330. __rv.__o = __builtin_neon_vld4v4sf ((const __builtin_neon_sf *) __a);
  11331. return __rv.__i;
  11332. }
  11333. __extension__ extern __inline uint8x16x4_t
  11334. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11335. vld4q_u8 (const uint8_t * __a)
  11336. {
  11337. union { uint8x16x4_t __i; __builtin_neon_xi __o; } __rv;
  11338. __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
  11339. return __rv.__i;
  11340. }
  11341. __extension__ extern __inline uint16x8x4_t
  11342. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11343. vld4q_u16 (const uint16_t * __a)
  11344. {
  11345. union { uint16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11346. __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
  11347. return __rv.__i;
  11348. }
  11349. __extension__ extern __inline uint32x4x4_t
  11350. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11351. vld4q_u32 (const uint32_t * __a)
  11352. {
  11353. union { uint32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11354. __rv.__o = __builtin_neon_vld4v4si ((const __builtin_neon_si *) __a);
  11355. return __rv.__i;
  11356. }
  11357. __extension__ extern __inline poly8x16x4_t
  11358. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11359. vld4q_p8 (const poly8_t * __a)
  11360. {
  11361. union { poly8x16x4_t __i; __builtin_neon_xi __o; } __rv;
  11362. __rv.__o = __builtin_neon_vld4v16qi ((const __builtin_neon_qi *) __a);
  11363. return __rv.__i;
  11364. }
  11365. __extension__ extern __inline poly16x8x4_t
  11366. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11367. vld4q_p16 (const poly16_t * __a)
  11368. {
  11369. union { poly16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11370. __rv.__o = __builtin_neon_vld4v8hi ((const __builtin_neon_hi *) __a);
  11371. return __rv.__i;
  11372. }
  11373. __extension__ extern __inline int8x8x4_t
  11374. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11375. vld4_lane_s8 (const int8_t * __a, int8x8x4_t __b, const int __c)
  11376. {
  11377. union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11378. union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11379. __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  11380. return __rv.__i;
  11381. }
  11382. __extension__ extern __inline int16x4x4_t
  11383. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11384. vld4_lane_s16 (const int16_t * __a, int16x4x4_t __b, const int __c)
  11385. {
  11386. union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11387. union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11388. __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11389. return __rv.__i;
  11390. }
  11391. __extension__ extern __inline int32x2x4_t
  11392. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11393. vld4_lane_s32 (const int32_t * __a, int32x2x4_t __b, const int __c)
  11394. {
  11395. union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11396. union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11397. __rv.__o = __builtin_neon_vld4_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  11398. return __rv.__i;
  11399. }
  11400. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11401. __extension__ extern __inline float16x4x4_t
  11402. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11403. vld4_lane_f16 (const float16_t * __a, float16x4x4_t __b, const int __c)
  11404. {
  11405. union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11406. union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11407. __rv.__o = __builtin_neon_vld4_lanev4hf (__a,
  11408. __bu.__o, __c);
  11409. return __rv.__i;
  11410. }
  11411. #endif
  11412. __extension__ extern __inline float32x2x4_t
  11413. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11414. vld4_lane_f32 (const float32_t * __a, float32x2x4_t __b, const int __c)
  11415. {
  11416. union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11417. union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11418. __rv.__o = __builtin_neon_vld4_lanev2sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  11419. return __rv.__i;
  11420. }
  11421. __extension__ extern __inline uint8x8x4_t
  11422. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11423. vld4_lane_u8 (const uint8_t * __a, uint8x8x4_t __b, const int __c)
  11424. {
  11425. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11426. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11427. __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  11428. return __rv.__i;
  11429. }
  11430. __extension__ extern __inline uint16x4x4_t
  11431. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11432. vld4_lane_u16 (const uint16_t * __a, uint16x4x4_t __b, const int __c)
  11433. {
  11434. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11435. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11436. __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11437. return __rv.__i;
  11438. }
  11439. __extension__ extern __inline uint32x2x4_t
  11440. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11441. vld4_lane_u32 (const uint32_t * __a, uint32x2x4_t __b, const int __c)
  11442. {
  11443. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11444. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11445. __rv.__o = __builtin_neon_vld4_lanev2si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  11446. return __rv.__i;
  11447. }
  11448. __extension__ extern __inline poly8x8x4_t
  11449. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11450. vld4_lane_p8 (const poly8_t * __a, poly8x8x4_t __b, const int __c)
  11451. {
  11452. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11453. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11454. __rv.__o = __builtin_neon_vld4_lanev8qi ((const __builtin_neon_qi *) __a, __bu.__o, __c);
  11455. return __rv.__i;
  11456. }
  11457. __extension__ extern __inline poly16x4x4_t
  11458. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11459. vld4_lane_p16 (const poly16_t * __a, poly16x4x4_t __b, const int __c)
  11460. {
  11461. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11462. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11463. __rv.__o = __builtin_neon_vld4_lanev4hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11464. return __rv.__i;
  11465. }
  11466. __extension__ extern __inline int16x8x4_t
  11467. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11468. vld4q_lane_s16 (const int16_t * __a, int16x8x4_t __b, const int __c)
  11469. {
  11470. union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11471. union { int16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11472. __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11473. return __rv.__i;
  11474. }
  11475. __extension__ extern __inline int32x4x4_t
  11476. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11477. vld4q_lane_s32 (const int32_t * __a, int32x4x4_t __b, const int __c)
  11478. {
  11479. union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11480. union { int32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11481. __rv.__o = __builtin_neon_vld4_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  11482. return __rv.__i;
  11483. }
  11484. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11485. __extension__ extern __inline float16x8x4_t
  11486. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11487. vld4q_lane_f16 (const float16_t * __a, float16x8x4_t __b, const int __c)
  11488. {
  11489. union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11490. union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11491. __rv.__o = __builtin_neon_vld4_lanev8hf (__a,
  11492. __bu.__o, __c);
  11493. return __rv.__i;
  11494. }
  11495. #endif
  11496. __extension__ extern __inline float32x4x4_t
  11497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11498. vld4q_lane_f32 (const float32_t * __a, float32x4x4_t __b, const int __c)
  11499. {
  11500. union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11501. union { float32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11502. __rv.__o = __builtin_neon_vld4_lanev4sf ((const __builtin_neon_sf *) __a, __bu.__o, __c);
  11503. return __rv.__i;
  11504. }
  11505. __extension__ extern __inline uint16x8x4_t
  11506. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11507. vld4q_lane_u16 (const uint16_t * __a, uint16x8x4_t __b, const int __c)
  11508. {
  11509. union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11510. union { uint16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11511. __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11512. return __rv.__i;
  11513. }
  11514. __extension__ extern __inline uint32x4x4_t
  11515. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11516. vld4q_lane_u32 (const uint32_t * __a, uint32x4x4_t __b, const int __c)
  11517. {
  11518. union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11519. union { uint32x4x4_t __i; __builtin_neon_xi __o; } __rv;
  11520. __rv.__o = __builtin_neon_vld4_lanev4si ((const __builtin_neon_si *) __a, __bu.__o, __c);
  11521. return __rv.__i;
  11522. }
  11523. __extension__ extern __inline poly16x8x4_t
  11524. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11525. vld4q_lane_p16 (const poly16_t * __a, poly16x8x4_t __b, const int __c)
  11526. {
  11527. union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11528. union { poly16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  11529. __rv.__o = __builtin_neon_vld4_lanev8hi ((const __builtin_neon_hi *) __a, __bu.__o, __c);
  11530. return __rv.__i;
  11531. }
  11532. __extension__ extern __inline int8x8x4_t
  11533. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11534. vld4_dup_s8 (const int8_t * __a)
  11535. {
  11536. union { int8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11537. __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
  11538. return __rv.__i;
  11539. }
  11540. __extension__ extern __inline int16x4x4_t
  11541. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11542. vld4_dup_s16 (const int16_t * __a)
  11543. {
  11544. union { int16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11545. __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
  11546. return __rv.__i;
  11547. }
  11548. __extension__ extern __inline int32x2x4_t
  11549. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11550. vld4_dup_s32 (const int32_t * __a)
  11551. {
  11552. union { int32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11553. __rv.__o = __builtin_neon_vld4_dupv2si ((const __builtin_neon_si *) __a);
  11554. return __rv.__i;
  11555. }
  11556. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11557. __extension__ extern __inline float16x4x4_t
  11558. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11559. vld4_dup_f16 (const float16_t * __a)
  11560. {
  11561. union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11562. __rv.__o = __builtin_neon_vld4_dupv4hf (__a);
  11563. return __rv.__i;
  11564. }
  11565. #endif
  11566. __extension__ extern __inline float32x2x4_t
  11567. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11568. vld4_dup_f32 (const float32_t * __a)
  11569. {
  11570. union { float32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11571. __rv.__o = __builtin_neon_vld4_dupv2sf ((const __builtin_neon_sf *) __a);
  11572. return __rv.__i;
  11573. }
  11574. __extension__ extern __inline uint8x8x4_t
  11575. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11576. vld4_dup_u8 (const uint8_t * __a)
  11577. {
  11578. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11579. __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
  11580. return __rv.__i;
  11581. }
  11582. __extension__ extern __inline uint16x4x4_t
  11583. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11584. vld4_dup_u16 (const uint16_t * __a)
  11585. {
  11586. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11587. __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
  11588. return __rv.__i;
  11589. }
  11590. __extension__ extern __inline uint32x2x4_t
  11591. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11592. vld4_dup_u32 (const uint32_t * __a)
  11593. {
  11594. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __rv;
  11595. __rv.__o = __builtin_neon_vld4_dupv2si ((const __builtin_neon_si *) __a);
  11596. return __rv.__i;
  11597. }
  11598. __extension__ extern __inline poly8x8x4_t
  11599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11600. vld4_dup_p8 (const poly8_t * __a)
  11601. {
  11602. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __rv;
  11603. __rv.__o = __builtin_neon_vld4_dupv8qi ((const __builtin_neon_qi *) __a);
  11604. return __rv.__i;
  11605. }
  11606. __extension__ extern __inline poly16x4x4_t
  11607. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11608. vld4_dup_p16 (const poly16_t * __a)
  11609. {
  11610. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  11611. __rv.__o = __builtin_neon_vld4_dupv4hi ((const __builtin_neon_hi *) __a);
  11612. return __rv.__i;
  11613. }
  11614. #pragma GCC push_options
  11615. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  11616. __extension__ extern __inline poly64x1x4_t
  11617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11618. vld4_dup_p64 (const poly64_t * __a)
  11619. {
  11620. union { poly64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11621. __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
  11622. return __rv.__i;
  11623. }
  11624. #pragma GCC pop_options
  11625. __extension__ extern __inline int64x1x4_t
  11626. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11627. vld4_dup_s64 (const int64_t * __a)
  11628. {
  11629. union { int64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11630. __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
  11631. return __rv.__i;
  11632. }
  11633. __extension__ extern __inline uint64x1x4_t
  11634. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11635. vld4_dup_u64 (const uint64_t * __a)
  11636. {
  11637. union { uint64x1x4_t __i; __builtin_neon_oi __o; } __rv;
  11638. __rv.__o = __builtin_neon_vld4_dupdi ((const __builtin_neon_di *) __a);
  11639. return __rv.__i;
  11640. }
  11641. __extension__ extern __inline void
  11642. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11643. vst4_s8 (int8_t * __a, int8x8x4_t __b)
  11644. {
  11645. union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11646. __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  11647. }
  11648. __extension__ extern __inline void
  11649. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11650. vst4_s16 (int16_t * __a, int16x4x4_t __b)
  11651. {
  11652. union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11653. __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  11654. }
  11655. __extension__ extern __inline void
  11656. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11657. vst4_s32 (int32_t * __a, int32x2x4_t __b)
  11658. {
  11659. union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11660. __builtin_neon_vst4v2si ((__builtin_neon_si *) __a, __bu.__o);
  11661. }
  11662. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11663. __extension__ extern __inline void
  11664. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11665. vst4_f16 (float16_t * __a, float16x4x4_t __b)
  11666. {
  11667. union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11668. __builtin_neon_vst4v4hf (__a, __bu.__o);
  11669. }
  11670. #endif
  11671. __extension__ extern __inline void
  11672. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11673. vst4_f32 (float32_t * __a, float32x2x4_t __b)
  11674. {
  11675. union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11676. __builtin_neon_vst4v2sf ((__builtin_neon_sf *) __a, __bu.__o);
  11677. }
  11678. __extension__ extern __inline void
  11679. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11680. vst4_u8 (uint8_t * __a, uint8x8x4_t __b)
  11681. {
  11682. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11683. __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  11684. }
  11685. __extension__ extern __inline void
  11686. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11687. vst4_u16 (uint16_t * __a, uint16x4x4_t __b)
  11688. {
  11689. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11690. __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  11691. }
  11692. __extension__ extern __inline void
  11693. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11694. vst4_u32 (uint32_t * __a, uint32x2x4_t __b)
  11695. {
  11696. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11697. __builtin_neon_vst4v2si ((__builtin_neon_si *) __a, __bu.__o);
  11698. }
  11699. __extension__ extern __inline void
  11700. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11701. vst4_p8 (poly8_t * __a, poly8x8x4_t __b)
  11702. {
  11703. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11704. __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
  11705. }
  11706. __extension__ extern __inline void
  11707. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11708. vst4_p16 (poly16_t * __a, poly16x4x4_t __b)
  11709. {
  11710. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11711. __builtin_neon_vst4v4hi ((__builtin_neon_hi *) __a, __bu.__o);
  11712. }
  11713. #pragma GCC push_options
  11714. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  11715. __extension__ extern __inline void
  11716. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11717. vst4_p64 (poly64_t * __a, poly64x1x4_t __b)
  11718. {
  11719. union { poly64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11720. __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
  11721. }
  11722. #pragma GCC pop_options
  11723. __extension__ extern __inline void
  11724. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11725. vst4_s64 (int64_t * __a, int64x1x4_t __b)
  11726. {
  11727. union { int64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11728. __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
  11729. }
  11730. __extension__ extern __inline void
  11731. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11732. vst4_u64 (uint64_t * __a, uint64x1x4_t __b)
  11733. {
  11734. union { uint64x1x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11735. __builtin_neon_vst4di ((__builtin_neon_di *) __a, __bu.__o);
  11736. }
  11737. __extension__ extern __inline void
  11738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11739. vst4q_s8 (int8_t * __a, int8x16x4_t __b)
  11740. {
  11741. union { int8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11742. __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  11743. }
  11744. __extension__ extern __inline void
  11745. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11746. vst4q_s16 (int16_t * __a, int16x8x4_t __b)
  11747. {
  11748. union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11749. __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11750. }
  11751. __extension__ extern __inline void
  11752. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11753. vst4q_s32 (int32_t * __a, int32x4x4_t __b)
  11754. {
  11755. union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11756. __builtin_neon_vst4v4si ((__builtin_neon_si *) __a, __bu.__o);
  11757. }
  11758. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11759. __extension__ extern __inline void
  11760. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11761. vst4q_f16 (float16_t * __a, float16x8x4_t __b)
  11762. {
  11763. union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11764. __builtin_neon_vst4v8hf (__a, __bu.__o);
  11765. }
  11766. #endif
  11767. __extension__ extern __inline void
  11768. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11769. vst4q_f32 (float32_t * __a, float32x4x4_t __b)
  11770. {
  11771. union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11772. __builtin_neon_vst4v4sf ((__builtin_neon_sf *) __a, __bu.__o);
  11773. }
  11774. __extension__ extern __inline void
  11775. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11776. vst4q_u8 (uint8_t * __a, uint8x16x4_t __b)
  11777. {
  11778. union { uint8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11779. __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  11780. }
  11781. __extension__ extern __inline void
  11782. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11783. vst4q_u16 (uint16_t * __a, uint16x8x4_t __b)
  11784. {
  11785. union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11786. __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11787. }
  11788. __extension__ extern __inline void
  11789. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11790. vst4q_u32 (uint32_t * __a, uint32x4x4_t __b)
  11791. {
  11792. union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11793. __builtin_neon_vst4v4si ((__builtin_neon_si *) __a, __bu.__o);
  11794. }
  11795. __extension__ extern __inline void
  11796. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11797. vst4q_p8 (poly8_t * __a, poly8x16x4_t __b)
  11798. {
  11799. union { poly8x16x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11800. __builtin_neon_vst4v16qi ((__builtin_neon_qi *) __a, __bu.__o);
  11801. }
  11802. __extension__ extern __inline void
  11803. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11804. vst4q_p16 (poly16_t * __a, poly16x8x4_t __b)
  11805. {
  11806. union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11807. __builtin_neon_vst4v8hi ((__builtin_neon_hi *) __a, __bu.__o);
  11808. }
  11809. __extension__ extern __inline void
  11810. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11811. vst4_lane_s8 (int8_t * __a, int8x8x4_t __b, const int __c)
  11812. {
  11813. union { int8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11814. __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11815. }
  11816. __extension__ extern __inline void
  11817. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11818. vst4_lane_s16 (int16_t * __a, int16x4x4_t __b, const int __c)
  11819. {
  11820. union { int16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11821. __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11822. }
  11823. __extension__ extern __inline void
  11824. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11825. vst4_lane_s32 (int32_t * __a, int32x2x4_t __b, const int __c)
  11826. {
  11827. union { int32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11828. __builtin_neon_vst4_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11829. }
  11830. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11831. __extension__ extern __inline void
  11832. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11833. vst4_lane_f16 (float16_t * __a, float16x4x4_t __b, const int __c)
  11834. {
  11835. union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11836. __builtin_neon_vst4_lanev4hf (__a, __bu.__o, __c);
  11837. }
  11838. #endif
  11839. __extension__ extern __inline void
  11840. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11841. vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c)
  11842. {
  11843. union { float32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11844. __builtin_neon_vst4_lanev2sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  11845. }
  11846. __extension__ extern __inline void
  11847. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11848. vst4_lane_u8 (uint8_t * __a, uint8x8x4_t __b, const int __c)
  11849. {
  11850. union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11851. __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11852. }
  11853. __extension__ extern __inline void
  11854. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11855. vst4_lane_u16 (uint16_t * __a, uint16x4x4_t __b, const int __c)
  11856. {
  11857. union { uint16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11858. __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11859. }
  11860. __extension__ extern __inline void
  11861. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11862. vst4_lane_u32 (uint32_t * __a, uint32x2x4_t __b, const int __c)
  11863. {
  11864. union { uint32x2x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11865. __builtin_neon_vst4_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11866. }
  11867. __extension__ extern __inline void
  11868. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11869. vst4_lane_p8 (poly8_t * __a, poly8x8x4_t __b, const int __c)
  11870. {
  11871. union { poly8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11872. __builtin_neon_vst4_lanev8qi ((__builtin_neon_qi *) __a, __bu.__o, __c);
  11873. }
  11874. __extension__ extern __inline void
  11875. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11876. vst4_lane_p16 (poly16_t * __a, poly16x4x4_t __b, const int __c)
  11877. {
  11878. union { poly16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
  11879. __builtin_neon_vst4_lanev4hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11880. }
  11881. __extension__ extern __inline void
  11882. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11883. vst4q_lane_s16 (int16_t * __a, int16x8x4_t __b, const int __c)
  11884. {
  11885. union { int16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11886. __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11887. }
  11888. __extension__ extern __inline void
  11889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11890. vst4q_lane_s32 (int32_t * __a, int32x4x4_t __b, const int __c)
  11891. {
  11892. union { int32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11893. __builtin_neon_vst4_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11894. }
  11895. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  11896. __extension__ extern __inline void
  11897. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11898. vst4q_lane_f16 (float16_t * __a, float16x8x4_t __b, const int __c)
  11899. {
  11900. union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11901. __builtin_neon_vst4_lanev8hf (__a, __bu.__o, __c);
  11902. }
  11903. #endif
  11904. __extension__ extern __inline void
  11905. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11906. vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c)
  11907. {
  11908. union { float32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11909. __builtin_neon_vst4_lanev4sf ((__builtin_neon_sf *) __a, __bu.__o, __c);
  11910. }
  11911. __extension__ extern __inline void
  11912. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11913. vst4q_lane_u16 (uint16_t * __a, uint16x8x4_t __b, const int __c)
  11914. {
  11915. union { uint16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11916. __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11917. }
  11918. __extension__ extern __inline void
  11919. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11920. vst4q_lane_u32 (uint32_t * __a, uint32x4x4_t __b, const int __c)
  11921. {
  11922. union { uint32x4x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11923. __builtin_neon_vst4_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
  11924. }
  11925. __extension__ extern __inline void
  11926. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11927. vst4q_lane_p16 (poly16_t * __a, poly16x8x4_t __b, const int __c)
  11928. {
  11929. union { poly16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
  11930. __builtin_neon_vst4_lanev8hi ((__builtin_neon_hi *) __a, __bu.__o, __c);
  11931. }
  11932. __extension__ extern __inline int8x8_t
  11933. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11934. vand_s8 (int8x8_t __a, int8x8_t __b)
  11935. {
  11936. return __a & __b;
  11937. }
  11938. __extension__ extern __inline int16x4_t
  11939. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11940. vand_s16 (int16x4_t __a, int16x4_t __b)
  11941. {
  11942. return __a & __b;
  11943. }
  11944. __extension__ extern __inline int32x2_t
  11945. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11946. vand_s32 (int32x2_t __a, int32x2_t __b)
  11947. {
  11948. return __a & __b;
  11949. }
  11950. __extension__ extern __inline uint8x8_t
  11951. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11952. vand_u8 (uint8x8_t __a, uint8x8_t __b)
  11953. {
  11954. return __a & __b;
  11955. }
  11956. __extension__ extern __inline uint16x4_t
  11957. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11958. vand_u16 (uint16x4_t __a, uint16x4_t __b)
  11959. {
  11960. return __a & __b;
  11961. }
  11962. __extension__ extern __inline uint32x2_t
  11963. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11964. vand_u32 (uint32x2_t __a, uint32x2_t __b)
  11965. {
  11966. return __a & __b;
  11967. }
  11968. __extension__ extern __inline int64x1_t
  11969. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11970. vand_s64 (int64x1_t __a, int64x1_t __b)
  11971. {
  11972. return __a & __b;
  11973. }
  11974. __extension__ extern __inline uint64x1_t
  11975. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11976. vand_u64 (uint64x1_t __a, uint64x1_t __b)
  11977. {
  11978. return __a & __b;
  11979. }
  11980. __extension__ extern __inline int8x16_t
  11981. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11982. vandq_s8 (int8x16_t __a, int8x16_t __b)
  11983. {
  11984. return __a & __b;
  11985. }
  11986. __extension__ extern __inline int16x8_t
  11987. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11988. vandq_s16 (int16x8_t __a, int16x8_t __b)
  11989. {
  11990. return __a & __b;
  11991. }
  11992. __extension__ extern __inline int32x4_t
  11993. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  11994. vandq_s32 (int32x4_t __a, int32x4_t __b)
  11995. {
  11996. return __a & __b;
  11997. }
  11998. __extension__ extern __inline int64x2_t
  11999. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12000. vandq_s64 (int64x2_t __a, int64x2_t __b)
  12001. {
  12002. return __a & __b;
  12003. }
  12004. __extension__ extern __inline uint8x16_t
  12005. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12006. vandq_u8 (uint8x16_t __a, uint8x16_t __b)
  12007. {
  12008. return __a & __b;
  12009. }
  12010. __extension__ extern __inline uint16x8_t
  12011. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12012. vandq_u16 (uint16x8_t __a, uint16x8_t __b)
  12013. {
  12014. return __a & __b;
  12015. }
  12016. __extension__ extern __inline uint32x4_t
  12017. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12018. vandq_u32 (uint32x4_t __a, uint32x4_t __b)
  12019. {
  12020. return __a & __b;
  12021. }
  12022. __extension__ extern __inline uint64x2_t
  12023. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12024. vandq_u64 (uint64x2_t __a, uint64x2_t __b)
  12025. {
  12026. return __a & __b;
  12027. }
  12028. __extension__ extern __inline int8x8_t
  12029. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12030. vorr_s8 (int8x8_t __a, int8x8_t __b)
  12031. {
  12032. return __a | __b;
  12033. }
  12034. __extension__ extern __inline int16x4_t
  12035. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12036. vorr_s16 (int16x4_t __a, int16x4_t __b)
  12037. {
  12038. return __a | __b;
  12039. }
  12040. __extension__ extern __inline int32x2_t
  12041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12042. vorr_s32 (int32x2_t __a, int32x2_t __b)
  12043. {
  12044. return __a | __b;
  12045. }
  12046. __extension__ extern __inline uint8x8_t
  12047. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12048. vorr_u8 (uint8x8_t __a, uint8x8_t __b)
  12049. {
  12050. return __a | __b;
  12051. }
  12052. __extension__ extern __inline uint16x4_t
  12053. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12054. vorr_u16 (uint16x4_t __a, uint16x4_t __b)
  12055. {
  12056. return __a | __b;
  12057. }
  12058. __extension__ extern __inline uint32x2_t
  12059. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12060. vorr_u32 (uint32x2_t __a, uint32x2_t __b)
  12061. {
  12062. return __a | __b;
  12063. }
  12064. __extension__ extern __inline int64x1_t
  12065. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12066. vorr_s64 (int64x1_t __a, int64x1_t __b)
  12067. {
  12068. return __a | __b;
  12069. }
  12070. __extension__ extern __inline uint64x1_t
  12071. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12072. vorr_u64 (uint64x1_t __a, uint64x1_t __b)
  12073. {
  12074. return __a | __b;
  12075. }
  12076. __extension__ extern __inline int8x16_t
  12077. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12078. vorrq_s8 (int8x16_t __a, int8x16_t __b)
  12079. {
  12080. return __a | __b;
  12081. }
  12082. __extension__ extern __inline int16x8_t
  12083. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12084. vorrq_s16 (int16x8_t __a, int16x8_t __b)
  12085. {
  12086. return __a | __b;
  12087. }
  12088. __extension__ extern __inline int32x4_t
  12089. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12090. vorrq_s32 (int32x4_t __a, int32x4_t __b)
  12091. {
  12092. return __a | __b;
  12093. }
  12094. __extension__ extern __inline int64x2_t
  12095. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12096. vorrq_s64 (int64x2_t __a, int64x2_t __b)
  12097. {
  12098. return __a | __b;
  12099. }
  12100. __extension__ extern __inline uint8x16_t
  12101. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12102. vorrq_u8 (uint8x16_t __a, uint8x16_t __b)
  12103. {
  12104. return __a | __b;
  12105. }
  12106. __extension__ extern __inline uint16x8_t
  12107. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12108. vorrq_u16 (uint16x8_t __a, uint16x8_t __b)
  12109. {
  12110. return __a | __b;
  12111. }
  12112. __extension__ extern __inline uint32x4_t
  12113. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12114. vorrq_u32 (uint32x4_t __a, uint32x4_t __b)
  12115. {
  12116. return __a | __b;
  12117. }
  12118. __extension__ extern __inline uint64x2_t
  12119. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12120. vorrq_u64 (uint64x2_t __a, uint64x2_t __b)
  12121. {
  12122. return __a | __b;
  12123. }
  12124. __extension__ extern __inline int8x8_t
  12125. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12126. veor_s8 (int8x8_t __a, int8x8_t __b)
  12127. {
  12128. return __a ^ __b;
  12129. }
  12130. __extension__ extern __inline int16x4_t
  12131. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12132. veor_s16 (int16x4_t __a, int16x4_t __b)
  12133. {
  12134. return __a ^ __b;
  12135. }
  12136. __extension__ extern __inline int32x2_t
  12137. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12138. veor_s32 (int32x2_t __a, int32x2_t __b)
  12139. {
  12140. return __a ^ __b;
  12141. }
  12142. __extension__ extern __inline uint8x8_t
  12143. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12144. veor_u8 (uint8x8_t __a, uint8x8_t __b)
  12145. {
  12146. return __a ^ __b;
  12147. }
  12148. __extension__ extern __inline uint16x4_t
  12149. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12150. veor_u16 (uint16x4_t __a, uint16x4_t __b)
  12151. {
  12152. return __a ^ __b;
  12153. }
  12154. __extension__ extern __inline uint32x2_t
  12155. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12156. veor_u32 (uint32x2_t __a, uint32x2_t __b)
  12157. {
  12158. return __a ^ __b;
  12159. }
  12160. __extension__ extern __inline int64x1_t
  12161. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12162. veor_s64 (int64x1_t __a, int64x1_t __b)
  12163. {
  12164. return __a ^ __b;
  12165. }
  12166. __extension__ extern __inline uint64x1_t
  12167. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12168. veor_u64 (uint64x1_t __a, uint64x1_t __b)
  12169. {
  12170. return __a ^ __b;
  12171. }
  12172. __extension__ extern __inline int8x16_t
  12173. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12174. veorq_s8 (int8x16_t __a, int8x16_t __b)
  12175. {
  12176. return __a ^ __b;
  12177. }
  12178. __extension__ extern __inline int16x8_t
  12179. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12180. veorq_s16 (int16x8_t __a, int16x8_t __b)
  12181. {
  12182. return __a ^ __b;
  12183. }
  12184. __extension__ extern __inline int32x4_t
  12185. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12186. veorq_s32 (int32x4_t __a, int32x4_t __b)
  12187. {
  12188. return __a ^ __b;
  12189. }
  12190. __extension__ extern __inline int64x2_t
  12191. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12192. veorq_s64 (int64x2_t __a, int64x2_t __b)
  12193. {
  12194. return __a ^ __b;
  12195. }
  12196. __extension__ extern __inline uint8x16_t
  12197. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12198. veorq_u8 (uint8x16_t __a, uint8x16_t __b)
  12199. {
  12200. return __a ^ __b;
  12201. }
  12202. __extension__ extern __inline uint16x8_t
  12203. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12204. veorq_u16 (uint16x8_t __a, uint16x8_t __b)
  12205. {
  12206. return __a ^ __b;
  12207. }
  12208. __extension__ extern __inline uint32x4_t
  12209. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12210. veorq_u32 (uint32x4_t __a, uint32x4_t __b)
  12211. {
  12212. return __a ^ __b;
  12213. }
  12214. __extension__ extern __inline uint64x2_t
  12215. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12216. veorq_u64 (uint64x2_t __a, uint64x2_t __b)
  12217. {
  12218. return __a ^ __b;
  12219. }
  12220. __extension__ extern __inline int8x8_t
  12221. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12222. vbic_s8 (int8x8_t __a, int8x8_t __b)
  12223. {
  12224. return __a & ~__b;
  12225. }
  12226. __extension__ extern __inline int16x4_t
  12227. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12228. vbic_s16 (int16x4_t __a, int16x4_t __b)
  12229. {
  12230. return __a & ~__b;
  12231. }
  12232. __extension__ extern __inline int32x2_t
  12233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12234. vbic_s32 (int32x2_t __a, int32x2_t __b)
  12235. {
  12236. return __a & ~__b;
  12237. }
  12238. __extension__ extern __inline uint8x8_t
  12239. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12240. vbic_u8 (uint8x8_t __a, uint8x8_t __b)
  12241. {
  12242. return __a & ~__b;
  12243. }
  12244. __extension__ extern __inline uint16x4_t
  12245. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12246. vbic_u16 (uint16x4_t __a, uint16x4_t __b)
  12247. {
  12248. return __a & ~__b;
  12249. }
  12250. __extension__ extern __inline uint32x2_t
  12251. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12252. vbic_u32 (uint32x2_t __a, uint32x2_t __b)
  12253. {
  12254. return __a & ~__b;
  12255. }
  12256. __extension__ extern __inline int64x1_t
  12257. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12258. vbic_s64 (int64x1_t __a, int64x1_t __b)
  12259. {
  12260. return __a & ~__b;
  12261. }
  12262. __extension__ extern __inline uint64x1_t
  12263. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12264. vbic_u64 (uint64x1_t __a, uint64x1_t __b)
  12265. {
  12266. return __a & ~__b;
  12267. }
  12268. __extension__ extern __inline int8x16_t
  12269. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12270. vbicq_s8 (int8x16_t __a, int8x16_t __b)
  12271. {
  12272. return __a & ~__b;
  12273. }
  12274. __extension__ extern __inline int16x8_t
  12275. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12276. vbicq_s16 (int16x8_t __a, int16x8_t __b)
  12277. {
  12278. return __a & ~__b;
  12279. }
  12280. __extension__ extern __inline int32x4_t
  12281. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12282. vbicq_s32 (int32x4_t __a, int32x4_t __b)
  12283. {
  12284. return __a & ~__b;
  12285. }
  12286. __extension__ extern __inline int64x2_t
  12287. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12288. vbicq_s64 (int64x2_t __a, int64x2_t __b)
  12289. {
  12290. return __a & ~__b;
  12291. }
  12292. __extension__ extern __inline uint8x16_t
  12293. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12294. vbicq_u8 (uint8x16_t __a, uint8x16_t __b)
  12295. {
  12296. return __a & ~__b;
  12297. }
  12298. __extension__ extern __inline uint16x8_t
  12299. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12300. vbicq_u16 (uint16x8_t __a, uint16x8_t __b)
  12301. {
  12302. return __a & ~__b;
  12303. }
  12304. __extension__ extern __inline uint32x4_t
  12305. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12306. vbicq_u32 (uint32x4_t __a, uint32x4_t __b)
  12307. {
  12308. return __a & ~__b;
  12309. }
  12310. __extension__ extern __inline uint64x2_t
  12311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12312. vbicq_u64 (uint64x2_t __a, uint64x2_t __b)
  12313. {
  12314. return __a & ~__b;
  12315. }
  12316. __extension__ extern __inline int8x8_t
  12317. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12318. vorn_s8 (int8x8_t __a, int8x8_t __b)
  12319. {
  12320. return __a | ~__b;
  12321. }
  12322. __extension__ extern __inline int16x4_t
  12323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12324. vorn_s16 (int16x4_t __a, int16x4_t __b)
  12325. {
  12326. return __a | ~__b;
  12327. }
  12328. __extension__ extern __inline int32x2_t
  12329. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12330. vorn_s32 (int32x2_t __a, int32x2_t __b)
  12331. {
  12332. return __a | ~__b;
  12333. }
  12334. __extension__ extern __inline uint8x8_t
  12335. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12336. vorn_u8 (uint8x8_t __a, uint8x8_t __b)
  12337. {
  12338. return __a | ~__b;
  12339. }
  12340. __extension__ extern __inline uint16x4_t
  12341. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12342. vorn_u16 (uint16x4_t __a, uint16x4_t __b)
  12343. {
  12344. return __a | ~__b;
  12345. }
  12346. __extension__ extern __inline uint32x2_t
  12347. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12348. vorn_u32 (uint32x2_t __a, uint32x2_t __b)
  12349. {
  12350. return __a | ~__b;
  12351. }
  12352. __extension__ extern __inline int64x1_t
  12353. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12354. vorn_s64 (int64x1_t __a, int64x1_t __b)
  12355. {
  12356. return __a | ~__b;
  12357. }
  12358. __extension__ extern __inline uint64x1_t
  12359. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12360. vorn_u64 (uint64x1_t __a, uint64x1_t __b)
  12361. {
  12362. return __a | ~__b;
  12363. }
  12364. __extension__ extern __inline int8x16_t
  12365. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12366. vornq_s8 (int8x16_t __a, int8x16_t __b)
  12367. {
  12368. return __a | ~__b;
  12369. }
  12370. __extension__ extern __inline int16x8_t
  12371. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12372. vornq_s16 (int16x8_t __a, int16x8_t __b)
  12373. {
  12374. return __a | ~__b;
  12375. }
  12376. __extension__ extern __inline int32x4_t
  12377. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12378. vornq_s32 (int32x4_t __a, int32x4_t __b)
  12379. {
  12380. return __a | ~__b;
  12381. }
  12382. __extension__ extern __inline int64x2_t
  12383. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12384. vornq_s64 (int64x2_t __a, int64x2_t __b)
  12385. {
  12386. return __a | ~__b;
  12387. }
  12388. __extension__ extern __inline uint8x16_t
  12389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12390. vornq_u8 (uint8x16_t __a, uint8x16_t __b)
  12391. {
  12392. return __a | ~__b;
  12393. }
  12394. __extension__ extern __inline uint16x8_t
  12395. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12396. vornq_u16 (uint16x8_t __a, uint16x8_t __b)
  12397. {
  12398. return __a | ~__b;
  12399. }
  12400. __extension__ extern __inline uint32x4_t
  12401. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12402. vornq_u32 (uint32x4_t __a, uint32x4_t __b)
  12403. {
  12404. return __a | ~__b;
  12405. }
  12406. __extension__ extern __inline uint64x2_t
  12407. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12408. vornq_u64 (uint64x2_t __a, uint64x2_t __b)
  12409. {
  12410. return __a | ~__b;
  12411. }
  12412. __extension__ extern __inline poly8x8_t
  12413. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12414. vreinterpret_p8_p16 (poly16x4_t __a)
  12415. {
  12416. return (poly8x8_t) __a;
  12417. }
  12418. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12419. __extension__ extern __inline poly8x8_t
  12420. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12421. vreinterpret_p8_f16 (float16x4_t __a)
  12422. {
  12423. return (poly8x8_t) __a;
  12424. }
  12425. #endif
  12426. __extension__ extern __inline poly8x8_t
  12427. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12428. vreinterpret_p8_f32 (float32x2_t __a)
  12429. {
  12430. return (poly8x8_t)__a;
  12431. }
  12432. #pragma GCC push_options
  12433. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12434. __extension__ extern __inline poly8x8_t
  12435. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12436. vreinterpret_p8_p64 (poly64x1_t __a)
  12437. {
  12438. return (poly8x8_t)__a;
  12439. }
  12440. #pragma GCC pop_options
  12441. __extension__ extern __inline poly8x8_t
  12442. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12443. vreinterpret_p8_s64 (int64x1_t __a)
  12444. {
  12445. return (poly8x8_t)__a;
  12446. }
  12447. __extension__ extern __inline poly8x8_t
  12448. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12449. vreinterpret_p8_u64 (uint64x1_t __a)
  12450. {
  12451. return (poly8x8_t)__a;
  12452. }
  12453. __extension__ extern __inline poly8x8_t
  12454. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12455. vreinterpret_p8_s8 (int8x8_t __a)
  12456. {
  12457. return (poly8x8_t)__a;
  12458. }
  12459. __extension__ extern __inline poly8x8_t
  12460. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12461. vreinterpret_p8_s16 (int16x4_t __a)
  12462. {
  12463. return (poly8x8_t)__a;
  12464. }
  12465. __extension__ extern __inline poly8x8_t
  12466. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12467. vreinterpret_p8_s32 (int32x2_t __a)
  12468. {
  12469. return (poly8x8_t)__a;
  12470. }
  12471. __extension__ extern __inline poly8x8_t
  12472. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12473. vreinterpret_p8_u8 (uint8x8_t __a)
  12474. {
  12475. return (poly8x8_t)__a;
  12476. }
  12477. __extension__ extern __inline poly8x8_t
  12478. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12479. vreinterpret_p8_u16 (uint16x4_t __a)
  12480. {
  12481. return (poly8x8_t)__a;
  12482. }
  12483. __extension__ extern __inline poly8x8_t
  12484. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12485. vreinterpret_p8_u32 (uint32x2_t __a)
  12486. {
  12487. return (poly8x8_t)__a;
  12488. }
  12489. __extension__ extern __inline poly16x4_t
  12490. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12491. vreinterpret_p16_p8 (poly8x8_t __a)
  12492. {
  12493. return (poly16x4_t)__a;
  12494. }
  12495. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12496. __extension__ extern __inline poly16x4_t
  12497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12498. vreinterpret_p16_f16 (float16x4_t __a)
  12499. {
  12500. return (poly16x4_t) __a;
  12501. }
  12502. #endif
  12503. __extension__ extern __inline poly16x4_t
  12504. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12505. vreinterpret_p16_f32 (float32x2_t __a)
  12506. {
  12507. return (poly16x4_t)__a;
  12508. }
  12509. #pragma GCC push_options
  12510. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12511. __extension__ extern __inline poly16x4_t
  12512. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12513. vreinterpret_p16_p64 (poly64x1_t __a)
  12514. {
  12515. return (poly16x4_t)__a;
  12516. }
  12517. #pragma GCC pop_options
  12518. __extension__ extern __inline poly16x4_t
  12519. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12520. vreinterpret_p16_s64 (int64x1_t __a)
  12521. {
  12522. return (poly16x4_t)__a;
  12523. }
  12524. __extension__ extern __inline poly16x4_t
  12525. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12526. vreinterpret_p16_u64 (uint64x1_t __a)
  12527. {
  12528. return (poly16x4_t)__a;
  12529. }
  12530. __extension__ extern __inline poly16x4_t
  12531. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12532. vreinterpret_p16_s8 (int8x8_t __a)
  12533. {
  12534. return (poly16x4_t)__a;
  12535. }
  12536. __extension__ extern __inline poly16x4_t
  12537. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12538. vreinterpret_p16_s16 (int16x4_t __a)
  12539. {
  12540. return (poly16x4_t)__a;
  12541. }
  12542. __extension__ extern __inline poly16x4_t
  12543. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12544. vreinterpret_p16_s32 (int32x2_t __a)
  12545. {
  12546. return (poly16x4_t)__a;
  12547. }
  12548. __extension__ extern __inline poly16x4_t
  12549. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12550. vreinterpret_p16_u8 (uint8x8_t __a)
  12551. {
  12552. return (poly16x4_t)__a;
  12553. }
  12554. __extension__ extern __inline poly16x4_t
  12555. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12556. vreinterpret_p16_u16 (uint16x4_t __a)
  12557. {
  12558. return (poly16x4_t)__a;
  12559. }
  12560. __extension__ extern __inline poly16x4_t
  12561. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12562. vreinterpret_p16_u32 (uint32x2_t __a)
  12563. {
  12564. return (poly16x4_t)__a;
  12565. }
  12566. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12567. __extension__ extern __inline float16x4_t
  12568. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12569. vreinterpret_f16_bf16 (bfloat16x4_t __a)
  12570. {
  12571. return (float16x4_t) __a;
  12572. }
  12573. #endif
  12574. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12575. __extension__ extern __inline float16x4_t
  12576. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12577. vreinterpret_f16_p8 (poly8x8_t __a)
  12578. {
  12579. return (float16x4_t) __a;
  12580. }
  12581. #endif
  12582. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12583. __extension__ extern __inline float16x4_t
  12584. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12585. vreinterpret_f16_p16 (poly16x4_t __a)
  12586. {
  12587. return (float16x4_t) __a;
  12588. }
  12589. #endif
  12590. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12591. __extension__ extern __inline float16x4_t
  12592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12593. vreinterpret_f16_f32 (float32x2_t __a)
  12594. {
  12595. return (float16x4_t) __a;
  12596. }
  12597. #endif
  12598. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12599. #pragma GCC push_options
  12600. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12601. __extension__ extern __inline float16x4_t
  12602. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12603. vreinterpret_f16_p64 (poly64x1_t __a)
  12604. {
  12605. return (float16x4_t) __a;
  12606. }
  12607. #pragma GCC pop_options
  12608. #endif
  12609. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12610. __extension__ extern __inline float16x4_t
  12611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12612. vreinterpret_f16_s64 (int64x1_t __a)
  12613. {
  12614. return (float16x4_t) __a;
  12615. }
  12616. #endif
  12617. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12618. __extension__ extern __inline float16x4_t
  12619. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12620. vreinterpret_f16_u64 (uint64x1_t __a)
  12621. {
  12622. return (float16x4_t) __a;
  12623. }
  12624. #endif
  12625. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12626. __extension__ extern __inline float16x4_t
  12627. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12628. vreinterpret_f16_s8 (int8x8_t __a)
  12629. {
  12630. return (float16x4_t) __a;
  12631. }
  12632. #endif
  12633. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12634. __extension__ extern __inline float16x4_t
  12635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12636. vreinterpret_f16_s16 (int16x4_t __a)
  12637. {
  12638. return (float16x4_t) __a;
  12639. }
  12640. #endif
  12641. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12642. __extension__ extern __inline float16x4_t
  12643. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12644. vreinterpret_f16_s32 (int32x2_t __a)
  12645. {
  12646. return (float16x4_t) __a;
  12647. }
  12648. #endif
  12649. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12650. __extension__ extern __inline float16x4_t
  12651. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12652. vreinterpret_f16_u8 (uint8x8_t __a)
  12653. {
  12654. return (float16x4_t) __a;
  12655. }
  12656. #endif
  12657. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12658. __extension__ extern __inline float16x4_t
  12659. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12660. vreinterpret_f16_u16 (uint16x4_t __a)
  12661. {
  12662. return (float16x4_t) __a;
  12663. }
  12664. #endif
  12665. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12666. __extension__ extern __inline float16x4_t
  12667. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12668. vreinterpret_f16_u32 (uint32x2_t __a)
  12669. {
  12670. return (float16x4_t) __a;
  12671. }
  12672. #endif
  12673. __extension__ extern __inline float32x2_t
  12674. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12675. vreinterpret_f32_p8 (poly8x8_t __a)
  12676. {
  12677. return (float32x2_t)__a;
  12678. }
  12679. __extension__ extern __inline float32x2_t
  12680. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12681. vreinterpret_f32_p16 (poly16x4_t __a)
  12682. {
  12683. return (float32x2_t)__a;
  12684. }
  12685. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12686. __extension__ extern __inline float32x2_t
  12687. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12688. vreinterpret_f32_f16 (float16x4_t __a)
  12689. {
  12690. return (float32x2_t) __a;
  12691. }
  12692. #endif
  12693. #pragma GCC push_options
  12694. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12695. __extension__ extern __inline float32x2_t
  12696. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12697. vreinterpret_f32_p64 (poly64x1_t __a)
  12698. {
  12699. return (float32x2_t)__a;
  12700. }
  12701. #pragma GCC pop_options
  12702. __extension__ extern __inline float32x2_t
  12703. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12704. vreinterpret_f32_s64 (int64x1_t __a)
  12705. {
  12706. return (float32x2_t)__a;
  12707. }
  12708. __extension__ extern __inline float32x2_t
  12709. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12710. vreinterpret_f32_u64 (uint64x1_t __a)
  12711. {
  12712. return (float32x2_t)__a;
  12713. }
  12714. __extension__ extern __inline float32x2_t
  12715. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12716. vreinterpret_f32_s8 (int8x8_t __a)
  12717. {
  12718. return (float32x2_t)__a;
  12719. }
  12720. __extension__ extern __inline float32x2_t
  12721. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12722. vreinterpret_f32_s16 (int16x4_t __a)
  12723. {
  12724. return (float32x2_t)__a;
  12725. }
  12726. __extension__ extern __inline float32x2_t
  12727. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12728. vreinterpret_f32_s32 (int32x2_t __a)
  12729. {
  12730. return (float32x2_t)__a;
  12731. }
  12732. __extension__ extern __inline float32x2_t
  12733. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12734. vreinterpret_f32_u8 (uint8x8_t __a)
  12735. {
  12736. return (float32x2_t)__a;
  12737. }
  12738. __extension__ extern __inline float32x2_t
  12739. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12740. vreinterpret_f32_u16 (uint16x4_t __a)
  12741. {
  12742. return (float32x2_t)__a;
  12743. }
  12744. __extension__ extern __inline float32x2_t
  12745. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12746. vreinterpret_f32_u32 (uint32x2_t __a)
  12747. {
  12748. return (float32x2_t)__a;
  12749. }
  12750. #pragma GCC push_options
  12751. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12752. __extension__ extern __inline poly64x1_t
  12753. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12754. vreinterpret_p64_p8 (poly8x8_t __a)
  12755. {
  12756. return (poly64x1_t)__a;
  12757. }
  12758. __extension__ extern __inline poly64x1_t
  12759. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12760. vreinterpret_p64_p16 (poly16x4_t __a)
  12761. {
  12762. return (poly64x1_t)__a;
  12763. }
  12764. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12765. __extension__ extern __inline poly64x1_t
  12766. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12767. vreinterpret_p64_f16 (float16x4_t __a)
  12768. {
  12769. return (poly64x1_t) __a;
  12770. }
  12771. #endif
  12772. __extension__ extern __inline poly64x1_t
  12773. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12774. vreinterpret_p64_f32 (float32x2_t __a)
  12775. {
  12776. return (poly64x1_t)__a;
  12777. }
  12778. __extension__ extern __inline poly64x1_t
  12779. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12780. vreinterpret_p64_s64 (int64x1_t __a)
  12781. {
  12782. return (poly64x1_t)__a;
  12783. }
  12784. __extension__ extern __inline poly64x1_t
  12785. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12786. vreinterpret_p64_u64 (uint64x1_t __a)
  12787. {
  12788. return (poly64x1_t)__a;
  12789. }
  12790. __extension__ extern __inline poly64x1_t
  12791. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12792. vreinterpret_p64_s8 (int8x8_t __a)
  12793. {
  12794. return (poly64x1_t)__a;
  12795. }
  12796. __extension__ extern __inline poly64x1_t
  12797. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12798. vreinterpret_p64_s16 (int16x4_t __a)
  12799. {
  12800. return (poly64x1_t)__a;
  12801. }
  12802. __extension__ extern __inline poly64x1_t
  12803. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12804. vreinterpret_p64_s32 (int32x2_t __a)
  12805. {
  12806. return (poly64x1_t)__a;
  12807. }
  12808. __extension__ extern __inline poly64x1_t
  12809. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12810. vreinterpret_p64_u8 (uint8x8_t __a)
  12811. {
  12812. return (poly64x1_t)__a;
  12813. }
  12814. __extension__ extern __inline poly64x1_t
  12815. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12816. vreinterpret_p64_u16 (uint16x4_t __a)
  12817. {
  12818. return (poly64x1_t)__a;
  12819. }
  12820. __extension__ extern __inline poly64x1_t
  12821. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12822. vreinterpret_p64_u32 (uint32x2_t __a)
  12823. {
  12824. return (poly64x1_t)__a;
  12825. }
  12826. #pragma GCC pop_options
  12827. __extension__ extern __inline int64x1_t
  12828. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12829. vreinterpret_s64_p8 (poly8x8_t __a)
  12830. {
  12831. return (int64x1_t)__a;
  12832. }
  12833. __extension__ extern __inline int64x1_t
  12834. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12835. vreinterpret_s64_p16 (poly16x4_t __a)
  12836. {
  12837. return (int64x1_t)__a;
  12838. }
  12839. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12840. __extension__ extern __inline int64x1_t
  12841. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12842. vreinterpret_s64_f16 (float16x4_t __a)
  12843. {
  12844. return (int64x1_t) __a;
  12845. }
  12846. #endif
  12847. __extension__ extern __inline int64x1_t
  12848. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12849. vreinterpret_s64_f32 (float32x2_t __a)
  12850. {
  12851. return (int64x1_t)__a;
  12852. }
  12853. #pragma GCC push_options
  12854. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12855. __extension__ extern __inline int64x1_t
  12856. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12857. vreinterpret_s64_p64 (poly64x1_t __a)
  12858. {
  12859. return (int64x1_t)__a;
  12860. }
  12861. #pragma GCC pop_options
  12862. __extension__ extern __inline int64x1_t
  12863. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12864. vreinterpret_s64_u64 (uint64x1_t __a)
  12865. {
  12866. return (int64x1_t)__a;
  12867. }
  12868. __extension__ extern __inline int64x1_t
  12869. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12870. vreinterpret_s64_s8 (int8x8_t __a)
  12871. {
  12872. return (int64x1_t)__a;
  12873. }
  12874. __extension__ extern __inline int64x1_t
  12875. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12876. vreinterpret_s64_s16 (int16x4_t __a)
  12877. {
  12878. return (int64x1_t)__a;
  12879. }
  12880. __extension__ extern __inline int64x1_t
  12881. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12882. vreinterpret_s64_s32 (int32x2_t __a)
  12883. {
  12884. return (int64x1_t)__a;
  12885. }
  12886. __extension__ extern __inline int64x1_t
  12887. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12888. vreinterpret_s64_u8 (uint8x8_t __a)
  12889. {
  12890. return (int64x1_t)__a;
  12891. }
  12892. __extension__ extern __inline int64x1_t
  12893. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12894. vreinterpret_s64_u16 (uint16x4_t __a)
  12895. {
  12896. return (int64x1_t)__a;
  12897. }
  12898. __extension__ extern __inline int64x1_t
  12899. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12900. vreinterpret_s64_u32 (uint32x2_t __a)
  12901. {
  12902. return (int64x1_t)__a;
  12903. }
  12904. __extension__ extern __inline uint64x1_t
  12905. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12906. vreinterpret_u64_p8 (poly8x8_t __a)
  12907. {
  12908. return (uint64x1_t)__a;
  12909. }
  12910. __extension__ extern __inline uint64x1_t
  12911. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12912. vreinterpret_u64_p16 (poly16x4_t __a)
  12913. {
  12914. return (uint64x1_t)__a;
  12915. }
  12916. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12917. __extension__ extern __inline uint64x1_t
  12918. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12919. vreinterpret_u64_f16 (float16x4_t __a)
  12920. {
  12921. return (uint64x1_t) __a;
  12922. }
  12923. #endif
  12924. __extension__ extern __inline uint64x1_t
  12925. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12926. vreinterpret_u64_f32 (float32x2_t __a)
  12927. {
  12928. return (uint64x1_t)__a;
  12929. }
  12930. #pragma GCC push_options
  12931. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  12932. __extension__ extern __inline uint64x1_t
  12933. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12934. vreinterpret_u64_p64 (poly64x1_t __a)
  12935. {
  12936. return (uint64x1_t)__a;
  12937. }
  12938. #pragma GCC pop_options
  12939. __extension__ extern __inline uint64x1_t
  12940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12941. vreinterpret_u64_s64 (int64x1_t __a)
  12942. {
  12943. return (uint64x1_t)__a;
  12944. }
  12945. __extension__ extern __inline uint64x1_t
  12946. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12947. vreinterpret_u64_s8 (int8x8_t __a)
  12948. {
  12949. return (uint64x1_t)__a;
  12950. }
  12951. __extension__ extern __inline uint64x1_t
  12952. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12953. vreinterpret_u64_s16 (int16x4_t __a)
  12954. {
  12955. return (uint64x1_t)__a;
  12956. }
  12957. __extension__ extern __inline uint64x1_t
  12958. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12959. vreinterpret_u64_s32 (int32x2_t __a)
  12960. {
  12961. return (uint64x1_t)__a;
  12962. }
  12963. __extension__ extern __inline uint64x1_t
  12964. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12965. vreinterpret_u64_u8 (uint8x8_t __a)
  12966. {
  12967. return (uint64x1_t)__a;
  12968. }
  12969. __extension__ extern __inline uint64x1_t
  12970. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12971. vreinterpret_u64_u16 (uint16x4_t __a)
  12972. {
  12973. return (uint64x1_t)__a;
  12974. }
  12975. __extension__ extern __inline uint64x1_t
  12976. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12977. vreinterpret_u64_u32 (uint32x2_t __a)
  12978. {
  12979. return (uint64x1_t)__a;
  12980. }
  12981. __extension__ extern __inline int8x8_t
  12982. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12983. vreinterpret_s8_p8 (poly8x8_t __a)
  12984. {
  12985. return (int8x8_t)__a;
  12986. }
  12987. __extension__ extern __inline int8x8_t
  12988. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12989. vreinterpret_s8_p16 (poly16x4_t __a)
  12990. {
  12991. return (int8x8_t)__a;
  12992. }
  12993. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  12994. __extension__ extern __inline int8x8_t
  12995. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  12996. vreinterpret_s8_f16 (float16x4_t __a)
  12997. {
  12998. return (int8x8_t) __a;
  12999. }
  13000. #endif
  13001. __extension__ extern __inline int8x8_t
  13002. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13003. vreinterpret_s8_f32 (float32x2_t __a)
  13004. {
  13005. return (int8x8_t)__a;
  13006. }
  13007. #pragma GCC push_options
  13008. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13009. __extension__ extern __inline int8x8_t
  13010. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13011. vreinterpret_s8_p64 (poly64x1_t __a)
  13012. {
  13013. return (int8x8_t)__a;
  13014. }
  13015. #pragma GCC pop_options
  13016. __extension__ extern __inline int8x8_t
  13017. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13018. vreinterpret_s8_s64 (int64x1_t __a)
  13019. {
  13020. return (int8x8_t)__a;
  13021. }
  13022. __extension__ extern __inline int8x8_t
  13023. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13024. vreinterpret_s8_u64 (uint64x1_t __a)
  13025. {
  13026. return (int8x8_t)__a;
  13027. }
  13028. __extension__ extern __inline int8x8_t
  13029. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13030. vreinterpret_s8_s16 (int16x4_t __a)
  13031. {
  13032. return (int8x8_t)__a;
  13033. }
  13034. __extension__ extern __inline int8x8_t
  13035. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13036. vreinterpret_s8_s32 (int32x2_t __a)
  13037. {
  13038. return (int8x8_t)__a;
  13039. }
  13040. __extension__ extern __inline int8x8_t
  13041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13042. vreinterpret_s8_u8 (uint8x8_t __a)
  13043. {
  13044. return (int8x8_t)__a;
  13045. }
  13046. __extension__ extern __inline int8x8_t
  13047. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13048. vreinterpret_s8_u16 (uint16x4_t __a)
  13049. {
  13050. return (int8x8_t)__a;
  13051. }
  13052. __extension__ extern __inline int8x8_t
  13053. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13054. vreinterpret_s8_u32 (uint32x2_t __a)
  13055. {
  13056. return (int8x8_t)__a;
  13057. }
  13058. __extension__ extern __inline int16x4_t
  13059. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13060. vreinterpret_s16_p8 (poly8x8_t __a)
  13061. {
  13062. return (int16x4_t)__a;
  13063. }
  13064. __extension__ extern __inline int16x4_t
  13065. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13066. vreinterpret_s16_p16 (poly16x4_t __a)
  13067. {
  13068. return (int16x4_t)__a;
  13069. }
  13070. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13071. __extension__ extern __inline int16x4_t
  13072. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13073. vreinterpret_s16_f16 (float16x4_t __a)
  13074. {
  13075. return (int16x4_t) __a;
  13076. }
  13077. #endif
  13078. __extension__ extern __inline int16x4_t
  13079. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13080. vreinterpret_s16_f32 (float32x2_t __a)
  13081. {
  13082. return (int16x4_t)__a;
  13083. }
  13084. #pragma GCC push_options
  13085. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13086. __extension__ extern __inline int16x4_t
  13087. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13088. vreinterpret_s16_p64 (poly64x1_t __a)
  13089. {
  13090. return (int16x4_t)__a;
  13091. }
  13092. #pragma GCC pop_options
  13093. __extension__ extern __inline int16x4_t
  13094. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13095. vreinterpret_s16_s64 (int64x1_t __a)
  13096. {
  13097. return (int16x4_t)__a;
  13098. }
  13099. __extension__ extern __inline int16x4_t
  13100. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13101. vreinterpret_s16_u64 (uint64x1_t __a)
  13102. {
  13103. return (int16x4_t)__a;
  13104. }
  13105. __extension__ extern __inline int16x4_t
  13106. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13107. vreinterpret_s16_s8 (int8x8_t __a)
  13108. {
  13109. return (int16x4_t)__a;
  13110. }
  13111. __extension__ extern __inline int16x4_t
  13112. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13113. vreinterpret_s16_s32 (int32x2_t __a)
  13114. {
  13115. return (int16x4_t)__a;
  13116. }
  13117. __extension__ extern __inline int16x4_t
  13118. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13119. vreinterpret_s16_u8 (uint8x8_t __a)
  13120. {
  13121. return (int16x4_t)__a;
  13122. }
  13123. __extension__ extern __inline int16x4_t
  13124. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13125. vreinterpret_s16_u16 (uint16x4_t __a)
  13126. {
  13127. return (int16x4_t)__a;
  13128. }
  13129. __extension__ extern __inline int16x4_t
  13130. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13131. vreinterpret_s16_u32 (uint32x2_t __a)
  13132. {
  13133. return (int16x4_t)__a;
  13134. }
  13135. __extension__ extern __inline int32x2_t
  13136. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13137. vreinterpret_s32_p8 (poly8x8_t __a)
  13138. {
  13139. return (int32x2_t)__a;
  13140. }
  13141. __extension__ extern __inline int32x2_t
  13142. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13143. vreinterpret_s32_p16 (poly16x4_t __a)
  13144. {
  13145. return (int32x2_t)__a;
  13146. }
  13147. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13148. __extension__ extern __inline int32x2_t
  13149. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13150. vreinterpret_s32_f16 (float16x4_t __a)
  13151. {
  13152. return (int32x2_t) __a;
  13153. }
  13154. #endif
  13155. __extension__ extern __inline int32x2_t
  13156. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13157. vreinterpret_s32_f32 (float32x2_t __a)
  13158. {
  13159. return (int32x2_t)__a;
  13160. }
  13161. #pragma GCC push_options
  13162. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13163. __extension__ extern __inline int32x2_t
  13164. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13165. vreinterpret_s32_p64 (poly64x1_t __a)
  13166. {
  13167. return (int32x2_t)__a;
  13168. }
  13169. #pragma GCC pop_options
  13170. __extension__ extern __inline int32x2_t
  13171. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13172. vreinterpret_s32_s64 (int64x1_t __a)
  13173. {
  13174. return (int32x2_t)__a;
  13175. }
  13176. __extension__ extern __inline int32x2_t
  13177. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13178. vreinterpret_s32_u64 (uint64x1_t __a)
  13179. {
  13180. return (int32x2_t)__a;
  13181. }
  13182. __extension__ extern __inline int32x2_t
  13183. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13184. vreinterpret_s32_s8 (int8x8_t __a)
  13185. {
  13186. return (int32x2_t)__a;
  13187. }
  13188. __extension__ extern __inline int32x2_t
  13189. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13190. vreinterpret_s32_s16 (int16x4_t __a)
  13191. {
  13192. return (int32x2_t)__a;
  13193. }
  13194. __extension__ extern __inline int32x2_t
  13195. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13196. vreinterpret_s32_u8 (uint8x8_t __a)
  13197. {
  13198. return (int32x2_t)__a;
  13199. }
  13200. __extension__ extern __inline int32x2_t
  13201. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13202. vreinterpret_s32_u16 (uint16x4_t __a)
  13203. {
  13204. return (int32x2_t)__a;
  13205. }
  13206. __extension__ extern __inline int32x2_t
  13207. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13208. vreinterpret_s32_u32 (uint32x2_t __a)
  13209. {
  13210. return (int32x2_t)__a;
  13211. }
  13212. __extension__ extern __inline uint8x8_t
  13213. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13214. vreinterpret_u8_p8 (poly8x8_t __a)
  13215. {
  13216. return (uint8x8_t)__a;
  13217. }
  13218. __extension__ extern __inline uint8x8_t
  13219. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13220. vreinterpret_u8_p16 (poly16x4_t __a)
  13221. {
  13222. return (uint8x8_t)__a;
  13223. }
  13224. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13225. __extension__ extern __inline uint8x8_t
  13226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13227. vreinterpret_u8_f16 (float16x4_t __a)
  13228. {
  13229. return (uint8x8_t) __a;
  13230. }
  13231. #endif
  13232. __extension__ extern __inline uint8x8_t
  13233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13234. vreinterpret_u8_f32 (float32x2_t __a)
  13235. {
  13236. return (uint8x8_t)__a;
  13237. }
  13238. #pragma GCC push_options
  13239. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13240. __extension__ extern __inline uint8x8_t
  13241. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13242. vreinterpret_u8_p64 (poly64x1_t __a)
  13243. {
  13244. return (uint8x8_t)__a;
  13245. }
  13246. #pragma GCC pop_options
  13247. __extension__ extern __inline uint8x8_t
  13248. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13249. vreinterpret_u8_s64 (int64x1_t __a)
  13250. {
  13251. return (uint8x8_t)__a;
  13252. }
  13253. __extension__ extern __inline uint8x8_t
  13254. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13255. vreinterpret_u8_u64 (uint64x1_t __a)
  13256. {
  13257. return (uint8x8_t)__a;
  13258. }
  13259. __extension__ extern __inline uint8x8_t
  13260. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13261. vreinterpret_u8_s8 (int8x8_t __a)
  13262. {
  13263. return (uint8x8_t)__a;
  13264. }
  13265. __extension__ extern __inline uint8x8_t
  13266. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13267. vreinterpret_u8_s16 (int16x4_t __a)
  13268. {
  13269. return (uint8x8_t)__a;
  13270. }
  13271. __extension__ extern __inline uint8x8_t
  13272. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13273. vreinterpret_u8_s32 (int32x2_t __a)
  13274. {
  13275. return (uint8x8_t)__a;
  13276. }
  13277. __extension__ extern __inline uint8x8_t
  13278. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13279. vreinterpret_u8_u16 (uint16x4_t __a)
  13280. {
  13281. return (uint8x8_t)__a;
  13282. }
  13283. __extension__ extern __inline uint8x8_t
  13284. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13285. vreinterpret_u8_u32 (uint32x2_t __a)
  13286. {
  13287. return (uint8x8_t)__a;
  13288. }
  13289. __extension__ extern __inline uint16x4_t
  13290. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13291. vreinterpret_u16_p8 (poly8x8_t __a)
  13292. {
  13293. return (uint16x4_t)__a;
  13294. }
  13295. __extension__ extern __inline uint16x4_t
  13296. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13297. vreinterpret_u16_p16 (poly16x4_t __a)
  13298. {
  13299. return (uint16x4_t)__a;
  13300. }
  13301. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13302. __extension__ extern __inline uint16x4_t
  13303. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13304. vreinterpret_u16_f16 (float16x4_t __a)
  13305. {
  13306. return (uint16x4_t) __a;
  13307. }
  13308. #endif
  13309. __extension__ extern __inline uint16x4_t
  13310. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13311. vreinterpret_u16_f32 (float32x2_t __a)
  13312. {
  13313. return (uint16x4_t)__a;
  13314. }
  13315. #pragma GCC push_options
  13316. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13317. __extension__ extern __inline uint16x4_t
  13318. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13319. vreinterpret_u16_p64 (poly64x1_t __a)
  13320. {
  13321. return (uint16x4_t)__a;
  13322. }
  13323. #pragma GCC pop_options
  13324. __extension__ extern __inline uint16x4_t
  13325. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13326. vreinterpret_u16_s64 (int64x1_t __a)
  13327. {
  13328. return (uint16x4_t)__a;
  13329. }
  13330. __extension__ extern __inline uint16x4_t
  13331. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13332. vreinterpret_u16_u64 (uint64x1_t __a)
  13333. {
  13334. return (uint16x4_t)__a;
  13335. }
  13336. __extension__ extern __inline uint16x4_t
  13337. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13338. vreinterpret_u16_s8 (int8x8_t __a)
  13339. {
  13340. return (uint16x4_t)__a;
  13341. }
  13342. __extension__ extern __inline uint16x4_t
  13343. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13344. vreinterpret_u16_s16 (int16x4_t __a)
  13345. {
  13346. return (uint16x4_t)__a;
  13347. }
  13348. __extension__ extern __inline uint16x4_t
  13349. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13350. vreinterpret_u16_s32 (int32x2_t __a)
  13351. {
  13352. return (uint16x4_t)__a;
  13353. }
  13354. __extension__ extern __inline uint16x4_t
  13355. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13356. vreinterpret_u16_u8 (uint8x8_t __a)
  13357. {
  13358. return (uint16x4_t)__a;
  13359. }
  13360. __extension__ extern __inline uint16x4_t
  13361. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13362. vreinterpret_u16_u32 (uint32x2_t __a)
  13363. {
  13364. return (uint16x4_t)__a;
  13365. }
  13366. __extension__ extern __inline uint32x2_t
  13367. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13368. vreinterpret_u32_p8 (poly8x8_t __a)
  13369. {
  13370. return (uint32x2_t)__a;
  13371. }
  13372. __extension__ extern __inline uint32x2_t
  13373. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13374. vreinterpret_u32_p16 (poly16x4_t __a)
  13375. {
  13376. return (uint32x2_t)__a;
  13377. }
  13378. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13379. __extension__ extern __inline uint32x2_t
  13380. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13381. vreinterpret_u32_f16 (float16x4_t __a)
  13382. {
  13383. return (uint32x2_t) __a;
  13384. }
  13385. #endif
  13386. __extension__ extern __inline uint32x2_t
  13387. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13388. vreinterpret_u32_f32 (float32x2_t __a)
  13389. {
  13390. return (uint32x2_t)__a;
  13391. }
  13392. #pragma GCC push_options
  13393. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13394. __extension__ extern __inline uint32x2_t
  13395. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13396. vreinterpret_u32_p64 (poly64x1_t __a)
  13397. {
  13398. return (uint32x2_t)__a;
  13399. }
  13400. #pragma GCC pop_options
  13401. __extension__ extern __inline uint32x2_t
  13402. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13403. vreinterpret_u32_s64 (int64x1_t __a)
  13404. {
  13405. return (uint32x2_t)__a;
  13406. }
  13407. __extension__ extern __inline uint32x2_t
  13408. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13409. vreinterpret_u32_u64 (uint64x1_t __a)
  13410. {
  13411. return (uint32x2_t)__a;
  13412. }
  13413. __extension__ extern __inline uint32x2_t
  13414. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13415. vreinterpret_u32_s8 (int8x8_t __a)
  13416. {
  13417. return (uint32x2_t)__a;
  13418. }
  13419. __extension__ extern __inline uint32x2_t
  13420. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13421. vreinterpret_u32_s16 (int16x4_t __a)
  13422. {
  13423. return (uint32x2_t)__a;
  13424. }
  13425. __extension__ extern __inline uint32x2_t
  13426. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13427. vreinterpret_u32_s32 (int32x2_t __a)
  13428. {
  13429. return (uint32x2_t)__a;
  13430. }
  13431. __extension__ extern __inline uint32x2_t
  13432. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13433. vreinterpret_u32_u8 (uint8x8_t __a)
  13434. {
  13435. return (uint32x2_t)__a;
  13436. }
  13437. __extension__ extern __inline uint32x2_t
  13438. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13439. vreinterpret_u32_u16 (uint16x4_t __a)
  13440. {
  13441. return (uint32x2_t)__a;
  13442. }
  13443. __extension__ extern __inline poly8x16_t
  13444. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13445. vreinterpretq_p8_p16 (poly16x8_t __a)
  13446. {
  13447. return (poly8x16_t)__a;
  13448. }
  13449. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13450. __extension__ extern __inline poly8x16_t
  13451. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13452. vreinterpretq_p8_f16 (float16x8_t __a)
  13453. {
  13454. return (poly8x16_t) __a;
  13455. }
  13456. #endif
  13457. __extension__ extern __inline poly8x16_t
  13458. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13459. vreinterpretq_p8_f32 (float32x4_t __a)
  13460. {
  13461. return (poly8x16_t)__a;
  13462. }
  13463. #pragma GCC push_options
  13464. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13465. __extension__ extern __inline poly8x16_t
  13466. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13467. vreinterpretq_p8_p64 (poly64x2_t __a)
  13468. {
  13469. return (poly8x16_t)__a;
  13470. }
  13471. __extension__ extern __inline poly8x16_t
  13472. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13473. vreinterpretq_p8_p128 (poly128_t __a)
  13474. {
  13475. return (poly8x16_t)__a;
  13476. }
  13477. #pragma GCC pop_options
  13478. __extension__ extern __inline poly8x16_t
  13479. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13480. vreinterpretq_p8_s64 (int64x2_t __a)
  13481. {
  13482. return (poly8x16_t)__a;
  13483. }
  13484. __extension__ extern __inline poly8x16_t
  13485. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13486. vreinterpretq_p8_u64 (uint64x2_t __a)
  13487. {
  13488. return (poly8x16_t)__a;
  13489. }
  13490. __extension__ extern __inline poly8x16_t
  13491. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13492. vreinterpretq_p8_s8 (int8x16_t __a)
  13493. {
  13494. return (poly8x16_t)__a;
  13495. }
  13496. __extension__ extern __inline poly8x16_t
  13497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13498. vreinterpretq_p8_s16 (int16x8_t __a)
  13499. {
  13500. return (poly8x16_t)__a;
  13501. }
  13502. __extension__ extern __inline poly8x16_t
  13503. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13504. vreinterpretq_p8_s32 (int32x4_t __a)
  13505. {
  13506. return (poly8x16_t)__a;
  13507. }
  13508. __extension__ extern __inline poly8x16_t
  13509. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13510. vreinterpretq_p8_u8 (uint8x16_t __a)
  13511. {
  13512. return (poly8x16_t)__a;
  13513. }
  13514. __extension__ extern __inline poly8x16_t
  13515. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13516. vreinterpretq_p8_u16 (uint16x8_t __a)
  13517. {
  13518. return (poly8x16_t)__a;
  13519. }
  13520. __extension__ extern __inline poly8x16_t
  13521. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13522. vreinterpretq_p8_u32 (uint32x4_t __a)
  13523. {
  13524. return (poly8x16_t)__a;
  13525. }
  13526. __extension__ extern __inline poly16x8_t
  13527. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13528. vreinterpretq_p16_p8 (poly8x16_t __a)
  13529. {
  13530. return (poly16x8_t)__a;
  13531. }
  13532. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13533. __extension__ extern __inline poly16x8_t
  13534. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13535. vreinterpretq_p16_f16 (float16x8_t __a)
  13536. {
  13537. return (poly16x8_t) __a;
  13538. }
  13539. #endif
  13540. __extension__ extern __inline poly16x8_t
  13541. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13542. vreinterpretq_p16_f32 (float32x4_t __a)
  13543. {
  13544. return (poly16x8_t)__a;
  13545. }
  13546. #pragma GCC push_options
  13547. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13548. __extension__ extern __inline poly16x8_t
  13549. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13550. vreinterpretq_p16_p64 (poly64x2_t __a)
  13551. {
  13552. return (poly16x8_t)__a;
  13553. }
  13554. __extension__ extern __inline poly16x8_t
  13555. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13556. vreinterpretq_p16_p128 (poly128_t __a)
  13557. {
  13558. return (poly16x8_t)__a;
  13559. }
  13560. #pragma GCC pop_options
  13561. __extension__ extern __inline poly16x8_t
  13562. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13563. vreinterpretq_p16_s64 (int64x2_t __a)
  13564. {
  13565. return (poly16x8_t)__a;
  13566. }
  13567. __extension__ extern __inline poly16x8_t
  13568. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13569. vreinterpretq_p16_u64 (uint64x2_t __a)
  13570. {
  13571. return (poly16x8_t)__a;
  13572. }
  13573. __extension__ extern __inline poly16x8_t
  13574. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13575. vreinterpretq_p16_s8 (int8x16_t __a)
  13576. {
  13577. return (poly16x8_t)__a;
  13578. }
  13579. __extension__ extern __inline poly16x8_t
  13580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13581. vreinterpretq_p16_s16 (int16x8_t __a)
  13582. {
  13583. return (poly16x8_t)__a;
  13584. }
  13585. __extension__ extern __inline poly16x8_t
  13586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13587. vreinterpretq_p16_s32 (int32x4_t __a)
  13588. {
  13589. return (poly16x8_t)__a;
  13590. }
  13591. __extension__ extern __inline poly16x8_t
  13592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13593. vreinterpretq_p16_u8 (uint8x16_t __a)
  13594. {
  13595. return (poly16x8_t)__a;
  13596. }
  13597. __extension__ extern __inline poly16x8_t
  13598. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13599. vreinterpretq_p16_u16 (uint16x8_t __a)
  13600. {
  13601. return (poly16x8_t)__a;
  13602. }
  13603. __extension__ extern __inline poly16x8_t
  13604. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13605. vreinterpretq_p16_u32 (uint32x4_t __a)
  13606. {
  13607. return (poly16x8_t)__a;
  13608. }
  13609. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13610. __extension__ extern __inline float16x8_t
  13611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13612. vreinterpretq_f16_p8 (poly8x16_t __a)
  13613. {
  13614. return (float16x8_t) __a;
  13615. }
  13616. #endif
  13617. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13618. __extension__ extern __inline float16x8_t
  13619. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13620. vreinterpretq_f16_p16 (poly16x8_t __a)
  13621. {
  13622. return (float16x8_t) __a;
  13623. }
  13624. #endif
  13625. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13626. __extension__ extern __inline float16x8_t
  13627. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13628. vreinterpretq_f16_bf16 (bfloat16x8_t __a)
  13629. {
  13630. return (float16x8_t) __a;
  13631. }
  13632. #endif
  13633. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13634. __extension__ extern __inline float16x8_t
  13635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13636. vreinterpretq_f16_f32 (float32x4_t __a)
  13637. {
  13638. return (float16x8_t) __a;
  13639. }
  13640. #endif
  13641. #pragma GCC push_options
  13642. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13643. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13644. __extension__ extern __inline float16x8_t
  13645. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13646. vreinterpretq_f16_p64 (poly64x2_t __a)
  13647. {
  13648. return (float16x8_t) __a;
  13649. }
  13650. #endif
  13651. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13652. __extension__ extern __inline float16x8_t
  13653. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13654. vreinterpretq_f16_p128 (poly128_t __a)
  13655. {
  13656. return (float16x8_t) __a;
  13657. }
  13658. #endif
  13659. #pragma GCC pop_options
  13660. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13661. __extension__ extern __inline float16x8_t
  13662. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13663. vreinterpretq_f16_s64 (int64x2_t __a)
  13664. {
  13665. return (float16x8_t) __a;
  13666. }
  13667. #endif
  13668. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13669. __extension__ extern __inline float16x8_t
  13670. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13671. vreinterpretq_f16_u64 (uint64x2_t __a)
  13672. {
  13673. return (float16x8_t) __a;
  13674. }
  13675. #endif
  13676. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13677. __extension__ extern __inline float16x8_t
  13678. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13679. vreinterpretq_f16_s8 (int8x16_t __a)
  13680. {
  13681. return (float16x8_t) __a;
  13682. }
  13683. #endif
  13684. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13685. __extension__ extern __inline float16x8_t
  13686. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13687. vreinterpretq_f16_s16 (int16x8_t __a)
  13688. {
  13689. return (float16x8_t) __a;
  13690. }
  13691. #endif
  13692. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13693. __extension__ extern __inline float16x8_t
  13694. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13695. vreinterpretq_f16_s32 (int32x4_t __a)
  13696. {
  13697. return (float16x8_t) __a;
  13698. }
  13699. #endif
  13700. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13701. __extension__ extern __inline float16x8_t
  13702. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13703. vreinterpretq_f16_u8 (uint8x16_t __a)
  13704. {
  13705. return (float16x8_t) __a;
  13706. }
  13707. #endif
  13708. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13709. __extension__ extern __inline float16x8_t
  13710. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13711. vreinterpretq_f16_u16 (uint16x8_t __a)
  13712. {
  13713. return (float16x8_t) __a;
  13714. }
  13715. #endif
  13716. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13717. __extension__ extern __inline float16x8_t
  13718. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13719. vreinterpretq_f16_u32 (uint32x4_t __a)
  13720. {
  13721. return (float16x8_t) __a;
  13722. }
  13723. #endif
  13724. __extension__ extern __inline float32x4_t
  13725. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13726. vreinterpretq_f32_p8 (poly8x16_t __a)
  13727. {
  13728. return (float32x4_t)__a;
  13729. }
  13730. __extension__ extern __inline float32x4_t
  13731. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13732. vreinterpretq_f32_p16 (poly16x8_t __a)
  13733. {
  13734. return (float32x4_t)__a;
  13735. }
  13736. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13737. __extension__ extern __inline float32x4_t
  13738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13739. vreinterpretq_f32_f16 (float16x8_t __a)
  13740. {
  13741. return (float32x4_t) __a;
  13742. }
  13743. #endif
  13744. #pragma GCC push_options
  13745. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13746. __extension__ extern __inline float32x4_t
  13747. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13748. vreinterpretq_f32_p64 (poly64x2_t __a)
  13749. {
  13750. return (float32x4_t)__a;
  13751. }
  13752. __extension__ extern __inline float32x4_t
  13753. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13754. vreinterpretq_f32_p128 (poly128_t __a)
  13755. {
  13756. return (float32x4_t)__a;
  13757. }
  13758. #pragma GCC pop_options
  13759. __extension__ extern __inline float32x4_t
  13760. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13761. vreinterpretq_f32_s64 (int64x2_t __a)
  13762. {
  13763. return (float32x4_t)__a;
  13764. }
  13765. __extension__ extern __inline float32x4_t
  13766. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13767. vreinterpretq_f32_u64 (uint64x2_t __a)
  13768. {
  13769. return (float32x4_t)__a;
  13770. }
  13771. __extension__ extern __inline float32x4_t
  13772. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13773. vreinterpretq_f32_s8 (int8x16_t __a)
  13774. {
  13775. return (float32x4_t)__a;
  13776. }
  13777. __extension__ extern __inline float32x4_t
  13778. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13779. vreinterpretq_f32_s16 (int16x8_t __a)
  13780. {
  13781. return (float32x4_t)__a;
  13782. }
  13783. __extension__ extern __inline float32x4_t
  13784. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13785. vreinterpretq_f32_s32 (int32x4_t __a)
  13786. {
  13787. return (float32x4_t)__a;
  13788. }
  13789. __extension__ extern __inline float32x4_t
  13790. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13791. vreinterpretq_f32_u8 (uint8x16_t __a)
  13792. {
  13793. return (float32x4_t)__a;
  13794. }
  13795. __extension__ extern __inline float32x4_t
  13796. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13797. vreinterpretq_f32_u16 (uint16x8_t __a)
  13798. {
  13799. return (float32x4_t)__a;
  13800. }
  13801. __extension__ extern __inline float32x4_t
  13802. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13803. vreinterpretq_f32_u32 (uint32x4_t __a)
  13804. {
  13805. return (float32x4_t)__a;
  13806. }
  13807. #pragma GCC push_options
  13808. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13809. __extension__ extern __inline poly64x2_t
  13810. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13811. vreinterpretq_p64_p8 (poly8x16_t __a)
  13812. {
  13813. return (poly64x2_t)__a;
  13814. }
  13815. __extension__ extern __inline poly64x2_t
  13816. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13817. vreinterpretq_p64_p16 (poly16x8_t __a)
  13818. {
  13819. return (poly64x2_t)__a;
  13820. }
  13821. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13822. __extension__ extern __inline poly64x2_t
  13823. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13824. vreinterpretq_p64_f16 (float16x8_t __a)
  13825. {
  13826. return (poly64x2_t) __a;
  13827. }
  13828. #endif
  13829. __extension__ extern __inline poly64x2_t
  13830. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13831. vreinterpretq_p64_f32 (float32x4_t __a)
  13832. {
  13833. return (poly64x2_t)__a;
  13834. }
  13835. __extension__ extern __inline poly64x2_t
  13836. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13837. vreinterpretq_p64_p128 (poly128_t __a)
  13838. {
  13839. return (poly64x2_t)__a;
  13840. }
  13841. __extension__ extern __inline poly64x2_t
  13842. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13843. vreinterpretq_p64_s64 (int64x2_t __a)
  13844. {
  13845. return (poly64x2_t)__a;
  13846. }
  13847. __extension__ extern __inline poly64x2_t
  13848. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13849. vreinterpretq_p64_u64 (uint64x2_t __a)
  13850. {
  13851. return (poly64x2_t)__a;
  13852. }
  13853. __extension__ extern __inline poly64x2_t
  13854. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13855. vreinterpretq_p64_s8 (int8x16_t __a)
  13856. {
  13857. return (poly64x2_t)__a;
  13858. }
  13859. __extension__ extern __inline poly64x2_t
  13860. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13861. vreinterpretq_p64_s16 (int16x8_t __a)
  13862. {
  13863. return (poly64x2_t)__a;
  13864. }
  13865. __extension__ extern __inline poly64x2_t
  13866. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13867. vreinterpretq_p64_s32 (int32x4_t __a)
  13868. {
  13869. return (poly64x2_t)__a;
  13870. }
  13871. __extension__ extern __inline poly64x2_t
  13872. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13873. vreinterpretq_p64_u8 (uint8x16_t __a)
  13874. {
  13875. return (poly64x2_t)__a;
  13876. }
  13877. __extension__ extern __inline poly64x2_t
  13878. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13879. vreinterpretq_p64_u16 (uint16x8_t __a)
  13880. {
  13881. return (poly64x2_t)__a;
  13882. }
  13883. __extension__ extern __inline poly64x2_t
  13884. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13885. vreinterpretq_p64_u32 (uint32x4_t __a)
  13886. {
  13887. return (poly64x2_t)__a;
  13888. }
  13889. __extension__ extern __inline poly128_t
  13890. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13891. vreinterpretq_p128_p8 (poly8x16_t __a)
  13892. {
  13893. return (poly128_t)__a;
  13894. }
  13895. __extension__ extern __inline poly128_t
  13896. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13897. vreinterpretq_p128_p16 (poly16x8_t __a)
  13898. {
  13899. return (poly128_t)__a;
  13900. }
  13901. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13902. __extension__ extern __inline poly128_t
  13903. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13904. vreinterpretq_p128_f16 (float16x8_t __a)
  13905. {
  13906. return (poly128_t) __a;
  13907. }
  13908. #endif
  13909. __extension__ extern __inline poly128_t
  13910. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13911. vreinterpretq_p128_f32 (float32x4_t __a)
  13912. {
  13913. return (poly128_t)__a;
  13914. }
  13915. __extension__ extern __inline poly128_t
  13916. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13917. vreinterpretq_p128_p64 (poly64x2_t __a)
  13918. {
  13919. return (poly128_t)__a;
  13920. }
  13921. __extension__ extern __inline poly128_t
  13922. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13923. vreinterpretq_p128_s64 (int64x2_t __a)
  13924. {
  13925. return (poly128_t)__a;
  13926. }
  13927. __extension__ extern __inline poly128_t
  13928. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13929. vreinterpretq_p128_u64 (uint64x2_t __a)
  13930. {
  13931. return (poly128_t)__a;
  13932. }
  13933. __extension__ extern __inline poly128_t
  13934. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13935. vreinterpretq_p128_s8 (int8x16_t __a)
  13936. {
  13937. return (poly128_t)__a;
  13938. }
  13939. __extension__ extern __inline poly128_t
  13940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13941. vreinterpretq_p128_s16 (int16x8_t __a)
  13942. {
  13943. return (poly128_t)__a;
  13944. }
  13945. __extension__ extern __inline poly128_t
  13946. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13947. vreinterpretq_p128_s32 (int32x4_t __a)
  13948. {
  13949. return (poly128_t)__a;
  13950. }
  13951. __extension__ extern __inline poly128_t
  13952. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13953. vreinterpretq_p128_u8 (uint8x16_t __a)
  13954. {
  13955. return (poly128_t)__a;
  13956. }
  13957. __extension__ extern __inline poly128_t
  13958. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13959. vreinterpretq_p128_u16 (uint16x8_t __a)
  13960. {
  13961. return (poly128_t)__a;
  13962. }
  13963. __extension__ extern __inline poly128_t
  13964. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13965. vreinterpretq_p128_u32 (uint32x4_t __a)
  13966. {
  13967. return (poly128_t)__a;
  13968. }
  13969. #pragma GCC pop_options
  13970. __extension__ extern __inline int64x2_t
  13971. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13972. vreinterpretq_s64_p8 (poly8x16_t __a)
  13973. {
  13974. return (int64x2_t)__a;
  13975. }
  13976. __extension__ extern __inline int64x2_t
  13977. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13978. vreinterpretq_s64_p16 (poly16x8_t __a)
  13979. {
  13980. return (int64x2_t)__a;
  13981. }
  13982. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  13983. __extension__ extern __inline int64x2_t
  13984. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13985. vreinterpretq_s64_f16 (float16x8_t __a)
  13986. {
  13987. return (int64x2_t) __a;
  13988. }
  13989. #endif
  13990. __extension__ extern __inline int64x2_t
  13991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  13992. vreinterpretq_s64_f32 (float32x4_t __a)
  13993. {
  13994. return (int64x2_t)__a;
  13995. }
  13996. #pragma GCC push_options
  13997. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  13998. __extension__ extern __inline int64x2_t
  13999. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14000. vreinterpretq_s64_p64 (poly64x2_t __a)
  14001. {
  14002. return (int64x2_t)__a;
  14003. }
  14004. __extension__ extern __inline int64x2_t
  14005. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14006. vreinterpretq_s64_p128 (poly128_t __a)
  14007. {
  14008. return (int64x2_t)__a;
  14009. }
  14010. #pragma GCC pop_options
  14011. __extension__ extern __inline int64x2_t
  14012. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14013. vreinterpretq_s64_u64 (uint64x2_t __a)
  14014. {
  14015. return (int64x2_t)__a;
  14016. }
  14017. __extension__ extern __inline int64x2_t
  14018. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14019. vreinterpretq_s64_s8 (int8x16_t __a)
  14020. {
  14021. return (int64x2_t)__a;
  14022. }
  14023. __extension__ extern __inline int64x2_t
  14024. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14025. vreinterpretq_s64_s16 (int16x8_t __a)
  14026. {
  14027. return (int64x2_t)__a;
  14028. }
  14029. __extension__ extern __inline int64x2_t
  14030. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14031. vreinterpretq_s64_s32 (int32x4_t __a)
  14032. {
  14033. return (int64x2_t)__a;
  14034. }
  14035. __extension__ extern __inline int64x2_t
  14036. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14037. vreinterpretq_s64_u8 (uint8x16_t __a)
  14038. {
  14039. return (int64x2_t)__a;
  14040. }
  14041. __extension__ extern __inline int64x2_t
  14042. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14043. vreinterpretq_s64_u16 (uint16x8_t __a)
  14044. {
  14045. return (int64x2_t)__a;
  14046. }
  14047. __extension__ extern __inline int64x2_t
  14048. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14049. vreinterpretq_s64_u32 (uint32x4_t __a)
  14050. {
  14051. return (int64x2_t)__a;
  14052. }
  14053. __extension__ extern __inline uint64x2_t
  14054. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14055. vreinterpretq_u64_p8 (poly8x16_t __a)
  14056. {
  14057. return (uint64x2_t)__a;
  14058. }
  14059. __extension__ extern __inline uint64x2_t
  14060. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14061. vreinterpretq_u64_p16 (poly16x8_t __a)
  14062. {
  14063. return (uint64x2_t)__a;
  14064. }
  14065. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14066. __extension__ extern __inline uint64x2_t
  14067. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14068. vreinterpretq_u64_f16 (float16x8_t __a)
  14069. {
  14070. return (uint64x2_t) __a;
  14071. }
  14072. #endif
  14073. __extension__ extern __inline uint64x2_t
  14074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14075. vreinterpretq_u64_f32 (float32x4_t __a)
  14076. {
  14077. return (uint64x2_t)__a;
  14078. }
  14079. #pragma GCC push_options
  14080. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14081. __extension__ extern __inline uint64x2_t
  14082. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14083. vreinterpretq_u64_p64 (poly64x2_t __a)
  14084. {
  14085. return (uint64x2_t)__a;
  14086. }
  14087. __extension__ extern __inline uint64x2_t
  14088. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14089. vreinterpretq_u64_p128 (poly128_t __a)
  14090. {
  14091. return (uint64x2_t)__a;
  14092. }
  14093. #pragma GCC pop_options
  14094. __extension__ extern __inline uint64x2_t
  14095. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14096. vreinterpretq_u64_s64 (int64x2_t __a)
  14097. {
  14098. return (uint64x2_t)__a;
  14099. }
  14100. __extension__ extern __inline uint64x2_t
  14101. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14102. vreinterpretq_u64_s8 (int8x16_t __a)
  14103. {
  14104. return (uint64x2_t)__a;
  14105. }
  14106. __extension__ extern __inline uint64x2_t
  14107. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14108. vreinterpretq_u64_s16 (int16x8_t __a)
  14109. {
  14110. return (uint64x2_t)__a;
  14111. }
  14112. __extension__ extern __inline uint64x2_t
  14113. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14114. vreinterpretq_u64_s32 (int32x4_t __a)
  14115. {
  14116. return (uint64x2_t)__a;
  14117. }
  14118. __extension__ extern __inline uint64x2_t
  14119. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14120. vreinterpretq_u64_u8 (uint8x16_t __a)
  14121. {
  14122. return (uint64x2_t)__a;
  14123. }
  14124. __extension__ extern __inline uint64x2_t
  14125. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14126. vreinterpretq_u64_u16 (uint16x8_t __a)
  14127. {
  14128. return (uint64x2_t)__a;
  14129. }
  14130. __extension__ extern __inline uint64x2_t
  14131. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14132. vreinterpretq_u64_u32 (uint32x4_t __a)
  14133. {
  14134. return (uint64x2_t)__a;
  14135. }
  14136. __extension__ extern __inline int8x16_t
  14137. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14138. vreinterpretq_s8_p8 (poly8x16_t __a)
  14139. {
  14140. return (int8x16_t)__a;
  14141. }
  14142. __extension__ extern __inline int8x16_t
  14143. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14144. vreinterpretq_s8_p16 (poly16x8_t __a)
  14145. {
  14146. return (int8x16_t)__a;
  14147. }
  14148. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14149. __extension__ extern __inline int8x16_t
  14150. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14151. vreinterpretq_s8_f16 (float16x8_t __a)
  14152. {
  14153. return (int8x16_t) __a;
  14154. }
  14155. #endif
  14156. __extension__ extern __inline int8x16_t
  14157. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14158. vreinterpretq_s8_f32 (float32x4_t __a)
  14159. {
  14160. return (int8x16_t)__a;
  14161. }
  14162. #pragma GCC push_options
  14163. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14164. __extension__ extern __inline int8x16_t
  14165. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14166. vreinterpretq_s8_p64 (poly64x2_t __a)
  14167. {
  14168. return (int8x16_t)__a;
  14169. }
  14170. __extension__ extern __inline int8x16_t
  14171. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14172. vreinterpretq_s8_p128 (poly128_t __a)
  14173. {
  14174. return (int8x16_t)__a;
  14175. }
  14176. #pragma GCC pop_options
  14177. __extension__ extern __inline int8x16_t
  14178. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14179. vreinterpretq_s8_s64 (int64x2_t __a)
  14180. {
  14181. return (int8x16_t)__a;
  14182. }
  14183. __extension__ extern __inline int8x16_t
  14184. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14185. vreinterpretq_s8_u64 (uint64x2_t __a)
  14186. {
  14187. return (int8x16_t)__a;
  14188. }
  14189. __extension__ extern __inline int8x16_t
  14190. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14191. vreinterpretq_s8_s16 (int16x8_t __a)
  14192. {
  14193. return (int8x16_t)__a;
  14194. }
  14195. __extension__ extern __inline int8x16_t
  14196. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14197. vreinterpretq_s8_s32 (int32x4_t __a)
  14198. {
  14199. return (int8x16_t)__a;
  14200. }
  14201. __extension__ extern __inline int8x16_t
  14202. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14203. vreinterpretq_s8_u8 (uint8x16_t __a)
  14204. {
  14205. return (int8x16_t)__a;
  14206. }
  14207. __extension__ extern __inline int8x16_t
  14208. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14209. vreinterpretq_s8_u16 (uint16x8_t __a)
  14210. {
  14211. return (int8x16_t)__a;
  14212. }
  14213. __extension__ extern __inline int8x16_t
  14214. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14215. vreinterpretq_s8_u32 (uint32x4_t __a)
  14216. {
  14217. return (int8x16_t)__a;
  14218. }
  14219. __extension__ extern __inline int16x8_t
  14220. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14221. vreinterpretq_s16_p8 (poly8x16_t __a)
  14222. {
  14223. return (int16x8_t)__a;
  14224. }
  14225. __extension__ extern __inline int16x8_t
  14226. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14227. vreinterpretq_s16_p16 (poly16x8_t __a)
  14228. {
  14229. return (int16x8_t)__a;
  14230. }
  14231. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14232. __extension__ extern __inline int16x8_t
  14233. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14234. vreinterpretq_s16_f16 (float16x8_t __a)
  14235. {
  14236. return (int16x8_t) __a;
  14237. }
  14238. #endif
  14239. __extension__ extern __inline int16x8_t
  14240. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14241. vreinterpretq_s16_f32 (float32x4_t __a)
  14242. {
  14243. return (int16x8_t)__a;
  14244. }
  14245. #pragma GCC push_options
  14246. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14247. __extension__ extern __inline int16x8_t
  14248. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14249. vreinterpretq_s16_p64 (poly64x2_t __a)
  14250. {
  14251. return (int16x8_t)__a;
  14252. }
  14253. __extension__ extern __inline int16x8_t
  14254. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14255. vreinterpretq_s16_p128 (poly128_t __a)
  14256. {
  14257. return (int16x8_t)__a;
  14258. }
  14259. #pragma GCC pop_options
  14260. __extension__ extern __inline int16x8_t
  14261. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14262. vreinterpretq_s16_s64 (int64x2_t __a)
  14263. {
  14264. return (int16x8_t)__a;
  14265. }
  14266. __extension__ extern __inline int16x8_t
  14267. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14268. vreinterpretq_s16_u64 (uint64x2_t __a)
  14269. {
  14270. return (int16x8_t)__a;
  14271. }
  14272. __extension__ extern __inline int16x8_t
  14273. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14274. vreinterpretq_s16_s8 (int8x16_t __a)
  14275. {
  14276. return (int16x8_t)__a;
  14277. }
  14278. __extension__ extern __inline int16x8_t
  14279. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14280. vreinterpretq_s16_s32 (int32x4_t __a)
  14281. {
  14282. return (int16x8_t)__a;
  14283. }
  14284. __extension__ extern __inline int16x8_t
  14285. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14286. vreinterpretq_s16_u8 (uint8x16_t __a)
  14287. {
  14288. return (int16x8_t)__a;
  14289. }
  14290. __extension__ extern __inline int16x8_t
  14291. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14292. vreinterpretq_s16_u16 (uint16x8_t __a)
  14293. {
  14294. return (int16x8_t)__a;
  14295. }
  14296. __extension__ extern __inline int16x8_t
  14297. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14298. vreinterpretq_s16_u32 (uint32x4_t __a)
  14299. {
  14300. return (int16x8_t)__a;
  14301. }
  14302. __extension__ extern __inline int32x4_t
  14303. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14304. vreinterpretq_s32_p8 (poly8x16_t __a)
  14305. {
  14306. return (int32x4_t)__a;
  14307. }
  14308. __extension__ extern __inline int32x4_t
  14309. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14310. vreinterpretq_s32_p16 (poly16x8_t __a)
  14311. {
  14312. return (int32x4_t)__a;
  14313. }
  14314. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14315. __extension__ extern __inline int32x4_t
  14316. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14317. vreinterpretq_s32_f16 (float16x8_t __a)
  14318. {
  14319. return (int32x4_t)__a;
  14320. }
  14321. #endif
  14322. __extension__ extern __inline int32x4_t
  14323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14324. vreinterpretq_s32_f32 (float32x4_t __a)
  14325. {
  14326. return (int32x4_t)__a;
  14327. }
  14328. #pragma GCC push_options
  14329. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14330. __extension__ extern __inline int32x4_t
  14331. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14332. vreinterpretq_s32_p64 (poly64x2_t __a)
  14333. {
  14334. return (int32x4_t)__a;
  14335. }
  14336. __extension__ extern __inline int32x4_t
  14337. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14338. vreinterpretq_s32_p128 (poly128_t __a)
  14339. {
  14340. return (int32x4_t)__a;
  14341. }
  14342. #pragma GCC pop_options
  14343. __extension__ extern __inline int32x4_t
  14344. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14345. vreinterpretq_s32_s64 (int64x2_t __a)
  14346. {
  14347. return (int32x4_t)__a;
  14348. }
  14349. __extension__ extern __inline int32x4_t
  14350. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14351. vreinterpretq_s32_u64 (uint64x2_t __a)
  14352. {
  14353. return (int32x4_t)__a;
  14354. }
  14355. __extension__ extern __inline int32x4_t
  14356. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14357. vreinterpretq_s32_s8 (int8x16_t __a)
  14358. {
  14359. return (int32x4_t)__a;
  14360. }
  14361. __extension__ extern __inline int32x4_t
  14362. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14363. vreinterpretq_s32_s16 (int16x8_t __a)
  14364. {
  14365. return (int32x4_t)__a;
  14366. }
  14367. __extension__ extern __inline int32x4_t
  14368. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14369. vreinterpretq_s32_u8 (uint8x16_t __a)
  14370. {
  14371. return (int32x4_t)__a;
  14372. }
  14373. __extension__ extern __inline int32x4_t
  14374. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14375. vreinterpretq_s32_u16 (uint16x8_t __a)
  14376. {
  14377. return (int32x4_t)__a;
  14378. }
  14379. __extension__ extern __inline int32x4_t
  14380. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14381. vreinterpretq_s32_u32 (uint32x4_t __a)
  14382. {
  14383. return (int32x4_t)__a;
  14384. }
  14385. __extension__ extern __inline uint8x16_t
  14386. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14387. vreinterpretq_u8_p8 (poly8x16_t __a)
  14388. {
  14389. return (uint8x16_t)__a;
  14390. }
  14391. __extension__ extern __inline uint8x16_t
  14392. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14393. vreinterpretq_u8_p16 (poly16x8_t __a)
  14394. {
  14395. return (uint8x16_t)__a;
  14396. }
  14397. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14398. __extension__ extern __inline uint8x16_t
  14399. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14400. vreinterpretq_u8_f16 (float16x8_t __a)
  14401. {
  14402. return (uint8x16_t) __a;
  14403. }
  14404. #endif
  14405. __extension__ extern __inline uint8x16_t
  14406. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14407. vreinterpretq_u8_f32 (float32x4_t __a)
  14408. {
  14409. return (uint8x16_t)__a;
  14410. }
  14411. #pragma GCC push_options
  14412. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14413. __extension__ extern __inline uint8x16_t
  14414. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14415. vreinterpretq_u8_p64 (poly64x2_t __a)
  14416. {
  14417. return (uint8x16_t)__a;
  14418. }
  14419. __extension__ extern __inline uint8x16_t
  14420. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14421. vreinterpretq_u8_p128 (poly128_t __a)
  14422. {
  14423. return (uint8x16_t)__a;
  14424. }
  14425. #pragma GCC pop_options
  14426. __extension__ extern __inline uint8x16_t
  14427. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14428. vreinterpretq_u8_s64 (int64x2_t __a)
  14429. {
  14430. return (uint8x16_t)__a;
  14431. }
  14432. __extension__ extern __inline uint8x16_t
  14433. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14434. vreinterpretq_u8_u64 (uint64x2_t __a)
  14435. {
  14436. return (uint8x16_t)__a;
  14437. }
  14438. __extension__ extern __inline uint8x16_t
  14439. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14440. vreinterpretq_u8_s8 (int8x16_t __a)
  14441. {
  14442. return (uint8x16_t)__a;
  14443. }
  14444. __extension__ extern __inline uint8x16_t
  14445. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14446. vreinterpretq_u8_s16 (int16x8_t __a)
  14447. {
  14448. return (uint8x16_t)__a;
  14449. }
  14450. __extension__ extern __inline uint8x16_t
  14451. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14452. vreinterpretq_u8_s32 (int32x4_t __a)
  14453. {
  14454. return (uint8x16_t)__a;
  14455. }
  14456. __extension__ extern __inline uint8x16_t
  14457. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14458. vreinterpretq_u8_u16 (uint16x8_t __a)
  14459. {
  14460. return (uint8x16_t)__a;
  14461. }
  14462. __extension__ extern __inline uint8x16_t
  14463. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14464. vreinterpretq_u8_u32 (uint32x4_t __a)
  14465. {
  14466. return (uint8x16_t)__a;
  14467. }
  14468. __extension__ extern __inline uint16x8_t
  14469. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14470. vreinterpretq_u16_p8 (poly8x16_t __a)
  14471. {
  14472. return (uint16x8_t)__a;
  14473. }
  14474. __extension__ extern __inline uint16x8_t
  14475. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14476. vreinterpretq_u16_p16 (poly16x8_t __a)
  14477. {
  14478. return (uint16x8_t)__a;
  14479. }
  14480. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14481. __extension__ extern __inline uint16x8_t
  14482. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14483. vreinterpretq_u16_f16 (float16x8_t __a)
  14484. {
  14485. return (uint16x8_t) __a;
  14486. }
  14487. #endif
  14488. __extension__ extern __inline uint16x8_t
  14489. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14490. vreinterpretq_u16_f32 (float32x4_t __a)
  14491. {
  14492. return (uint16x8_t)__a;
  14493. }
  14494. #pragma GCC push_options
  14495. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14496. __extension__ extern __inline uint16x8_t
  14497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14498. vreinterpretq_u16_p64 (poly64x2_t __a)
  14499. {
  14500. return (uint16x8_t)__a;
  14501. }
  14502. __extension__ extern __inline uint16x8_t
  14503. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14504. vreinterpretq_u16_p128 (poly128_t __a)
  14505. {
  14506. return (uint16x8_t)__a;
  14507. }
  14508. #pragma GCC pop_options
  14509. __extension__ extern __inline uint16x8_t
  14510. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14511. vreinterpretq_u16_s64 (int64x2_t __a)
  14512. {
  14513. return (uint16x8_t)__a;
  14514. }
  14515. __extension__ extern __inline uint16x8_t
  14516. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14517. vreinterpretq_u16_u64 (uint64x2_t __a)
  14518. {
  14519. return (uint16x8_t)__a;
  14520. }
  14521. __extension__ extern __inline uint16x8_t
  14522. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14523. vreinterpretq_u16_s8 (int8x16_t __a)
  14524. {
  14525. return (uint16x8_t)__a;
  14526. }
  14527. __extension__ extern __inline uint16x8_t
  14528. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14529. vreinterpretq_u16_s16 (int16x8_t __a)
  14530. {
  14531. return (uint16x8_t)__a;
  14532. }
  14533. __extension__ extern __inline uint16x8_t
  14534. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14535. vreinterpretq_u16_s32 (int32x4_t __a)
  14536. {
  14537. return (uint16x8_t)__a;
  14538. }
  14539. __extension__ extern __inline uint16x8_t
  14540. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14541. vreinterpretq_u16_u8 (uint8x16_t __a)
  14542. {
  14543. return (uint16x8_t)__a;
  14544. }
  14545. __extension__ extern __inline uint16x8_t
  14546. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14547. vreinterpretq_u16_u32 (uint32x4_t __a)
  14548. {
  14549. return (uint16x8_t)__a;
  14550. }
  14551. __extension__ extern __inline uint32x4_t
  14552. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14553. vreinterpretq_u32_p8 (poly8x16_t __a)
  14554. {
  14555. return (uint32x4_t)__a;
  14556. }
  14557. __extension__ extern __inline uint32x4_t
  14558. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14559. vreinterpretq_u32_p16 (poly16x8_t __a)
  14560. {
  14561. return (uint32x4_t)__a;
  14562. }
  14563. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  14564. __extension__ extern __inline uint32x4_t
  14565. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14566. vreinterpretq_u32_f16 (float16x8_t __a)
  14567. {
  14568. return (uint32x4_t) __a;
  14569. }
  14570. #endif
  14571. __extension__ extern __inline uint32x4_t
  14572. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14573. vreinterpretq_u32_f32 (float32x4_t __a)
  14574. {
  14575. return (uint32x4_t)__a;
  14576. }
  14577. #pragma GCC push_options
  14578. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14579. __extension__ extern __inline uint32x4_t
  14580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14581. vreinterpretq_u32_p64 (poly64x2_t __a)
  14582. {
  14583. return (uint32x4_t)__a;
  14584. }
  14585. __extension__ extern __inline uint32x4_t
  14586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14587. vreinterpretq_u32_p128 (poly128_t __a)
  14588. {
  14589. return (uint32x4_t)__a;
  14590. }
  14591. #pragma GCC pop_options
  14592. __extension__ extern __inline uint32x4_t
  14593. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14594. vreinterpretq_u32_s64 (int64x2_t __a)
  14595. {
  14596. return (uint32x4_t)__a;
  14597. }
  14598. __extension__ extern __inline uint32x4_t
  14599. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14600. vreinterpretq_u32_u64 (uint64x2_t __a)
  14601. {
  14602. return (uint32x4_t)__a;
  14603. }
  14604. __extension__ extern __inline uint32x4_t
  14605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14606. vreinterpretq_u32_s8 (int8x16_t __a)
  14607. {
  14608. return (uint32x4_t)__a;
  14609. }
  14610. __extension__ extern __inline uint32x4_t
  14611. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14612. vreinterpretq_u32_s16 (int16x8_t __a)
  14613. {
  14614. return (uint32x4_t)__a;
  14615. }
  14616. __extension__ extern __inline uint32x4_t
  14617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14618. vreinterpretq_u32_s32 (int32x4_t __a)
  14619. {
  14620. return (uint32x4_t)__a;
  14621. }
  14622. __extension__ extern __inline uint32x4_t
  14623. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14624. vreinterpretq_u32_u8 (uint8x16_t __a)
  14625. {
  14626. return (uint32x4_t)__a;
  14627. }
  14628. __extension__ extern __inline uint32x4_t
  14629. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14630. vreinterpretq_u32_u16 (uint16x8_t __a)
  14631. {
  14632. return (uint32x4_t)__a;
  14633. }
  14634. #pragma GCC push_options
  14635. #pragma GCC target ("fpu=crypto-neon-fp-armv8")
  14636. __extension__ extern __inline poly128_t
  14637. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14638. vldrq_p128 (poly128_t const * __ptr)
  14639. {
  14640. #ifdef __ARM_BIG_ENDIAN
  14641. poly64_t* __ptmp = (poly64_t*) __ptr;
  14642. poly64_t __d0 = vld1_p64 (__ptmp);
  14643. poly64_t __d1 = vld1_p64 (__ptmp + 1);
  14644. return vreinterpretq_p128_p64 (vcombine_p64 (__d1, __d0));
  14645. #else
  14646. return vreinterpretq_p128_p64 (vld1q_p64 ((poly64_t*) __ptr));
  14647. #endif
  14648. }
  14649. __extension__ extern __inline void
  14650. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14651. vstrq_p128 (poly128_t * __ptr, poly128_t __val)
  14652. {
  14653. #ifdef __ARM_BIG_ENDIAN
  14654. poly64x2_t __tmp = vreinterpretq_p64_p128 (__val);
  14655. poly64_t __d0 = vget_high_p64 (__tmp);
  14656. poly64_t __d1 = vget_low_p64 (__tmp);
  14657. vst1q_p64 ((poly64_t*) __ptr, vcombine_p64 (__d0, __d1));
  14658. #else
  14659. vst1q_p64 ((poly64_t*) __ptr, vreinterpretq_p64_p128 (__val));
  14660. #endif
  14661. }
  14662. /* The vceq_p64 intrinsic does not map to a single instruction.
  14663. Instead we emulate it by performing a 32-bit variant of the vceq
  14664. and applying a pairwise min reduction to the result.
  14665. vceq_u32 will produce two 32-bit halves, each of which will contain either
  14666. all ones or all zeros depending on whether the corresponding 32-bit
  14667. halves of the poly64_t were equal. The whole poly64_t values are equal
  14668. if and only if both halves are equal, i.e. vceq_u32 returns all ones.
  14669. If the result is all zeroes for any half then the whole result is zeroes.
  14670. This is what the pairwise min reduction achieves. */
  14671. __extension__ extern __inline uint64x1_t
  14672. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14673. vceq_p64 (poly64x1_t __a, poly64x1_t __b)
  14674. {
  14675. uint32x2_t __t_a = vreinterpret_u32_p64 (__a);
  14676. uint32x2_t __t_b = vreinterpret_u32_p64 (__b);
  14677. uint32x2_t __c = vceq_u32 (__t_a, __t_b);
  14678. uint32x2_t __m = vpmin_u32 (__c, __c);
  14679. return vreinterpret_u64_u32 (__m);
  14680. }
  14681. /* The vtst_p64 intrinsic does not map to a single instruction.
  14682. We emulate it in way similar to vceq_p64 above but here we do
  14683. a reduction with max since if any two corresponding bits
  14684. in the two poly64_t's match, then the whole result must be all ones. */
  14685. __extension__ extern __inline uint64x1_t
  14686. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14687. vtst_p64 (poly64x1_t __a, poly64x1_t __b)
  14688. {
  14689. uint32x2_t __t_a = vreinterpret_u32_p64 (__a);
  14690. uint32x2_t __t_b = vreinterpret_u32_p64 (__b);
  14691. uint32x2_t __c = vtst_u32 (__t_a, __t_b);
  14692. uint32x2_t __m = vpmax_u32 (__c, __c);
  14693. return vreinterpret_u64_u32 (__m);
  14694. }
  14695. __extension__ extern __inline uint8x16_t
  14696. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14697. vaeseq_u8 (uint8x16_t __data, uint8x16_t __key)
  14698. {
  14699. return __builtin_arm_crypto_aese (__data, __key);
  14700. }
  14701. __extension__ extern __inline uint8x16_t
  14702. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14703. vaesdq_u8 (uint8x16_t __data, uint8x16_t __key)
  14704. {
  14705. return __builtin_arm_crypto_aesd (__data, __key);
  14706. }
  14707. __extension__ extern __inline uint8x16_t
  14708. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14709. vaesmcq_u8 (uint8x16_t __data)
  14710. {
  14711. return __builtin_arm_crypto_aesmc (__data);
  14712. }
  14713. __extension__ extern __inline uint8x16_t
  14714. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14715. vaesimcq_u8 (uint8x16_t __data)
  14716. {
  14717. return __builtin_arm_crypto_aesimc (__data);
  14718. }
  14719. __extension__ extern __inline uint32_t
  14720. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14721. vsha1h_u32 (uint32_t __hash_e)
  14722. {
  14723. return vgetq_lane_u32 (__builtin_arm_crypto_sha1h (vdupq_n_u32 (__hash_e)),
  14724. 0);
  14725. }
  14726. __extension__ extern __inline uint32x4_t
  14727. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14728. vsha1cq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
  14729. {
  14730. return __builtin_arm_crypto_sha1c (__hash_abcd, vdupq_n_u32 (__hash_e),
  14731. __wk);
  14732. }
  14733. __extension__ extern __inline uint32x4_t
  14734. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14735. vsha1pq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
  14736. {
  14737. return __builtin_arm_crypto_sha1p (__hash_abcd, vdupq_n_u32 (__hash_e),
  14738. __wk);
  14739. }
  14740. __extension__ extern __inline uint32x4_t
  14741. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14742. vsha1mq_u32 (uint32x4_t __hash_abcd, uint32_t __hash_e, uint32x4_t __wk)
  14743. {
  14744. return __builtin_arm_crypto_sha1m (__hash_abcd, vdupq_n_u32 (__hash_e),
  14745. __wk);
  14746. }
  14747. __extension__ extern __inline uint32x4_t
  14748. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14749. vsha1su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7, uint32x4_t __w8_11)
  14750. {
  14751. return __builtin_arm_crypto_sha1su0 (__w0_3, __w4_7, __w8_11);
  14752. }
  14753. __extension__ extern __inline uint32x4_t
  14754. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14755. vsha1su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w12_15)
  14756. {
  14757. return __builtin_arm_crypto_sha1su1 (__tw0_3, __w12_15);
  14758. }
  14759. __extension__ extern __inline uint32x4_t
  14760. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14761. vsha256hq_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk)
  14762. {
  14763. return __builtin_arm_crypto_sha256h (__hash_abcd, __hash_efgh, __wk);
  14764. }
  14765. __extension__ extern __inline uint32x4_t
  14766. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14767. vsha256h2q_u32 (uint32x4_t __hash_abcd, uint32x4_t __hash_efgh, uint32x4_t __wk)
  14768. {
  14769. return __builtin_arm_crypto_sha256h2 (__hash_abcd, __hash_efgh, __wk);
  14770. }
  14771. __extension__ extern __inline uint32x4_t
  14772. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14773. vsha256su0q_u32 (uint32x4_t __w0_3, uint32x4_t __w4_7)
  14774. {
  14775. return __builtin_arm_crypto_sha256su0 (__w0_3, __w4_7);
  14776. }
  14777. __extension__ extern __inline uint32x4_t
  14778. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14779. vsha256su1q_u32 (uint32x4_t __tw0_3, uint32x4_t __w8_11, uint32x4_t __w12_15)
  14780. {
  14781. return __builtin_arm_crypto_sha256su1 (__tw0_3, __w8_11, __w12_15);
  14782. }
  14783. __extension__ extern __inline poly128_t
  14784. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14785. vmull_p64 (poly64_t __a, poly64_t __b)
  14786. {
  14787. return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __a, (uint64_t) __b);
  14788. }
  14789. __extension__ extern __inline poly128_t
  14790. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14791. vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)
  14792. {
  14793. poly64_t __t1 = vget_high_p64 (__a);
  14794. poly64_t __t2 = vget_high_p64 (__b);
  14795. return (poly128_t) __builtin_arm_crypto_vmullp64 ((uint64_t) __t1, (uint64_t) __t2);
  14796. }
  14797. #pragma GCC pop_options
  14798. /* Intrinsics for FP16 instructions. */
  14799. #pragma GCC push_options
  14800. #pragma GCC target ("fpu=neon-fp-armv8")
  14801. #if defined (__ARM_FEATURE_FP16_VECTOR_ARITHMETIC)
  14802. __extension__ extern __inline float16x4_t
  14803. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14804. vabd_f16 (float16x4_t __a, float16x4_t __b)
  14805. {
  14806. return __builtin_neon_vabdv4hf (__a, __b);
  14807. }
  14808. __extension__ extern __inline float16x8_t
  14809. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14810. vabdq_f16 (float16x8_t __a, float16x8_t __b)
  14811. {
  14812. return __builtin_neon_vabdv8hf (__a, __b);
  14813. }
  14814. __extension__ extern __inline float16x4_t
  14815. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14816. vabs_f16 (float16x4_t __a)
  14817. {
  14818. return __builtin_neon_vabsv4hf (__a);
  14819. }
  14820. __extension__ extern __inline float16x8_t
  14821. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14822. vabsq_f16 (float16x8_t __a)
  14823. {
  14824. return __builtin_neon_vabsv8hf (__a);
  14825. }
  14826. __extension__ extern __inline float16x4_t
  14827. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14828. vadd_f16 (float16x4_t __a, float16x4_t __b)
  14829. {
  14830. #ifdef __FAST_MATH__
  14831. return __a + __b;
  14832. #else
  14833. return __builtin_neon_vaddv4hf (__a, __b);
  14834. #endif
  14835. }
  14836. __extension__ extern __inline float16x8_t
  14837. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14838. vaddq_f16 (float16x8_t __a, float16x8_t __b)
  14839. {
  14840. #ifdef __FAST_MATH__
  14841. return __a + __b;
  14842. #else
  14843. return __builtin_neon_vaddv8hf (__a, __b);
  14844. #endif
  14845. }
  14846. __extension__ extern __inline uint16x4_t
  14847. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14848. vcage_f16 (float16x4_t __a, float16x4_t __b)
  14849. {
  14850. return (uint16x4_t)__builtin_neon_vcagev4hf (__a, __b);
  14851. }
  14852. __extension__ extern __inline uint16x8_t
  14853. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14854. vcageq_f16 (float16x8_t __a, float16x8_t __b)
  14855. {
  14856. return (uint16x8_t)__builtin_neon_vcagev8hf (__a, __b);
  14857. }
  14858. __extension__ extern __inline uint16x4_t
  14859. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14860. vcagt_f16 (float16x4_t __a, float16x4_t __b)
  14861. {
  14862. return (uint16x4_t)__builtin_neon_vcagtv4hf (__a, __b);
  14863. }
  14864. __extension__ extern __inline uint16x8_t
  14865. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14866. vcagtq_f16 (float16x8_t __a, float16x8_t __b)
  14867. {
  14868. return (uint16x8_t)__builtin_neon_vcagtv8hf (__a, __b);
  14869. }
  14870. __extension__ extern __inline uint16x4_t
  14871. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14872. vcale_f16 (float16x4_t __a, float16x4_t __b)
  14873. {
  14874. return (uint16x4_t)__builtin_neon_vcalev4hf (__a, __b);
  14875. }
  14876. __extension__ extern __inline uint16x8_t
  14877. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14878. vcaleq_f16 (float16x8_t __a, float16x8_t __b)
  14879. {
  14880. return (uint16x8_t)__builtin_neon_vcalev8hf (__a, __b);
  14881. }
  14882. __extension__ extern __inline uint16x4_t
  14883. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14884. vcalt_f16 (float16x4_t __a, float16x4_t __b)
  14885. {
  14886. return (uint16x4_t)__builtin_neon_vcaltv4hf (__a, __b);
  14887. }
  14888. __extension__ extern __inline uint16x8_t
  14889. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14890. vcaltq_f16 (float16x8_t __a, float16x8_t __b)
  14891. {
  14892. return (uint16x8_t)__builtin_neon_vcaltv8hf (__a, __b);
  14893. }
  14894. __extension__ extern __inline uint16x4_t
  14895. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14896. vceq_f16 (float16x4_t __a, float16x4_t __b)
  14897. {
  14898. return (uint16x4_t)__builtin_neon_vceqv4hf (__a, __b);
  14899. }
  14900. __extension__ extern __inline uint16x8_t
  14901. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14902. vceqq_f16 (float16x8_t __a, float16x8_t __b)
  14903. {
  14904. return (uint16x8_t)__builtin_neon_vceqv8hf (__a, __b);
  14905. }
  14906. __extension__ extern __inline uint16x4_t
  14907. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14908. vceqz_f16 (float16x4_t __a)
  14909. {
  14910. return (uint16x4_t)__builtin_neon_vceqzv4hf (__a);
  14911. }
  14912. __extension__ extern __inline uint16x8_t
  14913. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14914. vceqzq_f16 (float16x8_t __a)
  14915. {
  14916. return (uint16x8_t)__builtin_neon_vceqzv8hf (__a);
  14917. }
  14918. __extension__ extern __inline uint16x4_t
  14919. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14920. vcge_f16 (float16x4_t __a, float16x4_t __b)
  14921. {
  14922. return (uint16x4_t)__builtin_neon_vcgev4hf (__a, __b);
  14923. }
  14924. __extension__ extern __inline uint16x8_t
  14925. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14926. vcgeq_f16 (float16x8_t __a, float16x8_t __b)
  14927. {
  14928. return (uint16x8_t)__builtin_neon_vcgev8hf (__a, __b);
  14929. }
  14930. __extension__ extern __inline uint16x4_t
  14931. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14932. vcgez_f16 (float16x4_t __a)
  14933. {
  14934. return (uint16x4_t)__builtin_neon_vcgezv4hf (__a);
  14935. }
  14936. __extension__ extern __inline uint16x8_t
  14937. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14938. vcgezq_f16 (float16x8_t __a)
  14939. {
  14940. return (uint16x8_t)__builtin_neon_vcgezv8hf (__a);
  14941. }
  14942. __extension__ extern __inline uint16x4_t
  14943. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14944. vcgt_f16 (float16x4_t __a, float16x4_t __b)
  14945. {
  14946. return (uint16x4_t)__builtin_neon_vcgtv4hf (__a, __b);
  14947. }
  14948. __extension__ extern __inline uint16x8_t
  14949. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14950. vcgtq_f16 (float16x8_t __a, float16x8_t __b)
  14951. {
  14952. return (uint16x8_t)__builtin_neon_vcgtv8hf (__a, __b);
  14953. }
  14954. __extension__ extern __inline uint16x4_t
  14955. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14956. vcgtz_f16 (float16x4_t __a)
  14957. {
  14958. return (uint16x4_t)__builtin_neon_vcgtzv4hf (__a);
  14959. }
  14960. __extension__ extern __inline uint16x8_t
  14961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14962. vcgtzq_f16 (float16x8_t __a)
  14963. {
  14964. return (uint16x8_t)__builtin_neon_vcgtzv8hf (__a);
  14965. }
  14966. __extension__ extern __inline uint16x4_t
  14967. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14968. vcle_f16 (float16x4_t __a, float16x4_t __b)
  14969. {
  14970. return (uint16x4_t)__builtin_neon_vclev4hf (__a, __b);
  14971. }
  14972. __extension__ extern __inline uint16x8_t
  14973. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14974. vcleq_f16 (float16x8_t __a, float16x8_t __b)
  14975. {
  14976. return (uint16x8_t)__builtin_neon_vclev8hf (__a, __b);
  14977. }
  14978. __extension__ extern __inline uint16x4_t
  14979. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14980. vclez_f16 (float16x4_t __a)
  14981. {
  14982. return (uint16x4_t)__builtin_neon_vclezv4hf (__a);
  14983. }
  14984. __extension__ extern __inline uint16x8_t
  14985. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14986. vclezq_f16 (float16x8_t __a)
  14987. {
  14988. return (uint16x8_t)__builtin_neon_vclezv8hf (__a);
  14989. }
  14990. __extension__ extern __inline uint16x4_t
  14991. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14992. vclt_f16 (float16x4_t __a, float16x4_t __b)
  14993. {
  14994. return (uint16x4_t)__builtin_neon_vcltv4hf (__a, __b);
  14995. }
  14996. __extension__ extern __inline uint16x8_t
  14997. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  14998. vcltq_f16 (float16x8_t __a, float16x8_t __b)
  14999. {
  15000. return (uint16x8_t)__builtin_neon_vcltv8hf (__a, __b);
  15001. }
  15002. __extension__ extern __inline uint16x4_t
  15003. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15004. vcltz_f16 (float16x4_t __a)
  15005. {
  15006. return (uint16x4_t)__builtin_neon_vcltzv4hf (__a);
  15007. }
  15008. __extension__ extern __inline uint16x8_t
  15009. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15010. vcltzq_f16 (float16x8_t __a)
  15011. {
  15012. return (uint16x8_t)__builtin_neon_vcltzv8hf (__a);
  15013. }
  15014. __extension__ extern __inline float16x4_t
  15015. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15016. vcvt_f16_s16 (int16x4_t __a)
  15017. {
  15018. return (float16x4_t)__builtin_neon_vcvtsv4hi (__a);
  15019. }
  15020. __extension__ extern __inline float16x4_t
  15021. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15022. vcvt_f16_u16 (uint16x4_t __a)
  15023. {
  15024. return (float16x4_t)__builtin_neon_vcvtuv4hi ((int16x4_t)__a);
  15025. }
  15026. __extension__ extern __inline int16x4_t
  15027. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15028. vcvt_s16_f16 (float16x4_t __a)
  15029. {
  15030. return (int16x4_t)__builtin_neon_vcvtsv4hf (__a);
  15031. }
  15032. __extension__ extern __inline uint16x4_t
  15033. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15034. vcvt_u16_f16 (float16x4_t __a)
  15035. {
  15036. return (uint16x4_t)__builtin_neon_vcvtuv4hf (__a);
  15037. }
  15038. __extension__ extern __inline float16x8_t
  15039. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15040. vcvtq_f16_s16 (int16x8_t __a)
  15041. {
  15042. return (float16x8_t)__builtin_neon_vcvtsv8hi (__a);
  15043. }
  15044. __extension__ extern __inline float16x8_t
  15045. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15046. vcvtq_f16_u16 (uint16x8_t __a)
  15047. {
  15048. return (float16x8_t)__builtin_neon_vcvtuv8hi ((int16x8_t)__a);
  15049. }
  15050. __extension__ extern __inline int16x8_t
  15051. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15052. vcvtq_s16_f16 (float16x8_t __a)
  15053. {
  15054. return (int16x8_t)__builtin_neon_vcvtsv8hf (__a);
  15055. }
  15056. __extension__ extern __inline uint16x8_t
  15057. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15058. vcvtq_u16_f16 (float16x8_t __a)
  15059. {
  15060. return (uint16x8_t)__builtin_neon_vcvtuv8hf (__a);
  15061. }
  15062. __extension__ extern __inline int16x4_t
  15063. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15064. vcvta_s16_f16 (float16x4_t __a)
  15065. {
  15066. return __builtin_neon_vcvtasv4hf (__a);
  15067. }
  15068. __extension__ extern __inline uint16x4_t
  15069. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15070. vcvta_u16_f16 (float16x4_t __a)
  15071. {
  15072. return (uint16x4_t)__builtin_neon_vcvtauv4hf (__a);
  15073. }
  15074. __extension__ extern __inline int16x8_t
  15075. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15076. vcvtaq_s16_f16 (float16x8_t __a)
  15077. {
  15078. return __builtin_neon_vcvtasv8hf (__a);
  15079. }
  15080. __extension__ extern __inline uint16x8_t
  15081. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15082. vcvtaq_u16_f16 (float16x8_t __a)
  15083. {
  15084. return (uint16x8_t)__builtin_neon_vcvtauv8hf (__a);
  15085. }
  15086. __extension__ extern __inline int16x4_t
  15087. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15088. vcvtm_s16_f16 (float16x4_t __a)
  15089. {
  15090. return __builtin_neon_vcvtmsv4hf (__a);
  15091. }
  15092. __extension__ extern __inline uint16x4_t
  15093. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15094. vcvtm_u16_f16 (float16x4_t __a)
  15095. {
  15096. return (uint16x4_t)__builtin_neon_vcvtmuv4hf (__a);
  15097. }
  15098. __extension__ extern __inline int16x8_t
  15099. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15100. vcvtmq_s16_f16 (float16x8_t __a)
  15101. {
  15102. return __builtin_neon_vcvtmsv8hf (__a);
  15103. }
  15104. __extension__ extern __inline uint16x8_t
  15105. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15106. vcvtmq_u16_f16 (float16x8_t __a)
  15107. {
  15108. return (uint16x8_t)__builtin_neon_vcvtmuv8hf (__a);
  15109. }
  15110. __extension__ extern __inline int16x4_t
  15111. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15112. vcvtn_s16_f16 (float16x4_t __a)
  15113. {
  15114. return __builtin_neon_vcvtnsv4hf (__a);
  15115. }
  15116. __extension__ extern __inline uint16x4_t
  15117. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15118. vcvtn_u16_f16 (float16x4_t __a)
  15119. {
  15120. return (uint16x4_t)__builtin_neon_vcvtnuv4hf (__a);
  15121. }
  15122. __extension__ extern __inline int16x8_t
  15123. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15124. vcvtnq_s16_f16 (float16x8_t __a)
  15125. {
  15126. return __builtin_neon_vcvtnsv8hf (__a);
  15127. }
  15128. __extension__ extern __inline uint16x8_t
  15129. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15130. vcvtnq_u16_f16 (float16x8_t __a)
  15131. {
  15132. return (uint16x8_t)__builtin_neon_vcvtnuv8hf (__a);
  15133. }
  15134. __extension__ extern __inline int16x4_t
  15135. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15136. vcvtp_s16_f16 (float16x4_t __a)
  15137. {
  15138. return __builtin_neon_vcvtpsv4hf (__a);
  15139. }
  15140. __extension__ extern __inline uint16x4_t
  15141. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15142. vcvtp_u16_f16 (float16x4_t __a)
  15143. {
  15144. return (uint16x4_t)__builtin_neon_vcvtpuv4hf (__a);
  15145. }
  15146. __extension__ extern __inline int16x8_t
  15147. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15148. vcvtpq_s16_f16 (float16x8_t __a)
  15149. {
  15150. return __builtin_neon_vcvtpsv8hf (__a);
  15151. }
  15152. __extension__ extern __inline uint16x8_t
  15153. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15154. vcvtpq_u16_f16 (float16x8_t __a)
  15155. {
  15156. return (uint16x8_t)__builtin_neon_vcvtpuv8hf (__a);
  15157. }
  15158. __extension__ extern __inline float16x4_t
  15159. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15160. vcvt_n_f16_s16 (int16x4_t __a, const int __b)
  15161. {
  15162. return __builtin_neon_vcvts_nv4hi (__a, __b);
  15163. }
  15164. __extension__ extern __inline float16x4_t
  15165. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15166. vcvt_n_f16_u16 (uint16x4_t __a, const int __b)
  15167. {
  15168. return __builtin_neon_vcvtu_nv4hi ((int16x4_t)__a, __b);
  15169. }
  15170. __extension__ extern __inline float16x8_t
  15171. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15172. vcvtq_n_f16_s16 (int16x8_t __a, const int __b)
  15173. {
  15174. return __builtin_neon_vcvts_nv8hi (__a, __b);
  15175. }
  15176. __extension__ extern __inline float16x8_t
  15177. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15178. vcvtq_n_f16_u16 (uint16x8_t __a, const int __b)
  15179. {
  15180. return __builtin_neon_vcvtu_nv8hi ((int16x8_t)__a, __b);
  15181. }
  15182. __extension__ extern __inline int16x4_t
  15183. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15184. vcvt_n_s16_f16 (float16x4_t __a, const int __b)
  15185. {
  15186. return __builtin_neon_vcvts_nv4hf (__a, __b);
  15187. }
  15188. __extension__ extern __inline uint16x4_t
  15189. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15190. vcvt_n_u16_f16 (float16x4_t __a, const int __b)
  15191. {
  15192. return (uint16x4_t)__builtin_neon_vcvtu_nv4hf (__a, __b);
  15193. }
  15194. __extension__ extern __inline int16x8_t
  15195. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15196. vcvtq_n_s16_f16 (float16x8_t __a, const int __b)
  15197. {
  15198. return __builtin_neon_vcvts_nv8hf (__a, __b);
  15199. }
  15200. __extension__ extern __inline uint16x8_t
  15201. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15202. vcvtq_n_u16_f16 (float16x8_t __a, const int __b)
  15203. {
  15204. return (uint16x8_t)__builtin_neon_vcvtu_nv8hf (__a, __b);
  15205. }
  15206. __extension__ extern __inline float16x4_t
  15207. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15208. vfma_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
  15209. {
  15210. return __builtin_neon_vfmav4hf (__a, __b, __c);
  15211. }
  15212. __extension__ extern __inline float16x8_t
  15213. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15214. vfmaq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  15215. {
  15216. return __builtin_neon_vfmav8hf (__a, __b, __c);
  15217. }
  15218. __extension__ extern __inline float16x4_t
  15219. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15220. vfms_f16 (float16x4_t __a, float16x4_t __b, float16x4_t __c)
  15221. {
  15222. return __builtin_neon_vfmsv4hf (__a, __b, __c);
  15223. }
  15224. __extension__ extern __inline float16x8_t
  15225. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15226. vfmsq_f16 (float16x8_t __a, float16x8_t __b, float16x8_t __c)
  15227. {
  15228. return __builtin_neon_vfmsv8hf (__a, __b, __c);
  15229. }
  15230. __extension__ extern __inline float16x4_t
  15231. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15232. vmax_f16 (float16x4_t __a, float16x4_t __b)
  15233. {
  15234. return __builtin_neon_vmaxfv4hf (__a, __b);
  15235. }
  15236. __extension__ extern __inline float16x8_t
  15237. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15238. vmaxq_f16 (float16x8_t __a, float16x8_t __b)
  15239. {
  15240. return __builtin_neon_vmaxfv8hf (__a, __b);
  15241. }
  15242. __extension__ extern __inline float16x4_t
  15243. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15244. vmaxnm_f16 (float16x4_t __a, float16x4_t __b)
  15245. {
  15246. return __builtin_neon_vmaxnmv4hf (__a, __b);
  15247. }
  15248. __extension__ extern __inline float16x8_t
  15249. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15250. vmaxnmq_f16 (float16x8_t __a, float16x8_t __b)
  15251. {
  15252. return __builtin_neon_vmaxnmv8hf (__a, __b);
  15253. }
  15254. __extension__ extern __inline float16x4_t
  15255. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15256. vmin_f16 (float16x4_t __a, float16x4_t __b)
  15257. {
  15258. return __builtin_neon_vminfv4hf (__a, __b);
  15259. }
  15260. __extension__ extern __inline float16x8_t
  15261. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15262. vminq_f16 (float16x8_t __a, float16x8_t __b)
  15263. {
  15264. return __builtin_neon_vminfv8hf (__a, __b);
  15265. }
  15266. __extension__ extern __inline float16x4_t
  15267. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15268. vminnm_f16 (float16x4_t __a, float16x4_t __b)
  15269. {
  15270. return __builtin_neon_vminnmv4hf (__a, __b);
  15271. }
  15272. __extension__ extern __inline float16x8_t
  15273. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15274. vminnmq_f16 (float16x8_t __a, float16x8_t __b)
  15275. {
  15276. return __builtin_neon_vminnmv8hf (__a, __b);
  15277. }
  15278. __extension__ extern __inline float16x4_t
  15279. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15280. vmul_f16 (float16x4_t __a, float16x4_t __b)
  15281. {
  15282. #ifdef __FAST_MATH__
  15283. return __a * __b;
  15284. #else
  15285. return __builtin_neon_vmulfv4hf (__a, __b);
  15286. #endif
  15287. }
  15288. __extension__ extern __inline float16x4_t
  15289. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15290. vmul_lane_f16 (float16x4_t __a, float16x4_t __b, const int __c)
  15291. {
  15292. return __builtin_neon_vmul_lanev4hf (__a, __b, __c);
  15293. }
  15294. __extension__ extern __inline float16x4_t
  15295. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15296. vmul_n_f16 (float16x4_t __a, float16_t __b)
  15297. {
  15298. return __builtin_neon_vmul_nv4hf (__a, __b);
  15299. }
  15300. __extension__ extern __inline float16x8_t
  15301. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15302. vmulq_f16 (float16x8_t __a, float16x8_t __b)
  15303. {
  15304. #ifdef __FAST_MATH__
  15305. return __a * __b;
  15306. #else
  15307. return __builtin_neon_vmulfv8hf (__a, __b);
  15308. #endif
  15309. }
  15310. __extension__ extern __inline float16x8_t
  15311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15312. vmulq_lane_f16 (float16x8_t __a, float16x4_t __b, const int __c)
  15313. {
  15314. return __builtin_neon_vmul_lanev8hf (__a, __b, __c);
  15315. }
  15316. __extension__ extern __inline float16x8_t
  15317. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15318. vmulq_n_f16 (float16x8_t __a, float16_t __b)
  15319. {
  15320. return __builtin_neon_vmul_nv8hf (__a, __b);
  15321. }
  15322. __extension__ extern __inline float16x4_t
  15323. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15324. vneg_f16 (float16x4_t __a)
  15325. {
  15326. return __builtin_neon_vnegv4hf (__a);
  15327. }
  15328. __extension__ extern __inline float16x8_t
  15329. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15330. vnegq_f16 (float16x8_t __a)
  15331. {
  15332. return __builtin_neon_vnegv8hf (__a);
  15333. }
  15334. __extension__ extern __inline float16x4_t
  15335. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15336. vpadd_f16 (float16x4_t __a, float16x4_t __b)
  15337. {
  15338. return __builtin_neon_vpaddv4hf (__a, __b);
  15339. }
  15340. __extension__ extern __inline float16x4_t
  15341. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15342. vpmax_f16 (float16x4_t __a, float16x4_t __b)
  15343. {
  15344. return __builtin_neon_vpmaxfv4hf (__a, __b);
  15345. }
  15346. __extension__ extern __inline float16x4_t
  15347. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15348. vpmin_f16 (float16x4_t __a, float16x4_t __b)
  15349. {
  15350. return __builtin_neon_vpminfv4hf (__a, __b);
  15351. }
  15352. __extension__ extern __inline float16x4_t
  15353. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15354. vrecpe_f16 (float16x4_t __a)
  15355. {
  15356. return __builtin_neon_vrecpev4hf (__a);
  15357. }
  15358. __extension__ extern __inline float16x8_t
  15359. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15360. vrecpeq_f16 (float16x8_t __a)
  15361. {
  15362. return __builtin_neon_vrecpev8hf (__a);
  15363. }
  15364. __extension__ extern __inline float16x4_t
  15365. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15366. vrnd_f16 (float16x4_t __a)
  15367. {
  15368. return __builtin_neon_vrndv4hf (__a);
  15369. }
  15370. __extension__ extern __inline float16x8_t
  15371. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15372. vrndq_f16 (float16x8_t __a)
  15373. {
  15374. return __builtin_neon_vrndv8hf (__a);
  15375. }
  15376. __extension__ extern __inline float16x4_t
  15377. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15378. vrnda_f16 (float16x4_t __a)
  15379. {
  15380. return __builtin_neon_vrndav4hf (__a);
  15381. }
  15382. __extension__ extern __inline float16x8_t
  15383. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15384. vrndaq_f16 (float16x8_t __a)
  15385. {
  15386. return __builtin_neon_vrndav8hf (__a);
  15387. }
  15388. __extension__ extern __inline float16x4_t
  15389. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15390. vrndm_f16 (float16x4_t __a)
  15391. {
  15392. return __builtin_neon_vrndmv4hf (__a);
  15393. }
  15394. __extension__ extern __inline float16x8_t
  15395. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15396. vrndmq_f16 (float16x8_t __a)
  15397. {
  15398. return __builtin_neon_vrndmv8hf (__a);
  15399. }
  15400. __extension__ extern __inline float16x4_t
  15401. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15402. vrndn_f16 (float16x4_t __a)
  15403. {
  15404. return __builtin_neon_vrndnv4hf (__a);
  15405. }
  15406. __extension__ extern __inline float16x8_t
  15407. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15408. vrndnq_f16 (float16x8_t __a)
  15409. {
  15410. return __builtin_neon_vrndnv8hf (__a);
  15411. }
  15412. __extension__ extern __inline float16x4_t
  15413. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15414. vrndp_f16 (float16x4_t __a)
  15415. {
  15416. return __builtin_neon_vrndpv4hf (__a);
  15417. }
  15418. __extension__ extern __inline float16x8_t
  15419. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15420. vrndpq_f16 (float16x8_t __a)
  15421. {
  15422. return __builtin_neon_vrndpv8hf (__a);
  15423. }
  15424. __extension__ extern __inline float16x4_t
  15425. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15426. vrndx_f16 (float16x4_t __a)
  15427. {
  15428. return __builtin_neon_vrndxv4hf (__a);
  15429. }
  15430. __extension__ extern __inline float16x8_t
  15431. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15432. vrndxq_f16 (float16x8_t __a)
  15433. {
  15434. return __builtin_neon_vrndxv8hf (__a);
  15435. }
  15436. __extension__ extern __inline float16x4_t
  15437. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15438. vrsqrte_f16 (float16x4_t __a)
  15439. {
  15440. return __builtin_neon_vrsqrtev4hf (__a);
  15441. }
  15442. __extension__ extern __inline float16x8_t
  15443. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15444. vrsqrteq_f16 (float16x8_t __a)
  15445. {
  15446. return __builtin_neon_vrsqrtev8hf (__a);
  15447. }
  15448. __extension__ extern __inline float16x4_t
  15449. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15450. vrecps_f16 (float16x4_t __a, float16x4_t __b)
  15451. {
  15452. return __builtin_neon_vrecpsv4hf (__a, __b);
  15453. }
  15454. __extension__ extern __inline float16x8_t
  15455. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15456. vrecpsq_f16 (float16x8_t __a, float16x8_t __b)
  15457. {
  15458. return __builtin_neon_vrecpsv8hf (__a, __b);
  15459. }
  15460. __extension__ extern __inline float16x4_t
  15461. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15462. vrsqrts_f16 (float16x4_t __a, float16x4_t __b)
  15463. {
  15464. return __builtin_neon_vrsqrtsv4hf (__a, __b);
  15465. }
  15466. __extension__ extern __inline float16x8_t
  15467. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15468. vrsqrtsq_f16 (float16x8_t __a, float16x8_t __b)
  15469. {
  15470. return __builtin_neon_vrsqrtsv8hf (__a, __b);
  15471. }
  15472. __extension__ extern __inline float16x4_t
  15473. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15474. vsub_f16 (float16x4_t __a, float16x4_t __b)
  15475. {
  15476. #ifdef __FAST_MATH__
  15477. return __a - __b;
  15478. #else
  15479. return __builtin_neon_vsubv4hf (__a, __b);
  15480. #endif
  15481. }
  15482. __extension__ extern __inline float16x8_t
  15483. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15484. vsubq_f16 (float16x8_t __a, float16x8_t __b)
  15485. {
  15486. #ifdef __FAST_MATH__
  15487. return __a - __b;
  15488. #else
  15489. return __builtin_neon_vsubv8hf (__a, __b);
  15490. #endif
  15491. }
  15492. #endif /* __ARM_FEATURE_VECTOR_FP16_ARITHMETIC. */
  15493. #pragma GCC pop_options
  15494. /* Half-precision data processing intrinsics. */
  15495. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  15496. __extension__ extern __inline float16x4_t
  15497. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15498. vbsl_f16 (uint16x4_t __a, float16x4_t __b, float16x4_t __c)
  15499. {
  15500. return __builtin_neon_vbslv4hf ((int16x4_t)__a, __b, __c);
  15501. }
  15502. __extension__ extern __inline float16x8_t
  15503. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15504. vbslq_f16 (uint16x8_t __a, float16x8_t __b, float16x8_t __c)
  15505. {
  15506. return __builtin_neon_vbslv8hf ((int16x8_t)__a, __b, __c);
  15507. }
  15508. __extension__ extern __inline float16x4_t
  15509. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15510. vdup_n_f16 (float16_t __a)
  15511. {
  15512. return __builtin_neon_vdup_nv4hf (__a);
  15513. }
  15514. __extension__ extern __inline float16x8_t
  15515. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15516. vdupq_n_f16 (float16_t __a)
  15517. {
  15518. return __builtin_neon_vdup_nv8hf (__a);
  15519. }
  15520. __extension__ extern __inline float16x4_t
  15521. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15522. vdup_lane_f16 (float16x4_t __a, const int __b)
  15523. {
  15524. return __builtin_neon_vdup_lanev4hf (__a, __b);
  15525. }
  15526. __extension__ extern __inline float16x8_t
  15527. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15528. vdupq_lane_f16 (float16x4_t __a, const int __b)
  15529. {
  15530. return __builtin_neon_vdup_lanev8hf (__a, __b);
  15531. }
  15532. __extension__ extern __inline float16x4_t
  15533. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15534. vext_f16 (float16x4_t __a, float16x4_t __b, const int __c)
  15535. {
  15536. return __builtin_neon_vextv4hf (__a, __b, __c);
  15537. }
  15538. __extension__ extern __inline float16x8_t
  15539. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15540. vextq_f16 (float16x8_t __a, float16x8_t __b, const int __c)
  15541. {
  15542. return __builtin_neon_vextv8hf (__a, __b, __c);
  15543. }
  15544. __extension__ extern __inline float16x4_t
  15545. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15546. vmov_n_f16 (float16_t __a)
  15547. {
  15548. return __builtin_neon_vdup_nv4hf (__a);
  15549. }
  15550. __extension__ extern __inline float16x8_t
  15551. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15552. vmovq_n_f16 (float16_t __a)
  15553. {
  15554. return __builtin_neon_vdup_nv8hf (__a);
  15555. }
  15556. __extension__ extern __inline float16x4_t
  15557. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15558. vrev64_f16 (float16x4_t __a)
  15559. {
  15560. return (float16x4_t)__builtin_shuffle (__a, (uint16x4_t){ 3, 2, 1, 0 });
  15561. }
  15562. __extension__ extern __inline float16x8_t
  15563. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15564. vrev64q_f16 (float16x8_t __a)
  15565. {
  15566. return
  15567. (float16x8_t)__builtin_shuffle (__a,
  15568. (uint16x8_t){ 3, 2, 1, 0, 7, 6, 5, 4 });
  15569. }
  15570. __extension__ extern __inline float16x4x2_t
  15571. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15572. vtrn_f16 (float16x4_t __a, float16x4_t __b)
  15573. {
  15574. float16x4x2_t __rv;
  15575. #ifdef __ARM_BIG_ENDIAN
  15576. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 5, 1, 7, 3 });
  15577. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 0, 6, 2 });
  15578. #else
  15579. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 4, 2, 6 });
  15580. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 1, 5, 3, 7 });
  15581. #endif
  15582. return __rv;
  15583. }
  15584. __extension__ extern __inline float16x8x2_t
  15585. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15586. vtrnq_f16 (float16x8_t __a, float16x8_t __b)
  15587. {
  15588. float16x8x2_t __rv;
  15589. #ifdef __ARM_BIG_ENDIAN
  15590. __rv.val[0] = __builtin_shuffle (__a, __b,
  15591. (uint16x8_t){ 9, 1, 11, 3, 13, 5, 15, 7 });
  15592. __rv.val[1] = __builtin_shuffle (__a, __b,
  15593. (uint16x8_t){ 8, 0, 10, 2, 12, 4, 14, 6 });
  15594. #else
  15595. __rv.val[0] = __builtin_shuffle (__a, __b,
  15596. (uint16x8_t){ 0, 8, 2, 10, 4, 12, 6, 14 });
  15597. __rv.val[1] = __builtin_shuffle (__a, __b,
  15598. (uint16x8_t){ 1, 9, 3, 11, 5, 13, 7, 15 });
  15599. #endif
  15600. return __rv;
  15601. }
  15602. __extension__ extern __inline float16x4x2_t
  15603. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15604. vuzp_f16 (float16x4_t __a, float16x4_t __b)
  15605. {
  15606. float16x4x2_t __rv;
  15607. #ifdef __ARM_BIG_ENDIAN
  15608. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 5, 7, 1, 3 });
  15609. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 6, 0, 2 });
  15610. #else
  15611. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 2, 4, 6 });
  15612. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 1, 3, 5, 7 });
  15613. #endif
  15614. return __rv;
  15615. }
  15616. __extension__ extern __inline float16x8x2_t
  15617. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15618. vuzpq_f16 (float16x8_t __a, float16x8_t __b)
  15619. {
  15620. float16x8x2_t __rv;
  15621. #ifdef __ARM_BIG_ENDIAN
  15622. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  15623. { 5, 7, 1, 3, 13, 15, 9, 11 });
  15624. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  15625. { 4, 6, 0, 2, 12, 14, 8, 10 });
  15626. #else
  15627. __rv.val[0] = __builtin_shuffle (__a, __b,
  15628. (uint16x8_t){ 0, 2, 4, 6, 8, 10, 12, 14 });
  15629. __rv.val[1] = __builtin_shuffle (__a, __b,
  15630. (uint16x8_t){ 1, 3, 5, 7, 9, 11, 13, 15 });
  15631. #endif
  15632. return __rv;
  15633. }
  15634. __extension__ extern __inline float16x4x2_t
  15635. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15636. vzip_f16 (float16x4_t __a, float16x4_t __b)
  15637. {
  15638. float16x4x2_t __rv;
  15639. #ifdef __ARM_BIG_ENDIAN
  15640. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 6, 2, 7, 3 });
  15641. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 4, 0, 5, 1 });
  15642. #else
  15643. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x4_t){ 0, 4, 1, 5 });
  15644. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x4_t){ 2, 6, 3, 7 });
  15645. #endif
  15646. return __rv;
  15647. }
  15648. __extension__ extern __inline float16x8x2_t
  15649. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15650. vzipq_f16 (float16x8_t __a, float16x8_t __b)
  15651. {
  15652. float16x8x2_t __rv;
  15653. #ifdef __ARM_BIG_ENDIAN
  15654. __rv.val[0] = __builtin_shuffle (__a, __b, (uint16x8_t)
  15655. { 10, 2, 11, 3, 8, 0, 9, 1 });
  15656. __rv.val[1] = __builtin_shuffle (__a, __b, (uint16x8_t)
  15657. { 14, 6, 15, 7, 12, 4, 13, 5 });
  15658. #else
  15659. __rv.val[0] = __builtin_shuffle (__a, __b,
  15660. (uint16x8_t){ 0, 8, 1, 9, 2, 10, 3, 11 });
  15661. __rv.val[1] = __builtin_shuffle (__a, __b,
  15662. (uint16x8_t){ 4, 12, 5, 13, 6, 14, 7, 15 });
  15663. #endif
  15664. return __rv;
  15665. }
  15666. #endif
  15667. /* AdvSIMD Dot Product intrinsics. */
  15668. #if __ARM_ARCH >= 8
  15669. #pragma GCC push_options
  15670. #pragma GCC target ("arch=armv8.2-a+dotprod")
  15671. __extension__ extern __inline uint32x2_t
  15672. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15673. vdot_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b)
  15674. {
  15675. return __builtin_neon_udotv8qi_uuuu (__r, __a, __b);
  15676. }
  15677. __extension__ extern __inline uint32x4_t
  15678. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15679. vdotq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b)
  15680. {
  15681. return __builtin_neon_udotv16qi_uuuu (__r, __a, __b);
  15682. }
  15683. __extension__ extern __inline int32x2_t
  15684. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15685. vdot_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b)
  15686. {
  15687. return __builtin_neon_sdotv8qi (__r, __a, __b);
  15688. }
  15689. __extension__ extern __inline int32x4_t
  15690. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15691. vdotq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b)
  15692. {
  15693. return __builtin_neon_sdotv16qi (__r, __a, __b);
  15694. }
  15695. __extension__ extern __inline uint32x2_t
  15696. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15697. vdot_lane_u32 (uint32x2_t __r, uint8x8_t __a, uint8x8_t __b, const int __index)
  15698. {
  15699. return __builtin_neon_udot_lanev8qi_uuuus (__r, __a, __b, __index);
  15700. }
  15701. __extension__ extern __inline uint32x4_t
  15702. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15703. vdotq_lane_u32 (uint32x4_t __r, uint8x16_t __a, uint8x8_t __b,
  15704. const int __index)
  15705. {
  15706. return __builtin_neon_udot_lanev16qi_uuuus (__r, __a, __b, __index);
  15707. }
  15708. __extension__ extern __inline int32x2_t
  15709. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15710. vdot_lane_s32 (int32x2_t __r, int8x8_t __a, int8x8_t __b, const int __index)
  15711. {
  15712. return __builtin_neon_sdot_lanev8qi (__r, __a, __b, __index);
  15713. }
  15714. __extension__ extern __inline int32x4_t
  15715. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15716. vdotq_lane_s32 (int32x4_t __r, int8x16_t __a, int8x8_t __b, const int __index)
  15717. {
  15718. return __builtin_neon_sdot_lanev16qi (__r, __a, __b, __index);
  15719. }
  15720. #pragma GCC pop_options
  15721. #endif
  15722. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  15723. #pragma GCC push_options
  15724. #pragma GCC target ("arch=armv8.2-a+fp16fml")
  15725. __extension__ extern __inline float32x2_t
  15726. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15727. vfmlal_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
  15728. {
  15729. return __builtin_neon_vfmal_lowv2sf (__r, __a, __b);
  15730. }
  15731. __extension__ extern __inline float32x2_t
  15732. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15733. vfmlsl_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
  15734. {
  15735. return __builtin_neon_vfmsl_lowv2sf (__r, __a, __b);
  15736. }
  15737. __extension__ extern __inline float32x2_t
  15738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15739. vfmlal_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
  15740. {
  15741. return __builtin_neon_vfmal_highv2sf (__r, __a, __b);
  15742. }
  15743. __extension__ extern __inline float32x2_t
  15744. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15745. vfmlsl_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b)
  15746. {
  15747. return __builtin_neon_vfmsl_highv2sf (__r, __a, __b);
  15748. }
  15749. __extension__ extern __inline float32x4_t
  15750. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15751. vfmlalq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
  15752. {
  15753. return __builtin_neon_vfmal_lowv4sf (__r, __a, __b);
  15754. }
  15755. __extension__ extern __inline float32x4_t
  15756. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15757. vfmlslq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
  15758. {
  15759. return __builtin_neon_vfmsl_lowv4sf (__r, __a, __b);
  15760. }
  15761. __extension__ extern __inline float32x4_t
  15762. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15763. vfmlalq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
  15764. {
  15765. return __builtin_neon_vfmal_highv4sf (__r, __a, __b);
  15766. }
  15767. __extension__ extern __inline float32x4_t
  15768. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15769. vfmlslq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b)
  15770. {
  15771. return __builtin_neon_vfmsl_highv4sf (__r, __a, __b);
  15772. }
  15773. __extension__ extern __inline float32x2_t
  15774. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15775. vfmlal_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
  15776. const int __index)
  15777. {
  15778. __builtin_arm_lane_check (4, __index);
  15779. return __builtin_neon_vfmal_lane_lowv2sf (__r, __a, __b, __index);
  15780. }
  15781. __extension__ extern __inline float32x2_t
  15782. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15783. vfmlal_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
  15784. const int __index)
  15785. {
  15786. __builtin_arm_lane_check (4, __index);
  15787. return __builtin_neon_vfmal_lane_highv2sf (__r, __a, __b, __index);
  15788. }
  15789. __extension__ extern __inline float32x4_t
  15790. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15791. vfmlalq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
  15792. const int __index)
  15793. {
  15794. __builtin_arm_lane_check (8, __index);
  15795. return __builtin_neon_vfmal_lane_lowv4sf (__r, __a, __b, __index);
  15796. }
  15797. __extension__ extern __inline float32x4_t
  15798. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15799. vfmlalq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
  15800. const int __index)
  15801. {
  15802. __builtin_arm_lane_check (4, __index);
  15803. return __builtin_neon_vfmal_lane_lowv4hfv4sf (__r, __a, __b, __index);
  15804. }
  15805. __extension__ extern __inline float32x2_t
  15806. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15807. vfmlal_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
  15808. const int __index)
  15809. {
  15810. __builtin_arm_lane_check (8, __index);
  15811. return __builtin_neon_vfmal_lane_lowv8hfv2sf (__r, __a, __b, __index);
  15812. }
  15813. __extension__ extern __inline float32x4_t
  15814. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15815. vfmlalq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
  15816. const int __index)
  15817. {
  15818. __builtin_arm_lane_check (8, __index);
  15819. return __builtin_neon_vfmal_lane_highv4sf (__r, __a, __b, __index);
  15820. }
  15821. __extension__ extern __inline float32x4_t
  15822. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15823. vfmlalq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
  15824. const int __index)
  15825. {
  15826. __builtin_arm_lane_check (4, __index);
  15827. return __builtin_neon_vfmal_lane_highv4hfv4sf (__r, __a, __b, __index);
  15828. }
  15829. __extension__ extern __inline float32x2_t
  15830. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15831. vfmlal_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
  15832. const int __index)
  15833. {
  15834. __builtin_arm_lane_check (8, __index);
  15835. return __builtin_neon_vfmal_lane_highv8hfv2sf (__r, __a, __b, __index);
  15836. }
  15837. __extension__ extern __inline float32x2_t
  15838. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15839. vfmlsl_lane_low_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
  15840. const int __index)
  15841. {
  15842. __builtin_arm_lane_check (4, __index);
  15843. return __builtin_neon_vfmsl_lane_lowv2sf (__r, __a, __b, __index);
  15844. }
  15845. __extension__ extern __inline float32x2_t
  15846. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15847. vfmlsl_lane_high_f16 (float32x2_t __r, float16x4_t __a, float16x4_t __b,
  15848. const int __index)
  15849. {
  15850. __builtin_arm_lane_check (4, __index);
  15851. return __builtin_neon_vfmsl_lane_highv2sf (__r, __a, __b, __index);
  15852. }
  15853. __extension__ extern __inline float32x4_t
  15854. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15855. vfmlslq_laneq_low_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
  15856. const int __index)
  15857. {
  15858. __builtin_arm_lane_check (8, __index);
  15859. return __builtin_neon_vfmsl_lane_lowv4sf (__r, __a, __b, __index);
  15860. }
  15861. __extension__ extern __inline float32x4_t
  15862. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15863. vfmlslq_lane_low_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
  15864. const int __index)
  15865. {
  15866. __builtin_arm_lane_check (4, __index);
  15867. return __builtin_neon_vfmsl_lane_lowv4hfv4sf (__r, __a, __b, __index);
  15868. }
  15869. __extension__ extern __inline float32x2_t
  15870. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15871. vfmlsl_laneq_low_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
  15872. const int __index)
  15873. {
  15874. __builtin_arm_lane_check (8, __index);
  15875. return __builtin_neon_vfmsl_lane_lowv8hfv2sf (__r, __a, __b, __index);
  15876. }
  15877. __extension__ extern __inline float32x4_t
  15878. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15879. vfmlslq_laneq_high_f16 (float32x4_t __r, float16x8_t __a, float16x8_t __b,
  15880. const int __index)
  15881. {
  15882. __builtin_arm_lane_check (8, __index);
  15883. return __builtin_neon_vfmsl_lane_highv4sf (__r, __a, __b, __index);
  15884. }
  15885. __extension__ extern __inline float32x4_t
  15886. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15887. vfmlslq_lane_high_f16 (float32x4_t __r, float16x8_t __a, float16x4_t __b,
  15888. const int __index)
  15889. {
  15890. __builtin_arm_lane_check (4, __index);
  15891. return __builtin_neon_vfmsl_lane_highv4hfv4sf (__r, __a, __b, __index);
  15892. }
  15893. __extension__ extern __inline float32x2_t
  15894. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15895. vfmlsl_laneq_high_f16 (float32x2_t __r, float16x4_t __a, float16x8_t __b,
  15896. const int __index)
  15897. {
  15898. __builtin_arm_lane_check (8, __index);
  15899. return __builtin_neon_vfmsl_lane_highv8hfv2sf (__r, __a, __b, __index);
  15900. }
  15901. #pragma GCC pop_options
  15902. #endif
  15903. /* AdvSIMD Complex numbers intrinsics. */
  15904. #if __ARM_ARCH >= 8
  15905. #pragma GCC push_options
  15906. #pragma GCC target ("arch=armv8.3-a")
  15907. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  15908. #pragma GCC push_options
  15909. #pragma GCC target ("+fp16")
  15910. __extension__ extern __inline float16x4_t
  15911. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15912. vcadd_rot90_f16 (float16x4_t __a, float16x4_t __b)
  15913. {
  15914. return __builtin_neon_vcadd90v4hf (__a, __b);
  15915. }
  15916. __extension__ extern __inline float16x8_t
  15917. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15918. vcaddq_rot90_f16 (float16x8_t __a, float16x8_t __b)
  15919. {
  15920. return __builtin_neon_vcadd90v8hf (__a, __b);
  15921. }
  15922. __extension__ extern __inline float16x4_t
  15923. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15924. vcadd_rot270_f16 (float16x4_t __a, float16x4_t __b)
  15925. {
  15926. return __builtin_neon_vcadd90v4hf (__a, __b);
  15927. }
  15928. __extension__ extern __inline float16x8_t
  15929. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15930. vcaddq_rot270_f16 (float16x8_t __a, float16x8_t __b)
  15931. {
  15932. return __builtin_neon_vcadd90v8hf (__a, __b);
  15933. }
  15934. __extension__ extern __inline float16x4_t
  15935. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15936. vcmla_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
  15937. {
  15938. return __builtin_neon_vcmla0v4hf (__r, __a, __b);
  15939. }
  15940. __extension__ extern __inline float16x8_t
  15941. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15942. vcmlaq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
  15943. {
  15944. return __builtin_neon_vcmla0v8hf (__r, __a, __b);
  15945. }
  15946. __extension__ extern __inline float16x4_t
  15947. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15948. vcmla_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
  15949. const int __index)
  15950. {
  15951. return __builtin_neon_vcmla_lane0v4hf (__r, __a, __b, __index);
  15952. }
  15953. __extension__ extern __inline float16x4_t
  15954. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15955. vcmla_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
  15956. const int __index)
  15957. {
  15958. return __builtin_neon_vcmla_laneq0v4hf (__r, __a, __b, __index);
  15959. }
  15960. __extension__ extern __inline float16x8_t
  15961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15962. vcmlaq_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
  15963. const int __index)
  15964. {
  15965. return __builtin_neon_vcmlaq_lane0v8hf (__r, __a, __b, __index);
  15966. }
  15967. __extension__ extern __inline float16x8_t
  15968. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15969. vcmlaq_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
  15970. const int __index)
  15971. {
  15972. return __builtin_neon_vcmla_lane0v8hf (__r, __a, __b, __index);
  15973. }
  15974. __extension__ extern __inline float16x4_t
  15975. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15976. vcmla_rot90_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
  15977. {
  15978. return __builtin_neon_vcmla90v4hf (__r, __a, __b);
  15979. }
  15980. __extension__ extern __inline float16x8_t
  15981. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15982. vcmlaq_rot90_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
  15983. {
  15984. return __builtin_neon_vcmla90v8hf (__r, __a, __b);
  15985. }
  15986. __extension__ extern __inline float16x4_t
  15987. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15988. vcmla_rot90_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
  15989. const int __index)
  15990. {
  15991. return __builtin_neon_vcmla_lane90v4hf (__r, __a, __b, __index);
  15992. }
  15993. __extension__ extern __inline float16x4_t
  15994. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  15995. vcmla_rot90_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
  15996. const int __index)
  15997. {
  15998. return __builtin_neon_vcmla_laneq90v4hf (__r, __a, __b, __index);
  15999. }
  16000. __extension__ extern __inline float16x8_t
  16001. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16002. vcmlaq_rot90_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
  16003. const int __index)
  16004. {
  16005. return __builtin_neon_vcmlaq_lane90v8hf (__r, __a, __b, __index);
  16006. }
  16007. __extension__ extern __inline float16x8_t
  16008. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16009. vcmlaq_rot90_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
  16010. const int __index)
  16011. {
  16012. return __builtin_neon_vcmla_lane90v8hf (__r, __a, __b, __index);
  16013. }
  16014. __extension__ extern __inline float16x4_t
  16015. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16016. vcmla_rot180_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
  16017. {
  16018. return __builtin_neon_vcmla180v4hf (__r, __a, __b);
  16019. }
  16020. __extension__ extern __inline float16x8_t
  16021. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16022. vcmlaq_rot180_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
  16023. {
  16024. return __builtin_neon_vcmla180v8hf (__r, __a, __b);
  16025. }
  16026. __extension__ extern __inline float16x4_t
  16027. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16028. vcmla_rot180_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
  16029. const int __index)
  16030. {
  16031. return __builtin_neon_vcmla_lane180v4hf (__r, __a, __b, __index);
  16032. }
  16033. __extension__ extern __inline float16x4_t
  16034. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16035. vcmla_rot180_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
  16036. const int __index)
  16037. {
  16038. return __builtin_neon_vcmla_laneq180v4hf (__r, __a, __b, __index);
  16039. }
  16040. __extension__ extern __inline float16x8_t
  16041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16042. vcmlaq_rot180_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
  16043. const int __index)
  16044. {
  16045. return __builtin_neon_vcmlaq_lane180v8hf (__r, __a, __b, __index);
  16046. }
  16047. __extension__ extern __inline float16x8_t
  16048. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16049. vcmlaq_rot180_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
  16050. const int __index)
  16051. {
  16052. return __builtin_neon_vcmla_lane180v8hf (__r, __a, __b, __index);
  16053. }
  16054. __extension__ extern __inline float16x4_t
  16055. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16056. vcmla_rot270_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b)
  16057. {
  16058. return __builtin_neon_vcmla270v4hf (__r, __a, __b);
  16059. }
  16060. __extension__ extern __inline float16x8_t
  16061. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16062. vcmlaq_rot270_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b)
  16063. {
  16064. return __builtin_neon_vcmla270v8hf (__r, __a, __b);
  16065. }
  16066. __extension__ extern __inline float16x4_t
  16067. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16068. vcmla_rot270_lane_f16 (float16x4_t __r, float16x4_t __a, float16x4_t __b,
  16069. const int __index)
  16070. {
  16071. return __builtin_neon_vcmla_lane270v4hf (__r, __a, __b, __index);
  16072. }
  16073. __extension__ extern __inline float16x4_t
  16074. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16075. vcmla_rot270_laneq_f16 (float16x4_t __r, float16x4_t __a, float16x8_t __b,
  16076. const int __index)
  16077. {
  16078. return __builtin_neon_vcmla_laneq270v4hf (__r, __a, __b, __index);
  16079. }
  16080. __extension__ extern __inline float16x8_t
  16081. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16082. vcmlaq_rot270_lane_f16 (float16x8_t __r, float16x8_t __a, float16x4_t __b,
  16083. const int __index)
  16084. {
  16085. return __builtin_neon_vcmlaq_lane270v8hf (__r, __a, __b, __index);
  16086. }
  16087. __extension__ extern __inline float16x8_t
  16088. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16089. vcmlaq_rot270_laneq_f16 (float16x8_t __r, float16x8_t __a, float16x8_t __b,
  16090. const int __index)
  16091. {
  16092. return __builtin_neon_vcmla_lane270v8hf (__r, __a, __b, __index);
  16093. }
  16094. #pragma GCC pop_options
  16095. #endif
  16096. __extension__ extern __inline float32x2_t
  16097. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16098. vcadd_rot90_f32 (float32x2_t __a, float32x2_t __b)
  16099. {
  16100. return __builtin_neon_vcadd90v2sf (__a, __b);
  16101. }
  16102. __extension__ extern __inline float32x4_t
  16103. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16104. vcaddq_rot90_f32 (float32x4_t __a, float32x4_t __b)
  16105. {
  16106. return __builtin_neon_vcadd90v4sf (__a, __b);
  16107. }
  16108. __extension__ extern __inline float32x2_t
  16109. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16110. vcadd_rot270_f32 (float32x2_t __a, float32x2_t __b)
  16111. {
  16112. return __builtin_neon_vcadd90v2sf (__a, __b);
  16113. }
  16114. __extension__ extern __inline float32x4_t
  16115. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16116. vcaddq_rot270_f32 (float32x4_t __a, float32x4_t __b)
  16117. {
  16118. return __builtin_neon_vcadd90v4sf (__a, __b);
  16119. }
  16120. __extension__ extern __inline float32x2_t
  16121. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16122. vcmla_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
  16123. {
  16124. return __builtin_neon_vcmla0v2sf (__r, __a, __b);
  16125. }
  16126. __extension__ extern __inline float32x4_t
  16127. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16128. vcmlaq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
  16129. {
  16130. return __builtin_neon_vcmla0v4sf (__r, __a, __b);
  16131. }
  16132. __extension__ extern __inline float32x2_t
  16133. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16134. vcmla_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
  16135. const int __index)
  16136. {
  16137. return __builtin_neon_vcmla_lane0v2sf (__r, __a, __b, __index);
  16138. }
  16139. __extension__ extern __inline float32x2_t
  16140. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16141. vcmla_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
  16142. const int __index)
  16143. {
  16144. return __builtin_neon_vcmla_laneq0v2sf (__r, __a, __b, __index);
  16145. }
  16146. __extension__ extern __inline float32x4_t
  16147. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16148. vcmlaq_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
  16149. const int __index)
  16150. {
  16151. return __builtin_neon_vcmlaq_lane0v4sf (__r, __a, __b, __index);
  16152. }
  16153. __extension__ extern __inline float32x4_t
  16154. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16155. vcmlaq_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
  16156. const int __index)
  16157. {
  16158. return __builtin_neon_vcmla_lane0v4sf (__r, __a, __b, __index);
  16159. }
  16160. __extension__ extern __inline float32x2_t
  16161. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16162. vcmla_rot90_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
  16163. {
  16164. return __builtin_neon_vcmla90v2sf (__r, __a, __b);
  16165. }
  16166. __extension__ extern __inline float32x4_t
  16167. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16168. vcmlaq_rot90_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
  16169. {
  16170. return __builtin_neon_vcmla90v4sf (__r, __a, __b);
  16171. }
  16172. __extension__ extern __inline float32x2_t
  16173. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16174. vcmla_rot90_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
  16175. const int __index)
  16176. {
  16177. return __builtin_neon_vcmla_lane90v2sf (__r, __a, __b, __index);
  16178. }
  16179. __extension__ extern __inline float32x2_t
  16180. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16181. vcmla_rot90_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
  16182. const int __index)
  16183. {
  16184. return __builtin_neon_vcmla_laneq90v2sf (__r, __a, __b, __index);
  16185. }
  16186. __extension__ extern __inline float32x4_t
  16187. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16188. vcmlaq_rot90_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
  16189. const int __index)
  16190. {
  16191. return __builtin_neon_vcmlaq_lane90v4sf (__r, __a, __b, __index);
  16192. }
  16193. __extension__ extern __inline float32x4_t
  16194. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16195. vcmlaq_rot90_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
  16196. const int __index)
  16197. {
  16198. return __builtin_neon_vcmla_lane90v4sf (__r, __a, __b, __index);
  16199. }
  16200. __extension__ extern __inline float32x2_t
  16201. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16202. vcmla_rot180_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
  16203. {
  16204. return __builtin_neon_vcmla180v2sf (__r, __a, __b);
  16205. }
  16206. __extension__ extern __inline float32x4_t
  16207. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16208. vcmlaq_rot180_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
  16209. {
  16210. return __builtin_neon_vcmla180v4sf (__r, __a, __b);
  16211. }
  16212. __extension__ extern __inline float32x2_t
  16213. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16214. vcmla_rot180_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
  16215. const int __index)
  16216. {
  16217. return __builtin_neon_vcmla_lane180v2sf (__r, __a, __b, __index);
  16218. }
  16219. __extension__ extern __inline float32x2_t
  16220. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16221. vcmla_rot180_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
  16222. const int __index)
  16223. {
  16224. return __builtin_neon_vcmla_laneq180v2sf (__r, __a, __b, __index);
  16225. }
  16226. __extension__ extern __inline float32x4_t
  16227. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16228. vcmlaq_rot180_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
  16229. const int __index)
  16230. {
  16231. return __builtin_neon_vcmlaq_lane180v4sf (__r, __a, __b, __index);
  16232. }
  16233. __extension__ extern __inline float32x4_t
  16234. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16235. vcmlaq_rot180_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
  16236. const int __index)
  16237. {
  16238. return __builtin_neon_vcmla_lane180v4sf (__r, __a, __b, __index);
  16239. }
  16240. __extension__ extern __inline float32x2_t
  16241. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16242. vcmla_rot270_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b)
  16243. {
  16244. return __builtin_neon_vcmla270v2sf (__r, __a, __b);
  16245. }
  16246. __extension__ extern __inline float32x4_t
  16247. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16248. vcmlaq_rot270_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b)
  16249. {
  16250. return __builtin_neon_vcmla270v4sf (__r, __a, __b);
  16251. }
  16252. __extension__ extern __inline float32x2_t
  16253. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16254. vcmla_rot270_lane_f32 (float32x2_t __r, float32x2_t __a, float32x2_t __b,
  16255. const int __index)
  16256. {
  16257. return __builtin_neon_vcmla_lane270v2sf (__r, __a, __b, __index);
  16258. }
  16259. __extension__ extern __inline float32x2_t
  16260. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16261. vcmla_rot270_laneq_f32 (float32x2_t __r, float32x2_t __a, float32x4_t __b,
  16262. const int __index)
  16263. {
  16264. return __builtin_neon_vcmla_laneq270v2sf (__r, __a, __b, __index);
  16265. }
  16266. __extension__ extern __inline float32x4_t
  16267. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16268. vcmlaq_rot270_lane_f32 (float32x4_t __r, float32x4_t __a, float32x2_t __b,
  16269. const int __index)
  16270. {
  16271. return __builtin_neon_vcmlaq_lane270v4sf (__r, __a, __b, __index);
  16272. }
  16273. __extension__ extern __inline float32x4_t
  16274. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16275. vcmlaq_rot270_laneq_f32 (float32x4_t __r, float32x4_t __a, float32x4_t __b,
  16276. const int __index)
  16277. {
  16278. return __builtin_neon_vcmla_lane270v4sf (__r, __a, __b, __index);
  16279. }
  16280. /* AdvSIMD Matrix Multiply-Accumulate and Dot Product intrinsics. */
  16281. #pragma GCC push_options
  16282. #pragma GCC target ("arch=armv8.2-a+i8mm")
  16283. __extension__ extern __inline int32x2_t
  16284. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16285. vusdot_s32 (int32x2_t __r, uint8x8_t __a, int8x8_t __b)
  16286. {
  16287. return __builtin_neon_usdotv8qi_ssus (__r, __a, __b);
  16288. }
  16289. __extension__ extern __inline int32x2_t
  16290. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16291. vusdot_lane_s32 (int32x2_t __r, uint8x8_t __a,
  16292. int8x8_t __b, const int __index)
  16293. {
  16294. return __builtin_neon_usdot_lanev8qi_ssuss (__r, __a, __b, __index);
  16295. }
  16296. __extension__ extern __inline int32x4_t
  16297. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16298. vusdotq_lane_s32 (int32x4_t __r, uint8x16_t __a,
  16299. int8x8_t __b, const int __index)
  16300. {
  16301. return __builtin_neon_usdot_lanev16qi_ssuss (__r, __a, __b, __index);
  16302. }
  16303. __extension__ extern __inline int32x2_t
  16304. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16305. vsudot_lane_s32 (int32x2_t __r, int8x8_t __a,
  16306. uint8x8_t __b, const int __index)
  16307. {
  16308. return __builtin_neon_sudot_lanev8qi_sssus (__r, __a, __b, __index);
  16309. }
  16310. __extension__ extern __inline int32x4_t
  16311. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16312. vsudotq_lane_s32 (int32x4_t __r, int8x16_t __a,
  16313. uint8x8_t __b, const int __index)
  16314. {
  16315. return __builtin_neon_sudot_lanev16qi_sssus (__r, __a, __b, __index);
  16316. }
  16317. #pragma GCC pop_options
  16318. #pragma GCC pop_options
  16319. #endif
  16320. /* AdvSIMD 8-bit Integer Matrix Multiply (I8MM) intrinsics. */
  16321. #pragma GCC push_options
  16322. #pragma GCC target ("arch=armv8.2-a+i8mm")
  16323. __extension__ extern __inline int32x4_t
  16324. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16325. vmmlaq_s32 (int32x4_t __r, int8x16_t __a, int8x16_t __b)
  16326. {
  16327. return __builtin_neon_smmlav16qi (__r, __a, __b);
  16328. }
  16329. __extension__ extern __inline uint32x4_t
  16330. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16331. vmmlaq_u32 (uint32x4_t __r, uint8x16_t __a, uint8x16_t __b)
  16332. {
  16333. return __builtin_neon_ummlav16qi_uuuu (__r, __a, __b);
  16334. }
  16335. __extension__ extern __inline int32x4_t
  16336. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16337. vusmmlaq_s32 (int32x4_t __r, uint8x16_t __a, int8x16_t __b)
  16338. {
  16339. return __builtin_neon_usmmlav16qi_ssus (__r, __a, __b);
  16340. }
  16341. #pragma GCC pop_options
  16342. /* AdvSIMD Brain half-precision float-point (Bfloat16) intrinsics. */
  16343. #pragma GCC push_options
  16344. #pragma GCC target ("arch=armv8.2-a+bf16")
  16345. __extension__ extern __inline bfloat16x4_t
  16346. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16347. vcreate_bf16 (uint64_t __a)
  16348. {
  16349. return (bfloat16x4_t) __a;
  16350. }
  16351. __extension__ extern __inline bfloat16x4_t
  16352. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16353. vdup_n_bf16 (bfloat16_t __a)
  16354. {
  16355. return __builtin_neon_vdup_nv4bf (__a);
  16356. }
  16357. __extension__ extern __inline bfloat16x8_t
  16358. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16359. vdupq_n_bf16 (bfloat16_t __a)
  16360. {
  16361. return __builtin_neon_vdup_nv8bf (__a);
  16362. }
  16363. __extension__ extern __inline bfloat16x4_t
  16364. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16365. vdup_lane_bf16 (bfloat16x4_t __a, const int __b)
  16366. {
  16367. return __builtin_neon_vdup_lanev4bf (__a, __b);
  16368. }
  16369. __extension__ extern __inline bfloat16x8_t
  16370. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16371. vdupq_lane_bf16 (bfloat16x4_t __a, const int __b)
  16372. {
  16373. return __builtin_neon_vdup_lanev8bf (__a, __b);
  16374. }
  16375. #define vset_lane_bf16(__e, __v, __idx) \
  16376. __extension__ \
  16377. ({ \
  16378. bfloat16_t __elem = (__e); \
  16379. bfloat16x4_t __vec = (__v); \
  16380. __builtin_arm_lane_check (4, __idx); \
  16381. __vec[__arm_lane(__vec, __idx)] = __elem; \
  16382. __vec; \
  16383. })
  16384. #define vsetq_lane_bf16(__e, __v, __idx) \
  16385. __extension__ \
  16386. ({ \
  16387. bfloat16_t __elem = (__e); \
  16388. bfloat16x8_t __vec = (__v); \
  16389. __builtin_arm_lane_check (8, __idx); \
  16390. __vec[__arm_laneq(__vec, __idx)] = __elem; \
  16391. __vec; \
  16392. })
  16393. #define vget_lane_bf16(__v, __idx) \
  16394. __extension__ \
  16395. ({ \
  16396. bfloat16x4_t __vec = (__v); \
  16397. __builtin_arm_lane_check (4, __idx); \
  16398. bfloat16_t __res = __vec[__arm_lane(__vec, __idx)]; \
  16399. __res; \
  16400. })
  16401. #define vgetq_lane_bf16(__v, __idx) \
  16402. __extension__ \
  16403. ({ \
  16404. bfloat16x8_t __vec = (__v); \
  16405. __builtin_arm_lane_check (8, __idx); \
  16406. bfloat16_t __res = __vec[__arm_laneq(__vec, __idx)]; \
  16407. __res; \
  16408. })
  16409. __extension__ extern __inline bfloat16x4_t
  16410. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16411. vdup_laneq_bf16 (bfloat16x8_t __a, const int __b)
  16412. {
  16413. return vdup_n_bf16( vgetq_lane_bf16 (__a, __b));
  16414. }
  16415. __extension__ extern __inline bfloat16x8_t
  16416. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16417. vdupq_laneq_bf16 (bfloat16x8_t __a, const int __b)
  16418. {
  16419. return vdupq_n_bf16( vgetq_lane_bf16 (__a, __b));
  16420. }
  16421. __extension__ extern __inline bfloat16_t
  16422. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16423. vduph_lane_bf16 (bfloat16x4_t __a, const int __b)
  16424. {
  16425. return vget_lane_bf16 (__a, __b);
  16426. }
  16427. __extension__ extern __inline bfloat16_t
  16428. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16429. vduph_laneq_bf16 (bfloat16x8_t __a, const int __b)
  16430. {
  16431. return vgetq_lane_bf16 (__a, __b);
  16432. }
  16433. __extension__ extern __inline bfloat16x4_t
  16434. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16435. vget_high_bf16 (bfloat16x8_t __a)
  16436. {
  16437. return __builtin_neon_vget_highv8bf (__a);
  16438. }
  16439. __extension__ extern __inline bfloat16x4_t
  16440. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16441. vget_low_bf16 (bfloat16x8_t __a)
  16442. {
  16443. return __builtin_neon_vget_lowv8bf (__a);
  16444. }
  16445. __extension__ extern __inline bfloat16x8_t
  16446. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16447. vcombine_bf16 (bfloat16x4_t __a, bfloat16x4_t __b)
  16448. {
  16449. return __builtin_neon_vcombinev4bf (__a, __b);
  16450. }
  16451. __extension__ extern __inline bfloat16x4_t
  16452. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16453. vreinterpret_bf16_u8 (uint8x8_t __a)
  16454. {
  16455. return (bfloat16x4_t)__a;
  16456. }
  16457. __extension__ extern __inline bfloat16x4_t
  16458. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16459. vreinterpret_bf16_u16 (uint16x4_t __a)
  16460. {
  16461. return (bfloat16x4_t)__a;
  16462. }
  16463. __extension__ extern __inline bfloat16x4_t
  16464. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16465. vreinterpret_bf16_u32 (uint32x2_t __a)
  16466. {
  16467. return (bfloat16x4_t)__a;
  16468. }
  16469. __extension__ extern __inline bfloat16x4_t
  16470. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16471. vreinterpret_bf16_u64 (uint64x1_t __a)
  16472. {
  16473. return (bfloat16x4_t)__a;
  16474. }
  16475. __extension__ extern __inline bfloat16x4_t
  16476. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16477. vreinterpret_bf16_s8 (int8x8_t __a)
  16478. {
  16479. return (bfloat16x4_t)__a;
  16480. }
  16481. __extension__ extern __inline bfloat16x4_t
  16482. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16483. vreinterpret_bf16_s16 (int16x4_t __a)
  16484. {
  16485. return (bfloat16x4_t)__a;
  16486. }
  16487. __extension__ extern __inline bfloat16x4_t
  16488. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16489. vreinterpret_bf16_s32 (int32x2_t __a)
  16490. {
  16491. return (bfloat16x4_t)__a;
  16492. }
  16493. __extension__ extern __inline bfloat16x4_t
  16494. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16495. vreinterpret_bf16_s64 (int64x1_t __a)
  16496. {
  16497. return (bfloat16x4_t)__a;
  16498. }
  16499. __extension__ extern __inline bfloat16x4_t
  16500. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16501. vreinterpret_bf16_p8 (poly8x8_t __a)
  16502. {
  16503. return (bfloat16x4_t)__a;
  16504. }
  16505. __extension__ extern __inline bfloat16x4_t
  16506. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16507. vreinterpret_bf16_p16 (poly16x4_t __a)
  16508. {
  16509. return (bfloat16x4_t)__a;
  16510. }
  16511. __extension__ extern __inline bfloat16x4_t
  16512. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16513. vreinterpret_bf16_p64 (poly64x1_t __a)
  16514. {
  16515. return (bfloat16x4_t)__a;
  16516. }
  16517. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  16518. __extension__ extern __inline bfloat16x4_t
  16519. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16520. vreinterpret_bf16_f16 (float16x4_t __a)
  16521. {
  16522. return (bfloat16x4_t)__a;
  16523. }
  16524. #endif
  16525. __extension__ extern __inline bfloat16x4_t
  16526. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16527. vreinterpret_bf16_f32 (float32x2_t __a)
  16528. {
  16529. return (bfloat16x4_t)__a;
  16530. }
  16531. __extension__ extern __inline bfloat16x8_t
  16532. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16533. vreinterpretq_bf16_u8 (uint8x16_t __a)
  16534. {
  16535. return (bfloat16x8_t)__a;
  16536. }
  16537. __extension__ extern __inline bfloat16x8_t
  16538. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16539. vreinterpretq_bf16_u16 (uint16x8_t __a)
  16540. {
  16541. return (bfloat16x8_t)__a;
  16542. }
  16543. __extension__ extern __inline bfloat16x8_t
  16544. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16545. vreinterpretq_bf16_u32 (uint32x4_t __a)
  16546. {
  16547. return (bfloat16x8_t)__a;
  16548. }
  16549. __extension__ extern __inline bfloat16x8_t
  16550. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16551. vreinterpretq_bf16_u64 (uint64x2_t __a)
  16552. {
  16553. return (bfloat16x8_t)__a;
  16554. }
  16555. __extension__ extern __inline bfloat16x8_t
  16556. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16557. vreinterpretq_bf16_s8 (int8x16_t __a)
  16558. {
  16559. return (bfloat16x8_t)__a;
  16560. }
  16561. __extension__ extern __inline bfloat16x8_t
  16562. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16563. vreinterpretq_bf16_s16 (int16x8_t __a)
  16564. {
  16565. return (bfloat16x8_t)__a;
  16566. }
  16567. __extension__ extern __inline bfloat16x8_t
  16568. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16569. vreinterpretq_bf16_s32 (int32x4_t __a)
  16570. {
  16571. return (bfloat16x8_t)__a;
  16572. }
  16573. __extension__ extern __inline bfloat16x8_t
  16574. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16575. vreinterpretq_bf16_s64 (int64x2_t __a)
  16576. {
  16577. return (bfloat16x8_t)__a;
  16578. }
  16579. __extension__ extern __inline bfloat16x8_t
  16580. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16581. vreinterpretq_bf16_p8 (poly8x16_t __a)
  16582. {
  16583. return (bfloat16x8_t)__a;
  16584. }
  16585. __extension__ extern __inline bfloat16x8_t
  16586. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16587. vreinterpretq_bf16_p16 (poly16x8_t __a)
  16588. {
  16589. return (bfloat16x8_t)__a;
  16590. }
  16591. __extension__ extern __inline bfloat16x8_t
  16592. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16593. vreinterpretq_bf16_p64 (poly64x2_t __a)
  16594. {
  16595. return (bfloat16x8_t)__a;
  16596. }
  16597. __extension__ extern __inline bfloat16x8_t
  16598. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16599. vreinterpretq_bf16_p128 (poly128_t __a)
  16600. {
  16601. return (bfloat16x8_t)__a;
  16602. }
  16603. #if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
  16604. __extension__ extern __inline bfloat16x8_t
  16605. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16606. vreinterpretq_bf16_f16 (float16x8_t __a)
  16607. {
  16608. return (bfloat16x8_t)__a;
  16609. }
  16610. #endif
  16611. __extension__ extern __inline bfloat16x8_t
  16612. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16613. vreinterpretq_bf16_f32 (float32x4_t __a)
  16614. {
  16615. return (bfloat16x8_t)__a;
  16616. }
  16617. __extension__ extern __inline int8x8_t
  16618. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16619. vreinterpret_s8_bf16 (bfloat16x4_t __a)
  16620. {
  16621. return (int8x8_t)__a;
  16622. }
  16623. __extension__ extern __inline int16x4_t
  16624. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16625. vreinterpret_s16_bf16 (bfloat16x4_t __a)
  16626. {
  16627. return (int16x4_t)__a;
  16628. }
  16629. __extension__ extern __inline int32x2_t
  16630. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16631. vreinterpret_s32_bf16 (bfloat16x4_t __a)
  16632. {
  16633. return (int32x2_t)__a;
  16634. }
  16635. __extension__ extern __inline int64x1_t
  16636. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16637. vreinterpret_s64_bf16 (bfloat16x4_t __a)
  16638. {
  16639. return (int64x1_t)__a;
  16640. }
  16641. __extension__ extern __inline uint8x8_t
  16642. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16643. vreinterpret_u8_bf16 (bfloat16x4_t __a)
  16644. {
  16645. return (uint8x8_t)__a;
  16646. }
  16647. __extension__ extern __inline uint16x4_t
  16648. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16649. vreinterpret_u16_bf16 (bfloat16x4_t __a)
  16650. {
  16651. return (uint16x4_t)__a;
  16652. }
  16653. __extension__ extern __inline uint32x2_t
  16654. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16655. vreinterpret_u32_bf16 (bfloat16x4_t __a)
  16656. {
  16657. return (uint32x2_t)__a;
  16658. }
  16659. __extension__ extern __inline uint64x1_t
  16660. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16661. vreinterpret_u64_bf16 (bfloat16x4_t __a)
  16662. {
  16663. return (uint64x1_t)__a;
  16664. }
  16665. __extension__ extern __inline float32x2_t
  16666. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16667. vreinterpret_f32_bf16 (bfloat16x4_t __a)
  16668. {
  16669. return (float32x2_t)__a;
  16670. }
  16671. __extension__ extern __inline poly8x8_t
  16672. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16673. vreinterpret_p8_bf16 (bfloat16x4_t __a)
  16674. {
  16675. return (poly8x8_t)__a;
  16676. }
  16677. __extension__ extern __inline poly16x4_t
  16678. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16679. vreinterpret_p16_bf16 (bfloat16x4_t __a)
  16680. {
  16681. return (poly16x4_t)__a;
  16682. }
  16683. __extension__ extern __inline poly64x1_t
  16684. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16685. vreinterpret_p64_bf16 (bfloat16x4_t __a)
  16686. {
  16687. return (poly64x1_t)__a;
  16688. }
  16689. __extension__ extern __inline int8x16_t
  16690. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16691. vreinterpretq_s8_bf16 (bfloat16x8_t __a)
  16692. {
  16693. return (int8x16_t)__a;
  16694. }
  16695. __extension__ extern __inline int16x8_t
  16696. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16697. vreinterpretq_s16_bf16 (bfloat16x8_t __a)
  16698. {
  16699. return (int16x8_t)__a;
  16700. }
  16701. __extension__ extern __inline int32x4_t
  16702. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16703. vreinterpretq_s32_bf16 (bfloat16x8_t __a)
  16704. {
  16705. return (int32x4_t)__a;
  16706. }
  16707. __extension__ extern __inline int64x2_t
  16708. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16709. vreinterpretq_s64_bf16 (bfloat16x8_t __a)
  16710. {
  16711. return (int64x2_t)__a;
  16712. }
  16713. __extension__ extern __inline uint8x16_t
  16714. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16715. vreinterpretq_u8_bf16 (bfloat16x8_t __a)
  16716. {
  16717. return (uint8x16_t)__a;
  16718. }
  16719. __extension__ extern __inline uint16x8_t
  16720. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16721. vreinterpretq_u16_bf16 (bfloat16x8_t __a)
  16722. {
  16723. return (uint16x8_t)__a;
  16724. }
  16725. __extension__ extern __inline uint32x4_t
  16726. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16727. vreinterpretq_u32_bf16 (bfloat16x8_t __a)
  16728. {
  16729. return (uint32x4_t)__a;
  16730. }
  16731. __extension__ extern __inline uint64x2_t
  16732. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16733. vreinterpretq_u64_bf16 (bfloat16x8_t __a)
  16734. {
  16735. return (uint64x2_t)__a;
  16736. }
  16737. __extension__ extern __inline float32x4_t
  16738. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16739. vreinterpretq_f32_bf16 (bfloat16x8_t __a)
  16740. {
  16741. return (float32x4_t)__a;
  16742. }
  16743. __extension__ extern __inline poly8x16_t
  16744. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16745. vreinterpretq_p8_bf16 (bfloat16x8_t __a)
  16746. {
  16747. return (poly8x16_t)__a;
  16748. }
  16749. __extension__ extern __inline poly16x8_t
  16750. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16751. vreinterpretq_p16_bf16 (bfloat16x8_t __a)
  16752. {
  16753. return (poly16x8_t)__a;
  16754. }
  16755. __extension__ extern __inline poly64x2_t
  16756. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16757. vreinterpretq_p64_bf16 (bfloat16x8_t __a)
  16758. {
  16759. return (poly64x2_t)__a;
  16760. }
  16761. __extension__ extern __inline poly128_t
  16762. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16763. vreinterpretq_p128_bf16 (bfloat16x8_t __a)
  16764. {
  16765. return (poly128_t)__a;
  16766. }
  16767. __extension__ extern __inline float32x2_t
  16768. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16769. vbfdot_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x4_t __b)
  16770. {
  16771. return __builtin_neon_vbfdotv2sf (__r, __a, __b);
  16772. }
  16773. __extension__ extern __inline float32x4_t
  16774. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16775. vbfdotq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
  16776. {
  16777. return __builtin_neon_vbfdotv4sf (__r, __a, __b);
  16778. }
  16779. __extension__ extern __inline float32x2_t
  16780. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16781. vbfdot_lane_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x4_t __b,
  16782. const int __index)
  16783. {
  16784. return __builtin_neon_vbfdot_lanev4bfv2sf (__r, __a, __b, __index);
  16785. }
  16786. __extension__ extern __inline float32x4_t
  16787. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16788. vbfdotq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
  16789. const int __index)
  16790. {
  16791. return __builtin_neon_vbfdot_lanev8bfv4sf (__r, __a, __b, __index);
  16792. }
  16793. __extension__ extern __inline float32x2_t
  16794. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16795. vbfdot_laneq_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x8_t __b,
  16796. const int __index)
  16797. {
  16798. return __builtin_neon_vbfdot_lanev8bfv2sf (__r, __a, __b, __index);
  16799. }
  16800. __extension__ extern __inline float32x4_t
  16801. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16802. vbfdotq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
  16803. const int __index)
  16804. {
  16805. return __builtin_neon_vbfdot_lanev4bfv4sf (__r, __a, __b, __index);
  16806. }
  16807. #pragma GCC pop_options
  16808. #pragma GCC push_options
  16809. #pragma GCC target ("arch=armv8.2-a+bf16")
  16810. typedef struct bfloat16x4x2_t
  16811. {
  16812. bfloat16x4_t val[2];
  16813. } bfloat16x4x2_t;
  16814. typedef struct bfloat16x8x2_t
  16815. {
  16816. bfloat16x8_t val[2];
  16817. } bfloat16x8x2_t;
  16818. typedef struct bfloat16x4x3_t
  16819. {
  16820. bfloat16x4_t val[3];
  16821. } bfloat16x4x3_t;
  16822. typedef struct bfloat16x8x3_t
  16823. {
  16824. bfloat16x8_t val[3];
  16825. } bfloat16x8x3_t;
  16826. typedef struct bfloat16x4x4_t
  16827. {
  16828. bfloat16x4_t val[4];
  16829. } bfloat16x4x4_t;
  16830. typedef struct bfloat16x8x4_t
  16831. {
  16832. bfloat16x8_t val[4];
  16833. } bfloat16x8x4_t;
  16834. __extension__ extern __inline float32x4_t
  16835. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16836. vcvt_f32_bf16 (bfloat16x4_t __a)
  16837. {
  16838. return __builtin_neon_vbfcvtv4bf (__a);
  16839. }
  16840. __extension__ extern __inline float32x4_t
  16841. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16842. vcvtq_low_f32_bf16 (bfloat16x8_t __a)
  16843. {
  16844. return __builtin_neon_vbfcvtv8bf (__a);
  16845. }
  16846. __extension__ extern __inline float32x4_t
  16847. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16848. vcvtq_high_f32_bf16 (bfloat16x8_t __a)
  16849. {
  16850. return __builtin_neon_vbfcvt_highv8bf (__a);
  16851. }
  16852. __extension__ extern __inline bfloat16x4_t
  16853. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16854. vcvt_bf16_f32 (float32x4_t __a)
  16855. {
  16856. return __builtin_neon_vbfcvtv4sfv4bf (__a);
  16857. }
  16858. __extension__ extern __inline bfloat16x8_t
  16859. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16860. vcvtq_low_bf16_f32 (float32x4_t __a)
  16861. {
  16862. return __builtin_neon_vbfcvtv4sfv8bf (__a);
  16863. }
  16864. /* The 'inactive' operand is not converted but it provides the
  16865. low 64 bits to assemble the final 128-bit result. */
  16866. __extension__ extern __inline bfloat16x8_t
  16867. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16868. vcvtq_high_bf16_f32 (bfloat16x8_t inactive, float32x4_t __a)
  16869. {
  16870. return __builtin_neon_vbfcvtv4sf_highv8bf (inactive, __a);
  16871. }
  16872. __extension__ extern __inline float32x4_t
  16873. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16874. vbfmmlaq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
  16875. {
  16876. return __builtin_neon_vmmlav8bf (__r, __a, __b);
  16877. }
  16878. __extension__ extern __inline float32x4_t
  16879. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16880. vbfmlalbq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
  16881. {
  16882. return __builtin_neon_vfmabv8bf (__r, __a, __b);
  16883. }
  16884. __extension__ extern __inline float32x4_t
  16885. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16886. vbfmlaltq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b)
  16887. {
  16888. return __builtin_neon_vfmatv8bf (__r, __a, __b);
  16889. }
  16890. __extension__ extern __inline float32x4_t
  16891. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16892. vbfmlalbq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
  16893. const int __index)
  16894. {
  16895. return __builtin_neon_vfmab_lanev8bf (__r, __a, __b, __index);
  16896. }
  16897. __extension__ extern __inline float32x4_t
  16898. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16899. vbfmlaltq_lane_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x4_t __b,
  16900. const int __index)
  16901. {
  16902. return __builtin_neon_vfmat_lanev8bf (__r, __a, __b, __index);
  16903. }
  16904. __extension__ extern __inline float32x4_t
  16905. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16906. vbfmlalbq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
  16907. const int __index)
  16908. {
  16909. return __builtin_neon_vfmab_laneqv8bf (__r, __a, __b, __index);
  16910. }
  16911. __extension__ extern __inline float32x4_t
  16912. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16913. vbfmlaltq_laneq_f32 (float32x4_t __r, bfloat16x8_t __a, bfloat16x8_t __b,
  16914. const int __index)
  16915. {
  16916. return __builtin_neon_vfmat_laneqv8bf (__r, __a, __b, __index);
  16917. }
  16918. __extension__ extern __inline void
  16919. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16920. vst2_bf16 (bfloat16_t * __ptr, bfloat16x4x2_t __val)
  16921. {
  16922. union { bfloat16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __val };
  16923. return __builtin_neon_vst2v4bf (__ptr, __bu.__o);
  16924. }
  16925. __extension__ extern __inline void
  16926. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16927. vst2q_bf16 (bfloat16_t * __ptr, bfloat16x8x2_t __val)
  16928. {
  16929. union { bfloat16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __val };
  16930. return __builtin_neon_vst2v8bf (__ptr, __bu.__o);
  16931. }
  16932. __extension__ extern __inline void
  16933. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16934. vst3_bf16 (bfloat16_t * __ptr, bfloat16x4x3_t __val)
  16935. {
  16936. union { bfloat16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __val };
  16937. return __builtin_neon_vst3v4bf (__ptr, __bu.__o);
  16938. }
  16939. __extension__ extern __inline void
  16940. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16941. vst3q_bf16 (bfloat16_t * __ptr, bfloat16x8x3_t __val)
  16942. {
  16943. union { bfloat16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __val };
  16944. return __builtin_neon_vst3v8bf (__ptr, __bu.__o);
  16945. }
  16946. __extension__ extern __inline void
  16947. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16948. vst4_bf16 (bfloat16_t * __ptr, bfloat16x4x4_t __val)
  16949. {
  16950. union { bfloat16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __val };
  16951. return __builtin_neon_vst4v4bf (__ptr, __bu.__o);
  16952. }
  16953. __extension__ extern __inline void
  16954. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16955. vst4q_bf16 (bfloat16_t * __ptr, bfloat16x8x4_t __val)
  16956. {
  16957. union { bfloat16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __val };
  16958. return __builtin_neon_vst4v8bf (__ptr, __bu.__o);
  16959. }
  16960. __extension__ extern __inline bfloat16x4x2_t
  16961. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16962. vld2_bf16 (bfloat16_t const * __ptr)
  16963. {
  16964. union { bfloat16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  16965. __rv.__o = __builtin_neon_vld2v4bf ((const __builtin_neon_bf *) __ptr);
  16966. return __rv.__i;
  16967. }
  16968. __extension__ extern __inline bfloat16x8x2_t
  16969. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16970. vld2q_bf16 (const bfloat16_t * __ptr)
  16971. {
  16972. union { bfloat16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  16973. __rv.__o = __builtin_neon_vld2v8bf ((const __builtin_neon_bf *) __ptr);
  16974. return __rv.__i;
  16975. }
  16976. __extension__ extern __inline bfloat16x4x3_t
  16977. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16978. vld3_bf16 (const bfloat16_t * __ptr)
  16979. {
  16980. union { bfloat16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  16981. __rv.__o = __builtin_neon_vld3v4bf ((const __builtin_neon_bf *) __ptr);
  16982. return __rv.__i;
  16983. }
  16984. __extension__ extern __inline bfloat16x8x3_t
  16985. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16986. vld3q_bf16 (const bfloat16_t * __ptr)
  16987. {
  16988. union { bfloat16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  16989. __rv.__o = __builtin_neon_vld3v8bf ((const __builtin_neon_bf *) __ptr);
  16990. return __rv.__i;
  16991. }
  16992. __extension__ extern __inline bfloat16x4x4_t
  16993. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  16994. vld4_bf16 (const bfloat16_t * __ptr)
  16995. {
  16996. union { bfloat16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  16997. __rv.__o = __builtin_neon_vld4v4bf ((const __builtin_neon_bf *) __ptr);
  16998. return __rv.__i;
  16999. }
  17000. __extension__ extern __inline bfloat16x8x4_t
  17001. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17002. vld4q_bf16 (const bfloat16_t * __ptr)
  17003. {
  17004. union { bfloat16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  17005. __rv.__o = __builtin_neon_vld4v8bf ((const __builtin_neon_bf *) __ptr);
  17006. return __rv.__i;
  17007. }
  17008. __extension__ extern __inline bfloat16x4x2_t
  17009. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17010. vld2_dup_bf16 (const bfloat16_t * __ptr)
  17011. {
  17012. union { bfloat16x4x2_t __i; __builtin_neon_ti __o; } __rv;
  17013. __rv.__o = __builtin_neon_vld2_dupv4bf ((const __builtin_neon_bf *) __ptr);
  17014. return __rv.__i;
  17015. }
  17016. __extension__ extern __inline bfloat16x8x2_t
  17017. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17018. vld2q_dup_bf16 (const bfloat16_t * __ptr)
  17019. {
  17020. union { bfloat16x8x2_t __i; __builtin_neon_oi __o; } __rv;
  17021. __rv.__o = __builtin_neon_vld2_dupv8bf ((const __builtin_neon_bf *) __ptr);
  17022. return __rv.__i;
  17023. }
  17024. __extension__ extern __inline bfloat16x4x3_t
  17025. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17026. vld3_dup_bf16 (const bfloat16_t * __ptr)
  17027. {
  17028. union { bfloat16x4x3_t __i; __builtin_neon_ei __o; } __rv;
  17029. __rv.__o = __builtin_neon_vld3_dupv4bf ((const __builtin_neon_bf *) __ptr);
  17030. return __rv.__i;
  17031. }
  17032. __extension__ extern __inline bfloat16x8x3_t
  17033. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17034. vld3q_dup_bf16 (const bfloat16_t * __ptr)
  17035. {
  17036. union { bfloat16x8x3_t __i; __builtin_neon_ci __o; } __rv;
  17037. __rv.__o = __builtin_neon_vld3_dupv8bf ((const __builtin_neon_bf *) __ptr);
  17038. return __rv.__i;
  17039. }
  17040. __extension__ extern __inline bfloat16x4x4_t
  17041. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17042. vld4_dup_bf16 (const bfloat16_t * __ptr)
  17043. {
  17044. union { bfloat16x4x4_t __i; __builtin_neon_oi __o; } __rv;
  17045. __rv.__o = __builtin_neon_vld4_dupv4bf ((const __builtin_neon_bf *) __ptr);
  17046. return __rv.__i;
  17047. }
  17048. __extension__ extern __inline bfloat16x8x4_t
  17049. __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  17050. vld4q_dup_bf16 (const bfloat16_t * __ptr)
  17051. {
  17052. union { bfloat16x8x4_t __i; __builtin_neon_xi __o; } __rv;
  17053. __rv.__o = __builtin_neon_vld4_dupv8bf ((const __builtin_neon_bf *) __ptr);
  17054. return __rv.__i;
  17055. }
  17056. #pragma GCC pop_options
  17057. #ifdef __cplusplus
  17058. }
  17059. #endif
  17060. #pragma GCC pop_options
  17061. #endif
  17062. #endif