@cpp-linter/clang-tidy-win32-x64 16.0.3 → 17.0.6

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 (222) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{16 → 17}/include/__clang_cuda_intrinsics.h +191 -0
  4. package/lib/clang/{16 → 17}/include/__clang_cuda_math.h +1 -1
  5. package/lib/clang/{16 → 17}/include/__clang_hip_cmath.h +1 -1
  6. package/lib/clang/{16 → 17}/include/__clang_hip_libdevice_declares.h +32 -30
  7. package/lib/clang/{16 → 17}/include/__clang_hip_math.h +56 -71
  8. package/lib/clang/{16 → 17}/include/__clang_hip_runtime_wrapper.h +13 -0
  9. package/lib/clang/17/include/adxintrin.h +227 -0
  10. package/lib/clang/{16 → 17}/include/altivec.h +136 -124
  11. package/lib/clang/17/include/amxcomplexintrin.h +169 -0
  12. package/lib/clang/{16 → 17}/include/arm_acle.h +13 -9
  13. package/lib/clang/{16 → 17}/include/arm_neon.h +164 -1
  14. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +642 -0
  15. package/lib/clang/{16 → 17}/include/arm_sve.h +68 -13
  16. package/lib/clang/17/include/avx2intrin.h +5263 -0
  17. package/lib/clang/{16 → 17}/include/avx512fintrin.h +17 -7
  18. package/lib/clang/{16 → 17}/include/avx512fp16intrin.h +12 -8
  19. package/lib/clang/{16 → 17}/include/avxintrin.h +20 -7
  20. package/lib/clang/17/include/avxvnniint16intrin.h +473 -0
  21. package/lib/clang/17/include/bmi2intrin.h +255 -0
  22. package/lib/clang/{16 → 17}/include/clflushoptintrin.h +9 -0
  23. package/lib/clang/{16 → 17}/include/clzerointrin.h +7 -5
  24. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.h +9 -0
  25. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  26. package/lib/clang/17/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  27. package/lib/clang/17/include/fmaintrin.h +780 -0
  28. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +480 -0
  29. package/lib/clang/{16 → 17}/include/immintrin.h +116 -8
  30. package/lib/clang/{16 → 17}/include/limits.h +5 -1
  31. package/lib/clang/17/include/llvm_libc_wrappers/ctype.h +85 -0
  32. package/lib/clang/17/include/llvm_libc_wrappers/inttypes.h +34 -0
  33. package/lib/clang/17/include/llvm_libc_wrappers/stdio.h +34 -0
  34. package/lib/clang/17/include/llvm_libc_wrappers/stdlib.h +42 -0
  35. package/lib/clang/17/include/llvm_libc_wrappers/string.h +37 -0
  36. package/lib/clang/17/include/mwaitxintrin.h +62 -0
  37. package/lib/clang/{16 → 17}/include/opencl-c-base.h +3 -0
  38. package/lib/clang/{16 → 17}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  39. package/lib/clang/{16 → 17}/include/openmp_wrappers/new +1 -1
  40. package/lib/clang/{16 → 17}/include/pmmintrin.h +12 -6
  41. package/lib/clang/{16 → 17}/include/ppc_wrappers/emmintrin.h +2 -1
  42. package/lib/clang/{16 → 17}/include/ppc_wrappers/smmintrin.h +2 -2
  43. package/lib/clang/17/include/rdseedintrin.h +105 -0
  44. package/lib/clang/17/include/riscv_ntlh.h +28 -0
  45. package/lib/clang/17/include/riscv_vector.h +400 -0
  46. package/lib/clang/17/include/sha512intrin.h +200 -0
  47. package/lib/clang/17/include/shaintrin.h +189 -0
  48. package/lib/clang/17/include/sifive_vector.h +16 -0
  49. package/lib/clang/17/include/sm3intrin.h +238 -0
  50. package/lib/clang/17/include/sm4intrin.h +269 -0
  51. package/lib/clang/{16 → 17}/include/stdalign.h +5 -0
  52. package/lib/clang/{16 → 17}/include/stdatomic.h +9 -2
  53. package/lib/clang/{16 → 17}/include/stddef.h +5 -0
  54. package/lib/clang/{16 → 17}/include/wasm_simd128.h +132 -12
  55. package/lib/clang/17/include/xsavecintrin.h +84 -0
  56. package/package.json +6 -6
  57. package/lib/clang/16/include/adxintrin.h +0 -72
  58. package/lib/clang/16/include/avx2intrin.h +0 -1148
  59. package/lib/clang/16/include/bmi2intrin.h +0 -81
  60. package/lib/clang/16/include/fmaintrin.h +0 -216
  61. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +0 -223
  62. package/lib/clang/16/include/mwaitxintrin.h +0 -33
  63. package/lib/clang/16/include/rdseedintrin.h +0 -42
  64. package/lib/clang/16/include/riscv_vector.h +0 -211
  65. package/lib/clang/16/include/shaintrin.h +0 -61
  66. package/lib/clang/16/include/xsavecintrin.h +0 -34
  67. /package/lib/clang/{16 → 17}/include/__clang_cuda_builtin_vars.h +0 -0
  68. /package/lib/clang/{16 → 17}/include/__clang_cuda_cmath.h +0 -0
  69. /package/lib/clang/{16 → 17}/include/__clang_cuda_complex_builtins.h +0 -0
  70. /package/lib/clang/{16 → 17}/include/__clang_cuda_device_functions.h +0 -0
  71. /package/lib/clang/{16 → 17}/include/__clang_cuda_libdevice_declares.h +0 -0
  72. /package/lib/clang/{16 → 17}/include/__clang_cuda_math_forward_declares.h +0 -0
  73. /package/lib/clang/{16 → 17}/include/__clang_cuda_runtime_wrapper.h +0 -0
  74. /package/lib/clang/{16 → 17}/include/__clang_cuda_texture_intrinsics.h +0 -0
  75. /package/lib/clang/{16 → 17}/include/__clang_hip_stdlib.h +0 -0
  76. /package/lib/clang/{16 → 17}/include/__stddef_max_align_t.h +0 -0
  77. /package/lib/clang/{16 → 17}/include/__wmmintrin_aes.h +0 -0
  78. /package/lib/clang/{16 → 17}/include/__wmmintrin_pclmul.h +0 -0
  79. /package/lib/clang/{16 → 17}/include/ammintrin.h +0 -0
  80. /package/lib/clang/{16 → 17}/include/amxfp16intrin.h +0 -0
  81. /package/lib/clang/{16 → 17}/include/amxintrin.h +0 -0
  82. /package/lib/clang/{16 → 17}/include/arm64intr.h +0 -0
  83. /package/lib/clang/{16 → 17}/include/arm_bf16.h +0 -0
  84. /package/lib/clang/{16 → 17}/include/arm_cde.h +0 -0
  85. /package/lib/clang/{16 → 17}/include/arm_cmse.h +0 -0
  86. /package/lib/clang/{16 → 17}/include/arm_fp16.h +0 -0
  87. /package/lib/clang/{16 → 17}/include/arm_mve.h +0 -0
  88. /package/lib/clang/{16 → 17}/include/arm_neon_sve_bridge.h +0 -0
  89. /package/lib/clang/{16 → 17}/include/armintr.h +0 -0
  90. /package/lib/clang/{16 → 17}/include/avx512bf16intrin.h +0 -0
  91. /package/lib/clang/{16 → 17}/include/avx512bitalgintrin.h +0 -0
  92. /package/lib/clang/{16 → 17}/include/avx512bwintrin.h +0 -0
  93. /package/lib/clang/{16 → 17}/include/avx512cdintrin.h +0 -0
  94. /package/lib/clang/{16 → 17}/include/avx512dqintrin.h +0 -0
  95. /package/lib/clang/{16 → 17}/include/avx512erintrin.h +0 -0
  96. /package/lib/clang/{16 → 17}/include/avx512ifmaintrin.h +0 -0
  97. /package/lib/clang/{16 → 17}/include/avx512ifmavlintrin.h +0 -0
  98. /package/lib/clang/{16 → 17}/include/avx512pfintrin.h +0 -0
  99. /package/lib/clang/{16 → 17}/include/avx512vbmi2intrin.h +0 -0
  100. /package/lib/clang/{16 → 17}/include/avx512vbmiintrin.h +0 -0
  101. /package/lib/clang/{16 → 17}/include/avx512vbmivlintrin.h +0 -0
  102. /package/lib/clang/{16 → 17}/include/avx512vlbf16intrin.h +0 -0
  103. /package/lib/clang/{16 → 17}/include/avx512vlbitalgintrin.h +0 -0
  104. /package/lib/clang/{16 → 17}/include/avx512vlbwintrin.h +0 -0
  105. /package/lib/clang/{16 → 17}/include/avx512vlcdintrin.h +0 -0
  106. /package/lib/clang/{16 → 17}/include/avx512vldqintrin.h +0 -0
  107. /package/lib/clang/{16 → 17}/include/avx512vlfp16intrin.h +0 -0
  108. /package/lib/clang/{16 → 17}/include/avx512vlintrin.h +0 -0
  109. /package/lib/clang/{16 → 17}/include/avx512vlvbmi2intrin.h +0 -0
  110. /package/lib/clang/{16 → 17}/include/avx512vlvnniintrin.h +0 -0
  111. /package/lib/clang/{16 → 17}/include/avx512vlvp2intersectintrin.h +0 -0
  112. /package/lib/clang/{16 → 17}/include/avx512vnniintrin.h +0 -0
  113. /package/lib/clang/{16 → 17}/include/avx512vp2intersectintrin.h +0 -0
  114. /package/lib/clang/{16 → 17}/include/avx512vpopcntdqintrin.h +0 -0
  115. /package/lib/clang/{16 → 17}/include/avx512vpopcntdqvlintrin.h +0 -0
  116. /package/lib/clang/{16 → 17}/include/avxifmaintrin.h +0 -0
  117. /package/lib/clang/{16 → 17}/include/avxneconvertintrin.h +0 -0
  118. /package/lib/clang/{16 → 17}/include/avxvnniint8intrin.h +0 -0
  119. /package/lib/clang/{16 → 17}/include/avxvnniintrin.h +0 -0
  120. /package/lib/clang/{16 → 17}/include/bmiintrin.h +0 -0
  121. /package/lib/clang/{16 → 17}/include/builtins.h +0 -0
  122. /package/lib/clang/{16 → 17}/include/cet.h +0 -0
  123. /package/lib/clang/{16 → 17}/include/cetintrin.h +0 -0
  124. /package/lib/clang/{16 → 17}/include/cldemoteintrin.h +0 -0
  125. /package/lib/clang/{16 → 17}/include/clwbintrin.h +0 -0
  126. /package/lib/clang/{16 → 17}/include/cmpccxaddintrin.h +0 -0
  127. /package/lib/clang/{16 → 17}/include/cpuid.h +0 -0
  128. /package/lib/clang/{16 → 17}/include/crc32intrin.h +0 -0
  129. /package/lib/clang/{16 → 17}/include/cuda_wrappers/algorithm +0 -0
  130. /package/lib/clang/{16 → 17}/include/cuda_wrappers/cmath +0 -0
  131. /package/lib/clang/{16 → 17}/include/cuda_wrappers/complex +0 -0
  132. /package/lib/clang/{16 → 17}/include/cuda_wrappers/new +0 -0
  133. /package/lib/clang/{16 → 17}/include/emmintrin.h +0 -0
  134. /package/lib/clang/{16 → 17}/include/enqcmdintrin.h +0 -0
  135. /package/lib/clang/{16 → 17}/include/f16cintrin.h +0 -0
  136. /package/lib/clang/{16 → 17}/include/float.h +0 -0
  137. /package/lib/clang/{16 → 17}/include/fma4intrin.h +0 -0
  138. /package/lib/clang/{16 → 17}/include/fxsrintrin.h +0 -0
  139. /package/lib/clang/{16 → 17}/include/gfniintrin.h +0 -0
  140. /package/lib/clang/{16 → 17}/include/hexagon_circ_brev_intrinsics.h +0 -0
  141. /package/lib/clang/{16 → 17}/include/hexagon_protos.h +0 -0
  142. /package/lib/clang/{16 → 17}/include/hexagon_types.h +0 -0
  143. /package/lib/clang/{16 → 17}/include/hlsl/hlsl_basic_types.h +0 -0
  144. /package/lib/clang/{16 → 17}/include/hlsl.h +0 -0
  145. /package/lib/clang/{16 → 17}/include/hresetintrin.h +0 -0
  146. /package/lib/clang/{16 → 17}/include/htmintrin.h +0 -0
  147. /package/lib/clang/{16 → 17}/include/htmxlintrin.h +0 -0
  148. /package/lib/clang/{16 → 17}/include/hvx_hexagon_protos.h +0 -0
  149. /package/lib/clang/{16 → 17}/include/ia32intrin.h +0 -0
  150. /package/lib/clang/{16 → 17}/include/intrin.h +0 -0
  151. /package/lib/clang/{16 → 17}/include/inttypes.h +0 -0
  152. /package/lib/clang/{16 → 17}/include/invpcidintrin.h +0 -0
  153. /package/lib/clang/{16 → 17}/include/iso646.h +0 -0
  154. /package/lib/clang/{16 → 17}/include/keylockerintrin.h +0 -0
  155. /package/lib/clang/{16 → 17}/include/larchintrin.h +0 -0
  156. /package/lib/clang/{16 → 17}/include/lwpintrin.h +0 -0
  157. /package/lib/clang/{16 → 17}/include/lzcntintrin.h +0 -0
  158. /package/lib/clang/{16 → 17}/include/mm3dnow.h +0 -0
  159. /package/lib/clang/{16 → 17}/include/mm_malloc.h +0 -0
  160. /package/lib/clang/{16 → 17}/include/mmintrin.h +0 -0
  161. /package/lib/clang/{16 → 17}/include/module.modulemap +0 -0
  162. /package/lib/clang/{16 → 17}/include/movdirintrin.h +0 -0
  163. /package/lib/clang/{16 → 17}/include/msa.h +0 -0
  164. /package/lib/clang/{16 → 17}/include/nmmintrin.h +0 -0
  165. /package/lib/clang/{16 → 17}/include/opencl-c.h +0 -0
  166. /package/lib/clang/{16 → 17}/include/openmp_wrappers/cmath +0 -0
  167. /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex +0 -0
  168. /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex.h +0 -0
  169. /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex_cmath.h +0 -0
  170. /package/lib/clang/{16 → 17}/include/openmp_wrappers/math.h +0 -0
  171. /package/lib/clang/{16 → 17}/include/pconfigintrin.h +0 -0
  172. /package/lib/clang/{16 → 17}/include/pkuintrin.h +0 -0
  173. /package/lib/clang/{16 → 17}/include/popcntintrin.h +0 -0
  174. /package/lib/clang/{16 → 17}/include/ppc_wrappers/bmi2intrin.h +0 -0
  175. /package/lib/clang/{16 → 17}/include/ppc_wrappers/bmiintrin.h +0 -0
  176. /package/lib/clang/{16 → 17}/include/ppc_wrappers/immintrin.h +0 -0
  177. /package/lib/clang/{16 → 17}/include/ppc_wrappers/mm_malloc.h +0 -0
  178. /package/lib/clang/{16 → 17}/include/ppc_wrappers/mmintrin.h +0 -0
  179. /package/lib/clang/{16 → 17}/include/ppc_wrappers/pmmintrin.h +0 -0
  180. /package/lib/clang/{16 → 17}/include/ppc_wrappers/tmmintrin.h +0 -0
  181. /package/lib/clang/{16 → 17}/include/ppc_wrappers/x86gprintrin.h +0 -0
  182. /package/lib/clang/{16 → 17}/include/ppc_wrappers/x86intrin.h +0 -0
  183. /package/lib/clang/{16 → 17}/include/ppc_wrappers/xmmintrin.h +0 -0
  184. /package/lib/clang/{16 → 17}/include/prfchiintrin.h +0 -0
  185. /package/lib/clang/{16 → 17}/include/prfchwintrin.h +0 -0
  186. /package/lib/clang/{16 → 17}/include/ptwriteintrin.h +0 -0
  187. /package/lib/clang/{16 → 17}/include/raointintrin.h +0 -0
  188. /package/lib/clang/{16 → 17}/include/rdpruintrin.h +0 -0
  189. /package/lib/clang/{16 → 17}/include/rtmintrin.h +0 -0
  190. /package/lib/clang/{16 → 17}/include/s390intrin.h +0 -0
  191. /package/lib/clang/{16 → 17}/include/serializeintrin.h +0 -0
  192. /package/lib/clang/{16 → 17}/include/sgxintrin.h +0 -0
  193. /package/lib/clang/{16 → 17}/include/smmintrin.h +0 -0
  194. /package/lib/clang/{16 → 17}/include/stdarg.h +0 -0
  195. /package/lib/clang/{16 → 17}/include/stdbool.h +0 -0
  196. /package/lib/clang/{16 → 17}/include/stdint.h +0 -0
  197. /package/lib/clang/{16 → 17}/include/stdnoreturn.h +0 -0
  198. /package/lib/clang/{16 → 17}/include/tbmintrin.h +0 -0
  199. /package/lib/clang/{16 → 17}/include/tgmath.h +0 -0
  200. /package/lib/clang/{16 → 17}/include/tmmintrin.h +0 -0
  201. /package/lib/clang/{16 → 17}/include/tsxldtrkintrin.h +0 -0
  202. /package/lib/clang/{16 → 17}/include/uintrintrin.h +0 -0
  203. /package/lib/clang/{16 → 17}/include/unwind.h +0 -0
  204. /package/lib/clang/{16 → 17}/include/vadefs.h +0 -0
  205. /package/lib/clang/{16 → 17}/include/vaesintrin.h +0 -0
  206. /package/lib/clang/{16 → 17}/include/varargs.h +0 -0
  207. /package/lib/clang/{16 → 17}/include/vecintrin.h +0 -0
  208. /package/lib/clang/{16 → 17}/include/velintrin.h +0 -0
  209. /package/lib/clang/{16 → 17}/include/velintrin_approx.h +0 -0
  210. /package/lib/clang/{16 → 17}/include/velintrin_gen.h +0 -0
  211. /package/lib/clang/{16 → 17}/include/vpclmulqdqintrin.h +0 -0
  212. /package/lib/clang/{16 → 17}/include/waitpkgintrin.h +0 -0
  213. /package/lib/clang/{16 → 17}/include/wbnoinvdintrin.h +0 -0
  214. /package/lib/clang/{16 → 17}/include/wmmintrin.h +0 -0
  215. /package/lib/clang/{16 → 17}/include/x86gprintrin.h +0 -0
  216. /package/lib/clang/{16 → 17}/include/x86intrin.h +0 -0
  217. /package/lib/clang/{16 → 17}/include/xmmintrin.h +0 -0
  218. /package/lib/clang/{16 → 17}/include/xopintrin.h +0 -0
  219. /package/lib/clang/{16 → 17}/include/xsaveintrin.h +0 -0
  220. /package/lib/clang/{16 → 17}/include/xsaveoptintrin.h +0 -0
  221. /package/lib/clang/{16 → 17}/include/xsavesintrin.h +0 -0
  222. /package/lib/clang/{16 → 17}/include/xtestintrin.h +0 -0
