@cpp-linter/clang-tidy-win32-x64 21.1.0 → 22.1.8

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.
Files changed (304) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/22/include/__clang_cuda_complex_builtins.h +229 -0
  4. package/lib/clang/{21 → 22}/include/__clang_cuda_device_functions.h +1 -1
  5. package/lib/clang/{21 → 22}/include/__clang_cuda_runtime_wrapper.h +18 -0
  6. package/lib/clang/{21 → 22}/include/__clang_hip_libdevice_declares.h +17 -22
  7. package/lib/clang/{21 → 22}/include/__clang_hip_math.h +2 -2
  8. package/lib/clang/{21 → 22}/include/__clang_hip_runtime_wrapper.h +3 -0
  9. package/lib/clang/{21 → 22}/include/__clang_spirv_builtins.h +12 -12
  10. package/lib/clang/{21/include/float.h → 22/include/__float_float.h} +13 -24
  11. package/lib/clang/22/include/__float_header_macro.h +12 -0
  12. package/lib/clang/22/include/__float_infinity_nan.h +20 -0
  13. package/lib/clang/22/include/amo.h +131 -0
  14. package/lib/clang/{21 → 22}/include/amxavx512intrin.h +215 -1
  15. package/lib/clang/{21 → 22}/include/amxintrin.h +0 -2
  16. package/lib/clang/{21 → 22}/include/arm_acle.h +37 -27
  17. package/lib/clang/{21 → 22}/include/arm_neon.h +218 -82
  18. package/lib/clang/{21 → 22}/include/arm_sme.h +8 -8
  19. package/lib/clang/{21 → 22}/include/arm_sve.h +4162 -3782
  20. package/lib/clang/{21 → 22}/include/avx10_2_512bf16intrin.h +19 -12
  21. package/lib/clang/{21 → 22}/include/avx10_2_512convertintrin.h +1 -1
  22. package/lib/clang/{21 → 22}/include/avx10_2_512niintrin.h +25 -25
  23. package/lib/clang/{21 → 22}/include/avx10_2_512satcvtdsintrin.h +1 -1
  24. package/lib/clang/{21 → 22}/include/avx10_2bf16intrin.h +54 -45
  25. package/lib/clang/{21 → 22}/include/avx10_2convertintrin.h +2 -2
  26. package/lib/clang/{21 → 22}/include/avx10_2copyintrin.h +1 -1
  27. package/lib/clang/{21 → 22}/include/avx10_2niintrin.h +2 -2
  28. package/lib/clang/{21 → 22}/include/avx10_2satcvtdsintrin.h +2 -2
  29. package/lib/clang/{21 → 22}/include/avx2intrin.h +275 -377
  30. package/lib/clang/{21 → 22}/include/avx512bf16intrin.h +25 -16
  31. package/lib/clang/{21 → 22}/include/avx512bitalgintrin.h +19 -30
  32. package/lib/clang/{21 → 22}/include/avx512bwintrin.h +386 -505
  33. package/lib/clang/22/include/avx512cdintrin.h +112 -0
  34. package/lib/clang/{21 → 22}/include/avx512dqintrin.h +132 -161
  35. package/lib/clang/{21 → 22}/include/avx512fintrin.h +1015 -1424
  36. package/lib/clang/{21 → 22}/include/avx512fp16intrin.h +112 -110
  37. package/lib/clang/22/include/avx512ifmaintrin.h +68 -0
  38. package/lib/clang/22/include/avx512ifmavlintrin.h +138 -0
  39. package/lib/clang/{21 → 22}/include/avx512vbmi2intrin.h +43 -32
  40. package/lib/clang/{21 → 22}/include/avx512vbmiintrin.h +19 -27
  41. package/lib/clang/{21 → 22}/include/avx512vbmivlintrin.h +35 -49
  42. package/lib/clang/{21 → 22}/include/avx512vlbf16intrin.h +32 -22
  43. package/lib/clang/{21 → 22}/include/avx512vlbitalgintrin.h +37 -53
  44. package/lib/clang/{21 → 22}/include/avx512vlbwintrin.h +470 -573
  45. package/lib/clang/22/include/avx512vlcdintrin.h +202 -0
  46. package/lib/clang/{21 → 22}/include/avx512vldqintrin.h +110 -127
  47. package/lib/clang/{21 → 22}/include/avx512vlfp16intrin.h +130 -111
  48. package/lib/clang/{21 → 22}/include/avx512vlintrin.h +945 -1299
  49. package/lib/clang/{21 → 22}/include/avx512vlvbmi2intrin.h +78 -63
  50. package/lib/clang/{21 → 22}/include/avx512vlvnniintrin.h +21 -18
  51. package/lib/clang/{21 → 22}/include/avx512vlvp2intersectintrin.h +2 -2
  52. package/lib/clang/{21 → 22}/include/avx512vnniintrin.h +10 -10
  53. package/lib/clang/{21 → 22}/include/avx512vp2intersectintrin.h +1 -2
  54. package/lib/clang/{21 → 22}/include/avx512vpopcntdqintrin.h +8 -10
  55. package/lib/clang/{21 → 22}/include/avx512vpopcntdqvlintrin.h +17 -15
  56. package/lib/clang/{21 → 22}/include/avxifmaintrin.h +16 -0
  57. package/lib/clang/{21 → 22}/include/avxintrin.h +165 -241
  58. package/lib/clang/{21 → 22}/include/avxvnniint16intrin.h +118 -99
  59. package/lib/clang/{21 → 22}/include/avxvnniint8intrin.h +56 -32
  60. package/lib/clang/{21 → 22}/include/avxvnniintrin.h +16 -8
  61. package/lib/clang/{21 → 22}/include/cpuid.h +101 -4
  62. package/lib/clang/22/include/cuda_wrappers/__utility/declval.h +28 -0
  63. package/lib/clang/{21 → 22}/include/emmintrin.h +168 -168
  64. package/lib/clang/{21 → 22}/include/f16cintrin.h +23 -9
  65. package/lib/clang/22/include/float.h +48 -0
  66. package/lib/clang/22/include/fma4intrin.h +220 -0
  67. package/lib/clang/{21 → 22}/include/fmaintrin.h +96 -66
  68. package/lib/clang/{21 → 22}/include/gfniintrin.h +21 -16
  69. package/lib/clang/{21 → 22}/include/gpuintrin.h +6 -4
  70. package/lib/clang/{21 → 22}/include/hexagon_types.h +23 -20
  71. package/lib/clang/{21 → 22}/include/hlsl/hlsl_alias_intrinsics.h +434 -84
  72. package/lib/clang/22/include/hlsl/hlsl_basic_types.h +370 -0
  73. package/lib/clang/{21 → 22}/include/hlsl/hlsl_compat_overloads.h +111 -18
  74. package/lib/clang/{21 → 22}/include/hlsl/hlsl_intrinsic_helpers.h +51 -5
  75. package/lib/clang/{21 → 22}/include/hlsl/hlsl_intrinsics.h +269 -1
  76. package/lib/clang/{21 → 22}/include/hvx_hexagon_protos.h +649 -860
  77. package/lib/clang/{21 → 22}/include/immintrin.h +0 -12
  78. package/lib/clang/{21 → 22}/include/intrin.h +4 -0
  79. package/lib/clang/{21 → 22}/include/lasxintrin.h +113 -0
  80. package/lib/clang/{21 → 22}/include/llvm_libc_wrappers/assert.h +3 -5
  81. package/lib/clang/22/include/llvm_libc_wrappers/ctype.h +28 -0
  82. package/lib/clang/{21 → 22}/include/llvm_libc_wrappers/inttypes.h +3 -5
  83. package/lib/clang/22/include/llvm_libc_wrappers/stdio.h +52 -0
  84. package/lib/clang/22/include/llvm_libc_wrappers/stdlib.h +32 -0
  85. package/lib/clang/22/include/llvm_libc_wrappers/string.h +28 -0
  86. package/lib/clang/{21 → 22}/include/llvm_libc_wrappers/time.h +4 -10
  87. package/lib/clang/{21 → 22}/include/mmintrin.h +188 -257
  88. package/lib/clang/{21 → 22}/include/module.modulemap +23 -4
  89. package/lib/clang/{21 → 22}/include/movrs_avx10_2_512intrin.h +2 -2
  90. package/lib/clang/{21 → 22}/include/movrs_avx10_2intrin.h +4 -4
  91. package/lib/clang/{21 → 22}/include/opencl-c-base.h +0 -93
  92. package/lib/clang/{21 → 22}/include/opencl-c.h +62 -16
  93. package/lib/clang/{21 → 22}/include/pmmintrin.h +12 -24
  94. package/lib/clang/{21 → 22}/include/ptrauth.h +14 -0
  95. package/lib/clang/22/include/riscv_mips.h +34 -0
  96. package/lib/clang/22/include/riscv_nds.h +89 -0
  97. package/lib/clang/{21 → 22}/include/sifive_vector.h +58 -2
  98. package/lib/clang/{21 → 22}/include/sm4evexintrin.h +2 -2
  99. package/lib/clang/{21 → 22}/include/smmintrin.h +77 -59
  100. package/lib/clang/22/include/spirvintrin.h +194 -0
  101. package/lib/clang/22/include/stddefer.h +19 -0
  102. package/lib/clang/{21 → 22}/include/tmmintrin.h +116 -147
  103. package/lib/clang/{21 → 22}/include/vaesintrin.h +1 -2
  104. package/lib/clang/{21 → 22}/include/xmmintrin.h +44 -70
  105. package/lib/clang/{21 → 22}/include/xopintrin.h +20 -10
  106. package/package.json +6 -6
  107. package/lib/clang/21/include/__clang_cuda_complex_builtins.h +0 -285
  108. package/lib/clang/21/include/amxbf16transposeintrin.h +0 -94
  109. package/lib/clang/21/include/amxcomplextransposeintrin.h +0 -303
  110. package/lib/clang/21/include/amxfp16transposeintrin.h +0 -94
  111. package/lib/clang/21/include/amxmovrstransposeintrin.h +0 -200
  112. package/lib/clang/21/include/amxtf32transposeintrin.h +0 -105
  113. package/lib/clang/21/include/amxtransposeintrin.h +0 -248
  114. package/lib/clang/21/include/avx512cdintrin.h +0 -125
  115. package/lib/clang/21/include/avx512ifmaintrin.h +0 -70
  116. package/lib/clang/21/include/avx512ifmavlintrin.h +0 -111
  117. package/lib/clang/21/include/avx512vlcdintrin.h +0 -230
  118. package/lib/clang/21/include/fma4intrin.h +0 -218
  119. package/lib/clang/21/include/hlsl/hlsl_basic_types.h +0 -120
  120. package/lib/clang/21/include/llvm_libc_wrappers/ctype.h +0 -140
  121. package/lib/clang/21/include/llvm_libc_wrappers/stdio.h +0 -80
  122. package/lib/clang/21/include/llvm_libc_wrappers/stdlib.h +0 -53
  123. package/lib/clang/21/include/llvm_libc_wrappers/string.h +0 -96
  124. /package/lib/clang/{21 → 22}/include/__clang_cuda_builtin_vars.h +0 -0
  125. /package/lib/clang/{21 → 22}/include/__clang_cuda_cmath.h +0 -0
  126. /package/lib/clang/{21 → 22}/include/__clang_cuda_intrinsics.h +0 -0
  127. /package/lib/clang/{21 → 22}/include/__clang_cuda_libdevice_declares.h +0 -0
  128. /package/lib/clang/{21 → 22}/include/__clang_cuda_math.h +0 -0
  129. /package/lib/clang/{21 → 22}/include/__clang_cuda_math_forward_declares.h +0 -0
  130. /package/lib/clang/{21 → 22}/include/__clang_cuda_texture_intrinsics.h +0 -0
  131. /package/lib/clang/{21 → 22}/include/__clang_hip_cmath.h +0 -0
  132. /package/lib/clang/{21 → 22}/include/__clang_hip_stdlib.h +0 -0
  133. /package/lib/clang/{21 → 22}/include/__stdarg___gnuc_va_list.h +0 -0
  134. /package/lib/clang/{21 → 22}/include/__stdarg___va_copy.h +0 -0
  135. /package/lib/clang/{21 → 22}/include/__stdarg_header_macro.h +0 -0
  136. /package/lib/clang/{21 → 22}/include/__stdarg_va_arg.h +0 -0
  137. /package/lib/clang/{21 → 22}/include/__stdarg_va_copy.h +0 -0
  138. /package/lib/clang/{21 → 22}/include/__stdarg_va_list.h +0 -0
  139. /package/lib/clang/{21 → 22}/include/__stddef_header_macro.h +0 -0
  140. /package/lib/clang/{21 → 22}/include/__stddef_max_align_t.h +0 -0
  141. /package/lib/clang/{21 → 22}/include/__stddef_null.h +0 -0
  142. /package/lib/clang/{21 → 22}/include/__stddef_nullptr_t.h +0 -0
  143. /package/lib/clang/{21 → 22}/include/__stddef_offsetof.h +0 -0
  144. /package/lib/clang/{21 → 22}/include/__stddef_ptrdiff_t.h +0 -0
  145. /package/lib/clang/{21 → 22}/include/__stddef_rsize_t.h +0 -0
  146. /package/lib/clang/{21 → 22}/include/__stddef_size_t.h +0 -0
  147. /package/lib/clang/{21 → 22}/include/__stddef_unreachable.h +0 -0
  148. /package/lib/clang/{21 → 22}/include/__stddef_wchar_t.h +0 -0
  149. /package/lib/clang/{21 → 22}/include/__stddef_wint_t.h +0 -0
  150. /package/lib/clang/{21 → 22}/include/__wmmintrin_aes.h +0 -0
  151. /package/lib/clang/{21 → 22}/include/__wmmintrin_pclmul.h +0 -0
  152. /package/lib/clang/{21 → 22}/include/adcintrin.h +0 -0
  153. /package/lib/clang/{21 → 22}/include/adxintrin.h +0 -0
  154. /package/lib/clang/{21 → 22}/include/altivec.h +0 -0
  155. /package/lib/clang/{21 → 22}/include/amdgpuintrin.h +0 -0
  156. /package/lib/clang/{21 → 22}/include/ammintrin.h +0 -0
  157. /package/lib/clang/{21 → 22}/include/amxcomplexintrin.h +0 -0
  158. /package/lib/clang/{21 → 22}/include/amxfp16intrin.h +0 -0
  159. /package/lib/clang/{21 → 22}/include/amxfp8intrin.h +0 -0
  160. /package/lib/clang/{21 → 22}/include/amxmovrsintrin.h +0 -0
  161. /package/lib/clang/{21 → 22}/include/amxtf32intrin.h +0 -0
  162. /package/lib/clang/{21 → 22}/include/andes_vector.h +0 -0
  163. /package/lib/clang/{21 → 22}/include/arm64intr.h +0 -0
  164. /package/lib/clang/{21 → 22}/include/arm_bf16.h +0 -0
  165. /package/lib/clang/{21 → 22}/include/arm_cde.h +0 -0
  166. /package/lib/clang/{21 → 22}/include/arm_cmse.h +0 -0
  167. /package/lib/clang/{21 → 22}/include/arm_fp16.h +0 -0
  168. /package/lib/clang/{21 → 22}/include/arm_mve.h +0 -0
  169. /package/lib/clang/{21 → 22}/include/arm_neon_sve_bridge.h +0 -0
  170. /package/lib/clang/{21 → 22}/include/arm_vector_types.h +0 -0
  171. /package/lib/clang/{21 → 22}/include/armintr.h +0 -0
  172. /package/lib/clang/{21 → 22}/include/avx10_2_512minmaxintrin.h +0 -0
  173. /package/lib/clang/{21 → 22}/include/avx10_2_512satcvtintrin.h +0 -0
  174. /package/lib/clang/{21 → 22}/include/avx10_2minmaxintrin.h +0 -0
  175. /package/lib/clang/{21 → 22}/include/avx10_2satcvtintrin.h +0 -0
  176. /package/lib/clang/{21 → 22}/include/avxneconvertintrin.h +0 -0
  177. /package/lib/clang/{21 → 22}/include/bmi2intrin.h +0 -0
  178. /package/lib/clang/{21 → 22}/include/bmiintrin.h +0 -0
  179. /package/lib/clang/{21 → 22}/include/builtins.h +0 -0
  180. /package/lib/clang/{21 → 22}/include/cet.h +0 -0
  181. /package/lib/clang/{21 → 22}/include/cetintrin.h +0 -0
  182. /package/lib/clang/{21 → 22}/include/cldemoteintrin.h +0 -0
  183. /package/lib/clang/{21 → 22}/include/clflushoptintrin.h +0 -0
  184. /package/lib/clang/{21 → 22}/include/clwbintrin.h +0 -0
  185. /package/lib/clang/{21 → 22}/include/clzerointrin.h +0 -0
  186. /package/lib/clang/{21 → 22}/include/cmpccxaddintrin.h +0 -0
  187. /package/lib/clang/{21 → 22}/include/crc32intrin.h +0 -0
  188. /package/lib/clang/{21 → 22}/include/cuda_wrappers/algorithm +0 -0
  189. /package/lib/clang/{21 → 22}/include/cuda_wrappers/bits/basic_string.h +0 -0
  190. /package/lib/clang/{21 → 22}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  191. /package/lib/clang/{21 → 22}/include/cuda_wrappers/bits/c++config.h +0 -0
  192. /package/lib/clang/{21 → 22}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  193. /package/lib/clang/{21 → 22}/include/cuda_wrappers/cmath +0 -0
  194. /package/lib/clang/{21 → 22}/include/cuda_wrappers/complex +0 -0
  195. /package/lib/clang/{21 → 22}/include/cuda_wrappers/new +0 -0
  196. /package/lib/clang/{21 → 22}/include/enqcmdintrin.h +0 -0
  197. /package/lib/clang/{21 → 22}/include/fxsrintrin.h +0 -0
  198. /package/lib/clang/{21 → 22}/include/hexagon_circ_brev_intrinsics.h +0 -0
  199. /package/lib/clang/{21 → 22}/include/hexagon_protos.h +0 -0
  200. /package/lib/clang/{21 → 22}/include/hlsl/hlsl_detail.h +0 -0
  201. /package/lib/clang/{21 → 22}/include/hlsl/hlsl_spirv.h +0 -0
  202. /package/lib/clang/{21 → 22}/include/hlsl.h +0 -0
  203. /package/lib/clang/{21 → 22}/include/hresetintrin.h +0 -0
  204. /package/lib/clang/{21 → 22}/include/htmintrin.h +0 -0
  205. /package/lib/clang/{21 → 22}/include/htmxlintrin.h +0 -0
  206. /package/lib/clang/{21 → 22}/include/ia32intrin.h +0 -0
  207. /package/lib/clang/{21 → 22}/include/intrin0.h +0 -0
  208. /package/lib/clang/{21 → 22}/include/inttypes.h +0 -0
  209. /package/lib/clang/{21 → 22}/include/invpcidintrin.h +0 -0
  210. /package/lib/clang/{21 → 22}/include/iso646.h +0 -0
  211. /package/lib/clang/{21 → 22}/include/keylockerintrin.h +0 -0
  212. /package/lib/clang/{21 → 22}/include/larchintrin.h +0 -0
  213. /package/lib/clang/{21 → 22}/include/limits.h +0 -0
  214. /package/lib/clang/{21 → 22}/include/llvm_offload_wrappers/__llvm_offload.h +0 -0
  215. /package/lib/clang/{21 → 22}/include/llvm_offload_wrappers/__llvm_offload_device.h +0 -0
  216. /package/lib/clang/{21 → 22}/include/llvm_offload_wrappers/__llvm_offload_host.h +0 -0
  217. /package/lib/clang/{21 → 22}/include/lsxintrin.h +0 -0
  218. /package/lib/clang/{21 → 22}/include/lwpintrin.h +0 -0
  219. /package/lib/clang/{21 → 22}/include/lzcntintrin.h +0 -0
  220. /package/lib/clang/{21 → 22}/include/mm3dnow.h +0 -0
  221. /package/lib/clang/{21 → 22}/include/mm_malloc.h +0 -0
  222. /package/lib/clang/{21 → 22}/include/movdirintrin.h +0 -0
  223. /package/lib/clang/{21 → 22}/include/movrsintrin.h +0 -0
  224. /package/lib/clang/{21 → 22}/include/msa.h +0 -0
  225. /package/lib/clang/{21 → 22}/include/mwaitxintrin.h +0 -0
  226. /package/lib/clang/{21 → 22}/include/nmmintrin.h +0 -0
  227. /package/lib/clang/{21 → 22}/include/nvptxintrin.h +0 -0
  228. /package/lib/clang/{21 → 22}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  229. /package/lib/clang/{21 → 22}/include/openmp_wrappers/cmath +0 -0
  230. /package/lib/clang/{21 → 22}/include/openmp_wrappers/complex +0 -0
  231. /package/lib/clang/{21 → 22}/include/openmp_wrappers/complex.h +0 -0
  232. /package/lib/clang/{21 → 22}/include/openmp_wrappers/complex_cmath.h +0 -0
  233. /package/lib/clang/{21 → 22}/include/openmp_wrappers/math.h +0 -0
  234. /package/lib/clang/{21 → 22}/include/openmp_wrappers/new +0 -0
  235. /package/lib/clang/{21 → 22}/include/pconfigintrin.h +0 -0
  236. /package/lib/clang/{21 → 22}/include/pkuintrin.h +0 -0
  237. /package/lib/clang/{21 → 22}/include/popcntintrin.h +0 -0
  238. /package/lib/clang/{21 → 22}/include/ppc_wrappers/bmi2intrin.h +0 -0
  239. /package/lib/clang/{21 → 22}/include/ppc_wrappers/bmiintrin.h +0 -0
  240. /package/lib/clang/{21 → 22}/include/ppc_wrappers/emmintrin.h +0 -0
  241. /package/lib/clang/{21 → 22}/include/ppc_wrappers/immintrin.h +0 -0
  242. /package/lib/clang/{21 → 22}/include/ppc_wrappers/mm_malloc.h +0 -0
  243. /package/lib/clang/{21 → 22}/include/ppc_wrappers/mmintrin.h +0 -0
  244. /package/lib/clang/{21 → 22}/include/ppc_wrappers/nmmintrin.h +0 -0
  245. /package/lib/clang/{21 → 22}/include/ppc_wrappers/pmmintrin.h +0 -0
  246. /package/lib/clang/{21 → 22}/include/ppc_wrappers/smmintrin.h +0 -0
  247. /package/lib/clang/{21 → 22}/include/ppc_wrappers/tmmintrin.h +0 -0
  248. /package/lib/clang/{21 → 22}/include/ppc_wrappers/x86gprintrin.h +0 -0
  249. /package/lib/clang/{21 → 22}/include/ppc_wrappers/x86intrin.h +0 -0
  250. /package/lib/clang/{21 → 22}/include/ppc_wrappers/xmmintrin.h +0 -0
  251. /package/lib/clang/{21 → 22}/include/prfchiintrin.h +0 -0
  252. /package/lib/clang/{21 → 22}/include/prfchwintrin.h +0 -0
  253. /package/lib/clang/{21 → 22}/include/ptwriteintrin.h +0 -0
  254. /package/lib/clang/{21 → 22}/include/raointintrin.h +0 -0
  255. /package/lib/clang/{21 → 22}/include/rdpruintrin.h +0 -0
  256. /package/lib/clang/{21 → 22}/include/rdseedintrin.h +0 -0
  257. /package/lib/clang/{21 → 22}/include/riscv_bitmanip.h +0 -0
  258. /package/lib/clang/{21 → 22}/include/riscv_corev_alu.h +0 -0
  259. /package/lib/clang/{21 → 22}/include/riscv_crypto.h +0 -0
  260. /package/lib/clang/{21 → 22}/include/riscv_ntlh.h +0 -0
  261. /package/lib/clang/{21 → 22}/include/riscv_vector.h +0 -0
  262. /package/lib/clang/{21 → 22}/include/rtmintrin.h +0 -0
  263. /package/lib/clang/{21 → 22}/include/s390intrin.h +0 -0
  264. /package/lib/clang/{21 → 22}/include/serializeintrin.h +0 -0
  265. /package/lib/clang/{21 → 22}/include/sgxintrin.h +0 -0
  266. /package/lib/clang/{21 → 22}/include/sha512intrin.h +0 -0
  267. /package/lib/clang/{21 → 22}/include/shaintrin.h +0 -0
  268. /package/lib/clang/{21 → 22}/include/sm3intrin.h +0 -0
  269. /package/lib/clang/{21 → 22}/include/sm4intrin.h +0 -0
  270. /package/lib/clang/{21 → 22}/include/stdalign.h +0 -0
  271. /package/lib/clang/{21 → 22}/include/stdarg.h +0 -0
  272. /package/lib/clang/{21 → 22}/include/stdatomic.h +0 -0
  273. /package/lib/clang/{21 → 22}/include/stdbool.h +0 -0
  274. /package/lib/clang/{21 → 22}/include/stdckdint.h +0 -0
  275. /package/lib/clang/{21 → 22}/include/stdcountof.h +0 -0
  276. /package/lib/clang/{21 → 22}/include/stddef.h +0 -0
  277. /package/lib/clang/{21 → 22}/include/stdint.h +0 -0
  278. /package/lib/clang/{21 → 22}/include/stdnoreturn.h +0 -0
  279. /package/lib/clang/{21 → 22}/include/tbmintrin.h +0 -0
  280. /package/lib/clang/{21 → 22}/include/tgmath.h +0 -0
  281. /package/lib/clang/{21 → 22}/include/tsxldtrkintrin.h +0 -0
  282. /package/lib/clang/{21 → 22}/include/uintrintrin.h +0 -0
  283. /package/lib/clang/{21 → 22}/include/unwind.h +0 -0
  284. /package/lib/clang/{21 → 22}/include/usermsrintrin.h +0 -0
  285. /package/lib/clang/{21 → 22}/include/vadefs.h +0 -0
  286. /package/lib/clang/{21 → 22}/include/varargs.h +0 -0
  287. /package/lib/clang/{21 → 22}/include/vecintrin.h +0 -0
  288. /package/lib/clang/{21 → 22}/include/velintrin.h +0 -0
  289. /package/lib/clang/{21 → 22}/include/velintrin_approx.h +0 -0
  290. /package/lib/clang/{21 → 22}/include/velintrin_gen.h +0 -0
  291. /package/lib/clang/{21 → 22}/include/vpclmulqdqintrin.h +0 -0
  292. /package/lib/clang/{21 → 22}/include/waitpkgintrin.h +0 -0
  293. /package/lib/clang/{21 → 22}/include/wasm_simd128.h +0 -0
  294. /package/lib/clang/{21 → 22}/include/wbnoinvdintrin.h +0 -0
  295. /package/lib/clang/{21 → 22}/include/wmmintrin.h +0 -0
  296. /package/lib/clang/{21 → 22}/include/x86gprintrin.h +0 -0
  297. /package/lib/clang/{21 → 22}/include/x86intrin.h +0 -0
  298. /package/lib/clang/{21 → 22}/include/xsavecintrin.h +0 -0
  299. /package/lib/clang/{21 → 22}/include/xsaveintrin.h +0 -0
  300. /package/lib/clang/{21 → 22}/include/xsaveoptintrin.h +0 -0
  301. /package/lib/clang/{21 → 22}/include/xsavesintrin.h +0 -0
  302. /package/lib/clang/{21 → 22}/include/xtestintrin.h +0 -0
  303. /package/lib/clang/{21 → 22}/include/yvals_core.h +0 -0
  304. /package/lib/clang/{21 → 22}/include/zos_wrappers/builtins.h +0 -0
