llvm-runtime-resources-darwin 22.1.8 → 23.1.0

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 (136) hide show
  1. package/include/__clang_cuda_complex_builtins.h +10 -3
  2. package/include/__clang_cuda_intrinsics.h +207 -226
  3. package/include/__clang_cuda_math_forward_declares.h +5 -0
  4. package/include/__clang_cuda_runtime_wrapper.h +9 -5
  5. package/include/__clang_gpu_builtin_vars.h +71 -0
  6. package/include/__clang_gpu_device_functions.h +411 -0
  7. package/include/__clang_gpu_intrinsics.h +242 -0
  8. package/include/__clang_hip_libdevice_declares.h +0 -102
  9. package/include/__clang_hip_math.h +3 -3
  10. package/include/__clang_hip_runtime_wrapper.h +6 -1
  11. package/include/__clang_spirv_libdevice_declares.h +170 -0
  12. package/include/__clang_spirv_math.h +719 -0
  13. package/include/altivec.h +79 -9
  14. package/include/amdgpuintrin.h +2 -29
  15. package/include/amdhsa_abi.h +83 -0
  16. package/include/amo.h +89 -0
  17. package/include/andes_vector.h +5 -0
  18. package/include/arm64_neon.h +21 -0
  19. package/include/arm64intr.h +10 -0
  20. package/include/arm_acle.h +1 -0
  21. package/include/arm_neon.h +3922 -3754
  22. package/include/arm_sme.h +12 -0
  23. package/include/arm_sve.h +420 -0
  24. package/include/avx2intrin.h +4 -5
  25. package/include/avx512bmmintrin.h +174 -0
  26. package/include/avx512bmmvlintrin.h +245 -0
  27. package/include/avx512bwintrin.h +19 -29
  28. package/include/avx512fintrin.h +62 -89
  29. package/include/avx512fp16intrin.h +12 -18
  30. package/include/avx512vbmi2intrin.h +12 -16
  31. package/include/avx512vlbwintrin.h +24 -36
  32. package/include/avx512vlintrin.h +80 -96
  33. package/include/avx512vlvbmi2intrin.h +24 -32
  34. package/include/avx512vlvnniintrin.h +29 -34
  35. package/include/avx512vnniintrin.h +32 -35
  36. package/include/avx512vp2intersectintrin.h +1 -1
  37. package/include/avxvnniintrin.h +23 -18
  38. package/include/crc32intrin.h +10 -8
  39. package/include/emmintrin.h +8 -8
  40. package/include/endian.h +91 -0
  41. package/include/fuzzer/FuzzedDataProvider.h +3 -3
  42. package/include/gpuintrin.h +123 -105
  43. package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
  44. package/include/hlsl_inline_intrinsics_gen.inc +546 -0
  45. package/include/hvx_hexagon_protos.h +102 -80
  46. package/include/immintrin.h +4 -2
  47. package/include/intrin.h +20 -10
  48. package/include/larchintrin.h +2 -0
  49. package/include/llvm_libc_wrappers/ctype.h +3 -2
  50. package/include/llvm_libc_wrappers/string.h +3 -2
  51. package/include/module.modulemap +16 -1
  52. package/include/nvptxintrin.h +15 -26
  53. package/include/opencl-c-base.h +7 -0
  54. package/include/opencl-c.h +163 -102
  55. package/include/openmp_wrappers/__clang_openmp_device_functions.h +14 -0
  56. package/include/openmp_wrappers/complex +7 -1
  57. package/include/openmp_wrappers/complex.h +6 -0
  58. package/include/openmp_wrappers/math.h +10 -0
  59. package/include/profile/InstrProfData.inc +65 -3
  60. package/include/ptrauth.h +90 -12
  61. package/include/riscv_bitmanip.h +7 -0
  62. package/include/riscv_corev_alu.h +2 -0
  63. package/include/riscv_crypto.h +8 -0
  64. package/include/riscv_mips.h +2 -0
  65. package/include/riscv_nds.h +3 -0
  66. package/include/riscv_ntlh.h +2 -0
  67. package/include/riscv_packed_simd.h +644 -0
  68. package/include/riscv_vector.h +43 -0
  69. package/include/sanitizer/asan_interface.h +51 -1
  70. package/include/sanitizer/common_interface_defs.h +12 -49
  71. package/include/sanitizer/safestack_interface.h +50 -0
  72. package/include/sanitizer/tysan_interface.h +36 -0
  73. package/include/sanitizer/ubsan_interface.h +30 -0
  74. package/include/sifive_vector.h +18 -0
  75. package/include/spirvintrin.h +2 -29
  76. package/include/stdint.h +5 -14
  77. package/include/vecintrin.h +1 -1
  78. package/include/wasm_simd128.h +17 -0
  79. package/include/xmmintrin.h +8 -7
  80. package/include/zos_wrappers/grp.h +19 -0
  81. package/include/zos_wrappers/locale.h +19 -0
  82. package/include/zos_wrappers/math.h +31 -0
  83. package/include/zos_wrappers/poll.h +19 -0
  84. package/include/zos_wrappers/stdlib.h +20 -0
  85. package/include/zos_wrappers/string.h +19 -0
  86. package/include/zos_wrappers/time.h +19 -0
  87. package/include/zos_wrappers/variant.h +19 -0
  88. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  89. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  90. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  91. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  92. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  93. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  94. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  95. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  96. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  97. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  98. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  99. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  100. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  101. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  102. package/lib/darwin/libclang_rt.ios.a +0 -0
  103. package/lib/darwin/libclang_rt.iossim.a +0 -0
  104. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  105. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  106. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  107. package/lib/darwin/libclang_rt.osx.a +0 -0
  108. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  109. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  110. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  111. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  112. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  113. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  114. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  115. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  116. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  117. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  118. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  119. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  120. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  121. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  122. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  123. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  124. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  125. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  126. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  127. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  128. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  129. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  130. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  131. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  132. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  133. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  134. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  135. package/package.json +1 -1
  136. package/include/amxtf32intrin.h +0 -108
