@cpp-linter/clang-tidy-win32-x64 12.0.1

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 (164) hide show
  1. package/LICENSE.TXT +279 -0
  2. package/README.md +7 -0
  3. package/bin/clang-tidy.exe +4 -0
  4. package/lib/clang/12.0.1/include/__clang_cuda_builtin_vars.h +121 -0
  5. package/lib/clang/12.0.1/include/__clang_cuda_cmath.h +512 -0
  6. package/lib/clang/12.0.1/include/__clang_cuda_complex_builtins.h +285 -0
  7. package/lib/clang/12.0.1/include/__clang_cuda_device_functions.h +1486 -0
  8. package/lib/clang/12.0.1/include/__clang_cuda_intrinsics.h +486 -0
  9. package/lib/clang/12.0.1/include/__clang_cuda_libdevice_declares.h +462 -0
  10. package/lib/clang/12.0.1/include/__clang_cuda_math.h +348 -0
  11. package/lib/clang/12.0.1/include/__clang_cuda_math_forward_declares.h +284 -0
  12. package/lib/clang/12.0.1/include/__clang_cuda_runtime_wrapper.h +443 -0
  13. package/lib/clang/12.0.1/include/__clang_hip_cmath.h +664 -0
  14. package/lib/clang/12.0.1/include/__clang_hip_libdevice_declares.h +334 -0
  15. package/lib/clang/12.0.1/include/__clang_hip_math.h +1275 -0
  16. package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +69 -0
  17. package/lib/clang/12.0.1/include/__stddef_max_align_t.h +27 -0
  18. package/lib/clang/12.0.1/include/__wmmintrin_aes.h +140 -0
  19. package/lib/clang/12.0.1/include/__wmmintrin_pclmul.h +48 -0
  20. package/lib/clang/12.0.1/include/adxintrin.h +72 -0
  21. package/lib/clang/12.0.1/include/altivec.h +18239 -0
  22. package/lib/clang/12.0.1/include/ammintrin.h +179 -0
  23. package/lib/clang/12.0.1/include/amxintrin.h +278 -0
  24. package/lib/clang/12.0.1/include/arm64intr.h +35 -0
  25. package/lib/clang/12.0.1/include/arm_acle.h +716 -0
  26. package/lib/clang/12.0.1/include/arm_bf16.h +20 -0
  27. package/lib/clang/12.0.1/include/arm_cde.h +410 -0
  28. package/lib/clang/12.0.1/include/arm_cmse.h +217 -0
  29. package/lib/clang/12.0.1/include/arm_fp16.h +596 -0
  30. package/lib/clang/12.0.1/include/arm_mve.h +19187 -0
  31. package/lib/clang/12.0.1/include/arm_neon.h +68982 -0
  32. package/lib/clang/12.0.1/include/arm_sve.h +18148 -0
  33. package/lib/clang/12.0.1/include/armintr.h +31 -0
  34. package/lib/clang/12.0.1/include/avx2intrin.h +1148 -0
  35. package/lib/clang/12.0.1/include/avx512bf16intrin.h +279 -0
  36. package/lib/clang/12.0.1/include/avx512bitalgintrin.h +83 -0
  37. package/lib/clang/12.0.1/include/avx512bwintrin.h +2024 -0
  38. package/lib/clang/12.0.1/include/avx512cdintrin.h +123 -0
  39. package/lib/clang/12.0.1/include/avx512dqintrin.h +1377 -0
  40. package/lib/clang/12.0.1/include/avx512erintrin.h +271 -0
  41. package/lib/clang/12.0.1/include/avx512fintrin.h +9618 -0
  42. package/lib/clang/12.0.1/include/avx512ifmaintrin.h +68 -0
  43. package/lib/clang/12.0.1/include/avx512ifmavlintrin.h +119 -0
  44. package/lib/clang/12.0.1/include/avx512pfintrin.h +97 -0
  45. package/lib/clang/12.0.1/include/avx512vbmi2intrin.h +357 -0
  46. package/lib/clang/12.0.1/include/avx512vbmiintrin.h +105 -0
  47. package/lib/clang/12.0.1/include/avx512vbmivlintrin.h +188 -0
  48. package/lib/clang/12.0.1/include/avx512vlbf16intrin.h +474 -0
  49. package/lib/clang/12.0.1/include/avx512vlbitalgintrin.h +145 -0
  50. package/lib/clang/12.0.1/include/avx512vlbwintrin.h +2809 -0
  51. package/lib/clang/12.0.1/include/avx512vlcdintrin.h +225 -0
  52. package/lib/clang/12.0.1/include/avx512vldqintrin.h +1167 -0
  53. package/lib/clang/12.0.1/include/avx512vlintrin.h +8445 -0
  54. package/lib/clang/12.0.1/include/avx512vlvbmi2intrin.h +689 -0
  55. package/lib/clang/12.0.1/include/avx512vlvnniintrin.h +304 -0
  56. package/lib/clang/12.0.1/include/avx512vlvp2intersectintrin.h +121 -0
  57. package/lib/clang/12.0.1/include/avx512vnniintrin.h +115 -0
  58. package/lib/clang/12.0.1/include/avx512vp2intersectintrin.h +77 -0
  59. package/lib/clang/12.0.1/include/avx512vpopcntdqintrin.h +54 -0
  60. package/lib/clang/12.0.1/include/avx512vpopcntdqvlintrin.h +91 -0
  61. package/lib/clang/12.0.1/include/avxintrin.h +5053 -0
  62. package/lib/clang/12.0.1/include/avxvnniintrin.h +225 -0
  63. package/lib/clang/12.0.1/include/bmi2intrin.h +81 -0
  64. package/lib/clang/12.0.1/include/bmiintrin.h +427 -0
  65. package/lib/clang/12.0.1/include/cet.h +66 -0
  66. package/lib/clang/12.0.1/include/cetintrin.h +99 -0
  67. package/lib/clang/12.0.1/include/cldemoteintrin.h +36 -0
  68. package/lib/clang/12.0.1/include/clflushoptintrin.h +27 -0
  69. package/lib/clang/12.0.1/include/clwbintrin.h +38 -0
  70. package/lib/clang/12.0.1/include/clzerointrin.h +36 -0
  71. package/lib/clang/12.0.1/include/cpuid.h +319 -0
  72. package/lib/clang/12.0.1/include/cuda_wrappers/algorithm +116 -0
  73. package/lib/clang/12.0.1/include/cuda_wrappers/complex +82 -0
  74. package/lib/clang/12.0.1/include/cuda_wrappers/new +106 -0
  75. package/lib/clang/12.0.1/include/emmintrin.h +4981 -0
  76. package/lib/clang/12.0.1/include/enqcmdintrin.h +63 -0
  77. package/lib/clang/12.0.1/include/f16cintrin.h +162 -0
  78. package/lib/clang/12.0.1/include/float.h +152 -0
  79. package/lib/clang/12.0.1/include/fma4intrin.h +218 -0
  80. package/lib/clang/12.0.1/include/fmaintrin.h +216 -0
  81. package/lib/clang/12.0.1/include/fxsrintrin.h +91 -0
  82. package/lib/clang/12.0.1/include/gfniintrin.h +193 -0
  83. package/lib/clang/12.0.1/include/hresetintrin.h +49 -0
  84. package/lib/clang/12.0.1/include/htmintrin.h +212 -0
  85. package/lib/clang/12.0.1/include/htmxlintrin.h +345 -0
  86. package/lib/clang/12.0.1/include/ia32intrin.h +441 -0
  87. package/lib/clang/12.0.1/include/immintrin.h +600 -0
  88. package/lib/clang/12.0.1/include/intrin.h +585 -0
  89. package/lib/clang/12.0.1/include/inttypes.h +97 -0
  90. package/lib/clang/12.0.1/include/invpcidintrin.h +23 -0
  91. package/lib/clang/12.0.1/include/iso646.h +27 -0
  92. package/lib/clang/12.0.1/include/keylockerintrin.h +506 -0
  93. package/lib/clang/12.0.1/include/limits.h +102 -0
  94. package/lib/clang/12.0.1/include/lwpintrin.h +136 -0
  95. package/lib/clang/12.0.1/include/lzcntintrin.h +104 -0
  96. package/lib/clang/12.0.1/include/mm3dnow.h +157 -0
  97. package/lib/clang/12.0.1/include/mm_malloc.h +67 -0
  98. package/lib/clang/12.0.1/include/mmintrin.h +1558 -0
  99. package/lib/clang/12.0.1/include/module.modulemap +164 -0
  100. package/lib/clang/12.0.1/include/movdirintrin.h +49 -0
  101. package/lib/clang/12.0.1/include/msa.h +573 -0
  102. package/lib/clang/12.0.1/include/mwaitxintrin.h +33 -0
  103. package/lib/clang/12.0.1/include/nmmintrin.h +16 -0
  104. package/lib/clang/12.0.1/include/opencl-c-base.h +589 -0
  105. package/lib/clang/12.0.1/include/opencl-c.h +17162 -0
  106. package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +42 -0
  107. package/lib/clang/12.0.1/include/openmp_wrappers/cmath +78 -0
  108. package/lib/clang/12.0.1/include/openmp_wrappers/complex +52 -0
  109. package/lib/clang/12.0.1/include/openmp_wrappers/complex.h +27 -0
  110. package/lib/clang/12.0.1/include/openmp_wrappers/complex_cmath.h +388 -0
  111. package/lib/clang/12.0.1/include/openmp_wrappers/math.h +51 -0
  112. package/lib/clang/12.0.1/include/openmp_wrappers/new +70 -0
  113. package/lib/clang/12.0.1/include/pconfigintrin.h +40 -0
  114. package/lib/clang/12.0.1/include/pkuintrin.h +34 -0
  115. package/lib/clang/12.0.1/include/pmmintrin.h +290 -0
  116. package/lib/clang/12.0.1/include/popcntintrin.h +59 -0
  117. package/lib/clang/12.0.1/include/ppc_wrappers/emmintrin.h +2324 -0
  118. package/lib/clang/12.0.1/include/ppc_wrappers/mm_malloc.h +50 -0
  119. package/lib/clang/12.0.1/include/ppc_wrappers/mmintrin.h +1450 -0
  120. package/lib/clang/12.0.1/include/ppc_wrappers/pmmintrin.h +150 -0
  121. package/lib/clang/12.0.1/include/ppc_wrappers/smmintrin.h +109 -0
  122. package/lib/clang/12.0.1/include/ppc_wrappers/tmmintrin.h +495 -0
  123. package/lib/clang/12.0.1/include/ppc_wrappers/xmmintrin.h +1843 -0
  124. package/lib/clang/12.0.1/include/prfchwintrin.h +55 -0
  125. package/lib/clang/12.0.1/include/ptwriteintrin.h +37 -0
  126. package/lib/clang/12.0.1/include/rdseedintrin.h +42 -0
  127. package/lib/clang/12.0.1/include/rtmintrin.h +45 -0
  128. package/lib/clang/12.0.1/include/s390intrin.h +25 -0
  129. package/lib/clang/12.0.1/include/serializeintrin.h +30 -0
  130. package/lib/clang/12.0.1/include/sgxintrin.h +60 -0
  131. package/lib/clang/12.0.1/include/shaintrin.h +61 -0
  132. package/lib/clang/12.0.1/include/smmintrin.h +2430 -0
  133. package/lib/clang/12.0.1/include/stdalign.h +21 -0
  134. package/lib/clang/12.0.1/include/stdarg.h +35 -0
  135. package/lib/clang/12.0.1/include/stdatomic.h +176 -0
  136. package/lib/clang/12.0.1/include/stdbool.h +31 -0
  137. package/lib/clang/12.0.1/include/stddef.h +121 -0
  138. package/lib/clang/12.0.1/include/stdint.h +693 -0
  139. package/lib/clang/12.0.1/include/stdnoreturn.h +16 -0
  140. package/lib/clang/12.0.1/include/tbmintrin.h +140 -0
  141. package/lib/clang/12.0.1/include/tgmath.h +1368 -0
  142. package/lib/clang/12.0.1/include/tmmintrin.h +771 -0
  143. package/lib/clang/12.0.1/include/tsxldtrkintrin.h +56 -0
  144. package/lib/clang/12.0.1/include/uintrintrin.h +150 -0
  145. package/lib/clang/12.0.1/include/unwind.h +327 -0
  146. package/lib/clang/12.0.1/include/vadefs.h +51 -0
  147. package/lib/clang/12.0.1/include/vaesintrin.h +84 -0
  148. package/lib/clang/12.0.1/include/varargs.h +12 -0
  149. package/lib/clang/12.0.1/include/vecintrin.h +10998 -0
  150. package/lib/clang/12.0.1/include/vpclmulqdqintrin.h +28 -0
  151. package/lib/clang/12.0.1/include/waitpkgintrin.h +42 -0
  152. package/lib/clang/12.0.1/include/wasm_simd128.h +1167 -0
  153. package/lib/clang/12.0.1/include/wbnoinvdintrin.h +24 -0
  154. package/lib/clang/12.0.1/include/wmmintrin.h +19 -0
  155. package/lib/clang/12.0.1/include/x86gprintrin.h +23 -0
  156. package/lib/clang/12.0.1/include/x86intrin.h +63 -0
  157. package/lib/clang/12.0.1/include/xmmintrin.h +3008 -0
  158. package/lib/clang/12.0.1/include/xopintrin.h +770 -0
  159. package/lib/clang/12.0.1/include/xsavecintrin.h +34 -0
  160. package/lib/clang/12.0.1/include/xsaveintrin.h +63 -0
  161. package/lib/clang/12.0.1/include/xsaveoptintrin.h +34 -0
  162. package/lib/clang/12.0.1/include/xsavesintrin.h +44 -0
  163. package/lib/clang/12.0.1/include/xtestintrin.h +27 -0
  164. package/package.json +32 -0