@@ -397,14 +397,15 @@ _mm512_broadcastsd_pd(__m128d __A)
397
397
  static __inline __m512d __DEFAULT_FN_ATTRS512
398
398
  _mm512_castpd256_pd512(__m256d __a)
399
399
  {
400
- return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
400
+ return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
401
+ 1, 2, 3, 4, 5, 6, 7);
401
402
  }
402
403
 
403
404
  static __inline __m512 __DEFAULT_FN_ATTRS512
404
405
  _mm512_castps256_ps512(__m256 __a)
405
406
  {
406
- return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
407
- -1, -1, -1, -1, -1, -1, -1, -1);
407
+ return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
408
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
408
409
  }
409
410
 
410
411
  static __inline __m128d __DEFAULT_FN_ATTRS512
@@ -446,7 +447,10 @@ _mm512_castpd_si512 (__m512d __A)
446
447
  static __inline__ __m512d __DEFAULT_FN_ATTRS512
447
448
  _mm512_castpd128_pd512 (__m128d __A)
448
449
  {
449
- return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
450
+ __m256d __B = __builtin_nondeterministic_value(__B);
451
+ return __builtin_shufflevector(
452
+ __builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3),
453
+ __B, 0, 1, 2, 3, 4, 5, 6, 7);
450
454
  }
