@cpp-linter/clang-tidy-win32-x64 15.0.2 → 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/{15.0.2 → 16}/include/__clang_cuda_texture_intrinsics.h +2 -0
- package/lib/clang/{15.0.2 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{15.0.2 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{15.0.2 → 16}/include/__clang_hip_runtime_wrapper.h +1 -0
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{15.0.2 → 16}/include/altivec.h +14 -14
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{15.0.2 → 16}/include/amxintrin.h +32 -0
- package/lib/clang/{15.0.2 → 16}/include/arm_acle.h +76 -75
- package/lib/clang/{15.0.2 → 16}/include/arm_fp16.h +1 -1
- package/lib/clang/{15.0.2 → 16}/include/arm_neon.h +26428 -26598
- package/lib/clang/{15.0.2 → 16}/include/arm_neon_sve_bridge.h +0 -2
- package/lib/clang/{15.0.2 → 16}/include/arm_sve.h +7784 -7936
- package/lib/clang/{15.0.2 → 16}/include/avx512bf16intrin.h +18 -15
- package/lib/clang/{15.0.2 → 16}/include/avx512fintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/avx512fp16intrin.h +6 -9
- package/lib/clang/{15.0.2 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{15.0.2 → 16}/include/avx512vlbf16intrin.h +31 -38
- package/lib/clang/{15.0.2 → 16}/include/avx512vlbwintrin.h +352 -0
- package/lib/clang/{15.0.2 → 16}/include/avx512vlfp16intrin.h +3 -0
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{15.0.2 → 16}/include/avxintrin.h +12 -2
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{15.0.2 → 16}/include/cpuid.h +11 -1
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{15.0.2 → 16}/include/emmintrin.h +11 -1
- package/lib/clang/{15.0.2 → 16}/include/float.h +17 -10
- package/lib/clang/{15.0.2 → 16}/include/gfniintrin.h +7 -5
- package/lib/clang/{15.0.2 → 16}/include/hlsl/hlsl_basic_types.h +3 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/{15.0.2 → 16}/include/immintrin.h +41 -9
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{15.0.2 → 16}/include/limits.h +3 -2
- package/lib/clang/{15.0.2 → 16}/include/opencl-c-base.h +19 -0
- package/lib/clang/{15.0.2 → 16}/include/opencl-c.h +175 -145
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/emmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/mm_malloc.h +1 -1
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/mmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/pmmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/smmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/tmmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/xmmintrin.h +2 -2
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/{15.0.2 → 16}/include/riscv_vector.h +62 -53
- package/lib/clang/{15.0.2 → 16}/include/smmintrin.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{15.0.2 → 16}/include/stdatomic.h +6 -3
- package/lib/clang/{15.0.2 → 16}/include/stdbool.h +2 -2
- package/lib/clang/{15.0.2 → 16}/include/stddef.h +8 -1
- package/lib/clang/{15.0.2 → 16}/include/stdint.h +158 -40
- package/lib/clang/{15.0.2 → 16}/include/stdnoreturn.h +1 -1
- package/lib/clang/{15.0.2 → 16}/include/unwind.h +2 -1
- package/lib/clang/{15.0.2 → 16}/include/velintrin.h +1 -1
- package/lib/clang/{15.0.2 → 16}/include/x86gprintrin.h +19 -7
- package/lib/clang/{15.0.2 → 16}/include/xmmintrin.h +1 -2
- package/package.json +6 -6
- package/lib/clang/15.0.2/include/hlsl/hlsl_intrinsics.h +0 -15
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_intrinsics.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_math.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ammintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx2intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/bmiintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cet.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cetintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/crc32intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/f16cintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hexagon_types.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hlsl.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hresetintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ia32intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/mm_malloc.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/mmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/msa.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/nmmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/pmmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/rtmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/tmmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/uintrintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/vaesintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/wasm_simd128.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/wmmintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/x86intrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xopintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{15.0.2 → 16}/include/xtestintrin.h +0 -0
|
@@ -38,6 +38,16 @@ typedef unsigned char __v16qu __attribute__((__vector_size__(16)));
|
|
|
38
38
|
* appear in the interface though. */
|
|
39
39
|
typedef signed char __v16qs __attribute__((__vector_size__(16)));
|
|
40
40
|
|
|
41
|
+
#ifdef __SSE2__
|
|
42
|
+
/* Both _Float16 and __bf16 require SSE2 being enabled. */
|
|
43
|
+
typedef _Float16 __v8hf __attribute__((__vector_size__(16), __aligned__(16)));
|
|
44
|
+
typedef _Float16 __m128h __attribute__((__vector_size__(16), __aligned__(16)));
|
|
45
|
+
typedef _Float16 __m128h_u __attribute__((__vector_size__(16), __aligned__(1)));
|
|
46
|
+
|
|
47
|
+
typedef __bf16 __v8bf __attribute__((__vector_size__(16), __aligned__(16)));
|
|
48
|
+
typedef __bf16 __m128bh __attribute__((__vector_size__(16), __aligned__(16)));
|
|
49
|
+
#endif
|
|
50
|
+
|
|
41
51
|
/* Define the default attributes for the functions in this file. */
|
|
42
52
|
#define __DEFAULT_FN_ATTRS \
|
|
43
53
|
__attribute__((__always_inline__, __nodebug__, __target__("sse2"), \
|
|
@@ -1809,7 +1819,7 @@ static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setr_pd(double __w,
|
|
|
1809
1819
|
/// \returns An initialized 128-bit floating-point vector of [2 x double] with
|
|
1810
1820
|
/// all elements set to zero.
|
|
1811
1821
|
static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_setzero_pd(void) {
|
|
1812
|
-
return __extension__(__m128d){0, 0};
|
|
1822
|
+
return __extension__(__m128d){0.0, 0.0};
|
|
1813
1823
|
}
|
|
1814
1824
|
|
|
1815
1825
|
/// Constructs a 128-bit floating-point vector of [2 x double]. The lower
|
|
@@ -38,9 +38,10 @@
|
|
|
38
38
|
# undef FLT_MANT_DIG
|
|
39
39
|
# undef DBL_MANT_DIG
|
|
40
40
|
# undef LDBL_MANT_DIG
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
|
42
|
+
!defined(__STRICT_ANSI__) || \
|
|
43
|
+
(defined(__cplusplus) && __cplusplus >= 201103L) || \
|
|
44
|
+
(__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE))
|
|
44
45
|
# undef DECIMAL_DIG
|
|
45
46
|
# endif
|
|
46
47
|
# undef FLT_DIG
|
|
@@ -67,9 +68,10 @@
|
|
|
67
68
|
# undef FLT_MIN
|
|
68
69
|
# undef DBL_MIN
|
|
69
70
|
# undef LDBL_MIN
|
|
70
|
-
#
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
|
|
72
|
+
!defined(__STRICT_ANSI__) || \
|
|
73
|
+
(defined(__cplusplus) && __cplusplus >= 201703L) || \
|
|
74
|
+
(__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE))
|
|
73
75
|
# undef FLT_TRUE_MIN
|
|
74
76
|
# undef DBL_TRUE_MIN
|
|
75
77
|
# undef LDBL_TRUE_MIN
|
|
@@ -84,7 +86,10 @@
|
|
|
84
86
|
|
|
85
87
|
/* Characteristics of floating point types, C99 5.2.4.2.2 */
|
|
86
88
|
|
|
89
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
|
90
|
+
(defined(__cplusplus) && __cplusplus >= 201103L)
|
|
87
91
|
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
|
|
92
|
+
#endif
|
|
88
93
|
#define FLT_ROUNDS (__builtin_flt_rounds())
|
|
89
94
|
#define FLT_RADIX __FLT_RADIX__
|
|
90
95
|
|
|
@@ -92,8 +97,9 @@
|
|
|
92
97
|
#define DBL_MANT_DIG __DBL_MANT_DIG__
|
|
93
98
|
#define LDBL_MANT_DIG __LDBL_MANT_DIG__
|
|
94
99
|
|
|
95
|
-
#if __STDC_VERSION__ >= 199901L
|
|
96
|
-
|
|
100
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
|
|
101
|
+
!defined(__STRICT_ANSI__) || \
|
|
102
|
+
(defined(__cplusplus) && __cplusplus >= 201103L) || \
|
|
97
103
|
(__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE))
|
|
98
104
|
# define DECIMAL_DIG __DECIMAL_DIG__
|
|
99
105
|
#endif
|
|
@@ -130,8 +136,9 @@
|
|
|
130
136
|
#define DBL_MIN __DBL_MIN__
|
|
131
137
|
#define LDBL_MIN __LDBL_MIN__
|
|
132
138
|
|
|
133
|
-
#if __STDC_VERSION__ >= 201112L
|
|
134
|
-
|
|
139
|
+
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
|
|
140
|
+
!defined(__STRICT_ANSI__) || \
|
|
141
|
+
(defined(__cplusplus) && __cplusplus >= 201703L) || \
|
|
135
142
|
(__STDC_HOSTED__ && defined(_AIX) && defined(_ALL_SOURCE))
|
|
136
143
|
# define FLT_TRUE_MIN __FLT_DENORM_MIN__
|
|
137
144
|
# define DBL_TRUE_MIN __DBL_DENORM_MIN__
|
|
@@ -20,10 +20,12 @@
|
|
|
20
20
|
/* Default attributes for YMM unmasked form. */
|
|
21
21
|
#define __DEFAULT_FN_ATTRS_Y __attribute__((__always_inline__, __nodebug__, __target__("avx,gfni"), __min_vector_width__(256)))
|
|
22
22
|
|
|
23
|
-
/* Default attributes for ZMM forms. */
|
|
24
|
-
#define __DEFAULT_FN_ATTRS_Z __attribute__((__always_inline__, __nodebug__, __target__("
|
|
23
|
+
/* Default attributes for ZMM unmasked forms. */
|
|
24
|
+
#define __DEFAULT_FN_ATTRS_Z __attribute__((__always_inline__, __nodebug__, __target__("avx512f,gfni"), __min_vector_width__(512)))
|
|
25
|
+
/* Default attributes for ZMM masked forms. */
|
|
26
|
+
#define __DEFAULT_FN_ATTRS_Z_MASK __attribute__((__always_inline__, __nodebug__, __target__("avx512bw,gfni"), __min_vector_width__(512)))
|
|
25
27
|
|
|
26
|
-
/* Default attributes for VLX forms. */
|
|
28
|
+
/* Default attributes for VLX masked forms. */
|
|
27
29
|
#define __DEFAULT_FN_ATTRS_VL128 __attribute__((__always_inline__, __nodebug__, __target__("avx512bw,avx512vl,gfni"), __min_vector_width__(128)))
|
|
28
30
|
#define __DEFAULT_FN_ATTRS_VL256 __attribute__((__always_inline__, __nodebug__, __target__("avx512bw,avx512vl,gfni"), __min_vector_width__(256)))
|
|
29
31
|
|
|
@@ -99,7 +101,7 @@ _mm512_gf2p8mul_epi8(__m512i __A, __m512i __B)
|
|
|
99
101
|
(__v64qi) __B);
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
static __inline__ __m512i
|
|
104
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS_Z_MASK
|
|
103
105
|
_mm512_mask_gf2p8mul_epi8(__m512i __S, __mmask64 __U, __m512i __A, __m512i __B)
|
|
104
106
|
{
|
|
105
107
|
return (__m512i) __builtin_ia32_selectb_512(__U,
|
|
@@ -107,7 +109,7 @@ _mm512_mask_gf2p8mul_epi8(__m512i __S, __mmask64 __U, __m512i __A, __m512i __B)
|
|
|
107
109
|
(__v64qi) __S);
|
|
108
110
|
}
|
|
109
111
|
|
|
110
|
-
static __inline__ __m512i
|
|
112
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS_Z_MASK
|
|
111
113
|
_mm512_maskz_gf2p8mul_epi8(__mmask64 __U, __m512i __A, __m512i __B)
|
|
112
114
|
{
|
|
113
115
|
return _mm512_mask_gf2p8mul_epi8((__m512i)_mm512_setzero_si512(),
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#ifndef _HLSL_HLSL_BASIC_TYPES_H_
|
|
10
10
|
#define _HLSL_HLSL_BASIC_TYPES_H_
|
|
11
11
|
|
|
12
|
+
namespace hlsl {
|
|
12
13
|
// built-in scalar data types:
|
|
13
14
|
|
|
14
15
|
#ifdef __HLSL_ENABLE_16_BIT
|
|
@@ -61,4 +62,6 @@ typedef vector<double, 2> double2;
|
|
|
61
62
|
typedef vector<double, 3> double3;
|
|
62
63
|
typedef vector<double, 4> double4;
|
|
63
64
|
|
|
65
|
+
} // namespace hlsl
|
|
66
|
+
|
|
64
67
|
#endif //_HLSL_HLSL_BASIC_TYPES_H_
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
//===----- hlsl_intrinsics.h - HLSL definitions for 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
|
+
#ifndef _HLSL_HLSL_INTRINSICS_H_
|
|
10
|
+
#define _HLSL_HLSL_INTRINSICS_H_
|
|
11
|
+
|
|
12
|
+
namespace hlsl {
|
|
13
|
+
|
|
14
|
+
__attribute__((availability(shadermodel, introduced = 6.0)))
|
|
15
|
+
__attribute__((clang_builtin_alias(__builtin_hlsl_wave_active_count_bits))) uint
|
|
16
|
+
WaveActiveCountBits(bool bBit);
|
|
17
|
+
|
|
18
|
+
// abs builtins
|
|
19
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
20
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
21
|
+
int16_t abs(int16_t);
|
|
22
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
23
|
+
int16_t2 abs(int16_t2);
|
|
24
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
25
|
+
int16_t3 abs(int16_t3);
|
|
26
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
27
|
+
int16_t4 abs(int16_t4);
|
|
28
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) half abs(half);
|
|
29
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
30
|
+
half2 abs(half2);
|
|
31
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
32
|
+
half3 abs(half3);
|
|
33
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
34
|
+
half4 abs(half4);
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int abs(int);
|
|
38
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int2 abs(int2);
|
|
39
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int3 abs(int3);
|
|
40
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int4 abs(int4);
|
|
41
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) float
|
|
42
|
+
abs(float);
|
|
43
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
44
|
+
float2 abs(float2);
|
|
45
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
46
|
+
float3 abs(float3);
|
|
47
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
48
|
+
float4 abs(float4);
|
|
49
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
50
|
+
int64_t abs(int64_t);
|
|
51
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
52
|
+
int64_t2 abs(int64_t2);
|
|
53
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
54
|
+
int64_t3 abs(int64_t3);
|
|
55
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
56
|
+
int64_t4 abs(int64_t4);
|
|
57
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) double
|
|
58
|
+
abs(double);
|
|
59
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
60
|
+
double2 abs(double2);
|
|
61
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
62
|
+
double3 abs(double3);
|
|
63
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_abs)))
|
|
64
|
+
double4 abs(double4);
|
|
65
|
+
|
|
66
|
+
// sqrt builtins
|
|
67
|
+
__attribute__((clang_builtin_alias(__builtin_sqrt))) double sqrt(double In);
|
|
68
|
+
__attribute__((clang_builtin_alias(__builtin_sqrtf))) float sqrt(float In);
|
|
69
|
+
|
|
70
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
71
|
+
__attribute__((clang_builtin_alias(__builtin_sqrtf16))) half sqrt(half In);
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
// ceil builtins
|
|
75
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
76
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
77
|
+
half ceil(half);
|
|
78
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
79
|
+
half2 ceil(half2);
|
|
80
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
81
|
+
half3 ceil(half3);
|
|
82
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
83
|
+
half4 ceil(half4);
|
|
84
|
+
#endif
|
|
85
|
+
|
|
86
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) float
|
|
87
|
+
ceil(float);
|
|
88
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
89
|
+
float2 ceil(float2);
|
|
90
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
91
|
+
float3 ceil(float3);
|
|
92
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
93
|
+
float4 ceil(float4);
|
|
94
|
+
|
|
95
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) double
|
|
96
|
+
ceil(double);
|
|
97
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
98
|
+
double2 ceil(double2);
|
|
99
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
100
|
+
double3 ceil(double3);
|
|
101
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_ceil)))
|
|
102
|
+
double4 ceil(double4);
|
|
103
|
+
|
|
104
|
+
// floor builtins
|
|
105
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
106
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
107
|
+
half floor(half);
|
|
108
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
109
|
+
half2 floor(half2);
|
|
110
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
111
|
+
half3 floor(half3);
|
|
112
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
113
|
+
half4 floor(half4);
|
|
114
|
+
#endif
|
|
115
|
+
|
|
116
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) float
|
|
117
|
+
floor(float);
|
|
118
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
119
|
+
float2 floor(float2);
|
|
120
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
121
|
+
float3 floor(float3);
|
|
122
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
123
|
+
float4 floor(float4);
|
|
124
|
+
|
|
125
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) double
|
|
126
|
+
floor(double);
|
|
127
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
128
|
+
double2 floor(double2);
|
|
129
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
130
|
+
double3 floor(double3);
|
|
131
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_floor)))
|
|
132
|
+
double4 floor(double4);
|
|
133
|
+
|
|
134
|
+
// cos builtins
|
|
135
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
136
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) half cos(half);
|
|
137
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
138
|
+
half2 cos(half2);
|
|
139
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
140
|
+
half3 cos(half3);
|
|
141
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
142
|
+
half4 cos(half4);
|
|
143
|
+
#endif
|
|
144
|
+
|
|
145
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) float
|
|
146
|
+
cos(float);
|
|
147
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
148
|
+
float2 cos(float2);
|
|
149
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
150
|
+
float3 cos(float3);
|
|
151
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
152
|
+
float4 cos(float4);
|
|
153
|
+
|
|
154
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) double
|
|
155
|
+
cos(double);
|
|
156
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
157
|
+
double2 cos(double2);
|
|
158
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
159
|
+
double3 cos(double3);
|
|
160
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_cos)))
|
|
161
|
+
double4 cos(double4);
|
|
162
|
+
|
|
163
|
+
// sin builtins
|
|
164
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
165
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) half sin(half);
|
|
166
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
167
|
+
half2 sin(half2);
|
|
168
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
169
|
+
half3 sin(half3);
|
|
170
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
171
|
+
half4 sin(half4);
|
|
172
|
+
#endif
|
|
173
|
+
|
|
174
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) float
|
|
175
|
+
sin(float);
|
|
176
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
177
|
+
float2 sin(float2);
|
|
178
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
179
|
+
float3 sin(float3);
|
|
180
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
181
|
+
float4 sin(float4);
|
|
182
|
+
|
|
183
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) double
|
|
184
|
+
sin(double);
|
|
185
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
186
|
+
double2 sin(double2);
|
|
187
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
188
|
+
double3 sin(double3);
|
|
189
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_sin)))
|
|
190
|
+
double4 sin(double4);
|
|
191
|
+
|
|
192
|
+
// trunc builtins
|
|
193
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
194
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
195
|
+
half trunc(half);
|
|
196
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
197
|
+
half2 trunc(half2);
|
|
198
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
199
|
+
half3 trunc(half3);
|
|
200
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
201
|
+
half4 trunc(half4);
|
|
202
|
+
#endif
|
|
203
|
+
|
|
204
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) float
|
|
205
|
+
trunc(float);
|
|
206
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
207
|
+
float2 trunc(float2);
|
|
208
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
209
|
+
float3 trunc(float3);
|
|
210
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
211
|
+
float4 trunc(float4);
|
|
212
|
+
|
|
213
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) double
|
|
214
|
+
trunc(double);
|
|
215
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
216
|
+
double2 trunc(double2);
|
|
217
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
218
|
+
double3 trunc(double3);
|
|
219
|
+
__attribute__((clang_builtin_alias(__builtin_elementwise_trunc)))
|
|
220
|
+
double4 trunc(double4);
|
|
221
|
+
|
|
222
|
+
} // namespace hlsl
|
|
223
|
+
#endif //_HLSL_HLSL_INTRINSICS_H_
|
|
@@ -189,6 +189,11 @@
|
|
|
189
189
|
#include <avx512ifmavlintrin.h>
|
|
190
190
|
#endif
|
|
191
191
|
|
|
192
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
193
|
+
defined(__AVXIFMA__)
|
|
194
|
+
#include <avxifmaintrin.h>
|
|
195
|
+
#endif
|
|
196
|
+
|
|
192
197
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
193
198
|
defined(__AVX512VBMI__)
|
|
194
199
|
#include <avx512vbmiintrin.h>
|
|
@@ -214,17 +219,13 @@
|
|
|
214
219
|
#include <avx512pfintrin.h>
|
|
215
220
|
#endif
|
|
216
221
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
* We use __AVX512FP16__ to identify if float16 is supported or not, so
|
|
220
|
-
* when float16 is not supported, the related header is not included.
|
|
221
|
-
*
|
|
222
|
-
*/
|
|
223
|
-
#if defined(__AVX512FP16__)
|
|
222
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
223
|
+
defined(__AVX512FP16__)
|
|
224
224
|
#include <avx512fp16intrin.h>
|
|
225
225
|
#endif
|
|
226
226
|
|
|
227
|
-
#if defined(
|
|
227
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
228
|
+
(defined(__AVX512VL__) && defined(__AVX512FP16__))
|
|
228
229
|
#include <avx512vlfp16intrin.h>
|
|
229
230
|
#endif
|
|
230
231
|
|
|
@@ -258,6 +259,16 @@
|
|
|
258
259
|
#include <gfniintrin.h>
|
|
259
260
|
#endif
|
|
260
261
|
|
|
262
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
263
|
+
defined(__AVXVNNIINT8__)
|
|
264
|
+
#include <avxvnniint8intrin.h>
|
|
265
|
+
#endif
|
|
266
|
+
|
|
267
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
268
|
+
defined(__AVXNECONVERT__)
|
|
269
|
+
#include <avxneconvertintrin.h>
|
|
270
|
+
#endif
|
|
271
|
+
|
|
261
272
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
262
273
|
defined(__RDPID__)
|
|
263
274
|
/// Returns the value of the IA32_TSC_AUX MSR (0xc0000103).
|
|
@@ -291,6 +302,23 @@ _rdrand64_step(unsigned long long *__p)
|
|
|
291
302
|
{
|
|
292
303
|
return (int)__builtin_ia32_rdrand64_step(__p);
|
|
293
304
|
}
|
|
305
|
+
#else
|
|
306
|
+
// We need to emulate the functionality of 64-bit rdrand with 2 32-bit
|
|
307
|
+
// rdrand instructions.
|
|
308
|
+
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
309
|
+
_rdrand64_step(unsigned long long *__p)
|
|
310
|
+
{
|
|
311
|
+
unsigned int __lo, __hi;
|
|
312
|
+
unsigned int __res_lo = __builtin_ia32_rdrand32_step(&__lo);
|
|
313
|
+
unsigned int __res_hi = __builtin_ia32_rdrand32_step(&__hi);
|
|
314
|
+
if (__res_lo && __res_hi) {
|
|
315
|
+
*__p = ((unsigned long long)__hi << 32) | (unsigned long long)__lo;
|
|
316
|
+
return 1;
|
|
317
|
+
} else {
|
|
318
|
+
*__p = 0;
|
|
319
|
+
return 0;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
294
322
|
#endif
|
|
295
323
|
#endif /* __RDRND__ */
|
|
296
324
|
|
|
@@ -495,6 +523,10 @@ _storebe_i64(void * __P, long long __D) {
|
|
|
495
523
|
defined(__INVPCID__)
|
|
496
524
|
#include <invpcidintrin.h>
|
|
497
525
|
#endif
|
|
526
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
527
|
+
defined(__AMX_FP16__)
|
|
528
|
+
#include <amxfp16intrin.h>
|
|
529
|
+
#endif
|
|
498
530
|
|
|
499
531
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
500
532
|
defined(__KL__) || defined(__WIDEKL__)
|
|
@@ -502,7 +534,7 @@ _storebe_i64(void * __P, long long __D) {
|
|
|
502
534
|
#endif
|
|
503
535
|
|
|
504
536
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
505
|
-
defined(
|
|
537
|
+
defined(__AMX_TILE__) || defined(__AMX_INT8__) || defined(__AMX_BF16__)
|
|
506
538
|
#include <amxintrin.h>
|
|
507
539
|
#endif
|
|
508
540
|
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
/*===------------ larchintrin.h - LoongArch 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 _LOONGARCH_BASE_INTRIN_H
|
|
11
|
+
#define _LOONGARCH_BASE_INTRIN_H
|
|
12
|
+
|
|
13
|
+
#ifdef __cplusplus
|
|
14
|
+
extern "C" {
|
|
15
|
+
#endif
|
|
16
|
+
|
|
17
|
+
typedef struct rdtime {
|
|
18
|
+
unsigned int value;
|
|
19
|
+
unsigned int timeid;
|
|
20
|
+
} __rdtime_t;
|
|
21
|
+
|
|
22
|
+
#if __loongarch_grlen == 64
|
|
23
|
+
typedef struct drdtime {
|
|
24
|
+
unsigned long dvalue;
|
|
25
|
+
unsigned long dtimeid;
|
|
26
|
+
} __drdtime_t;
|
|
27
|
+
|
|
28
|
+
extern __inline __drdtime_t
|
|
29
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
30
|
+
__rdtime_d(void) {
|
|
31
|
+
__drdtime_t __drdtime;
|
|
32
|
+
__asm__ volatile(
|
|
33
|
+
"rdtime.d %[val], %[tid]\n\t"
|
|
34
|
+
: [val] "=&r"(__drdtime.dvalue), [tid] "=&r"(__drdtime.dtimeid));
|
|
35
|
+
return __drdtime;
|
|
36
|
+
}
|
|
37
|
+
#endif
|
|
38
|
+
|
|
39
|
+
extern __inline __rdtime_t
|
|
40
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
41
|
+
__rdtimeh_w(void) {
|
|
42
|
+
__rdtime_t __rdtime;
|
|
43
|
+
__asm__ volatile("rdtimeh.w %[val], %[tid]\n\t"
|
|
44
|
+
: [val] "=&r"(__rdtime.value), [tid] "=&r"(__rdtime.timeid));
|
|
45
|
+
return __rdtime;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
extern __inline __rdtime_t
|
|
49
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
50
|
+
__rdtimel_w(void) {
|
|
51
|
+
__rdtime_t __rdtime;
|
|
52
|
+
__asm__ volatile("rdtimel.w %[val], %[tid]\n\t"
|
|
53
|
+
: [val] "=&r"(__rdtime.value), [tid] "=&r"(__rdtime.timeid));
|
|
54
|
+
return __rdtime;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#if __loongarch_grlen == 64
|
|
58
|
+
extern __inline int
|
|
59
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
60
|
+
__crc_w_b_w(char _1, int _2) {
|
|
61
|
+
return (int)__builtin_loongarch_crc_w_b_w((char)_1, (int)_2);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
extern __inline int
|
|
65
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
66
|
+
__crc_w_h_w(short _1, int _2) {
|
|
67
|
+
return (int)__builtin_loongarch_crc_w_h_w((short)_1, (int)_2);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
extern __inline int
|
|
71
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
72
|
+
__crc_w_w_w(int _1, int _2) {
|
|
73
|
+
return (int)__builtin_loongarch_crc_w_w_w((int)_1, (int)_2);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
extern __inline int
|
|
77
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
78
|
+
__crc_w_d_w(long int _1, int _2) {
|
|
79
|
+
return (int)__builtin_loongarch_crc_w_d_w((long int)_1, (int)_2);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
extern __inline int
|
|
83
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
84
|
+
__crcc_w_b_w(char _1, int _2) {
|
|
85
|
+
return (int)__builtin_loongarch_crcc_w_b_w((char)_1, (int)_2);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
extern __inline int
|
|
89
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
90
|
+
__crcc_w_h_w(short _1, int _2) {
|
|
91
|
+
return (int)__builtin_loongarch_crcc_w_h_w((short)_1, (int)_2);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
extern __inline int
|
|
95
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
96
|
+
__crcc_w_w_w(int _1, int _2) {
|
|
97
|
+
return (int)__builtin_loongarch_crcc_w_w_w((int)_1, (int)_2);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
extern __inline int
|
|
101
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
102
|
+
__crcc_w_d_w(long int _1, int _2) {
|
|
103
|
+
return (int)__builtin_loongarch_crcc_w_d_w((long int)_1, (int)_2);
|
|
104
|
+
}
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
#define __break(/*ui15*/ _1) __builtin_loongarch_break((_1))
|
|
108
|
+
|
|
109
|
+
#if __loongarch_grlen == 32
|
|
110
|
+
#define __cacop_w(/*uimm5*/ _1, /*unsigned int*/ _2, /*simm12*/ _3) \
|
|
111
|
+
((void)__builtin_loongarch_cacop_w((_1), (unsigned int)(_2), (_3)))
|
|
112
|
+
#endif
|
|
113
|
+
|
|
114
|
+
#if __loongarch_grlen == 64
|
|
115
|
+
#define __cacop_d(/*uimm5*/ _1, /*unsigned long int*/ _2, /*simm12*/ _3) \
|
|
116
|
+
((void)__builtin_loongarch_cacop_d((_1), (unsigned long int)(_2), (_3)))
|
|
117
|
+
#endif
|
|
118
|
+
|
|
119
|
+
#define __dbar(/*ui15*/ _1) __builtin_loongarch_dbar((_1))
|
|
120
|
+
|
|
121
|
+
#define __ibar(/*ui15*/ _1) __builtin_loongarch_ibar((_1))
|
|
122
|
+
|
|
123
|
+
#define __movfcsr2gr(/*ui5*/ _1) __builtin_loongarch_movfcsr2gr((_1));
|
|
124
|
+
|
|
125
|
+
#define __movgr2fcsr(/*ui5*/ _1, _2) \
|
|
126
|
+
__builtin_loongarch_movgr2fcsr((_1), (unsigned int)_2);
|
|
127
|
+
|
|
128
|
+
#define __syscall(/*ui15*/ _1) __builtin_loongarch_syscall((_1))
|
|
129
|
+
|
|
130
|
+
#define __csrrd_w(/*ui14*/ _1) ((unsigned int)__builtin_loongarch_csrrd_w((_1)))
|
|
131
|
+
|
|
132
|
+
#define __csrwr_w(/*unsigned int*/ _1, /*ui14*/ _2) \
|
|
133
|
+
((unsigned int)__builtin_loongarch_csrwr_w((unsigned int)(_1), (_2)))
|
|
134
|
+
|
|
135
|
+
#define __csrxchg_w(/*unsigned int*/ _1, /*unsigned int*/ _2, /*ui14*/ _3) \
|
|
136
|
+
((unsigned int)__builtin_loongarch_csrxchg_w((unsigned int)(_1), \
|
|
137
|
+
(unsigned int)(_2), (_3)))
|
|
138
|
+
|
|
139
|
+
#if __loongarch_grlen == 64
|
|
140
|
+
#define __csrrd_d(/*ui14*/ _1) \
|
|
141
|
+
((unsigned long int)__builtin_loongarch_csrrd_d((_1)))
|
|
142
|
+
|
|
143
|
+
#define __csrwr_d(/*unsigned long int*/ _1, /*ui14*/ _2) \
|
|
144
|
+
((unsigned long int)__builtin_loongarch_csrwr_d((unsigned long int)(_1), \
|
|
145
|
+
(_2)))
|
|
146
|
+
|
|
147
|
+
#define __csrxchg_d(/*unsigned long int*/ _1, /*unsigned long int*/ _2, \
|
|
148
|
+
/*ui14*/ _3) \
|
|
149
|
+
((unsigned long int)__builtin_loongarch_csrxchg_d( \
|
|
150
|
+
(unsigned long int)(_1), (unsigned long int)(_2), (_3)))
|
|
151
|
+
#endif
|
|
152
|
+
|
|
153
|
+
extern __inline unsigned char
|
|
154
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
155
|
+
__iocsrrd_b(unsigned int _1) {
|
|
156
|
+
return (unsigned char)__builtin_loongarch_iocsrrd_b((unsigned int)_1);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
extern __inline unsigned char
|
|
160
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
161
|
+
__iocsrrd_h(unsigned int _1) {
|
|
162
|
+
return (unsigned short)__builtin_loongarch_iocsrrd_h((unsigned int)_1);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
extern __inline unsigned int
|
|
166
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
167
|
+
__iocsrrd_w(unsigned int _1) {
|
|
168
|
+
return (unsigned int)__builtin_loongarch_iocsrrd_w((unsigned int)_1);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
#if __loongarch_grlen == 64
|
|
172
|
+
extern __inline unsigned long int
|
|
173
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
174
|
+
__iocsrrd_d(unsigned int _1) {
|
|
175
|
+
return (unsigned long int)__builtin_loongarch_iocsrrd_d((unsigned int)_1);
|
|
176
|
+
}
|
|
177
|
+
#endif
|
|
178
|
+
|
|
179
|
+
extern __inline void
|
|
180
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
181
|
+
__iocsrwr_b(unsigned char _1, unsigned int _2) {
|
|
182
|
+
__builtin_loongarch_iocsrwr_b((unsigned char)_1, (unsigned int)_2);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
extern __inline void
|
|
186
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
187
|
+
__iocsrwr_h(unsigned short _1, unsigned int _2) {
|
|
188
|
+
__builtin_loongarch_iocsrwr_h((unsigned short)_1, (unsigned int)_2);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
extern __inline void
|
|
192
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
193
|
+
__iocsrwr_w(unsigned int _1, unsigned int _2) {
|
|
194
|
+
__builtin_loongarch_iocsrwr_w((unsigned int)_1, (unsigned int)_2);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
extern __inline unsigned int
|
|
198
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
199
|
+
__cpucfg(unsigned int _1) {
|
|
200
|
+
return (unsigned int)__builtin_loongarch_cpucfg((unsigned int)_1);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
#if __loongarch_grlen == 64
|
|
204
|
+
extern __inline void
|
|
205
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
206
|
+
__iocsrwr_d(unsigned long int _1, unsigned int _2) {
|
|
207
|
+
__builtin_loongarch_iocsrwr_d((unsigned long int)_1, (unsigned int)_2);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
extern __inline void
|
|
211
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
212
|
+
__asrtgt_d(long int _1, long int _2) {
|
|
213
|
+
__builtin_loongarch_asrtgt_d((long int)_1, (long int)_2);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
extern __inline void
|
|
217
|
+
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
|
218
|
+
__asrtle_d(long int _1, long int _2) {
|
|
219
|
+
__builtin_loongarch_asrtle_d((long int)_1, (long int)_2);
|
|
220
|
+
}
|
|
221
|
+
#endif
|
|
222
|
+
|
|
223
|
+
#if __loongarch_grlen == 64
|
|
224
|
+
#define __lddir_d(/*long int*/ _1, /*ui5*/ _2) \
|
|
225
|
+
((long int)__builtin_loongarch_lddir_d((long int)(_1), (_2)))
|
|
226
|
+
|
|
227
|
+
#define __ldpte_d(/*long int*/ _1, /*ui5*/ _2) \
|
|
228
|
+
((void)__builtin_loongarch_ldpte_d((long int)(_1), (_2)))
|
|
229
|
+
#endif
|
|
230
|
+
|
|
231
|
+
#ifdef __cplusplus
|
|
232
|
+
}
|
|
233
|
+
#endif
|
|
234
|
+
#endif /* _LOONGARCH_BASE_INTRIN_H */
|