@cpp-linter/clang-tidy-win32-x64 21.1.0 → 23.1.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/23/include/__clang_cuda_complex_builtins.h +236 -0
- package/lib/clang/{21 → 23}/include/__clang_cuda_device_functions.h +1 -1
- package/lib/clang/{21 → 23}/include/__clang_cuda_intrinsics.h +207 -226
- package/lib/clang/{21 → 23}/include/__clang_cuda_math_forward_declares.h +5 -0
- package/lib/clang/{21 → 23}/include/__clang_cuda_runtime_wrapper.h +27 -5
- package/lib/clang/23/include/__clang_gpu_builtin_vars.h +71 -0
- package/lib/clang/23/include/__clang_gpu_device_functions.h +411 -0
- package/lib/clang/23/include/__clang_gpu_intrinsics.h +242 -0
- package/lib/clang/{21 → 23}/include/__clang_hip_libdevice_declares.h +14 -121
- package/lib/clang/{21 → 23}/include/__clang_hip_math.h +5 -5
- package/lib/clang/{21 → 23}/include/__clang_hip_runtime_wrapper.h +9 -1
- package/lib/clang/{21 → 23}/include/__clang_spirv_builtins.h +12 -12
- package/lib/clang/23/include/__clang_spirv_libdevice_declares.h +170 -0
- package/lib/clang/23/include/__clang_spirv_math.h +719 -0
- package/lib/clang/{21/include/float.h → 23/include/__float_float.h} +13 -24
- package/lib/clang/23/include/__float_header_macro.h +12 -0
- package/lib/clang/23/include/__float_infinity_nan.h +20 -0
- package/lib/clang/{21 → 23}/include/altivec.h +79 -9
- package/lib/clang/{21 → 23}/include/amdgpuintrin.h +2 -29
- package/lib/clang/23/include/amdhsa_abi.h +83 -0
- package/lib/clang/23/include/amo.h +220 -0
- package/lib/clang/{21 → 23}/include/amxavx512intrin.h +215 -1
- package/lib/clang/{21 → 23}/include/amxintrin.h +0 -2
- package/lib/clang/{21 → 23}/include/andes_vector.h +5 -0
- package/lib/clang/23/include/arm64_neon.h +21 -0
- package/lib/clang/{21 → 23}/include/arm64intr.h +10 -0
- package/lib/clang/{21 → 23}/include/arm_acle.h +38 -27
- package/lib/clang/{21 → 23}/include/arm_neon.h +4140 -3836
- package/lib/clang/{21 → 23}/include/arm_sme.h +20 -8
- package/lib/clang/{21 → 23}/include/arm_sve.h +4582 -3782
- package/lib/clang/{21 → 23}/include/avx10_2_512bf16intrin.h +19 -12
- package/lib/clang/{21 → 23}/include/avx10_2_512convertintrin.h +1 -1
- package/lib/clang/{21 → 23}/include/avx10_2_512niintrin.h +25 -25
- package/lib/clang/{21 → 23}/include/avx10_2_512satcvtdsintrin.h +1 -1
- package/lib/clang/{21 → 23}/include/avx10_2bf16intrin.h +54 -45
- package/lib/clang/{21 → 23}/include/avx10_2convertintrin.h +2 -2
- package/lib/clang/{21 → 23}/include/avx10_2copyintrin.h +1 -1
- package/lib/clang/{21 → 23}/include/avx10_2niintrin.h +2 -2
- package/lib/clang/{21 → 23}/include/avx10_2satcvtdsintrin.h +2 -2
- package/lib/clang/{21 → 23}/include/avx2intrin.h +279 -382
- package/lib/clang/{21 → 23}/include/avx512bf16intrin.h +25 -16
- package/lib/clang/{21 → 23}/include/avx512bitalgintrin.h +19 -30
- package/lib/clang/23/include/avx512bmmintrin.h +174 -0
- package/lib/clang/23/include/avx512bmmvlintrin.h +245 -0
- package/lib/clang/{21 → 23}/include/avx512bwintrin.h +405 -534
- package/lib/clang/23/include/avx512cdintrin.h +112 -0
- package/lib/clang/{21 → 23}/include/avx512dqintrin.h +132 -161
- package/lib/clang/{21 → 23}/include/avx512fintrin.h +1049 -1485
- package/lib/clang/{21 → 23}/include/avx512fp16intrin.h +124 -128
- package/lib/clang/23/include/avx512ifmaintrin.h +68 -0
- package/lib/clang/23/include/avx512ifmavlintrin.h +138 -0
- package/lib/clang/{21 → 23}/include/avx512vbmi2intrin.h +55 -48
- package/lib/clang/{21 → 23}/include/avx512vbmiintrin.h +19 -27
- package/lib/clang/{21 → 23}/include/avx512vbmivlintrin.h +35 -49
- package/lib/clang/{21 → 23}/include/avx512vlbf16intrin.h +32 -22
- package/lib/clang/{21 → 23}/include/avx512vlbitalgintrin.h +37 -53
- package/lib/clang/{21 → 23}/include/avx512vlbwintrin.h +494 -609
- package/lib/clang/23/include/avx512vlcdintrin.h +202 -0
- package/lib/clang/{21 → 23}/include/avx512vldqintrin.h +110 -127
- package/lib/clang/{21 → 23}/include/avx512vlfp16intrin.h +130 -111
- package/lib/clang/{21 → 23}/include/avx512vlintrin.h +1025 -1395
- package/lib/clang/{21 → 23}/include/avx512vlvbmi2intrin.h +102 -95
- package/lib/clang/{21 → 23}/include/avx512vlvnniintrin.h +50 -52
- package/lib/clang/{21 → 23}/include/avx512vlvp2intersectintrin.h +2 -2
- package/lib/clang/{21 → 23}/include/avx512vnniintrin.h +42 -45
- package/lib/clang/{21 → 23}/include/avx512vp2intersectintrin.h +2 -3
- package/lib/clang/{21 → 23}/include/avx512vpopcntdqintrin.h +8 -10
- package/lib/clang/{21 → 23}/include/avx512vpopcntdqvlintrin.h +17 -15
- package/lib/clang/{21 → 23}/include/avxifmaintrin.h +16 -0
- package/lib/clang/{21 → 23}/include/avxintrin.h +165 -241
- package/lib/clang/{21 → 23}/include/avxvnniint16intrin.h +118 -99
- package/lib/clang/{21 → 23}/include/avxvnniint8intrin.h +56 -32
- package/lib/clang/{21 → 23}/include/avxvnniintrin.h +39 -26
- package/lib/clang/{21 → 23}/include/cpuid.h +101 -4
- package/lib/clang/{21 → 23}/include/crc32intrin.h +10 -8
- package/lib/clang/23/include/cuda_wrappers/__utility/declval.h +28 -0
- package/lib/clang/{21 → 23}/include/emmintrin.h +176 -176
- package/lib/clang/23/include/endian.h +91 -0
- package/lib/clang/{21 → 23}/include/f16cintrin.h +23 -9
- package/lib/clang/23/include/float.h +48 -0
- package/lib/clang/23/include/fma4intrin.h +220 -0
- package/lib/clang/{21 → 23}/include/fmaintrin.h +96 -66
- package/lib/clang/{21 → 23}/include/gfniintrin.h +21 -16
- package/lib/clang/{21 → 23}/include/gpuintrin.h +129 -109
- package/lib/clang/{21 → 23}/include/hexagon_types.h +23 -20
- package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics.h +222 -0
- package/lib/clang/{21/include/hlsl/hlsl_alias_intrinsics.h → 23/include/hlsl/hlsl_alias_intrinsics_gen.inc} +2090 -1032
- package/lib/clang/23/include/hlsl/hlsl_basic_types.h +370 -0
- package/lib/clang/{21 → 23}/include/hlsl/hlsl_compat_overloads.h +150 -18
- package/lib/clang/{21 → 23}/include/hlsl/hlsl_detail.h +6 -4
- package/lib/clang/23/include/hlsl/hlsl_inline_intrinsics_gen.inc +546 -0
- package/lib/clang/{21 → 23}/include/hlsl/hlsl_intrinsic_helpers.h +71 -45
- package/lib/clang/23/include/hlsl/hlsl_intrinsics.h +331 -0
- package/lib/clang/{21 → 23}/include/hvx_hexagon_protos.h +724 -913
- package/lib/clang/{21 → 23}/include/immintrin.h +4 -14
- package/lib/clang/{21 → 23}/include/intrin.h +24 -10
- package/lib/clang/{21 → 23}/include/larchintrin.h +2 -0
- package/lib/clang/{21 → 23}/include/lasxintrin.h +113 -0
- package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/assert.h +3 -5
- package/lib/clang/23/include/llvm_libc_wrappers/ctype.h +29 -0
- package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/lib/clang/23/include/llvm_libc_wrappers/stdio.h +52 -0
- package/lib/clang/23/include/llvm_libc_wrappers/stdlib.h +32 -0
- package/lib/clang/23/include/llvm_libc_wrappers/string.h +29 -0
- package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/time.h +4 -10
- package/lib/clang/{21 → 23}/include/mmintrin.h +188 -257
- package/lib/clang/{21 → 23}/include/module.modulemap +39 -5
- package/lib/clang/{21 → 23}/include/movrs_avx10_2_512intrin.h +2 -2
- package/lib/clang/{21 → 23}/include/movrs_avx10_2intrin.h +4 -4
- package/lib/clang/{21 → 23}/include/nvptxintrin.h +15 -26
- package/lib/clang/{21 → 23}/include/opencl-c-base.h +7 -93
- package/lib/clang/{21 → 23}/include/opencl-c.h +225 -118
- package/lib/clang/{21 → 23}/include/openmp_wrappers/__clang_openmp_device_functions.h +14 -0
- package/lib/clang/{21 → 23}/include/openmp_wrappers/complex +7 -1
- package/lib/clang/{21 → 23}/include/openmp_wrappers/complex.h +6 -0
- package/lib/clang/{21 → 23}/include/openmp_wrappers/math.h +10 -0
- package/lib/clang/{21 → 23}/include/pmmintrin.h +12 -24
- package/lib/clang/{21 → 23}/include/ptrauth.h +104 -12
- package/lib/clang/{21 → 23}/include/riscv_bitmanip.h +7 -0
- package/lib/clang/{21 → 23}/include/riscv_corev_alu.h +2 -0
- package/lib/clang/{21 → 23}/include/riscv_crypto.h +8 -0
- package/lib/clang/23/include/riscv_mips.h +36 -0
- package/lib/clang/23/include/riscv_nds.h +92 -0
- package/lib/clang/{21 → 23}/include/riscv_ntlh.h +2 -0
- package/lib/clang/23/include/riscv_packed_simd.h +644 -0
- package/lib/clang/{21 → 23}/include/riscv_vector.h +43 -0
- package/lib/clang/{21 → 23}/include/sifive_vector.h +76 -2
- package/lib/clang/{21 → 23}/include/sm4evexintrin.h +2 -2
- package/lib/clang/{21 → 23}/include/smmintrin.h +77 -59
- package/lib/clang/23/include/spirvintrin.h +167 -0
- package/lib/clang/23/include/stddefer.h +19 -0
- package/lib/clang/{21 → 23}/include/stdint.h +5 -14
- package/lib/clang/{21 → 23}/include/tmmintrin.h +116 -147
- package/lib/clang/{21 → 23}/include/vaesintrin.h +1 -2
- package/lib/clang/{21 → 23}/include/vecintrin.h +1 -1
- package/lib/clang/{21 → 23}/include/wasm_simd128.h +17 -0
- package/lib/clang/{21 → 23}/include/xmmintrin.h +50 -75
- package/lib/clang/{21 → 23}/include/xopintrin.h +20 -10
- package/lib/clang/23/include/zos_wrappers/grp.h +19 -0
- package/lib/clang/23/include/zos_wrappers/locale.h +19 -0
- package/lib/clang/23/include/zos_wrappers/math.h +31 -0
- package/lib/clang/23/include/zos_wrappers/poll.h +19 -0
- package/lib/clang/23/include/zos_wrappers/stdlib.h +20 -0
- package/lib/clang/23/include/zos_wrappers/string.h +19 -0
- package/lib/clang/23/include/zos_wrappers/time.h +19 -0
- package/lib/clang/23/include/zos_wrappers/variant.h +19 -0
- package/package.json +6 -6
- package/lib/clang/21/include/__clang_cuda_complex_builtins.h +0 -285
- package/lib/clang/21/include/amxbf16transposeintrin.h +0 -94
- package/lib/clang/21/include/amxcomplextransposeintrin.h +0 -303
- package/lib/clang/21/include/amxfp16transposeintrin.h +0 -94
- package/lib/clang/21/include/amxmovrstransposeintrin.h +0 -200
- package/lib/clang/21/include/amxtf32intrin.h +0 -108
- package/lib/clang/21/include/amxtf32transposeintrin.h +0 -105
- package/lib/clang/21/include/amxtransposeintrin.h +0 -248
- package/lib/clang/21/include/avx512cdintrin.h +0 -125
- package/lib/clang/21/include/avx512ifmaintrin.h +0 -70
- package/lib/clang/21/include/avx512ifmavlintrin.h +0 -111
- package/lib/clang/21/include/avx512vlcdintrin.h +0 -230
- package/lib/clang/21/include/fma4intrin.h +0 -218
- package/lib/clang/21/include/hlsl/hlsl_basic_types.h +0 -120
- package/lib/clang/21/include/hlsl/hlsl_intrinsics.h +0 -526
- package/lib/clang/21/include/llvm_libc_wrappers/ctype.h +0 -140
- package/lib/clang/21/include/llvm_libc_wrappers/stdio.h +0 -80
- package/lib/clang/21/include/llvm_libc_wrappers/stdlib.h +0 -53
- package/lib/clang/21/include/llvm_libc_wrappers/string.h +0 -96
- /package/lib/clang/{21 → 23}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_cuda_math.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{21 → 23}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg_header_macro.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg_va_arg.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_header_macro.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_null.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{21 → 23}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{21 → 23}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{21 → 23}/include/adcintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/adxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ammintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/amxfp16intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/amxfp8intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/amxmovrsintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_bf16.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_cde.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_cmse.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_fp16.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_mve.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{21 → 23}/include/arm_vector_types.h +0 -0
- /package/lib/clang/{21 → 23}/include/armintr.h +0 -0
- /package/lib/clang/{21 → 23}/include/avx10_2_512minmaxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/avx10_2_512satcvtintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/avx10_2minmaxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/avx10_2satcvtintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/bmiintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/builtins.h +0 -0
- /package/lib/clang/{21 → 23}/include/cet.h +0 -0
- /package/lib/clang/{21 → 23}/include/cetintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/clwbintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/clzerointrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/cmpccxaddintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/c++config.h +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/cmath +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{21 → 23}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{21 → 23}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{21 → 23}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{21 → 23}/include/hlsl/hlsl_spirv.h +0 -0
- /package/lib/clang/{21 → 23}/include/hlsl.h +0 -0
- /package/lib/clang/{21 → 23}/include/hresetintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/htmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ia32intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/intrin0.h +0 -0
- /package/lib/clang/{21 → 23}/include/inttypes.h +0 -0
- /package/lib/clang/{21 → 23}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/iso646.h +0 -0
- /package/lib/clang/{21 → 23}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/limits.h +0 -0
- /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload.h +0 -0
- /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload_device.h +0 -0
- /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload_host.h +0 -0
- /package/lib/clang/{21 → 23}/include/lsxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/lwpintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/mm3dnow.h +0 -0
- /package/lib/clang/{21 → 23}/include/mm_malloc.h +0 -0
- /package/lib/clang/{21 → 23}/include/movdirintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/movrsintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/msa.h +0 -0
- /package/lib/clang/{21 → 23}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/nmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{21 → 23}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{21 → 23}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{21 → 23}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/pkuintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/popcntintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/raointintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/rtmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/s390intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/serializeintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/sgxintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/sha512intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/shaintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/sm3intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/sm4intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdalign.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdarg.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdatomic.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdbool.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdckdint.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdcountof.h +0 -0
- /package/lib/clang/{21 → 23}/include/stddef.h +0 -0
- /package/lib/clang/{21 → 23}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{21 → 23}/include/tbmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/tgmath.h +0 -0
- /package/lib/clang/{21 → 23}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/uintrintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/unwind.h +0 -0
- /package/lib/clang/{21 → 23}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/vadefs.h +0 -0
- /package/lib/clang/{21 → 23}/include/varargs.h +0 -0
- /package/lib/clang/{21 → 23}/include/velintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{21 → 23}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{21 → 23}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/wmmintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/x86gprintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/x86intrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/xtestintrin.h +0 -0
- /package/lib/clang/{21 → 23}/include/yvals_core.h +0 -0
- /package/lib/clang/{21 → 23}/include/zos_wrappers/builtins.h +0 -0
|
@@ -12,22 +12,15 @@
|
|
|
12
12
|
namespace hlsl {
|
|
13
13
|
namespace __detail {
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// The DXC implementation refers to a comment on the following stackoverflow
|
|
20
|
-
// discussion to justify the scaling factor: "Built-in rounding, necessary
|
|
21
|
-
// because of truncation. 0.001953 * 256 = 0.5"
|
|
22
|
-
// https://stackoverflow.com/questions/52103720/why-does-d3dcolortoubyte4-multiplies-components-by-255-001953f
|
|
23
|
-
return V.zyxw * 255.001953f;
|
|
15
|
+
template <typename T>
|
|
16
|
+
constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
|
|
17
|
+
length_impl(T X) {
|
|
18
|
+
return abs(X);
|
|
24
19
|
}
|
|
25
20
|
|
|
26
|
-
template <typename T> constexpr T length_impl(T X) { return abs(X); }
|
|
27
|
-
|
|
28
21
|
template <typename T, int N>
|
|
29
22
|
constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
|
|
30
|
-
|
|
23
|
+
length_impl(vector<T, N> X) {
|
|
31
24
|
#if (__has_builtin(__builtin_spirv_length))
|
|
32
25
|
return __builtin_spirv_length(X);
|
|
33
26
|
#else
|
|
@@ -35,21 +28,6 @@ length_vec_impl(vector<T, N> X) {
|
|
|
35
28
|
#endif
|
|
36
29
|
}
|
|
37
30
|
|
|
38
|
-
template <typename T>
|
|
39
|
-
constexpr vector<T, 4> dst_impl(vector<T, 4> Src0, vector<T, 4> Src1) {
|
|
40
|
-
return {1, Src0[1] * Src1[1], Src0[2], Src1[3]};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
template <typename T> constexpr T distance_impl(T X, T Y) {
|
|
44
|
-
return length_impl(X - Y);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
template <typename T, int N>
|
|
48
|
-
constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
|
|
49
|
-
distance_vec_impl(vector<T, N> X, vector<T, N> Y) {
|
|
50
|
-
return length_vec_impl(X - Y);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
31
|
constexpr float dot2add_impl(half2 a, half2 b, float c) {
|
|
54
32
|
#if (__has_builtin(__builtin_dx_dot2add))
|
|
55
33
|
return __builtin_dx_dot2add(a, b, c);
|
|
@@ -58,12 +36,29 @@ constexpr float dot2add_impl(half2 a, half2 b, float c) {
|
|
|
58
36
|
#endif
|
|
59
37
|
}
|
|
60
38
|
|
|
61
|
-
template <typename T
|
|
39
|
+
template <typename T, int N>
|
|
40
|
+
constexpr enable_if_t<!is_same<double, T>::value, T>
|
|
41
|
+
mul_vec_impl(vector<T, N> x, vector<T, N> y) {
|
|
42
|
+
return dot(x, y);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Double vectors do not have a dot intrinsic, so expand manually.
|
|
46
|
+
template <typename T, int N>
|
|
47
|
+
enable_if_t<is_same<double, T>::value, T> mul_vec_impl(vector<T, N> x,
|
|
48
|
+
vector<T, N> y) {
|
|
49
|
+
T sum = x[0] * y[0];
|
|
50
|
+
[unroll] for (int i = 1; i < N; ++i) sum = mad(x[i], y[i], sum);
|
|
51
|
+
return sum;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
template <typename T>
|
|
55
|
+
constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
|
|
56
|
+
reflect_impl(T I, T N) {
|
|
62
57
|
return I - 2 * N * I * N;
|
|
63
58
|
}
|
|
64
59
|
|
|
65
60
|
template <typename T, int L>
|
|
66
|
-
constexpr vector<T, L>
|
|
61
|
+
constexpr vector<T, L> reflect_impl(vector<T, L> I, vector<T, L> N) {
|
|
67
62
|
#if (__has_builtin(__builtin_spirv_reflect))
|
|
68
63
|
return __builtin_spirv_reflect(I, N);
|
|
69
64
|
#else
|
|
@@ -71,6 +66,16 @@ constexpr vector<T, L> reflect_vec_impl(vector<T, L> I, vector<T, L> N) {
|
|
|
71
66
|
#endif
|
|
72
67
|
}
|
|
73
68
|
|
|
69
|
+
template <typename T, typename U> constexpr T refract_impl(T I, T N, U Eta) {
|
|
70
|
+
#if (__has_builtin(__builtin_spirv_refract))
|
|
71
|
+
return __builtin_spirv_refract(I, N, Eta);
|
|
72
|
+
#endif
|
|
73
|
+
T Mul = dot(N, I);
|
|
74
|
+
T K = 1 - Eta * Eta * (1 - Mul * Mul);
|
|
75
|
+
T Result = (Eta * I - (Eta * Mul + sqrt(K)) * N);
|
|
76
|
+
return select<T>(K < 0, static_cast<T>(0), Result);
|
|
77
|
+
}
|
|
78
|
+
|
|
74
79
|
template <typename T> constexpr T fmod_impl(T X, T Y) {
|
|
75
80
|
#if !defined(__DIRECTX__)
|
|
76
81
|
return __builtin_elementwise_fmod(X, Y);
|
|
@@ -103,17 +108,6 @@ template <typename T> constexpr T smoothstep_impl(T Min, T Max, T X) {
|
|
|
103
108
|
#endif
|
|
104
109
|
}
|
|
105
110
|
|
|
106
|
-
template <typename T, int N>
|
|
107
|
-
constexpr vector<T, N> smoothstep_vec_impl(vector<T, N> Min, vector<T, N> Max,
|
|
108
|
-
vector<T, N> X) {
|
|
109
|
-
#if (__has_builtin(__builtin_spirv_smoothstep))
|
|
110
|
-
return __builtin_spirv_smoothstep(Min, Max, X);
|
|
111
|
-
#else
|
|
112
|
-
vector<T, N> S = saturate((X - Min) / (Max - Min));
|
|
113
|
-
return (3 - 2 * S) * S * S;
|
|
114
|
-
#endif
|
|
115
|
-
}
|
|
116
|
-
|
|
117
111
|
template <typename T> constexpr vector<T, 4> lit_impl(T NDotL, T NDotH, T M) {
|
|
118
112
|
bool DiffuseCond = NDotL < 0;
|
|
119
113
|
T Diffuse = select<T>(DiffuseCond, 0, NDotL);
|
|
@@ -127,15 +121,47 @@ template <typename T> constexpr vector<T, 4> lit_impl(T NDotL, T NDotH, T M) {
|
|
|
127
121
|
}
|
|
128
122
|
|
|
129
123
|
template <typename T> constexpr T faceforward_impl(T N, T I, T Ng) {
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
return select<T>(dot(I, Ng) < 0, N, -N);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
template <typename K, typename T, int BitWidth>
|
|
128
|
+
constexpr K firstbithigh_impl(T X) {
|
|
129
|
+
K FBH = __builtin_hlsl_elementwise_firstbithigh(X);
|
|
130
|
+
#if defined(__DIRECTX__)
|
|
131
|
+
// The firstbithigh DXIL ops count bits from the wrong side, so we need to
|
|
132
|
+
// invert it for DirectX.
|
|
133
|
+
K Inversion = (BitWidth - 1) - FBH;
|
|
134
|
+
FBH = select(FBH == -1, FBH, Inversion);
|
|
135
|
+
#endif
|
|
136
|
+
return FBH;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
template <typename T> constexpr T ddx_impl(T input) {
|
|
140
|
+
#if (__has_builtin(__builtin_spirv_ddx))
|
|
141
|
+
return __builtin_spirv_ddx(input);
|
|
142
|
+
#else
|
|
143
|
+
return __builtin_hlsl_elementwise_ddx_coarse(input);
|
|
144
|
+
#endif
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
template <typename T> constexpr T ddy_impl(T input) {
|
|
148
|
+
#if (__has_builtin(__builtin_spirv_ddy))
|
|
149
|
+
return __builtin_spirv_ddy(input);
|
|
132
150
|
#else
|
|
133
|
-
return
|
|
151
|
+
return __builtin_hlsl_elementwise_ddy_coarse(input);
|
|
134
152
|
#endif
|
|
135
153
|
}
|
|
136
154
|
|
|
137
|
-
template <typename T> constexpr T
|
|
138
|
-
|
|
155
|
+
template <typename T> constexpr T fwidth_impl(T input) {
|
|
156
|
+
#if (__has_builtin(__builtin_spirv_fwidth))
|
|
157
|
+
return __builtin_spirv_fwidth(input);
|
|
158
|
+
#else
|
|
159
|
+
T derivCoarseX = ddx_coarse(input);
|
|
160
|
+
derivCoarseX = abs(derivCoarseX);
|
|
161
|
+
T derivCoarseY = ddy_coarse(input);
|
|
162
|
+
derivCoarseY = abs(derivCoarseY);
|
|
163
|
+
return derivCoarseX + derivCoarseY;
|
|
164
|
+
#endif
|
|
139
165
|
}
|
|
140
166
|
|
|
141
167
|
} // namespace __detail
|
|
@@ -0,0 +1,331 @@
|
|
|
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
|
+
#include "hlsl/hlsl_intrinsic_helpers.h"
|
|
13
|
+
|
|
14
|
+
namespace hlsl {
|
|
15
|
+
|
|
16
|
+
// Generated by clang-tblgen from HLSLIntrinsics.td (detail/inline intrinsics).
|
|
17
|
+
#include "hlsl_inline_intrinsics_gen.inc"
|
|
18
|
+
|
|
19
|
+
//===----------------------------------------------------------------------===//
|
|
20
|
+
// asfloat builtins
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/// \fn float asfloat(T Val)
|
|
24
|
+
/// \brief Interprets the bit pattern of x as float point number.
|
|
25
|
+
/// \param Val The input value.
|
|
26
|
+
|
|
27
|
+
template <typename T, int R, int C>
|
|
28
|
+
constexpr matrix<float, R, C> asfloat(matrix<T, R, C> V) {
|
|
29
|
+
return __detail::bit_cast<float, T, R, C>(V);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
template <typename T, int N>
|
|
33
|
+
constexpr vector<float, N> asfloat(vector<T, N> V) {
|
|
34
|
+
return __detail::bit_cast<float, T, N>(V);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
template <typename T> constexpr float asfloat(T F) {
|
|
38
|
+
return __detail::bit_cast<float, T>(F);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//===----------------------------------------------------------------------===//
|
|
42
|
+
// asint builtins
|
|
43
|
+
//===----------------------------------------------------------------------===//
|
|
44
|
+
|
|
45
|
+
/// \fn int asint(T Val)
|
|
46
|
+
/// \brief Interprets the bit pattern of x as an integer.
|
|
47
|
+
/// \param Val The input value.
|
|
48
|
+
|
|
49
|
+
template <typename T, int R, int C>
|
|
50
|
+
constexpr matrix<int, R, C> asint(matrix<T, R, C> V) {
|
|
51
|
+
return __detail::bit_cast<int, T, R, C>(V);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
template <typename T, int N> constexpr vector<int, N> asint(vector<T, N> V) {
|
|
55
|
+
return __detail::bit_cast<int, T, N>(V);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
template <typename T> constexpr int asint(T F) {
|
|
59
|
+
return __detail::bit_cast<int, T>(F);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//===----------------------------------------------------------------------===//
|
|
63
|
+
// asint16 builtins
|
|
64
|
+
//===----------------------------------------------------------------------===//
|
|
65
|
+
|
|
66
|
+
/// \fn int16_t asint16(T X)
|
|
67
|
+
/// \brief Interprets the bit pattern of \a X as an 16-bit integer.
|
|
68
|
+
/// \param X The input value.
|
|
69
|
+
|
|
70
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
71
|
+
|
|
72
|
+
template <typename T, int N>
|
|
73
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
74
|
+
constexpr __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
75
|
+
__detail::is_same<uint16_t, T>::value ||
|
|
76
|
+
__detail::is_same<half, T>::value,
|
|
77
|
+
vector<int16_t, N>> asint16(vector<T, N> V) {
|
|
78
|
+
return __detail::bit_cast<int16_t, T, N>(V);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
template <typename T>
|
|
82
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
83
|
+
constexpr __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
84
|
+
__detail::is_same<uint16_t, T>::value ||
|
|
85
|
+
__detail::is_same<half, T>::value,
|
|
86
|
+
int16_t> asint16(T F) {
|
|
87
|
+
return __detail::bit_cast<int16_t, T>(F);
|
|
88
|
+
}
|
|
89
|
+
#endif
|
|
90
|
+
|
|
91
|
+
//===----------------------------------------------------------------------===//
|
|
92
|
+
// asuint builtins
|
|
93
|
+
//===----------------------------------------------------------------------===//
|
|
94
|
+
|
|
95
|
+
/// \fn uint asuint(T Val)
|
|
96
|
+
/// \brief Interprets the bit pattern of x as an unsigned integer.
|
|
97
|
+
/// \param Val The input value.
|
|
98
|
+
|
|
99
|
+
template <typename T, int R, int C>
|
|
100
|
+
constexpr matrix<uint, R, C> asuint(matrix<T, R, C> V) {
|
|
101
|
+
return __detail::bit_cast<uint, T, R, C>(V);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
template <typename T, int N> constexpr vector<uint, N> asuint(vector<T, N> V) {
|
|
105
|
+
return __detail::bit_cast<uint, T, N>(V);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
template <typename T> constexpr uint asuint(T F) {
|
|
109
|
+
return __detail::bit_cast<uint, T>(F);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
//===----------------------------------------------------------------------===//
|
|
113
|
+
// asuint splitdouble builtins
|
|
114
|
+
//===----------------------------------------------------------------------===//
|
|
115
|
+
|
|
116
|
+
/// \fn void asuint(double D, out uint lowbits, out int highbits)
|
|
117
|
+
/// \brief Split and interprets the lowbits and highbits of double D into uints.
|
|
118
|
+
/// \param D The input double.
|
|
119
|
+
/// \param lowbits The output lowbits of D.
|
|
120
|
+
/// \param highbits The output highbits of D.
|
|
121
|
+
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_splitdouble)
|
|
122
|
+
void asuint(double, out uint, out uint);
|
|
123
|
+
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_splitdouble)
|
|
124
|
+
void asuint(double2, out uint2, out uint2);
|
|
125
|
+
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_splitdouble)
|
|
126
|
+
void asuint(double3, out uint3, out uint3);
|
|
127
|
+
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_splitdouble)
|
|
128
|
+
void asuint(double4, out uint4, out uint4);
|
|
129
|
+
template <int R, int C>
|
|
130
|
+
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_splitdouble)
|
|
131
|
+
void asuint(matrix<double, R, C>, out matrix<uint, R, C>,
|
|
132
|
+
out matrix<uint, R, C>);
|
|
133
|
+
//===----------------------------------------------------------------------===//
|
|
134
|
+
// asuint16 builtins
|
|
135
|
+
//===----------------------------------------------------------------------===//
|
|
136
|
+
|
|
137
|
+
/// \fn uint16_t asuint16(T X)
|
|
138
|
+
/// \brief Interprets the bit pattern of \a X as an 16-bit unsigned integer.
|
|
139
|
+
/// \param X The input value.
|
|
140
|
+
|
|
141
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
142
|
+
|
|
143
|
+
template <typename T, int N>
|
|
144
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
145
|
+
constexpr __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
146
|
+
__detail::is_same<uint16_t, T>::value ||
|
|
147
|
+
__detail::is_same<half, T>::value,
|
|
148
|
+
vector<uint16_t, N>> asuint16(vector<T, N> V) {
|
|
149
|
+
return __detail::bit_cast<uint16_t, T, N>(V);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
template <typename T>
|
|
153
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
154
|
+
constexpr __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
155
|
+
__detail::is_same<uint16_t, T>::value ||
|
|
156
|
+
__detail::is_same<half, T>::value,
|
|
157
|
+
uint16_t> asuint16(T F) {
|
|
158
|
+
return __detail::bit_cast<uint16_t, T>(F);
|
|
159
|
+
}
|
|
160
|
+
#endif
|
|
161
|
+
|
|
162
|
+
//===----------------------------------------------------------------------===//
|
|
163
|
+
// firstbithigh builtins
|
|
164
|
+
//===----------------------------------------------------------------------===//
|
|
165
|
+
|
|
166
|
+
/// \fn T firstbithigh(T Val)
|
|
167
|
+
/// \brief Returns the location of the first set bit starting from the lowest
|
|
168
|
+
/// order bit and working upward, per component.
|
|
169
|
+
/// \param Val the input value.
|
|
170
|
+
|
|
171
|
+
#ifdef __HLSL_ENABLE_16_BIT
|
|
172
|
+
|
|
173
|
+
template <typename T>
|
|
174
|
+
_HLSL_AVAILABILITY(shadermodel, 6.2)
|
|
175
|
+
const inline __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
176
|
+
__detail::is_same<uint16_t, T>::value,
|
|
177
|
+
uint> firstbithigh(T X) {
|
|
178
|
+
return __detail::firstbithigh_impl<uint, T, 16>(X);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
template <typename T, int N>
|
|
182
|
+
_HLSL_AVAILABILITY(shadermodel, 6.2)
|
|
183
|
+
const
|
|
184
|
+
inline __detail::enable_if_t<__detail::is_same<int16_t, T>::value ||
|
|
185
|
+
__detail::is_same<uint16_t, T>::value,
|
|
186
|
+
vector<uint, N>> firstbithigh(vector<T, N> X) {
|
|
187
|
+
return __detail::firstbithigh_impl<vector<uint, N>, vector<T, N>, 16>(X);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
#endif
|
|
191
|
+
|
|
192
|
+
template <typename T>
|
|
193
|
+
const inline __detail::enable_if_t<
|
|
194
|
+
__detail::is_same<int, T>::value || __detail::is_same<uint, T>::value, uint>
|
|
195
|
+
firstbithigh(T X) {
|
|
196
|
+
return __detail::firstbithigh_impl<uint, T, 32>(X);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
template <typename T, int N>
|
|
200
|
+
const inline __detail::enable_if_t<__detail::is_same<int, T>::value ||
|
|
201
|
+
__detail::is_same<uint, T>::value,
|
|
202
|
+
vector<uint, N>>
|
|
203
|
+
firstbithigh(vector<T, N> X) {
|
|
204
|
+
return __detail::firstbithigh_impl<vector<uint, N>, vector<T, N>, 32>(X);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
template <typename T>
|
|
208
|
+
const inline __detail::enable_if_t<__detail::is_same<int64_t, T>::value ||
|
|
209
|
+
__detail::is_same<uint64_t, T>::value,
|
|
210
|
+
uint>
|
|
211
|
+
firstbithigh(T X) {
|
|
212
|
+
return __detail::firstbithigh_impl<uint, T, 64>(X);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
template <typename T, int N>
|
|
216
|
+
const inline __detail::enable_if_t<__detail::is_same<int64_t, T>::value ||
|
|
217
|
+
__detail::is_same<uint64_t, T>::value,
|
|
218
|
+
vector<uint, N>>
|
|
219
|
+
firstbithigh(vector<T, N> X) {
|
|
220
|
+
return __detail::firstbithigh_impl<vector<uint, N>, vector<T, N>, 64>(X);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
//===----------------------------------------------------------------------===//
|
|
224
|
+
// mul builtins
|
|
225
|
+
//===----------------------------------------------------------------------===//
|
|
226
|
+
|
|
227
|
+
/// \fn R mul(X x, Y y)
|
|
228
|
+
/// \brief Multiplies x and y using matrix math.
|
|
229
|
+
/// \param x [in] The first input value. If x is a vector, it is treated as a
|
|
230
|
+
/// row vector.
|
|
231
|
+
/// \param y [in] The second input value. If y is a vector, it is treated as a
|
|
232
|
+
/// column vector.
|
|
233
|
+
///
|
|
234
|
+
/// The inner dimension x-columns and y-rows must be equal. The result has the
|
|
235
|
+
/// dimension x-rows x y-columns. When both x and y are vectors, the result is
|
|
236
|
+
/// a dot product (scalar). Scalar operands are multiplied element-wise.
|
|
237
|
+
///
|
|
238
|
+
/// This function supports 9 overloaded forms:
|
|
239
|
+
/// 1. scalar * scalar -> scalar
|
|
240
|
+
/// 2. scalar * vector -> vector
|
|
241
|
+
/// 3. scalar * matrix -> matrix
|
|
242
|
+
/// 4. vector * scalar -> vector
|
|
243
|
+
/// 5. vector * vector -> scalar (dot product)
|
|
244
|
+
/// 6. vector * matrix -> vector
|
|
245
|
+
/// 7. matrix * scalar -> matrix
|
|
246
|
+
/// 8. matrix * vector -> vector
|
|
247
|
+
/// 9. matrix * matrix -> matrix
|
|
248
|
+
|
|
249
|
+
// Cases 1, 2, 3, 4, 5, and 7 of mul are defined below as
|
|
250
|
+
// header-only implementations because they are elementwise operations and dot
|
|
251
|
+
// products easily expressed in HLSL.
|
|
252
|
+
|
|
253
|
+
// Cases 6, 8, and 9 are defined in hlsl_alias_intrinsics.h to alias the mul
|
|
254
|
+
// builtin so that they can be lowered to the llvm.matrix.multiply intrinsic
|
|
255
|
+
// which is not exposed directly to HLSL.
|
|
256
|
+
|
|
257
|
+
// Case 1: scalar * scalar -> scalar
|
|
258
|
+
template <typename T>
|
|
259
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
260
|
+
constexpr __detail::enable_if_t<__detail::is_arithmetic<T>::Value &&
|
|
261
|
+
__detail::is_same<half, T>::value,
|
|
262
|
+
T> mul(T x, T y) {
|
|
263
|
+
return x * y;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
template <typename T>
|
|
267
|
+
constexpr __detail::enable_if_t<
|
|
268
|
+
__detail::is_arithmetic<T>::Value && !__detail::is_same<half, T>::value, T>
|
|
269
|
+
mul(T x, T y) {
|
|
270
|
+
return x * y;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Case 2: scalar * vector -> vector
|
|
274
|
+
template <int N>
|
|
275
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
276
|
+
constexpr vector<half, N> mul(half x, vector<half, N> y) {
|
|
277
|
+
return x * y;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
template <typename T, int N> constexpr vector<T, N> mul(T x, vector<T, N> y) {
|
|
281
|
+
return x * y;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// Case 3: scalar * matrix -> matrix
|
|
285
|
+
template <int R, int C>
|
|
286
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
287
|
+
constexpr matrix<half, R, C> mul(half x, matrix<half, R, C> y) {
|
|
288
|
+
return x * y;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
template <typename T, int R, int C>
|
|
292
|
+
constexpr matrix<T, R, C> mul(T x, matrix<T, R, C> y) {
|
|
293
|
+
return x * y;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Case 4: vector * scalar -> vector
|
|
297
|
+
template <int N>
|
|
298
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
299
|
+
constexpr vector<half, N> mul(vector<half, N> x, half y) {
|
|
300
|
+
return x * y;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
template <typename T, int N> constexpr vector<T, N> mul(vector<T, N> x, T y) {
|
|
304
|
+
return x * y;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// Case 5: vector * vector -> scalar (dot product)
|
|
308
|
+
template <int N>
|
|
309
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
310
|
+
half mul(vector<half, N> x, vector<half, N> y) {
|
|
311
|
+
return __detail::mul_vec_impl(x, y);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
template <typename T, int N> T mul(vector<T, N> x, vector<T, N> y) {
|
|
315
|
+
return __detail::mul_vec_impl(x, y);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Case 7: matrix * scalar -> matrix
|
|
319
|
+
template <int R, int C>
|
|
320
|
+
_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
|
|
321
|
+
constexpr matrix<half, R, C> mul(matrix<half, R, C> x, half y) {
|
|
322
|
+
return x * y;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
template <typename T, int R, int C>
|
|
326
|
+
constexpr matrix<T, R, C> mul(matrix<T, R, C> x, T y) {
|
|
327
|
+
return x * y;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
} // namespace hlsl
|
|
331
|
+
#endif //_HLSL_HLSL_INTRINSICS_H_
|