@cpp-linter/clang-tidy-darwin-arm64 16.0.3 → 18.1.5

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 (250) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{16 → 18}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{16 → 18}/include/__clang_cuda_intrinsics.h +191 -0
  5. package/lib/clang/{16 → 18}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{16 → 18}/include/__clang_cuda_math.h +3 -3
  7. package/lib/clang/{16 → 18}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{16 → 18}/include/__clang_hip_cmath.h +1 -1
  9. package/lib/clang/{16 → 18}/include/__clang_hip_libdevice_declares.h +32 -30
  10. package/lib/clang/{16 → 18}/include/__clang_hip_math.h +244 -238
  11. package/lib/clang/{16 → 18}/include/__clang_hip_runtime_wrapper.h +44 -23
  12. package/lib/clang/18/include/__stdarg___gnuc_va_list.h +13 -0
  13. package/lib/clang/18/include/__stdarg___va_copy.h +12 -0
  14. package/lib/clang/18/include/__stdarg_va_arg.h +22 -0
  15. package/lib/clang/18/include/__stdarg_va_copy.h +12 -0
  16. package/lib/clang/18/include/__stdarg_va_list.h +13 -0
  17. package/lib/clang/{16 → 18}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/18/include/__stddef_null.h +29 -0
  19. package/lib/clang/18/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/18/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/18/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/18/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/18/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/18/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/18/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/18/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/18/include/adcintrin.h +160 -0
  28. package/lib/clang/18/include/adxintrin.h +102 -0
  29. package/lib/clang/{16 → 18}/include/altivec.h +167 -136
  30. package/lib/clang/{16 → 18}/include/ammintrin.h +4 -4
  31. package/lib/clang/18/include/amxcomplexintrin.h +169 -0
  32. package/lib/clang/{16 → 18}/include/arm_acle.h +124 -40
  33. package/lib/clang/{16 → 18}/include/arm_neon.h +249 -328
  34. package/lib/clang/18/include/arm_sme.h +2412 -0
  35. package/lib/clang/{16 → 18}/include/arm_sve.h +7454 -364
  36. package/lib/clang/18/include/arm_vector_types.h +345 -0
  37. package/lib/clang/18/include/avx2intrin.h +5284 -0
  38. package/lib/clang/{16 → 18}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{16 → 18}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{16 → 18}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{16 → 18}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{16 → 18}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{16 → 18}/include/avx512fintrin.h +24 -10
  44. package/lib/clang/{16 → 18}/include/avx512fp16intrin.h +18 -12
  45. package/lib/clang/{16 → 18}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{16 → 18}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{16 → 18}/include/avx512pfintrin.h +0 -5
  48. package/lib/clang/{16 → 18}/include/avx512vbmi2intrin.h +1 -1
  49. package/lib/clang/{16 → 18}/include/avx512vbmiintrin.h +3 -2
  50. package/lib/clang/{16 → 18}/include/avx512vbmivlintrin.h +8 -3
  51. package/lib/clang/{16 → 18}/include/avx512vlbf16intrin.h +8 -6
  52. package/lib/clang/{16 → 18}/include/avx512vlbitalgintrin.h +8 -2
  53. package/lib/clang/{16 → 18}/include/avx512vlbwintrin.h +8 -2
  54. package/lib/clang/{16 → 18}/include/avx512vlcdintrin.h +8 -3
  55. package/lib/clang/{16 → 18}/include/avx512vldqintrin.h +8 -2
  56. package/lib/clang/{16 → 18}/include/avx512vlfp16intrin.h +2 -2
  57. package/lib/clang/{16 → 18}/include/avx512vlintrin.h +8 -2
  58. package/lib/clang/{16 → 18}/include/avx512vlvbmi2intrin.h +8 -2
  59. package/lib/clang/{16 → 18}/include/avx512vlvnniintrin.h +8 -2
  60. package/lib/clang/{16 → 18}/include/avx512vlvp2intersectintrin.h +6 -4
  61. package/lib/clang/{16 → 18}/include/avx512vnniintrin.h +3 -2
  62. package/lib/clang/{16 → 18}/include/avx512vp2intersectintrin.h +3 -2
  63. package/lib/clang/{16 → 18}/include/avx512vpopcntdqintrin.h +3 -1
  64. package/lib/clang/{16 → 18}/include/avx512vpopcntdqvlintrin.h +6 -2
  65. package/lib/clang/{16 → 18}/include/avxintrin.h +29 -12
  66. package/lib/clang/18/include/avxvnniint16intrin.h +473 -0
  67. package/lib/clang/18/include/bmi2intrin.h +255 -0
  68. package/lib/clang/{16 → 18}/include/bmiintrin.h +231 -46
  69. package/lib/clang/{16 → 18}/include/clflushoptintrin.h +9 -0
  70. package/lib/clang/{16 → 18}/include/clzerointrin.h +7 -5
  71. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.h +9 -0
  72. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  73. package/lib/clang/18/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  74. package/lib/clang/{16 → 18}/include/emmintrin.h +10 -10
  75. package/lib/clang/18/include/fmaintrin.h +780 -0
  76. package/lib/clang/{16 → 18}/include/gfniintrin.h +23 -6
  77. package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +624 -0
  78. package/lib/clang/18/include/ia32intrin.h +863 -0
  79. package/lib/clang/{16 → 18}/include/immintrin.h +182 -11
  80. package/lib/clang/{16 → 18}/include/intrin.h +16 -0
  81. package/lib/clang/{16 → 18}/include/larchintrin.h +13 -1
  82. package/lib/clang/18/include/lasxintrin.h +3884 -0
  83. package/lib/clang/{16 → 18}/include/limits.h +7 -5
  84. package/lib/clang/18/include/llvm_libc_wrappers/assert.h +34 -0
  85. package/lib/clang/18/include/llvm_libc_wrappers/ctype.h +102 -0
  86. package/lib/clang/18/include/llvm_libc_wrappers/inttypes.h +34 -0
  87. package/lib/clang/18/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/18/include/llvm_libc_wrappers/stdlib.h +45 -0
  89. package/lib/clang/18/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/18/include/llvm_libc_wrappers/time.h +34 -0
  91. package/lib/clang/18/include/lsxintrin.h +3750 -0
  92. package/lib/clang/{16 → 18}/include/mmintrin.h +7 -5
  93. package/lib/clang/{16 → 18}/include/module.modulemap +155 -2
  94. package/lib/clang/18/include/mwaitxintrin.h +62 -0
  95. package/lib/clang/{16 → 18}/include/opencl-c-base.h +8 -0
  96. package/lib/clang/{16 → 18}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  97. package/lib/clang/{16 → 18}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{16 → 18}/include/openmp_wrappers/new +1 -1
  99. package/lib/clang/{16 → 18}/include/pmmintrin.h +15 -8
  100. package/lib/clang/{16 → 18}/include/ppc_wrappers/emmintrin.h +2 -1
  101. package/lib/clang/18/include/ppc_wrappers/nmmintrin.h +26 -0
  102. package/lib/clang/{16 → 18}/include/ppc_wrappers/smmintrin.h +37 -17
  103. package/lib/clang/18/include/rdseedintrin.h +105 -0
  104. package/lib/clang/18/include/riscv_bitmanip.h +195 -0
  105. package/lib/clang/18/include/riscv_crypto.h +170 -0
  106. package/lib/clang/18/include/riscv_ntlh.h +26 -0
  107. package/lib/clang/18/include/riscv_vector.h +431 -0
  108. package/lib/clang/18/include/sha512intrin.h +200 -0
  109. package/lib/clang/18/include/shaintrin.h +189 -0
  110. package/lib/clang/18/include/sifive_vector.h +16 -0
  111. package/lib/clang/18/include/sm3intrin.h +238 -0
  112. package/lib/clang/18/include/sm4intrin.h +269 -0
  113. package/lib/clang/{16 → 18}/include/smmintrin.h +3 -3
  114. package/lib/clang/{16 → 18}/include/stdalign.h +3 -0
  115. package/lib/clang/18/include/stdarg.h +79 -0
  116. package/lib/clang/{16 → 18}/include/stdatomic.h +7 -2
  117. package/lib/clang/18/include/stdckdint.h +42 -0
  118. package/lib/clang/18/include/stddef.h +123 -0
  119. package/lib/clang/{16 → 18}/include/stdint.h +19 -48
  120. package/lib/clang/{16 → 18}/include/stdnoreturn.h +2 -2
  121. package/lib/clang/{16 → 18}/include/tmmintrin.h +7 -2
  122. package/lib/clang/18/include/usermsrintrin.h +51 -0
  123. package/lib/clang/{16 → 18}/include/vaesintrin.h +4 -2
  124. package/lib/clang/{16 → 18}/include/vecintrin.h +217 -199
  125. package/lib/clang/{16 → 18}/include/wasm_simd128.h +132 -12
  126. package/lib/clang/{16 → 18}/include/x86gprintrin.h +5 -0
  127. package/lib/clang/{16 → 18}/include/xmmintrin.h +9 -5
  128. package/lib/clang/18/include/xsavecintrin.h +84 -0
  129. package/package.json +6 -6
  130. package/lib/clang/16/include/adxintrin.h +0 -72
  131. package/lib/clang/16/include/avx2intrin.h +0 -1148
  132. package/lib/clang/16/include/bmi2intrin.h +0 -81
  133. package/lib/clang/16/include/fmaintrin.h +0 -216
  134. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +0 -223
  135. package/lib/clang/16/include/ia32intrin.h +0 -441
  136. package/lib/clang/16/include/mwaitxintrin.h +0 -33
  137. package/lib/clang/16/include/rdseedintrin.h +0 -42
  138. package/lib/clang/16/include/riscv_vector.h +0 -211
  139. package/lib/clang/16/include/shaintrin.h +0 -61
  140. package/lib/clang/16/include/stdarg.h +0 -51
  141. package/lib/clang/16/include/stddef.h +0 -128
  142. package/lib/clang/16/include/xsavecintrin.h +0 -34
  143. /package/lib/clang/{16 → 18}/include/__clang_cuda_builtin_vars.h +0 -0
  144. /package/lib/clang/{16 → 18}/include/__clang_cuda_cmath.h +0 -0
  145. /package/lib/clang/{16 → 18}/include/__clang_cuda_complex_builtins.h +0 -0
  146. /package/lib/clang/{16 → 18}/include/__clang_cuda_math_forward_declares.h +0 -0
  147. /package/lib/clang/{16 → 18}/include/__clang_cuda_texture_intrinsics.h +0 -0
  148. /package/lib/clang/{16 → 18}/include/__clang_hip_stdlib.h +0 -0
  149. /package/lib/clang/{16 → 18}/include/__wmmintrin_aes.h +0 -0
  150. /package/lib/clang/{16 → 18}/include/__wmmintrin_pclmul.h +0 -0
  151. /package/lib/clang/{16 → 18}/include/amxfp16intrin.h +0 -0
  152. /package/lib/clang/{16 → 18}/include/amxintrin.h +0 -0
  153. /package/lib/clang/{16 → 18}/include/arm64intr.h +0 -0
  154. /package/lib/clang/{16 → 18}/include/arm_bf16.h +0 -0
  155. /package/lib/clang/{16 → 18}/include/arm_cde.h +0 -0
  156. /package/lib/clang/{16 → 18}/include/arm_cmse.h +0 -0
  157. /package/lib/clang/{16 → 18}/include/arm_fp16.h +0 -0
  158. /package/lib/clang/{16 → 18}/include/arm_mve.h +0 -0
  159. /package/lib/clang/{16 → 18}/include/arm_neon_sve_bridge.h +0 -0
  160. /package/lib/clang/{16 → 18}/include/armintr.h +0 -0
  161. /package/lib/clang/{16 → 18}/include/avx512erintrin.h +0 -0
  162. /package/lib/clang/{16 → 18}/include/avxifmaintrin.h +0 -0
  163. /package/lib/clang/{16 → 18}/include/avxneconvertintrin.h +0 -0
  164. /package/lib/clang/{16 → 18}/include/avxvnniint8intrin.h +0 -0
  165. /package/lib/clang/{16 → 18}/include/avxvnniintrin.h +0 -0
  166. /package/lib/clang/{16 → 18}/include/builtins.h +0 -0
  167. /package/lib/clang/{16 → 18}/include/cet.h +0 -0
  168. /package/lib/clang/{16 → 18}/include/cetintrin.h +0 -0
  169. /package/lib/clang/{16 → 18}/include/cldemoteintrin.h +0 -0
  170. /package/lib/clang/{16 → 18}/include/clwbintrin.h +0 -0
  171. /package/lib/clang/{16 → 18}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{16 → 18}/include/cpuid.h +0 -0
  173. /package/lib/clang/{16 → 18}/include/crc32intrin.h +0 -0
  174. /package/lib/clang/{16 → 18}/include/cuda_wrappers/algorithm +0 -0
  175. /package/lib/clang/{16 → 18}/include/cuda_wrappers/cmath +0 -0
  176. /package/lib/clang/{16 → 18}/include/cuda_wrappers/complex +0 -0
  177. /package/lib/clang/{16 → 18}/include/cuda_wrappers/new +0 -0
  178. /package/lib/clang/{16 → 18}/include/enqcmdintrin.h +0 -0
  179. /package/lib/clang/{16 → 18}/include/f16cintrin.h +0 -0
  180. /package/lib/clang/{16 → 18}/include/float.h +0 -0
  181. /package/lib/clang/{16 → 18}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{16 → 18}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{16 → 18}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{16 → 18}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{16 → 18}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{16 → 18}/include/hlsl/hlsl_basic_types.h +0 -0
  187. /package/lib/clang/{16 → 18}/include/hlsl.h +0 -0
  188. /package/lib/clang/{16 → 18}/include/hresetintrin.h +0 -0
  189. /package/lib/clang/{16 → 18}/include/htmintrin.h +0 -0
  190. /package/lib/clang/{16 → 18}/include/htmxlintrin.h +0 -0
  191. /package/lib/clang/{16 → 18}/include/hvx_hexagon_protos.h +0 -0
  192. /package/lib/clang/{16 → 18}/include/inttypes.h +0 -0
  193. /package/lib/clang/{16 → 18}/include/invpcidintrin.h +0 -0
  194. /package/lib/clang/{16 → 18}/include/iso646.h +0 -0
  195. /package/lib/clang/{16 → 18}/include/keylockerintrin.h +0 -0
  196. /package/lib/clang/{16 → 18}/include/lwpintrin.h +0 -0
  197. /package/lib/clang/{16 → 18}/include/lzcntintrin.h +0 -0
  198. /package/lib/clang/{16 → 18}/include/mm3dnow.h +0 -0
  199. /package/lib/clang/{16 → 18}/include/mm_malloc.h +0 -0
  200. /package/lib/clang/{16 → 18}/include/movdirintrin.h +0 -0
  201. /package/lib/clang/{16 → 18}/include/msa.h +0 -0
  202. /package/lib/clang/{16 → 18}/include/nmmintrin.h +0 -0
  203. /package/lib/clang/{16 → 18}/include/opencl-c.h +0 -0
  204. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex +0 -0
  205. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex.h +0 -0
  206. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex_cmath.h +0 -0
  207. /package/lib/clang/{16 → 18}/include/openmp_wrappers/math.h +0 -0
  208. /package/lib/clang/{16 → 18}/include/pconfigintrin.h +0 -0
  209. /package/lib/clang/{16 → 18}/include/pkuintrin.h +0 -0
  210. /package/lib/clang/{16 → 18}/include/popcntintrin.h +0 -0
  211. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmi2intrin.h +0 -0
  212. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmiintrin.h +0 -0
  213. /package/lib/clang/{16 → 18}/include/ppc_wrappers/immintrin.h +0 -0
  214. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mm_malloc.h +0 -0
  215. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mmintrin.h +0 -0
  216. /package/lib/clang/{16 → 18}/include/ppc_wrappers/pmmintrin.h +0 -0
  217. /package/lib/clang/{16 → 18}/include/ppc_wrappers/tmmintrin.h +0 -0
  218. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86gprintrin.h +0 -0
  219. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86intrin.h +0 -0
  220. /package/lib/clang/{16 → 18}/include/ppc_wrappers/xmmintrin.h +0 -0
  221. /package/lib/clang/{16 → 18}/include/prfchiintrin.h +0 -0
  222. /package/lib/clang/{16 → 18}/include/prfchwintrin.h +0 -0
  223. /package/lib/clang/{16 → 18}/include/ptwriteintrin.h +0 -0
  224. /package/lib/clang/{16 → 18}/include/raointintrin.h +0 -0
  225. /package/lib/clang/{16 → 18}/include/rdpruintrin.h +0 -0
  226. /package/lib/clang/{16 → 18}/include/rtmintrin.h +0 -0
  227. /package/lib/clang/{16 → 18}/include/s390intrin.h +0 -0
  228. /package/lib/clang/{16 → 18}/include/serializeintrin.h +0 -0
  229. /package/lib/clang/{16 → 18}/include/sgxintrin.h +0 -0
  230. /package/lib/clang/{16 → 18}/include/stdbool.h +0 -0
  231. /package/lib/clang/{16 → 18}/include/tbmintrin.h +0 -0
  232. /package/lib/clang/{16 → 18}/include/tgmath.h +0 -0
  233. /package/lib/clang/{16 → 18}/include/tsxldtrkintrin.h +0 -0
  234. /package/lib/clang/{16 → 18}/include/uintrintrin.h +0 -0
  235. /package/lib/clang/{16 → 18}/include/unwind.h +0 -0
  236. /package/lib/clang/{16 → 18}/include/vadefs.h +0 -0
  237. /package/lib/clang/{16 → 18}/include/varargs.h +0 -0
  238. /package/lib/clang/{16 → 18}/include/velintrin.h +0 -0
  239. /package/lib/clang/{16 → 18}/include/velintrin_approx.h +0 -0
  240. /package/lib/clang/{16 → 18}/include/velintrin_gen.h +0 -0
  241. /package/lib/clang/{16 → 18}/include/vpclmulqdqintrin.h +0 -0
  242. /package/lib/clang/{16 → 18}/include/waitpkgintrin.h +0 -0
  243. /package/lib/clang/{16 → 18}/include/wbnoinvdintrin.h +0 -0
  244. /package/lib/clang/{16 → 18}/include/wmmintrin.h +0 -0
  245. /package/lib/clang/{16 → 18}/include/x86intrin.h +0 -0
  246. /package/lib/clang/{16 → 18}/include/xopintrin.h +0 -0
  247. /package/lib/clang/{16 → 18}/include/xsaveintrin.h +0 -0
  248. /package/lib/clang/{16 → 18}/include/xsaveoptintrin.h +0 -0
  249. /package/lib/clang/{16 → 18}/include/xsavesintrin.h +0 -0
  250. /package/lib/clang/{16 → 18}/include/xtestintrin.h +0 -0
