@cpp-linter/clang-tidy-win32-x64 14.0.0 → 16.0.3
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/README.md +2 -2
- package/bin/clang-tidy.exe +2 -2
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_intrinsics.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_texture_intrinsics.h +2 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +1 -0
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
- package/lib/clang/{14.0.0 → 16}/include/altivec.h +501 -262
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{14.0.0 → 16}/include/amxintrin.h +32 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_acle.h +76 -75
- package/lib/clang/{14.0.0 → 16}/include/arm_fp16.h +90 -90
- package/lib/clang/{14.0.0 → 16}/include/arm_neon.h +28468 -28638
- package/lib/clang/{14.0.0 → 16}/include/arm_neon_sve_bridge.h +0 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_sve.h +7848 -7996
- package/lib/clang/{14.0.0 → 16}/include/avx2intrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512bf16intrin.h +18 -15
- package/lib/clang/{14.0.0 → 16}/include/avx512bwintrin.h +12 -12
- package/lib/clang/{14.0.0 → 16}/include/avx512fintrin.h +78 -75
- package/lib/clang/{14.0.0 → 16}/include/avx512fp16intrin.h +6 -9
- package/lib/clang/{14.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbf16intrin.h +31 -38
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbwintrin.h +360 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512vlfp16intrin.h +3 -0
- package/lib/clang/{14.0.0 → 16}/include/avx512vlintrin.h +81 -95
- package/lib/clang/{14.0.0 → 16}/include/avx512vlvnniintrin.h +16 -16
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{14.0.0 → 16}/include/avxintrin.h +77 -32
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/{14.0.0 → 16}/include/avxvnniintrin.h +16 -16
- package/lib/clang/{14.0.0 → 16}/include/bmiintrin.h +6 -2
- package/lib/clang/{14.0.0 → 16}/include/cetintrin.h +12 -6
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{14.0.0 → 16}/include/cpuid.h +12 -1
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{14.0.0 → 16}/include/emmintrin.h +559 -769
- package/lib/clang/{14.0.0 → 16}/include/f16cintrin.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/float.h +17 -10
- package/lib/clang/{14.0.0 → 16}/include/gfniintrin.h +7 -5
- package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/16/include/hlsl.h +15 -0
- package/lib/clang/{14.0.0 → 16}/include/hresetintrin.h +2 -2
- package/lib/clang/{14.0.0 → 16}/include/ia32intrin.h +11 -11
- package/lib/clang/{14.0.0 → 16}/include/immintrin.h +56 -24
- package/lib/clang/{14.0.0 → 16}/include/intrin.h +12 -21
- package/lib/clang/{14.0.0 → 16}/include/keylockerintrin.h +22 -22
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{14.0.0 → 16}/include/limits.h +3 -2
- package/lib/clang/{14.0.0 → 16}/include/mm_malloc.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/opencl-c-base.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/opencl-c.h +6904 -7100
- package/lib/clang/{14.0.0 → 16}/include/pmmintrin.h +1 -1
- package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
- package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
- package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -387
- package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
- package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
- package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
- package/lib/clang/{14.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
- package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
- package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/16/include/rdpruintrin.h +57 -0
- package/lib/clang/{14.0.0 → 16}/include/rdseedintrin.h +3 -3
- package/lib/clang/16/include/riscv_vector.h +211 -0
- package/lib/clang/{14.0.0 → 16}/include/rtmintrin.h +1 -1
- package/lib/clang/{14.0.0 → 16}/include/smmintrin.h +236 -259
- package/lib/clang/{14.0.0 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{14.0.0 → 16}/include/stdatomic.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/stdbool.h +10 -7
- package/lib/clang/{14.0.0 → 16}/include/stddef.h +9 -2
- package/lib/clang/{14.0.0 → 16}/include/stdint.h +158 -40
- package/lib/clang/16/include/stdnoreturn.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/uintrintrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/unwind.h +10 -6
- package/lib/clang/16/include/velintrin.h +71 -0
- package/lib/clang/16/include/velintrin_approx.h +120 -0
- package/lib/clang/16/include/velintrin_gen.h +1257 -0
- package/lib/clang/{14.0.0 → 16}/include/wasm_simd128.h +2 -2
- package/lib/clang/16/include/x86gprintrin.h +65 -0
- package/lib/clang/{14.0.0 → 16}/include/x86intrin.h +4 -0
- package/lib/clang/{14.0.0 → 16}/include/xmmintrin.h +10 -5
- package/package.json +6 -6
- package/lib/clang/14.0.0/include/ppc_wrappers/emmintrin.h +0 -2325
- package/lib/clang/14.0.0/include/ppc_wrappers/pmmintrin.h +0 -151
- package/lib/clang/14.0.0/include/ppc_wrappers/smmintrin.h +0 -110
- package/lib/clang/14.0.0/include/ppc_wrappers/tmmintrin.h +0 -496
- package/lib/clang/14.0.0/include/ppc_wrappers/xmmintrin.h +0 -1844
- package/lib/clang/14.0.0/include/riscv_vector.h +0 -95423
- package/lib/clang/14.0.0/include/x86gprintrin.h +0 -35
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ammintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cet.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/crc32intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_types.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/msa.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/nmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vaesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xopintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xtestintrin.h +0 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*===------------- amxfp16intrin.h - AMX_FP16 intrinsics -*- C++ -*---------===
|
|
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 <amxfp16intrin.h> directly; use <immintrin.h> instead."
|
|
12
|
+
#endif /* __IMMINTRIN_H */
|
|
13
|
+
|
|
14
|
+
#ifndef __AMX_FP16INTRIN_H
|
|
15
|
+
#define __AMX_FP16INTRIN_H
|
|
16
|
+
#ifdef __x86_64__
|
|
17
|
+
|
|
18
|
+
/// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles \a a
|
|
19
|
+
/// and \a b, accumulating the intermediate single-precision (32-bit)
|
|
20
|
+
/// floating-point elements with elements in \a dst, and store the 32-bit
|
|
21
|
+
/// result back to tile \a dst.
|
|
22
|
+
///
|
|
23
|
+
/// \headerfile <immintrin.h>
|
|
24
|
+
///
|
|
25
|
+
/// \code
|
|
26
|
+
/// void _tile_dpfp16ps (__tile dst, __tile a, __tile b)
|
|
27
|
+
/// \endcode
|
|
28
|
+
///
|
|
29
|
+
/// \code{.operation}
|
|
30
|
+
/// FOR m := 0 TO dst.rows - 1
|
|
31
|
+
/// tmp := dst.row[m]
|
|
32
|
+
/// FOR k := 0 TO (a.colsb / 4) - 1
|
|
33
|
+
/// FOR n := 0 TO (dst.colsb / 4) - 1
|
|
34
|
+
/// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) *
|
|
35
|
+
/// FP32(b.row[k].fp16[2*n+0])
|
|
36
|
+
/// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+1]) *
|
|
37
|
+
/// FP32(b.row[k].fp16[2*n+1])
|
|
38
|
+
/// ENDFOR
|
|
39
|
+
/// ENDFOR
|
|
40
|
+
/// write_row_and_zero(dst, m, tmp, dst.colsb)
|
|
41
|
+
/// ENDFOR
|
|
42
|
+
/// zero_upper_rows(dst, dst.rows)
|
|
43
|
+
/// zero_tileconfig_start()
|
|
44
|
+
/// \endcode
|
|
45
|
+
///
|
|
46
|
+
/// This intrinsic corresponds to the \c TDPFP16PS instruction.
|
|
47
|
+
///
|
|
48
|
+
/// \param dst
|
|
49
|
+
/// The destination tile. Max size is 1024 Bytes.
|
|
50
|
+
/// \param a
|
|
51
|
+
/// The 1st source tile. Max size is 1024 Bytes.
|
|
52
|
+
/// \param b
|
|
53
|
+
/// The 2nd source tile. Max size is 1024 Bytes.
|
|
54
|
+
#define _tile_dpfp16ps(dst, a, b) \
|
|
55
|
+
__builtin_ia32_tdpfp16ps(dst, a, b)
|
|
56
|
+
|
|
57
|
+
#endif /* __x86_64__ */
|
|
58
|
+
#endif /* __AMX_FP16INTRIN_H */
|
|
@@ -22,6 +22,8 @@
|
|
|
22
22
|
__attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
|
|
23
23
|
#define __DEFAULT_FN_ATTRS_BF16 \
|
|
24
24
|
__attribute__((__always_inline__, __nodebug__, __target__("amx-bf16")))
|
|
25
|
+
#define __DEFAULT_FN_ATTRS_FP16 \
|
|
26
|
+
__attribute__((__always_inline__, __nodebug__, __target__("amx-fp16")))
|
|
25
27
|
|
|
26
28
|
/// Load tile configuration from a 64-byte memory location specified by
|
|
27
29
|
/// "mem_addr". The tile configuration includes the tile type palette, the
|
|
@@ -290,6 +292,13 @@ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
|
|
|
290
292
|
return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
|
|
291
293
|
}
|
|
292
294
|
|
|
295
|
+
/// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
|
296
|
+
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP16
|
|
297
|
+
_tile_dpfp16ps_internal(unsigned short m, unsigned short n, unsigned short k,
|
|
298
|
+
_tile1024i dst, _tile1024i src1, _tile1024i src2) {
|
|
299
|
+
return __builtin_ia32_tdpfp16ps_internal(m, n, k, dst, src1, src2);
|
|
300
|
+
}
|
|
301
|
+
|
|
293
302
|
/// This struct pack the shape and tile data together for user. We suggest
|
|
294
303
|
/// initializing the struct as early as possible, because compiler depends
|
|
295
304
|
/// on the shape information to do configure. The constant value is preferred
|
|
@@ -439,8 +448,6 @@ static __inline__ void __tile_dpbuud(__tile1024i *dst, __tile1024i src0,
|
|
|
439
448
|
///
|
|
440
449
|
/// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
|
|
441
450
|
///
|
|
442
|
-
/// \param dst
|
|
443
|
-
/// A destination tile. Max size is 1024 Bytes.
|
|
444
451
|
/// \param base
|
|
445
452
|
/// A pointer to base address.
|
|
446
453
|
/// \param stride
|
|
@@ -486,9 +493,32 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
|
|
|
486
493
|
src0.tile, src1.tile);
|
|
487
494
|
}
|
|
488
495
|
|
|
496
|
+
/// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles src0 and
|
|
497
|
+
/// src1, accumulating the intermediate single-precision (32-bit) floating-point
|
|
498
|
+
/// elements with elements in "dst", and store the 32-bit result back to tile
|
|
499
|
+
/// "dst".
|
|
500
|
+
///
|
|
501
|
+
/// \headerfile <immintrin.h>
|
|
502
|
+
///
|
|
503
|
+
/// This intrinsic corresponds to the <c> TDPFP16PS </c> instruction.
|
|
504
|
+
///
|
|
505
|
+
/// \param dst
|
|
506
|
+
/// The destination tile. Max size is 1024 Bytes.
|
|
507
|
+
/// \param src0
|
|
508
|
+
/// The 1st source tile. Max size is 1024 Bytes.
|
|
509
|
+
/// \param src1
|
|
510
|
+
/// The 2nd source tile. Max size is 1024 Bytes.
|
|
511
|
+
__DEFAULT_FN_ATTRS_FP16
|
|
512
|
+
static __inline__ void __tile_dpfp16ps(__tile1024i *dst, __tile1024i src0,
|
|
513
|
+
__tile1024i src1) {
|
|
514
|
+
dst->tile = _tile_dpfp16ps_internal(src0.row, src1.col, src0.col, dst->tile,
|
|
515
|
+
src0.tile, src1.tile);
|
|
516
|
+
}
|
|
517
|
+
|
|
489
518
|
#undef __DEFAULT_FN_ATTRS_TILE
|
|
490
519
|
#undef __DEFAULT_FN_ATTRS_INT8
|
|
491
520
|
#undef __DEFAULT_FN_ATTRS_BF16
|
|
521
|
+
#undef __DEFAULT_FN_ATTRS_FP16
|
|
492
522
|
|
|
493
523
|
#endif /* __x86_64__ */
|
|
494
524
|
#endif /* __AMXINTRIN_H */
|
|
@@ -64,7 +64,7 @@ static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(v
|
|
|
64
64
|
}
|
|
65
65
|
#endif
|
|
66
66
|
|
|
67
|
-
#if __ARM_32BIT_STATE
|
|
67
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
68
68
|
#define __dbg(t) __builtin_arm_dbg(t)
|
|
69
69
|
#endif
|
|
70
70
|
|
|
@@ -82,7 +82,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
|
|
|
82
82
|
/* 8.6.1 Data prefetch */
|
|
83
83
|
#define __pld(addr) __pldx(0, 0, 0, addr)
|
|
84
84
|
|
|
85
|
-
#if __ARM_32BIT_STATE
|
|
85
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
86
86
|
#define __pldx(access_kind, cache_level, retention_policy, addr) \
|
|
87
87
|
__builtin_arm_prefetch(addr, access_kind, 1)
|
|
88
88
|
#else
|
|
@@ -93,7 +93,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
|
|
|
93
93
|
/* 8.6.2 Instruction prefetch */
|
|
94
94
|
#define __pli(addr) __plix(0, 0, addr)
|
|
95
95
|
|
|
96
|
-
#if __ARM_32BIT_STATE
|
|
96
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
97
97
|
#define __plix(cache_level, retention_policy, addr) \
|
|
98
98
|
__builtin_arm_prefetch(addr, 0, 0)
|
|
99
99
|
#else
|
|
@@ -140,17 +140,17 @@ __rorl(unsigned long __x, uint32_t __y) {
|
|
|
140
140
|
/* CLZ */
|
|
141
141
|
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
142
142
|
__clz(uint32_t __t) {
|
|
143
|
-
return __builtin_clz(__t);
|
|
143
|
+
return (uint32_t)__builtin_clz(__t);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
147
147
|
__clzl(unsigned long __t) {
|
|
148
|
-
return __builtin_clzl(__t);
|
|
148
|
+
return (unsigned long)__builtin_clzl(__t);
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
152
152
|
__clzll(uint64_t __t) {
|
|
153
|
-
return __builtin_clzll(__t);
|
|
153
|
+
return (uint64_t)__builtin_clzll(__t);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
/* CLS */
|
|
@@ -201,7 +201,7 @@ __rev16(uint32_t __t) {
|
|
|
201
201
|
|
|
202
202
|
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
203
203
|
__rev16ll(uint64_t __t) {
|
|
204
|
-
return (((uint64_t)__rev16(__t >> 32)) << 32) | __rev16(__t);
|
|
204
|
+
return (((uint64_t)__rev16(__t >> 32)) << 32) | (uint64_t)__rev16((uint32_t)__t);
|
|
205
205
|
}
|
|
206
206
|
|
|
207
207
|
static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
|
|
@@ -216,7 +216,7 @@ __rev16l(unsigned long __t) {
|
|
|
216
216
|
/* REVSH */
|
|
217
217
|
static __inline__ int16_t __attribute__((__always_inline__, __nodebug__))
|
|
218
218
|
__revsh(int16_t __t) {
|
|
219
|
-
return __builtin_bswap16(__t);
|
|
219
|
+
return (int16_t)__builtin_bswap16((uint16_t)__t);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/* RBIT */
|
|
@@ -227,7 +227,7 @@ __rbit(uint32_t __t) {
|
|
|
227
227
|
|
|
228
228
|
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
229
229
|
__rbitll(uint64_t __t) {
|
|
230
|
-
#if __ARM_32BIT_STATE
|
|
230
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
231
231
|
return (((uint64_t)__builtin_arm_rbit(__t)) << 32) |
|
|
232
232
|
__builtin_arm_rbit(__t >> 32);
|
|
233
233
|
#else
|
|
@@ -247,7 +247,7 @@ __rbitl(unsigned long __t) {
|
|
|
247
247
|
/*
|
|
248
248
|
* 9.3 16-bit multiplications
|
|
249
249
|
*/
|
|
250
|
-
#if __ARM_FEATURE_DSP
|
|
250
|
+
#if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
|
|
251
251
|
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
252
252
|
__smulbb(int32_t __a, int32_t __b) {
|
|
253
253
|
return __builtin_arm_smulbb(__a, __b);
|
|
@@ -277,17 +277,17 @@ __smulwt(int32_t __a, int32_t __b) {
|
|
|
277
277
|
/*
|
|
278
278
|
* 9.4 Saturating intrinsics
|
|
279
279
|
*
|
|
280
|
-
* FIXME: Change guard to their
|
|
280
|
+
* FIXME: Change guard to their corresponding __ARM_FEATURE flag when Q flag
|
|
281
281
|
* intrinsics are implemented and the flag is enabled.
|
|
282
282
|
*/
|
|
283
283
|
/* 9.4.1 Width-specified saturation intrinsics */
|
|
284
|
-
#if __ARM_FEATURE_SAT
|
|
284
|
+
#if defined(__ARM_FEATURE_SAT) && __ARM_FEATURE_SAT
|
|
285
285
|
#define __ssat(x, y) __builtin_arm_ssat(x, y)
|
|
286
286
|
#define __usat(x, y) __builtin_arm_usat(x, y)
|
|
287
287
|
#endif
|
|
288
288
|
|
|
289
289
|
/* 9.4.2 Saturating addition and subtraction intrinsics */
|
|
290
|
-
#if __ARM_FEATURE_DSP
|
|
290
|
+
#if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
|
|
291
291
|
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
292
292
|
__qadd(int32_t __t, int32_t __v) {
|
|
293
293
|
return __builtin_arm_qadd(__t, __v);
|
|
@@ -305,7 +305,7 @@ __qdbl(int32_t __t) {
|
|
|
305
305
|
#endif
|
|
306
306
|
|
|
307
307
|
/* 9.4.3 Accumultating multiplications */
|
|
308
|
-
#if __ARM_FEATURE_DSP
|
|
308
|
+
#if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
|
|
309
309
|
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
310
310
|
__smlabb(int32_t __a, int32_t __b, int32_t __c) {
|
|
311
311
|
return __builtin_arm_smlabb(__a, __b, __c);
|
|
@@ -334,13 +334,13 @@ __smlawt(int32_t __a, int32_t __b, int32_t __c) {
|
|
|
334
334
|
|
|
335
335
|
|
|
336
336
|
/* 9.5.4 Parallel 16-bit saturation */
|
|
337
|
-
#if __ARM_FEATURE_SIMD32
|
|
337
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
338
338
|
#define __ssat16(x, y) __builtin_arm_ssat16(x, y)
|
|
339
339
|
#define __usat16(x, y) __builtin_arm_usat16(x, y)
|
|
340
340
|
#endif
|
|
341
341
|
|
|
342
342
|
/* 9.5.5 Packing and unpacking */
|
|
343
|
-
#if __ARM_FEATURE_SIMD32
|
|
343
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
344
344
|
typedef int32_t int8x4_t;
|
|
345
345
|
typedef int32_t int16x2_t;
|
|
346
346
|
typedef uint32_t uint8x4_t;
|
|
@@ -365,7 +365,7 @@ __uxtb16(int8x4_t __a) {
|
|
|
365
365
|
#endif
|
|
366
366
|
|
|
367
367
|
/* 9.5.6 Parallel selection */
|
|
368
|
-
#if __ARM_FEATURE_SIMD32
|
|
368
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
369
369
|
static __inline__ uint8x4_t __attribute__((__always_inline__, __nodebug__))
|
|
370
370
|
__sel(uint8x4_t __a, uint8x4_t __b) {
|
|
371
371
|
return __builtin_arm_sel(__a, __b);
|
|
@@ -373,7 +373,7 @@ __sel(uint8x4_t __a, uint8x4_t __b) {
|
|
|
373
373
|
#endif
|
|
374
374
|
|
|
375
375
|
/* 9.5.7 Parallel 8-bit addition and subtraction */
|
|
376
|
-
#if __ARM_FEATURE_SIMD32
|
|
376
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
377
377
|
static __inline__ int8x4_t __attribute__((__always_inline__, __nodebug__))
|
|
378
378
|
__qadd8(int8x4_t __a, int8x4_t __b) {
|
|
379
379
|
return __builtin_arm_qadd8(__a, __b);
|
|
@@ -425,7 +425,7 @@ __usub8(uint8x4_t __a, uint8x4_t __b) {
|
|
|
425
425
|
#endif
|
|
426
426
|
|
|
427
427
|
/* 9.5.8 Sum of 8-bit absolute differences */
|
|
428
|
-
#if __ARM_FEATURE_SIMD32
|
|
428
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
429
429
|
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
430
430
|
__usad8(uint8x4_t __a, uint8x4_t __b) {
|
|
431
431
|
return __builtin_arm_usad8(__a, __b);
|
|
@@ -437,7 +437,7 @@ __usada8(uint8x4_t __a, uint8x4_t __b, uint32_t __c) {
|
|
|
437
437
|
#endif
|
|
438
438
|
|
|
439
439
|
/* 9.5.9 Parallel 16-bit addition and subtraction */
|
|
440
|
-
#if __ARM_FEATURE_SIMD32
|
|
440
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
441
441
|
static __inline__ int16x2_t __attribute__((__always_inline__, __nodebug__))
|
|
442
442
|
__qadd16(int16x2_t __a, int16x2_t __b) {
|
|
443
443
|
return __builtin_arm_qadd16(__a, __b);
|
|
@@ -537,7 +537,7 @@ __usub16(uint16x2_t __a, uint16x2_t __b) {
|
|
|
537
537
|
#endif
|
|
538
538
|
|
|
539
539
|
/* 9.5.10 Parallel 16-bit multiplications */
|
|
540
|
-
#if __ARM_FEATURE_SIMD32
|
|
540
|
+
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
541
541
|
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
542
542
|
__smlad(int16x2_t __a, int16x2_t __b, int32_t __c) {
|
|
543
543
|
return __builtin_arm_smlad(__a, __b, __c);
|
|
@@ -589,155 +589,156 @@ __smusdx(int16x2_t __a, int16x2_t __b) {
|
|
|
589
589
|
#endif
|
|
590
590
|
|
|
591
591
|
/* 9.7 CRC32 intrinsics */
|
|
592
|
-
#if __ARM_FEATURE_CRC32
|
|
593
|
-
|
|
592
|
+
#if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
|
|
593
|
+
(defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
|
|
594
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
594
595
|
__crc32b(uint32_t __a, uint8_t __b) {
|
|
595
596
|
return __builtin_arm_crc32b(__a, __b);
|
|
596
597
|
}
|
|
597
598
|
|
|
598
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
599
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
599
600
|
__crc32h(uint32_t __a, uint16_t __b) {
|
|
600
601
|
return __builtin_arm_crc32h(__a, __b);
|
|
601
602
|
}
|
|
602
603
|
|
|
603
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
604
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
604
605
|
__crc32w(uint32_t __a, uint32_t __b) {
|
|
605
606
|
return __builtin_arm_crc32w(__a, __b);
|
|
606
607
|
}
|
|
607
608
|
|
|
608
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
609
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
609
610
|
__crc32d(uint32_t __a, uint64_t __b) {
|
|
610
611
|
return __builtin_arm_crc32d(__a, __b);
|
|
611
612
|
}
|
|
612
613
|
|
|
613
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
614
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
614
615
|
__crc32cb(uint32_t __a, uint8_t __b) {
|
|
615
616
|
return __builtin_arm_crc32cb(__a, __b);
|
|
616
617
|
}
|
|
617
618
|
|
|
618
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
619
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
619
620
|
__crc32ch(uint32_t __a, uint16_t __b) {
|
|
620
621
|
return __builtin_arm_crc32ch(__a, __b);
|
|
621
622
|
}
|
|
622
623
|
|
|
623
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
624
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
624
625
|
__crc32cw(uint32_t __a, uint32_t __b) {
|
|
625
626
|
return __builtin_arm_crc32cw(__a, __b);
|
|
626
627
|
}
|
|
627
628
|
|
|
628
|
-
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
629
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
629
630
|
__crc32cd(uint32_t __a, uint64_t __b) {
|
|
630
631
|
return __builtin_arm_crc32cd(__a, __b);
|
|
631
632
|
}
|
|
632
633
|
#endif
|
|
633
634
|
|
|
634
635
|
/* Armv8.3-A Javascript conversion intrinsic */
|
|
635
|
-
#if __ARM_64BIT_STATE &&
|
|
636
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
636
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
637
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("v8.3a")))
|
|
637
638
|
__jcvt(double __a) {
|
|
638
639
|
return __builtin_arm_jcvt(__a);
|
|
639
640
|
}
|
|
640
641
|
#endif
|
|
641
642
|
|
|
642
643
|
/* Armv8.5-A FP rounding intrinsics */
|
|
643
|
-
#if __ARM_64BIT_STATE &&
|
|
644
|
-
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
|
645
|
-
|
|
646
|
-
return
|
|
644
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
645
|
+
static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
646
|
+
__rint32zf(float __a) {
|
|
647
|
+
return __builtin_arm_rint32zf(__a);
|
|
647
648
|
}
|
|
648
649
|
|
|
649
|
-
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
|
650
|
-
|
|
651
|
-
return
|
|
650
|
+
static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
651
|
+
__rint32z(double __a) {
|
|
652
|
+
return __builtin_arm_rint32z(__a);
|
|
652
653
|
}
|
|
653
654
|
|
|
654
|
-
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
|
655
|
-
|
|
656
|
-
return
|
|
655
|
+
static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
656
|
+
__rint64zf(float __a) {
|
|
657
|
+
return __builtin_arm_rint64zf(__a);
|
|
657
658
|
}
|
|
658
659
|
|
|
659
|
-
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
|
660
|
-
|
|
661
|
-
return
|
|
660
|
+
static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
661
|
+
__rint64z(double __a) {
|
|
662
|
+
return __builtin_arm_rint64z(__a);
|
|
662
663
|
}
|
|
663
664
|
|
|
664
|
-
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
|
665
|
-
|
|
666
|
-
return
|
|
665
|
+
static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
666
|
+
__rint32xf(float __a) {
|
|
667
|
+
return __builtin_arm_rint32xf(__a);
|
|
667
668
|
}
|
|
668
669
|
|
|
669
|
-
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
|
670
|
-
|
|
671
|
-
return
|
|
670
|
+
static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
671
|
+
__rint32x(double __a) {
|
|
672
|
+
return __builtin_arm_rint32x(__a);
|
|
672
673
|
}
|
|
673
674
|
|
|
674
|
-
static __inline__ float __attribute__((__always_inline__, __nodebug__))
|
|
675
|
-
|
|
676
|
-
return
|
|
675
|
+
static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
676
|
+
__rint64xf(float __a) {
|
|
677
|
+
return __builtin_arm_rint64xf(__a);
|
|
677
678
|
}
|
|
678
679
|
|
|
679
|
-
static __inline__ double __attribute__((__always_inline__, __nodebug__))
|
|
680
|
-
|
|
681
|
-
return
|
|
680
|
+
static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
|
|
681
|
+
__rint64x(double __a) {
|
|
682
|
+
return __builtin_arm_rint64x(__a);
|
|
682
683
|
}
|
|
683
684
|
#endif
|
|
684
685
|
|
|
685
686
|
/* Armv8.7-A load/store 64-byte intrinsics */
|
|
686
|
-
#if __ARM_64BIT_STATE &&
|
|
687
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
687
688
|
typedef struct {
|
|
688
689
|
uint64_t val[8];
|
|
689
690
|
} data512_t;
|
|
690
691
|
|
|
691
|
-
static __inline__ data512_t __attribute__((__always_inline__, __nodebug__))
|
|
692
|
+
static __inline__ data512_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
|
|
692
693
|
__arm_ld64b(const void *__addr) {
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
694
|
+
data512_t __value;
|
|
695
|
+
__builtin_arm_ld64b(__addr, __value.val);
|
|
696
|
+
return __value;
|
|
696
697
|
}
|
|
697
|
-
static __inline__ void __attribute__((__always_inline__, __nodebug__))
|
|
698
|
+
static __inline__ void __attribute__((__always_inline__, __nodebug__, target("ls64")))
|
|
698
699
|
__arm_st64b(void *__addr, data512_t __value) {
|
|
699
|
-
|
|
700
|
+
__builtin_arm_st64b(__addr, __value.val);
|
|
700
701
|
}
|
|
701
|
-
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
702
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
|
|
702
703
|
__arm_st64bv(void *__addr, data512_t __value) {
|
|
703
|
-
|
|
704
|
+
return __builtin_arm_st64bv(__addr, __value.val);
|
|
704
705
|
}
|
|
705
|
-
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
706
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
|
|
706
707
|
__arm_st64bv0(void *__addr, data512_t __value) {
|
|
707
|
-
|
|
708
|
+
return __builtin_arm_st64bv0(__addr, __value.val);
|
|
708
709
|
}
|
|
709
710
|
#endif
|
|
710
711
|
|
|
711
712
|
/* 10.1 Special register intrinsics */
|
|
712
713
|
#define __arm_rsr(sysreg) __builtin_arm_rsr(sysreg)
|
|
713
714
|
#define __arm_rsr64(sysreg) __builtin_arm_rsr64(sysreg)
|
|
715
|
+
#define __arm_rsr128(sysreg) __builtin_arm_rsr128(sysreg)
|
|
714
716
|
#define __arm_rsrp(sysreg) __builtin_arm_rsrp(sysreg)
|
|
715
717
|
#define __arm_rsrf(sysreg) __builtin_bit_cast(float, __arm_rsr(sysreg))
|
|
716
718
|
#define __arm_rsrf64(sysreg) __builtin_bit_cast(double, __arm_rsr64(sysreg))
|
|
717
719
|
#define __arm_wsr(sysreg, v) __builtin_arm_wsr(sysreg, v)
|
|
718
720
|
#define __arm_wsr64(sysreg, v) __builtin_arm_wsr64(sysreg, v)
|
|
721
|
+
#define __arm_wsr128(sysreg, v) __builtin_arm_wsr128(sysreg, v)
|
|
719
722
|
#define __arm_wsrp(sysreg, v) __builtin_arm_wsrp(sysreg, v)
|
|
720
723
|
#define __arm_wsrf(sysreg, v) __arm_wsr(sysreg, __builtin_bit_cast(uint32_t, v))
|
|
721
724
|
#define __arm_wsrf64(sysreg, v) __arm_wsr64(sysreg, __builtin_bit_cast(uint64_t, v))
|
|
722
725
|
|
|
723
726
|
/* Memory Tagging Extensions (MTE) Intrinsics */
|
|
724
|
-
#if
|
|
727
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
725
728
|
#define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask)
|
|
726
729
|
#define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset)
|
|
727
730
|
#define __arm_mte_exclude_tag(__ptr, __excluded) __builtin_arm_gmi(__ptr, __excluded)
|
|
728
731
|
#define __arm_mte_get_tag(__ptr) __builtin_arm_ldg(__ptr)
|
|
729
732
|
#define __arm_mte_set_tag(__ptr) __builtin_arm_stg(__ptr)
|
|
730
733
|
#define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
|
|
731
|
-
#endif
|
|
732
734
|
|
|
733
735
|
/* Memory Operations Intrinsics */
|
|
734
|
-
#if __ARM_FEATURE_MOPS && __ARM_FEATURE_MEMORY_TAGGING
|
|
735
736
|
#define __arm_mops_memset_tag(__tagged_address, __value, __size) \
|
|
736
737
|
__builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
|
|
737
738
|
#endif
|
|
738
739
|
|
|
739
740
|
/* Transactional Memory Extension (TME) Intrinsics */
|
|
740
|
-
#if __ARM_FEATURE_TME
|
|
741
|
+
#if defined(__ARM_FEATURE_TME) && __ARM_FEATURE_TME
|
|
741
742
|
|
|
742
743
|
#define _TMFAILURE_REASON 0x00007fffu
|
|
743
744
|
#define _TMFAILURE_RTRY 0x00008000u
|
|
@@ -759,12 +760,12 @@ __arm_st64bv0(void *__addr, data512_t __value) {
|
|
|
759
760
|
#endif /* __ARM_FEATURE_TME */
|
|
760
761
|
|
|
761
762
|
/* Armv8.5-A Random number generation intrinsics */
|
|
762
|
-
#if __ARM_64BIT_STATE &&
|
|
763
|
-
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
|
763
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
764
|
+
static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
|
|
764
765
|
__rndr(uint64_t *__p) {
|
|
765
766
|
return __builtin_arm_rndr(__p);
|
|
766
767
|
}
|
|
767
|
-
static __inline__ int __attribute__((__always_inline__, __nodebug__))
|
|
768
|
+
static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
|
|
768
769
|
__rndrrs(uint64_t *__p) {
|
|
769
770
|
return __builtin_arm_rndrrs(__p);
|
|
770
771
|
}
|