451
455
 
452
456
  static __inline __m512d __DEFAULT_FN_ATTRS512
@@ -464,19 +468,25 @@ _mm512_castps_si512 (__m512 __A)
464
468
  static __inline__ __m512 __DEFAULT_FN_ATTRS512
465
469
  _mm512_castps128_ps512 (__m128 __A)
466
470
  {
467
- return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
471
+ __m256 __B = __builtin_nondeterministic_value(__B);
472
+ return __builtin_shufflevector(
473
+ __builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3, 4, 5, 6, 7),
474
+ __B, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
468
475
  }
469
476
 
470
477
  static __inline__ __m512i __DEFAULT_FN_ATTRS512
471
478
  _mm512_castsi128_si512 (__m128i __A)
472
479
  {
473
- return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
480
+ __m256i __B = __builtin_nondeterministic_value(__B);
481
+ return __builtin_shufflevector(
482
+ __builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3),
483
+ __B, 0, 1, 2, 3, 4, 5, 6, 7);
474
484
  }
475
485
 
476
486
  static __inline__ __m512i __DEFAULT_FN_ATTRS512
477
487
  _mm512_castsi256_si512 (__m256i __A)
478
488
  {
479
- return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
489
+ return __builtin_shufflevector( __A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3, 4, 5, 6, 7);
480
490
  }
