@cpp-linter/clang-tidy-linux-arm64 18.1.5 → 20.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy +2 -2
- package/lib/clang/{18 → 20}/include/__clang_cuda_device_functions.h +14 -0
- package/lib/clang/{18 → 20}/include/__clang_cuda_intrinsics.h +1 -3
- package/lib/clang/{18 → 20}/include/__clang_cuda_math.h +5 -0
- package/lib/clang/{18 → 20}/include/__clang_hip_cmath.h +6 -1
- package/lib/clang/{18 → 20}/include/__clang_hip_math.h +5 -0
- package/lib/clang/20/include/__stdarg_header_macro.h +12 -0
- package/lib/clang/20/include/__stddef_header_macro.h +12 -0
- package/lib/clang/{18 → 20}/include/adcintrin.h +5 -0
- package/lib/clang/{18 → 20}/include/adxintrin.h +5 -0
- package/lib/clang/{18 → 20}/include/altivec.h +8 -8
- package/lib/clang/20/include/amdgpuintrin.h +194 -0
- package/lib/clang/20/include/amxavx512intrin.h +382 -0
- package/lib/clang/20/include/amxbf16transposeintrin.h +94 -0
- package/lib/clang/20/include/amxcomplextransposeintrin.h +303 -0
- package/lib/clang/{18 → 20}/include/amxfp16intrin.h +35 -0
- package/lib/clang/20/include/amxfp16transposeintrin.h +94 -0
- package/lib/clang/20/include/amxfp8intrin.h +230 -0
- package/lib/clang/{18 → 20}/include/amxintrin.h +5 -35
- package/lib/clang/20/include/amxmovrsintrin.h +48 -0
- package/lib/clang/20/include/amxmovrstransposeintrin.h +200 -0
- package/lib/clang/20/include/amxtf32intrin.h +108 -0
- package/lib/clang/20/include/amxtf32transposeintrin.h +105 -0
- package/lib/clang/20/include/amxtransposeintrin.h +248 -0
- package/lib/clang/{18 → 20}/include/arm_acle.h +49 -26
- package/lib/clang/{18 → 20}/include/arm_fp16.h +1 -1
- package/lib/clang/{18 → 20}/include/arm_neon.h +45631 -43745
- package/lib/clang/{18 → 20}/include/arm_sme.h +641 -6
- package/lib/clang/{18 → 20}/include/arm_sve.h +28311 -27738
- package/lib/clang/{18 → 20}/include/arm_vector_types.h +92 -5
- package/lib/clang/20/include/avx10_2_512bf16intrin.h +561 -0
- package/lib/clang/20/include/avx10_2_512convertintrin.h +320 -0
- package/lib/clang/20/include/avx10_2_512minmaxintrin.h +127 -0
- package/lib/clang/20/include/avx10_2_512niintrin.h +314 -0
- package/lib/clang/20/include/avx10_2_512satcvtdsintrin.h +303 -0
- package/lib/clang/20/include/avx10_2_512satcvtintrin.h +301 -0
- package/lib/clang/20/include/avx10_2bf16intrin.h +1085 -0
- package/lib/clang/20/include/avx10_2convertintrin.h +589 -0
- package/lib/clang/20/include/avx10_2copyintrin.h +66 -0
- package/lib/clang/20/include/avx10_2minmaxintrin.h +277 -0
- package/lib/clang/20/include/avx10_2niintrin.h +2075 -0
- package/lib/clang/20/include/avx10_2satcvtdsintrin.h +496 -0
- package/lib/clang/20/include/avx10_2satcvtintrin.h +444 -0
- package/lib/clang/{18 → 20}/include/avx2intrin.h +9 -0
- package/lib/clang/{18 → 20}/include/avx512bitalgintrin.h +2 -2
- package/lib/clang/{18 → 20}/include/avx512fintrin.h +22 -14
- package/lib/clang/{18 → 20}/include/avx512fp16intrin.h +38 -38
- package/lib/clang/{18 → 20}/include/avx512vlbitalgintrin.h +4 -4
- package/lib/clang/{18 → 20}/include/avx512vpopcntdqintrin.h +12 -4
- package/lib/clang/{18 → 20}/include/avx512vpopcntdqvlintrin.h +16 -8
- package/lib/clang/{18 → 20}/include/avxintrin.h +88 -60
- package/lib/clang/{18 → 20}/include/avxvnniint16intrin.h +36 -77
- package/lib/clang/{18 → 20}/include/avxvnniint8intrin.h +36 -77
- package/lib/clang/{18 → 20}/include/bmi2intrin.h +15 -17
- package/lib/clang/{18 → 20}/include/bmiintrin.h +33 -41
- package/lib/clang/{18 → 20}/include/builtins.h +3 -0
- package/lib/clang/{18 → 20}/include/cmpccxaddintrin.h +1 -1
- package/lib/clang/{18 → 20}/include/cpuid.h +35 -14
- package/lib/clang/{18 → 20}/include/cuda_wrappers/algorithm +1 -1
- package/lib/clang/{18 → 20}/include/cuda_wrappers/cmath +4 -0
- package/lib/clang/{18 → 20}/include/cuda_wrappers/new +2 -0
- package/lib/clang/{18 → 20}/include/emmintrin.h +442 -277
- package/lib/clang/{18 → 20}/include/float.h +28 -0
- package/lib/clang/{18 → 20}/include/fmaintrin.h +32 -16
- package/lib/clang/{18 → 20}/include/gfniintrin.h +32 -10
- package/lib/clang/20/include/gpuintrin.h +224 -0
- package/lib/clang/{18 → 20}/include/hexagon_types.h +8 -4
- package/lib/clang/{18 → 20}/include/hlsl/hlsl_basic_types.h +57 -4
- package/lib/clang/20/include/hlsl/hlsl_detail.h +84 -0
- package/lib/clang/20/include/hlsl/hlsl_intrinsics.h +2814 -0
- package/lib/clang/{18 → 20}/include/hlsl.h +11 -0
- package/lib/clang/{18 → 20}/include/hvx_hexagon_protos.h +427 -0
- package/lib/clang/{18 → 20}/include/ia32intrin.h +36 -36
- package/lib/clang/{18 → 20}/include/immintrin.h +171 -161
- package/lib/clang/{18 → 20}/include/intrin.h +62 -228
- package/lib/clang/20/include/intrin0.h +256 -0
- package/lib/clang/{18 → 20}/include/inttypes.h +4 -0
- package/lib/clang/{18 → 20}/include/iso646.h +4 -0
- package/lib/clang/{18 → 20}/include/keylockerintrin.h +5 -8
- package/lib/clang/{18 → 20}/include/larchintrin.h +22 -8
- package/lib/clang/{18 → 20}/include/lasxintrin.h +27 -25
- package/lib/clang/{18 → 20}/include/limits.h +12 -4
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/assert.h +1 -1
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/ctype.h +38 -0
- package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/stdlib.h +8 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/lib/clang/20/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/lib/clang/{18 → 20}/include/lsxintrin.h +27 -25
- package/lib/clang/{18 → 20}/include/lzcntintrin.h +10 -7
- package/lib/clang/20/include/mm3dnow.h +22 -0
- package/lib/clang/{18 → 20}/include/mmintrin.h +285 -239
- package/lib/clang/{18 → 20}/include/module.modulemap +16 -5
- package/lib/clang/20/include/movrs_avx10_2_512intrin.h +98 -0
- package/lib/clang/20/include/movrs_avx10_2intrin.h +174 -0
- package/lib/clang/20/include/movrsintrin.h +59 -0
- package/lib/clang/20/include/nvptxintrin.h +202 -0
- package/lib/clang/{18 → 20}/include/opencl-c-base.h +8 -0
- package/lib/clang/{18 → 20}/include/opencl-c.h +15 -0
- package/lib/clang/{18 → 20}/include/openmp_wrappers/__clang_openmp_device_functions.h +4 -5
- package/lib/clang/{18 → 20}/include/openmp_wrappers/complex_cmath.h +7 -2
- package/lib/clang/{18 → 20}/include/pmmintrin.h +16 -3
- package/lib/clang/{18 → 20}/include/popcntintrin.h +7 -7
- package/lib/clang/{18 → 20}/include/prfchwintrin.h +10 -8
- package/lib/clang/20/include/ptrauth.h +336 -0
- package/lib/clang/20/include/riscv_corev_alu.h +128 -0
- package/lib/clang/{18 → 20}/include/riscv_vector.h +0 -5
- package/lib/clang/20/include/sifive_vector.h +118 -0
- package/lib/clang/20/include/sm4evexintrin.h +32 -0
- package/lib/clang/{18 → 20}/include/smmintrin.h +18 -12
- package/lib/clang/{18 → 20}/include/stdarg.h +15 -19
- package/lib/clang/{18 → 20}/include/stdatomic.h +11 -1
- package/lib/clang/{18 → 20}/include/stdbool.h +5 -0
- package/lib/clang/{18 → 20}/include/stddef.h +38 -22
- package/lib/clang/{18 → 20}/include/stdint.h +5 -0
- package/lib/clang/{18 → 20}/include/stdnoreturn.h +6 -0
- package/lib/clang/{18 → 20}/include/tbmintrin.h +25 -37
- package/lib/clang/{18 → 20}/include/tmmintrin.h +84 -54
- package/lib/clang/{18 → 20}/include/varargs.h +5 -1
- package/lib/clang/{18 → 20}/include/vecintrin.h +1778 -60
- package/lib/clang/{18 → 20}/include/wasm_simd128.h +167 -21
- package/lib/clang/{18 → 20}/include/x86gprintrin.h +7 -14
- package/lib/clang/20/include/x86intrin.h +53 -0
- package/lib/clang/{18 → 20}/include/xmmintrin.h +455 -276
- package/lib/clang/20/include/yvals_core.h +25 -0
- package/lib/clang/20/include/zos_wrappers/builtins.h +18 -0
- package/package.json +6 -6
- package/lib/clang/18/include/avx512erintrin.h +0 -271
- package/lib/clang/18/include/avx512pfintrin.h +0 -92
- package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +0 -624
- package/lib/clang/18/include/mm3dnow.h +0 -157
- package/lib/clang/18/include/sifive_vector.h +0 -16
- package/lib/clang/18/include/x86intrin.h +0 -67
- /package/lib/clang/{18 → 20}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_libdevice_declares.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_runtime_wrapper.h +0 -0
- /package/lib/clang/{18 → 20}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_arg.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_null.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{18 → 20}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{18 → 20}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{18 → 20}/include/ammintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm64intr.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_bf16.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_cde.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_cmse.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_mve.h +0 -0
- /package/lib/clang/{18 → 20}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{18 → 20}/include/armintr.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512bf16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlbf16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlbwintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlfp16intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cet.h +0 -0
- /package/lib/clang/{18 → 20}/include/cetintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clwbintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/clzerointrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/crc32intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{18 → 20}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{18 → 20}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/f16cintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/fma4intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{18 → 20}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{18 → 20}/include/hresetintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/htmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/inttypes.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/stdio.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/string.h +0 -0
- /package/lib/clang/{18 → 20}/include/llvm_libc_wrappers/time.h +0 -0
- /package/lib/clang/{18 → 20}/include/lwpintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/mm_malloc.h +0 -0
- /package/lib/clang/{18 → 20}/include/movdirintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/msa.h +0 -0
- /package/lib/clang/{18 → 20}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/nmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{18 → 20}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{18 → 20}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/pkuintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/raointintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_bitmanip.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_crypto.h +0 -0
- /package/lib/clang/{18 → 20}/include/riscv_ntlh.h +0 -0
- /package/lib/clang/{18 → 20}/include/rtmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/s390intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/serializeintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sgxintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sha512intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/shaintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sm3intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/sm4intrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/stdalign.h +0 -0
- /package/lib/clang/{18 → 20}/include/stdckdint.h +0 -0
- /package/lib/clang/{18 → 20}/include/tgmath.h +0 -0
- /package/lib/clang/{18 → 20}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/uintrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/unwind.h +0 -0
- /package/lib/clang/{18 → 20}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/vadefs.h +0 -0
- /package/lib/clang/{18 → 20}/include/vaesintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{18 → 20}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{18 → 20}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/wmmintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xopintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{18 → 20}/include/xtestintrin.h +0 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/* ===--- amxtransposeintrin.h - AMX_TRANSPOSE 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 <amxtransposeintrin.h> directly; use <immintrin.h> instead."
|
|
12
|
+
#endif /* __IMMINTRIN_H */
|
|
13
|
+
|
|
14
|
+
#ifndef __AMX_TRANSPOSEINTRIN_H
|
|
15
|
+
#define __AMX_TRANSPOSEINTRIN_H
|
|
16
|
+
#ifdef __x86_64__
|
|
17
|
+
|
|
18
|
+
#define __DEFAULT_FN_ATTRS_TRANSPOSE \
|
|
19
|
+
__attribute__((__always_inline__, __nodebug__, __target__("amx-transpose")))
|
|
20
|
+
|
|
21
|
+
#define _tile_2rpntlvwz0(tdst, base, stride) \
|
|
22
|
+
__builtin_ia32_t2rpntlvwz0(tdst, base, stride)
|
|
23
|
+
#define _tile_2rpntlvwz0t1(tdst, base, stride) \
|
|
24
|
+
__builtin_ia32_t2rpntlvwz0t1(tdst, base, stride)
|
|
25
|
+
#define _tile_2rpntlvwz1(tdst, base, stride) \
|
|
26
|
+
__builtin_ia32_t2rpntlvwz1(tdst, base, stride)
|
|
27
|
+
#define _tile_2rpntlvwz1t1(tdst, base, stride) \
|
|
28
|
+
__builtin_ia32_t2rpntlvwz1t1(tdst, base, stride)
|
|
29
|
+
|
|
30
|
+
/// Transpose 32-bit elements from \a src and write the result to \a dst.
|
|
31
|
+
///
|
|
32
|
+
/// \headerfile <immintrin.h>
|
|
33
|
+
///
|
|
34
|
+
/// \code
|
|
35
|
+
/// void _tile_transposed(__tile dst, __tile src);
|
|
36
|
+
/// \endcode
|
|
37
|
+
///
|
|
38
|
+
/// This intrinsic corresponds to the <c> TTRANSPOSED </c> instruction.
|
|
39
|
+
///
|
|
40
|
+
/// \param dst
|
|
41
|
+
/// The destination tile. Max size is 1024 Bytes.
|
|
42
|
+
/// \param src
|
|
43
|
+
/// The source tile. Max size is 1024 Bytes.
|
|
44
|
+
///
|
|
45
|
+
/// \code{.operation}
|
|
46
|
+
///
|
|
47
|
+
/// FOR i := 0 TO (dst.rows-1)
|
|
48
|
+
/// tmp[511:0] := 0
|
|
49
|
+
/// FOR j := 0 TO (dst.colsb/4-1)
|
|
50
|
+
/// tmp.dword[j] := src.row[j].dword[i]
|
|
51
|
+
/// ENDFOR
|
|
52
|
+
/// dst.row[i] := tmp
|
|
53
|
+
/// ENDFOR
|
|
54
|
+
///
|
|
55
|
+
/// zero_upper_rows(dst, dst.rows)
|
|
56
|
+
/// zero_tileconfig_start()
|
|
57
|
+
/// \endcode
|
|
58
|
+
#define _tile_transposed(dst, src) __builtin_ia32_ttransposed(dst, src)
|
|
59
|
+
|
|
60
|
+
static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz0_internal(
|
|
61
|
+
unsigned short row, unsigned short col0, unsigned short col1,
|
|
62
|
+
_tile1024i *dst0, _tile1024i *dst1, const void *base,
|
|
63
|
+
__SIZE_TYPE__ stride) {
|
|
64
|
+
// Use __tile1024i_1024a* to escape the alignment check in
|
|
65
|
+
// clang/test/Headers/x86-intrinsics-headers-clean.cpp
|
|
66
|
+
__builtin_ia32_t2rpntlvwz0_internal(row, col0, col1, (_tile1024i_1024a *)dst0,
|
|
67
|
+
(_tile1024i_1024a *)dst1, base,
|
|
68
|
+
(__SIZE_TYPE__)(stride));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz0t1_internal(
|
|
72
|
+
unsigned short row, unsigned short col0, unsigned short col1,
|
|
73
|
+
_tile1024i *dst0, _tile1024i *dst1, const void *base,
|
|
74
|
+
__SIZE_TYPE__ stride) {
|
|
75
|
+
__builtin_ia32_t2rpntlvwz0t1_internal(
|
|
76
|
+
row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
|
|
77
|
+
(__SIZE_TYPE__)(stride));
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz1_internal(
|
|
81
|
+
unsigned short row, unsigned short col0, unsigned short col1,
|
|
82
|
+
_tile1024i *dst0, _tile1024i *dst1, const void *base,
|
|
83
|
+
__SIZE_TYPE__ stride) {
|
|
84
|
+
__builtin_ia32_t2rpntlvwz1_internal(row, col0, col1, (_tile1024i_1024a *)dst0,
|
|
85
|
+
(_tile1024i_1024a *)dst1, base,
|
|
86
|
+
(__SIZE_TYPE__)(stride));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
static __inline__ void __DEFAULT_FN_ATTRS_TRANSPOSE _tile_2rpntlvwz1t1_internal(
|
|
90
|
+
unsigned short row, unsigned short col0, unsigned short col1,
|
|
91
|
+
_tile1024i *dst0, _tile1024i *dst1, const void *base,
|
|
92
|
+
__SIZE_TYPE__ stride) {
|
|
93
|
+
__builtin_ia32_t2rpntlvwz1t1_internal(
|
|
94
|
+
row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
|
|
95
|
+
(__SIZE_TYPE__)(stride));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// This is internal intrinsic. C/C++ user should avoid calling it directly.
|
|
99
|
+
static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TRANSPOSE
|
|
100
|
+
_tile_transposed_internal(unsigned short m, unsigned short n, _tile1024i src) {
|
|
101
|
+
return __builtin_ia32_ttransposed_internal(m, n, src);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/// Converts a pair of tiles from memory into VNNI format, and places the
|
|
105
|
+
/// results in a pair of destinations specified by dst. The pair of tiles
|
|
106
|
+
/// in memory is specified via a tsib; the second tile is after the first
|
|
107
|
+
/// one, separated by the same stride that separates each row.
|
|
108
|
+
/// The tile configuration for the destination tiles indicates the amount
|
|
109
|
+
/// of data to read from memory. The instruction will load a number of rows
|
|
110
|
+
/// that is equal to twice the number of rows in tmm1. The size of each row
|
|
111
|
+
/// is equal to the average width of the destination tiles. If the second
|
|
112
|
+
/// tile is configured with zero rows and columns, only the first tile will
|
|
113
|
+
/// be written.
|
|
114
|
+
/// Provides a hint to the implementation that the data will likely not be
|
|
115
|
+
/// reused in the near future and the data caching can be optimized.
|
|
116
|
+
///
|
|
117
|
+
/// \headerfile <immintrin.h>
|
|
118
|
+
///
|
|
119
|
+
/// This intrinsic corresponds to the <c> T2RPNTLVWZ0 </c> instruction.
|
|
120
|
+
///
|
|
121
|
+
/// \param dst0
|
|
122
|
+
/// First tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
123
|
+
/// \param dst1
|
|
124
|
+
/// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
125
|
+
/// \param base
|
|
126
|
+
/// A pointer to base address.
|
|
127
|
+
/// \param stride
|
|
128
|
+
/// The stride between the rows' data to be loaded in memory.
|
|
129
|
+
__DEFAULT_FN_ATTRS_TRANSPOSE
|
|
130
|
+
static void __tile_2rpntlvwz0(__tile1024i *dst0, __tile1024i *dst1,
|
|
131
|
+
const void *base, __SIZE_TYPE__ stride) {
|
|
132
|
+
_tile_2rpntlvwz0_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
|
|
133
|
+
&dst1->tile, base, stride);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// Converts a pair of tiles from memory into VNNI format, and places the
|
|
137
|
+
/// results in a pair of destinations specified by dst. The pair of tiles
|
|
138
|
+
/// in memory is specified via a tsib; the second tile is after the first
|
|
139
|
+
/// one, separated by the same stride that separates each row.
|
|
140
|
+
/// The tile configuration for the destination tiles indicates the amount
|
|
141
|
+
/// of data to read from memory. The instruction will load a number of rows
|
|
142
|
+
/// that is equal to twice the number of rows in tmm1. The size of each row
|
|
143
|
+
/// is equal to the average width of the destination tiles. If the second
|
|
144
|
+
/// tile is configured with zero rows and columns, only the first tile will
|
|
145
|
+
/// be written.
|
|
146
|
+
///
|
|
147
|
+
/// \headerfile <immintrin.h>
|
|
148
|
+
///
|
|
149
|
+
/// This intrinsic corresponds to the <c> T2RPNTLVWZ0T1 </c> instruction.
|
|
150
|
+
///
|
|
151
|
+
/// \param dst0
|
|
152
|
+
/// First tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
153
|
+
/// \param dst1
|
|
154
|
+
/// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
155
|
+
/// \param base
|
|
156
|
+
/// A pointer to base address.
|
|
157
|
+
/// \param stride
|
|
158
|
+
/// The stride between the rows' data to be loaded in memory.
|
|
159
|
+
__DEFAULT_FN_ATTRS_TRANSPOSE
|
|
160
|
+
static void __tile_2rpntlvwz0t1(__tile1024i *dst0, __tile1024i *dst1,
|
|
161
|
+
const void *base, __SIZE_TYPE__ stride) {
|
|
162
|
+
_tile_2rpntlvwz0t1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
|
|
163
|
+
&dst1->tile, base, stride);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/// Converts a pair of tiles from memory into VNNI format, and places the
|
|
167
|
+
/// results in a pair of destinations specified by dst. The pair of tiles
|
|
168
|
+
/// in memory is specified via a tsib; the second tile is after the first
|
|
169
|
+
/// one, separated by the same stride that separates each row.
|
|
170
|
+
/// The tile configuration for the destination tiles indicates the amount
|
|
171
|
+
/// of data to read from memory. The instruction will load a number of rows
|
|
172
|
+
/// that is equal to twice the number of rows in tmm1. The size of each row
|
|
173
|
+
/// is equal to the average width of the destination tiles. If the second
|
|
174
|
+
/// tile is configured with zero rows and columns, only the first tile will
|
|
175
|
+
/// be written. The last row will be not be read from memory but instead
|
|
176
|
+
/// filled with zeros.
|
|
177
|
+
/// Provides a hint to the implementation that the data will likely not be
|
|
178
|
+
/// reused in the near future and the data caching can be optimized.
|
|
179
|
+
///
|
|
180
|
+
/// \headerfile <immintrin.h>
|
|
181
|
+
///
|
|
182
|
+
/// This intrinsic corresponds to the <c> T2RPNTLVWZ1 </c> instruction.
|
|
183
|
+
///
|
|
184
|
+
/// \param dst0
|
|
185
|
+
/// First tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
186
|
+
/// \param dst1
|
|
187
|
+
/// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
188
|
+
/// \param base
|
|
189
|
+
/// A pointer to base address.
|
|
190
|
+
/// \param stride
|
|
191
|
+
/// The stride between the rows' data to be loaded in memory.
|
|
192
|
+
__DEFAULT_FN_ATTRS_TRANSPOSE
|
|
193
|
+
static void __tile_2rpntlvwz1(__tile1024i *dst0, __tile1024i *dst1,
|
|
194
|
+
const void *base, __SIZE_TYPE__ stride) {
|
|
195
|
+
_tile_2rpntlvwz1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
|
|
196
|
+
&dst1->tile, base, stride);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/// Converts a pair of tiles from memory into VNNI format, and places the
|
|
200
|
+
/// results in a pair of destinations specified by dst. The pair of tiles
|
|
201
|
+
/// in memory is specified via a tsib; the second tile is after the first
|
|
202
|
+
/// one, separated by the same stride that separates each row.
|
|
203
|
+
/// The tile configuration for the destination tiles indicates the amount
|
|
204
|
+
/// of data to read from memory. The instruction will load a number of rows
|
|
205
|
+
/// that is equal to twice the number of rows in tmm1. The size of each row
|
|
206
|
+
/// is equal to the average width of the destination tiles. If the second
|
|
207
|
+
/// tile is configured with zero rows and columns, only the first tile will
|
|
208
|
+
/// be written. The last row will be not be read from memory but instead
|
|
209
|
+
/// filled with zeros.
|
|
210
|
+
/// Provides a hint to the implementation that the data will likely not be
|
|
211
|
+
/// reused in the near future and the data caching can be optimized.
|
|
212
|
+
///
|
|
213
|
+
/// \headerfile <immintrin.h>
|
|
214
|
+
///
|
|
215
|
+
/// This intrinsic corresponds to the <c> T2RPNTLVWZ1T1 </c> instruction.
|
|
216
|
+
///
|
|
217
|
+
/// \param dst0
|
|
218
|
+
/// First tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
219
|
+
/// \param dst1
|
|
220
|
+
/// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
|
|
221
|
+
/// \param base
|
|
222
|
+
/// A pointer to base address.
|
|
223
|
+
/// \param stride
|
|
224
|
+
/// The stride between the rows' data to be loaded in memory.
|
|
225
|
+
__DEFAULT_FN_ATTRS_TRANSPOSE
|
|
226
|
+
static void __tile_2rpntlvwz1t1(__tile1024i *dst0, __tile1024i *dst1,
|
|
227
|
+
const void *base, __SIZE_TYPE__ stride) {
|
|
228
|
+
_tile_2rpntlvwz1t1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
|
|
229
|
+
&dst1->tile, base, stride);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/// Transpose 32-bit elements from src and write the result to dst.
|
|
233
|
+
///
|
|
234
|
+
/// \headerfile <immintrin.h>
|
|
235
|
+
///
|
|
236
|
+
/// This intrinsic corresponds to the <c> TTRANSPOSED </c> instruction.
|
|
237
|
+
///
|
|
238
|
+
/// \param dst
|
|
239
|
+
/// The destination tile. Max size is 1024 Bytes.
|
|
240
|
+
/// \param src
|
|
241
|
+
/// The source tile. Max size is 1024 Bytes.
|
|
242
|
+
__DEFAULT_FN_ATTRS_TRANSPOSE
|
|
243
|
+
static void __tile_transposed(__tile1024i *dst, __tile1024i src) {
|
|
244
|
+
dst->tile = _tile_transposed_internal(dst->row, dst->col, src.tile);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
#endif /* __x86_64__ */
|
|
248
|
+
#endif /* __AMX_TRANSPOSEINTRIN_H */
|
|
@@ -75,6 +75,14 @@ static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(v
|
|
|
75
75
|
#define __dbg(t) __builtin_arm_dbg(t)
|
|
76
76
|
#endif
|
|
77
77
|
|
|
78
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
79
|
+
#define _CHKFEAT_GCS 1
|
|
80
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
81
|
+
__chkfeat(uint64_t __features) {
|
|
82
|
+
return __builtin_arm_chkfeat(__features) ^ __features;
|
|
83
|
+
}
|
|
84
|
+
#endif
|
|
85
|
+
|
|
78
86
|
/* 7.5 Swap */
|
|
79
87
|
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
80
88
|
__swp(uint32_t __x, volatile uint32_t *__p) {
|
|
@@ -109,7 +117,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
|
|
|
109
117
|
#endif
|
|
110
118
|
|
|
111
119
|
/* 7.7 NOP */
|
|
112
|
-
#if !defined(_MSC_VER) || !defined(__aarch64__)
|
|
120
|
+
#if !defined(_MSC_VER) || (!defined(__aarch64__) && !defined(__arm64ec__))
|
|
113
121
|
static __inline__ void __attribute__((__always_inline__, __nodebug__)) __nop(void) {
|
|
114
122
|
__builtin_arm_nop();
|
|
115
123
|
}
|
|
@@ -256,28 +264,28 @@ __rbitl(unsigned long __t) {
|
|
|
256
264
|
}
|
|
257
265
|
|
|
258
266
|
/* 8.3 16-bit multiplications */
|
|
259
|
-
#if defined(
|
|
260
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
267
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
268
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
261
269
|
__smulbb(int32_t __a, int32_t __b) {
|
|
262
270
|
return __builtin_arm_smulbb(__a, __b);
|
|
263
271
|
}
|
|
264
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
272
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
265
273
|
__smulbt(int32_t __a, int32_t __b) {
|
|
266
274
|
return __builtin_arm_smulbt(__a, __b);
|
|
267
275
|
}
|
|
268
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
276
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
269
277
|
__smultb(int32_t __a, int32_t __b) {
|
|
270
278
|
return __builtin_arm_smultb(__a, __b);
|
|
271
279
|
}
|
|
272
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
280
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
273
281
|
__smultt(int32_t __a, int32_t __b) {
|
|
274
282
|
return __builtin_arm_smultt(__a, __b);
|
|
275
283
|
}
|
|
276
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
284
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
277
285
|
__smulwb(int32_t __a, int32_t __b) {
|
|
278
286
|
return __builtin_arm_smulwb(__a, __b);
|
|
279
287
|
}
|
|
280
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
288
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
281
289
|
__smulwt(int32_t __a, int32_t __b) {
|
|
282
290
|
return __builtin_arm_smulwt(__a, __b);
|
|
283
291
|
}
|
|
@@ -296,46 +304,46 @@ __smulwt(int32_t __a, int32_t __b) {
|
|
|
296
304
|
#endif
|
|
297
305
|
|
|
298
306
|
/* 8.4.2 Saturating addition and subtraction intrinsics */
|
|
299
|
-
#if defined(
|
|
300
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
307
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
308
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
301
309
|
__qadd(int32_t __t, int32_t __v) {
|
|
302
310
|
return __builtin_arm_qadd(__t, __v);
|
|
303
311
|
}
|
|
304
312
|
|
|
305
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
313
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
306
314
|
__qsub(int32_t __t, int32_t __v) {
|
|
307
315
|
return __builtin_arm_qsub(__t, __v);
|
|
308
316
|
}
|
|
309
317
|
|
|
310
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
318
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
311
319
|
__qdbl(int32_t __t) {
|
|
312
320
|
return __builtin_arm_qadd(__t, __t);
|
|
313
321
|
}
|
|
314
322
|
#endif
|
|
315
323
|
|
|
316
|
-
/* 8.4.3
|
|
317
|
-
#if defined(
|
|
318
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
324
|
+
/* 8.4.3 Accumulating multiplications */
|
|
325
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
326
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
319
327
|
__smlabb(int32_t __a, int32_t __b, int32_t __c) {
|
|
320
328
|
return __builtin_arm_smlabb(__a, __b, __c);
|
|
321
329
|
}
|
|
322
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
330
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
323
331
|
__smlabt(int32_t __a, int32_t __b, int32_t __c) {
|
|
324
332
|
return __builtin_arm_smlabt(__a, __b, __c);
|
|
325
333
|
}
|
|
326
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
334
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
327
335
|
__smlatb(int32_t __a, int32_t __b, int32_t __c) {
|
|
328
336
|
return __builtin_arm_smlatb(__a, __b, __c);
|
|
329
337
|
}
|
|
330
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
338
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
331
339
|
__smlatt(int32_t __a, int32_t __b, int32_t __c) {
|
|
332
340
|
return __builtin_arm_smlatt(__a, __b, __c);
|
|
333
341
|
}
|
|
334
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
342
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
335
343
|
__smlawb(int32_t __a, int32_t __b, int32_t __c) {
|
|
336
344
|
return __builtin_arm_smlawb(__a, __b, __c);
|
|
337
345
|
}
|
|
338
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
346
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
339
347
|
__smlawt(int32_t __a, int32_t __b, int32_t __c) {
|
|
340
348
|
return __builtin_arm_smlawt(__a, __b, __c);
|
|
341
349
|
}
|
|
@@ -545,7 +553,7 @@ __usub16(uint16x2_t __a, uint16x2_t __b) {
|
|
|
545
553
|
}
|
|
546
554
|
#endif
|
|
547
555
|
|
|
548
|
-
/* 8.5.10 Parallel 16-bit
|
|
556
|
+
/* 8.5.10 Parallel 16-bit multiplication */
|
|
549
557
|
#if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
|
|
550
558
|
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
551
559
|
__smlad(int16x2_t __a, int16x2_t __b, int32_t __c) {
|
|
@@ -613,8 +621,6 @@ __rintnf(float __a) {
|
|
|
613
621
|
#endif
|
|
614
622
|
|
|
615
623
|
/* 8.8 CRC32 intrinsics */
|
|
616
|
-
#if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
|
|
617
|
-
(defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
|
|
618
624
|
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
619
625
|
__crc32b(uint32_t __a, uint8_t __b) {
|
|
620
626
|
return __builtin_arm_crc32b(__a, __b);
|
|
@@ -654,7 +660,6 @@ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target
|
|
|
654
660
|
__crc32cd(uint32_t __a, uint64_t __b) {
|
|
655
661
|
return __builtin_arm_crc32cd(__a, __b);
|
|
656
662
|
}
|
|
657
|
-
#endif
|
|
658
663
|
|
|
659
664
|
/* 8.6 Floating-point data-processing intrinsics */
|
|
660
665
|
/* Armv8.3-A Javascript conversion intrinsic */
|
|
@@ -748,7 +753,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
|
|
|
748
753
|
#define __arm_wsrf(sysreg, v) __arm_wsr(sysreg, __builtin_bit_cast(uint32_t, v))
|
|
749
754
|
#define __arm_wsrf64(sysreg, v) __arm_wsr64(sysreg, __builtin_bit_cast(uint64_t, v))
|
|
750
755
|
|
|
751
|
-
/* 10.3
|
|
756
|
+
/* 10.3 MTE intrinsics */
|
|
752
757
|
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
753
758
|
#define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask)
|
|
754
759
|
#define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset)
|
|
@@ -757,7 +762,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
|
|
|
757
762
|
#define __arm_mte_set_tag(__ptr) __builtin_arm_stg(__ptr)
|
|
758
763
|
#define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
|
|
759
764
|
|
|
760
|
-
/* 18
|
|
765
|
+
/* 18 memcpy family of operations intrinsics - MOPS */
|
|
761
766
|
#define __arm_mops_memset_tag(__tagged_address, __value, __size) \
|
|
762
767
|
__builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
|
|
763
768
|
#endif
|
|
@@ -855,6 +860,24 @@ __rndrrs(uint64_t *__p) {
|
|
|
855
860
|
}
|
|
856
861
|
#endif
|
|
857
862
|
|
|
863
|
+
/* 11.2 Guarded Control Stack intrinsics */
|
|
864
|
+
#if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
|
|
865
|
+
static __inline__ void * __attribute__((__always_inline__, __nodebug__))
|
|
866
|
+
__gcspr() {
|
|
867
|
+
return (void *)__builtin_arm_rsr64("gcspr_el0");
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("gcs")))
|
|
871
|
+
__gcspopm() {
|
|
872
|
+
return __builtin_arm_gcspopm(0);
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
static __inline__ const void * __attribute__((__always_inline__, __nodebug__, target("gcs")))
|
|
876
|
+
__gcsss(const void *__stack) {
|
|
877
|
+
return __builtin_arm_gcsss(__stack);
|
|
878
|
+
}
|
|
879
|
+
#endif
|
|
880
|
+
|
|
858
881
|
#if defined(__cplusplus)
|
|
859
882
|
}
|
|
860
883
|
#endif
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
typedef __fp16 float16_t;
|
|
30
30
|
#define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))
|
|
31
31
|
|
|
32
|
-
#if defined(__aarch64__)
|
|
32
|
+
#if defined(__aarch64__) || defined(__arm64ec__)
|
|
33
33
|
#define vabdh_f16(__p0, __p1) __extension__ ({ \
|
|
34
34
|
float16_t __ret; \
|
|
35
35
|
float16_t __s0 = __p0; \
|