llvm-runtime-resources-darwin 22.1.8 → 23.1.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.
- 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
|
@@ -15,6 +15,16 @@
|
|
|
15
15
|
#define __AVX512VLVNNIINTRIN_H
|
|
16
16
|
|
|
17
17
|
/* Define the default attributes for the functions in this file. */
|
|
18
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
19
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
21
|
+
__target__("avx512vl,avx512vnni"), \
|
|
22
|
+
__min_vector_width__(128))) constexpr
|
|
23
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
24
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
25
|
+
__target__("avx512vl,avx512vnni"), \
|
|
26
|
+
__min_vector_width__(256))) constexpr
|
|
27
|
+
#else
|
|
18
28
|
#define __DEFAULT_FN_ATTRS128 \
|
|
19
29
|
__attribute__((__always_inline__, __nodebug__, \
|
|
20
30
|
__target__("avx512vl,avx512vnni"), \
|
|
@@ -23,6 +33,7 @@
|
|
|
23
33
|
__attribute__((__always_inline__, __nodebug__, \
|
|
24
34
|
__target__("avx512vl,avx512vnni"), \
|
|
25
35
|
__min_vector_width__(256)))
|
|
36
|
+
#endif
|
|
26
37
|
|
|
27
38
|
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
|
|
28
39
|
/// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
|
|
@@ -180,128 +191,112 @@
|
|
|
180
191
|
((__m128i)__builtin_ia32_vpdpwssds128((__v4si)(S), (__v8hi)(A), (__v8hi)(B)))
|
|
181
192
|
|
|
182
193
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
183
|
-
_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
|
|
184
|
-
{
|
|
194
|
+
_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
|
|
185
195
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
186
196
|
(__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
|
|
187
197
|
(__v8si)__S);
|
|
188
198
|
}
|
|
189
199
|
|
|
190
200
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
191
|
-
_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
|
|
192
|
-
{
|
|
201
|
+
_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
|
|
193
202
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
194
203
|
(__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
|
|
195
204
|
(__v8si)_mm256_setzero_si256());
|
|
196
205
|
}
|
|
197
206
|
|
|
198
207
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
199
|
-
_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
|
|
200
|
-
{
|
|
208
|
+
_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
|
|
201
209
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
202
210
|
(__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
|
|
203
211
|
(__v8si)__S);
|
|
204
212
|
}
|
|
205
213
|
|
|
206
|
-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
207
|
-
|
|
208
|
-
{
|
|
214
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpbusds_epi32(
|
|
215
|
+
__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
|
|
209
216
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
210
217
|
(__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
|
|
211
218
|
(__v8si)_mm256_setzero_si256());
|
|
212
219
|
}
|
|
213
220
|
|
|
214
221
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
215
|
-
_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
|
|
216
|
-
{
|
|
222
|
+
_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
|
|
217
223
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
218
224
|
(__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
|
|
219
225
|
(__v8si)__S);
|
|
220
226
|
}
|
|
221
227
|
|
|
222
228
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
223
|
-
_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
|
|
224
|
-
{
|
|
229
|
+
_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
|
|
225
230
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
226
231
|
(__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
|
|
227
232
|
(__v8si)_mm256_setzero_si256());
|
|
228
233
|
}
|
|
229
234
|
|
|
230
235
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
231
|
-
_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
|
|
232
|
-
{
|
|
236
|
+
_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
|
|
233
237
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
234
238
|
(__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
|
|
235
239
|
(__v8si)__S);
|
|
236
240
|
}
|
|
237
241
|
|
|
238
|
-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
239
|
-
|
|
240
|
-
{
|
|
242
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpwssds_epi32(
|
|
243
|
+
__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
|
|
241
244
|
return (__m256i)__builtin_ia32_selectd_256(__U,
|
|
242
245
|
(__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
|
|
243
246
|
(__v8si)_mm256_setzero_si256());
|
|
244
247
|
}
|
|
245
248
|
|
|
246
249
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
247
|
-
_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
|
|
248
|
-
{
|
|
250
|
+
_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
|
|
249
251
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
250
252
|
(__v4si)_mm_dpbusd_epi32(__S, __A, __B),
|
|
251
253
|
(__v4si)__S);
|
|
252
254
|
}
|
|
253
255
|
|
|
254
256
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
255
|
-
_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
|
|
256
|
-
{
|
|
257
|
+
_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
|
|
257
258
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
258
259
|
(__v4si)_mm_dpbusd_epi32(__S, __A, __B),
|
|
259
260
|
(__v4si)_mm_setzero_si128());
|
|
260
261
|
}
|
|
261
262
|
|
|
262
263
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
263
|
-
_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
|
|
264
|
-
{
|
|
264
|
+
_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
|
|
265
265
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
266
266
|
(__v4si)_mm_dpbusds_epi32(__S, __A, __B),
|
|
267
267
|
(__v4si)__S);
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
271
|
-
_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
|
|
272
|
-
{
|
|
271
|
+
_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
|
|
273
272
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
274
273
|
(__v4si)_mm_dpbusds_epi32(__S, __A, __B),
|
|
275
274
|
(__v4si)_mm_setzero_si128());
|
|
276
275
|
}
|
|
277
276
|
|
|
278
277
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
279
|
-
_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
|
|
280
|
-
{
|
|
278
|
+
_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
|
|
281
279
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
282
280
|
(__v4si)_mm_dpwssd_epi32(__S, __A, __B),
|
|
283
281
|
(__v4si)__S);
|
|
284
282
|
}
|
|
285
283
|
|
|
286
284
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
287
|
-
_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
|
|
288
|
-
{
|
|
285
|
+
_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
|
|
289
286
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
290
287
|
(__v4si)_mm_dpwssd_epi32(__S, __A, __B),
|
|
291
288
|
(__v4si)_mm_setzero_si128());
|
|
292
289
|
}
|
|
293
290
|
|
|
294
291
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
295
|
-
_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
|
|
296
|
-
{
|
|
292
|
+
_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
|
|
297
293
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
298
294
|
(__v4si)_mm_dpwssds_epi32(__S, __A, __B),
|
|
299
295
|
(__v4si)__S);
|
|
300
296
|
}
|
|
301
297
|
|
|
302
298
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
303
|
-
_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
|
|
304
|
-
{
|
|
299
|
+
_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
|
|
305
300
|
return (__m128i)__builtin_ia32_selectd_128(__U,
|
|
306
301
|
(__v4si)_mm_dpwssds_epi32(__S, __A, __B),
|
|
307
302
|
(__v4si)_mm_setzero_si128());
|
|
@@ -15,102 +15,99 @@
|
|
|
15
15
|
#define __AVX512VNNIINTRIN_H
|
|
16
16
|
|
|
17
17
|
/* Define the default attributes for the functions in this file. */
|
|
18
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
19
|
+
#define __DEFAULT_FN_ATTRS \
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
|
|
21
|
+
__min_vector_width__(512))) constexpr
|
|
22
|
+
#else
|
|
18
23
|
#define __DEFAULT_FN_ATTRS \
|
|
19
24
|
__attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
|
|
20
25
|
__min_vector_width__(512)))
|
|
26
|
+
#endif
|
|
21
27
|
|
|
22
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
23
|
-
|
|
24
|
-
{
|
|
28
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusd_epi32(__m512i __S,
|
|
29
|
+
__m512i __A,
|
|
30
|
+
__m512i __B) {
|
|
25
31
|
return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v64qu)__A,
|
|
26
32
|
(__v64qi)__B);
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
30
|
-
_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
31
|
-
{
|
|
36
|
+
_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
|
|
32
37
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
33
38
|
(__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
|
|
34
39
|
(__v16si)__S);
|
|
35
40
|
}
|
|
36
41
|
|
|
37
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
38
|
-
|
|
39
|
-
{
|
|
42
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusd_epi32(
|
|
43
|
+
__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
|
|
40
44
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
41
45
|
(__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
|
|
42
46
|
(__v16si)_mm512_setzero_si512());
|
|
43
47
|
}
|
|
44
48
|
|
|
45
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
46
|
-
|
|
47
|
-
{
|
|
49
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusds_epi32(__m512i __S,
|
|
50
|
+
__m512i __A,
|
|
51
|
+
__m512i __B) {
|
|
48
52
|
return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v64qu)__A,
|
|
49
53
|
(__v64qi)__B);
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
53
|
-
|
|
54
|
-
{
|
|
56
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbusds_epi32(
|
|
57
|
+
__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
|
|
55
58
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
56
59
|
(__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
|
|
57
60
|
(__v16si)__S);
|
|
58
61
|
}
|
|
59
62
|
|
|
60
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
61
|
-
|
|
62
|
-
{
|
|
63
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusds_epi32(
|
|
64
|
+
__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
|
|
63
65
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
64
66
|
(__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
|
|
65
67
|
(__v16si)_mm512_setzero_si512());
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
69
|
-
|
|
70
|
-
{
|
|
70
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssd_epi32(__m512i __S,
|
|
71
|
+
__m512i __A,
|
|
72
|
+
__m512i __B) {
|
|
71
73
|
return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v32hi)__A,
|
|
72
74
|
(__v32hi)__B);
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
76
|
-
_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
|
|
77
|
-
{
|
|
78
|
+
_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
|
|
78
79
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
79
80
|
(__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
|
|
80
81
|
(__v16si)__S);
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
84
|
-
|
|
85
|
-
{
|
|
84
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssd_epi32(
|
|
85
|
+
__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
|
|
86
86
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
87
87
|
(__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
|
|
88
88
|
(__v16si)_mm512_setzero_si512());
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
92
|
-
|
|
93
|
-
{
|
|
91
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssds_epi32(__m512i __S,
|
|
92
|
+
__m512i __A,
|
|
93
|
+
__m512i __B) {
|
|
94
94
|
return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v32hi)__A,
|
|
95
95
|
(__v32hi)__B);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
99
|
-
|
|
100
|
-
{
|
|
98
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwssds_epi32(
|
|
99
|
+
__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
|
|
101
100
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
102
101
|
(__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
|
|
103
102
|
(__v16si)__S);
|
|
104
103
|
}
|
|
105
104
|
|
|
106
|
-
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
107
|
-
|
|
108
|
-
{
|
|
105
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssds_epi32(
|
|
106
|
+
__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
|
|
109
107
|
return (__m512i)__builtin_ia32_selectd_512(__U,
|
|
110
108
|
(__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
|
|
111
109
|
(__v16si)_mm512_setzero_si512());
|
|
112
110
|
}
|
|
113
111
|
|
|
114
112
|
#undef __DEFAULT_FN_ATTRS
|
|
115
|
-
|
|
116
113
|
#endif
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
*===-----------------------------------------------------------------------===
|
|
23
23
|
*/
|
|
24
24
|
#ifndef __IMMINTRIN_H
|
|
25
|
-
#error "Never use <
|
|
25
|
+
#error "Never use <avx512vp2intersectintrin.h> directly; include <immintrin.h> instead."
|
|
26
26
|
#endif
|
|
27
27
|
|
|
28
28
|
#ifndef _AVX512VP2INTERSECT_H
|
package/include/avxvnniintrin.h
CHANGED
|
@@ -40,8 +40,21 @@
|
|
|
40
40
|
|
|
41
41
|
/* Intrinsics with _avx_ prefix are for compatibility with msvc. */
|
|
42
42
|
/* Define the default attributes for the functions in this file. */
|
|
43
|
-
#
|
|
44
|
-
#define
|
|
43
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
44
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
45
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnni"), \
|
|
46
|
+
__min_vector_width__(256))) constexpr
|
|
47
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
48
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnni"), \
|
|
49
|
+
__min_vector_width__(128))) constexpr
|
|
50
|
+
#else
|
|
51
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
52
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnni"), \
|
|
53
|
+
__min_vector_width__(256)))
|
|
54
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
55
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnni"), \
|
|
56
|
+
__min_vector_width__(128)))
|
|
57
|
+
#endif
|
|
45
58
|
|
|
46
59
|
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with
|
|
47
60
|
/// corresponding signed 8-bit integers in \a __B, producing 4 intermediate signed
|
|
@@ -61,8 +74,7 @@
|
|
|
61
74
|
/// DST[MAX:256] := 0
|
|
62
75
|
/// \endcode
|
|
63
76
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
64
|
-
_mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
65
|
-
{
|
|
77
|
+
_mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B) {
|
|
66
78
|
return (__m256i)__builtin_ia32_vpdpbusd256((__v8si)__S, (__v32qu)__A,
|
|
67
79
|
(__v32qi)__B);
|
|
68
80
|
}
|
|
@@ -85,8 +97,7 @@ _mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
85
97
|
/// DST[MAX:256] := 0
|
|
86
98
|
/// \endcode
|
|
87
99
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
88
|
-
_mm256_dpbusds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
89
|
-
{
|
|
100
|
+
_mm256_dpbusds_avx_epi32(__m256i __S, __m256i __A, __m256i __B) {
|
|
90
101
|
return (__m256i)__builtin_ia32_vpdpbusds256((__v8si)__S, (__v32qu)__A,
|
|
91
102
|
(__v32qi)__B);
|
|
92
103
|
}
|
|
@@ -107,8 +118,7 @@ _mm256_dpbusds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
107
118
|
/// DST[MAX:256] := 0
|
|
108
119
|
/// \endcode
|
|
109
120
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
110
|
-
_mm256_dpwssd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
111
|
-
{
|
|
121
|
+
_mm256_dpwssd_avx_epi32(__m256i __S, __m256i __A, __m256i __B) {
|
|
112
122
|
return (__m256i)__builtin_ia32_vpdpwssd256((__v8si)__S, (__v16hi)__A,
|
|
113
123
|
(__v16hi)__B);
|
|
114
124
|
}
|
|
@@ -129,8 +139,7 @@ _mm256_dpwssd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
129
139
|
/// DST[MAX:256] := 0
|
|
130
140
|
/// \endcode
|
|
131
141
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
132
|
-
_mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
133
|
-
{
|
|
142
|
+
_mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B) {
|
|
134
143
|
return (__m256i)__builtin_ia32_vpdpwssds256((__v8si)__S, (__v16hi)__A,
|
|
135
144
|
(__v16hi)__B);
|
|
136
145
|
}
|
|
@@ -153,8 +162,7 @@ _mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
153
162
|
/// DST[MAX:128] := 0
|
|
154
163
|
/// \endcode
|
|
155
164
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
156
|
-
_mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
157
|
-
{
|
|
165
|
+
_mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B) {
|
|
158
166
|
return (__m128i)__builtin_ia32_vpdpbusd128((__v4si)__S, (__v16qu)__A,
|
|
159
167
|
(__v16qi)__B);
|
|
160
168
|
}
|
|
@@ -177,8 +185,7 @@ _mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
177
185
|
/// DST[MAX:128] := 0
|
|
178
186
|
/// \endcode
|
|
179
187
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
180
|
-
_mm_dpbusds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
181
|
-
{
|
|
188
|
+
_mm_dpbusds_avx_epi32(__m128i __S, __m128i __A, __m128i __B) {
|
|
182
189
|
return (__m128i)__builtin_ia32_vpdpbusds128((__v4si)__S, (__v16qu)__A,
|
|
183
190
|
(__v16qi)__B);
|
|
184
191
|
}
|
|
@@ -199,8 +206,7 @@ _mm_dpbusds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
199
206
|
/// DST[MAX:128] := 0
|
|
200
207
|
/// \endcode
|
|
201
208
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
202
|
-
_mm_dpwssd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
203
|
-
{
|
|
209
|
+
_mm_dpwssd_avx_epi32(__m128i __S, __m128i __A, __m128i __B) {
|
|
204
210
|
return (__m128i)__builtin_ia32_vpdpwssd128((__v4si)__S, (__v8hi)__A,
|
|
205
211
|
(__v8hi)__B);
|
|
206
212
|
}
|
|
@@ -221,8 +227,7 @@ _mm_dpwssd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
221
227
|
/// DST[MAX:128] := 0
|
|
222
228
|
/// \endcode
|
|
223
229
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
224
|
-
_mm_dpwssds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
225
|
-
{
|
|
230
|
+
_mm_dpwssds_avx_epi32(__m128i __S, __m128i __A, __m128i __B) {
|
|
226
231
|
return (__m128i)__builtin_ia32_vpdpwssds128((__v4si)__S, (__v8hi)__A,
|
|
227
232
|
(__v8hi)__B);
|
|
228
233
|
}
|
package/include/crc32intrin.h
CHANGED
|
@@ -10,8 +10,14 @@
|
|
|
10
10
|
#ifndef __CRC32INTRIN_H
|
|
11
11
|
#define __CRC32INTRIN_H
|
|
12
12
|
|
|
13
|
+
/// We only declare crc32 as a constexpr if we are compiling C++ code
|
|
14
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
15
|
+
#define __DEFAULT_FN_ATTRS \
|
|
16
|
+
__attribute__((__always_inline__, __nodebug__, __target__("crc32"))) constexpr
|
|
17
|
+
#else
|
|
13
18
|
#define __DEFAULT_FN_ATTRS \
|
|
14
19
|
__attribute__((__always_inline__, __nodebug__, __target__("crc32")))
|
|
20
|
+
#endif
|
|
15
21
|
|
|
16
22
|
/// Adds the unsigned integer operand to the CRC-32C checksum of the
|
|
17
23
|
/// unsigned char operand.
|
|
@@ -28,8 +34,7 @@
|
|
|
28
34
|
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
29
35
|
/// operand \a __D.
|
|
30
36
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
31
|
-
_mm_crc32_u8(unsigned int __C, unsigned char __D)
|
|
32
|
-
{
|
|
37
|
+
_mm_crc32_u8(unsigned int __C, unsigned char __D) {
|
|
33
38
|
return __builtin_ia32_crc32qi(__C, __D);
|
|
34
39
|
}
|
|
35
40
|
|
|
@@ -48,8 +53,7 @@ _mm_crc32_u8(unsigned int __C, unsigned char __D)
|
|
|
48
53
|
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
49
54
|
/// operand \a __D.
|
|
50
55
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
51
|
-
_mm_crc32_u16(unsigned int __C, unsigned short __D)
|
|
52
|
-
{
|
|
56
|
+
_mm_crc32_u16(unsigned int __C, unsigned short __D) {
|
|
53
57
|
return __builtin_ia32_crc32hi(__C, __D);
|
|
54
58
|
}
|
|
55
59
|
|
|
@@ -68,8 +72,7 @@ _mm_crc32_u16(unsigned int __C, unsigned short __D)
|
|
|
68
72
|
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
69
73
|
/// operand \a __D.
|
|
70
74
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
71
|
-
_mm_crc32_u32(unsigned int __C, unsigned int __D)
|
|
72
|
-
{
|
|
75
|
+
_mm_crc32_u32(unsigned int __C, unsigned int __D) {
|
|
73
76
|
return __builtin_ia32_crc32si(__C, __D);
|
|
74
77
|
}
|
|
75
78
|
|
|
@@ -89,8 +92,7 @@ _mm_crc32_u32(unsigned int __C, unsigned int __D)
|
|
|
89
92
|
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
90
93
|
/// operand \a __D.
|
|
91
94
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
92
|
-
_mm_crc32_u64(unsigned long long __C, unsigned long long __D)
|
|
93
|
-
{
|
|
95
|
+
_mm_crc32_u64(unsigned long long __C, unsigned long long __D) {
|
|
94
96
|
return __builtin_ia32_crc32di(__C, __D);
|
|
95
97
|
}
|
|
96
98
|
#endif /* __x86_64__ */
|
package/include/emmintrin.h
CHANGED
|
@@ -279,8 +279,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_sqrt_pd(__m128d __a) {
|
|
|
279
279
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
280
280
|
/// minimum value between both operands. The upper 64 bits are copied from
|
|
281
281
|
/// the upper 64 bits of the first source operand.
|
|
282
|
-
static __inline__ __m128d
|
|
283
|
-
|
|
282
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_min_sd(__m128d __a,
|
|
283
|
+
__m128d __b) {
|
|
284
284
|
return __builtin_ia32_minsd((__v2df)__a, (__v2df)__b);
|
|
285
285
|
}
|
|
286
286
|
|
|
@@ -325,8 +325,8 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_min_pd(__m128d __a,
|
|
|
325
325
|
/// \returns A 128-bit vector of [2 x double] whose lower 64 bits contain the
|
|
326
326
|
/// maximum value between both operands. The upper 64 bits are copied from
|
|
327
327
|
/// the upper 64 bits of the first source operand.
|
|
328
|
-
static __inline__ __m128d
|
|
329
|
-
|
|
328
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS_CONSTEXPR _mm_max_sd(__m128d __a,
|
|
329
|
+
__m128d __b) {
|
|
330
330
|
return __builtin_ia32_maxsd((__v2df)__a, (__v2df)__b);
|
|
331
331
|
}
|
|
332
332
|
|
|
@@ -1343,7 +1343,7 @@ _mm_cvtepi32_pd(__m128i __a) {
|
|
|
1343
1343
|
/// \returns A 128-bit vector of [4 x i32] whose lower 64 bits contain the
|
|
1344
1344
|
/// converted values. The upper 64 bits are set to zero.
|
|
1345
1345
|
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtpd_epi32(__m128d __a) {
|
|
1346
|
-
return __builtin_ia32_cvtpd2dq((__v2df)__a);
|
|
1346
|
+
return (__m128i)__builtin_ia32_cvtpd2dq((__v2df)__a);
|
|
1347
1347
|
}
|
|
1348
1348
|
|
|
1349
1349
|
/// Converts the low-order element of a 128-bit vector of [2 x double]
|
|
@@ -2481,9 +2481,9 @@ _mm_mul_epu32(__m128i __a, __m128i __b) {
|
|
|
2481
2481
|
/// A 128-bit integer vector containing one of the source operands.
|
|
2482
2482
|
/// \returns A [2 x i64] vector containing the sums of the sets of absolute
|
|
2483
2483
|
/// differences between both operands.
|
|
2484
|
-
static __inline__ __m128i
|
|
2485
|
-
|
|
2486
|
-
return __builtin_ia32_psadbw128((
|
|
2484
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
2485
|
+
_mm_sad_epu8(__m128i __a, __m128i __b) {
|
|
2486
|
+
return __builtin_ia32_psadbw128((__v16qu)__a, (__v16qu)__b);
|
|
2487
2487
|
}
|
|
2488
2488
|
|
|
2489
2489
|
/// Subtracts the corresponding 8-bit integer values in the operands.
|
package/include/endian.h
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
//===-- Definition of macros from endian.h --------------------------------===//
|
|
2
|
+
//
|
|
3
|
+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
// See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#ifndef __CLANG_ENDIAN_H
|
|
10
|
+
#define __CLANG_ENDIAN_H
|
|
11
|
+
|
|
12
|
+
// If the system has an endian.h, let's use that instead.
|
|
13
|
+
#if __has_include_next(<endian.h>)
|
|
14
|
+
#include_next <endian.h>
|
|
15
|
+
#else
|
|
16
|
+
|
|
17
|
+
#include <stdint.h>
|
|
18
|
+
|
|
19
|
+
// Implementation taken from llvm libc endian-macros.h.
|
|
20
|
+
#ifdef __cplusplus
|
|
21
|
+
#define __CLANG_ENDIAN_CAST(cast, type, value) (cast<type>(value))
|
|
22
|
+
#else
|
|
23
|
+
#define __CLANG_ENDIAN_CAST(cast, type, value) ((type)(value))
|
|
24
|
+
#endif
|
|
25
|
+
|
|
26
|
+
#define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
|
|
27
|
+
#define BIG_ENDIAN __ORDER_BIG_ENDIAN__
|
|
28
|
+
#define PDP_ENDIAN __ORDER_PDP_ENDIAN__
|
|
29
|
+
#define BYTE_ORDER __BYTE_ORDER__
|
|
30
|
+
|
|
31
|
+
// Define some compatibility macros if they are not defined.
|
|
32
|
+
#ifndef __BYTE_ORDER
|
|
33
|
+
#define __BYTE_ORDER BYTE_ORDER
|
|
34
|
+
#endif
|
|
35
|
+
#ifndef __LITTLE_ENDIAN
|
|
36
|
+
#define __LITTLE_ENDIAN LITTLE_ENDIAN
|
|
37
|
+
#endif
|
|
38
|
+
#ifndef __BIG_ENDIAN
|
|
39
|
+
#define __BIG_ENDIAN BIG_ENDIAN
|
|
40
|
+
#endif
|
|
41
|
+
#ifndef __PDP_ENDIAN
|
|
42
|
+
#define __PDP_ENDIAN PDP_ENDIAN
|
|
43
|
+
#endif
|
|
44
|
+
|
|
45
|
+
#if BYTE_ORDER == LITTLE_ENDIAN
|
|
46
|
+
|
|
47
|
+
#define htobe16(x) \
|
|
48
|
+
__builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
|
|
49
|
+
#define htobe32(x) \
|
|
50
|
+
__builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
|
|
51
|
+
#define htobe64(x) \
|
|
52
|
+
__builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
|
|
53
|
+
#define htole16(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
|
|
54
|
+
#define htole32(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
|
|
55
|
+
#define htole64(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
|
|
56
|
+
#define be16toh(x) \
|
|
57
|
+
__builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
|
|
58
|
+
#define be32toh(x) \
|
|
59
|
+
__builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
|
|
60
|
+
#define be64toh(x) \
|
|
61
|
+
__builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
|
|
62
|
+
#define le16toh(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
|
|
63
|
+
#define le32toh(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
|
|
64
|
+
#define le64toh(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
|
|
65
|
+
|
|
66
|
+
#elif BYTE_ORDER == BIG_ENDIAN
|
|
67
|
+
|
|
68
|
+
#define htobe16(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
|
|
69
|
+
#define htobe32(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
|
|
70
|
+
#define htobe64(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
|
|
71
|
+
#define htole16(x) \
|
|
72
|
+
__builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
|
|
73
|
+
#define htole32(x) \
|
|
74
|
+
__builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
|
|
75
|
+
#define htole64(x) \
|
|
76
|
+
__builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
|
|
77
|
+
#define be16toh(x) __CLANG_ENDIAN_CAST(static_cast, uint16_t, x)
|
|
78
|
+
#define be32toh(x) __CLANG_ENDIAN_CAST(static_cast, uint32_t, x)
|
|
79
|
+
#define be64toh(x) __CLANG_ENDIAN_CAST(static_cast, uint64_t, x)
|
|
80
|
+
#define le16toh(x) \
|
|
81
|
+
__builtin_bswap16(__CLANG_ENDIAN_CAST(static_cast, uint16_t, x))
|
|
82
|
+
#define le32toh(x) \
|
|
83
|
+
__builtin_bswap32(__CLANG_ENDIAN_CAST(static_cast, uint32_t, x))
|
|
84
|
+
#define le64toh(x) \
|
|
85
|
+
__builtin_bswap64(__CLANG_ENDIAN_CAST(static_cast, uint64_t, x))
|
|
86
|
+
|
|
87
|
+
#else
|
|
88
|
+
#error "Unsupported endianness"
|
|
89
|
+
#endif
|
|
90
|
+
#endif // __has_include_next
|
|
91
|
+
#endif // __CLANG_ENDIAN_H
|
|
@@ -380,13 +380,13 @@ TS FuzzedDataProvider::ConvertUnsignedToSigned(TU value) {
|
|
|
380
380
|
static_assert(!std::numeric_limits<TU>::is_signed,
|
|
381
381
|
"Source type must be unsigned.");
|
|
382
382
|
|
|
383
|
-
|
|
384
|
-
if (std::numeric_limits<TS>::is_modulo)
|
|
383
|
+
if constexpr (std::numeric_limits<TS>::is_modulo)
|
|
385
384
|
return static_cast<TS>(value);
|
|
386
385
|
|
|
387
386
|
// Avoid using implementation-defined unsigned to signed conversions.
|
|
388
387
|
// To learn more, see https://stackoverflow.com/questions/13150449.
|
|
389
|
-
|
|
388
|
+
constexpr auto TS_max = static_cast<TU>(std::numeric_limits<TS>::max());
|
|
389
|
+
if (value <= TS_max) {
|
|
390
390
|
return static_cast<TS>(value);
|
|
391
391
|
} else {
|
|
392
392
|
constexpr auto TS_min = std::numeric_limits<TS>::min();
|