481
491
 
482
492
  static __inline __m512 __DEFAULT_FN_ATTRS512
@@ -192,22 +192,26 @@ _mm512_castph512_ph256(__m512h __a) {
192
192
 
193
193
  static __inline__ __m256h __DEFAULT_FN_ATTRS256
194
194
  _mm256_castph128_ph256(__m128h __a) {
195
- return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, -1, -1, -1,
196
- -1, -1, -1, -1, -1);
195
+ return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a),
196
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
197
197
  }
198
198
 
199
199
  static __inline__ __m512h __DEFAULT_FN_ATTRS512
200
200
  _mm512_castph128_ph512(__m128h __a) {
201
- return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, -1, -1, -1,
202
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
203
- -1, -1, -1, -1, -1, -1, -1, -1, -1);
201
+ __m256h __b = __builtin_nondeterministic_value(__b);
202
+ return __builtin_shufflevector(
203
+ __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a),
204
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
205
+ __b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
206
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
204
207
  }
205
208
 
206
209
  static __inline__ __m512h __DEFAULT_FN_ATTRS512
207
210
  _mm512_castph256_ph512(__m256h __a) {
208
- return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
209
- 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1,
210
- -1, -1, -1, -1, -1, -1, -1, -1);
211
+ return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
212
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
213
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
214
+ 27, 28, 29, 30, 31);
211
215
  }
