@cpp-linter/clang-tidy-win32-x64 19.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/{19 → 23}/include/__clang_cuda_device_functions.h +15 -1
- package/lib/clang/{19 → 23}/include/__clang_cuda_intrinsics.h +288 -20
- package/lib/clang/{19 → 23}/include/__clang_cuda_math.h +5 -0
- package/lib/clang/{19 → 23}/include/__clang_cuda_math_forward_declares.h +5 -0
- package/lib/clang/{19 → 23}/include/__clang_cuda_runtime_wrapper.h +28 -5
- package/lib/clang/{19 → 23}/include/__clang_cuda_texture_intrinsics.h +437 -2
- 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/{19 → 23}/include/__clang_hip_cmath.h +15 -9
- package/lib/clang/{19 → 23}/include/__clang_hip_libdevice_declares.h +24 -139
- package/lib/clang/{19 → 23}/include/__clang_hip_math.h +115 -34
- package/lib/clang/{19 → 23}/include/__clang_hip_runtime_wrapper.h +12 -1
- package/lib/clang/23/include/__clang_spirv_builtins.h +217 -0
- 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/{19/include/float.h → 23/include/__float_float.h} +14 -34
- 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/{19 → 23}/include/__stdarg_va_arg.h +2 -2
- package/lib/clang/{19 → 23}/include/adcintrin.h +5 -0
- package/lib/clang/{19 → 23}/include/adxintrin.h +5 -0
- package/lib/clang/{19 → 23}/include/altivec.h +169 -96
- package/lib/clang/23/include/amdgpuintrin.h +164 -0
- package/lib/clang/23/include/amdhsa_abi.h +83 -0
- package/lib/clang/23/include/amo.h +220 -0
- package/lib/clang/23/include/amxavx512intrin.h +596 -0
- package/lib/clang/{19 → 23}/include/amxcomplexintrin.h +4 -6
- package/lib/clang/{19 → 23}/include/amxfp16intrin.h +35 -0
- package/lib/clang/23/include/amxfp8intrin.h +230 -0
- package/lib/clang/{19 → 23}/include/amxintrin.h +3 -35
- package/lib/clang/23/include/amxmovrsintrin.h +48 -0
- package/lib/clang/23/include/andes_vector.h +21 -0
- package/lib/clang/23/include/arm64_neon.h +21 -0
- package/lib/clang/{19 → 23}/include/arm64intr.h +10 -0
- package/lib/clang/{19 → 23}/include/arm_acle.h +67 -89
- package/lib/clang/{19 → 23}/include/arm_fp16.h +89 -89
- package/lib/clang/{19 → 23}/include/arm_neon.h +43614 -38901
- package/lib/clang/{19 → 23}/include/arm_sme.h +1028 -94
- package/lib/clang/{19 → 23}/include/arm_sve.h +7331 -5170
- package/lib/clang/{19 → 23}/include/arm_vector_types.h +87 -0
- package/lib/clang/23/include/avx10_2_512bf16intrin.h +568 -0
- package/lib/clang/23/include/avx10_2_512convertintrin.h +322 -0
- package/lib/clang/23/include/avx10_2_512minmaxintrin.h +127 -0
- package/lib/clang/23/include/avx10_2_512niintrin.h +314 -0
- package/lib/clang/23/include/avx10_2_512satcvtdsintrin.h +307 -0
- package/lib/clang/23/include/avx10_2_512satcvtintrin.h +301 -0
- package/lib/clang/23/include/avx10_2bf16intrin.h +1094 -0
- package/lib/clang/23/include/avx10_2convertintrin.h +3257 -0
- package/lib/clang/23/include/avx10_2copyintrin.h +66 -0
- package/lib/clang/23/include/avx10_2minmaxintrin.h +232 -0
- package/lib/clang/23/include/avx10_2niintrin.h +409 -0
- package/lib/clang/23/include/avx10_2satcvtdsintrin.h +376 -0
- package/lib/clang/23/include/avx10_2satcvtintrin.h +312 -0
- package/lib/clang/{19 → 23}/include/avx2intrin.h +284 -378
- package/lib/clang/{19 → 23}/include/avx512bf16intrin.h +25 -16
- package/lib/clang/{19 → 23}/include/avx512bitalgintrin.h +21 -32
- package/lib/clang/23/include/avx512bmmintrin.h +174 -0
- package/lib/clang/23/include/avx512bmmvlintrin.h +245 -0
- package/lib/clang/{19 → 23}/include/avx512bwintrin.h +405 -534
- package/lib/clang/23/include/avx512cdintrin.h +112 -0
- package/lib/clang/{19 → 23}/include/avx512dqintrin.h +132 -161
- package/lib/clang/{19 → 23}/include/avx512fintrin.h +1068 -1496
- package/lib/clang/{19 → 23}/include/avx512fp16intrin.h +126 -129
- package/lib/clang/23/include/avx512ifmaintrin.h +68 -0
- package/lib/clang/23/include/avx512ifmavlintrin.h +138 -0
- package/lib/clang/{19 → 23}/include/avx512vbmi2intrin.h +55 -48
- package/lib/clang/{19 → 23}/include/avx512vbmiintrin.h +19 -27
- package/lib/clang/{19 → 23}/include/avx512vbmivlintrin.h +35 -49
- package/lib/clang/{19 → 23}/include/avx512vlbf16intrin.h +32 -22
- package/lib/clang/{19 → 23}/include/avx512vlbitalgintrin.h +41 -57
- package/lib/clang/{19 → 23}/include/avx512vlbwintrin.h +494 -609
- package/lib/clang/23/include/avx512vlcdintrin.h +202 -0
- package/lib/clang/{19 → 23}/include/avx512vldqintrin.h +110 -127
- package/lib/clang/{19 → 23}/include/avx512vlfp16intrin.h +130 -111
- package/lib/clang/{19 → 23}/include/avx512vlintrin.h +1025 -1395
- package/lib/clang/{19 → 23}/include/avx512vlvbmi2intrin.h +102 -95
- package/lib/clang/{19 → 23}/include/avx512vlvnniintrin.h +50 -52
- package/lib/clang/{19 → 23}/include/avx512vlvp2intersectintrin.h +2 -2
- package/lib/clang/{19 → 23}/include/avx512vnniintrin.h +42 -45
- package/lib/clang/{19 → 23}/include/avx512vp2intersectintrin.h +2 -3
- package/lib/clang/{19 → 23}/include/avx512vpopcntdqintrin.h +10 -4
- package/lib/clang/{19 → 23}/include/avx512vpopcntdqvlintrin.h +20 -10
- package/lib/clang/{19 → 23}/include/avxifmaintrin.h +16 -0
- package/lib/clang/{19 → 23}/include/avxintrin.h +186 -248
- package/lib/clang/{19 → 23}/include/avxvnniint16intrin.h +130 -152
- package/lib/clang/{19 → 23}/include/avxvnniint8intrin.h +68 -85
- package/lib/clang/{19 → 23}/include/avxvnniintrin.h +39 -26
- package/lib/clang/{19 → 23}/include/bmi2intrin.h +15 -17
- package/lib/clang/{19 → 23}/include/bmiintrin.h +31 -41
- package/lib/clang/{19 → 23}/include/cmpccxaddintrin.h +1 -1
- package/lib/clang/{19 → 23}/include/cpuid.h +137 -37
- package/lib/clang/{19 → 23}/include/crc32intrin.h +10 -8
- package/lib/clang/23/include/cuda_wrappers/__utility/declval.h +28 -0
- package/lib/clang/23/include/cuda_wrappers/bits/c++config.h +61 -0
- package/lib/clang/23/include/cuda_wrappers/cmath +44 -0
- package/lib/clang/{19 → 23}/include/cuda_wrappers/new +2 -0
- package/lib/clang/{19 → 23}/include/emmintrin.h +306 -272
- package/lib/clang/23/include/endian.h +91 -0
- package/lib/clang/{19 → 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/{19 → 23}/include/fmaintrin.h +96 -66
- package/lib/clang/{19 → 23}/include/gfniintrin.h +39 -12
- package/lib/clang/23/include/gpuintrin.h +348 -0
- package/lib/clang/{19 → 23}/include/hexagon_types.h +31 -24
- package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics.h +222 -0
- package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics_gen.inc +3869 -0
- package/lib/clang/23/include/hlsl/hlsl_basic_types.h +370 -0
- package/lib/clang/23/include/hlsl/hlsl_compat_overloads.h +559 -0
- package/lib/clang/23/include/hlsl/hlsl_detail.h +56 -0
- package/lib/clang/23/include/hlsl/hlsl_inline_intrinsics_gen.inc +546 -0
- package/lib/clang/23/include/hlsl/hlsl_intrinsic_helpers.h +170 -0
- package/lib/clang/23/include/hlsl/hlsl_intrinsics.h +331 -0
- package/lib/clang/23/include/hlsl/hlsl_spirv.h +28 -0
- package/lib/clang/23/include/hlsl.h +38 -0
- package/lib/clang/{19 → 23}/include/hvx_hexagon_protos.h +1041 -803
- package/lib/clang/{19 → 23}/include/immintrin.h +35 -185
- package/lib/clang/{19 → 23}/include/intrin.h +62 -21
- package/lib/clang/{19 → 23}/include/intrin0.h +10 -1
- package/lib/clang/{19 → 23}/include/keylockerintrin.h +0 -9
- package/lib/clang/{19 → 23}/include/larchintrin.h +24 -8
- package/lib/clang/{19 → 23}/include/lasxintrin.h +140 -25
- package/lib/clang/{19 → 23}/include/limits.h +7 -4
- package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/assert.h +3 -5
- package/lib/clang/23/include/llvm_libc_wrappers/ctype.h +29 -0
- package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/inttypes.h +3 -5
- package/lib/clang/23/include/llvm_libc_wrappers/stdio.h +52 -0
- package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/stdlib.h +3 -16
- package/lib/clang/23/include/llvm_libc_wrappers/string.h +29 -0
- package/lib/clang/{19 → 23}/include/llvm_libc_wrappers/time.h +4 -10
- package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/lib/clang/23/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/lib/clang/{19 → 23}/include/lsxintrin.h +27 -25
- package/lib/clang/{19 → 23}/include/lzcntintrin.h +13 -8
- package/lib/clang/{19 → 23}/include/mmintrin.h +241 -256
- package/lib/clang/{19 → 23}/include/module.modulemap +54 -9
- package/lib/clang/23/include/movrs_avx10_2_512intrin.h +98 -0
- package/lib/clang/23/include/movrs_avx10_2intrin.h +174 -0
- package/lib/clang/23/include/movrsintrin.h +59 -0
- package/lib/clang/23/include/nvptxintrin.h +208 -0
- package/lib/clang/{19 → 23}/include/opencl-c-base.h +28 -92
- package/lib/clang/{19 → 23}/include/opencl-c.h +506 -140
- package/lib/clang/{19 → 23}/include/openmp_wrappers/__clang_openmp_device_functions.h +18 -5
- package/lib/clang/{19 → 23}/include/openmp_wrappers/complex +7 -1
- package/lib/clang/{19 → 23}/include/openmp_wrappers/complex.h +6 -0
- package/lib/clang/{19 → 23}/include/openmp_wrappers/complex_cmath.h +7 -2
- package/lib/clang/{19 → 23}/include/openmp_wrappers/math.h +10 -0
- package/lib/clang/{19 → 23}/include/pmmintrin.h +24 -23
- package/lib/clang/{19 → 23}/include/popcntintrin.h +7 -7
- package/lib/clang/{19 → 23}/include/prfchwintrin.h +10 -13
- package/lib/clang/{19 → 23}/include/ptrauth.h +169 -14
- package/lib/clang/{19 → 23}/include/riscv_bitmanip.h +7 -0
- package/lib/clang/23/include/riscv_corev_alu.h +130 -0
- package/lib/clang/{19 → 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/{19 → 23}/include/riscv_ntlh.h +2 -0
- package/lib/clang/23/include/riscv_packed_simd.h +644 -0
- package/lib/clang/{19 → 23}/include/riscv_vector.h +43 -5
- package/lib/clang/{19 → 23}/include/shaintrin.h +3 -2
- package/lib/clang/{19 → 23}/include/sifive_vector.h +76 -2
- package/lib/clang/23/include/sm4evexintrin.h +32 -0
- package/lib/clang/{19 → 23}/include/smmintrin.h +80 -56
- package/lib/clang/23/include/spirvintrin.h +167 -0
- package/lib/clang/{19 → 23}/include/stdalign.h +0 -5
- package/lib/clang/23/include/stdcountof.h +15 -0
- package/lib/clang/23/include/stddefer.h +19 -0
- package/lib/clang/{19 → 23}/include/stdint.h +23 -143
- package/lib/clang/{19 → 23}/include/tbmintrin.h +25 -37
- package/lib/clang/{19 → 23}/include/tmmintrin.h +125 -130
- package/lib/clang/{19 → 23}/include/vaesintrin.h +1 -2
- package/lib/clang/{19 → 23}/include/vecintrin.h +1783 -60
- package/lib/clang/{19 → 23}/include/wasm_simd128.h +184 -21
- package/lib/clang/{19 → 23}/include/x86gprintrin.h +0 -14
- package/lib/clang/{19 → 23}/include/x86intrin.h +0 -18
- package/lib/clang/{19 → 23}/include/xmmintrin.h +190 -221
- package/lib/clang/{19 → 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/19/include/__clang_cuda_complex_builtins.h +0 -285
- package/lib/clang/19/include/avx512cdintrin.h +0 -125
- package/lib/clang/19/include/avx512ifmaintrin.h +0 -70
- package/lib/clang/19/include/avx512ifmavlintrin.h +0 -111
- package/lib/clang/19/include/avx512vlcdintrin.h +0 -230
- package/lib/clang/19/include/cuda_wrappers/cmath +0 -90
- package/lib/clang/19/include/fma4intrin.h +0 -218
- package/lib/clang/19/include/hlsl/hlsl_basic_types.h +0 -74
- package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +0 -1697
- package/lib/clang/19/include/hlsl.h +0 -15
- package/lib/clang/19/include/llvm_libc_wrappers/ctype.h +0 -102
- package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +0 -80
- package/lib/clang/19/include/llvm_libc_wrappers/string.h +0 -96
- /package/lib/clang/{19 → 23}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{19 → 23}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{19 → 23}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{19 → 23}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stdarg___gnuc_va_list.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stdarg___va_copy.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stdarg_header_macro.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stdarg_va_copy.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stdarg_va_list.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_header_macro.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_null.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_nullptr_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_offsetof.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_ptrdiff_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_rsize_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_size_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_unreachable.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_wchar_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__stddef_wint_t.h +0 -0
- /package/lib/clang/{19 → 23}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{19 → 23}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{19 → 23}/include/ammintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/arm_bf16.h +0 -0
- /package/lib/clang/{19 → 23}/include/arm_cde.h +0 -0
- /package/lib/clang/{19 → 23}/include/arm_cmse.h +0 -0
- /package/lib/clang/{19 → 23}/include/arm_mve.h +0 -0
- /package/lib/clang/{19 → 23}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{19 → 23}/include/armintr.h +0 -0
- /package/lib/clang/{19 → 23}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/builtins.h +0 -0
- /package/lib/clang/{19 → 23}/include/cet.h +0 -0
- /package/lib/clang/{19 → 23}/include/cetintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/clwbintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/clzerointrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{19 → 23}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{19 → 23}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{19 → 23}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{19 → 23}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{19 → 23}/include/hresetintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/htmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ia32intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/inttypes.h +0 -0
- /package/lib/clang/{19 → 23}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/iso646.h +0 -0
- /package/lib/clang/{19 → 23}/include/lwpintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/mm3dnow.h +0 -0
- /package/lib/clang/{19 → 23}/include/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 23}/include/movdirintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/msa.h +0 -0
- /package/lib/clang/{19 → 23}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{19 → 23}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{19 → 23}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/pkuintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/nmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/raointintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/rtmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/s390intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/serializeintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/sgxintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/sha512intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/sm3intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/sm4intrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/stdarg.h +0 -0
- /package/lib/clang/{19 → 23}/include/stdatomic.h +0 -0
- /package/lib/clang/{19 → 23}/include/stdbool.h +0 -0
- /package/lib/clang/{19 → 23}/include/stdckdint.h +0 -0
- /package/lib/clang/{19 → 23}/include/stddef.h +0 -0
- /package/lib/clang/{19 → 23}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{19 → 23}/include/tgmath.h +0 -0
- /package/lib/clang/{19 → 23}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/uintrintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/unwind.h +0 -0
- /package/lib/clang/{19 → 23}/include/usermsrintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/vadefs.h +0 -0
- /package/lib/clang/{19 → 23}/include/varargs.h +0 -0
- /package/lib/clang/{19 → 23}/include/velintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{19 → 23}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{19 → 23}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/wmmintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/xtestintrin.h +0 -0
- /package/lib/clang/{19 → 23}/include/yvals_core.h +0 -0
- /package/lib/clang/{19 → 23}/include/zos_wrappers/builtins.h +0 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
//===----- hlsl_intrinsic_helpers.h - HLSL helpers 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_INTRINSIC_HELPERS_H_
|
|
10
|
+
#define _HLSL_HLSL_INTRINSIC_HELPERS_H_
|
|
11
|
+
|
|
12
|
+
namespace hlsl {
|
|
13
|
+
namespace __detail {
|
|
14
|
+
|
|
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);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
template <typename T, int N>
|
|
22
|
+
constexpr enable_if_t<is_same<float, T>::value || is_same<half, T>::value, T>
|
|
23
|
+
length_impl(vector<T, N> X) {
|
|
24
|
+
#if (__has_builtin(__builtin_spirv_length))
|
|
25
|
+
return __builtin_spirv_length(X);
|
|
26
|
+
#else
|
|
27
|
+
return sqrt(dot(X, X));
|
|
28
|
+
#endif
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
constexpr float dot2add_impl(half2 a, half2 b, float c) {
|
|
32
|
+
#if (__has_builtin(__builtin_dx_dot2add))
|
|
33
|
+
return __builtin_dx_dot2add(a, b, c);
|
|
34
|
+
#else
|
|
35
|
+
return dot(a, b) + c;
|
|
36
|
+
#endif
|
|
37
|
+
}
|
|
38
|
+
|
|
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) {
|
|
57
|
+
return I - 2 * N * I * N;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
template <typename T, int L>
|
|
61
|
+
constexpr vector<T, L> reflect_impl(vector<T, L> I, vector<T, L> N) {
|
|
62
|
+
#if (__has_builtin(__builtin_spirv_reflect))
|
|
63
|
+
return __builtin_spirv_reflect(I, N);
|
|
64
|
+
#else
|
|
65
|
+
return I - 2 * N * dot(I, N);
|
|
66
|
+
#endif
|
|
67
|
+
}
|
|
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
|
+
|
|
79
|
+
template <typename T> constexpr T fmod_impl(T X, T Y) {
|
|
80
|
+
#if !defined(__DIRECTX__)
|
|
81
|
+
return __builtin_elementwise_fmod(X, Y);
|
|
82
|
+
#else
|
|
83
|
+
T div = X / Y;
|
|
84
|
+
bool ge = div >= 0;
|
|
85
|
+
T frc = frac(abs(div));
|
|
86
|
+
return select<T>(ge, frc, -frc) * Y;
|
|
87
|
+
#endif
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template <typename T, int N>
|
|
91
|
+
constexpr vector<T, N> fmod_vec_impl(vector<T, N> X, vector<T, N> Y) {
|
|
92
|
+
#if !defined(__DIRECTX__)
|
|
93
|
+
return __builtin_elementwise_fmod(X, Y);
|
|
94
|
+
#else
|
|
95
|
+
vector<T, N> div = X / Y;
|
|
96
|
+
vector<bool, N> ge = div >= 0;
|
|
97
|
+
vector<T, N> frc = frac(abs(div));
|
|
98
|
+
return select<T>(ge, frc, -frc) * Y;
|
|
99
|
+
#endif
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
template <typename T> constexpr T smoothstep_impl(T Min, T Max, T X) {
|
|
103
|
+
#if (__has_builtin(__builtin_spirv_smoothstep))
|
|
104
|
+
return __builtin_spirv_smoothstep(Min, Max, X);
|
|
105
|
+
#else
|
|
106
|
+
T S = saturate((X - Min) / (Max - Min));
|
|
107
|
+
return (3 - 2 * S) * S * S;
|
|
108
|
+
#endif
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
template <typename T> constexpr vector<T, 4> lit_impl(T NDotL, T NDotH, T M) {
|
|
112
|
+
bool DiffuseCond = NDotL < 0;
|
|
113
|
+
T Diffuse = select<T>(DiffuseCond, 0, NDotL);
|
|
114
|
+
vector<T, 4> Result = {1, Diffuse, 0, 1};
|
|
115
|
+
// clang-format off
|
|
116
|
+
bool SpecularCond = or(DiffuseCond, (NDotH < 0));
|
|
117
|
+
// clang-format on
|
|
118
|
+
T SpecularExp = exp(log(NDotH) * M);
|
|
119
|
+
Result[2] = select<T>(SpecularCond, 0, SpecularExp);
|
|
120
|
+
return Result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
template <typename T> constexpr T faceforward_impl(T N, T I, T Ng) {
|
|
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);
|
|
150
|
+
#else
|
|
151
|
+
return __builtin_hlsl_elementwise_ddy_coarse(input);
|
|
152
|
+
#endif
|
|
153
|
+
}
|
|
154
|
+
|
|
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
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
} // namespace __detail
|
|
168
|
+
} // namespace hlsl
|
|
169
|
+
|
|
170
|
+
#endif // _HLSL_HLSL_INTRINSIC_HELPERS_H_
|
|
@@ -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_
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//===----- hlsl_spirv.h - HLSL definitions for SPIR-V target --------------===//
|
|
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_SPIRV_H_
|
|
10
|
+
#define _HLSL_HLSL_SPIRV_H_
|
|
11
|
+
|
|
12
|
+
namespace hlsl {
|
|
13
|
+
namespace vk {
|
|
14
|
+
template <typename T, T v> struct integral_constant {
|
|
15
|
+
static constexpr T value = v;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
template <typename T> struct Literal {};
|
|
19
|
+
|
|
20
|
+
template <uint Opcode, uint Size, uint Alignment, typename... Operands>
|
|
21
|
+
using SpirvType = __hlsl_spirv_type<Opcode, Size, Alignment, Operands...>;
|
|
22
|
+
|
|
23
|
+
template <uint Opcode, typename... Operands>
|
|
24
|
+
using SpirvOpaqueType = __hlsl_spirv_type<Opcode, 0, 0, Operands...>;
|
|
25
|
+
} // namespace vk
|
|
26
|
+
} // namespace hlsl
|
|
27
|
+
|
|
28
|
+
#endif // _HLSL_HLSL_SPIRV_H_
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//===----- hlsl.h - HLSL definitions --------------------------------------===//
|
|
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_H_
|
|
10
|
+
#define _HLSL_H_
|
|
11
|
+
|
|
12
|
+
#if defined(__clang__)
|
|
13
|
+
// Don't warn about any of the DXC compatibility warnings in the clang-only
|
|
14
|
+
// headers since these will never be used with DXC anyways.
|
|
15
|
+
#pragma clang diagnostic push
|
|
16
|
+
#pragma clang diagnostic ignored "-Whlsl-dxc-compatability"
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
// Basic types, type traits and type-independent templates.
|
|
20
|
+
#include "hlsl/hlsl_basic_types.h"
|
|
21
|
+
#include "hlsl/hlsl_detail.h"
|
|
22
|
+
|
|
23
|
+
// HLSL standard library function declarations/definitions.
|
|
24
|
+
#include "hlsl/hlsl_alias_intrinsics.h"
|
|
25
|
+
#if __HLSL_VERSION <= __HLSL_202x
|
|
26
|
+
#include "hlsl/hlsl_compat_overloads.h"
|
|
27
|
+
#endif
|
|
28
|
+
#include "hlsl/hlsl_intrinsics.h"
|
|
29
|
+
|
|
30
|
+
#ifdef __spirv__
|
|
31
|
+
#include "hlsl/hlsl_spirv.h"
|
|
32
|
+
#endif // __spirv__
|
|
33
|
+
|
|
34
|
+
#if defined(__clang__)
|
|
35
|
+
#pragma clang diagnostic pop
|
|
36
|
+
#endif
|
|
37
|
+
|
|
38
|
+
#endif //_HLSL_H_
|