@@ -7,153 +7,225 @@
7
7
  //===----------------------------------------------------------------------===//
8
8
 
9
9
  #ifndef _HLSL_COMPAT_OVERLOADS_H_
10
- #define _HLSl_COMPAT_OVERLOADS_H_
10
+ #define _HLSL_COMPAT_OVERLOADS_H_
11
11
 
12
12
  namespace hlsl {
13
13
 
14
14
  // Note: Functions in this file are sorted alphabetically, then grouped by base
15
- // element type, and the element types are sorted by size, then singed integer,
15
+ // element type, and the element types are sorted by size, then signed integer,
16
16
  // unsigned integer and floating point. Keeping this ordering consistent will
17
17
  // help keep this file manageable as it grows.
18
18
 
19
+ #define _DXC_DEPRECATED_64BIT_FN(fn) \
20
+ [[deprecated("In 202x 64 bit API lowering for " #fn " is deprecated. " \
21
+ "Explicitly cast parameters to 32 or 16 bit types.")]]
22
+
23
+ #define _DXC_DEPRECATED_INT_FN(fn) \
24
+ [[deprecated("In 202x int lowering for " #fn " is deprecated. " \
25
+ "Explicitly cast parameters to float types.")]]
26
+
27
+ #define _DXC_DEPRECATED_VEC_SCALAR_FN(fn) \
28
+ [[deprecated("In 202x mismatched vector/scalar lowering for " #fn " is " \
29
+ "deprecated. Explicitly cast parameters.")]]
30
+
19
31
  #define _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS(fn) \
32
+ _DXC_DEPRECATED_64BIT_FN(fn) \
20
33
  constexpr float fn(double V) { return fn((float)V); } \
34
+ _DXC_DEPRECATED_64BIT_FN(fn) \
21
35
  constexpr float2 fn(double2 V) { return fn((float2)V); } \
36
+ _DXC_DEPRECATED_64BIT_FN(fn) \
22
37
  constexpr float3 fn(double3 V) { return fn((float3)V); } \
38
+ _DXC_DEPRECATED_64BIT_FN(fn) \
23
39
  constexpr float4 fn(double4 V) { return fn((float4)V); }
24
40
 
25
41
  #define _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS(fn) \
42
+ _DXC_DEPRECATED_64BIT_FN(fn) \
26
43
  constexpr float fn(double V1, double V2) { \
27
44
  return fn((float)V1, (float)V2); \
28
45
  } \
46
+ _DXC_DEPRECATED_64BIT_FN(fn) \
29
47
  constexpr float2 fn(double2 V1, double2 V2) { \
30
48
  return fn((float2)V1, (float2)V2); \
31
49
  } \
50
+ _DXC_DEPRECATED_64BIT_FN(fn) \
32
51
  constexpr float3 fn(double3 V1, double3 V2) { \
33
52
  return fn((float3)V1, (float3)V2); \
34
53
  } \
54
+ _DXC_DEPRECATED_64BIT_FN(fn) \
35
55
  constexpr float4 fn(double4 V1, double4 V2) { \
36
56
  return fn((float4)V1, (float4)V2); \
37
57
  }
38
58
 
39
59
  #define _DXC_COMPAT_TERNARY_DOUBLE_OVERLOADS(fn) \
60
+ _DXC_DEPRECATED_64BIT_FN(fn) \
40
61
  constexpr float fn(double V1, double V2, double V3) { \
41
62
  return fn((float)V1, (float)V2, (float)V3); \
42
63
  } \
64
+ _DXC_DEPRECATED_64BIT_FN(fn) \
43
65
  constexpr float2 fn(double2 V1, double2 V2, double2 V3) { \
44
66
  return fn((float2)V1, (float2)V2, (float2)V3); \
45
67
  } \
68
+ _DXC_DEPRECATED_64BIT_FN(fn) \
46
69
  constexpr float3 fn(double3 V1, double3 V2, double3 V3) { \
47
70
  return fn((float3)V1, (float3)V2, (float3)V3); \
48
71
  } \
72
+ _DXC_DEPRECATED_64BIT_FN(fn) \
49
73
  constexpr float4 fn(double4 V1, double4 V2, double4 V3) { \
50
74
  return fn((float4)V1, (float4)V2, (float4)V3); \
51
75
  }
52
76
 
53
77
  #define _DXC_COMPAT_UNARY_INTEGER_OVERLOADS(fn) \
78
+ _DXC_DEPRECATED_INT_FN(fn) \
54
79
  constexpr float fn(int V) { return fn((float)V); } \
80
+ _DXC_DEPRECATED_INT_FN(fn) \
55
81
  constexpr float2 fn(int2 V) { return fn((float2)V); } \
82
+ _DXC_DEPRECATED_INT_FN(fn) \
56
83
  constexpr float3 fn(int3 V) { return fn((float3)V); } \
84
+ _DXC_DEPRECATED_INT_FN(fn) \
57
85
  constexpr float4 fn(int4 V) { return fn((float4)V); } \
86
+ _DXC_DEPRECATED_INT_FN(fn) \
58
87
  constexpr float fn(uint V) { return fn((float)V); } \
88
+ _DXC_DEPRECATED_INT_FN(fn) \
59
89
  constexpr float2 fn(uint2 V) { return fn((float2)V); } \
90
+ _DXC_DEPRECATED_INT_FN(fn) \
60
91
  constexpr float3 fn(uint3 V) { return fn((float3)V); } \
92
+ _DXC_DEPRECATED_INT_FN(fn) \
61
93
  constexpr float4 fn(uint4 V) { return fn((float4)V); } \
94
+ _DXC_DEPRECATED_INT_FN(fn) \
62
95
  constexpr float fn(int64_t V) { return fn((float)V); } \
96
+ _DXC_DEPRECATED_INT_FN(fn) \
63
97
  constexpr float2 fn(int64_t2 V) { return fn((float2)V); } \
98
+ _DXC_DEPRECATED_INT_FN(fn) \
64
99
  constexpr float3 fn(int64_t3 V) { return fn((float3)V); } \
100
+ _DXC_DEPRECATED_INT_FN(fn) \
65
101
  constexpr float4 fn(int64_t4 V) { return fn((float4)V); } \
102
+ _DXC_DEPRECATED_INT_FN(fn) \
66
103
  constexpr float fn(uint64_t V) { return fn((float)V); } \
104
+ _DXC_DEPRECATED_INT_FN(fn) \
67
105
  constexpr float2 fn(uint64_t2 V) { return fn((float2)V); } \
106
+ _DXC_DEPRECATED_INT_FN(fn) \
68
107
  constexpr float3 fn(uint64_t3 V) { return fn((float3)V); } \
108
+ _DXC_DEPRECATED_INT_FN(fn) \
69
109
  constexpr float4 fn(uint64_t4 V) { return fn((float4)V); }
70
110
 
71
111
  #define _DXC_COMPAT_BINARY_INTEGER_OVERLOADS(fn) \
112
+ _DXC_DEPRECATED_INT_FN(fn) \
72
113
  constexpr float fn(int V1, int V2) { return fn((float)V1, (float)V2); } \
114
+ _DXC_DEPRECATED_INT_FN(fn) \
73
115
  constexpr float2 fn(int2 V1, int2 V2) { return fn((float2)V1, (float2)V2); } \
116
+ _DXC_DEPRECATED_INT_FN(fn) \
74
117
  constexpr float3 fn(int3 V1, int3 V2) { return fn((float3)V1, (float3)V2); } \
118
+ _DXC_DEPRECATED_INT_FN(fn) \
75
119
  constexpr float4 fn(int4 V1, int4 V2) { return fn((float4)V1, (float4)V2); } \
120
+ _DXC_DEPRECATED_INT_FN(fn) \
76
121
  constexpr float fn(uint V1, uint V2) { return fn((float)V1, (float)V2); } \
122
+ _DXC_DEPRECATED_INT_FN(fn) \
77
123
  constexpr float2 fn(uint2 V1, uint2 V2) { \
78
124
  return fn((float2)V1, (float2)V2); \
79
125
  } \
126
+ _DXC_DEPRECATED_INT_FN(fn) \
80
127
  constexpr float3 fn(uint3 V1, uint3 V2) { \
81
128
  return fn((float3)V1, (float3)V2); \
82
129
  } \
130
+ _DXC_DEPRECATED_INT_FN(fn) \
83
131
  constexpr float4 fn(uint4 V1, uint4 V2) { \
84
132
  return fn((float4)V1, (float4)V2); \
85
133
  } \
134
+ _DXC_DEPRECATED_INT_FN(fn) \
86
135
  constexpr float fn(int64_t V1, int64_t V2) { \
87
136
  return fn((float)V1, (float)V2); \
88
137
  } \
138
+ _DXC_DEPRECATED_INT_FN(fn) \
89
139
  constexpr float2 fn(int64_t2 V1, int64_t2 V2) { \
90
140
  return fn((float2)V1, (float2)V2); \
91
141
  } \
142
+ _DXC_DEPRECATED_INT_FN(fn) \
92
143
  constexpr float3 fn(int64_t3 V1, int64_t3 V2) { \
93
144
  return fn((float3)V1, (float3)V2); \
94
145
  } \
146
+ _DXC_DEPRECATED_INT_FN(fn) \
95
147
  constexpr float4 fn(int64_t4 V1, int64_t4 V2) { \
96
148
  return fn((float4)V1, (float4)V2); \
97
149
  } \
150
+ _DXC_DEPRECATED_INT_FN(fn) \
98
151
  constexpr float fn(uint64_t V1, uint64_t V2) { \
99
152
  return fn((float)V1, (float)V2); \
100
153
  } \
154
+ _DXC_DEPRECATED_INT_FN(fn) \
101
155
  constexpr float2 fn(uint64_t2 V1, uint64_t2 V2) { \
102
156
  return fn((float2)V1, (float2)V2); \
103
157
  } \
158
+ _DXC_DEPRECATED_INT_FN(fn) \
104
159
  constexpr float3 fn(uint64_t3 V1, uint64_t3 V2) { \
105
160
  return fn((float3)V1, (float3)V2); \
106
161
  } \
162
+ _DXC_DEPRECATED_INT_FN(fn) \
107
163
  constexpr float4 fn(uint64_t4 V1, uint64_t4 V2) { \
108
164
  return fn((float4)V1, (float4)V2); \
109
165
  }
110
166
 
111
167
  #define _DXC_COMPAT_TERNARY_INTEGER_OVERLOADS(fn) \
168
+ _DXC_DEPRECATED_INT_FN(fn) \
112
169
  constexpr float fn(int V1, int V2, int V3) { \
113
170
  return fn((float)V1, (float)V2, (float)V3); \
114
171
  } \
172
+ _DXC_DEPRECATED_INT_FN(fn) \
115
173
  constexpr float2 fn(int2 V1, int2 V2, int2 V3) { \
116
174
  return fn((float2)V1, (float2)V2, (float2)V3); \
117
175
  } \
176
+ _DXC_DEPRECATED_INT_FN(fn) \
118
177
  constexpr float3 fn(int3 V1, int3 V2, int3 V3) { \
119
178
  return fn((float3)V1, (float3)V2, (float3)V3); \
120
179
  } \
180
+ _DXC_DEPRECATED_INT_FN(fn) \
121
181
  constexpr float4 fn(int4 V1, int4 V2, int4 V3) { \
122
182
  return fn((float4)V1, (float4)V2, (float4)V3); \
123
183
  } \
184
+ _DXC_DEPRECATED_INT_FN(fn) \
124
185
  constexpr float fn(uint V1, uint V2, uint V3) { \
125
186
  return fn((float)V1, (float)V2, (float)V3); \
126
187
  } \
188
+ _DXC_DEPRECATED_INT_FN(fn) \
127
189
  constexpr float2 fn(uint2 V1, uint2 V2, uint2 V3) { \
128
190
  return fn((float2)V1, (float2)V2, (float2)V3); \
129
191
  } \
192
+ _DXC_DEPRECATED_INT_FN(fn) \
130
193
  constexpr float3 fn(uint3 V1, uint3 V2, uint3 V3) { \
131
194
  return fn((float3)V1, (float3)V2, (float3)V3); \
132
195
  } \
196
+ _DXC_DEPRECATED_INT_FN(fn) \
133
197
  constexpr float4 fn(uint4 V1, uint4 V2, uint4 V3) { \
134
198
  return fn((float4)V1, (float4)V2, (float4)V3); \
135
199
  } \
200
+ _DXC_DEPRECATED_INT_FN(fn) \
136
201
  constexpr float fn(int64_t V1, int64_t V2, int64_t V3) { \
137
202
  return fn((float)V1, (float)V2, (float)V3); \
138
203
  } \
204
+ _DXC_DEPRECATED_INT_FN(fn) \
139
205
  constexpr float2 fn(int64_t2 V1, int64_t2 V2, int64_t2 V3) { \
140
206
  return fn((float2)V1, (float2)V2, (float2)V3); \
141
207
  } \
208
+ _DXC_DEPRECATED_INT_FN(fn) \
142
209
  constexpr float3 fn(int64_t3 V1, int64_t3 V2, int64_t3 V3) { \
143
210
  return fn((float3)V1, (float3)V2, (float3)V3); \
144
211
  } \
212
+ _DXC_DEPRECATED_INT_FN(fn) \
145
213
  constexpr float4 fn(int64_t4 V1, int64_t4 V2, int64_t4 V3) { \
146
214
  return fn((float4)V1, (float4)V2, (float4)V3); \
147
215
  } \
216
+ _DXC_DEPRECATED_INT_FN(fn) \
148
217
  constexpr float fn(uint64_t V1, uint64_t V2, uint64_t V3) { \
149
218
  return fn((float)V1, (float)V2, (float)V3); \
150
219
  } \
220
+ _DXC_DEPRECATED_INT_FN(fn) \
151
221
  constexpr float2 fn(uint64_t2 V1, uint64_t2 V2, uint64_t2 V3) { \
152
222
  return fn((float2)V1, (float2)V2, (float2)V3); \
153
223
  } \
224
+ _DXC_DEPRECATED_INT_FN(fn) \
154
225
  constexpr float3 fn(uint64_t3 V1, uint64_t3 V2, uint64_t3 V3) { \
155
226
  return fn((float3)V1, (float3)V2, (float3)V3); \
156
227
  } \
228
+ _DXC_DEPRECATED_INT_FN(fn) \
157
229
  constexpr float4 fn(uint64_t4 V1, uint64_t4 V2, uint64_t4 V3) { \
158
230
  return fn((float4)V1, (float4)V2, (float4)V3); \
159
231
  }
@@ -198,20 +270,23 @@ _DXC_COMPAT_UNARY_INTEGER_OVERLOADS(ceil)
198
270
  //===----------------------------------------------------------------------===//
199
271
 
200
272
  template <typename T, uint N>
201
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
202
- clamp(vector<T, N> p0, vector<T, N> p1, T p2) {
273
+ _DXC_DEPRECATED_VEC_SCALAR_FN(clamp)
274
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> clamp(
275
+ vector<T, N> p0, vector<T, N> p1, T p2) {
203
276
  return clamp(p0, p1, (vector<T, N>)p2);
204
277
  }
205
278
 
206
279
  template <typename T, uint N>
207
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
208
- clamp(vector<T, N> p0, T p1, vector<T, N> p2) {
280
+ _DXC_DEPRECATED_VEC_SCALAR_FN(clamp)
281
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> clamp(
282
+ vector<T, N> p0, T p1, vector<T, N> p2) {
209
283
  return clamp(p0, (vector<T, N>)p1, p2);
210
284
  }
211
285
 
212
286
  template <typename T, uint N>
213
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
214
- clamp(vector<T, N> p0, T p1, T p2) {
287
+ _DXC_DEPRECATED_VEC_SCALAR_FN(clamp)
288
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> clamp(
289
+ vector<T, N> p0, T p1, T p2) {
215
290
  return clamp(p0, (vector<T, N>)p1, (vector<T, N>)p2);
216
291
  }
217
292
 
@@ -268,18 +343,32 @@ _DXC_COMPAT_UNARY_INTEGER_OVERLOADS(frac)
268
343
  // isinf builtins overloads
269
344
  //===----------------------------------------------------------------------===//
270
345
 
346
+ _DXC_DEPRECATED_64BIT_FN(fn)
271
347
  constexpr bool isinf(double V) { return isinf((float)V); }
348
+ _DXC_DEPRECATED_64BIT_FN(fn)
272
349
  constexpr bool2 isinf(double2 V) { return isinf((float2)V); }
350
+ _DXC_DEPRECATED_64BIT_FN(fn)
273
351
  constexpr bool3 isinf(double3 V) { return isinf((float3)V); }
352
+ _DXC_DEPRECATED_64BIT_FN(fn)
274
353
  constexpr bool4 isinf(double4 V) { return isinf((float4)V); }
275
354
 
355
+ //===----------------------------------------------------------------------===//
356
+ // isnan builtins overloads
357
+ //===----------------------------------------------------------------------===//
358
+
359
+ constexpr bool isnan(double V) { return isnan((float)V); }
360
+ constexpr bool2 isnan(double2 V) { return isnan((float2)V); }
361
+ constexpr bool3 isnan(double3 V) { return isnan((float3)V); }
362
+ constexpr bool4 isnan(double4 V) { return isnan((float4)V); }
363
+
276
364
  //===----------------------------------------------------------------------===//
277
365
  // lerp builtins overloads
278
366
  //===----------------------------------------------------------------------===//
279
367
 
280
368
  template <typename T, uint N>
281
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
282
- lerp(vector<T, N> x, vector<T, N> y, T s) {
369
+ _DXC_DEPRECATED_VEC_SCALAR_FN(lerp)
370
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> lerp(
371
+ vector<T, N> x, vector<T, N> y, T s) {
283
372
  return lerp(x, y, (vector<T, N>)s);
284
373
  }
285
374
 
@@ -312,14 +401,16 @@ _DXC_COMPAT_UNARY_INTEGER_OVERLOADS(log2)
312
401
  //===----------------------------------------------------------------------===//
313
402
 
314
403
  template <typename T, uint N>
315
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
316
- max(vector<T, N> p0, T p1) {
404
+ _DXC_DEPRECATED_VEC_SCALAR_FN(max)
405
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> max(
406
+ vector<T, N> p0, T p1) {
317
407
  return max(p0, (vector<T, N>)p1);
318
408
  }
319
409
 
320
410
  template <typename T, uint N>
321
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
322
- max(T p0, vector<T, N> p1) {
411
+ _DXC_DEPRECATED_VEC_SCALAR_FN(max)
412
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> max(
413
+ T p0, vector<T, N> p1) {
323
414
  return max((vector<T, N>)p0, p1);
324
415
  }
325
416
 
@@ -328,14 +419,16 @@ max(T p0, vector<T, N> p1) {
328
419
  //===----------------------------------------------------------------------===//
329
420
 
330
421
  template <typename T, uint N>
331
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
332
- min(vector<T, N> p0, T p1) {
422
+ _DXC_DEPRECATED_VEC_SCALAR_FN(min)
423
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> min(
424
+ vector<T, N> p0, T p1) {
333
425
  return min(p0, (vector<T, N>)p1);
334
426
  }
335
427
 
336
428
  template <typename T, uint N>
337
- constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>>
338
- min(T p0, vector<T, N> p1) {
429
+ _DXC_DEPRECATED_VEC_SCALAR_FN(min)
430
+ constexpr __detail::enable_if_t<(N > 1 && N <= 4), vector<T, N>> min(
431
+ T p0, vector<T, N> p1) {
339
432
  return min((vector<T, N>)p0, p1);
340
433
  }
341
434
 
@@ -12,7 +12,7 @@
12
12
  namespace hlsl {
13
13
  namespace __detail {
14
14
 
15
- constexpr vector<uint, 4> d3d_color_to_ubyte4_impl(vector<float, 4> V) {
15
+ constexpr int4 d3d_color_to_ubyte4_impl(float4 V) {
16
16
  // Use the same scaling factor used by FXC, and DXC for DXIL
17
17
  // (i.e., 255.001953)
18
18
  // https://github.com/microsoft/DirectXShaderCompiler/blob/070d0d5a2beacef9eeb51037a9b04665716fd6f3/lib/HLSL/HLOperationLower.cpp#L666C1-L697C2
@@ -71,6 +71,16 @@ constexpr vector<T, L> reflect_vec_impl(vector<T, L> I, vector<T, L> N) {
71
71
  #endif
72
72
  }
73
73
 
74
+ template <typename T, typename U> constexpr T refract_impl(T I, T N, U Eta) {
75
+ #if (__has_builtin(__builtin_spirv_refract))
76
+ return __builtin_spirv_refract(I, N, Eta);
77
+ #endif
78
+ T Mul = dot(N, I);
79
+ T K = 1 - Eta * Eta * (1 - Mul * Mul);
80
+ T Result = (Eta * I - (Eta * Mul + sqrt(K)) * N);
81
+ return select<T>(K < 0, static_cast<T>(0), Result);
82
+ }
83
+
74
84
  template <typename T> constexpr T fmod_impl(T X, T Y) {
75
85
  #if !defined(__DIRECTX__)
76
86
  return __builtin_elementwise_fmod(X, Y);
@@ -127,17 +137,53 @@ template <typename T> constexpr vector<T, 4> lit_impl(T NDotL, T NDotH, T M) {
127
137
  }
128
138
 
129
139
  template <typename T> constexpr T faceforward_impl(T N, T I, T Ng) {
130
- #if (__has_builtin(__builtin_spirv_faceforward))
131
- return __builtin_spirv_faceforward(N, I, Ng);
132
- #else
133
140
  return select(dot(I, Ng) < 0, N, -N);
134
- #endif
135
141
  }
136
142
 
137
143
  template <typename T> constexpr T ldexp_impl(T X, T Exp) {
138
144
  return exp2(Exp) * X;
139
145
  }
140
146
 
147
+ template <typename K, typename T, int BitWidth>
148
+ constexpr K firstbithigh_impl(T X) {
149
+ K FBH = __builtin_hlsl_elementwise_firstbithigh(X);
150
+ #if defined(__DIRECTX__)
151
+ // The firstbithigh DXIL ops count bits from the wrong side, so we need to
152
+ // invert it for DirectX.
153
+ K Inversion = (BitWidth - 1) - FBH;
154
+ FBH = select(FBH == -1, FBH, Inversion);
155
+ #endif
156
+ return FBH;
157
+ }
158
+
159
+ template <typename T> constexpr T ddx_impl(T input) {
160
+ #if (__has_builtin(__builtin_spirv_ddx))
161
+ return __builtin_spirv_ddx(input);
162
+ #else
163
+ return __builtin_hlsl_elementwise_ddx_coarse(input);
164
+ #endif
165
+ }
166
+
167
+ template <typename T> constexpr T ddy_impl(T input) {
168
+ #if (__has_builtin(__builtin_spirv_ddy))
169
+ return __builtin_spirv_ddy(input);
170
+ #else
171
+ return __builtin_hlsl_elementwise_ddy_coarse(input);
172
+ #endif
173
+ }
174
+
175
+ template <typename T> constexpr T fwidth_impl(T input) {
176
+ #if (__has_builtin(__builtin_spirv_fwidth))
177
+ return __builtin_spirv_fwidth(input);
178
+ #else
179
+ T derivCoarseX = ddx_coarse(input);
180
+ derivCoarseX = abs(derivCoarseX);
181
+ T derivCoarseY = ddy_coarse(input);
182
+ derivCoarseY = abs(derivCoarseY);
183
+ return derivCoarseX + derivCoarseY;
184
+ #endif
185
+ }
186
+
141
187
  } // namespace __detail
142
188
  } // namespace hlsl
143
189