212
216
 
213
217
  /// Constructs a 256-bit floating-point vector of [16 x half] from a
@@ -3017,8 +3017,11 @@ _mm256_zeroupper(void)
3017
3017
  static __inline __m128 __DEFAULT_FN_ATTRS128
3018
3018
  _mm_broadcast_ss(float const *__a)
3019
3019
  {
3020
- float __f = *__a;
3021
- return __extension__ (__m128)(__v4sf){ __f, __f, __f, __f };
3020
+ struct __mm_broadcast_ss_struct {
3021
+ float __f;
3022
+ } __attribute__((__packed__, __may_alias__));
3023
+ float __f = ((const struct __mm_broadcast_ss_struct*)__a)->__f;
3024
+ return __extension__ (__m128){ __f, __f, __f, __f };
3022
3025
  }
3023
3026
 
3024
3027
  /// Loads a scalar double-precision floating point value from the
@@ -3036,7 +3039,10 @@ _mm_broadcast_ss(float const *__a)
3036
3039
  static __inline __m256d __DEFAULT_FN_ATTRS
3037
3040
  _mm256_broadcast_sd(double const *__a)
3038
3041
  {
3039
- double __d = *__a;
3042
+ struct __mm256_broadcast_sd_struct {
3043
+ double __d;
3044
+ } __attribute__((__packed__, __may_alias__));
3045
+ double __d = ((const struct __mm256_broadcast_sd_struct*)__a)->__d;
3040
3046
  return __extension__ (__m256d)(__v4df){ __d, __d, __d, __d };
3041
3047
  }