@@ -28,8 +28,9 @@
28
28
  #ifndef _AVX512VP2INTERSECT_H
29
29
  #define _AVX512VP2INTERSECT_H
30
30
 
31
- #define __DEFAULT_FN_ATTRS \
32
- __attribute__((__always_inline__, __nodebug__, __target__("avx512vp2intersect"), \
31
+ #define __DEFAULT_FN_ATTRS \
32
+ __attribute__((__always_inline__, __nodebug__, \
33
+ __target__("avx512vp2intersect,evex512"), \
33
34
  __min_vector_width__(512)))
34
35
 
35
36
  /// Store, in an even/odd pair of mask registers, the indicators of the
@@ -17,7 +17,9 @@
17
17
 
18
18
  /* Define the default attributes for the functions in this file. */
19
19
  #define __DEFAULT_FN_ATTRS \
20
- __attribute__((__always_inline__, __nodebug__, __target__("avx512vpopcntdq"), __min_vector_width__(512)))
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("avx512vpopcntdq,evex512"), \
22
+ __min_vector_width__(512)))
21
23
 
22
24
  static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi64(__m512i __A) {
23
25
  return (__m512i)__builtin_ia32_vpopcntq_512((__v8di)__A);
@@ -17,9 +17,13 @@
17
17
 
18
18
  /* Define the default attributes for the functions in this file. */
19
19
  #define __DEFAULT_FN_ATTRS128 \
20
- __attribute__((__always_inline__, __nodebug__, __target__("avx512vpopcntdq,avx512vl"), __min_vector_width__(128)))
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("avx512vpopcntdq,avx512vl,no-evex512"), \
22
+ __min_vector_width__(128)))
21
23
  #define __DEFAULT_FN_ATTRS256 \