@@ -0,0 +1,174 @@
1
+ /*===-------- avx512bmmintrin.h - AVX512BMM 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
+
11
+ #ifndef __IMMINTRIN_H
12
+ #error "Never use <avx512bmmintrin.h> directly; include <immintrin.h> instead."
13
+ #endif
14
+
15
+ #ifndef _AVX512BMMINTRIN_H
16
+ #define _AVX512BMMINTRIN_H
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512bmm"), \
21
+ __min_vector_width__(512)))
22
+
23
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
24
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
25
+ #else
26
+ #define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
27
+ #endif
28
+
29
+ /// Multiplies two 16x16 bit matrices using OR reduction and ORs the product
30
+ /// into a third 16x16 bit matrix (which is also the destination).
31
+ ///
32
+ /// For the 512-bit ZMM form, each register contains two 16x16 (256-bit)
33
+ /// matrices in bits [255:0] and [511:256]. The operation performs:
34
+ /// \code{.operation}
35
+ /// for i in 0 to 15
36
+ /// for j in 0 to 15
37
+ /// reduction_bit = __C[16*i+j]
38
+ /// for k in 0 to 15
39
+ /// reduction_bit |= __A[16*i+k] & __B[16*k+j]
40
+ /// end for k
41
+ /// dest[16*i+j] = reduction_bit
42
+ /// end for j
43
+ /// end for i
44
+ /// \endcode
45
+ ///
46
+ /// \headerfile <immintrin.h>
47
+ ///
48
+ /// This intrinsic corresponds to the <c> VBMACOR16X16X16 </c> instruction.
49
+ ///
50
+ /// \param __A
51
+ /// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
52
+ /// lane).
53
+ /// \param __B
54
+ /// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
55
+ /// lane).
56
+ /// \param __C
57
+ /// A 512-bit accumulator vector containing the initial values to OR with.
58
+ /// \returns A 512-bit vector containing the accumulated result for each lane.
59
+ /// \note This instruction does not support masking.
60
+ static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
61
+ _mm512_bmacor16x16x16(__m512i __A, __m512i __B, __m512i __C) {
62
+ return (__m512i)__builtin_ia32_bmacor16x16x16_v32hi(
63
+ (__v32hi)__A, (__v32hi)__B, (__v32hi)__C);
64
+ }
65
+
66
+ /// Multiplies two 16x16 bit matrices using XOR reduction and XORs the product
67
+ /// into a third 16x16 bit matrix (which is also the destination).
68
+ ///
69
+ /// For the 512-bit ZMM form, each register contains two 16x16 (256-bit)
70
+ /// matrices in bits [255:0] and [511:256]. The operation performs:
71
+ /// \code{.operation}
72
+ /// for i in 0 to 15
73
+ /// for j in 0 to 15
74
+ /// reduction_bit = __C[16*i+j]
75
+ /// for k in 0 to 15
76
+ /// reduction_bit ^= __A[16*i+k] & __B[16*k+j]
77
+ /// end for k
78
+ /// dest[16*i+j] = reduction_bit
79
+ /// end for j
80
+ /// end for i
81
+ /// \endcode
82
+ ///
83
+ /// \headerfile <immintrin.h>
84
+ ///
85
+ /// This intrinsic corresponds to the <c> VBMACXOR16X16X16 </c> instruction.
86
+ ///
87
+ /// \param __A
88
+ /// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
89
+ /// lane).
90
+ /// \param __B
91
+ /// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
92
+ /// lane).
93
+ /// \param __C
94
+ /// A 512-bit accumulator vector containing the initial values to XOR with.
95
+ /// \returns A 512-bit vector containing the accumulated result for each lane.
96
+ /// \note This instruction does not support masking.
97
+ static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
98
+ _mm512_bmacxor16x16x16(__m512i __A, __m512i __B, __m512i __C) {
99
+ return (__m512i)__builtin_ia32_bmacxor16x16x16_v32hi(
100
+ (__v32hi)__A, (__v32hi)__B, (__v32hi)__C);
101
+ }
102
+
103
+ /// Reverses the bits within each byte of the source vector.
104
+ ///
105
+ /// For each byte in the source, reverses the order of its 8 bits to generate
106
+ /// the corresponding destination byte. For example, 0b10110001 becomes
107
+ /// 0b10001101.
108
+ ///
109
+ /// \headerfile <immintrin.h>
110
+ ///
111
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
112
+ ///
113
+ /// \param __A
114
+ /// A 512-bit vector of [64 x i8] where each byte will have its bits
115
+ /// reversed.
116
+ /// \returns A 512-bit vector of [64 x i8] with bit-reversed bytes.
117
+ static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
118
+ _mm512_bitrev_epi8(__m512i __A) {
119
+ return (__m512i)__builtin_elementwise_bitreverse((__v64qi)__A);
120
+ }
121
+
122
+ /// Reverses the bits within each byte of the source vector, using a writemask
123
+ /// to conditionally select elements.
124
+ ///
125
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
126
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
127
+ /// the corresponding byte from \a B is copied to the result (merge masking).
128
+ ///
129
+ /// \headerfile <immintrin.h>
130
+ ///
131
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
132
+ ///
133
+ /// \param __U
134
+ /// A 64-bit mask value where each bit controls one byte (per 8-bit element).
135
+ /// A 1 performs bit reversal; a 0 selects the passthrough byte from __B.
136
+ /// \param __A
137
+ /// A 512-bit vector of [64 x i8] to be bit-reversed.
138
+ /// \param __B
139
+ /// A 512-bit vector of [64 x i8] providing passthrough values.
140
+ /// \returns A 512-bit vector combining bit-reversed and passthrough bytes.
141
+ static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
142
+ _mm512_mask_bitrev_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
143
+ return (__m512i)__builtin_ia32_selectb_512(
144
+ (__mmask64)__U, (__v64qi)_mm512_bitrev_epi8(__A), (__v64qi)__B);
145
+ }
146
+
147
+ /// Reverses the bits within each byte of the source vector, zeroing elements
148
+ /// based on the writemask.
149
+ ///
150
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
151
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
152
+ /// the result byte is set to zero (zero masking).
153
+ ///
154
+ /// \headerfile <immintrin.h>
155
+ ///
156
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
157
+ ///
158
+ /// \param __U
159
+ /// A 64-bit mask value where each bit controls one byte (per 8-bit element).
160
+ /// A 1 performs bit reversal; a 0 sets the byte to zero.
161
+ /// \param __A
162
+ /// A 512-bit vector of [64 x i8] to be bit-reversed.
163
+ /// \returns A 512-bit vector with bit-reversed or zeroed bytes.
164
+ static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
165
+ _mm512_maskz_bitrev_epi8(__mmask64 __U, __m512i __A) {
166
+ return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
167
+ (__v64qi)_mm512_bitrev_epi8(__A),
168
+ (__v64qi)_mm512_setzero_si512());
169
+ }
170
+
171
+ #undef __DEFAULT_FN_ATTRS
172
+ #undef __DEFAULT_FN_ATTRS_CONSTEXPR
173
+
174
+ #endif
@@ -0,0 +1,245 @@
1
+ /*===------------- avx512bmmvlintrin.h - BMM 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 <avx512bmmvlintrin.h> directly; include <immintrin.h> instead."
13
+ #endif
14
+
15
+ #ifndef __BMMVLINTRIN_H
16
+ #define __BMMVLINTRIN_H
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS128 \
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("avx512bmm,avx512vl"), __min_vector_width__(128)))
22
+ #define __DEFAULT_FN_ATTRS256 \
23
+ __attribute__((__always_inline__, __nodebug__, \
24
+ __target__("avx512bmm,avx512vl"), __min_vector_width__(256)))
25
+
26
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
27
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
28
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
29
+ #else
30
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
31
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
32
+ #endif
33
+
34
+ /// Multiplies two 16x16 bit matrices using OR reduction and ORs the product
35
+ /// into a third 16x16 bit matrix (which is also the destination).
36
+ ///
37
+ /// For the 256-bit YMM form, the source registers/memory each contain a single
38
+ /// 16x16 (256-bit) matrix in bits [255:0]. The operation performs:
39
+ /// \code{.operation}
40
+ /// for i in 0 to 15
41
+ /// for j in 0 to 15
42
+ /// reduction_bit = __C[16*i+j]
43
+ /// for k in 0 to 15
44
+ /// reduction_bit |= __A[16*i+k] & __B[16*k+j]
45
+ /// end for k
46
+ /// dest[16*i+j] = reduction_bit
47
+ /// end for j
48
+ /// end for i
49
+ /// \endcode
50
+ ///
51
+ /// \headerfile <immintrin.h>
52
+ ///
53
+ /// This intrinsic corresponds to the <c> VBMACOR16X16X16 </c> instruction.
54
+ ///
55
+ /// \param __A
56
+ /// A 256-bit vector containing a 16x16 bit matrix.
57
+ /// \param __B
58
+ /// A 256-bit vector containing a 16x16 bit matrix.
59
+ /// \param __C
60
+ /// A 256-bit accumulator vector containing the initial values to OR with.
61
+ /// \returns A 256-bit vector containing the accumulated result.
62
+ /// \note This instruction does not support masking.
63
+ static __inline __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
64
+ _mm256_bmacor16x16x16(__m256i __A, __m256i __B, __m256i __C) {
65
+ return (__m256i)__builtin_ia32_bmacor16x16x16_v16hi(
66
+ (__v16hi)__A, (__v16hi)__B, (__v16hi)__C);
67
+ }
68
+
69
+ /// Multiplies two 16x16 bit matrices using XOR reduction and XORs the product
70
+ /// into a third 16x16 bit matrix (which is also the destination).
71
+ ///
72
+ /// For the 256-bit YMM form, the source registers/memory each contain a single
73
+ /// 16x16 (256-bit) matrix in bits [255:0]. The operation performs:
74
+ /// \code{.operation}
75
+ /// for i in 0 to 15
76
+ /// for j in 0 to 15
77
+ /// reduction_bit = __C[16*i+j]
78
+ /// for k in 0 to 15
79
+ /// reduction_bit ^= __A[16*i+k] & __B[16*k+j]
80
+ /// end for k
81
+ /// dest[16*i+j] = reduction_bit
82
+ /// end for j
83
+ /// end for i
84
+ /// \endcode
85
+ ///
86
+ /// \headerfile <immintrin.h>
87
+ ///
88
+ /// This intrinsic corresponds to the <c> VBMACXOR16X16X16 </c> instruction.
89
+ ///
90
+ /// \param __A
91
+ /// A 256-bit vector containing a 16x16 bit matrix.
92
+ /// \param __B
93
+ /// A 256-bit vector containing a 16x16 bit matrix.
94
+ /// \param __C
95
+ /// A 256-bit accumulator vector containing the initial values to XOR with.
96
+ /// \returns A 256-bit vector containing the accumulated result.
97
+ /// \note This instruction does not support masking.
98
+ static __inline __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
99
+ _mm256_bmacxor16x16x16(__m256i __A, __m256i __B, __m256i __C) {
100
+ return (__m256i)__builtin_ia32_bmacxor16x16x16_v16hi(
101
+ (__v16hi)__A, (__v16hi)__B, (__v16hi)__C);
102
+ }
103
+
104
+ /// Reverses the bits within each byte of the source vector.
105
+ ///
106
+ /// For each byte in the source, reverses the order of its 8 bits to generate
107
+ /// the corresponding destination byte. For example, 0b10110001 becomes
108
+ /// 0b10001101.
109
+ ///
110
+ /// \headerfile <immintrin.h>
111
+ ///
112
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
113
+ ///
114
+ /// \param __A
115
+ /// A 128-bit vector of [16 x i8] where each byte will have its bits
116
+ /// reversed.
117
+ /// \returns A 128-bit vector of [16 x i8] with bit-reversed bytes.
118
+ static __inline __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
119
+ _mm128_bitrev_epi8(__m128i __A) {
120
+ return (__m128i)__builtin_elementwise_bitreverse((__v16qi)__A);
121
+ }
122
+
123
+ /// Reverses the bits within each byte of the source vector.
124
+ ///
125
+ /// For each byte in the source, reverses the order of its 8 bits to generate
126
+ /// the corresponding destination byte. For example, 0b10110001 becomes
127
+ /// 0b10001101.
128
+ ///
129
+ /// \headerfile <immintrin.h>
130
+ ///
131
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
132
+ ///
133
+ /// \param __A
134
+ /// A 256-bit vector of [32 x i8] where each byte will have its bits
135
+ /// reversed.
136
+ /// \returns A 256-bit vector of [32 x i8] with bit-reversed bytes.
137
+ static __inline __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
138
+ _mm256_bitrev_epi8(__m256i __A) {
139
+ return (__m256i)__builtin_elementwise_bitreverse((__v32qi)__A);
140
+ }
141
+
142
+ /// Reverses the bits within each byte of the source vector, using a writemask
143
+ /// to conditionally select elements.
144
+ ///
145
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
146
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
147
+ /// the corresponding byte from \a B is copied to the result (merge masking).
148
+ ///
149
+ /// \headerfile <immintrin.h>
150
+ ///
151
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
152
+ ///
153
+ /// \param __U
154
+ /// A 16-bit mask value where each bit controls one byte (per 8-bit element).
155
+ /// A 1 performs bit reversal; a 0 selects the passthrough byte from __B.
156
+ /// \param __A
157
+ /// A 128-bit vector of [16 x i8] to be bit-reversed.
158
+ /// \param __B
159
+ /// A 128-bit vector of [16 x i8] providing passthrough values.
160
+ /// \returns A 128-bit vector combining bit-reversed and passthrough bytes.
161
+ static __inline __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
162
+ _mm128_mask_bitrev_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
163
+ return (__m128i)__builtin_ia32_selectb_128(
164
+ (__mmask16)__U, (__v16qi)_mm128_bitrev_epi8(__A), (__v16qi)__B);
165
+ }
166
+
167
+ /// Reverses the bits within each byte of the source vector, using a writemask
168
+ /// to conditionally select elements.
169
+ ///
170
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
171
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
172
+ /// the corresponding byte from \a B is copied to the result (merge masking).
173
+ ///
174
+ /// \headerfile <immintrin.h>
175
+ ///
176
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
177
+ ///
178
+ /// \param __U
179
+ /// A 32-bit mask value where each bit controls one byte (per 8-bit element).
180
+ /// A 1 performs bit reversal; a 0 selects the passthrough byte from __B.
181
+ /// \param __A
182
+ /// A 256-bit vector of [32 x i8] to be bit-reversed.
183
+ /// \param __B
184
+ /// A 256-bit vector of [32 x i8] providing passthrough values.
185
+ /// \returns A 256-bit vector combining bit-reversed and passthrough bytes.
186
+ static __inline __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
187
+ _mm256_mask_bitrev_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
188
+ return (__m256i)__builtin_ia32_selectb_256(
189
+ (__mmask32)__U, (__v32qi)_mm256_bitrev_epi8(__A), (__v32qi)__B);
190
+ }
191
+
192
+ /// Reverses the bits within each byte of the source vector, zeroing elements
193
+ /// based on the writemask.
194
+ ///
195
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
196
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
197
+ /// the result byte is set to zero (zero masking).
198
+ ///
199
+ /// \headerfile <immintrin.h>
200
+ ///
201
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
202
+ ///
203
+ /// \param __U
204
+ /// A 16-bit mask value where each bit controls one byte (per 8-bit element).
205
+ /// A 1 performs bit reversal; a 0 sets the byte to zero.
206
+ /// \param __A
207
+ /// A 128-bit vector of [16 x i8] to be bit-reversed.
208
+ /// \returns A 128-bit vector with bit-reversed or zeroed bytes.
209
+ static __inline __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
210
+ _mm128_maskz_bitrev_epi8(__mmask16 __U, __m128i __A) {
211
+ return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
212
+ (__v16qi)_mm128_bitrev_epi8(__A),
213
+ (__v16qi)_mm_setzero_si128());
214
+ }
215
+
216
+ /// Reverses the bits within each byte of the source vector, zeroing elements
217
+ /// based on the writemask.
218
+ ///
219
+ /// For each byte position, if the corresponding mask bit is 1, the byte from
220
+ /// \a A has its bits reversed and stored in the result. If the mask bit is 0,
221
+ /// the result byte is set to zero (zero masking).
222
+ ///
223
+ /// \headerfile <immintrin.h>
224
+ ///
225
+ /// This intrinsic corresponds to the <c> VBITREV </c> instruction.
226
+ ///
227
+ /// \param __U
228
+ /// A 32-bit mask value where each bit controls one byte (per 8-bit element).
229
+ /// A 1 performs bit reversal; a 0 sets the byte to zero.
230
+ /// \param __A
231
+ /// A 256-bit vector of [32 x i8] to be bit-reversed.
232
+ /// \returns A 256-bit vector with bit-reversed or zeroed bytes.
233
+ static __inline __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
234
+ _mm256_maskz_bitrev_epi8(__mmask32 __U, __m256i __A) {
235
+ return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
236
+ (__v32qi)_mm256_bitrev_epi8(__A),
237
+ (__v32qi)_mm256_setzero_si256());
238
+ }
239
+
240
+ #undef __DEFAULT_FN_ATTRS128_CONSTEXPR
241
+ #undef __DEFAULT_FN_ATTRS256_CONSTEXPR
242
+ #undef __DEFAULT_FN_ATTRS128
243
+ #undef __DEFAULT_FN_ATTRS256
244
+
245
+ #endif
@@ -1695,57 +1695,49 @@ _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
1695
1695
  (__mmask64) __U);
1696
1696
  }
1697
1697
 
1698
- static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1699
- _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1700
- {
1698
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR
1699
+ _mm512_test_epi8_mask(__m512i __A, __m512i __B) {
1701
1700
  return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B),
1702
1701
  _mm512_setzero_si512());
1703
1702
  }
1704
1703
 
1705
- static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1706
- _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1707
- {
1704
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR
1705
+ _mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
1708
1706
  return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1709
1707
  _mm512_setzero_si512());
1710
1708
  }
1711
1709
 
1712
- static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1713
- _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1714
- {
1710
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR
1711
+ _mm512_test_epi16_mask(__m512i __A, __m512i __B) {
1715
1712
  return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B),
1716
1713
  _mm512_setzero_si512());
1717
1714
  }
1718
1715
 
1719
- static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1720
- _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1721
- {
1716
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR
1717
+ _mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
1722
1718
  return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1723
1719
  _mm512_setzero_si512());
1724
1720
  }
1725
1721
 
1726
- static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1727
- _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1728
- {
1722
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR
1723
+ _mm512_testn_epi8_mask(__m512i __A, __m512i __B) {
1729
1724
  return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512());
1730
1725
  }
1731
1726
 
1732
- static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1733
- _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1734
- {
1727
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS512_CONSTEXPR
1728
+ _mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
1735
1729
  return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1736
1730
  _mm512_setzero_si512());
1737
1731
  }
1738
1732
 
1739
- static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1740
- _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1741
- {
1733
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR
1734
+ _mm512_testn_epi16_mask(__m512i __A, __m512i __B) {
1742
1735
  return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B),
1743
1736
  _mm512_setzero_si512());
1744
1737
  }
1745
1738
 
1746
- static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1747
- _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1748
- {
1739
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS512_CONSTEXPR
1740
+ _mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
1749
1741
  return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1750
1742
  _mm512_setzero_si512());
1751
1743
  }
@@ -1880,11 +1872,9 @@ _mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A,
1880
1872
  (__v32hi)_mm512_dbsad_epu8((A), (B), (imm)), \
1881
1873
  (__v32hi)_mm512_setzero_si512()))
1882
1874
 
1883
- static __inline__ __m512i __DEFAULT_FN_ATTRS512
1884
- _mm512_sad_epu8 (__m512i __A, __m512i __B)
1885
- {
1886
- return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
1887
- (__v64qi) __B);
1875
+ static __inline__ __m512i
1876
+ __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_sad_epu8(__m512i __A, __m512i __B) {
1877
+ return (__m512i)__builtin_ia32_psadbw512((__v64qu)__A, (__v64qu)__B);
1888
1878
  }
1889
1879
 
1890
1880
  #undef __DEFAULT_FN_ATTRS512