3042
3048
 
@@ -3055,7 +3061,10 @@ _mm256_broadcast_sd(double const *__a)
3055
3061
  static __inline __m256 __DEFAULT_FN_ATTRS
3056
3062
  _mm256_broadcast_ss(float const *__a)
3057
3063
  {
3058
- float __f = *__a;
3064
+ struct __mm256_broadcast_ss_struct {
3065
+ float __f;
3066
+ } __attribute__((__packed__, __may_alias__));
3067
+ float __f = ((const struct __mm256_broadcast_ss_struct*)__a)->__f;
3059
3068
  return __extension__ (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
3060
3069
  }
3061
3070
 
@@ -4499,7 +4508,8 @@ _mm256_castsi256_si128(__m256i __a)
4499
4508
  static __inline __m256d __DEFAULT_FN_ATTRS
4500
4509
  _mm256_castpd128_pd256(__m128d __a)
4501
4510
  {
4502
- return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 1, -1, -1);
4511
+ return __builtin_shufflevector(
4512
+ (__v2df)__a, (__v2df)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
4503
4513
  }
4504
4514
 
4505
4515
  /// Constructs a 256-bit floating-point vector of [8 x float] from a
@@ -4520,7 +4530,9 @@ _mm256_castpd128_pd256(__m128d __a)
4520
4530
  static __inline __m256 __DEFAULT_FN_ATTRS
4521
4531
  _mm256_castps128_ps256(__m128 __a)
4522
4532
  {
4523
- return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1, 2, 3, -1, -1, -1, -1);
4533
+ return __builtin_shufflevector((__v4sf)__a,
4534
+ (__v4sf)__builtin_nondeterministic_value(__a),
4535
+ 0, 1, 2, 3, 4, 5, 6, 7);
4524
4536
  }
4525
4537
 
4526
4538
  /// Constructs a 256-bit integer vector from a 128-bit integer vector.
@@ -4539,7 +4551,8 @@ _mm256_castps128_ps256(__m128 __a)
4539
4551
  static __inline __m256i __DEFAULT_FN_ATTRS
4540
4552
  _mm256_castsi128_si256(__m128i __a)
4541
4553
  {
4542
- return __builtin_shufflevector((__v2di)__a, (__v2di)__a, 0, 1, -1, -1);
4554
+ return __builtin_shufflevector(
4555
+ (__v2di)__a, (__v2di)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
4543
4556
  }
4544
4557
 
4545
4558
  /// 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