22
- __attribute__((__always_inline__, __nodebug__, __target__("avx512vpopcntdq,avx512vl"), __min_vector_width__(256)))
24
+ __attribute__((__always_inline__, __nodebug__, \
25
+ __target__("avx512vpopcntdq,avx512vl,no-evex512"), \
26
+ __min_vector_width__(256)))
23
27
 
24
28
  static __inline__ __m128i __DEFAULT_FN_ATTRS128
25
29
  _mm_popcnt_epi64(__m128i __A) {
@@ -50,8 +50,12 @@ typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
50
50
  #endif
51
51
 
52
52
  /* Define the default attributes for the functions in this file. */
53
- #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(256)))
54
- #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(128)))
53
+ #define __DEFAULT_FN_ATTRS \
54
+ __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \
55
+ __min_vector_width__(256)))
56
+ #define __DEFAULT_FN_ATTRS128 \
57
+ __attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \
58
+ __min_vector_width__(128)))
55
59
 
56
60
  /* Arithmetic */
57
61
  /// Adds two 256-bit vectors of [4 x double].
@@ -3017,8 +3021,11 @@ _mm256_zeroupper(void)
3017
3021
  static __inline __m128 __DEFAULT_FN_ATTRS128
3018
3022
  _mm_broadcast_ss(float const *__a)
