@cpp-linter/clang-tidy-win32-x64 19.1.0 → 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.exe +2 -2
- package/lib/clang/{19 → 20}/include/__clang_cuda_device_functions.h +14 -0
- package/lib/clang/{19 → 20}/include/__clang_cuda_math.h +5 -0
- package/lib/clang/{19 → 20}/include/__clang_hip_cmath.h +6 -1
- package/lib/clang/{19 → 20}/include/__clang_hip_math.h +5 -0
- package/lib/clang/{19 → 20}/include/adcintrin.h +5 -0
- package/lib/clang/{19 → 20}/include/adxintrin.h +5 -0
- package/lib/clang/{19 → 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/{19 → 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/{19 → 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/{19 → 20}/include/arm_acle.h +18 -21
- package/lib/clang/{19 → 20}/include/arm_neon.h +3587 -1696
- package/lib/clang/{19 → 20}/include/arm_sme.h +322 -94
- package/lib/clang/{19 → 20}/include/arm_sve.h +1105 -84
- package/lib/clang/{19 → 20}/include/arm_vector_types.h +87 -0
- 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/{19 → 20}/include/avx2intrin.h +9 -0
- package/lib/clang/{19 → 20}/include/avx512bitalgintrin.h +2 -2
- package/lib/clang/{19 → 20}/include/avx512fintrin.h +22 -14
- package/lib/clang/{19 → 20}/include/avx512vlbitalgintrin.h +4 -4
- package/lib/clang/{19 → 20}/include/avx512vpopcntdqintrin.h +12 -4
- package/lib/clang/{19 → 20}/include/avx512vpopcntdqvlintrin.h +16 -8
- package/lib/clang/{19 → 20}/include/avxintrin.h +30 -16
- package/lib/clang/{19 → 20}/include/avxvnniint16intrin.h +36 -77
- package/lib/clang/{19 → 20}/include/avxvnniint8intrin.h +36 -77
- package/lib/clang/{19 → 20}/include/bmi2intrin.h +15 -17
- package/lib/clang/{19 → 20}/include/bmiintrin.h +31 -37
- package/lib/clang/{19 → 20}/include/cmpccxaddintrin.h +1 -1
- package/lib/clang/{19 → 20}/include/cpuid.h +12 -11
- package/lib/clang/{19 → 20}/include/cuda_wrappers/cmath +4 -0
- package/lib/clang/{19 → 20}/include/cuda_wrappers/new +2 -0
- package/lib/clang/{19 → 20}/include/emmintrin.h +141 -107
- package/lib/clang/{19 → 20}/include/gfniintrin.h +32 -10
- package/lib/clang/20/include/gpuintrin.h +224 -0
- package/lib/clang/{19 → 20}/include/hexagon_types.h +8 -4
- package/lib/clang/{19 → 20}/include/hlsl/hlsl_basic_types.h +47 -1
- package/lib/clang/20/include/hlsl/hlsl_detail.h +84 -0
- package/lib/clang/{19 → 20}/include/hlsl/hlsl_intrinsics.h +1199 -82
- package/lib/clang/{19 → 20}/include/hlsl.h +11 -0
- package/lib/clang/{19 → 20}/include/hvx_hexagon_protos.h +427 -0
- package/lib/clang/{19 → 20}/include/immintrin.h +87 -3
- package/lib/clang/{19 → 20}/include/intrin.h +20 -10
- package/lib/clang/{19 → 20}/include/intrin0.h +10 -1
- package/lib/clang/{19 → 20}/include/larchintrin.h +22 -8
- package/lib/clang/{19 → 20}/include/lasxintrin.h +27 -25
- package/lib/clang/{19 → 20}/include/limits.h +7 -4
- package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/ctype.h +38 -0
- package/lib/clang/{19 → 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/{19 → 20}/include/lsxintrin.h +27 -25
- package/lib/clang/{19 → 20}/include/lzcntintrin.h +10 -7
- package/lib/clang/{19 → 20}/include/mmintrin.h +209 -155
- package/lib/clang/{19 → 20}/include/module.modulemap +2 -4
- 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/{19 → 20}/include/opencl-c-base.h +4 -0
- package/lib/clang/{19 → 20}/include/openmp_wrappers/__clang_openmp_device_functions.h +4 -5
- package/lib/clang/{19 → 20}/include/openmp_wrappers/complex_cmath.h +7 -2
- package/lib/clang/{19 → 20}/include/pmmintrin.h +16 -3
- package/lib/clang/{19 → 20}/include/popcntintrin.h +7 -7
- package/lib/clang/{19 → 20}/include/ptrauth.h +6 -0
- package/lib/clang/20/include/riscv_corev_alu.h +128 -0
- package/lib/clang/{19 → 20}/include/riscv_vector.h +0 -1
- package/lib/clang/20/include/sm4evexintrin.h +32 -0
- package/lib/clang/{19 → 20}/include/smmintrin.h +6 -0
- package/lib/clang/{19 → 20}/include/stdalign.h +0 -5
- package/lib/clang/{19 → 20}/include/tbmintrin.h +25 -37
- package/lib/clang/{19 → 20}/include/tmmintrin.h +64 -38
- package/lib/clang/{19 → 20}/include/vecintrin.h +1778 -60
- package/lib/clang/{19 → 20}/include/wasm_simd128.h +167 -21
- package/lib/clang/{19 → 20}/include/xmmintrin.h +170 -177
- package/package.json +6 -6
- /package/lib/clang/{19 → 20}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_libdevice_declares.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_runtime_wrapper.h +0 -0
- /package/lib/clang/{19 → 20}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_header_macro.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_arg.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_header_macro.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_null.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{19 → 20}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{19 → 20}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{19 → 20}/include/ammintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm64intr.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_bf16.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_cde.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_cmse.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_fp16.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_mve.h +0 -0
- /package/lib/clang/{19 → 20}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{19 → 20}/include/armintr.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512bf16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512fp16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlbf16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlbwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlfp16intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/builtins.h +0 -0
- /package/lib/clang/{19 → 20}/include/cet.h +0 -0
- /package/lib/clang/{19 → 20}/include/cetintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clwbintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/clzerointrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/crc32intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{19 → 20}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{19 → 20}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/f16cintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/float.h +0 -0
- /package/lib/clang/{19 → 20}/include/fma4intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/fmaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{19 → 20}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{19 → 20}/include/hresetintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/htmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ia32intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/inttypes.h +0 -0
- /package/lib/clang/{19 → 20}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/iso646.h +0 -0
- /package/lib/clang/{19 → 20}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/assert.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/inttypes.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/stdio.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/string.h +0 -0
- /package/lib/clang/{19 → 20}/include/llvm_libc_wrappers/time.h +0 -0
- /package/lib/clang/{19 → 20}/include/lwpintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/mm3dnow.h +0 -0
- /package/lib/clang/{19 → 20}/include/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 20}/include/movdirintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/msa.h +0 -0
- /package/lib/clang/{19 → 20}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/opencl-c.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{19 → 20}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{19 → 20}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/pkuintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/raointintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_bitmanip.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_crypto.h +0 -0
- /package/lib/clang/{19 → 20}/include/riscv_ntlh.h +0 -0
- /package/lib/clang/{19 → 20}/include/rtmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/s390intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/serializeintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sgxintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sha512intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/shaintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sifive_vector.h +0 -0
- /package/lib/clang/{19 → 20}/include/sm3intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/sm4intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdarg.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdatomic.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdbool.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdckdint.h +0 -0
- /package/lib/clang/{19 → 20}/include/stddef.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdint.h +0 -0
- /package/lib/clang/{19 → 20}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{19 → 20}/include/tgmath.h +0 -0
- /package/lib/clang/{19 → 20}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/uintrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/unwind.h +0 -0
- /package/lib/clang/{19 → 20}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/vadefs.h +0 -0
- /package/lib/clang/{19 → 20}/include/vaesintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/varargs.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{19 → 20}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{19 → 20}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/wmmintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/x86gprintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/x86intrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xopintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/xtestintrin.h +0 -0
- /package/lib/clang/{19 → 20}/include/yvals_core.h +0 -0
- /package/lib/clang/{19 → 20}/include/zos_wrappers/builtins.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 */
|
|
@@ -264,28 +264,28 @@ __rbitl(unsigned long __t) {
|
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
/* 8.3 16-bit multiplications */
|
|
267
|
-
#if defined(
|
|
268
|
-
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")))
|
|
269
269
|
__smulbb(int32_t __a, int32_t __b) {
|
|
270
270
|
return __builtin_arm_smulbb(__a, __b);
|
|
271
271
|
}
|
|
272
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
272
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
273
273
|
__smulbt(int32_t __a, int32_t __b) {
|
|
274
274
|
return __builtin_arm_smulbt(__a, __b);
|
|
275
275
|
}
|
|
276
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
276
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
277
277
|
__smultb(int32_t __a, int32_t __b) {
|
|
278
278
|
return __builtin_arm_smultb(__a, __b);
|
|
279
279
|
}
|
|
280
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
280
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
281
281
|
__smultt(int32_t __a, int32_t __b) {
|
|
282
282
|
return __builtin_arm_smultt(__a, __b);
|
|
283
283
|
}
|
|
284
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
284
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
285
285
|
__smulwb(int32_t __a, int32_t __b) {
|
|
286
286
|
return __builtin_arm_smulwb(__a, __b);
|
|
287
287
|
}
|
|
288
|
-
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
|
|
288
|
+
static __inline__ int32_t __attribute__((__always_inline__,__nodebug__, target("dsp")))
|
|
289
289
|
__smulwt(int32_t __a, int32_t __b) {
|
|
290
290
|
return __builtin_arm_smulwt(__a, __b);
|
|
291
291
|
}
|
|
@@ -304,46 +304,46 @@ __smulwt(int32_t __a, int32_t __b) {
|
|
|
304
304
|
#endif
|
|
305
305
|
|
|
306
306
|
/* 8.4.2 Saturating addition and subtraction intrinsics */
|
|
307
|
-
#if defined(
|
|
308
|
-
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")))
|
|
309
309
|
__qadd(int32_t __t, int32_t __v) {
|
|
310
310
|
return __builtin_arm_qadd(__t, __v);
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
313
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
314
314
|
__qsub(int32_t __t, int32_t __v) {
|
|
315
315
|
return __builtin_arm_qsub(__t, __v);
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
318
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
319
319
|
__qdbl(int32_t __t) {
|
|
320
320
|
return __builtin_arm_qadd(__t, __t);
|
|
321
321
|
}
|
|
322
322
|
#endif
|
|
323
323
|
|
|
324
324
|
/* 8.4.3 Accumulating multiplications */
|
|
325
|
-
#if defined(
|
|
326
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
325
|
+
#if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
|
|
326
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
327
327
|
__smlabb(int32_t __a, int32_t __b, int32_t __c) {
|
|
328
328
|
return __builtin_arm_smlabb(__a, __b, __c);
|
|
329
329
|
}
|
|
330
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
330
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
331
331
|
__smlabt(int32_t __a, int32_t __b, int32_t __c) {
|
|
332
332
|
return __builtin_arm_smlabt(__a, __b, __c);
|
|
333
333
|
}
|
|
334
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
334
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
335
335
|
__smlatb(int32_t __a, int32_t __b, int32_t __c) {
|
|
336
336
|
return __builtin_arm_smlatb(__a, __b, __c);
|
|
337
337
|
}
|
|
338
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
338
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
339
339
|
__smlatt(int32_t __a, int32_t __b, int32_t __c) {
|
|
340
340
|
return __builtin_arm_smlatt(__a, __b, __c);
|
|
341
341
|
}
|
|
342
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
342
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
343
343
|
__smlawb(int32_t __a, int32_t __b, int32_t __c) {
|
|
344
344
|
return __builtin_arm_smlawb(__a, __b, __c);
|
|
345
345
|
}
|
|
346
|
-
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
|
|
346
|
+
static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("dsp")))
|
|
347
347
|
__smlawt(int32_t __a, int32_t __b, int32_t __c) {
|
|
348
348
|
return __builtin_arm_smlawt(__a, __b, __c);
|
|
349
349
|
}
|
|
@@ -621,8 +621,6 @@ __rintnf(float __a) {
|
|
|
621
621
|
#endif
|
|
622
622
|
|
|
623
623
|
/* 8.8 CRC32 intrinsics */
|
|
624
|
-
#if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
|
|
625
|
-
(defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
|
|
626
624
|
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
|
|
627
625
|
__crc32b(uint32_t __a, uint8_t __b) {
|
|
628
626
|
return __builtin_arm_crc32b(__a, __b);
|
|
@@ -662,7 +660,6 @@ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target
|
|
|
662
660
|
__crc32cd(uint32_t __a, uint64_t __b) {
|
|
663
661
|
return __builtin_arm_crc32cd(__a, __b);
|
|
664
662
|
}
|
|
665
|
-
#endif
|
|
666
663
|
|
|
667
664
|
/* 8.6 Floating-point data-processing intrinsics */
|
|
668
665
|
/* Armv8.3-A Javascript conversion intrinsic */
|