@@ -0,0 +1,304 @@
1
+ /*===------------- avx512vlvnniintrin.h - VNNI intrinsics ------------------===
2
+ *
3
+ *
4
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ * See https://llvm.org/LICENSE.txt for license information.
6
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ *
8
+ *===-----------------------------------------------------------------------===
9
+ */
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <avx512vlvnniintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512VLVNNIINTRIN_H
15
+ #define __AVX512VLVNNIINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(128)))
19
+ #define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(256)))
20
+
21
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
22
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
23
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
24
+ /// in \a S, and store the packed 32-bit results in DST.
25
+ ///
26
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
27
+ ///
28
+ /// \operation
29
+ /// FOR j := 0 to 7
30
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
31
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
32
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
33
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
34
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
35
+ /// ENDFOR
36
+ /// DST[MAX:256] := 0
37
+ /// \endoperation
38
+ #define _mm256_dpbusd_epi32(S, A, B) \
39
+ (__m256i)__builtin_ia32_vpdpbusd256((__v8si)(S), (__v8si)(A), (__v8si)(B))
40
+
41
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
42
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
43
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
44
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
45
+ ///
46
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
47
+ ///
48
+ /// \operation
49
+ /// FOR j := 0 to 7
50
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
51
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
52
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
53
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
54
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
55
+ /// ENDFOR
56
+ /// DST[MAX:256] := 0
57
+ /// \endoperation
58
+ #define _mm256_dpbusds_epi32(S, A, B) \
59
+ (__m256i)__builtin_ia32_vpdpbusds256((__v8si)(S), (__v8si)(A), (__v8si)(B))
60
+
61
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
62
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
63
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
64
+ /// and store the packed 32-bit results in DST.
65
+ ///
66
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
67
+ ///
68
+ /// \operation
69
+ /// FOR j := 0 to 7
70
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
71
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
72
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
73
+ /// ENDFOR
74
+ /// DST[MAX:256] := 0
75
+ /// \endoperation
76
+ #define _mm256_dpwssd_epi32(S, A, B) \
77
+ (__m256i)__builtin_ia32_vpdpwssd256((__v8si)(S), (__v8si)(A), (__v8si)(B))
78
+
79
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
80
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
81
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
82
+ /// using signed saturation, and store the packed 32-bit results in DST.
83
+ ///
84
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
85
+ ///
86
+ /// \operation
87
+ /// FOR j := 0 to 7
88
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
89
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
90
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
91
+ /// ENDFOR
92
+ /// DST[MAX:256] := 0
93
+ /// \endoperation
94
+ #define _mm256_dpwssds_epi32(S, A, B) \
95
+ (__m256i)__builtin_ia32_vpdpwssds256((__v8si)(S), (__v8si)(A), (__v8si)(B))
96
+
97
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
98
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
99
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
100
+ /// in \a S, and store the packed 32-bit results in DST.
101
+ ///
102
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
103
+ ///
104
+ /// \operation
105
+ /// FOR j := 0 to 3
106
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
107
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
108
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
109
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
110
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
111
+ /// ENDFOR
112
+ /// DST[MAX:128] := 0
113
+ /// \endoperation
114
+ #define _mm_dpbusd_epi32(S, A, B) \
115
+ (__m128i)__builtin_ia32_vpdpbusd128((__v4si)(S), (__v4si)(A), (__v4si)(B))
116
+
117
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
118
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
119
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
120
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
121
+ ///
122
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
123
+ ///
124
+ /// \operation
125
+ /// FOR j := 0 to 3
126
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
127
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
128
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
129
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
130
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
131
+ /// ENDFOR
132
+ /// DST[MAX:128] := 0
133
+ /// \endoperation
134
+ #define _mm_dpbusds_epi32(S, A, B) \
135
+ (__m128i)__builtin_ia32_vpdpbusds128((__v4si)(S), (__v4si)(A), (__v4si)(B))
136
+
137
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
138
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
139
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
140
+ /// and store the packed 32-bit results in DST.
141
+ ///
142
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
143
+ ///
144
+ /// \operation
145
+ /// FOR j := 0 to 3
146
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
147
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
148
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
149
+ /// ENDFOR
150
+ /// DST[MAX:128] := 0
151
+ /// \endoperation
152
+ #define _mm_dpwssd_epi32(S, A, B) \
153
+ (__m128i)__builtin_ia32_vpdpwssd128((__v4si)(S), (__v4si)(A), (__v4si)(B))
154
+
155
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
156
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
157
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
158
+ /// using signed saturation, and store the packed 32-bit results in DST.
159
+ ///
160
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
161
+ ///
162
+ /// \operation
163
+ /// FOR j := 0 to 3
164
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
165
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
166
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
167
+ /// ENDFOR
168
+ /// DST[MAX:128] := 0
169
+ /// \endoperation
170
+ #define _mm_dpwssds_epi32(S, A, B) \
171
+ (__m128i)__builtin_ia32_vpdpwssds128((__v4si)(S), (__v4si)(A), (__v4si)(B))
172
+
173
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
174
+ _mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
175
+ {
176
+ return (__m256i)__builtin_ia32_selectd_256(__U,
177
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
178
+ (__v8si)__S);
179
+ }
180
+
181
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
182
+ _mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
183
+ {
184
+ return (__m256i)__builtin_ia32_selectd_256(__U,
185
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
186
+ (__v8si)_mm256_setzero_si256());
187
+ }
188
+
189
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
190
+ _mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
191
+ {
192
+ return (__m256i)__builtin_ia32_selectd_256(__U,
193
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
194
+ (__v8si)__S);
195
+ }
196
+
197
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
198
+ _mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
199
+ {
200
+ return (__m256i)__builtin_ia32_selectd_256(__U,
201
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
202
+ (__v8si)_mm256_setzero_si256());
203
+ }
204
+
205
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
206
+ _mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
207
+ {
208
+ return (__m256i)__builtin_ia32_selectd_256(__U,
209
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
210
+ (__v8si)__S);
211
+ }
212
+
213
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
214
+ _mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
215
+ {
216
+ return (__m256i)__builtin_ia32_selectd_256(__U,
217
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
218
+ (__v8si)_mm256_setzero_si256());
219
+ }
220
+
221
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
222
+ _mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
223
+ {
224
+ return (__m256i)__builtin_ia32_selectd_256(__U,
225
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
226
+ (__v8si)__S);
227
+ }
228
+
229
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
230
+ _mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
231
+ {
232
+ return (__m256i)__builtin_ia32_selectd_256(__U,
233
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
234
+ (__v8si)_mm256_setzero_si256());
235
+ }
236
+
237
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
238
+ _mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
239
+ {
240
+ return (__m128i)__builtin_ia32_selectd_128(__U,
241
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
242
+ (__v4si)__S);
243
+ }
244
+
245
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
246
+ _mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
247
+ {
248
+ return (__m128i)__builtin_ia32_selectd_128(__U,
249
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
250
+ (__v4si)_mm_setzero_si128());
251
+ }
252
+
253
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
254
+ _mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
255
+ {
256
+ return (__m128i)__builtin_ia32_selectd_128(__U,
257
+ (__v4si)_mm_dpbusds_epi32(__S, __A, __B),
258
+ (__v4si)__S);
259
+ }
260
+
261
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
262
+ _mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
263
+ {
264
+ return (__m128i)__builtin_ia32_selectd_128(__U,
265
+ (__v4si)_mm_dpbusds_epi32(__S, __A, __B),
266
+ (__v4si)_mm_setzero_si128());
267
+ }
268
+
269
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
270
+ _mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
271
+ {
272
+ return (__m128i)__builtin_ia32_selectd_128(__U,
273
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
274
+ (__v4si)__S);
275
+ }
276
+
277
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
278
+ _mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
279
+ {
280
+ return (__m128i)__builtin_ia32_selectd_128(__U,
281
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
282
+ (__v4si)_mm_setzero_si128());
283
+ }
284
+
285
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
286
+ _mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
287
+ {
288
+ return (__m128i)__builtin_ia32_selectd_128(__U,
289
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
290
+ (__v4si)__S);
291
+ }
292
+
293
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
294
+ _mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
295
+ {
296
+ return (__m128i)__builtin_ia32_selectd_128(__U,
297
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
298
+ (__v4si)_mm_setzero_si128());
299
+ }
300
+
301
+ #undef __DEFAULT_FN_ATTRS128
302
+ #undef __DEFAULT_FN_ATTRS256
303
+
304
+ #endif
@@ -0,0 +1,121 @@
1
+ /*===------ avx512vlvp2intersectintrin.h - VL VP2INTERSECT intrinsics ------===
2
+ *
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ * THE SOFTWARE.
21
+ *
22
+ *===-----------------------------------------------------------------------===
23
+ */
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <avx512vlvp2intersectintrin.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef _AVX512VLVP2INTERSECT_H
29
+ #define _AVX512VLVP2INTERSECT_H
30
+
31
+ #define __DEFAULT_FN_ATTRS128 \
32
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vp2intersect"), \
33
+ __min_vector_width__(128)))
34
+
35
+ #define __DEFAULT_FN_ATTRS256 \
36
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vp2intersect"), \
37
+ __min_vector_width__(256)))
38
+ /// Store, in an even/odd pair of mask registers, the indicators of the
39
+ /// locations of value matches between dwords in operands __a and __b.
40
+ ///
41
+ /// \headerfile <x86intrin.h>
42
+ ///
43
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
44
+ ///
45
+ /// \param __a
46
+ /// A 256-bit vector of [8 x i32].
47
+ /// \param __b
48
+ /// A 256-bit vector of [8 x i32]
49
+ /// \param __m0
50
+ /// A pointer point to 8-bit mask
51
+ /// \param __m1
52
+ /// A pointer point to 8-bit mask
53
+ static __inline__ void __DEFAULT_FN_ATTRS256
54
+ _mm256_2intersect_epi32(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
55
+ __builtin_ia32_vp2intersect_d_256((__v8si)__a, (__v8si)__b, __m0, __m1);
56
+ }
57
+
58
+ /// Store, in an even/odd pair of mask registers, the indicators of the
59
+ /// locations of value matches between quadwords in operands __a and __b.
60
+ ///
61
+ /// \headerfile <x86intrin.h>
62
+ ///
63
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
64
+ ///
65
+ /// \param __a
66
+ /// A 256-bit vector of [4 x i64].
67
+ /// \param __b
68
+ /// A 256-bit vector of [4 x i64]
69
+ /// \param __m0
70
+ /// A pointer point to 8-bit mask
71
+ /// \param __m1
72
+ /// A pointer point to 8-bit mask
73
+ static __inline__ void __DEFAULT_FN_ATTRS256
74
+ _mm256_2intersect_epi64(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
75
+ __builtin_ia32_vp2intersect_q_256((__v4di)__a, (__v4di)__b, __m0, __m1);
76
+ }
77
+
78
+ /// Store, in an even/odd pair of mask registers, the indicators of the
79
+ /// locations of value matches between dwords in operands __a and __b.
80
+ ///
81
+ /// \headerfile <x86intrin.h>
82
+ ///
83
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
84
+ ///
85
+ /// \param __a
86
+ /// A 128-bit vector of [4 x i32].
87
+ /// \param __b
88
+ /// A 128-bit vector of [4 x i32]
89
+ /// \param __m0
90
+ /// A pointer point to 8-bit mask
91
+ /// \param __m1
92
+ /// A pointer point to 8-bit mask
93
+ static __inline__ void __DEFAULT_FN_ATTRS128
94
+ _mm_2intersect_epi32(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
95
+ __builtin_ia32_vp2intersect_d_128((__v4si)__a, (__v4si)__b, __m0, __m1);
96
+ }
97
+
98
+ /// Store, in an even/odd pair of mask registers, the indicators of the
99
+ /// locations of value matches between quadwords in operands __a and __b.
100
+ ///
101
+ /// \headerfile <x86intrin.h>
102
+ ///
103
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
104
+ ///
105
+ /// \param __a
106
+ /// A 128-bit vector of [2 x i64].
107
+ /// \param __b
108
+ /// A 128-bit vector of [2 x i64]
109
+ /// \param __m0
110
+ /// A pointer point to 8-bit mask
111
+ /// \param __m1
112
+ /// A pointer point to 8-bit mask
113
+ static __inline__ void __DEFAULT_FN_ATTRS128
114
+ _mm_2intersect_epi64(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
115
+ __builtin_ia32_vp2intersect_q_128((__v2di)__a, (__v2di)__b, __m0, __m1);
116
+ }
117
+
118
+ #undef __DEFAULT_FN_ATTRS128
119
+ #undef __DEFAULT_FN_ATTRS256
120
+
121
+ #endif
@@ -0,0 +1,115 @@
1
+ /*===------------- avx512vnniintrin.h - VNNI intrinsics ------------------===
2
+ *
3
+ *
4
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ * See https://llvm.org/LICENSE.txt for license information.
6
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ *
8
+ *===-----------------------------------------------------------------------===
9
+ */
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <avx512vnniintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512VNNIINTRIN_H
15
+ #define __AVX512VNNIINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), __min_vector_width__(512)))
19
+
20
+
21
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
22
+ _mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B)
23
+ {
24
+ return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v16si)__A,
25
+ (__v16si)__B);
26
+ }
27
+
28
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
29
+ _mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
30
+ {
31
+ return (__m512i)__builtin_ia32_selectd_512(__U,
32
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
33
+ (__v16si)__S);
34
+ }
35
+
36
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
37
+ _mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
38
+ {
39
+ return (__m512i)__builtin_ia32_selectd_512(__U,
40
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
41
+ (__v16si)_mm512_setzero_si512());
42
+ }
43
+
44
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
45
+ _mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B)
46
+ {
47
+ return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v16si)__A,
48
+ (__v16si)__B);
49
+ }
50
+
51
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
52
+ _mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
53
+ {
54
+ return (__m512i)__builtin_ia32_selectd_512(__U,
55
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
56
+ (__v16si)__S);
57
+ }
58
+
59
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
60
+ _mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
61
+ {
62
+ return (__m512i)__builtin_ia32_selectd_512(__U,
63
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
64
+ (__v16si)_mm512_setzero_si512());
65
+ }
66
+
67
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
68
+ _mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B)
69
+ {
70
+ return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v16si)__A,
71
+ (__v16si)__B);
72
+ }
73
+
74
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
75
+ _mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
76
+ {
77
+ return (__m512i)__builtin_ia32_selectd_512(__U,
78
+ (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
79
+ (__v16si)__S);
80
+ }
81
+
82
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
83
+ _mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
84
+ {
85
+ return (__m512i)__builtin_ia32_selectd_512(__U,
86
+ (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
87
+ (__v16si)_mm512_setzero_si512());
88
+ }
89
+
90
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
91
+ _mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B)
92
+ {
93
+ return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v16si)__A,
94
+ (__v16si)__B);
95
+ }
96
+
97
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
98
+ _mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
99
+ {
100
+ return (__m512i)__builtin_ia32_selectd_512(__U,
101
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
102
+ (__v16si)__S);
103
+ }
104
+
105
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
106
+ _mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
107
+ {
108
+ return (__m512i)__builtin_ia32_selectd_512(__U,
109
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
110
+ (__v16si)_mm512_setzero_si512());
111
+ }
112
+
113
+ #undef __DEFAULT_FN_ATTRS
114
+
115
+ #endif
@@ -0,0 +1,77 @@
1
+ /*===------- avx512vpintersectintrin.h - VP2INTERSECT intrinsics ------------===
2
+ *
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ * THE SOFTWARE.
21
+ *
22
+ *===-----------------------------------------------------------------------===
23
+ */
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <avx512vp2intersect.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef _AVX512VP2INTERSECT_H
29
+ #define _AVX512VP2INTERSECT_H
30
+
31
+ #define __DEFAULT_FN_ATTRS \
32
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vp2intersect"), \
33
+ __min_vector_width__(512)))
34
+
35
+ /// Store, in an even/odd pair of mask registers, the indicators of the
36
+ /// locations of value matches between dwords in operands __a and __b.
37
+ ///
38
+ /// \headerfile <x86intrin.h>
39
+ ///
40
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
41
+ ///
42
+ /// \param __a
43
+ /// A 512-bit vector of [16 x i32].
44
+ /// \param __b
45
+ /// A 512-bit vector of [16 x i32]
46
+ /// \param __m0
47
+ /// A pointer point to 16-bit mask
48
+ /// \param __m1
49
+ /// A pointer point to 16-bit mask
50
+ static __inline__ void __DEFAULT_FN_ATTRS
51
+ _mm512_2intersect_epi32(__m512i __a, __m512i __b, __mmask16 *__m0, __mmask16 *__m1) {
52
+ __builtin_ia32_vp2intersect_d_512((__v16si)__a, (__v16si)__b, __m0, __m1);
53
+ }
54
+
55
+ /// Store, in an even/odd pair of mask registers, the indicators of the
56
+ /// locations of value matches between quadwords in operands __a and __b.
57
+ ///
58
+ /// \headerfile <x86intrin.h>
59
+ ///
60
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
61
+ ///
62
+ /// \param __a
63
+ /// A 512-bit vector of [8 x i64].
64
+ /// \param __b
65
+ /// A 512-bit vector of [8 x i64]
66
+ /// \param __m0
67
+ /// A pointer point to 8-bit mask
68
+ /// \param __m1
69
+ /// A pointer point to 8-bit mask
70
+ static __inline__ void __DEFAULT_FN_ATTRS
71
+ _mm512_2intersect_epi64(__m512i __a, __m512i __b, __mmask8 *__m0, __mmask8 *__m1) {
72
+ __builtin_ia32_vp2intersect_q_512((__v8di)__a, (__v8di)__b, __m0, __m1);
73
+ }
74
+
75
+ #undef __DEFAULT_FN_ATTRS
76
+
77
+ #endif
@@ -0,0 +1,54 @@
1
+ /*===----- avx512vpopcntdqintrin.h - AVX512VPOPCNTDQ intrinsics-------------===
2
+ *
3
+ *
4
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ * See https://llvm.org/LICENSE.txt for license information.
6
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ *
8
+ *===-----------------------------------------------------------------------===
9
+ */
10
+ #ifndef __IMMINTRIN_H
11
+ #error \
12
+ "Never use <avx512vpopcntdqintrin.h> directly; include <immintrin.h> instead."
13
+ #endif
14
+
15
+ #ifndef __AVX512VPOPCNTDQINTRIN_H
16
+ #define __AVX512VPOPCNTDQINTRIN_H
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vpopcntdq"), __min_vector_width__(512)))
21
+
22
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi64(__m512i __A) {
23
+ return (__m512i)__builtin_ia32_vpopcntq_512((__v8di)__A);
24
+ }
25
+
26
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
27
+ _mm512_mask_popcnt_epi64(__m512i __W, __mmask8 __U, __m512i __A) {
28
+ return (__m512i)__builtin_ia32_selectq_512(
29
+ (__mmask8)__U, (__v8di)_mm512_popcnt_epi64(__A), (__v8di)__W);
30
+ }
31
+
32
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
33
+ _mm512_maskz_popcnt_epi64(__mmask8 __U, __m512i __A) {
34
+ return _mm512_mask_popcnt_epi64((__m512i)_mm512_setzero_si512(), __U, __A);
35
+ }
36
+
37
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi32(__m512i __A) {
38
+ return (__m512i)__builtin_ia32_vpopcntd_512((__v16si)__A);
39
+ }
40
+
41
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
42
+ _mm512_mask_popcnt_epi32(__m512i __W, __mmask16 __U, __m512i __A) {
43
+ return (__m512i)__builtin_ia32_selectd_512(
44
+ (__mmask16)__U, (__v16si)_mm512_popcnt_epi32(__A), (__v16si)__W);
45
+ }
46
+
47
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
48
+ _mm512_maskz_popcnt_epi32(__mmask16 __U, __m512i __A) {
49
+ return _mm512_mask_popcnt_epi32((__m512i)_mm512_setzero_si512(), __U, __A);
50
+ }
51
+
52
+ #undef __DEFAULT_FN_ATTRS
53
+
54
+ #endif