3019
3023
  {
3020
- float __f = *__a;
3021
- return __extension__ (__m128)(__v4sf){ __f, __f, __f, __f };
3024
+ struct __mm_broadcast_ss_struct {
3025
+ float __f;
3026
+ } __attribute__((__packed__, __may_alias__));
3027
+ float __f = ((const struct __mm_broadcast_ss_struct*)__a)->__f;
3028
+ return __extension__ (__m128){ __f, __f, __f, __f };
3022
3029
  }
3023
3030
 
3024
3031
  /// Loads a scalar double-precision floating point value from the
@@ -3036,7 +3043,10 @@ _mm_broadcast_ss(float const *__a)
3036
3043
  static __inline __m256d __DEFAULT_FN_ATTRS
3037
3044
  _mm256_broadcast_sd(double const *__a)
3038
3045
  {
3039
- double __d = *__a;
3046
+ struct __mm256_broadcast_sd_struct {
3047
+ double __d;
3048
+ } __attribute__((__packed__, __may_alias__));
3049
+ double __d = ((const struct __mm256_broadcast_sd_struct*)__a)->__d;
3040
3050
  return __extension__ (__m256d)(__v4df){ __d, __d, __d, __d };
3041
3051
  }
3042
3052
 
@@ -3055,7 +3065,10 @@ _mm256_broadcast_sd(double const *__a)
3055
3065
  static __inline __m256 __DEFAULT_FN_ATTRS
