@cpp-linter/clang-tidy-darwin-x64 13.0.0 → 16.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_complex_builtins.h +3 -3
  4. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_intrinsics.h +38 -6
  5. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +6 -0
  6. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math.h +1 -1
  7. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +62 -7
  8. package/lib/clang/16/include/__clang_cuda_texture_intrinsics.h +742 -0
  9. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
  10. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_math.h +10 -13
  11. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +18 -4
  12. package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
  13. package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_aes.h +1 -1
  14. package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
  15. package/lib/clang/{13.0.0 → 16}/include/altivec.h +691 -342
  16. package/lib/clang/{13.0.0 → 16}/include/ammintrin.h +4 -0
  17. package/lib/clang/16/include/amxfp16intrin.h +58 -0
  18. package/lib/clang/{13.0.0 → 16}/include/amxintrin.h +49 -18
  19. package/lib/clang/{13.0.0 → 16}/include/arm_acle.h +80 -73
  20. package/lib/clang/{13.0.0 → 16}/include/arm_fp16.h +90 -90
  21. package/lib/clang/{13.0.0 → 16}/include/arm_neon.h +28607 -28779
  22. package/lib/clang/16/include/arm_neon_sve_bridge.h +182 -0
  23. package/lib/clang/{13.0.0 → 16}/include/arm_sve.h +7848 -7996
  24. package/lib/clang/{13.0.0 → 16}/include/avx2intrin.h +189 -189
  25. package/lib/clang/{13.0.0 → 16}/include/avx512bf16intrin.h +21 -18
  26. package/lib/clang/{13.0.0 → 16}/include/avx512bwintrin.h +83 -83
  27. package/lib/clang/{13.0.0 → 16}/include/avx512dqintrin.h +365 -365
  28. package/lib/clang/{13.0.0 → 16}/include/avx512erintrin.h +102 -102
  29. package/lib/clang/{13.0.0 → 16}/include/avx512fintrin.h +1627 -1620
  30. package/lib/clang/16/include/avx512fp16intrin.h +3346 -0
  31. package/lib/clang/{13.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
  32. package/lib/clang/{13.0.0 → 16}/include/avx512vbmi2intrin.h +48 -48
  33. package/lib/clang/{13.0.0 → 16}/include/avx512vlbf16intrin.h +82 -41
  34. package/lib/clang/{13.0.0 → 16}/include/avx512vlbwintrin.h +454 -102
  35. package/lib/clang/{13.0.0 → 16}/include/avx512vldqintrin.h +134 -134
  36. package/lib/clang/16/include/avx512vlfp16intrin.h +2071 -0
  37. package/lib/clang/{13.0.0 → 16}/include/avx512vlintrin.h +596 -610
  38. package/lib/clang/{13.0.0 → 16}/include/avx512vlvbmi2intrin.h +96 -96
  39. package/lib/clang/{13.0.0 → 16}/include/avx512vlvnniintrin.h +24 -24
  40. package/lib/clang/16/include/avxifmaintrin.h +177 -0
  41. package/lib/clang/{13.0.0 → 16}/include/avxintrin.h +266 -224
  42. package/lib/clang/16/include/avxneconvertintrin.h +484 -0
  43. package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
  44. package/lib/clang/{13.0.0 → 16}/include/avxvnniintrin.h +16 -16
  45. package/lib/clang/{13.0.0 → 16}/include/bmiintrin.h +6 -2
  46. package/lib/clang/{13.0.0 → 16}/include/cetintrin.h +20 -4
  47. package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
  48. package/lib/clang/{13.0.0 → 16}/include/cpuid.h +14 -2
  49. package/lib/clang/16/include/crc32intrin.h +100 -0
  50. package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
  51. package/lib/clang/{13.0.0 → 16}/include/emmintrin.h +573 -779
  52. package/lib/clang/{13.0.0 → 16}/include/f16cintrin.h +4 -4
  53. package/lib/clang/{13.0.0 → 16}/include/float.h +22 -6
  54. package/lib/clang/{13.0.0 → 16}/include/gfniintrin.h +54 -53
  55. package/lib/clang/{13.0.0 → 16}/include/hexagon_protos.h +0 -11
  56. package/lib/clang/{13.0.0 → 16}/include/hexagon_types.h +0 -32
  57. package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
  58. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
  59. package/lib/clang/16/include/hlsl.h +15 -0
  60. package/lib/clang/{13.0.0 → 16}/include/hresetintrin.h +2 -2
  61. package/lib/clang/{13.0.0 → 16}/include/hvx_hexagon_protos.h +1200 -409
  62. package/lib/clang/{13.0.0 → 16}/include/ia32intrin.h +17 -17
  63. package/lib/clang/{13.0.0 → 16}/include/immintrin.h +74 -24
  64. package/lib/clang/{13.0.0 → 16}/include/intrin.h +34 -35
  65. package/lib/clang/{13.0.0 → 16}/include/keylockerintrin.h +24 -30
  66. package/lib/clang/16/include/larchintrin.h +234 -0
  67. package/lib/clang/{13.0.0 → 16}/include/limits.h +22 -1
  68. package/lib/clang/{13.0.0 → 16}/include/mm_malloc.h +3 -3
  69. package/lib/clang/{13.0.0 → 16}/include/mmintrin.h +4 -0
  70. package/lib/clang/{13.0.0 → 16}/include/nmmintrin.h +4 -0
  71. package/lib/clang/{13.0.0 → 16}/include/opencl-c-base.h +98 -11
  72. package/lib/clang/{13.0.0 → 16}/include/opencl-c.h +7252 -6208
  73. package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex +10 -1
  74. package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex.h +9 -0
  75. package/lib/clang/{13.0.0 → 16}/include/pmmintrin.h +5 -1
  76. package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
  77. package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
  78. package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
  79. package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
  80. package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
  81. package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -386
  82. package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
  83. package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
  84. package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
  85. package/lib/clang/{13.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
  86. package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
  87. package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
  88. package/lib/clang/16/include/prfchiintrin.h +61 -0
  89. package/lib/clang/{13.0.0 → 16}/include/prfchwintrin.h +5 -2
  90. package/lib/clang/16/include/raointintrin.h +203 -0
  91. package/lib/clang/16/include/rdpruintrin.h +57 -0
  92. package/lib/clang/{13.0.0 → 16}/include/rdseedintrin.h +3 -3
  93. package/lib/clang/16/include/riscv_vector.h +211 -0
  94. package/lib/clang/{13.0.0 → 16}/include/rtmintrin.h +1 -1
  95. package/lib/clang/{13.0.0 → 16}/include/smmintrin.h +260 -362
  96. package/lib/clang/{13.0.0 → 16}/include/stdarg.h +23 -7
  97. package/lib/clang/{13.0.0 → 16}/include/stdatomic.h +14 -1
  98. package/lib/clang/{13.0.0 → 16}/include/stdbool.h +10 -7
  99. package/lib/clang/{13.0.0 → 16}/include/stddef.h +9 -2
  100. package/lib/clang/{13.0.0 → 16}/include/stdint.h +311 -25
  101. package/lib/clang/16/include/stdnoreturn.h +29 -0
  102. package/lib/clang/{13.0.0 → 16}/include/tmmintrin.h +10 -6
  103. package/lib/clang/{13.0.0 → 16}/include/uintrintrin.h +8 -8
  104. package/lib/clang/{13.0.0 → 16}/include/unwind.h +12 -7
  105. package/lib/clang/{13.0.0 → 16}/include/vaesintrin.h +1 -1
  106. package/lib/clang/16/include/velintrin.h +71 -0
  107. package/lib/clang/16/include/velintrin_approx.h +120 -0
  108. package/lib/clang/16/include/velintrin_gen.h +1257 -0
  109. package/lib/clang/{13.0.0 → 16}/include/vpclmulqdqintrin.h +6 -6
  110. package/lib/clang/{13.0.0 → 16}/include/wasm_simd128.h +169 -26
  111. package/lib/clang/{13.0.0 → 16}/include/wmmintrin.h +4 -0
  112. package/lib/clang/16/include/x86gprintrin.h +65 -0
  113. package/lib/clang/{13.0.0 → 16}/include/x86intrin.h +4 -0
  114. package/lib/clang/{13.0.0 → 16}/include/xmmintrin.h +19 -10
  115. package/lib/clang/{13.0.0 → 16}/include/xopintrin.h +31 -31
  116. package/package.json +6 -6
  117. package/lib/clang/13.0.0/include/ppc_wrappers/emmintrin.h +0 -2324
  118. package/lib/clang/13.0.0/include/ppc_wrappers/pmmintrin.h +0 -150
  119. package/lib/clang/13.0.0/include/ppc_wrappers/smmintrin.h +0 -109
  120. package/lib/clang/13.0.0/include/ppc_wrappers/tmmintrin.h +0 -495
  121. package/lib/clang/13.0.0/include/ppc_wrappers/xmmintrin.h +0 -1843
  122. package/lib/clang/13.0.0/include/riscv_vector.h +0 -123865
  123. package/lib/clang/13.0.0/include/x86gprintrin.h +0 -23
  124. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
  125. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
  126. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
  127. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
  128. /package/lib/clang/{13.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
  129. /package/lib/clang/{13.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
  130. /package/lib/clang/{13.0.0 → 16}/include/adxintrin.h +0 -0
  131. /package/lib/clang/{13.0.0 → 16}/include/arm64intr.h +0 -0
  132. /package/lib/clang/{13.0.0 → 16}/include/arm_bf16.h +0 -0
  133. /package/lib/clang/{13.0.0 → 16}/include/arm_cde.h +0 -0
  134. /package/lib/clang/{13.0.0 → 16}/include/arm_cmse.h +0 -0
  135. /package/lib/clang/{13.0.0 → 16}/include/arm_mve.h +0 -0
  136. /package/lib/clang/{13.0.0 → 16}/include/armintr.h +0 -0
  137. /package/lib/clang/{13.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
  138. /package/lib/clang/{13.0.0 → 16}/include/avx512cdintrin.h +0 -0
  139. /package/lib/clang/{13.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
  140. /package/lib/clang/{13.0.0 → 16}/include/avx512pfintrin.h +0 -0
  141. /package/lib/clang/{13.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
  142. /package/lib/clang/{13.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
  143. /package/lib/clang/{13.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
  144. /package/lib/clang/{13.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
  145. /package/lib/clang/{13.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
  146. /package/lib/clang/{13.0.0 → 16}/include/avx512vnniintrin.h +0 -0
  147. /package/lib/clang/{13.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
  148. /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
  149. /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
  150. /package/lib/clang/{13.0.0 → 16}/include/bmi2intrin.h +0 -0
  151. /package/lib/clang/{13.0.0 → 16}/include/builtins.h +0 -0
  152. /package/lib/clang/{13.0.0 → 16}/include/cet.h +0 -0
  153. /package/lib/clang/{13.0.0 → 16}/include/cldemoteintrin.h +0 -0
  154. /package/lib/clang/{13.0.0 → 16}/include/clflushoptintrin.h +0 -0
  155. /package/lib/clang/{13.0.0 → 16}/include/clwbintrin.h +0 -0
  156. /package/lib/clang/{13.0.0 → 16}/include/clzerointrin.h +0 -0
  157. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
  158. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/complex +0 -0
  159. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/new +0 -0
  160. /package/lib/clang/{13.0.0 → 16}/include/enqcmdintrin.h +0 -0
  161. /package/lib/clang/{13.0.0 → 16}/include/fma4intrin.h +0 -0
  162. /package/lib/clang/{13.0.0 → 16}/include/fmaintrin.h +0 -0
  163. /package/lib/clang/{13.0.0 → 16}/include/fxsrintrin.h +0 -0
  164. /package/lib/clang/{13.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
  165. /package/lib/clang/{13.0.0 → 16}/include/htmintrin.h +0 -0
  166. /package/lib/clang/{13.0.0 → 16}/include/htmxlintrin.h +0 -0
  167. /package/lib/clang/{13.0.0 → 16}/include/inttypes.h +0 -0
  168. /package/lib/clang/{13.0.0 → 16}/include/invpcidintrin.h +0 -0
  169. /package/lib/clang/{13.0.0 → 16}/include/iso646.h +0 -0
  170. /package/lib/clang/{13.0.0 → 16}/include/lwpintrin.h +0 -0
  171. /package/lib/clang/{13.0.0 → 16}/include/lzcntintrin.h +0 -0
  172. /package/lib/clang/{13.0.0 → 16}/include/mm3dnow.h +0 -0
  173. /package/lib/clang/{13.0.0 → 16}/include/module.modulemap +0 -0
  174. /package/lib/clang/{13.0.0 → 16}/include/movdirintrin.h +0 -0
  175. /package/lib/clang/{13.0.0 → 16}/include/msa.h +0 -0
  176. /package/lib/clang/{13.0.0 → 16}/include/mwaitxintrin.h +0 -0
  177. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  178. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
  179. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
  180. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
  181. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/new +0 -0
  182. /package/lib/clang/{13.0.0 → 16}/include/pconfigintrin.h +0 -0
  183. /package/lib/clang/{13.0.0 → 16}/include/pkuintrin.h +0 -0
  184. /package/lib/clang/{13.0.0 → 16}/include/popcntintrin.h +0 -0
  185. /package/lib/clang/{13.0.0 → 16}/include/ptwriteintrin.h +0 -0
  186. /package/lib/clang/{13.0.0 → 16}/include/s390intrin.h +0 -0
  187. /package/lib/clang/{13.0.0 → 16}/include/serializeintrin.h +0 -0
  188. /package/lib/clang/{13.0.0 → 16}/include/sgxintrin.h +0 -0
  189. /package/lib/clang/{13.0.0 → 16}/include/shaintrin.h +0 -0
  190. /package/lib/clang/{13.0.0 → 16}/include/stdalign.h +0 -0
  191. /package/lib/clang/{13.0.0 → 16}/include/tbmintrin.h +0 -0
  192. /package/lib/clang/{13.0.0 → 16}/include/tgmath.h +0 -0
  193. /package/lib/clang/{13.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
  194. /package/lib/clang/{13.0.0 → 16}/include/vadefs.h +0 -0
  195. /package/lib/clang/{13.0.0 → 16}/include/varargs.h +0 -0
  196. /package/lib/clang/{13.0.0 → 16}/include/vecintrin.h +0 -0
  197. /package/lib/clang/{13.0.0 → 16}/include/waitpkgintrin.h +0 -0
  198. /package/lib/clang/{13.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
  199. /package/lib/clang/{13.0.0 → 16}/include/xsavecintrin.h +0 -0
  200. /package/lib/clang/{13.0.0 → 16}/include/xsaveintrin.h +0 -0
  201. /package/lib/clang/{13.0.0 → 16}/include/xsaveoptintrin.h +0 -0
  202. /package/lib/clang/{13.0.0 → 16}/include/xsavesintrin.h +0 -0
  203. /package/lib/clang/{13.0.0 → 16}/include/xtestintrin.h +0 -0
@@ -39,6 +39,16 @@ typedef float __m256_u __attribute__ ((__vector_size__ (32), __aligned__(1)));
39
39
  typedef double __m256d_u __attribute__((__vector_size__(32), __aligned__(1)));
40
40
  typedef long long __m256i_u __attribute__((__vector_size__(32), __aligned__(1)));
41
41
 
42
+ #ifdef __SSE2__
43
+ /* Both _Float16 and __bf16 require SSE2 being enabled. */
44
+ typedef _Float16 __v16hf __attribute__((__vector_size__(32), __aligned__(32)));
45
+ typedef _Float16 __m256h __attribute__((__vector_size__(32), __aligned__(32)));
46
+ typedef _Float16 __m256h_u __attribute__((__vector_size__(32), __aligned__(1)));
47
+
48
+ typedef __bf16 __v16bf __attribute__((__vector_size__(32), __aligned__(32)));
49
+ typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
50
+ #endif
51
+
42
52
  /* Define the default attributes for the functions in this file. */
43
53
  #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(256)))
44
54
  #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(128)))
@@ -400,7 +410,7 @@ _mm256_rcp_ps(__m256 __a)
400
410
  /// 11: Truncated.
401
411
  /// \returns A 256-bit vector of [4 x double] containing the rounded values.
402
412
  #define _mm256_round_pd(V, M) \
403
- (__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M))
413
+ ((__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)))
404
414
 
405
415
  /// Rounds the values stored in a 256-bit vector of [8 x float] as
406
416
  /// specified by the byte operand. The source values are rounded to integer
@@ -432,7 +442,7 @@ _mm256_rcp_ps(__m256 __a)
432
442
  /// 11: Truncated.
433
443
  /// \returns A 256-bit vector of [8 x float] containing the rounded values.
434
444
  #define _mm256_round_ps(V, M) \
435
- (__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M))
445
+ ((__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)))
436
446
 
437
447
  /// Rounds up the values stored in a 256-bit vector of [4 x double]. The
438
448
  /// source values are rounded up to integer values and returned as 64-bit
@@ -989,7 +999,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
989
999
  /// returned vector.
990
1000
  /// \returns A 128-bit vector of [2 x double] containing the copied values.
991
1001
  #define _mm_permute_pd(A, C) \
992
- (__m128d)__builtin_ia32_vpermilpd((__v2df)(__m128d)(A), (int)(C))
1002
+ ((__m128d)__builtin_ia32_vpermilpd((__v2df)(__m128d)(A), (int)(C)))
993
1003
 
994
1004
  /// Copies the values in a 256-bit vector of [4 x double] as specified by
995
1005
  /// the immediate integer operand.
@@ -1029,7 +1039,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1029
1039
  /// returned vector.
1030
1040
  /// \returns A 256-bit vector of [4 x double] containing the copied values.
1031
1041
  #define _mm256_permute_pd(A, C) \
1032
- (__m256d)__builtin_ia32_vpermilpd256((__v4df)(__m256d)(A), (int)(C))
1042
+ ((__m256d)__builtin_ia32_vpermilpd256((__v4df)(__m256d)(A), (int)(C)))
1033
1043
 
1034
1044
  /// Copies the values in a 128-bit vector of [4 x float] as specified by
1035
1045
  /// the immediate integer operand.
@@ -1085,7 +1095,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1085
1095
  /// returned vector.
1086
1096
  /// \returns A 128-bit vector of [4 x float] containing the copied values.
1087
1097
  #define _mm_permute_ps(A, C) \
1088
- (__m128)__builtin_ia32_vpermilps((__v4sf)(__m128)(A), (int)(C))
1098
+ ((__m128)__builtin_ia32_vpermilps((__v4sf)(__m128)(A), (int)(C)))
1089
1099
 
1090
1100
  /// Copies the values in a 256-bit vector of [8 x float] as specified by
1091
1101
  /// the immediate integer operand.
@@ -1177,7 +1187,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1177
1187
  /// returned vector.
1178
1188
  /// \returns A 256-bit vector of [8 x float] containing the copied values.
1179
1189
  #define _mm256_permute_ps(A, C) \
1180
- (__m256)__builtin_ia32_vpermilps256((__v8sf)(__m256)(A), (int)(C))
1190
+ ((__m256)__builtin_ia32_vpermilps256((__v8sf)(__m256)(A), (int)(C)))
1181
1191
 
1182
1192
  /// Permutes 128-bit data values stored in two 256-bit vectors of
1183
1193
  /// [4 x double], as specified by the immediate integer operand.
@@ -1217,8 +1227,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1217
1227
  /// destination.
1218
1228
  /// \returns A 256-bit vector of [4 x double] containing the copied values.
1219
1229
  #define _mm256_permute2f128_pd(V1, V2, M) \
1220
- (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
1221
- (__v4df)(__m256d)(V2), (int)(M))
1230
+ ((__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
1231
+ (__v4df)(__m256d)(V2), (int)(M)))
1222
1232
 
1223
1233
  /// Permutes 128-bit data values stored in two 256-bit vectors of
1224
1234
  /// [8 x float], as specified by the immediate integer operand.
@@ -1258,8 +1268,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1258
1268
  /// destination.
1259
1269
  /// \returns A 256-bit vector of [8 x float] containing the copied values.
1260
1270
  #define _mm256_permute2f128_ps(V1, V2, M) \
1261
- (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
1262
- (__v8sf)(__m256)(V2), (int)(M))
1271
+ ((__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
1272
+ (__v8sf)(__m256)(V2), (int)(M)))
1263
1273
 
1264
1274
  /// Permutes 128-bit data values stored in two 256-bit integer vectors,
1265
1275
  /// as specified by the immediate integer operand.
@@ -1298,8 +1308,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1298
1308
  /// destination.
1299
1309
  /// \returns A 256-bit integer vector containing the copied values.
1300
1310
  #define _mm256_permute2f128_si256(V1, V2, M) \
1301
- (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \
1302
- (__v8si)(__m256i)(V2), (int)(M))
1311
+ ((__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \
1312
+ (__v8si)(__m256i)(V2), (int)(M)))
1303
1313
 
1304
1314
  /* Vector Blend */
1305
1315
  /// Merges 64-bit double-precision data values stored in either of the
@@ -1327,8 +1337,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1327
1337
  /// operand \a V2 is copied to the same position in the destination.
1328
1338
  /// \returns A 256-bit vector of [4 x double] containing the copied values.
1329
1339
  #define _mm256_blend_pd(V1, V2, M) \
1330
- (__m256d)__builtin_ia32_blendpd256((__v4df)(__m256d)(V1), \
1331
- (__v4df)(__m256d)(V2), (int)(M))
1340
+ ((__m256d)__builtin_ia32_blendpd256((__v4df)(__m256d)(V1), \
1341
+ (__v4df)(__m256d)(V2), (int)(M)))
1332
1342
 
1333
1343
  /// Merges 32-bit single-precision data values stored in either of the
1334
1344
  /// two 256-bit vectors of [8 x float], as specified by the immediate
@@ -1355,8 +1365,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
1355
1365
  /// operand \a V2 is copied to the same position in the destination.
1356
1366
  /// \returns A 256-bit vector of [8 x float] containing the copied values.
1357
1367
  #define _mm256_blend_ps(V1, V2, M) \
1358
- (__m256)__builtin_ia32_blendps256((__v8sf)(__m256)(V1), \
1359
- (__v8sf)(__m256)(V2), (int)(M))
1368
+ ((__m256)__builtin_ia32_blendps256((__v8sf)(__m256)(V1), \
1369
+ (__v8sf)(__m256)(V2), (int)(M)))
1360
1370
 
1361
1371
  /// Merges 64-bit double-precision data values stored in either of the
1362
1372
  /// two 256-bit vectors of [4 x double], as specified by the 256-bit vector
@@ -1453,8 +1463,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1453
1463
  /// two parallel dot product computations.
1454
1464
  /// \returns A 256-bit vector of [8 x float] containing the two dot products.
1455
1465
  #define _mm256_dp_ps(V1, V2, M) \
1456
- (__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \
1457
- (__v8sf)(__m256)(V2), (M))
1466
+ ((__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \
1467
+ (__v8sf)(__m256)(V2), (M)))
1458
1468
 
1459
1469
  /* Vector shuffle */
1460
1470
  /// Selects 8 float values from the 256-bit operands of [8 x float], as
@@ -1504,11 +1514,14 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1504
1514
  /// 00: Bits [31:0] and [159:128] are copied from the selected operand. \n
1505
1515
  /// 01: Bits [63:32] and [191:160] are copied from the selected operand. \n
1506
1516
  /// 10: Bits [95:64] and [223:192] are copied from the selected operand. \n
1507
- /// 11: Bits [127:96] and [255:224] are copied from the selected operand.
1517
+ /// 11: Bits [127:96] and [255:224] are copied from the selected operand. \n
1518
+ /// Note: To generate a mask, you can use the \c _MM_SHUFFLE macro.
1519
+ /// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form
1520
+ /// <c>[b6, b4, b2, b0]</c>.
1508
1521
  /// \returns A 256-bit vector of [8 x float] containing the shuffled values.
1509
1522
  #define _mm256_shuffle_ps(a, b, mask) \
1510
- (__m256)__builtin_ia32_shufps256((__v8sf)(__m256)(a), \
1511
- (__v8sf)(__m256)(b), (int)(mask))
1523
+ ((__m256)__builtin_ia32_shufps256((__v8sf)(__m256)(a), \
1524
+ (__v8sf)(__m256)(b), (int)(mask)))
1512
1525
 
1513
1526
  /// Selects four double-precision values from the 256-bit operands of
1514
1527
  /// [4 x double], as specified by the immediate value operand.
@@ -1553,8 +1566,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1553
1566
  /// destination.
1554
1567
  /// \returns A 256-bit vector of [4 x double] containing the shuffled values.
1555
1568
  #define _mm256_shuffle_pd(a, b, mask) \
1556
- (__m256d)__builtin_ia32_shufpd256((__v4df)(__m256d)(a), \
1557
- (__v4df)(__m256d)(b), (int)(mask))
1569
+ ((__m256d)__builtin_ia32_shufpd256((__v4df)(__m256d)(a), \
1570
+ (__v4df)(__m256d)(b), (int)(mask)))
1558
1571
 
1559
1572
  /* Compare */
1560
1573
  #define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */
@@ -1647,8 +1660,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1647
1660
  /// 0x1F: True (unordered, signaling)
1648
1661
  /// \returns A 128-bit vector of [2 x double] containing the comparison results.
1649
1662
  #define _mm_cmp_pd(a, b, c) \
1650
- (__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
1651
- (__v2df)(__m128d)(b), (c))
1663
+ ((__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
1664
+ (__v2df)(__m128d)(b), (c)))
1652
1665
 
1653
1666
  /// Compares each of the corresponding values of two 128-bit vectors of
1654
1667
  /// [4 x float], using the operation specified by the immediate integer
@@ -1707,8 +1720,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1707
1720
  /// 0x1F: True (unordered, signaling)
1708
1721
  /// \returns A 128-bit vector of [4 x float] containing the comparison results.
1709
1722
  #define _mm_cmp_ps(a, b, c) \
1710
- (__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
1711
- (__v4sf)(__m128)(b), (c))
1723
+ ((__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
1724
+ (__v4sf)(__m128)(b), (c)))
1712
1725
 
1713
1726
  /// Compares each of the corresponding double-precision values of two
1714
1727
  /// 256-bit vectors of [4 x double], using the operation specified by the
@@ -1767,8 +1780,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1767
1780
  /// 0x1F: True (unordered, signaling)
1768
1781
  /// \returns A 256-bit vector of [4 x double] containing the comparison results.
1769
1782
  #define _mm256_cmp_pd(a, b, c) \
1770
- (__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
1771
- (__v4df)(__m256d)(b), (c))
1783
+ ((__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
1784
+ (__v4df)(__m256d)(b), (c)))
1772
1785
 
1773
1786
  /// Compares each of the corresponding values of two 256-bit vectors of
1774
1787
  /// [8 x float], using the operation specified by the immediate integer
@@ -1827,8 +1840,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1827
1840
  /// 0x1F: True (unordered, signaling)
1828
1841
  /// \returns A 256-bit vector of [8 x float] containing the comparison results.
1829
1842
  #define _mm256_cmp_ps(a, b, c) \
1830
- (__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
1831
- (__v8sf)(__m256)(b), (c))
1843
+ ((__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
1844
+ (__v8sf)(__m256)(b), (c)))
1832
1845
 
1833
1846
  /// Compares each of the corresponding scalar double-precision values of
1834
1847
  /// two 128-bit vectors of [2 x double], using the operation specified by the
@@ -1886,8 +1899,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1886
1899
  /// 0x1F: True (unordered, signaling)
1887
1900
  /// \returns A 128-bit vector of [2 x double] containing the comparison results.
1888
1901
  #define _mm_cmp_sd(a, b, c) \
1889
- (__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
1890
- (__v2df)(__m128d)(b), (c))
1902
+ ((__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
1903
+ (__v2df)(__m128d)(b), (c)))
1891
1904
 
1892
1905
  /// Compares each of the corresponding scalar values of two 128-bit
1893
1906
  /// vectors of [4 x float], using the operation specified by the immediate
@@ -1945,64 +1958,76 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
1945
1958
  /// 0x1F: True (unordered, signaling)
1946
1959
  /// \returns A 128-bit vector of [4 x float] containing the comparison results.
1947
1960
  #define _mm_cmp_ss(a, b, c) \
1948
- (__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
1949
- (__v4sf)(__m128)(b), (c))
1961
+ ((__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
1962
+ (__v4sf)(__m128)(b), (c)))
1950
1963
 
1951
1964
  /// Takes a [8 x i32] vector and returns the vector element value
1952
1965
  /// indexed by the immediate constant operand.
1953
1966
  ///
1954
1967
  /// \headerfile <x86intrin.h>
1955
1968
  ///
1969
+ /// \code
1970
+ /// int _mm256_extract_epi32(__m256i X, const int N);
1971
+ /// \endcode
1972
+ ///
1956
1973
  /// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
1957
1974
  /// instruction.
1958
1975
  ///
1959
- /// \param __a
1976
+ /// \param X
1960
1977
  /// A 256-bit vector of [8 x i32].
1961
- /// \param __imm
1978
+ /// \param N
1962
1979
  /// An immediate integer operand with bits [2:0] determining which vector
1963
1980
  /// element is extracted and returned.
1964
1981
  /// \returns A 32-bit integer containing the extracted 32 bits of extended
1965
1982
  /// packed data.
1966
1983
  #define _mm256_extract_epi32(X, N) \
1967
- (int)__builtin_ia32_vec_ext_v8si((__v8si)(__m256i)(X), (int)(N))
1984
+ ((int)__builtin_ia32_vec_ext_v8si((__v8si)(__m256i)(X), (int)(N)))
1968
1985
 
1969
1986
  /// Takes a [16 x i16] vector and returns the vector element value
1970
1987
  /// indexed by the immediate constant operand.
1971
1988
  ///
1972
1989
  /// \headerfile <x86intrin.h>
1973
1990
  ///
1991
+ /// \code
1992
+ /// int _mm256_extract_epi16(__m256i X, const int N);
1993
+ /// \endcode
1994
+ ///
1974
1995
  /// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
1975
1996
  /// instruction.
1976
1997
  ///
1977
- /// \param __a
1998
+ /// \param X
1978
1999
  /// A 256-bit integer vector of [16 x i16].
1979
- /// \param __imm
2000
+ /// \param N
1980
2001
  /// An immediate integer operand with bits [3:0] determining which vector
1981
2002
  /// element is extracted and returned.
1982
2003
  /// \returns A 32-bit integer containing the extracted 16 bits of zero extended
1983
2004
  /// packed data.
1984
2005
  #define _mm256_extract_epi16(X, N) \
1985
- (int)(unsigned short)__builtin_ia32_vec_ext_v16hi((__v16hi)(__m256i)(X), \
1986
- (int)(N))
2006
+ ((int)(unsigned short)__builtin_ia32_vec_ext_v16hi((__v16hi)(__m256i)(X), \
2007
+ (int)(N)))
1987
2008
 
1988
2009
  /// Takes a [32 x i8] vector and returns the vector element value
1989
2010
  /// indexed by the immediate constant operand.
1990
2011
  ///
1991
2012
  /// \headerfile <x86intrin.h>
1992
2013
  ///
2014
+ /// \code
2015
+ /// int _mm256_extract_epi8(__m256i X, const int N);
2016
+ /// \endcode
2017
+ ///
1993
2018
  /// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
1994
2019
  /// instruction.
1995
2020
  ///
1996
- /// \param __a
2021
+ /// \param X
1997
2022
  /// A 256-bit integer vector of [32 x i8].
1998
- /// \param __imm
2023
+ /// \param N
1999
2024
  /// An immediate integer operand with bits [4:0] determining which vector
2000
2025
  /// element is extracted and returned.
2001
2026
  /// \returns A 32-bit integer containing the extracted 8 bits of zero extended
2002
2027
  /// packed data.
2003
2028
  #define _mm256_extract_epi8(X, N) \
2004
- (int)(unsigned char)__builtin_ia32_vec_ext_v32qi((__v32qi)(__m256i)(X), \
2005
- (int)(N))
2029
+ ((int)(unsigned char)__builtin_ia32_vec_ext_v32qi((__v32qi)(__m256i)(X), \
2030
+ (int)(N)))
2006
2031
 
2007
2032
  #ifdef __x86_64__
2008
2033
  /// Takes a [4 x i64] vector and returns the vector element value
@@ -2010,18 +2035,22 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
2010
2035
  ///
2011
2036
  /// \headerfile <x86intrin.h>
2012
2037
  ///
2038
+ /// \code
2039
+ /// long long _mm256_extract_epi64(__m256i X, const int N);
2040
+ /// \endcode
2041
+ ///
2013
2042
  /// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
2014
2043
  /// instruction.
2015
2044
  ///
2016
- /// \param __a
2045
+ /// \param X
2017
2046
  /// A 256-bit integer vector of [4 x i64].
2018
- /// \param __imm
2047
+ /// \param N
2019
2048
  /// An immediate integer operand with bits [1:0] determining which vector
2020
2049
  /// element is extracted and returned.
2021
2050
  /// \returns A 64-bit integer containing the extracted 64 bits of extended
2022
2051
  /// packed data.
2023
2052
  #define _mm256_extract_epi64(X, N) \
2024
- (long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N))
2053
+ ((long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N)))
2025
2054
  #endif
2026
2055
 
2027
2056
  /// Takes a [8 x i32] vector and replaces the vector element value
@@ -2030,21 +2059,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
2030
2059
  ///
2031
2060
  /// \headerfile <x86intrin.h>
2032
2061
  ///
2062
+ /// \code
2063
+ /// __m256i _mm256_insert_epi32(__m256i X, int I, const int N);
2064
+ /// \endcode
2065
+ ///
2033
2066
  /// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
2034
2067
  /// instruction.
2035
2068
  ///
2036
- /// \param __a
2069
+ /// \param X
2037
2070
  /// A vector of [8 x i32] to be used by the insert operation.
2038
- /// \param __b
2071
+ /// \param I
2039
2072
  /// An integer value. The replacement value for the insert operation.
2040
- /// \param __imm
2073
+ /// \param N
2041
2074
  /// An immediate integer specifying the index of the vector element to be
2042
2075
  /// replaced.
2043
- /// \returns A copy of vector \a __a, after replacing its element indexed by
2044
- /// \a __imm with \a __b.
2076
+ /// \returns A copy of vector \a X, after replacing its element indexed by
2077
+ /// \a N with \a I.
2045
2078
  #define _mm256_insert_epi32(X, I, N) \
2046
- (__m256i)__builtin_ia32_vec_set_v8si((__v8si)(__m256i)(X), \
2047
- (int)(I), (int)(N))
2079
+ ((__m256i)__builtin_ia32_vec_set_v8si((__v8si)(__m256i)(X), \
2080
+ (int)(I), (int)(N)))
2048
2081
 
2049
2082
 
2050
2083
  /// Takes a [16 x i16] vector and replaces the vector element value
@@ -2053,21 +2086,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
2053
2086
  ///
2054
2087
  /// \headerfile <x86intrin.h>
2055
2088
  ///
2089
+ /// \code
2090
+ /// __m256i _mm256_insert_epi16(__m256i X, int I, const int N);
2091
+ /// \endcode
2092
+ ///
2056
2093
  /// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
2057
2094
  /// instruction.
2058
2095
  ///
2059
- /// \param __a
2096
+ /// \param X
2060
2097
  /// A vector of [16 x i16] to be used by the insert operation.
2061
- /// \param __b
2098
+ /// \param I
2062
2099
  /// An i16 integer value. The replacement value for the insert operation.
2063
- /// \param __imm
2100
+ /// \param N
2064
2101
  /// An immediate integer specifying the index of the vector element to be
2065
2102
  /// replaced.
2066
- /// \returns A copy of vector \a __a, after replacing its element indexed by
2067
- /// \a __imm with \a __b.
2103
+ /// \returns A copy of vector \a X, after replacing its element indexed by
2104
+ /// \a N with \a I.
2068
2105
  #define _mm256_insert_epi16(X, I, N) \
2069
- (__m256i)__builtin_ia32_vec_set_v16hi((__v16hi)(__m256i)(X), \
2070
- (int)(I), (int)(N))
2106
+ ((__m256i)__builtin_ia32_vec_set_v16hi((__v16hi)(__m256i)(X), \
2107
+ (int)(I), (int)(N)))
2071
2108
 
2072
2109
  /// Takes a [32 x i8] vector and replaces the vector element value
2073
2110
  /// indexed by the immediate constant operand with a new value. Returns the
@@ -2075,21 +2112,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
2075
2112
  ///
2076
2113
  /// \headerfile <x86intrin.h>
2077
2114
  ///
2115
+ /// \code
2116
+ /// __m256i _mm256_insert_epi8(__m256i X, int I, const int N);
2117
+ /// \endcode
2118
+ ///
2078
2119
  /// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
2079
2120
  /// instruction.
2080
2121
  ///
2081
- /// \param __a
2122
+ /// \param X
2082
2123
  /// A vector of [32 x i8] to be used by the insert operation.
2083
- /// \param __b
2124
+ /// \param I
2084
2125
  /// An i8 integer value. The replacement value for the insert operation.
2085
- /// \param __imm
2126
+ /// \param N
2086
2127
  /// An immediate integer specifying the index of the vector element to be
2087
2128
  /// replaced.
2088
- /// \returns A copy of vector \a __a, after replacing its element indexed by
2089
- /// \a __imm with \a __b.
2129
+ /// \returns A copy of vector \a X, after replacing its element indexed by
2130
+ /// \a N with \a I.
2090
2131
  #define _mm256_insert_epi8(X, I, N) \
2091
- (__m256i)__builtin_ia32_vec_set_v32qi((__v32qi)(__m256i)(X), \
2092
- (int)(I), (int)(N))
2132
+ ((__m256i)__builtin_ia32_vec_set_v32qi((__v32qi)(__m256i)(X), \
2133
+ (int)(I), (int)(N)))
2093
2134
 
2094
2135
  #ifdef __x86_64__
2095
2136
  /// Takes a [4 x i64] vector and replaces the vector element value
@@ -2098,21 +2139,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
2098
2139
  ///
2099
2140
  /// \headerfile <x86intrin.h>
2100
2141
  ///
2142
+ /// \code
2143
+ /// __m256i _mm256_insert_epi64(__m256i X, int I, const int N);
2144
+ /// \endcode
2145
+ ///
2101
2146
  /// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
2102
2147
  /// instruction.
2103
2148
  ///
2104
- /// \param __a
2149
+ /// \param X
2105
2150
  /// A vector of [4 x i64] to be used by the insert operation.
2106
- /// \param __b
2151
+ /// \param I
2107
2152
  /// A 64-bit integer value. The replacement value for the insert operation.
2108
- /// \param __imm
2153
+ /// \param N
2109
2154
  /// An immediate integer specifying the index of the vector element to be
2110
2155
  /// replaced.
2111
- /// \returns A copy of vector \a __a, after replacing its element indexed by
2112
- /// \a __imm with \a __b.
2156
+ /// \returns A copy of vector \a X, after replacing its element indexed by
2157
+ /// \a N with \a I.
2113
2158
  #define _mm256_insert_epi64(X, I, N) \
2114
- (__m256i)__builtin_ia32_vec_set_v4di((__v4di)(__m256i)(X), \
2115
- (long long)(I), (int)(N))
2159
+ ((__m256i)__builtin_ia32_vec_set_v4di((__v4di)(__m256i)(X), \
2160
+ (long long)(I), (int)(N)))
2116
2161
  #endif
2117
2162
 
2118
2163
  /* Conversion */
@@ -3177,7 +3222,7 @@ _mm256_loadu_si256(__m256i_u const *__p)
3177
3222
  /// A pointer to a 256-bit integer vector containing integer values.
3178
3223
  /// \returns A 256-bit integer vector containing the moved values.
3179
3224
  static __inline __m256i __DEFAULT_FN_ATTRS
3180
- _mm256_lddqu_si256(__m256i const *__p)
3225
+ _mm256_lddqu_si256(__m256i_u const *__p)
3181
3226
  {
3182
3227
  return (__m256i)__builtin_ia32_lddqu256((char const *)__p);
3183
3228
  }
@@ -4253,7 +4298,7 @@ _mm256_set1_epi64x(long long __q)
4253
4298
  static __inline __m256d __DEFAULT_FN_ATTRS
4254
4299
  _mm256_setzero_pd(void)
4255
4300
  {
4256
- return __extension__ (__m256d){ 0, 0, 0, 0 };
4301
+ return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 };
4257
4302
  }
4258
4303
 
4259
4304
  /// Constructs a 256-bit floating-point vector of [8 x float] with all
@@ -4267,7 +4312,7 @@ _mm256_setzero_pd(void)
4267
4312
  static __inline __m256 __DEFAULT_FN_ATTRS
4268
4313
  _mm256_setzero_ps(void)
4269
4314
  {
4270
- return __extension__ (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 };
4315
+ return __extension__ (__m256){ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
4271
4316
  }
4272
4317
 
4273
4318
  /// Constructs a 256-bit integer vector initialized to zero.
@@ -4592,8 +4637,8 @@ _mm256_zextsi128_si256(__m128i __a)
4592
4637
  /// result.
4593
4638
  /// \returns A 256-bit vector of [8 x float] containing the interleaved values.
4594
4639
  #define _mm256_insertf128_ps(V1, V2, M) \
4595
- (__m256)__builtin_ia32_vinsertf128_ps256((__v8sf)(__m256)(V1), \
4596
- (__v4sf)(__m128)(V2), (int)(M))
4640
+ ((__m256)__builtin_ia32_vinsertf128_ps256((__v8sf)(__m256)(V1), \
4641
+ (__v4sf)(__m128)(V2), (int)(M)))
4597
4642
 
4598
4643
  /// Constructs a new 256-bit vector of [4 x double] by first duplicating
4599
4644
  /// a 256-bit vector of [4 x double] given in the first parameter, and then
@@ -4630,8 +4675,8 @@ _mm256_zextsi128_si256(__m128i __a)
4630
4675
  /// result.
4631
4676
  /// \returns A 256-bit vector of [4 x double] containing the interleaved values.
4632
4677
  #define _mm256_insertf128_pd(V1, V2, M) \
4633
- (__m256d)__builtin_ia32_vinsertf128_pd256((__v4df)(__m256d)(V1), \
4634
- (__v2df)(__m128d)(V2), (int)(M))
4678
+ ((__m256d)__builtin_ia32_vinsertf128_pd256((__v4df)(__m256d)(V1), \
4679
+ (__v2df)(__m128d)(V2), (int)(M)))
4635
4680
 
4636
4681
  /// Constructs a new 256-bit integer vector by first duplicating a
4637
4682
  /// 256-bit integer vector given in the first parameter, and then replacing
@@ -4668,8 +4713,8 @@ _mm256_zextsi128_si256(__m128i __a)
4668
4713
  /// result.
4669
4714
  /// \returns A 256-bit integer vector containing the interleaved values.
4670
4715
  #define _mm256_insertf128_si256(V1, V2, M) \
4671
- (__m256i)__builtin_ia32_vinsertf128_si256((__v8si)(__m256i)(V1), \
4672
- (__v4si)(__m128i)(V2), (int)(M))
4716
+ ((__m256i)__builtin_ia32_vinsertf128_si256((__v8si)(__m256i)(V1), \
4717
+ (__v4si)(__m128i)(V2), (int)(M)))
4673
4718
 
4674
4719
  /*
4675
4720
  Vector extract.
@@ -4698,7 +4743,7 @@ _mm256_zextsi128_si256(__m128i __a)
4698
4743
  /// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
4699
4744
  /// \returns A 128-bit vector of [4 x float] containing the extracted bits.
4700
4745
  #define _mm256_extractf128_ps(V, M) \
4701
- (__m128)__builtin_ia32_vextractf128_ps256((__v8sf)(__m256)(V), (int)(M))
4746
+ ((__m128)__builtin_ia32_vextractf128_ps256((__v8sf)(__m256)(V), (int)(M)))
4702
4747
 
4703
4748
  /// Extracts either the upper or the lower 128 bits from a 256-bit vector
4704
4749
  /// of [4 x double], as determined by the immediate integer parameter, and
@@ -4722,7 +4767,7 @@ _mm256_zextsi128_si256(__m128i __a)
4722
4767
  /// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
4723
4768
  /// \returns A 128-bit vector of [2 x double] containing the extracted bits.
4724
4769
  #define _mm256_extractf128_pd(V, M) \
4725
- (__m128d)__builtin_ia32_vextractf128_pd256((__v4df)(__m256d)(V), (int)(M))
4770
+ ((__m128d)__builtin_ia32_vextractf128_pd256((__v4df)(__m256d)(V), (int)(M)))
4726
4771
 
4727
4772
  /// Extracts either the upper or the lower 128 bits from a 256-bit
4728
4773
  /// integer vector, as determined by the immediate integer parameter, and
@@ -4746,7 +4791,136 @@ _mm256_zextsi128_si256(__m128i __a)
4746
4791
  /// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
4747
4792
  /// \returns A 128-bit integer vector containing the extracted bits.
4748
4793
  #define _mm256_extractf128_si256(V, M) \
4749
- (__m128i)__builtin_ia32_vextractf128_si256((__v8si)(__m256i)(V), (int)(M))
4794
+ ((__m128i)__builtin_ia32_vextractf128_si256((__v8si)(__m256i)(V), (int)(M)))
4795
+
4796
+ /// Constructs a 256-bit floating-point vector of [8 x float] by
4797
+ /// concatenating two 128-bit floating-point vectors of [4 x float].
4798
+ ///
4799
+ /// \headerfile <x86intrin.h>
4800
+ ///
4801
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4802
+ ///
4803
+ /// \param __hi
4804
+ /// A 128-bit floating-point vector of [4 x float] to be copied to the upper
4805
+ /// 128 bits of the result.
4806
+ /// \param __lo
4807
+ /// A 128-bit floating-point vector of [4 x float] to be copied to the lower
4808
+ /// 128 bits of the result.
4809
+ /// \returns A 256-bit floating-point vector of [8 x float] containing the
4810
+ /// concatenated result.
4811
+ static __inline __m256 __DEFAULT_FN_ATTRS
4812
+ _mm256_set_m128 (__m128 __hi, __m128 __lo)
4813
+ {
4814
+ return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7);
4815
+ }
4816
+
4817
+ /// Constructs a 256-bit floating-point vector of [4 x double] by
4818
+ /// concatenating two 128-bit floating-point vectors of [2 x double].
4819
+ ///
4820
+ /// \headerfile <x86intrin.h>
4821
+ ///
4822
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4823
+ ///
4824
+ /// \param __hi
4825
+ /// A 128-bit floating-point vector of [2 x double] to be copied to the upper
4826
+ /// 128 bits of the result.
4827
+ /// \param __lo
4828
+ /// A 128-bit floating-point vector of [2 x double] to be copied to the lower
4829
+ /// 128 bits of the result.
4830
+ /// \returns A 256-bit floating-point vector of [4 x double] containing the
4831
+ /// concatenated result.
4832
+ static __inline __m256d __DEFAULT_FN_ATTRS
4833
+ _mm256_set_m128d (__m128d __hi, __m128d __lo)
4834
+ {
4835
+ return (__m256d) __builtin_shufflevector((__v2df)__lo, (__v2df)__hi, 0, 1, 2, 3);
4836
+ }
4837
+
4838
+ /// Constructs a 256-bit integer vector by concatenating two 128-bit
4839
+ /// integer vectors.
4840
+ ///
4841
+ /// \headerfile <x86intrin.h>
4842
+ ///
4843
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4844
+ ///
4845
+ /// \param __hi
4846
+ /// A 128-bit integer vector to be copied to the upper 128 bits of the
4847
+ /// result.
4848
+ /// \param __lo
4849
+ /// A 128-bit integer vector to be copied to the lower 128 bits of the
4850
+ /// result.
4851
+ /// \returns A 256-bit integer vector containing the concatenated result.
4852
+ static __inline __m256i __DEFAULT_FN_ATTRS
4853
+ _mm256_set_m128i (__m128i __hi, __m128i __lo)
4854
+ {
4855
+ return (__m256i) __builtin_shufflevector((__v2di)__lo, (__v2di)__hi, 0, 1, 2, 3);
4856
+ }
4857
+
4858
+ /// Constructs a 256-bit floating-point vector of [8 x float] by
4859
+ /// concatenating two 128-bit floating-point vectors of [4 x float]. This is
4860
+ /// similar to _mm256_set_m128, but the order of the input parameters is
4861
+ /// swapped.
4862
+ ///
4863
+ /// \headerfile <x86intrin.h>
4864
+ ///
4865
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4866
+ ///
4867
+ /// \param __lo
4868
+ /// A 128-bit floating-point vector of [4 x float] to be copied to the lower
4869
+ /// 128 bits of the result.
4870
+ /// \param __hi
4871
+ /// A 128-bit floating-point vector of [4 x float] to be copied to the upper
4872
+ /// 128 bits of the result.
4873
+ /// \returns A 256-bit floating-point vector of [8 x float] containing the
4874
+ /// concatenated result.
4875
+ static __inline __m256 __DEFAULT_FN_ATTRS
4876
+ _mm256_setr_m128 (__m128 __lo, __m128 __hi)
4877
+ {
4878
+ return _mm256_set_m128(__hi, __lo);
4879
+ }
4880
+
4881
+ /// Constructs a 256-bit floating-point vector of [4 x double] by
4882
+ /// concatenating two 128-bit floating-point vectors of [2 x double]. This is
4883
+ /// similar to _mm256_set_m128d, but the order of the input parameters is
4884
+ /// swapped.
4885
+ ///
4886
+ /// \headerfile <x86intrin.h>
4887
+ ///
4888
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4889
+ ///
4890
+ /// \param __lo
4891
+ /// A 128-bit floating-point vector of [2 x double] to be copied to the lower
4892
+ /// 128 bits of the result.
4893
+ /// \param __hi
4894
+ /// A 128-bit floating-point vector of [2 x double] to be copied to the upper
4895
+ /// 128 bits of the result.
4896
+ /// \returns A 256-bit floating-point vector of [4 x double] containing the
4897
+ /// concatenated result.
4898
+ static __inline __m256d __DEFAULT_FN_ATTRS
4899
+ _mm256_setr_m128d (__m128d __lo, __m128d __hi)
4900
+ {
4901
+ return (__m256d)_mm256_set_m128d(__hi, __lo);
4902
+ }
4903
+
4904
+ /// Constructs a 256-bit integer vector by concatenating two 128-bit
4905
+ /// integer vectors. This is similar to _mm256_set_m128i, but the order of
4906
+ /// the input parameters is swapped.
4907
+ ///
4908
+ /// \headerfile <x86intrin.h>
4909
+ ///
4910
+ /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4911
+ ///
4912
+ /// \param __lo
4913
+ /// A 128-bit integer vector to be copied to the lower 128 bits of the
4914
+ /// result.
4915
+ /// \param __hi
4916
+ /// A 128-bit integer vector to be copied to the upper 128 bits of the
4917
+ /// result.
4918
+ /// \returns A 256-bit integer vector containing the concatenated result.
4919
+ static __inline __m256i __DEFAULT_FN_ATTRS
4920
+ _mm256_setr_m128i (__m128i __lo, __m128i __hi)
4921
+ {
4922
+ return (__m256i)_mm256_set_m128i(__hi, __lo);
4923
+ }
4750
4924
 
4751
4925
  /* SIMD load ops (unaligned) */
4752
4926
  /// Loads two 128-bit floating-point vectors of [4 x float] from
@@ -4773,8 +4947,7 @@ _mm256_zextsi128_si256(__m128i __a)
4773
4947
  static __inline __m256 __DEFAULT_FN_ATTRS
4774
4948
  _mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo)
4775
4949
  {
4776
- __m256 __v256 = _mm256_castps128_ps256(_mm_loadu_ps(__addr_lo));
4777
- return _mm256_insertf128_ps(__v256, _mm_loadu_ps(__addr_hi), 1);
4950
+ return _mm256_set_m128(_mm_loadu_ps(__addr_hi), _mm_loadu_ps(__addr_lo));
4778
4951
  }
4779
4952
 
4780
4953
  /// Loads two 128-bit floating-point vectors of [2 x double] from
@@ -4801,8 +4974,7 @@ _mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo)
4801
4974
  static __inline __m256d __DEFAULT_FN_ATTRS
4802
4975
  _mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo)
4803
4976
  {
4804
- __m256d __v256 = _mm256_castpd128_pd256(_mm_loadu_pd(__addr_lo));
4805
- return _mm256_insertf128_pd(__v256, _mm_loadu_pd(__addr_hi), 1);
4977
+ return _mm256_set_m128d(_mm_loadu_pd(__addr_hi), _mm_loadu_pd(__addr_lo));
4806
4978
  }
4807
4979
 
4808
4980
  /// Loads two 128-bit integer vectors from unaligned memory locations and
@@ -4826,8 +4998,7 @@ _mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo)
4826
4998
  static __inline __m256i __DEFAULT_FN_ATTRS
4827
4999
  _mm256_loadu2_m128i(__m128i_u const *__addr_hi, __m128i_u const *__addr_lo)
4828
5000
  {
4829
- __m256i __v256 = _mm256_castsi128_si256(_mm_loadu_si128(__addr_lo));
4830
- return _mm256_insertf128_si256(__v256, _mm_loadu_si128(__addr_hi), 1);
5001
+ return _mm256_set_m128i(_mm_loadu_si128(__addr_hi), _mm_loadu_si128(__addr_lo));
4831
5002
  }
4832
5003
 
4833
5004
  /* SIMD store ops (unaligned) */
@@ -4918,135 +5089,6 @@ _mm256_storeu2_m128i(__m128i_u *__addr_hi, __m128i_u *__addr_lo, __m256i __a)
4918
5089
  _mm_storeu_si128(__addr_hi, __v128);
4919
5090
  }
4920
5091
 
4921
- /// Constructs a 256-bit floating-point vector of [8 x float] by
4922
- /// concatenating two 128-bit floating-point vectors of [4 x float].
4923
- ///
4924
- /// \headerfile <x86intrin.h>
4925
- ///
4926
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4927
- ///
4928
- /// \param __hi
4929
- /// A 128-bit floating-point vector of [4 x float] to be copied to the upper
4930
- /// 128 bits of the result.
4931
- /// \param __lo
4932
- /// A 128-bit floating-point vector of [4 x float] to be copied to the lower
4933
- /// 128 bits of the result.
4934
- /// \returns A 256-bit floating-point vector of [8 x float] containing the
4935
- /// concatenated result.
4936
- static __inline __m256 __DEFAULT_FN_ATTRS
4937
- _mm256_set_m128 (__m128 __hi, __m128 __lo)
4938
- {
4939
- return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7);
4940
- }
4941
-
4942
- /// Constructs a 256-bit floating-point vector of [4 x double] by
4943
- /// concatenating two 128-bit floating-point vectors of [2 x double].
4944
- ///
4945
- /// \headerfile <x86intrin.h>
4946
- ///
4947
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4948
- ///
4949
- /// \param __hi
4950
- /// A 128-bit floating-point vector of [2 x double] to be copied to the upper
4951
- /// 128 bits of the result.
4952
- /// \param __lo
4953
- /// A 128-bit floating-point vector of [2 x double] to be copied to the lower
4954
- /// 128 bits of the result.
4955
- /// \returns A 256-bit floating-point vector of [4 x double] containing the
4956
- /// concatenated result.
4957
- static __inline __m256d __DEFAULT_FN_ATTRS
4958
- _mm256_set_m128d (__m128d __hi, __m128d __lo)
4959
- {
4960
- return (__m256d) __builtin_shufflevector((__v2df)__lo, (__v2df)__hi, 0, 1, 2, 3);
4961
- }
4962
-
4963
- /// Constructs a 256-bit integer vector by concatenating two 128-bit
4964
- /// integer vectors.
4965
- ///
4966
- /// \headerfile <x86intrin.h>
4967
- ///
4968
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4969
- ///
4970
- /// \param __hi
4971
- /// A 128-bit integer vector to be copied to the upper 128 bits of the
4972
- /// result.
4973
- /// \param __lo
4974
- /// A 128-bit integer vector to be copied to the lower 128 bits of the
4975
- /// result.
4976
- /// \returns A 256-bit integer vector containing the concatenated result.
4977
- static __inline __m256i __DEFAULT_FN_ATTRS
4978
- _mm256_set_m128i (__m128i __hi, __m128i __lo)
4979
- {
4980
- return (__m256i) __builtin_shufflevector((__v2di)__lo, (__v2di)__hi, 0, 1, 2, 3);
4981
- }
4982
-
4983
- /// Constructs a 256-bit floating-point vector of [8 x float] by
4984
- /// concatenating two 128-bit floating-point vectors of [4 x float]. This is
4985
- /// similar to _mm256_set_m128, but the order of the input parameters is
4986
- /// swapped.
4987
- ///
4988
- /// \headerfile <x86intrin.h>
4989
- ///
4990
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
4991
- ///
4992
- /// \param __lo
4993
- /// A 128-bit floating-point vector of [4 x float] to be copied to the lower
4994
- /// 128 bits of the result.
4995
- /// \param __hi
4996
- /// A 128-bit floating-point vector of [4 x float] to be copied to the upper
4997
- /// 128 bits of the result.
4998
- /// \returns A 256-bit floating-point vector of [8 x float] containing the
4999
- /// concatenated result.
5000
- static __inline __m256 __DEFAULT_FN_ATTRS
5001
- _mm256_setr_m128 (__m128 __lo, __m128 __hi)
5002
- {
5003
- return _mm256_set_m128(__hi, __lo);
5004
- }
5005
-
5006
- /// Constructs a 256-bit floating-point vector of [4 x double] by
5007
- /// concatenating two 128-bit floating-point vectors of [2 x double]. This is
5008
- /// similar to _mm256_set_m128d, but the order of the input parameters is
5009
- /// swapped.
5010
- ///
5011
- /// \headerfile <x86intrin.h>
5012
- ///
5013
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
5014
- ///
5015
- /// \param __lo
5016
- /// A 128-bit floating-point vector of [2 x double] to be copied to the lower
5017
- /// 128 bits of the result.
5018
- /// \param __hi
5019
- /// A 128-bit floating-point vector of [2 x double] to be copied to the upper
5020
- /// 128 bits of the result.
5021
- /// \returns A 256-bit floating-point vector of [4 x double] containing the
5022
- /// concatenated result.
5023
- static __inline __m256d __DEFAULT_FN_ATTRS
5024
- _mm256_setr_m128d (__m128d __lo, __m128d __hi)
5025
- {
5026
- return (__m256d)_mm256_set_m128d(__hi, __lo);
5027
- }
5028
-
5029
- /// Constructs a 256-bit integer vector by concatenating two 128-bit
5030
- /// integer vectors. This is similar to _mm256_set_m128i, but the order of
5031
- /// the input parameters is swapped.
5032
- ///
5033
- /// \headerfile <x86intrin.h>
5034
- ///
5035
- /// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
5036
- ///
5037
- /// \param __lo
5038
- /// A 128-bit integer vector to be copied to the lower 128 bits of the
5039
- /// result.
5040
- /// \param __hi
5041
- /// A 128-bit integer vector to be copied to the upper 128 bits of the
5042
- /// result.
5043
- /// \returns A 256-bit integer vector containing the concatenated result.
5044
- static __inline __m256i __DEFAULT_FN_ATTRS
5045
- _mm256_setr_m128i (__m128i __lo, __m128i __hi)
5046
- {
5047
- return (__m256i)_mm256_set_m128i(__hi, __lo);
5048
- }
5049
-
5050
5092
  #undef __DEFAULT_FN_ATTRS
5051
5093
  #undef __DEFAULT_FN_ATTRS128
5052
5094