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.
- package/include/__clang_cuda_complex_builtins.h +10 -3
- package/include/__clang_cuda_intrinsics.h +207 -226
- package/include/__clang_cuda_math_forward_declares.h +5 -0
- package/include/__clang_cuda_runtime_wrapper.h +9 -5
- package/include/__clang_gpu_builtin_vars.h +71 -0
- package/include/__clang_gpu_device_functions.h +411 -0
- package/include/__clang_gpu_intrinsics.h +242 -0
- package/include/__clang_hip_libdevice_declares.h +0 -102
- package/include/__clang_hip_math.h +3 -3
- package/include/__clang_hip_runtime_wrapper.h +6 -1
- package/include/__clang_spirv_libdevice_declares.h +170 -0
- package/include/__clang_spirv_math.h +719 -0
- package/include/altivec.h +79 -9
- package/include/amdgpuintrin.h +2 -29
- package/include/amdhsa_abi.h +83 -0
- package/include/amo.h +89 -0
- package/include/andes_vector.h +5 -0
- package/include/arm64_neon.h +21 -0
- package/include/arm64intr.h +10 -0
- package/include/arm_acle.h +1 -0
- package/include/arm_neon.h +3922 -3754
- package/include/arm_sme.h +12 -0
- package/include/arm_sve.h +420 -0
- package/include/avx2intrin.h +4 -5
- package/include/avx512bmmintrin.h +174 -0
- package/include/avx512bmmvlintrin.h +245 -0
- package/include/avx512bwintrin.h +19 -29
- package/include/avx512fintrin.h +62 -89
- package/include/avx512fp16intrin.h +12 -18
- package/include/avx512vbmi2intrin.h +12 -16
- package/include/avx512vlbwintrin.h +24 -36
- package/include/avx512vlintrin.h +80 -96
- package/include/avx512vlvbmi2intrin.h +24 -32
- package/include/avx512vlvnniintrin.h +29 -34
- package/include/avx512vnniintrin.h +32 -35
- package/include/avx512vp2intersectintrin.h +1 -1
- package/include/avxvnniintrin.h +23 -18
- package/include/crc32intrin.h +10 -8
- package/include/emmintrin.h +8 -8
- package/include/endian.h +91 -0
- package/include/fuzzer/FuzzedDataProvider.h +3 -3
- package/include/gpuintrin.h +123 -105
- package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
- package/include/hlsl_inline_intrinsics_gen.inc +546 -0
- package/include/hvx_hexagon_protos.h +102 -80
- package/include/immintrin.h +4 -2
- package/include/intrin.h +20 -10
- package/include/larchintrin.h +2 -0
- package/include/llvm_libc_wrappers/ctype.h +3 -2
- package/include/llvm_libc_wrappers/string.h +3 -2
- package/include/module.modulemap +16 -1
- package/include/nvptxintrin.h +15 -26
- package/include/opencl-c-base.h +7 -0
- package/include/opencl-c.h +163 -102
- package/include/openmp_wrappers/__clang_openmp_device_functions.h +14 -0
- package/include/openmp_wrappers/complex +7 -1
- package/include/openmp_wrappers/complex.h +6 -0
- package/include/openmp_wrappers/math.h +10 -0
- package/include/profile/InstrProfData.inc +65 -3
- package/include/ptrauth.h +90 -12
- package/include/riscv_bitmanip.h +7 -0
- package/include/riscv_corev_alu.h +2 -0
- package/include/riscv_crypto.h +8 -0
- package/include/riscv_mips.h +2 -0
- package/include/riscv_nds.h +3 -0
- package/include/riscv_ntlh.h +2 -0
- package/include/riscv_packed_simd.h +644 -0
- package/include/riscv_vector.h +43 -0
- package/include/sanitizer/asan_interface.h +51 -1
- package/include/sanitizer/common_interface_defs.h +12 -49
- package/include/sanitizer/safestack_interface.h +50 -0
- package/include/sanitizer/tysan_interface.h +36 -0
- package/include/sanitizer/ubsan_interface.h +30 -0
- package/include/sifive_vector.h +18 -0
- package/include/spirvintrin.h +2 -29
- package/include/stdint.h +5 -14
- package/include/vecintrin.h +1 -1
- package/include/wasm_simd128.h +17 -0
- package/include/xmmintrin.h +8 -7
- package/include/zos_wrappers/grp.h +19 -0
- package/include/zos_wrappers/locale.h +19 -0
- package/include/zos_wrappers/math.h +31 -0
- package/include/zos_wrappers/poll.h +19 -0
- package/include/zos_wrappers/stdlib.h +20 -0
- package/include/zos_wrappers/string.h +19 -0
- package/include/zos_wrappers/time.h +19 -0
- package/include/zos_wrappers/variant.h +19 -0
- package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
- package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.cc_kext.a +0 -0
- package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
- package/lib/darwin/libclang_rt.ios.a +0 -0
- package/lib/darwin/libclang_rt.iossim.a +0 -0
- package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.osx.a +0 -0
- package/lib/darwin/libclang_rt.profile_ios.a +0 -0
- package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
- package/lib/darwin/libclang_rt.profile_osx.a +0 -0
- package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
- package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
- package/package.json +1 -1
- 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
|
package/include/avx512bwintrin.h
CHANGED
|
@@ -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
|
|
1699
|
-
_mm512_test_epi8_mask
|
|
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
|
|
1706
|
-
_mm512_mask_test_epi8_mask
|
|
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
|
|
1713
|
-
_mm512_test_epi16_mask
|
|
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
|
|
1720
|
-
_mm512_mask_test_epi16_mask
|
|
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
|
|
1727
|
-
_mm512_testn_epi8_mask
|
|
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
|
|
1733
|
-
_mm512_mask_testn_epi8_mask
|
|
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
|
|
1740
|
-
_mm512_testn_epi16_mask
|
|
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
|
|
1747
|
-
_mm512_mask_testn_epi16_mask
|
|
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
|
|
1884
|
-
_mm512_sad_epu8
|
|
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
|