llvm-runtime-resources-darwin 0.0.0 → 22.1.8
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/LICENSE +201 -0
- package/NOTICE +33 -0
- package/include/__clang_cuda_builtin_vars.h +121 -0
- package/include/__clang_cuda_cmath.h +512 -0
- package/include/__clang_cuda_complex_builtins.h +229 -0
- package/include/__clang_cuda_device_functions.h +1572 -0
- package/include/__clang_cuda_intrinsics.h +994 -0
- package/include/__clang_cuda_libdevice_declares.h +468 -0
- package/include/__clang_cuda_math.h +353 -0
- package/include/__clang_cuda_math_forward_declares.h +284 -0
- package/include/__clang_cuda_runtime_wrapper.h +522 -0
- package/include/__clang_cuda_texture_intrinsics.h +1177 -0
- package/include/__clang_hip_cmath.h +848 -0
- package/include/__clang_hip_libdevice_declares.h +340 -0
- package/include/__clang_hip_math.h +1405 -0
- package/include/__clang_hip_runtime_wrapper.h +165 -0
- package/include/__clang_hip_stdlib.h +43 -0
- package/include/__clang_spirv_builtins.h +217 -0
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/__stdarg___gnuc_va_list.h +13 -0
- package/include/__stdarg___va_copy.h +12 -0
- package/include/__stdarg_header_macro.h +12 -0
- package/include/__stdarg_va_arg.h +22 -0
- package/include/__stdarg_va_copy.h +12 -0
- package/include/__stdarg_va_list.h +13 -0
- package/include/__stddef_header_macro.h +12 -0
- package/include/__stddef_max_align_t.h +27 -0
- package/include/__stddef_null.h +29 -0
- package/include/__stddef_nullptr_t.h +29 -0
- package/include/__stddef_offsetof.h +17 -0
- package/include/__stddef_ptrdiff_t.h +20 -0
- package/include/__stddef_rsize_t.h +20 -0
- package/include/__stddef_size_t.h +20 -0
- package/include/__stddef_unreachable.h +21 -0
- package/include/__stddef_wchar_t.h +28 -0
- package/include/__stddef_wint_t.h +15 -0
- package/include/__wmmintrin_aes.h +140 -0
- package/include/__wmmintrin_pclmul.h +48 -0
- package/include/adcintrin.h +165 -0
- package/include/adxintrin.h +107 -0
- package/include/altivec.h +19364 -0
- package/include/amdgpuintrin.h +191 -0
- package/include/ammintrin.h +183 -0
- package/include/amo.h +131 -0
- package/include/amxavx512intrin.h +596 -0
- package/include/amxcomplexintrin.h +167 -0
- package/include/amxfp16intrin.h +93 -0
- package/include/amxfp8intrin.h +230 -0
- package/include/amxintrin.h +492 -0
- package/include/amxmovrsintrin.h +48 -0
- package/include/amxtf32intrin.h +108 -0
- package/include/andes_vector.h +16 -0
- package/include/arm64intr.h +35 -0
- package/include/arm_acle.h +865 -0
- package/include/arm_bf16.h +20 -0
- package/include/arm_cde.h +410 -0
- package/include/arm_cmse.h +217 -0
- package/include/arm_fp16.h +596 -0
- package/include/arm_mve.h +19187 -0
- package/include/arm_neon.h +74183 -0
- package/include/arm_neon_sve_bridge.h +182 -0
- package/include/arm_sme.h +3741 -0
- package/include/arm_sve.h +32278 -0
- package/include/arm_vector_types.h +432 -0
- package/include/armintr.h +31 -0
- package/include/avx10_2_512bf16intrin.h +568 -0
- package/include/avx10_2_512convertintrin.h +322 -0
- package/include/avx10_2_512minmaxintrin.h +127 -0
- package/include/avx10_2_512niintrin.h +314 -0
- package/include/avx10_2_512satcvtdsintrin.h +307 -0
- package/include/avx10_2_512satcvtintrin.h +301 -0
- package/include/avx10_2bf16intrin.h +1094 -0
- package/include/avx10_2convertintrin.h +3257 -0
- package/include/avx10_2copyintrin.h +66 -0
- package/include/avx10_2minmaxintrin.h +232 -0
- package/include/avx10_2niintrin.h +409 -0
- package/include/avx10_2satcvtdsintrin.h +376 -0
- package/include/avx10_2satcvtintrin.h +312 -0
- package/include/avx2intrin.h +5191 -0
- package/include/avx512bf16intrin.h +292 -0
- package/include/avx512bitalgintrin.h +75 -0
- package/include/avx512bwintrin.h +1895 -0
- package/include/avx512cdintrin.h +112 -0
- package/include/avx512dqintrin.h +1350 -0
- package/include/avx512fintrin.h +9378 -0
- package/include/avx512fp16intrin.h +3355 -0
- package/include/avx512ifmaintrin.h +68 -0
- package/include/avx512ifmavlintrin.h +138 -0
- package/include/avx512vbmi2intrin.h +368 -0
- package/include/avx512vbmiintrin.h +98 -0
- package/include/avx512vbmivlintrin.h +179 -0
- package/include/avx512vlbf16intrin.h +527 -0
- package/include/avx512vlbitalgintrin.h +135 -0
- package/include/avx512vlbwintrin.h +3064 -0
- package/include/avx512vlcdintrin.h +202 -0
- package/include/avx512vldqintrin.h +1156 -0
- package/include/avx512vlfp16intrin.h +2090 -0
- package/include/avx512vlintrin.h +8083 -0
- package/include/avx512vlvbmi2intrin.h +710 -0
- package/include/avx512vlvnniintrin.h +313 -0
- package/include/avx512vlvp2intersectintrin.h +123 -0
- package/include/avx512vnniintrin.h +116 -0
- package/include/avx512vp2intersectintrin.h +77 -0
- package/include/avx512vpopcntdqintrin.h +62 -0
- package/include/avx512vpopcntdqvlintrin.h +105 -0
- package/include/avxifmaintrin.h +193 -0
- package/include/avxintrin.h +5064 -0
- package/include/avxneconvertintrin.h +484 -0
- package/include/avxvnniint16intrin.h +451 -0
- package/include/avxvnniint8intrin.h +454 -0
- package/include/avxvnniintrin.h +233 -0
- package/include/bmi2intrin.h +253 -0
- package/include/bmiintrin.h +604 -0
- package/include/builtins.h +19 -0
- package/include/cet.h +66 -0
- package/include/cetintrin.h +115 -0
- package/include/cldemoteintrin.h +36 -0
- package/include/clflushoptintrin.h +36 -0
- package/include/clwbintrin.h +38 -0
- package/include/clzerointrin.h +38 -0
- package/include/cmpccxaddintrin.h +70 -0
- package/include/cpuid.h +451 -0
- package/include/crc32intrin.h +100 -0
- package/include/cuda_wrappers/__utility/declval.h +28 -0
- package/include/cuda_wrappers/algorithm +116 -0
- package/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
- package/include/cuda_wrappers/bits/c++config.h +61 -0
- package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/include/cuda_wrappers/cmath +44 -0
- package/include/cuda_wrappers/complex +90 -0
- package/include/cuda_wrappers/new +108 -0
- package/include/emmintrin.h +4940 -0
- package/include/enqcmdintrin.h +63 -0
- package/include/f16cintrin.h +176 -0
- package/include/float.h +48 -0
- package/include/fma4intrin.h +220 -0
- package/include/fmaintrin.h +826 -0
- package/include/fuzzer/FuzzedDataProvider.h +397 -0
- package/include/fxsrintrin.h +91 -0
- package/include/gfniintrin.h +238 -0
- package/include/gpuintrin.h +330 -0
- package/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/include/hexagon_protos.h +8439 -0
- package/include/hexagon_types.h +2628 -0
- package/include/hresetintrin.h +49 -0
- package/include/htmintrin.h +212 -0
- package/include/htmxlintrin.h +345 -0
- package/include/hvx_hexagon_protos.h +5399 -0
- package/include/ia32intrin.h +863 -0
- package/include/immintrin.h +595 -0
- package/include/intrin.h +491 -0
- package/include/intrin0.h +256 -0
- package/include/inttypes.h +101 -0
- package/include/invpcidintrin.h +23 -0
- package/include/iso646.h +31 -0
- package/include/keylockerintrin.h +518 -0
- package/include/larchintrin.h +260 -0
- package/include/lasxintrin.h +3999 -0
- package/include/limits.h +133 -0
- package/include/llvm_libc_wrappers/assert.h +32 -0
- package/include/llvm_libc_wrappers/ctype.h +28 -0
- package/include/llvm_libc_wrappers/inttypes.h +32 -0
- package/include/llvm_libc_wrappers/stdio.h +52 -0
- package/include/llvm_libc_wrappers/stdlib.h +32 -0
- package/include/llvm_libc_wrappers/string.h +28 -0
- package/include/llvm_libc_wrappers/time.h +28 -0
- package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/include/lsxintrin.h +3752 -0
- package/include/lwpintrin.h +136 -0
- package/include/lzcntintrin.h +109 -0
- package/include/mm3dnow.h +22 -0
- package/include/mm_malloc.h +67 -0
- package/include/mmintrin.h +1541 -0
- package/include/module.modulemap +360 -0
- package/include/movdirintrin.h +49 -0
- package/include/movrs_avx10_2_512intrin.h +98 -0
- package/include/movrs_avx10_2intrin.h +174 -0
- package/include/movrsintrin.h +59 -0
- package/include/msa.h +573 -0
- package/include/mwaitxintrin.h +62 -0
- package/include/nmmintrin.h +20 -0
- package/include/nvptxintrin.h +219 -0
- package/include/opencl-c-base.h +758 -0
- package/include/opencl-c.h +18676 -0
- package/include/openmp_wrappers/__clang_openmp_device_functions.h +104 -0
- package/include/openmp_wrappers/cmath +132 -0
- package/include/openmp_wrappers/complex +55 -0
- package/include/openmp_wrappers/complex.h +35 -0
- package/include/openmp_wrappers/complex_cmath.h +393 -0
- package/include/openmp_wrappers/math.h +61 -0
- package/include/openmp_wrappers/new +48 -0
- package/include/pconfigintrin.h +40 -0
- package/include/pkuintrin.h +34 -0
- package/include/pmmintrin.h +302 -0
- package/include/popcntintrin.h +59 -0
- package/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/include/ppc_wrappers/bmiintrin.h +165 -0
- package/include/ppc_wrappers/emmintrin.h +2269 -0
- package/include/ppc_wrappers/immintrin.h +27 -0
- package/include/ppc_wrappers/mm_malloc.h +45 -0
- package/include/ppc_wrappers/mmintrin.h +1453 -0
- package/include/ppc_wrappers/nmmintrin.h +26 -0
- package/include/ppc_wrappers/pmmintrin.h +145 -0
- package/include/ppc_wrappers/smmintrin.h +683 -0
- package/include/ppc_wrappers/tmmintrin.h +453 -0
- package/include/ppc_wrappers/x86gprintrin.h +17 -0
- package/include/ppc_wrappers/x86intrin.h +28 -0
- package/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/include/prfchiintrin.h +61 -0
- package/include/prfchwintrin.h +57 -0
- package/include/profile/InstrProfData.inc +1001 -0
- package/include/profile/instr_prof_interface.h +88 -0
- package/include/ptrauth.h +407 -0
- package/include/ptwriteintrin.h +37 -0
- package/include/raointintrin.h +203 -0
- package/include/rdpruintrin.h +57 -0
- package/include/rdseedintrin.h +105 -0
- package/include/riscv_bitmanip.h +195 -0
- package/include/riscv_corev_alu.h +128 -0
- package/include/riscv_crypto.h +170 -0
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/riscv_ntlh.h +26 -0
- package/include/riscv_vector.h +422 -0
- package/include/rtmintrin.h +45 -0
- package/include/s390intrin.h +25 -0
- package/include/sanitizer/allocator_interface.h +106 -0
- package/include/sanitizer/asan_interface.h +348 -0
- package/include/sanitizer/common_interface_defs.h +544 -0
- package/include/sanitizer/coverage_interface.h +36 -0
- package/include/sanitizer/dfsan_interface.h +220 -0
- package/include/sanitizer/hwasan_interface.h +109 -0
- package/include/sanitizer/linux_syscall_hooks.h +3112 -0
- package/include/sanitizer/lsan_interface.h +89 -0
- package/include/sanitizer/msan_interface.h +135 -0
- package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
- package/include/sanitizer/rtsan_interface.h +75 -0
- package/include/sanitizer/scudo_interface.h +38 -0
- package/include/sanitizer/tsan_interface.h +316 -0
- package/include/sanitizer/tsan_interface_atomic.h +223 -0
- package/include/sanitizer/ubsan_interface.h +34 -0
- package/include/serializeintrin.h +30 -0
- package/include/sgxintrin.h +60 -0
- package/include/sha512intrin.h +200 -0
- package/include/shaintrin.h +190 -0
- package/include/sifive_vector.h +174 -0
- package/include/sm3intrin.h +238 -0
- package/include/sm4evexintrin.h +32 -0
- package/include/sm4intrin.h +269 -0
- package/include/smmintrin.h +2352 -0
- package/include/spirvintrin.h +194 -0
- package/include/stdalign.h +24 -0
- package/include/stdarg.h +75 -0
- package/include/stdatomic.h +204 -0
- package/include/stdbool.h +39 -0
- package/include/stdckdint.h +42 -0
- package/include/stdcountof.h +15 -0
- package/include/stddef.h +139 -0
- package/include/stddefer.h +19 -0
- package/include/stdint.h +844 -0
- package/include/stdnoreturn.h +35 -0
- package/include/tbmintrin.h +128 -0
- package/include/tgmath.h +1368 -0
- package/include/tmmintrin.h +779 -0
- package/include/tsxldtrkintrin.h +56 -0
- package/include/uintrintrin.h +157 -0
- package/include/unwind.h +332 -0
- package/include/usermsrintrin.h +51 -0
- package/include/vadefs.h +51 -0
- package/include/vaesintrin.h +86 -0
- package/include/varargs.h +16 -0
- package/include/vecintrin.h +12868 -0
- package/include/velintrin.h +71 -0
- package/include/velintrin_approx.h +120 -0
- package/include/velintrin_gen.h +1257 -0
- package/include/vpclmulqdqintrin.h +30 -0
- package/include/waitpkgintrin.h +42 -0
- package/include/wasm_simd128.h +2143 -0
- package/include/wbnoinvdintrin.h +24 -0
- package/include/wmmintrin.h +23 -0
- package/include/x86gprintrin.h +49 -0
- package/include/x86intrin.h +35 -0
- package/include/xmmintrin.h +3175 -0
- package/include/xopintrin.h +780 -0
- package/include/xsavecintrin.h +84 -0
- package/include/xsaveintrin.h +63 -0
- package/include/xsaveoptintrin.h +34 -0
- package/include/xsavesintrin.h +44 -0
- package/include/xtestintrin.h +27 -0
- package/include/yvals_core.h +25 -0
- package/include/zos_wrappers/builtins.h +18 -0
- package/index.js +5 -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_interceptors_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.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 +40 -1
- package/share/asan_ignorelist.txt +14 -0
- package/share/cfi_ignorelist.txt +17 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/*===------------------ enqcmdintrin.h - enqcmd intrinsics -----------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef __IMMINTRIN_H
|
|
11
|
+
#error "Never use <enqcmdintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __ENQCMDINTRIN_H
|
|
15
|
+
#define __ENQCMDINTRIN_H
|
|
16
|
+
|
|
17
|
+
/* Define the default attributes for the functions in this file */
|
|
18
|
+
#define _DEFAULT_FN_ATTRS \
|
|
19
|
+
__attribute__((__always_inline__, __nodebug__, __target__("enqcmd")))
|
|
20
|
+
|
|
21
|
+
/// Reads 64-byte command pointed by \a __src, formats 64-byte enqueue store
|
|
22
|
+
/// data, and performs 64-byte enqueue store to memory pointed by \a __dst.
|
|
23
|
+
/// This intrinsics may only be used in User mode.
|
|
24
|
+
///
|
|
25
|
+
/// \headerfile <x86intrin.h>
|
|
26
|
+
///
|
|
27
|
+
/// This intrinsics corresponds to the <c> ENQCMD </c> instruction.
|
|
28
|
+
///
|
|
29
|
+
/// \param __dst
|
|
30
|
+
/// Pointer to the destination of the enqueue store.
|
|
31
|
+
/// \param __src
|
|
32
|
+
/// Pointer to 64-byte command data.
|
|
33
|
+
/// \returns If the command data is successfully written to \a __dst then 0 is
|
|
34
|
+
/// returned. Otherwise 1 is returned.
|
|
35
|
+
static __inline__ int _DEFAULT_FN_ATTRS
|
|
36
|
+
_enqcmd (void *__dst, const void *__src)
|
|
37
|
+
{
|
|
38
|
+
return __builtin_ia32_enqcmd(__dst, __src);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/// Reads 64-byte command pointed by \a __src, formats 64-byte enqueue store
|
|
42
|
+
/// data, and performs 64-byte enqueue store to memory pointed by \a __dst
|
|
43
|
+
/// This intrinsic may only be used in Privileged mode.
|
|
44
|
+
///
|
|
45
|
+
/// \headerfile <x86intrin.h>
|
|
46
|
+
///
|
|
47
|
+
/// This intrinsics corresponds to the <c> ENQCMDS </c> instruction.
|
|
48
|
+
///
|
|
49
|
+
/// \param __dst
|
|
50
|
+
/// Pointer to the destination of the enqueue store.
|
|
51
|
+
/// \param __src
|
|
52
|
+
/// Pointer to 64-byte command data.
|
|
53
|
+
/// \returns If the command data is successfully written to \a __dst then 0 is
|
|
54
|
+
/// returned. Otherwise 1 is returned.
|
|
55
|
+
static __inline__ int _DEFAULT_FN_ATTRS
|
|
56
|
+
_enqcmds (void *__dst, const void *__src)
|
|
57
|
+
{
|
|
58
|
+
return __builtin_ia32_enqcmds(__dst, __src);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#undef _DEFAULT_FN_ATTRS
|
|
62
|
+
|
|
63
|
+
#endif /* __ENQCMDINTRIN_H */
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/*===---- f16cintrin.h - F16C intrinsics -----------------------------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#if !defined __IMMINTRIN_H
|
|
11
|
+
#error "Never use <f16cintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __F16CINTRIN_H
|
|
15
|
+
#define __F16CINTRIN_H
|
|
16
|
+
|
|
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__, __target__("f16c"), \
|
|
21
|
+
__min_vector_width__(128))) constexpr
|
|
22
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
23
|
+
__attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
|
|
24
|
+
__min_vector_width__(256))) constexpr
|
|
25
|
+
#else
|
|
26
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
27
|
+
__attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
|
|
28
|
+
__min_vector_width__(128)))
|
|
29
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
30
|
+
__attribute__((__always_inline__, __nodebug__, __target__("f16c"), \
|
|
31
|
+
__min_vector_width__(256)))
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
/* NOTE: Intel documents the 128-bit versions of these as being in emmintrin.h,
|
|
35
|
+
* but that's because icc can emulate these without f16c using a library call.
|
|
36
|
+
* Since we don't do that let's leave these in f16cintrin.h.
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
/// Converts a 16-bit half-precision float value into a 32-bit float
|
|
40
|
+
/// value.
|
|
41
|
+
///
|
|
42
|
+
/// \headerfile <x86intrin.h>
|
|
43
|
+
///
|
|
44
|
+
/// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
|
|
45
|
+
///
|
|
46
|
+
/// \param __a
|
|
47
|
+
/// A 16-bit half-precision float value.
|
|
48
|
+
/// \returns The converted 32-bit float value.
|
|
49
|
+
static __inline float __DEFAULT_FN_ATTRS128
|
|
50
|
+
_cvtsh_ss(unsigned short __a)
|
|
51
|
+
{
|
|
52
|
+
return (float)__builtin_bit_cast(__fp16, __a);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/// Converts a 32-bit single-precision float value to a 16-bit
|
|
56
|
+
/// half-precision float value.
|
|
57
|
+
///
|
|
58
|
+
/// \headerfile <x86intrin.h>
|
|
59
|
+
///
|
|
60
|
+
/// \code
|
|
61
|
+
/// unsigned short _cvtss_sh(float a, const int imm);
|
|
62
|
+
/// \endcode
|
|
63
|
+
///
|
|
64
|
+
/// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
|
|
65
|
+
///
|
|
66
|
+
/// \param a
|
|
67
|
+
/// A 32-bit single-precision float value to be converted to a 16-bit
|
|
68
|
+
/// half-precision float value.
|
|
69
|
+
/// \param imm
|
|
70
|
+
/// An immediate value controlling rounding using bits [2:0]: \n
|
|
71
|
+
/// 000: Nearest \n
|
|
72
|
+
/// 001: Down \n
|
|
73
|
+
/// 010: Up \n
|
|
74
|
+
/// 011: Truncate \n
|
|
75
|
+
/// 1XX: Use MXCSR.RC for rounding
|
|
76
|
+
/// \returns The converted 16-bit half-precision float value.
|
|
77
|
+
#define _cvtss_sh(a, imm) __extension__ ({ \
|
|
78
|
+
(unsigned short)(((__v8hi)__builtin_ia32_vcvtps2ph((__v4sf){a, 0, 0, 0}, \
|
|
79
|
+
(imm)))[0]); })
|
|
80
|
+
|
|
81
|
+
/// Converts a 128-bit vector containing 32-bit float values into a
|
|
82
|
+
/// 128-bit vector containing 16-bit half-precision float values.
|
|
83
|
+
///
|
|
84
|
+
/// \headerfile <x86intrin.h>
|
|
85
|
+
///
|
|
86
|
+
/// \code
|
|
87
|
+
/// __m128i _mm_cvtps_ph(__m128 a, const int imm);
|
|
88
|
+
/// \endcode
|
|
89
|
+
///
|
|
90
|
+
/// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
|
|
91
|
+
///
|
|
92
|
+
/// \param a
|
|
93
|
+
/// A 128-bit vector containing 32-bit float values.
|
|
94
|
+
/// \param imm
|
|
95
|
+
/// An immediate value controlling rounding using bits [2:0]: \n
|
|
96
|
+
/// 000: Nearest \n
|
|
97
|
+
/// 001: Down \n
|
|
98
|
+
/// 010: Up \n
|
|
99
|
+
/// 011: Truncate \n
|
|
100
|
+
/// 1XX: Use MXCSR.RC for rounding
|
|
101
|
+
/// \returns A 128-bit vector containing converted 16-bit half-precision float
|
|
102
|
+
/// values. The lower 64 bits are used to store the converted 16-bit
|
|
103
|
+
/// half-precision floating-point values.
|
|
104
|
+
#define _mm_cvtps_ph(a, imm) \
|
|
105
|
+
((__m128i)__builtin_ia32_vcvtps2ph((__v4sf)(__m128)(a), (imm)))
|
|
106
|
+
|
|
107
|
+
/// Converts a 128-bit vector containing 16-bit half-precision float
|
|
108
|
+
/// values into a 128-bit vector containing 32-bit float values.
|
|
109
|
+
///
|
|
110
|
+
/// \headerfile <x86intrin.h>
|
|
111
|
+
///
|
|
112
|
+
/// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
|
|
113
|
+
///
|
|
114
|
+
/// \param __a
|
|
115
|
+
/// A 128-bit vector containing 16-bit half-precision float values. The lower
|
|
116
|
+
/// 64 bits are used in the conversion.
|
|
117
|
+
/// \returns A 128-bit vector of [4 x float] containing converted float values.
|
|
118
|
+
static __inline __m128 __DEFAULT_FN_ATTRS128
|
|
119
|
+
_mm_cvtph_ps(__m128i __a)
|
|
120
|
+
{
|
|
121
|
+
typedef __fp16 __v4fp16 __attribute__((__vector_size__(8)));
|
|
122
|
+
|
|
123
|
+
__v4hi __v = __builtin_shufflevector((__v8hi)__a, (__v8hi)__a, 0, 1, 2, 3);
|
|
124
|
+
return (__m128) __builtin_convertvector((__v4fp16)__v, __v4sf);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// Converts a 256-bit vector of [8 x float] into a 128-bit vector
|
|
128
|
+
/// containing 16-bit half-precision float values.
|
|
129
|
+
///
|
|
130
|
+
/// \headerfile <x86intrin.h>
|
|
131
|
+
///
|
|
132
|
+
/// \code
|
|
133
|
+
/// __m128i _mm256_cvtps_ph(__m256 a, const int imm);
|
|
134
|
+
/// \endcode
|
|
135
|
+
///
|
|
136
|
+
/// This intrinsic corresponds to the <c> VCVTPS2PH </c> instruction.
|
|
137
|
+
///
|
|
138
|
+
/// \param a
|
|
139
|
+
/// A 256-bit vector containing 32-bit single-precision float values to be
|
|
140
|
+
/// converted to 16-bit half-precision float values.
|
|
141
|
+
/// \param imm
|
|
142
|
+
/// An immediate value controlling rounding using bits [2:0]: \n
|
|
143
|
+
/// 000: Nearest \n
|
|
144
|
+
/// 001: Down \n
|
|
145
|
+
/// 010: Up \n
|
|
146
|
+
/// 011: Truncate \n
|
|
147
|
+
/// 1XX: Use MXCSR.RC for rounding
|
|
148
|
+
/// \returns A 128-bit vector containing the converted 16-bit half-precision
|
|
149
|
+
/// float values.
|
|
150
|
+
#define _mm256_cvtps_ph(a, imm) \
|
|
151
|
+
((__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)(__m256)(a), (imm)))
|
|
152
|
+
|
|
153
|
+
/// Converts a 128-bit vector containing 16-bit half-precision float
|
|
154
|
+
/// values into a 256-bit vector of [8 x float].
|
|
155
|
+
///
|
|
156
|
+
/// \headerfile <x86intrin.h>
|
|
157
|
+
///
|
|
158
|
+
/// This intrinsic corresponds to the <c> VCVTPH2PS </c> instruction.
|
|
159
|
+
///
|
|
160
|
+
/// \param __a
|
|
161
|
+
/// A 128-bit vector containing 16-bit half-precision float values to be
|
|
162
|
+
/// converted to 32-bit single-precision float values.
|
|
163
|
+
/// \returns A vector of [8 x float] containing the converted 32-bit
|
|
164
|
+
/// single-precision float values.
|
|
165
|
+
static __inline __m256 __DEFAULT_FN_ATTRS256
|
|
166
|
+
_mm256_cvtph_ps(__m128i __a)
|
|
167
|
+
{
|
|
168
|
+
typedef __fp16 __v8fp16 __attribute__((__vector_size__(16), __aligned__(16)));
|
|
169
|
+
|
|
170
|
+
return (__m256) __builtin_convertvector((__v8fp16)__a, __v8sf);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
#undef __DEFAULT_FN_ATTRS128
|
|
174
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
175
|
+
|
|
176
|
+
#endif /* __F16CINTRIN_H */
|
package/include/float.h
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*===---- float.h - Characteristics of floating point types ----------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#if defined(__MVS__) && __has_include_next(<float.h>)
|
|
11
|
+
#include <__float_header_macro.h>
|
|
12
|
+
#include_next <float.h>
|
|
13
|
+
#else
|
|
14
|
+
|
|
15
|
+
#if !defined(__need_infinity_nan)
|
|
16
|
+
#define __need_float_float
|
|
17
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L) || \
|
|
18
|
+
!defined(__STRICT_ANSI__)
|
|
19
|
+
#define __need_infinity_nan
|
|
20
|
+
#endif
|
|
21
|
+
#include <__float_header_macro.h>
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#ifdef __need_float_float
|
|
25
|
+
/* If we're on MinGW, fall back to the system's float.h, which might have
|
|
26
|
+
* additional definitions provided for Windows.
|
|
27
|
+
* For more details see http://msdn.microsoft.com/en-us/library/y0ybw9fy.aspx
|
|
28
|
+
*
|
|
29
|
+
* Also fall back on AIX to allow additional definitions and
|
|
30
|
+
* implementation-defined values.
|
|
31
|
+
*/
|
|
32
|
+
#if (defined(__MINGW32__) || defined(_MSC_VER) || defined(_AIX)) && \
|
|
33
|
+
__STDC_HOSTED__ && __has_include_next(<float.h>)
|
|
34
|
+
|
|
35
|
+
# include_next <float.h>
|
|
36
|
+
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
#include <__float_float.h>
|
|
40
|
+
#undef __need_float_float
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#ifdef __need_infinity_nan
|
|
44
|
+
#include <__float_infinity_nan.h>
|
|
45
|
+
#undef __need_infinity_nan
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
#endif /* __MVS__ */
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/*===---- fma4intrin.h - FMA4 intrinsics -----------------------------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
#ifndef __X86INTRIN_H
|
|
11
|
+
#error "Never use <fma4intrin.h> directly; include <x86intrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __FMA4INTRIN_H
|
|
15
|
+
#define __FMA4INTRIN_H
|
|
16
|
+
|
|
17
|
+
#include <pmmintrin.h>
|
|
18
|
+
|
|
19
|
+
/* Define the default attributes for the functions in this file. */
|
|
20
|
+
#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("fma4"), __min_vector_width__(128)))
|
|
21
|
+
#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("fma4"), __min_vector_width__(256)))
|
|
22
|
+
|
|
23
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
24
|
+
#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
|
|
25
|
+
#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
|
|
26
|
+
#else
|
|
27
|
+
#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
|
|
28
|
+
#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
32
|
+
_mm_macc_ps(__m128 __A, __m128 __B, __m128 __C) {
|
|
33
|
+
return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
|
|
34
|
+
(__v4sf)__C);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
38
|
+
_mm_macc_pd(__m128d __A, __m128d __B, __m128d __C) {
|
|
39
|
+
return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
|
|
40
|
+
(__v2df)__C);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
44
|
+
_mm_macc_ss(__m128 __A, __m128 __B, __m128 __C) {
|
|
45
|
+
return _mm_set_ss(__builtin_elementwise_fma(__A[0], __B[0], __C[0]));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
49
|
+
_mm_macc_sd(__m128d __A, __m128d __B, __m128d __C) {
|
|
50
|
+
return _mm_set_sd(__builtin_elementwise_fma(__A[0], __B[0], __C[0]));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
54
|
+
_mm_msub_ps(__m128 __A, __m128 __B, __m128 __C) {
|
|
55
|
+
return (__m128)__builtin_elementwise_fma((__v4sf)__A, (__v4sf)__B,
|
|
56
|
+
-(__v4sf)__C);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
60
|
+
_mm_msub_pd(__m128d __A, __m128d __B, __m128d __C) {
|
|
61
|
+
return (__m128d)__builtin_elementwise_fma((__v2df)__A, (__v2df)__B,
|
|
62
|
+
-(__v2df)__C);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
66
|
+
_mm_msub_ss(__m128 __A, __m128 __B, __m128 __C) {
|
|
67
|
+
return _mm_set_ss(__builtin_elementwise_fma(__A[0], __B[0], -__C[0]));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
71
|
+
_mm_msub_sd(__m128d __A, __m128d __B, __m128d __C) {
|
|
72
|
+
return _mm_set_sd(__builtin_elementwise_fma(__A[0], __B[0], -__C[0]));
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
76
|
+
_mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C) {
|
|
77
|
+
return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
|
|
78
|
+
(__v4sf)__C);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
82
|
+
_mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C) {
|
|
83
|
+
return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
|
|
84
|
+
(__v2df)__C);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
88
|
+
_mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C) {
|
|
89
|
+
return _mm_set_ss(__builtin_elementwise_fma(-__A[0], __B[0], __C[0]));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
93
|
+
_mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C) {
|
|
94
|
+
return _mm_set_sd(__builtin_elementwise_fma(-__A[0], __B[0], __C[0]));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
98
|
+
_mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C) {
|
|
99
|
+
return (__m128)__builtin_elementwise_fma(-(__v4sf)__A, (__v4sf)__B,
|
|
100
|
+
-(__v4sf)__C);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
104
|
+
_mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C) {
|
|
105
|
+
return (__m128d)__builtin_elementwise_fma(-(__v2df)__A, (__v2df)__B,
|
|
106
|
+
-(__v2df)__C);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
110
|
+
_mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C) {
|
|
111
|
+
return _mm_set_ss(__builtin_elementwise_fma(-__A[0], __B[0], -__C[0]));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
115
|
+
_mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C) {
|
|
116
|
+
return _mm_set_sd(__builtin_elementwise_fma(-__A[0], __B[0], -__C[0]));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128
|
|
120
|
+
_mm_maddsub_ps(__m128 __A, __m128 __B, __m128 __C)
|
|
121
|
+
{
|
|
122
|
+
return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128
|
|
126
|
+
_mm_maddsub_pd(__m128d __A, __m128d __B, __m128d __C)
|
|
127
|
+
{
|
|
128
|
+
return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, (__v2df)__C);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS128
|
|
132
|
+
_mm_msubadd_ps(__m128 __A, __m128 __B, __m128 __C)
|
|
133
|
+
{
|
|
134
|
+
return (__m128)__builtin_ia32_vfmaddsubps((__v4sf)__A, (__v4sf)__B, -(__v4sf)__C);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS128
|
|
138
|
+
_mm_msubadd_pd(__m128d __A, __m128d __B, __m128d __C)
|
|
139
|
+
{
|
|
140
|
+
return (__m128d)__builtin_ia32_vfmaddsubpd((__v2df)__A, (__v2df)__B, -(__v2df)__C);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
144
|
+
_mm256_macc_ps(__m256 __A, __m256 __B, __m256 __C) {
|
|
145
|
+
return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
|
|
146
|
+
(__v8sf)__C);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
150
|
+
_mm256_macc_pd(__m256d __A, __m256d __B, __m256d __C) {
|
|
151
|
+
return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
|
|
152
|
+
(__v4df)__C);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
156
|
+
_mm256_msub_ps(__m256 __A, __m256 __B, __m256 __C) {
|
|
157
|
+
return (__m256)__builtin_elementwise_fma((__v8sf)__A, (__v8sf)__B,
|
|
158
|
+
-(__v8sf)__C);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
162
|
+
_mm256_msub_pd(__m256d __A, __m256d __B, __m256d __C) {
|
|
163
|
+
return (__m256d)__builtin_elementwise_fma((__v4df)__A, (__v4df)__B,
|
|
164
|
+
-(__v4df)__C);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
168
|
+
_mm256_nmacc_ps(__m256 __A, __m256 __B, __m256 __C) {
|
|
169
|
+
return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
|
|
170
|
+
(__v8sf)__C);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
174
|
+
_mm256_nmacc_pd(__m256d __A, __m256d __B, __m256d __C) {
|
|
175
|
+
return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
|
|
176
|
+
(__v4df)__C);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
180
|
+
_mm256_nmsub_ps(__m256 __A, __m256 __B, __m256 __C) {
|
|
181
|
+
return (__m256)__builtin_elementwise_fma(-(__v8sf)__A, (__v8sf)__B,
|
|
182
|
+
-(__v8sf)__C);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
186
|
+
_mm256_nmsub_pd(__m256d __A, __m256d __B, __m256d __C) {
|
|
187
|
+
return (__m256d)__builtin_elementwise_fma(-(__v4df)__A, (__v4df)__B,
|
|
188
|
+
-(__v4df)__C);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256
|
|
192
|
+
_mm256_maddsub_ps(__m256 __A, __m256 __B, __m256 __C)
|
|
193
|
+
{
|
|
194
|
+
return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, (__v8sf)__C);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256
|
|
198
|
+
_mm256_maddsub_pd(__m256d __A, __m256d __B, __m256d __C)
|
|
199
|
+
{
|
|
200
|
+
return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, (__v4df)__C);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
static __inline__ __m256 __DEFAULT_FN_ATTRS256
|
|
204
|
+
_mm256_msubadd_ps(__m256 __A, __m256 __B, __m256 __C)
|
|
205
|
+
{
|
|
206
|
+
return (__m256)__builtin_ia32_vfmaddsubps256((__v8sf)__A, (__v8sf)__B, -(__v8sf)__C);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
static __inline__ __m256d __DEFAULT_FN_ATTRS256
|
|
210
|
+
_mm256_msubadd_pd(__m256d __A, __m256d __B, __m256d __C)
|
|
211
|
+
{
|
|
212
|
+
return (__m256d)__builtin_ia32_vfmaddsubpd256((__v4df)__A, (__v4df)__B, -(__v4df)__C);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
#undef __DEFAULT_FN_ATTRS128
|
|
216
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
217
|
+
#undef __DEFAULT_FN_ATTRS128_CONSTEXPR
|
|
218
|
+
#undef __DEFAULT_FN_ATTRS256_CONSTEXPR
|
|
219
|
+
|
|
220
|
+
#endif /* __FMA4INTRIN_H */
|