3056
3066
  _mm256_broadcast_ss(float const *__a)
3057
3067
  {
3058
- float __f = *__a;
3068
+ struct __mm256_broadcast_ss_struct {
3069
+ float __f;
3070
+ } __attribute__((__packed__, __may_alias__));
3071
+ float __f = ((const struct __mm256_broadcast_ss_struct*)__a)->__f;
3059
3072
  return __extension__ (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
3060
3073
  }
3061
3074
 
@@ -3554,7 +3567,7 @@ _mm_maskstore_ps(float *__p, __m128i __m, __m128 __a)
3554
3567
  /// \param __b
3555
3568
  /// A 256-bit integer vector containing the values to be moved.
3556
3569
  static __inline void __DEFAULT_FN_ATTRS
3557
- _mm256_stream_si256(__m256i *__a, __m256i __b)
3570
+ _mm256_stream_si256(void *__a, __m256i __b)
3558
3571
  {
3559
3572
  typedef __v4di __v4di_aligned __attribute__((aligned(32)));
3560
3573
  __builtin_nontemporal_store((__v4di_aligned)__b, (__v4di_aligned*)__a);
@@ -3574,7 +3587,7 @@ _mm256_stream_si256(__m256i *__a, __m256i __b)
3574
3587
  /// \param __b
3575
3588
  /// A 256-bit vector of [4 x double] containing the values to be moved.
3576
3589
  static __inline void __DEFAULT_FN_ATTRS
3577
- _mm256_stream_pd(double *__a, __m256d __b)
3590
+ _mm256_stream_pd(void *__a, __m256d __b)
3578
3591
  {
3579
3592
  typedef __v4df __v4df_aligned __attribute__((aligned(32)));
3580
3593
  __builtin_nontemporal_store((__v4df_aligned)__b, (__v4df_aligned*)__a);
@@ -3595,7 +3608,7 @@ _mm256_stream_pd(double *__a, __m256d __b)
3595
3608
  /// \param __a
3596
3609
  /// A 256-bit vector of [8 x float] containing the values to be moved.
3597
3610
  static __inline void __DEFAULT_FN_ATTRS
3598
- _mm256_stream_ps(float *__p, __m256 __a)
3611
+ _mm256_stream_ps(void *__p, __m256 __a)
3599
3612
  {
3600
3613
  typedef __v8sf __v8sf_aligned __attribute__((aligned(32)));
3601
3614
  __builtin_nontemporal_store((__v8sf_aligned)__a, (__v8sf_aligned*)__p);
@@ -4499,7 +4512,8 @@ _mm256_castsi256_si128(__m256i __a)
4499
4512
  static __inline __m256d __DEFAULT_FN_ATTRS
4500
4513
  _mm256_castpd128_pd256(__m128d __a)
4501
4514
  {
4502
- return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 1, -1, -1);
4515
+ return __builtin_shufflevector(
4516
+ (__v2df)__a, (__v2df)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
4503
4517
  }
4504
4518
 
4505
4519
  /// Constructs a 256-bit floating-point vector of [8 x float] from a
@@ -4520,7 +4534,9 @@ _mm256_castpd128_pd256(__m128d __a)
4520
4534
  static __inline __m256 __DEFAULT_FN_ATTRS
4521
4535
  _mm256_castps128_ps256(__m128 __a)
4522
4536
  {
4523
- return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1, 2, 3, -1, -1, -1, -1);
4537
+ return __builtin_shufflevector((__v4sf)__a,
4538
+ (__v4sf)__builtin_nondeterministic_value(__a),
4539
+ 0, 1, 2, 3, 4, 5, 6, 7);
4524
4540
  }
4525
4541
 
4526
4542
  /// Constructs a 256-bit integer vector from a 128-bit integer vector.
@@ -4539,7 +4555,8 @@ _mm256_castps128_ps256(__m128 __a)
4539
4555
  static __inline __m256i __DEFAULT_FN_ATTRS
4540
4556
  _mm256_castsi128_si256(__m128i __a)
4541
4557
  {
4542
- return __builtin_shufflevector((__v2di)__a, (__v2di)__a, 0, 1, -1, -1);
4558
+ return __builtin_shufflevector(
4559
+ (__v2di)__a, (__v2di)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
4543
4560
  }
4544
4561
 
4545
4562
  /// Constructs a 256-bit floating-point vector of [4 x double] from a
@@ -0,0 +1,473 @@
1
+ /*===----------- avxvnniint16intrin.h - AVXVNNIINT16 intrinsics-------------===
2
+ *
3
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ * See https://llvm.org/LICENSE.txt for license information.
5
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ *
7
+ *===-----------------------------------------------------------------------===
8
+ */
9
+
10
+ #ifndef __IMMINTRIN_H
11
+ #error \
12
+ "Never use <avxvnniint16intrin.h> directly; include <immintrin.h> instead."
13
+ #endif // __IMMINTRIN_H
14
+
15
+ #ifndef __AVXVNNIINT16INTRIN_H
16
+ #define __AVXVNNIINT16INTRIN_H
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS128 \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \
21
+ __min_vector_width__(128)))
22
+ #define __DEFAULT_FN_ATTRS256 \
23
+ __attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \
24
+ __min_vector_width__(256)))
25
+
26
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
27
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
28
+ /// signed 16-bit results. Sum these 2 results with the corresponding
29
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
30
+ ///
31
+ /// \headerfile <immintrin.h>
32
+ ///
33
+ /// \code
34
+ /// __m128i _mm_dpwsud_epi32(__m128i __W, __m128i __A, __m128i __B)
35
+ /// \endcode
36
+ ///
37
+ /// This intrinsic corresponds to the \c VPDPWSUD instruction.
38
+ ///
39
+ /// \param __W
40
+ /// A 128-bit vector of [4 x int].
41
+ /// \param __A
42
+ /// A 128-bit vector of [8 x short].
43
+ /// \param __B
44
+ /// A 128-bit vector of [8 x unsigned short].
45
+ /// \returns
46
+ /// A 128-bit vector of [4 x int].
47
+ ///
48
+ /// \code{.operation}
49
+ /// FOR j := 0 to 3
50
+ /// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
51
+ /// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
52
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
53
+ /// ENDFOR
54
+ /// dst[MAX:128] := 0
55
+ /// \endcode
56
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsud_epi32(__m128i __W,
57
+ __m128i __A,
58
+ __m128i __B) {
59
+ return (__m128i)__builtin_ia32_vpdpwsud128((__v4si)__W, (__v4si)__A,
60
+ (__v4si)__B);
61
+ }
62
+
63
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
64
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
65
+ /// signed 16-bit results. Sum these 2 results with the corresponding
66
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
67
+ ///
68
+ /// \headerfile <immintrin.h>
69
+ ///
70
+ /// \code
71
+ /// __m256i _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B)
72
+ /// \endcode
73
+ ///
74
+ /// This intrinsic corresponds to the \c VPDPWSUD instruction.
75
+ ///
76
+ /// \param __W
77
+ /// A 256-bit vector of [8 x int].
78
+ /// \param __A
79
+ /// A 256-bit vector of [16 x short].
80
+ /// \param __B
81
+ /// A 256-bit vector of [16 x unsigned short].
82
+ /// \returns
83
+ /// A 256-bit vector of [8 x int].
84
+ ///
85
+ /// \code{.operation}
86
+ /// FOR j := 0 to 7
87
+ /// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
88
+ /// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
89
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
90
+ /// ENDFOR
91
+ /// dst[MAX:256] := 0
92
+ /// \endcode
93
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
94
+ _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B) {
95
+ return (__m256i)__builtin_ia32_vpdpwsud256((__v8si)__W, (__v8si)__A,
96
+ (__v8si)__B);
97
+ }
98
+
99
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
100
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
101
+ /// signed 16-bit results. Sum these 2 results with the corresponding
102
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
103
+ /// 32-bit results in \a dst.
104
+ ///
105
+ /// \headerfile <immintrin.h>
106
+ ///
107
+ /// \code
108
+ /// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
109
+ /// \endcode
110
+ ///
111
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
112
+ ///
113
+ /// \param __W
114
+ /// A 128-bit vector of [4 x int].
115
+ /// \param __A
116
+ /// A 128-bit vector of [8 x short].
117
+ /// \param __B
118
+ /// A 128-bit vector of [8 x unsigned short].
119
+ /// \returns
120
+ /// A 128-bit vector of [4 x int].
121
+ ///
122
+ /// \code{.operation}
123
+ /// FOR j := 0 to 3
124
+ /// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
125
+ /// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
126
+ /// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
127
+ /// ENDFOR
128
+ /// dst[MAX:128] := 0
129
+ /// \endcode
130
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsuds_epi32(__m128i __W,
131
+ __m128i __A,
132
+ __m128i __B) {
133
+ return (__m128i)__builtin_ia32_vpdpwsuds128((__v4si)__W, (__v4si)__A,
134
+ (__v4si)__B);
135
+ }
136
+
137
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
138
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
139
+ /// signed 16-bit results. Sum these 2 results with the corresponding
140
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
141
+ /// 32-bit results in \a dst.
142
+ ///
143
+ /// \headerfile <immintrin.h>
144
+ ///
145
+ /// \code
146
+ /// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
147
+ /// \endcode
148
+ ///
149
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
150
+ ///
151
+ /// \param __W
152
+ /// A 256-bit vector of [8 x int].
153
+ /// \param __A
154
+ /// A 256-bit vector of [16 x short].
155
+ /// \param __B
156
+ /// A 256-bit vector of [16 x unsigned short].
157
+ /// \returns
158
+ /// A 256-bit vector of [8 x int].
159
+ ///
160
+ /// \code{.operation}
161
+ /// FOR j := 0 to 7
162
+ /// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
163
+ /// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
164
+ /// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
165
+ /// ENDFOR
166
+ /// dst[MAX:256] := 0
167
+ /// \endcode
168
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
169
+ _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
170
+ return (__m256i)__builtin_ia32_vpdpwsuds256((__v8si)__W, (__v8si)__A,
171
+ (__v8si)__B);
172
+ }
173
+
174
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
175
+ /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
176
+ /// signed 16-bit results. Sum these 2 results with the corresponding
177
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
178
+ ///
179
+ /// \headerfile <immintrin.h>
180
+ ///
181
+ /// \code
182
+ /// __m128i _mm_dpbusd_epi32(__m128i __W, __m128i __A, __m128i __B)
183
+ /// \endcode
184
+ ///
185
+ /// This intrinsic corresponds to the \c VPDPWUSD instruction.
186
+ ///
187
+ /// \param __W
188
+ /// A 128-bit vector of [4 x int].
189
+ /// \param __A
190
+ /// A 128-bit vector of [8 x unsigned short].
191
+ /// \param __B
192
+ /// A 128-bit vector of [8 x short].
193
+ /// \returns
194
+ /// A 128-bit vector of [4 x int].
195
+ ///
196
+ /// \code{.operation}
197
+ /// FOR j := 0 to 3
198
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
199
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
200
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
201
+ /// ENDFOR
202
+ /// dst[MAX:128] := 0
203
+ /// \endcode
204
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusd_epi32(__m128i __W,
205
+ __m128i __A,
206
+ __m128i __B) {
207
+ return (__m128i)__builtin_ia32_vpdpwusd128((__v4si)__W, (__v4si)__A,
208
+ (__v4si)__B);
209
+ }
210
+
211
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
212
+ /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
213
+ /// signed 16-bit results. Sum these 2 results with the corresponding
214
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
215
+ ///
216
+ /// \headerfile <immintrin.h>
217
+ ///
218
+ /// \code
219
+ /// __m256i _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B)
220
+ /// \endcode
221
+ ///
222
+ /// This intrinsic corresponds to the \c VPDPWUSD instruction.
223
+ ///
224
+ /// \param __W
225
+ /// A 256-bit vector of [8 x int].
226
+ /// \param __A
227
+ /// A 256-bit vector of [16 x unsigned short].
228
+ /// \param __B
229
+ /// A 256-bit vector of [16 x short].
230
+ /// \returns
231
+ /// A 256-bit vector of [8 x int].
232
+ ///
233
+ /// \code{.operation}
234
+ /// FOR j := 0 to 7
235
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
236
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
237
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
238
+ /// ENDFOR
239
+ /// dst[MAX:256] := 0
240
+ /// \endcode
241
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
242
+ _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B) {
243
+ return (__m256i)__builtin_ia32_vpdpwusd256((__v8si)__W, (__v8si)__A,
244
+ (__v8si)__B);
245
+ }
246
+
247
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
248
+ /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
249
+ /// signed 16-bit results. Sum these 2 results with the corresponding
250
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
251
+ /// 32-bit results in \a dst.
252
+ ///
253
+ /// \headerfile <immintrin.h>
254
+ ///
255
+ /// \code
256
+ /// __m128i _mm_dpwusds_epi32(__m128i __W, __m128i __A, __m128i __B)
257
+ /// \endcode
258
+ ///
259
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
260
+ ///
261
+ /// \param __W
262
+ /// A 128-bit vector of [4 x int].
263
+ /// \param __A
264
+ /// A 128-bit vector of [8 x unsigned short].
265
+ /// \param __B
266
+ /// A 128-bit vector of [8 x short].
267
+ /// \returns
268
+ /// A 128-bit vector of [4 x int].
269
+ ///
270
+ /// \code{.operation}
271
+ /// FOR j := 0 to 3
272
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
273
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
274
+ /// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
275
+ /// ENDFOR
276
+ /// dst[MAX:128] := 0
277
+ /// \endcode
278
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusds_epi32(__m128i __W,
279
+ __m128i __A,
280
+ __m128i __B) {
281
+ return (__m128i)__builtin_ia32_vpdpwusds128((__v4si)__W, (__v4si)__A,
282
+ (__v4si)__B);
283
+ }
284
+
285
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
286
+ /// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
287
+ /// signed 16-bit results. Sum these 2 results with the corresponding
288
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
289
+ /// 32-bit results in \a dst.
290
+ ///
291
+ /// \headerfile <immintrin.h>
292
+ ///
293
+ /// \code
294
+ /// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
295
+ /// \endcode
296
+ ///
297
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
298
+ ///
299
+ /// \param __W
300
+ /// A 256-bit vector of [8 x int].
301
+ /// \param __A
302
+ /// A 256-bit vector of [16 x unsigned short].
303
+ /// \param __B
304
+ /// A 256-bit vector of [16 x short].
305
+ /// \returns
306
+ /// A 256-bit vector of [8 x int].
307
+ ///
308
+ /// \code{.operation}
309
+ /// FOR j := 0 to 7
310
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
311
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
312
+ /// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
313
+ /// ENDFOR
314
+ /// dst[MAX:256] := 0
315
+ /// \endcode
316
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
317
+ _mm256_dpwusds_epi32(__m256i __W, __m256i __A, __m256i __B) {
318
+ return (__m256i)__builtin_ia32_vpdpwusds256((__v8si)__W, (__v8si)__A,
319
+ (__v8si)__B);
320
+ }
321
+
322
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
323
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
324
+ /// signed 16-bit results. Sum these 2 results with the corresponding
325
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
326
+ ///
327
+ /// \headerfile <immintrin.h>
328
+ ///
329
+ /// \code
330
+ /// __m128i _mm_dpwuud_epi32(__m128i __W, __m128i __A, __m128i __B)
331
+ /// \endcode
332
+ ///
333
+ /// This intrinsic corresponds to the \c VPDPWUUD instruction.
334
+ ///
335
+ /// \param __W
336
+ /// A 128-bit vector of [4 x unsigned int].
337
+ /// \param __A
338
+ /// A 128-bit vector of [8 x unsigned short].
339
+ /// \param __B
340
+ /// A 128-bit vector of [8 x unsigned short].
341
+ /// \returns
342
+ /// A 128-bit vector of [4 x unsigned int].
343
+ ///
344
+ /// \code{.operation}
345
+ /// FOR j := 0 to 3
346
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
347
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
348
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
349
+ /// ENDFOR
350
+ /// dst[MAX:128] := 0
351
+ /// \endcode
352
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuud_epi32(__m128i __W,
353
+ __m128i __A,
354
+ __m128i __B) {
355
+ return (__m128i)__builtin_ia32_vpdpwuud128((__v4si)__W, (__v4si)__A,
356
+ (__v4si)__B);
357
+ }
358
+
359
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
360
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
361
+ /// signed 16-bit results. Sum these 2 results with the corresponding
362
+ /// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
363
+ ///
364
+ /// \headerfile <immintrin.h>
365
+ ///
366
+ /// \code
367
+ /// __m256i _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B)
368
+ /// \endcode
369
+ ///
370
+ /// This intrinsic corresponds to the \c VPDPWUUD instruction.
371
+ ///
372
+ /// \param __W
373
+ /// A 256-bit vector of [8 x unsigned int].
374
+ /// \param __A
375
+ /// A 256-bit vector of [16 x unsigned short].
376
+ /// \param __B
377
+ /// A 256-bit vector of [16 x unsigned short].
378
+ /// \returns
379
+ /// A 256-bit vector of [8 x unsigned int].
380
+ ///
381
+ /// \code{.operation}
382
+ /// FOR j := 0 to 7
383
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
384
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
385
+ /// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
386
+ /// ENDFOR
387
+ /// dst[MAX:256] := 0
388
+ /// \endcode
389
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
390
+ _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B) {
391
+ return (__m256i)__builtin_ia32_vpdpwuud256((__v8si)__W, (__v8si)__A,
392
+ (__v8si)__B);
393
+ }
394
+
395
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
396
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
397
+ /// signed 16-bit results. Sum these 2 results with the corresponding
398
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
399
+ /// 32-bit results in \a dst.
400
+ ///
401
+ /// \headerfile <immintrin.h>
402
+ ///
403
+ /// \code
404
+ /// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
405
+ /// \endcode
406
+ ///
407
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
408
+ ///
409
+ /// \param __W
410
+ /// A 128-bit vector of [4 x unsigned int].
411
+ /// \param __A
412
+ /// A 128-bit vector of [8 x unsigned short].
413
+ /// \param __B
414
+ /// A 128-bit vector of [8 x unsigned short].
415
+ /// \returns
416
+ /// A 128-bit vector of [4 x unsigned int].
417
+ ///
418
+ /// \code{.operation}
419
+ /// FOR j := 0 to 3
420
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
421
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
422
+ /// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
423
+ /// ENDFOR
424
+ /// dst[MAX:128] := 0
425
+ /// \endcode
426
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuuds_epi32(__m128i __W,
427
+ __m128i __A,
428
+ __m128i __B) {
429
+ return (__m128i)__builtin_ia32_vpdpwuuds128((__v4si)__W, (__v4si)__A,
430
+ (__v4si)__B);
431
+ }
432
+
433
+ /// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
434
+ /// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
435
+ /// signed 16-bit results. Sum these 2 results with the corresponding
436
+ /// 32-bit integer in \a __W with signed saturation, and store the packed
437
+ /// 32-bit results in \a dst.
438
+ ///
439
+ /// \headerfile <immintrin.h>
440
+ ///
441
+ /// \code
442
+ /// __m256i _mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B)
443
+ /// \endcode
444
+ ///
445
+ /// This intrinsic corresponds to the \c VPDPWSUDS instruction.
446
+ ///
447
+ /// \param __W
448
+ /// A 256-bit vector of [8 x unsigned int].
449
+ /// \param __A
450
+ /// A 256-bit vector of [16 x unsigned short].
451
+ /// \param __B
452
+ /// A 256-bit vector of [16 x unsigned short].
453
+ /// \returns
454
+ /// A 256-bit vector of [8 x unsigned int].
455
+ ///
456
+ /// \code{.operation}
457
+ /// FOR j := 0 to 7
458
+ /// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
459
+ /// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
460
+ /// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
461
+ /// ENDFOR
462
+ /// dst[MAX:256] := 0
463
+ /// \endcode
464
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
465
+ _mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
466
+ return (__m256i)__builtin_ia32_vpdpwuuds256((__v8si)__W, (__v8si)__A,
467
+ (__v8si)__B);
468
+ }
469
+
470
+ #undef __DEFAULT_FN_ATTRS128
471
+ #undef __DEFAULT_FN_ATTRS256
472
+
473
+ #endif // __AVXVNNIINT16INTRIN_H