@cpp-linter/clang-tidy-darwin-x64 22.1.8 → 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.
Files changed (309) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{22 → 23}/include/__clang_cuda_complex_builtins.h +10 -3
  4. package/lib/clang/{22 → 23}/include/__clang_cuda_intrinsics.h +207 -226
  5. package/lib/clang/{22 → 23}/include/__clang_cuda_math_forward_declares.h +5 -0
  6. package/lib/clang/{22 → 23}/include/__clang_cuda_runtime_wrapper.h +9 -5
  7. package/lib/clang/23/include/__clang_gpu_builtin_vars.h +71 -0
  8. package/lib/clang/23/include/__clang_gpu_device_functions.h +411 -0
  9. package/lib/clang/23/include/__clang_gpu_intrinsics.h +242 -0
  10. package/lib/clang/{22 → 23}/include/__clang_hip_libdevice_declares.h +0 -102
  11. package/lib/clang/{22 → 23}/include/__clang_hip_math.h +3 -3
  12. package/lib/clang/{22 → 23}/include/__clang_hip_runtime_wrapper.h +6 -1
  13. package/lib/clang/23/include/__clang_spirv_libdevice_declares.h +170 -0
  14. package/lib/clang/23/include/__clang_spirv_math.h +719 -0
  15. package/lib/clang/{22 → 23}/include/altivec.h +79 -9
  16. package/lib/clang/{22 → 23}/include/amdgpuintrin.h +2 -29
  17. package/lib/clang/23/include/amdhsa_abi.h +83 -0
  18. package/lib/clang/{22 → 23}/include/amo.h +89 -0
  19. package/lib/clang/{22 → 23}/include/andes_vector.h +5 -0
  20. package/lib/clang/23/include/arm64_neon.h +21 -0
  21. package/lib/clang/{22 → 23}/include/arm64intr.h +10 -0
  22. package/lib/clang/{22 → 23}/include/arm_acle.h +1 -0
  23. package/lib/clang/{22 → 23}/include/arm_neon.h +3922 -3754
  24. package/lib/clang/{22 → 23}/include/arm_sme.h +12 -0
  25. package/lib/clang/{22 → 23}/include/arm_sve.h +420 -0
  26. package/lib/clang/{22 → 23}/include/avx2intrin.h +4 -5
  27. package/lib/clang/23/include/avx512bmmintrin.h +174 -0
  28. package/lib/clang/23/include/avx512bmmvlintrin.h +245 -0
  29. package/lib/clang/{22 → 23}/include/avx512bwintrin.h +19 -29
  30. package/lib/clang/{22 → 23}/include/avx512fintrin.h +62 -89
  31. package/lib/clang/{22 → 23}/include/avx512fp16intrin.h +12 -18
  32. package/lib/clang/{22 → 23}/include/avx512vbmi2intrin.h +12 -16
  33. package/lib/clang/{22 → 23}/include/avx512vlbwintrin.h +24 -36
  34. package/lib/clang/{22 → 23}/include/avx512vlintrin.h +80 -96
  35. package/lib/clang/{22 → 23}/include/avx512vlvbmi2intrin.h +24 -32
  36. package/lib/clang/{22 → 23}/include/avx512vlvnniintrin.h +29 -34
  37. package/lib/clang/{22 → 23}/include/avx512vnniintrin.h +32 -35
  38. package/lib/clang/{22 → 23}/include/avx512vp2intersectintrin.h +1 -1
  39. package/lib/clang/{22 → 23}/include/avxvnniintrin.h +23 -18
  40. package/lib/clang/{22 → 23}/include/crc32intrin.h +10 -8
  41. package/lib/clang/{22 → 23}/include/emmintrin.h +8 -8
  42. package/lib/clang/23/include/endian.h +91 -0
  43. package/lib/clang/{22 → 23}/include/gpuintrin.h +123 -105
  44. package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics.h +222 -0
  45. package/lib/clang/{22/include/hlsl/hlsl_alias_intrinsics.h → 23/include/hlsl/hlsl_alias_intrinsics_gen.inc} +1865 -1157
  46. package/lib/clang/{22 → 23}/include/hlsl/hlsl_compat_overloads.h +39 -0
  47. package/lib/clang/{22 → 23}/include/hlsl/hlsl_detail.h +6 -4
  48. package/lib/clang/23/include/hlsl/hlsl_inline_intrinsics_gen.inc +546 -0
  49. package/lib/clang/{22 → 23}/include/hlsl/hlsl_intrinsic_helpers.h +25 -45
  50. package/lib/clang/23/include/hlsl/hlsl_intrinsics.h +331 -0
  51. package/lib/clang/{22 → 23}/include/hvx_hexagon_protos.h +102 -80
  52. package/lib/clang/{22 → 23}/include/immintrin.h +4 -2
  53. package/lib/clang/{22 → 23}/include/intrin.h +20 -10
  54. package/lib/clang/{22 → 23}/include/larchintrin.h +2 -0
  55. package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/ctype.h +3 -2
  56. package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/string.h +3 -2
  57. package/lib/clang/{22 → 23}/include/module.modulemap +16 -1
  58. package/lib/clang/{22 → 23}/include/nvptxintrin.h +15 -26
  59. package/lib/clang/{22 → 23}/include/opencl-c-base.h +7 -0
  60. package/lib/clang/{22 → 23}/include/opencl-c.h +163 -102
  61. package/lib/clang/{22 → 23}/include/openmp_wrappers/__clang_openmp_device_functions.h +14 -0
  62. package/lib/clang/{22 → 23}/include/openmp_wrappers/complex +7 -1
  63. package/lib/clang/{22 → 23}/include/openmp_wrappers/complex.h +6 -0
  64. package/lib/clang/{22 → 23}/include/openmp_wrappers/math.h +10 -0
  65. package/lib/clang/{22 → 23}/include/ptrauth.h +90 -12
  66. package/lib/clang/{22 → 23}/include/riscv_bitmanip.h +7 -0
  67. package/lib/clang/{22 → 23}/include/riscv_corev_alu.h +2 -0
  68. package/lib/clang/{22 → 23}/include/riscv_crypto.h +8 -0
  69. package/lib/clang/{22 → 23}/include/riscv_mips.h +2 -0
  70. package/lib/clang/{22 → 23}/include/riscv_nds.h +3 -0
  71. package/lib/clang/{22 → 23}/include/riscv_ntlh.h +2 -0
  72. package/lib/clang/23/include/riscv_packed_simd.h +644 -0
  73. package/lib/clang/{22 → 23}/include/riscv_vector.h +43 -0
  74. package/lib/clang/{22 → 23}/include/sifive_vector.h +18 -0
  75. package/lib/clang/{22 → 23}/include/spirvintrin.h +2 -29
  76. package/lib/clang/{22 → 23}/include/stdint.h +5 -14
  77. package/lib/clang/{22 → 23}/include/vecintrin.h +1 -1
  78. package/lib/clang/{22 → 23}/include/wasm_simd128.h +17 -0
  79. package/lib/clang/{22 → 23}/include/xmmintrin.h +8 -7
  80. package/lib/clang/23/include/zos_wrappers/grp.h +19 -0
  81. package/lib/clang/23/include/zos_wrappers/locale.h +19 -0
  82. package/lib/clang/23/include/zos_wrappers/math.h +31 -0
  83. package/lib/clang/23/include/zos_wrappers/poll.h +19 -0
  84. package/lib/clang/23/include/zos_wrappers/stdlib.h +20 -0
  85. package/lib/clang/23/include/zos_wrappers/string.h +19 -0
  86. package/lib/clang/23/include/zos_wrappers/time.h +19 -0
  87. package/lib/clang/23/include/zos_wrappers/variant.h +19 -0
  88. package/package.json +6 -6
  89. package/lib/clang/22/include/amxtf32intrin.h +0 -108
  90. package/lib/clang/22/include/hlsl/hlsl_intrinsics.h +0 -794
  91. /package/lib/clang/{22 → 23}/include/__clang_cuda_builtin_vars.h +0 -0
  92. /package/lib/clang/{22 → 23}/include/__clang_cuda_cmath.h +0 -0
  93. /package/lib/clang/{22 → 23}/include/__clang_cuda_device_functions.h +0 -0
  94. /package/lib/clang/{22 → 23}/include/__clang_cuda_libdevice_declares.h +0 -0
  95. /package/lib/clang/{22 → 23}/include/__clang_cuda_math.h +0 -0
  96. /package/lib/clang/{22 → 23}/include/__clang_cuda_texture_intrinsics.h +0 -0
  97. /package/lib/clang/{22 → 23}/include/__clang_hip_cmath.h +0 -0
  98. /package/lib/clang/{22 → 23}/include/__clang_hip_stdlib.h +0 -0
  99. /package/lib/clang/{22 → 23}/include/__clang_spirv_builtins.h +0 -0
  100. /package/lib/clang/{22 → 23}/include/__float_float.h +0 -0
  101. /package/lib/clang/{22 → 23}/include/__float_header_macro.h +0 -0
  102. /package/lib/clang/{22 → 23}/include/__float_infinity_nan.h +0 -0
  103. /package/lib/clang/{22 → 23}/include/__stdarg___gnuc_va_list.h +0 -0
  104. /package/lib/clang/{22 → 23}/include/__stdarg___va_copy.h +0 -0
  105. /package/lib/clang/{22 → 23}/include/__stdarg_header_macro.h +0 -0
  106. /package/lib/clang/{22 → 23}/include/__stdarg_va_arg.h +0 -0
  107. /package/lib/clang/{22 → 23}/include/__stdarg_va_copy.h +0 -0
  108. /package/lib/clang/{22 → 23}/include/__stdarg_va_list.h +0 -0
  109. /package/lib/clang/{22 → 23}/include/__stddef_header_macro.h +0 -0
  110. /package/lib/clang/{22 → 23}/include/__stddef_max_align_t.h +0 -0
  111. /package/lib/clang/{22 → 23}/include/__stddef_null.h +0 -0
  112. /package/lib/clang/{22 → 23}/include/__stddef_nullptr_t.h +0 -0
  113. /package/lib/clang/{22 → 23}/include/__stddef_offsetof.h +0 -0
  114. /package/lib/clang/{22 → 23}/include/__stddef_ptrdiff_t.h +0 -0
  115. /package/lib/clang/{22 → 23}/include/__stddef_rsize_t.h +0 -0
  116. /package/lib/clang/{22 → 23}/include/__stddef_size_t.h +0 -0
  117. /package/lib/clang/{22 → 23}/include/__stddef_unreachable.h +0 -0
  118. /package/lib/clang/{22 → 23}/include/__stddef_wchar_t.h +0 -0
  119. /package/lib/clang/{22 → 23}/include/__stddef_wint_t.h +0 -0
  120. /package/lib/clang/{22 → 23}/include/__wmmintrin_aes.h +0 -0
  121. /package/lib/clang/{22 → 23}/include/__wmmintrin_pclmul.h +0 -0
  122. /package/lib/clang/{22 → 23}/include/adcintrin.h +0 -0
  123. /package/lib/clang/{22 → 23}/include/adxintrin.h +0 -0
  124. /package/lib/clang/{22 → 23}/include/ammintrin.h +0 -0
  125. /package/lib/clang/{22 → 23}/include/amxavx512intrin.h +0 -0
  126. /package/lib/clang/{22 → 23}/include/amxcomplexintrin.h +0 -0
  127. /package/lib/clang/{22 → 23}/include/amxfp16intrin.h +0 -0
  128. /package/lib/clang/{22 → 23}/include/amxfp8intrin.h +0 -0
  129. /package/lib/clang/{22 → 23}/include/amxintrin.h +0 -0
  130. /package/lib/clang/{22 → 23}/include/amxmovrsintrin.h +0 -0
  131. /package/lib/clang/{22 → 23}/include/arm_bf16.h +0 -0
  132. /package/lib/clang/{22 → 23}/include/arm_cde.h +0 -0
  133. /package/lib/clang/{22 → 23}/include/arm_cmse.h +0 -0
  134. /package/lib/clang/{22 → 23}/include/arm_fp16.h +0 -0
  135. /package/lib/clang/{22 → 23}/include/arm_mve.h +0 -0
  136. /package/lib/clang/{22 → 23}/include/arm_neon_sve_bridge.h +0 -0
  137. /package/lib/clang/{22 → 23}/include/arm_vector_types.h +0 -0
  138. /package/lib/clang/{22 → 23}/include/armintr.h +0 -0
  139. /package/lib/clang/{22 → 23}/include/avx10_2_512bf16intrin.h +0 -0
  140. /package/lib/clang/{22 → 23}/include/avx10_2_512convertintrin.h +0 -0
  141. /package/lib/clang/{22 → 23}/include/avx10_2_512minmaxintrin.h +0 -0
  142. /package/lib/clang/{22 → 23}/include/avx10_2_512niintrin.h +0 -0
  143. /package/lib/clang/{22 → 23}/include/avx10_2_512satcvtdsintrin.h +0 -0
  144. /package/lib/clang/{22 → 23}/include/avx10_2_512satcvtintrin.h +0 -0
  145. /package/lib/clang/{22 → 23}/include/avx10_2bf16intrin.h +0 -0
  146. /package/lib/clang/{22 → 23}/include/avx10_2convertintrin.h +0 -0
  147. /package/lib/clang/{22 → 23}/include/avx10_2copyintrin.h +0 -0
  148. /package/lib/clang/{22 → 23}/include/avx10_2minmaxintrin.h +0 -0
  149. /package/lib/clang/{22 → 23}/include/avx10_2niintrin.h +0 -0
  150. /package/lib/clang/{22 → 23}/include/avx10_2satcvtdsintrin.h +0 -0
  151. /package/lib/clang/{22 → 23}/include/avx10_2satcvtintrin.h +0 -0
  152. /package/lib/clang/{22 → 23}/include/avx512bf16intrin.h +0 -0
  153. /package/lib/clang/{22 → 23}/include/avx512bitalgintrin.h +0 -0
  154. /package/lib/clang/{22 → 23}/include/avx512cdintrin.h +0 -0
  155. /package/lib/clang/{22 → 23}/include/avx512dqintrin.h +0 -0
  156. /package/lib/clang/{22 → 23}/include/avx512ifmaintrin.h +0 -0
  157. /package/lib/clang/{22 → 23}/include/avx512ifmavlintrin.h +0 -0
  158. /package/lib/clang/{22 → 23}/include/avx512vbmiintrin.h +0 -0
  159. /package/lib/clang/{22 → 23}/include/avx512vbmivlintrin.h +0 -0
  160. /package/lib/clang/{22 → 23}/include/avx512vlbf16intrin.h +0 -0
  161. /package/lib/clang/{22 → 23}/include/avx512vlbitalgintrin.h +0 -0
  162. /package/lib/clang/{22 → 23}/include/avx512vlcdintrin.h +0 -0
  163. /package/lib/clang/{22 → 23}/include/avx512vldqintrin.h +0 -0
  164. /package/lib/clang/{22 → 23}/include/avx512vlfp16intrin.h +0 -0
  165. /package/lib/clang/{22 → 23}/include/avx512vlvp2intersectintrin.h +0 -0
  166. /package/lib/clang/{22 → 23}/include/avx512vpopcntdqintrin.h +0 -0
  167. /package/lib/clang/{22 → 23}/include/avx512vpopcntdqvlintrin.h +0 -0
  168. /package/lib/clang/{22 → 23}/include/avxifmaintrin.h +0 -0
  169. /package/lib/clang/{22 → 23}/include/avxintrin.h +0 -0
  170. /package/lib/clang/{22 → 23}/include/avxneconvertintrin.h +0 -0
  171. /package/lib/clang/{22 → 23}/include/avxvnniint16intrin.h +0 -0
  172. /package/lib/clang/{22 → 23}/include/avxvnniint8intrin.h +0 -0
  173. /package/lib/clang/{22 → 23}/include/bmi2intrin.h +0 -0
  174. /package/lib/clang/{22 → 23}/include/bmiintrin.h +0 -0
  175. /package/lib/clang/{22 → 23}/include/builtins.h +0 -0
  176. /package/lib/clang/{22 → 23}/include/cet.h +0 -0
  177. /package/lib/clang/{22 → 23}/include/cetintrin.h +0 -0
  178. /package/lib/clang/{22 → 23}/include/cldemoteintrin.h +0 -0
  179. /package/lib/clang/{22 → 23}/include/clflushoptintrin.h +0 -0
  180. /package/lib/clang/{22 → 23}/include/clwbintrin.h +0 -0
  181. /package/lib/clang/{22 → 23}/include/clzerointrin.h +0 -0
  182. /package/lib/clang/{22 → 23}/include/cmpccxaddintrin.h +0 -0
  183. /package/lib/clang/{22 → 23}/include/cpuid.h +0 -0
  184. /package/lib/clang/{22 → 23}/include/cuda_wrappers/__utility/declval.h +0 -0
  185. /package/lib/clang/{22 → 23}/include/cuda_wrappers/algorithm +0 -0
  186. /package/lib/clang/{22 → 23}/include/cuda_wrappers/bits/basic_string.h +0 -0
  187. /package/lib/clang/{22 → 23}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  188. /package/lib/clang/{22 → 23}/include/cuda_wrappers/bits/c++config.h +0 -0
  189. /package/lib/clang/{22 → 23}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  190. /package/lib/clang/{22 → 23}/include/cuda_wrappers/cmath +0 -0
  191. /package/lib/clang/{22 → 23}/include/cuda_wrappers/complex +0 -0
  192. /package/lib/clang/{22 → 23}/include/cuda_wrappers/new +0 -0
  193. /package/lib/clang/{22 → 23}/include/enqcmdintrin.h +0 -0
  194. /package/lib/clang/{22 → 23}/include/f16cintrin.h +0 -0
  195. /package/lib/clang/{22 → 23}/include/float.h +0 -0
  196. /package/lib/clang/{22 → 23}/include/fma4intrin.h +0 -0
  197. /package/lib/clang/{22 → 23}/include/fmaintrin.h +0 -0
  198. /package/lib/clang/{22 → 23}/include/fxsrintrin.h +0 -0
  199. /package/lib/clang/{22 → 23}/include/gfniintrin.h +0 -0
  200. /package/lib/clang/{22 → 23}/include/hexagon_circ_brev_intrinsics.h +0 -0
  201. /package/lib/clang/{22 → 23}/include/hexagon_protos.h +0 -0
  202. /package/lib/clang/{22 → 23}/include/hexagon_types.h +0 -0
  203. /package/lib/clang/{22 → 23}/include/hlsl/hlsl_basic_types.h +0 -0
  204. /package/lib/clang/{22 → 23}/include/hlsl/hlsl_spirv.h +0 -0
  205. /package/lib/clang/{22 → 23}/include/hlsl.h +0 -0
  206. /package/lib/clang/{22 → 23}/include/hresetintrin.h +0 -0
  207. /package/lib/clang/{22 → 23}/include/htmintrin.h +0 -0
  208. /package/lib/clang/{22 → 23}/include/htmxlintrin.h +0 -0
  209. /package/lib/clang/{22 → 23}/include/ia32intrin.h +0 -0
  210. /package/lib/clang/{22 → 23}/include/intrin0.h +0 -0
  211. /package/lib/clang/{22 → 23}/include/inttypes.h +0 -0
  212. /package/lib/clang/{22 → 23}/include/invpcidintrin.h +0 -0
  213. /package/lib/clang/{22 → 23}/include/iso646.h +0 -0
  214. /package/lib/clang/{22 → 23}/include/keylockerintrin.h +0 -0
  215. /package/lib/clang/{22 → 23}/include/lasxintrin.h +0 -0
  216. /package/lib/clang/{22 → 23}/include/limits.h +0 -0
  217. /package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/assert.h +0 -0
  218. /package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/inttypes.h +0 -0
  219. /package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/stdio.h +0 -0
  220. /package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/stdlib.h +0 -0
  221. /package/lib/clang/{22 → 23}/include/llvm_libc_wrappers/time.h +0 -0
  222. /package/lib/clang/{22 → 23}/include/llvm_offload_wrappers/__llvm_offload.h +0 -0
  223. /package/lib/clang/{22 → 23}/include/llvm_offload_wrappers/__llvm_offload_device.h +0 -0
  224. /package/lib/clang/{22 → 23}/include/llvm_offload_wrappers/__llvm_offload_host.h +0 -0
  225. /package/lib/clang/{22 → 23}/include/lsxintrin.h +0 -0
  226. /package/lib/clang/{22 → 23}/include/lwpintrin.h +0 -0
  227. /package/lib/clang/{22 → 23}/include/lzcntintrin.h +0 -0
  228. /package/lib/clang/{22 → 23}/include/mm3dnow.h +0 -0
  229. /package/lib/clang/{22 → 23}/include/mm_malloc.h +0 -0
  230. /package/lib/clang/{22 → 23}/include/mmintrin.h +0 -0
  231. /package/lib/clang/{22 → 23}/include/movdirintrin.h +0 -0
  232. /package/lib/clang/{22 → 23}/include/movrs_avx10_2_512intrin.h +0 -0
  233. /package/lib/clang/{22 → 23}/include/movrs_avx10_2intrin.h +0 -0
  234. /package/lib/clang/{22 → 23}/include/movrsintrin.h +0 -0
  235. /package/lib/clang/{22 → 23}/include/msa.h +0 -0
  236. /package/lib/clang/{22 → 23}/include/mwaitxintrin.h +0 -0
  237. /package/lib/clang/{22 → 23}/include/nmmintrin.h +0 -0
  238. /package/lib/clang/{22 → 23}/include/openmp_wrappers/cmath +0 -0
  239. /package/lib/clang/{22 → 23}/include/openmp_wrappers/complex_cmath.h +0 -0
  240. /package/lib/clang/{22 → 23}/include/openmp_wrappers/new +0 -0
  241. /package/lib/clang/{22 → 23}/include/pconfigintrin.h +0 -0
  242. /package/lib/clang/{22 → 23}/include/pkuintrin.h +0 -0
  243. /package/lib/clang/{22 → 23}/include/pmmintrin.h +0 -0
  244. /package/lib/clang/{22 → 23}/include/popcntintrin.h +0 -0
  245. /package/lib/clang/{22 → 23}/include/ppc_wrappers/bmi2intrin.h +0 -0
  246. /package/lib/clang/{22 → 23}/include/ppc_wrappers/bmiintrin.h +0 -0
  247. /package/lib/clang/{22 → 23}/include/ppc_wrappers/emmintrin.h +0 -0
  248. /package/lib/clang/{22 → 23}/include/ppc_wrappers/immintrin.h +0 -0
  249. /package/lib/clang/{22 → 23}/include/ppc_wrappers/mm_malloc.h +0 -0
  250. /package/lib/clang/{22 → 23}/include/ppc_wrappers/mmintrin.h +0 -0
  251. /package/lib/clang/{22 → 23}/include/ppc_wrappers/nmmintrin.h +0 -0
  252. /package/lib/clang/{22 → 23}/include/ppc_wrappers/pmmintrin.h +0 -0
  253. /package/lib/clang/{22 → 23}/include/ppc_wrappers/smmintrin.h +0 -0
  254. /package/lib/clang/{22 → 23}/include/ppc_wrappers/tmmintrin.h +0 -0
  255. /package/lib/clang/{22 → 23}/include/ppc_wrappers/x86gprintrin.h +0 -0
  256. /package/lib/clang/{22 → 23}/include/ppc_wrappers/x86intrin.h +0 -0
  257. /package/lib/clang/{22 → 23}/include/ppc_wrappers/xmmintrin.h +0 -0
  258. /package/lib/clang/{22 → 23}/include/prfchiintrin.h +0 -0
  259. /package/lib/clang/{22 → 23}/include/prfchwintrin.h +0 -0
  260. /package/lib/clang/{22 → 23}/include/ptwriteintrin.h +0 -0
  261. /package/lib/clang/{22 → 23}/include/raointintrin.h +0 -0
  262. /package/lib/clang/{22 → 23}/include/rdpruintrin.h +0 -0
  263. /package/lib/clang/{22 → 23}/include/rdseedintrin.h +0 -0
  264. /package/lib/clang/{22 → 23}/include/rtmintrin.h +0 -0
  265. /package/lib/clang/{22 → 23}/include/s390intrin.h +0 -0
  266. /package/lib/clang/{22 → 23}/include/serializeintrin.h +0 -0
  267. /package/lib/clang/{22 → 23}/include/sgxintrin.h +0 -0
  268. /package/lib/clang/{22 → 23}/include/sha512intrin.h +0 -0
  269. /package/lib/clang/{22 → 23}/include/shaintrin.h +0 -0
  270. /package/lib/clang/{22 → 23}/include/sm3intrin.h +0 -0
  271. /package/lib/clang/{22 → 23}/include/sm4evexintrin.h +0 -0
  272. /package/lib/clang/{22 → 23}/include/sm4intrin.h +0 -0
  273. /package/lib/clang/{22 → 23}/include/smmintrin.h +0 -0
  274. /package/lib/clang/{22 → 23}/include/stdalign.h +0 -0
  275. /package/lib/clang/{22 → 23}/include/stdarg.h +0 -0
  276. /package/lib/clang/{22 → 23}/include/stdatomic.h +0 -0
  277. /package/lib/clang/{22 → 23}/include/stdbool.h +0 -0
  278. /package/lib/clang/{22 → 23}/include/stdckdint.h +0 -0
  279. /package/lib/clang/{22 → 23}/include/stdcountof.h +0 -0
  280. /package/lib/clang/{22 → 23}/include/stddef.h +0 -0
  281. /package/lib/clang/{22 → 23}/include/stddefer.h +0 -0
  282. /package/lib/clang/{22 → 23}/include/stdnoreturn.h +0 -0
  283. /package/lib/clang/{22 → 23}/include/tbmintrin.h +0 -0
  284. /package/lib/clang/{22 → 23}/include/tgmath.h +0 -0
  285. /package/lib/clang/{22 → 23}/include/tmmintrin.h +0 -0
  286. /package/lib/clang/{22 → 23}/include/tsxldtrkintrin.h +0 -0
  287. /package/lib/clang/{22 → 23}/include/uintrintrin.h +0 -0
  288. /package/lib/clang/{22 → 23}/include/unwind.h +0 -0
  289. /package/lib/clang/{22 → 23}/include/usermsrintrin.h +0 -0
  290. /package/lib/clang/{22 → 23}/include/vadefs.h +0 -0
  291. /package/lib/clang/{22 → 23}/include/vaesintrin.h +0 -0
  292. /package/lib/clang/{22 → 23}/include/varargs.h +0 -0
  293. /package/lib/clang/{22 → 23}/include/velintrin.h +0 -0
  294. /package/lib/clang/{22 → 23}/include/velintrin_approx.h +0 -0
  295. /package/lib/clang/{22 → 23}/include/velintrin_gen.h +0 -0
  296. /package/lib/clang/{22 → 23}/include/vpclmulqdqintrin.h +0 -0
  297. /package/lib/clang/{22 → 23}/include/waitpkgintrin.h +0 -0
  298. /package/lib/clang/{22 → 23}/include/wbnoinvdintrin.h +0 -0
  299. /package/lib/clang/{22 → 23}/include/wmmintrin.h +0 -0
  300. /package/lib/clang/{22 → 23}/include/x86gprintrin.h +0 -0
  301. /package/lib/clang/{22 → 23}/include/x86intrin.h +0 -0
  302. /package/lib/clang/{22 → 23}/include/xopintrin.h +0 -0
  303. /package/lib/clang/{22 → 23}/include/xsavecintrin.h +0 -0
  304. /package/lib/clang/{22 → 23}/include/xsaveintrin.h +0 -0
  305. /package/lib/clang/{22 → 23}/include/xsaveoptintrin.h +0 -0
  306. /package/lib/clang/{22 → 23}/include/xsavesintrin.h +0 -0
  307. /package/lib/clang/{22 → 23}/include/xtestintrin.h +0 -0
  308. /package/lib/clang/{22 → 23}/include/yvals_core.h +0 -0
  309. /package/lib/clang/{22 → 23}/include/zos_wrappers/builtins.h +0 -0
@@ -1,47 +1,22 @@
1
- //===--- hlsl_alias_intrinsics.h - HLSL alias 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_ALIAS_INTRINSICS_H_
10
- #define _HLSL_HLSL_ALIAS_INTRINSICS_H_
11
-
12
- namespace hlsl {
13
-
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,
16
- // unsigned integer and floating point. Keeping this ordering consistent will
17
- // help keep this file manageable as it grows.
18
-
19
- #define _HLSL_BUILTIN_ALIAS(builtin) \
20
- __attribute__((clang_builtin_alias(builtin)))
21
- #define _HLSL_AVAILABILITY(platform, version) \
22
- __attribute__((availability(platform, introduced = version)))
23
- #define _HLSL_AVAILABILITY_STAGE(platform, version, stage) \
24
- __attribute__(( \
25
- availability(platform, introduced = version, environment = stage)))
26
-
27
- #ifdef __HLSL_ENABLE_16_BIT
28
- #define _HLSL_16BIT_AVAILABILITY(platform, version) \
29
- __attribute__((availability(platform, introduced = version)))
30
- #define _HLSL_16BIT_AVAILABILITY_STAGE(platform, version, stage) \
31
- __attribute__(( \
32
- availability(platform, introduced = version, environment = stage)))
33
- #else
34
- #define _HLSL_16BIT_AVAILABILITY(environment, version)
35
- #define _HLSL_16BIT_AVAILABILITY_STAGE(environment, version, stage)
36
- #endif
37
-
38
- //===----------------------------------------------------------------------===//
39
- // abs builtins
40
- //===----------------------------------------------------------------------===//
1
+ // This file is auto-generated by clang-tblgen from HLSLIntrinsics.td.
2
+ // Do not edit this file directly.
41
3
 
42
4
  /// \fn T abs(T Val)
43
5
  /// \brief Returns the absolute value of the input value, \a Val.
44
6
  /// \param Val The input value.
7
+ // abs overloads
8
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
9
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
10
+ half abs(half);
11
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
12
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
13
+ half2 abs(half2);
14
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
15
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
16
+ half3 abs(half3);
17
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
18
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
19
+ half4 abs(half4);
45
20
 
46
21
  #ifdef __HLSL_ENABLE_16_BIT
47
22
  _HLSL_AVAILABILITY(shadermodel, 6.2)
@@ -56,30 +31,8 @@ int16_t3 abs(int16_t3);
56
31
  _HLSL_AVAILABILITY(shadermodel, 6.2)
57
32
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
58
33
  int16_t4 abs(int16_t4);
59
-
60
- _HLSL_AVAILABILITY(shadermodel, 6.2)
61
- constexpr uint16_t abs(uint16_t V) { return V; }
62
- _HLSL_AVAILABILITY(shadermodel, 6.2)
63
- constexpr uint16_t2 abs(uint16_t2 V) { return V; }
64
- _HLSL_AVAILABILITY(shadermodel, 6.2)
65
- constexpr uint16_t3 abs(uint16_t3 V) { return V; }
66
- _HLSL_AVAILABILITY(shadermodel, 6.2)
67
- constexpr uint16_t4 abs(uint16_t4 V) { return V; }
68
34
  #endif
69
35
 
70
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
71
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
72
- half abs(half);
73
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
74
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
75
- half2 abs(half2);
76
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
77
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
78
- half3 abs(half3);
79
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
80
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
81
- half4 abs(half4);
82
-
83
36
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
84
37
  int abs(int);
85
38
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
@@ -89,20 +42,6 @@ int3 abs(int3);
89
42
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
90
43
  int4 abs(int4);
91
44
 
92
- constexpr uint abs(uint V) { return V; }
93
- constexpr uint2 abs(uint2 V) { return V; }
94
- constexpr uint3 abs(uint3 V) { return V; }
95
- constexpr uint4 abs(uint4 V) { return V; }
96
-
97
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
98
- float abs(float);
99
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
100
- float2 abs(float2);
101
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
102
- float3 abs(float3);
103
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
104
- float4 abs(float4);
105
-
106
45
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
107
46
  int64_t abs(int64_t);
108
47
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
@@ -112,10 +51,14 @@ int64_t3 abs(int64_t3);
112
51
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
113
52
  int64_t4 abs(int64_t4);
114
53
 
115
- constexpr uint64_t abs(uint64_t V) { return V; }
116
- constexpr uint64_t2 abs(uint64_t2 V) { return V; }
117
- constexpr uint64_t3 abs(uint64_t3 V) { return V; }
118
- constexpr uint64_t4 abs(uint64_t4 V) { return V; }
54
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
55
+ float abs(float);
56
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
57
+ float2 abs(float2);
58
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
59
+ float3 abs(float3);
60
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
61
+ float4 abs(float4);
119
62
 
120
63
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
121
64
  double abs(double);
@@ -126,14 +69,10 @@ double3 abs(double3);
126
69
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
127
70
  double4 abs(double4);
128
71
 
129
- //===----------------------------------------------------------------------===//
130
- // acos builtins
131
- //===----------------------------------------------------------------------===//
132
-
133
72
  /// \fn T acos(T Val)
134
73
  /// \brief Returns the arccosine of the input value, \a Val.
135
74
  /// \param Val The input value.
136
-
75
+ // acos overloads
137
76
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
138
77
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
139
78
  half acos(half);
@@ -156,10 +95,6 @@ float3 acos(float3);
156
95
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_acos)
157
96
  float4 acos(float4);
158
97
 
159
- //===----------------------------------------------------------------------===//
160
- // AddUint64 builtins
161
- //===----------------------------------------------------------------------===//
162
-
163
98
  /// \fn T AddUint64(T a, T b)
164
99
  /// \brief Implements unsigned 64-bit integer addition using pairs of unsigned
165
100
  /// 32-bit integers.
@@ -169,21 +104,31 @@ float4 acos(float4);
169
104
  /// This function takes one or two pairs (low, high) of unsigned 32-bit integer
170
105
  /// values and returns pairs (low, high) of unsigned 32-bit integer
171
106
  /// values representing the result of unsigned 64-bit integer addition.
172
-
107
+ // AddUint64 overloads
173
108
  _HLSL_AVAILABILITY(shadermodel, 6.0)
174
109
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_adduint64)
175
- uint32_t2 AddUint64(uint32_t2, uint32_t2);
110
+ uint2 AddUint64(uint2, uint2);
176
111
  _HLSL_AVAILABILITY(shadermodel, 6.0)
177
112
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_adduint64)
178
- uint32_t4 AddUint64(uint32_t4, uint32_t4);
179
-
180
- //===----------------------------------------------------------------------===//
181
- // all builtins
182
- //===----------------------------------------------------------------------===//
113
+ uint4 AddUint64(uint4, uint4);
183
114
 
184
115
  /// \fn bool all(T x)
185
116
  /// \brief Returns True if all components of the \a x parameter are non-zero;
186
- /// otherwise, false. \param x The input value.
117
+ /// otherwise, false.
118
+ /// \param x The input value.
119
+ // all overloads
120
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
121
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
122
+ bool all(half);
123
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
124
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
125
+ bool all(half2);
126
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
127
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
128
+ bool all(half3);
129
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
130
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
131
+ bool all(half4);
187
132
 
188
133
  #ifdef __HLSL_ENABLE_16_BIT
189
134
  _HLSL_AVAILABILITY(shadermodel, 6.2)
@@ -198,6 +143,7 @@ bool all(int16_t3);
198
143
  _HLSL_AVAILABILITY(shadermodel, 6.2)
199
144
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
200
145
  bool all(int16_t4);
146
+
201
147
  _HLSL_AVAILABILITY(shadermodel, 6.2)
202
148
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
203
149
  bool all(uint16_t);
@@ -212,19 +158,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
212
158
  bool all(uint16_t4);
213
159
  #endif
214
160
 
215
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
216
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
217
- bool all(half);
218
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
219
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
220
- bool all(half2);
221
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
222
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
223
- bool all(half3);
224
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
225
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
226
- bool all(half4);
227
-
228
161
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
229
162
  bool all(bool);
230
163
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
@@ -233,7 +166,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
233
166
  bool all(bool3);
234
167
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
235
168
  bool all(bool4);
236
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
237
169
 
238
170
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
239
171
  bool all(int);
@@ -253,15 +185,6 @@ bool all(uint3);
253
185
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
254
186
  bool all(uint4);
255
187
 
256
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
257
- bool all(float);
258
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
259
- bool all(float2);
260
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
261
- bool all(float3);
262
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
263
- bool all(float4);
264
-
265
188
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
266
189
  bool all(int64_t);
267
190
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
@@ -280,6 +203,15 @@ bool all(uint64_t3);
280
203
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
281
204
  bool all(uint64_t4);
282
205
 
206
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
207
+ bool all(float);
208
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
209
+ bool all(float2);
210
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
211
+ bool all(float3);
212
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
213
+ bool all(float4);
214
+
283
215
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
284
216
  bool all(double);
285
217
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
@@ -289,67 +221,80 @@ bool all(double3);
289
221
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all)
290
222
  bool all(double4);
291
223
 
292
- //===----------------------------------------------------------------------===//
293
- // and builtins
294
- //===----------------------------------------------------------------------===//
224
+ /// \fn void AllMemoryBarrier(void)
225
+ /// \brief Blocks execution of all threads in a group until all memory
226
+ /// accesses have been completed.
227
+ // AllMemoryBarrier overloads
228
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all_memory_barrier)
229
+ __attribute__((convergent)) void AllMemoryBarrier();
230
+
231
+ /// \fn void AllMemoryBarrierWithGroupSync(void)
232
+ /// \brief Blocks execution of all threads in a group until all memory
233
+ /// accesses have been completed and all threads in the group have reached this call.
234
+ // AllMemoryBarrierWithGroupSync overloads
235
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_all_memory_barrier_with_group_sync)
236
+ __attribute__((convergent)) void AllMemoryBarrierWithGroupSync();
295
237
 
296
238
  /// \fn bool and(bool x, bool y)
297
239
  /// \brief Logically ands two boolean vectors or matrices elementwise and
298
240
  /// produces a bool vector or matrix output.
299
-
300
- // TODO: Clean up clang-format marker once we've resolved
301
- // https://github.com/llvm/llvm-project/issues/127851
302
- //
303
- // clang-format off
241
+ // and overloads
304
242
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
305
- bool and(bool x, bool y);
243
+ bool and(bool, bool);
306
244
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
307
- bool2 and(bool2 x, bool2 y);
245
+ bool2 and(bool2, bool2);
308
246
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
309
- bool3 and(bool3 x, bool3 y);
247
+ bool3 and(bool3, bool3);
310
248
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
311
- bool4 and(bool4 x, bool4 y);
312
-
313
-
249
+ bool4 and(bool4, bool4);
314
250
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
315
- bool1x2 and(bool1x2 x, bool1x2 y);
251
+ bool1x2 and(bool1x2, bool1x2);
316
252
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
317
- bool1x3 and(bool1x3 x, bool1x3 y);
253
+ bool1x3 and(bool1x3, bool1x3);
318
254
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
319
- bool1x4 and(bool1x4 x, bool1x4 y);
255
+ bool1x4 and(bool1x4, bool1x4);
320
256
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
321
- bool2x1 and(bool2x1 x, bool2x1 y);
257
+ bool2x1 and(bool2x1, bool2x1);
322
258
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
323
- bool2x2 and(bool2x2 x, bool2x2 y);
259
+ bool2x2 and(bool2x2, bool2x2);
324
260
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
325
- bool2x3 and(bool2x3 x, bool2x3 y);
261
+ bool2x3 and(bool2x3, bool2x3);
326
262
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
327
- bool2x4 and(bool2x4 x, bool2x4 y);
263
+ bool2x4 and(bool2x4, bool2x4);
328
264
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
329
- bool3x1 and(bool3x1 x, bool3x1 y);
265
+ bool3x1 and(bool3x1, bool3x1);
330
266
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
331
- bool3x2 and(bool3x2 x, bool3x2 y);
267
+ bool3x2 and(bool3x2, bool3x2);
332
268
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
333
- bool3x3 and(bool3x3 x, bool3x3 y);
269
+ bool3x3 and(bool3x3, bool3x3);
334
270
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
335
- bool3x4 and(bool3x4 x, bool3x4 y);
271
+ bool3x4 and(bool3x4, bool3x4);
336
272
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
337
- bool4x1 and(bool4x1 x, bool4x1 y);
273
+ bool4x1 and(bool4x1, bool4x1);
338
274
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
339
- bool4x2 and(bool4x2 x, bool4x2 y);
275
+ bool4x2 and(bool4x2, bool4x2);
340
276
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
341
- bool4x3 and(bool4x3 x, bool4x3 y);
277
+ bool4x3 and(bool4x3, bool4x3);
342
278
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
343
- bool4x4 and(bool4x4 x, bool4x4 y);
344
- // clang-format on
345
-
346
- //===----------------------------------------------------------------------===//
347
- // any builtins
348
- //===----------------------------------------------------------------------===//
279
+ bool4x4 and(bool4x4, bool4x4);
349
280
 
350
281
  /// \fn bool any(T x)
351
282
  /// \brief Returns True if any components of the \a x parameter are non-zero;
352
- /// otherwise, false. \param x The input value.
283
+ /// otherwise, false.
284
+ /// \param x The input value.
285
+ // any overloads
286
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
287
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
288
+ bool any(half);
289
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
290
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
291
+ bool any(half2);
292
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
293
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
294
+ bool any(half3);
295
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
296
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
297
+ bool any(half4);
353
298
 
354
299
  #ifdef __HLSL_ENABLE_16_BIT
355
300
  _HLSL_AVAILABILITY(shadermodel, 6.2)
@@ -364,6 +309,7 @@ bool any(int16_t3);
364
309
  _HLSL_AVAILABILITY(shadermodel, 6.2)
365
310
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
366
311
  bool any(int16_t4);
312
+
367
313
  _HLSL_AVAILABILITY(shadermodel, 6.2)
368
314
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
369
315
  bool any(uint16_t);
@@ -378,19 +324,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
378
324
  bool any(uint16_t4);
379
325
  #endif
380
326
 
381
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
382
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
383
- bool any(half);
384
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
385
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
386
- bool any(half2);
387
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
388
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
389
- bool any(half3);
390
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
391
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
392
- bool any(half4);
393
-
394
327
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
395
328
  bool any(bool);
396
329
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -399,7 +332,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
399
332
  bool any(bool3);
400
333
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
401
334
  bool any(bool4);
402
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
403
335
 
404
336
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
405
337
  bool any(int);
@@ -419,15 +351,6 @@ bool any(uint3);
419
351
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
420
352
  bool any(uint4);
421
353
 
422
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
423
- bool any(float);
424
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
425
- bool any(float2);
426
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
427
- bool any(float3);
428
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
429
- bool any(float4);
430
-
431
354
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
432
355
  bool any(int64_t);
433
356
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -446,6 +369,15 @@ bool any(uint64_t3);
446
369
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
447
370
  bool any(uint64_t4);
448
371
 
372
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
373
+ bool any(float);
374
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
375
+ bool any(float2);
376
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
377
+ bool any(float3);
378
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
379
+ bool any(float4);
380
+
449
381
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
450
382
  bool any(double);
451
383
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -455,15 +387,11 @@ bool any(double3);
455
387
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
456
388
  bool any(double4);
457
389
 
458
- //===----------------------------------------------------------------------===//
459
- // asdouble builtins
460
- //===----------------------------------------------------------------------===//
461
-
462
390
  /// \fn double asdouble(uint LowBits, uint HighBits)
463
391
  /// \brief Reinterprets a cast value (two 32-bit values) into a double.
464
392
  /// \param LowBits The low 32-bit pattern of the input value.
465
393
  /// \param HighBits The high 32-bit pattern of the input value.
466
-
394
+ // asdouble overloads
467
395
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
468
396
  double asdouble(uint, uint);
469
397
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
@@ -473,14 +401,10 @@ double3 asdouble(uint3, uint3);
473
401
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
474
402
  double4 asdouble(uint4, uint4);
475
403
 
476
- //===----------------------------------------------------------------------===//
477
- // asin builtins
478
- //===----------------------------------------------------------------------===//
479
-
480
404
  /// \fn T asin(T Val)
481
405
  /// \brief Returns the arcsine of the input value, \a Val.
482
406
  /// \param Val The input value.
483
-
407
+ // asin overloads
484
408
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
485
409
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
486
410
  half asin(half);
@@ -503,14 +427,10 @@ float3 asin(float3);
503
427
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
504
428
  float4 asin(float4);
505
429
 
506
- //===----------------------------------------------------------------------===//
507
- // atan builtins
508
- //===----------------------------------------------------------------------===//
509
-
510
430
  /// \fn T atan(T Val)
511
431
  /// \brief Returns the arctangent of the input value, \a Val.
512
432
  /// \param Val The input value.
513
-
433
+ // atan overloads
514
434
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
515
435
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
516
436
  half atan(half);
@@ -533,47 +453,114 @@ float3 atan(float3);
533
453
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
534
454
  float4 atan(float4);
535
455
 
536
- //===----------------------------------------------------------------------===//
537
- // atan2 builtins
538
- //===----------------------------------------------------------------------===//
539
-
540
456
  /// \fn T atan2(T y, T x)
541
457
  /// \brief Returns the arctangent of y/x, using the signs of the arguments to
542
458
  /// determine the correct quadrant.
543
459
  /// \param y The y-coordinate.
544
460
  /// \param x The x-coordinate.
545
-
461
+ // atan2 overloads
546
462
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
547
463
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
548
- half atan2(half y, half x);
464
+ half atan2(half, half);
549
465
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
550
466
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
551
- half2 atan2(half2 y, half2 x);
467
+ half2 atan2(half2, half2);
552
468
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
553
469
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
554
- half3 atan2(half3 y, half3 x);
470
+ half3 atan2(half3, half3);
555
471
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
556
472
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
557
- half4 atan2(half4 y, half4 x);
558
-
473
+ half4 atan2(half4, half4);
474
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
475
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
476
+ half1x2 atan2(half1x2, half1x2);
477
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
478
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
479
+ half1x3 atan2(half1x3, half1x3);
480
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
481
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
482
+ half1x4 atan2(half1x4, half1x4);
483
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
484
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
485
+ half2x1 atan2(half2x1, half2x1);
486
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
487
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
488
+ half2x2 atan2(half2x2, half2x2);
489
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
490
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
491
+ half2x3 atan2(half2x3, half2x3);
492
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
493
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
494
+ half2x4 atan2(half2x4, half2x4);
495
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
559
496
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
560
- float atan2(float y, float x);
497
+ half3x1 atan2(half3x1, half3x1);
498
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
499
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
500
+ half3x2 atan2(half3x2, half3x2);
501
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
502
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
503
+ half3x3 atan2(half3x3, half3x3);
504
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
505
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
506
+ half3x4 atan2(half3x4, half3x4);
507
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
508
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
509
+ half4x1 atan2(half4x1, half4x1);
510
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
561
511
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
562
- float2 atan2(float2 y, float2 x);
512
+ half4x2 atan2(half4x2, half4x2);
513
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
563
514
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
564
- float3 atan2(float3 y, float3 x);
515
+ half4x3 atan2(half4x3, half4x3);
516
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
565
517
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
566
- float4 atan2(float4 y, float4 x);
518
+ half4x4 atan2(half4x4, half4x4);
567
519
 
568
- //===----------------------------------------------------------------------===//
569
- // ceil builtins
570
- //===----------------------------------------------------------------------===//
520
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
521
+ float atan2(float, float);
522
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
523
+ float2 atan2(float2, float2);
524
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
525
+ float3 atan2(float3, float3);
526
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
527
+ float4 atan2(float4, float4);
528
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
529
+ float1x2 atan2(float1x2, float1x2);
530
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
531
+ float1x3 atan2(float1x3, float1x3);
532
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
533
+ float1x4 atan2(float1x4, float1x4);
534
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
535
+ float2x1 atan2(float2x1, float2x1);
536
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
537
+ float2x2 atan2(float2x2, float2x2);
538
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
539
+ float2x3 atan2(float2x3, float2x3);
540
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
541
+ float2x4 atan2(float2x4, float2x4);
542
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
543
+ float3x1 atan2(float3x1, float3x1);
544
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
545
+ float3x2 atan2(float3x2, float3x2);
546
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
547
+ float3x3 atan2(float3x3, float3x3);
548
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
549
+ float3x4 atan2(float3x4, float3x4);
550
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
551
+ float4x1 atan2(float4x1, float4x1);
552
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
553
+ float4x2 atan2(float4x2, float4x2);
554
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
555
+ float4x3 atan2(float4x3, float4x3);
556
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
557
+ float4x4 atan2(float4x4, float4x4);
571
558
 
572
559
  /// \fn T ceil(T Val)
573
560
  /// \brief Returns the smallest integer value that is greater than or equal to
574
561
  /// the input value, \a Val.
575
562
  /// \param Val The input value.
576
-
563
+ // ceil overloads
577
564
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
578
565
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
579
566
  half ceil(half);
@@ -596,10 +583,6 @@ float3 ceil(float3);
596
583
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
597
584
  float4 ceil(float4);
598
585
 
599
- //===----------------------------------------------------------------------===//
600
- // clamp builtins
601
- //===----------------------------------------------------------------------===//
602
-
603
586
  /// \fn T clamp(T X, T Min, T Max)
604
587
  /// \brief Clamps the specified value \a X to the specified
605
588
  /// minimum ( \a Min) and maximum ( \a Max) range.
@@ -610,7 +593,7 @@ float4 ceil(float4);
610
593
  /// Returns The clamped value for the \a X parameter.
611
594
  /// For values of -INF or INF, clamp will behave as expected.
612
595
  /// However for values of NaN, the results are undefined.
613
-
596
+ // clamp overloads
614
597
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
615
598
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
616
599
  half clamp(half, half, half);
@@ -706,13 +689,22 @@ double3 clamp(double3, double3, double3);
706
689
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
707
690
  double4 clamp(double4, double4, double4);
708
691
 
709
- //===----------------------------------------------------------------------===//
710
- // clip builtins
711
- //===----------------------------------------------------------------------===//
712
-
713
692
  /// \fn void clip(T Val)
714
693
  /// \brief Discards the current pixel if the specified value is less than zero.
715
694
  /// \param Val The input value.
695
+ // clip overloads
696
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
697
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
698
+ void clip(half);
699
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
700
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
701
+ void clip(half2);
702
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
703
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
704
+ void clip(half3);
705
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
706
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
707
+ void clip(half4);
716
708
 
717
709
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
718
710
  void clip(float);
@@ -723,14 +715,10 @@ void clip(float3);
723
715
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
724
716
  void clip(float4);
725
717
 
726
- //===----------------------------------------------------------------------===//
727
- // cos builtins
728
- //===----------------------------------------------------------------------===//
729
-
730
718
  /// \fn T cos(T Val)
731
719
  /// \brief Returns the cosine of the input value, \a Val.
732
720
  /// \param Val The input value.
733
-
721
+ // cos overloads
734
722
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
735
723
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
736
724
  half cos(half);
@@ -753,14 +741,10 @@ float3 cos(float3);
753
741
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
754
742
  float4 cos(float4);
755
743
 
756
- //===----------------------------------------------------------------------===//
757
- // cosh builtins
758
- //===----------------------------------------------------------------------===//
759
-
760
744
  /// \fn T cosh(T Val)
761
745
  /// \brief Returns the hyperbolic cosine of the input value, \a Val.
762
746
  /// \param Val The input value.
763
-
747
+ // cosh overloads
764
748
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
765
749
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
766
750
  half cosh(half);
@@ -783,111 +767,153 @@ float3 cosh(float3);
783
767
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
784
768
  float4 cosh(float4);
785
769
 
786
- //===----------------------------------------------------------------------===//
787
- // count bits builtins
788
- //===----------------------------------------------------------------------===//
789
-
790
- /// \fn T countbits(T Val)
791
- /// \brief Return the number of bits (per component) set in the input integer.
792
- /// \param Val The input value.
770
+ // cross overloads
771
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf32)
772
+ float3 cross(float3, float3);
793
773
 
794
- #ifdef __HLSL_ENABLE_16_BIT
795
- _HLSL_AVAILABILITY(shadermodel, 6.2)
796
- const inline uint countbits(int16_t x) {
797
- return __builtin_elementwise_popcount(x);
798
- }
799
- _HLSL_AVAILABILITY(shadermodel, 6.2)
800
- const inline uint2 countbits(int16_t2 x) {
801
- return __builtin_elementwise_popcount(x);
802
- }
803
- _HLSL_AVAILABILITY(shadermodel, 6.2)
804
- const inline uint3 countbits(int16_t3 x) {
805
- return __builtin_elementwise_popcount(x);
806
- }
807
- _HLSL_AVAILABILITY(shadermodel, 6.2)
808
- const inline uint4 countbits(int16_t4 x) {
809
- return __builtin_elementwise_popcount(x);
810
- }
811
- _HLSL_AVAILABILITY(shadermodel, 6.2)
812
- const inline uint countbits(uint16_t x) {
813
- return __builtin_elementwise_popcount(x);
814
- }
815
- _HLSL_AVAILABILITY(shadermodel, 6.2)
816
- const inline uint2 countbits(uint16_t2 x) {
817
- return __builtin_elementwise_popcount(x);
818
- }
819
- _HLSL_AVAILABILITY(shadermodel, 6.2)
820
- const inline uint3 countbits(uint16_t3 x) {
821
- return __builtin_elementwise_popcount(x);
822
- }
774
+ /// \fn T cross(T x, T y)
775
+ /// \brief Returns the cross product of two floating-point, 3D vectors.
776
+ /// \param x [in] The first floating-point, 3D vector.
777
+ /// \param y [in] The second floating-point, 3D vector.
778
+ ///
779
+ /// Result is the cross product of x and y, i.e., the resulting
780
+ /// components are, in order :
781
+ /// x[1] * y[2] - y[1] * x[2]
782
+ /// x[2] * y[0] - y[2] * x[0]
783
+ /// x[0] * y[1] - y[0] * x[1]
784
+ // cross overloads
823
785
  _HLSL_AVAILABILITY(shadermodel, 6.2)
824
- const inline uint4 countbits(uint16_t4 x) {
825
- return __builtin_elementwise_popcount(x);
826
- }
827
- #endif
828
-
829
- const inline uint countbits(int x) { return __builtin_elementwise_popcount(x); }
830
- const inline uint2 countbits(int2 x) {
831
- return __builtin_elementwise_popcount(x);
832
- }
833
- const inline uint3 countbits(int3 x) {
834
- return __builtin_elementwise_popcount(x);
835
- }
836
- const inline uint4 countbits(int4 x) {
837
- return __builtin_elementwise_popcount(x);
838
- }
839
-
840
- const inline uint countbits(uint x) {
841
- return __builtin_elementwise_popcount(x);
842
- }
843
- const inline uint2 countbits(uint2 x) {
844
- return __builtin_elementwise_popcount(x);
845
- }
846
- const inline uint3 countbits(uint3 x) {
847
- return __builtin_elementwise_popcount(x);
848
- }
849
- const inline uint4 countbits(uint4 x) {
850
- return __builtin_elementwise_popcount(x);
851
- }
852
-
853
- const inline uint countbits(int64_t x) {
854
- return __builtin_elementwise_popcount(x);
855
- }
856
- const inline uint2 countbits(int64_t2 x) {
857
- return __builtin_elementwise_popcount(x);
858
- }
859
- const inline uint3 countbits(int64_t3 x) {
860
- return __builtin_elementwise_popcount(x);
861
- }
862
- const inline uint4 countbits(int64_t4 x) {
863
- return __builtin_elementwise_popcount(x);
864
- }
865
-
866
- const inline uint countbits(uint64_t x) {
867
- return __builtin_elementwise_popcount(x);
868
- }
869
- const inline uint2 countbits(uint64_t2 x) {
870
- return __builtin_elementwise_popcount(x);
871
- }
872
- const inline uint3 countbits(uint64_t3 x) {
873
- return __builtin_elementwise_popcount(x);
874
- }
875
- const inline uint4 countbits(uint64_t4 x) {
876
- return __builtin_elementwise_popcount(x);
877
- }
878
-
879
- //===----------------------------------------------------------------------===//
880
- // degrees builtins
881
- //===----------------------------------------------------------------------===//
882
-
883
- /// \fn T degrees(T x)
884
- /// \brief Converts the specified value from radians to degrees.
885
- /// \param x The specified input value.
786
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf16)
787
+ half3 cross(half3, half3);
886
788
 
887
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
888
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
889
- half degrees(half);
890
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
789
+ /// \fn T ddx_coarse(T value)
790
+ /// \brief Computes a low precision partial derivative with respect to the
791
+ /// screen-space x-coordinate.
792
+ /// \param value The input value.
793
+ ///
794
+ /// The return value is a floating point scalar or vector containing the low
795
+ /// prevision partial derivative of the input value.
796
+ // ddx_coarse overloads
797
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
798
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
799
+ half ddx_coarse(half);
800
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
801
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
802
+ half2 ddx_coarse(half2);
803
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
804
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
805
+ half3 ddx_coarse(half3);
806
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
807
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
808
+ half4 ddx_coarse(half4);
809
+
810
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
811
+ float ddx_coarse(float);
812
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
813
+ float2 ddx_coarse(float2);
814
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
815
+ float3 ddx_coarse(float3);
816
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
817
+ float4 ddx_coarse(float4);
818
+
819
+ /// \fn T ddx_fine(T value)
820
+ /// \brief Computes a high precision partial derivative with respect to the
821
+ /// screen-space x-coordinate.
822
+ /// \param value The input value.
823
+ ///
824
+ /// The return value is a floating point scalar or vector containing the high
825
+ /// prevision partial derivative of the input value.
826
+ // ddx_fine overloads
827
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
828
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
829
+ half ddx_fine(half);
830
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
831
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
832
+ half2 ddx_fine(half2);
833
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
834
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
835
+ half3 ddx_fine(half3);
836
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
837
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
838
+ half4 ddx_fine(half4);
839
+
840
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
841
+ float ddx_fine(float);
842
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
843
+ float2 ddx_fine(float2);
844
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
845
+ float3 ddx_fine(float3);
846
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
847
+ float4 ddx_fine(float4);
848
+
849
+ /// \fn T ddy_coarse(T value)
850
+ /// \brief Computes a low precision partial derivative with respect to the
851
+ /// screen-space y-coordinate.
852
+ /// \param value The input value.
853
+ ///
854
+ /// The return value is a floating point scalar or vector containing the low
855
+ /// prevision partial derivative of the input value.
856
+ // ddy_coarse overloads
857
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
858
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
859
+ half ddy_coarse(half);
860
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
861
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
862
+ half2 ddy_coarse(half2);
863
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
864
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
865
+ half3 ddy_coarse(half3);
866
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
867
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
868
+ half4 ddy_coarse(half4);
869
+
870
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
871
+ float ddy_coarse(float);
872
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
873
+ float2 ddy_coarse(float2);
874
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
875
+ float3 ddy_coarse(float3);
876
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
877
+ float4 ddy_coarse(float4);
878
+
879
+ /// \fn T ddy_fine(T value)
880
+ /// \brief Computes a high precision partial derivative with respect to the
881
+ /// screen-space y-coordinate.
882
+ /// \param value The input value.
883
+ ///
884
+ /// The return value is a floating point scalar or vector containing the high
885
+ /// prevision partial derivative of the input value.
886
+ // ddy_fine overloads
887
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
888
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
889
+ half ddy_fine(half);
890
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
891
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
892
+ half2 ddy_fine(half2);
893
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
894
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
895
+ half3 ddy_fine(half3);
896
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
897
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
898
+ half4 ddy_fine(half4);
899
+
900
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
901
+ float ddy_fine(float);
902
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
903
+ float2 ddy_fine(float2);
904
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
905
+ float3 ddy_fine(float3);
906
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
907
+ float4 ddy_fine(float4);
908
+
909
+ /// \fn T degrees(T x)
910
+ /// \brief Converts the specified value from radians to degrees.
911
+ /// \param x The specified input value.
912
+ // degrees overloads
913
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
914
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
915
+ half degrees(half);
916
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
891
917
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
892
918
  half2 degrees(half2);
893
919
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
@@ -906,15 +932,25 @@ float3 degrees(float3);
906
932
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
907
933
  float4 degrees(float4);
908
934
 
909
- //===----------------------------------------------------------------------===//
910
- // dot product builtins
911
- //===----------------------------------------------------------------------===//
935
+ /// \fn void DeviceMemoryBarrier(void)
936
+ /// \brief Blocks execution of all threads in a group until all device memory
937
+ /// accesses have been completed.
938
+ // DeviceMemoryBarrier overloads
939
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_device_memory_barrier)
940
+ __attribute__((convergent)) void DeviceMemoryBarrier();
941
+
942
+ /// \fn void DeviceMemoryBarrierWithGroupSync(void)
943
+ /// \brief Blocks execution of all threads in a group until all device memory
944
+ /// accesses have been completed and all threads in the group have reached this call.
945
+ // DeviceMemoryBarrierWithGroupSync overloads
946
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_device_memory_barrier_with_group_sync)
947
+ __attribute__((convergent)) void DeviceMemoryBarrierWithGroupSync();
912
948
 
913
949
  /// \fn K dot(T X, T Y)
914
950
  /// \brief Return the dot product (a scalar value) of \a X and \a Y.
915
951
  /// \param X The X input value.
916
952
  /// \param Y The Y input value.
917
-
953
+ // dot overloads
918
954
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
919
955
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
920
956
  half dot(half, half);
@@ -956,18 +992,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
956
992
  uint16_t dot(uint16_t4, uint16_t4);
957
993
  #endif
958
994
 
959
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
960
- float dot(float, float);
961
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
962
- float dot(float2, float2);
963
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
964
- float dot(float3, float3);
965
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
966
- float dot(float4, float4);
967
-
968
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
969
- double dot(double, double);
970
-
971
995
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
972
996
  int dot(int, int);
973
997
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
@@ -1004,32 +1028,41 @@ uint64_t dot(uint64_t3, uint64_t3);
1004
1028
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1005
1029
  uint64_t dot(uint64_t4, uint64_t4);
1006
1030
 
1007
- //===----------------------------------------------------------------------===//
1008
- // dot4add builtins
1009
- //===----------------------------------------------------------------------===//
1031
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1032
+ float dot(float, float);
1033
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1034
+ float dot(float2, float2);
1035
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1036
+ float dot(float3, float3);
1037
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1038
+ float dot(float4, float4);
1010
1039
 
1011
1040
  /// \fn int dot4add_i8packed(uint A, uint B, int C)
1012
-
1041
+ /// \brief Dot product of two packed 8-bit signed integer vectors, accumulated
1042
+ /// with a 32-bit signed integer.
1043
+ // dot4add_i8packed overloads
1013
1044
  _HLSL_AVAILABILITY(shadermodel, 6.4)
1014
1045
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot4add_i8packed)
1015
1046
  int dot4add_i8packed(uint, uint, int);
1016
1047
 
1017
1048
  /// \fn uint dot4add_u8packed(uint A, uint B, uint C)
1018
-
1049
+ /// \brief Dot product of two packed 8-bit unsigned integer vectors, accumulated
1050
+ /// with a 32-bit unsigned integer.
1051
+ // dot4add_u8packed overloads
1019
1052
  _HLSL_AVAILABILITY(shadermodel, 6.4)
1020
1053
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot4add_u8packed)
1021
1054
  uint dot4add_u8packed(uint, uint, uint);
1022
1055
 
1023
- //===----------------------------------------------------------------------===//
1024
- // exp builtins
1025
- //===----------------------------------------------------------------------===//
1056
+ // dot overloads
1057
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1058
+ double dot(double, double);
1026
1059
 
1027
1060
  /// \fn T exp(T x)
1028
1061
  /// \brief Returns the base-e exponential, or \a e**x, of the specified value.
1029
1062
  /// \param x The specified input value.
1030
1063
  ///
1031
1064
  /// The return value is the base-e exponential of the \a x parameter.
1032
-
1065
+ // exp overloads
1033
1066
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1034
1067
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
1035
1068
  half exp(half);
@@ -1052,16 +1085,12 @@ float3 exp(float3);
1052
1085
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
1053
1086
  float4 exp(float4);
1054
1087
 
1055
- //===----------------------------------------------------------------------===//
1056
- // exp2 builtins
1057
- //===----------------------------------------------------------------------===//
1058
-
1059
1088
  /// \fn T exp2(T x)
1060
1089
  /// \brief Returns the base 2 exponential, or \a 2**x, of the specified value.
1061
1090
  /// \param x The specified input value.
1062
1091
  ///
1063
1092
  /// The base 2 exponential of the \a x parameter.
1064
-
1093
+ // exp2 overloads
1065
1094
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1066
1095
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
1067
1096
  half exp2(half);
@@ -1084,18 +1113,14 @@ float3 exp2(float3);
1084
1113
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
1085
1114
  float4 exp2(float4);
1086
1115
 
1087
- //===----------------------------------------------------------------------===//
1088
- // f16tof32 builtins
1089
- //===----------------------------------------------------------------------===//
1090
-
1091
1116
  /// \fn float f16tof32(uint x)
1092
1117
  /// \brief Returns the half value stored in the low 16 bits of the uint arg
1093
1118
  /// converted to a float.
1094
1119
  /// \param x The uint containing two half values.
1095
1120
  ///
1096
- /// The float value of the half value found in the low 16 bits of the \a xi
1121
+ /// The float value of the half value found in the low 16 bits of the \a x
1097
1122
  /// parameter.
1098
-
1123
+ // f16tof32 overloads
1099
1124
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1100
1125
  float f16tof32(uint);
1101
1126
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
@@ -1105,15 +1130,28 @@ float3 f16tof32(uint3);
1105
1130
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1106
1131
  float4 f16tof32(uint4);
1107
1132
 
1108
- //===----------------------------------------------------------------------===//
1109
- // firstbitlow builtins
1110
- //===----------------------------------------------------------------------===//
1133
+ /// \fn uint f32tof16(float x)
1134
+ /// \brief Returns the float arg value converted to half in the low 16 bits of
1135
+ /// the uint return value.
1136
+ /// \param x The float to be converted to half.
1137
+ ///
1138
+ /// The return value is a uint containing the converted half value in the low
1139
+ /// 16 bits.
1140
+ // f32tof16 overloads
1141
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f32tof16)
1142
+ uint f32tof16(float);
1143
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f32tof16)
1144
+ uint2 f32tof16(float2);
1145
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f32tof16)
1146
+ uint3 f32tof16(float3);
1147
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f32tof16)
1148
+ uint4 f32tof16(float4);
1111
1149
 
1112
1150
  /// \fn T firstbitlow(T Val)
1113
1151
  /// \brief Returns the location of the first set bit starting from the lowest
1114
1152
  /// order bit and working upward, per component.
1115
1153
  /// \param Val the input value.
1116
-
1154
+ // firstbitlow overloads
1117
1155
  #ifdef __HLSL_ENABLE_16_BIT
1118
1156
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1119
1157
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
@@ -1127,6 +1165,7 @@ uint3 firstbitlow(int16_t3);
1127
1165
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1128
1166
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1129
1167
  uint4 firstbitlow(int16_t4);
1168
+
1130
1169
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1131
1170
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1132
1171
  uint firstbitlow(uint16_t);
@@ -1177,15 +1216,11 @@ uint3 firstbitlow(uint64_t3);
1177
1216
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1178
1217
  uint4 firstbitlow(uint64_t4);
1179
1218
 
1180
- //===----------------------------------------------------------------------===//
1181
- // floor builtins
1182
- //===----------------------------------------------------------------------===//
1183
-
1184
1219
  /// \fn T floor(T Val)
1185
1220
  /// \brief Returns the largest integer that is less than or equal to the input
1186
1221
  /// value, \a Val.
1187
1222
  /// \param Val The input value.
1188
-
1223
+ // floor overloads
1189
1224
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1190
1225
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
1191
1226
  half floor(half);
@@ -1208,16 +1243,57 @@ float3 floor(float3);
1208
1243
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
1209
1244
  float4 floor(float4);
1210
1245
 
1211
- //===----------------------------------------------------------------------===//
1212
- // frac builtins
1213
- //===----------------------------------------------------------------------===//
1246
+ /// \fn double fma(double a, double b, double c)
1247
+ /// \brief Returns the double-precision fused multiply-addition of a * b + c.
1248
+ /// \param a The first value in the fused multiply-addition.
1249
+ /// \param b The second value in the fused multiply-addition.
1250
+ /// \param c The third value in the fused multiply-addition.
1251
+ // fma overloads
1252
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1253
+ double fma(double, double, double);
1254
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1255
+ double2 fma(double2, double2, double2);
1256
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1257
+ double3 fma(double3, double3, double3);
1258
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1259
+ double4 fma(double4, double4, double4);
1260
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1261
+ double1x2 fma(double1x2, double1x2, double1x2);
1262
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1263
+ double1x3 fma(double1x3, double1x3, double1x3);
1264
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1265
+ double1x4 fma(double1x4, double1x4, double1x4);
1266
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1267
+ double2x1 fma(double2x1, double2x1, double2x1);
1268
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1269
+ double2x2 fma(double2x2, double2x2, double2x2);
1270
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1271
+ double2x3 fma(double2x3, double2x3, double2x3);
1272
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1273
+ double2x4 fma(double2x4, double2x4, double2x4);
1274
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1275
+ double3x1 fma(double3x1, double3x1, double3x1);
1276
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1277
+ double3x2 fma(double3x2, double3x2, double3x2);
1278
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1279
+ double3x3 fma(double3x3, double3x3, double3x3);
1280
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1281
+ double3x4 fma(double3x4, double3x4, double3x4);
1282
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1283
+ double4x1 fma(double4x1, double4x1, double4x1);
1284
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1285
+ double4x2 fma(double4x2, double4x2, double4x2);
1286
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1287
+ double4x3 fma(double4x3, double4x3, double4x3);
1288
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_fma)
1289
+ double4x4 fma(double4x4, double4x4, double4x4);
1214
1290
 
1215
1291
  /// \fn T frac(T x)
1216
1292
  /// \brief Returns the fractional (or decimal) part of x. \a x parameter.
1217
1293
  /// \param x The specified input value.
1218
1294
  ///
1219
1295
  /// If \a the return value is greater than or equal to 0 and less than 1.
1220
-
1296
+ // frac overloads
1221
1297
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1222
1298
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
1223
1299
  half frac(half);
@@ -1240,9 +1316,20 @@ float3 frac(float3);
1240
1316
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
1241
1317
  float4 frac(float4);
1242
1318
 
1243
- //===----------------------------------------------------------------------===//
1244
- // isinf builtins
1245
- //===----------------------------------------------------------------------===//
1319
+ /// \fn void GroupMemoryBarrier(void)
1320
+ /// \brief Blocks execution of all threads in a group until all group shared
1321
+ /// accesses have been completed.
1322
+ // GroupMemoryBarrier overloads
1323
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_group_memory_barrier)
1324
+ __attribute__((convergent)) void GroupMemoryBarrier();
1325
+
1326
+ /// \fn void GroupMemoryBarrierWithGroupSync(void)
1327
+ /// \brief Blocks execution of all threads in a group until all group shared
1328
+ /// accesses have been completed and all threads in the group have reached this
1329
+ /// call.
1330
+ // GroupMemoryBarrierWithGroupSync overloads
1331
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_group_memory_barrier_with_group_sync)
1332
+ __attribute__((convergent)) void GroupMemoryBarrierWithGroupSync();
1246
1333
 
1247
1334
  /// \fn T isinf(T x)
1248
1335
  /// \brief Determines if the specified value \a x is infinite.
@@ -1250,7 +1337,7 @@ float4 frac(float4);
1250
1337
  ///
1251
1338
  /// Returns a value of the same size as the input, with a value set
1252
1339
  /// to True if the x parameter is +INF or -INF. Otherwise, False.
1253
-
1340
+ // isinf overloads
1254
1341
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1255
1342
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
1256
1343
  bool isinf(half);
@@ -1273,17 +1360,13 @@ bool3 isinf(float3);
1273
1360
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
1274
1361
  bool4 isinf(float4);
1275
1362
 
1276
- //===----------------------------------------------------------------------===//
1277
- // isnan builtins
1278
- //===----------------------------------------------------------------------===//
1279
-
1280
1363
  /// \fn T isnan(T x)
1281
1364
  /// \brief Determines if the specified value \a x is Not a Number.
1282
1365
  /// \param x The specified input value.
1283
1366
  ///
1284
1367
  /// Returns a value of the same size as the input, with a value set
1285
1368
  /// to True if the x parameter is NaN or QNaN. Otherwise, False.
1286
-
1369
+ // isnan overloads
1287
1370
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1288
1371
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1289
1372
  bool isnan(half);
@@ -1306,10 +1389,6 @@ bool3 isnan(float3);
1306
1389
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1307
1390
  bool4 isnan(float4);
1308
1391
 
1309
- //===----------------------------------------------------------------------===//
1310
- // lerp builtins
1311
- //===----------------------------------------------------------------------===//
1312
-
1313
1392
  /// \fn T lerp(T x, T y, T s)
1314
1393
  /// \brief Returns the linear interpolation of x to y by s.
1315
1394
  /// \param x [in] The first-floating point value.
@@ -1319,7 +1398,7 @@ bool4 isnan(float4);
1319
1398
  ///
1320
1399
  /// Linear interpolation is based on the following formula: x*(1-s) + y*s which
1321
1400
  /// can equivalently be written as x + s(y-x).
1322
-
1401
+ // lerp overloads
1323
1402
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1324
1403
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
1325
1404
  half lerp(half, half, half);
@@ -1342,17 +1421,13 @@ float3 lerp(float3, float3, float3);
1342
1421
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
1343
1422
  float4 lerp(float4, float4, float4);
1344
1423
 
1345
- //===----------------------------------------------------------------------===//
1346
- // log builtins
1347
- //===----------------------------------------------------------------------===//
1348
-
1349
1424
  /// \fn T log(T Val)
1350
1425
  /// \brief The base-e logarithm of the input value, \a Val parameter.
1351
1426
  /// \param Val The input value.
1352
1427
  ///
1353
1428
  /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1354
1429
  /// function returns negative infinity.
1355
-
1430
+ // log overloads
1356
1431
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1357
1432
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
1358
1433
  half log(half);
@@ -1375,50 +1450,13 @@ float3 log(float3);
1375
1450
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
1376
1451
  float4 log(float4);
1377
1452
 
1378
- //===----------------------------------------------------------------------===//
1379
- // log10 builtins
1380
- //===----------------------------------------------------------------------===//
1381
-
1382
- /// \fn T log10(T Val)
1383
- /// \brief The base-10 logarithm of the input value, \a Val parameter.
1384
- /// \param Val The input value.
1385
- ///
1386
- /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1387
- /// function returns negative infinity.
1388
-
1389
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1390
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1391
- half log10(half);
1392
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1393
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1394
- half2 log10(half2);
1395
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1396
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1397
- half3 log10(half3);
1398
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1399
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1400
- half4 log10(half4);
1401
-
1402
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1403
- float log10(float);
1404
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1405
- float2 log10(float2);
1406
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1407
- float3 log10(float3);
1408
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1409
- float4 log10(float4);
1410
-
1411
- //===----------------------------------------------------------------------===//
1412
- // log2 builtins
1413
- //===----------------------------------------------------------------------===//
1414
-
1415
1453
  /// \fn T log2(T Val)
1416
1454
  /// \brief The base-2 logarithm of the input value, \a Val parameter.
1417
1455
  /// \param Val The input value.
1418
1456
  ///
1419
1457
  /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1420
1458
  /// function returns negative infinity.
1421
-
1459
+ // log2 overloads
1422
1460
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1423
1461
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
1424
1462
  half log2(half);
@@ -1441,16 +1479,41 @@ float3 log2(float3);
1441
1479
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
1442
1480
  float4 log2(float4);
1443
1481
 
1444
- //===----------------------------------------------------------------------===//
1445
- // mad builtins
1446
- //===----------------------------------------------------------------------===//
1482
+ /// \fn T log10(T Val)
1483
+ /// \brief The base-10 logarithm of the input value, \a Val parameter.
1484
+ /// \param Val The input value.
1485
+ ///
1486
+ /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1487
+ /// function returns negative infinity.
1488
+ // log10 overloads
1489
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1490
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1491
+ half log10(half);
1492
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1493
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1494
+ half2 log10(half2);
1495
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1496
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1497
+ half3 log10(half3);
1498
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1499
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1500
+ half4 log10(half4);
1501
+
1502
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1503
+ float log10(float);
1504
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1505
+ float2 log10(float2);
1506
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1507
+ float3 log10(float3);
1508
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1509
+ float4 log10(float4);
1447
1510
 
1448
1511
  /// \fn T mad(T M, T A, T B)
1449
1512
  /// \brief The result of \a M * \a A + \a B.
1450
1513
  /// \param M The multiplication value.
1451
1514
  /// \param A The first addition value.
1452
1515
  /// \param B The second addition value.
1453
-
1516
+ // mad overloads
1454
1517
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1455
1518
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
1456
1519
  half mad(half, half, half);
@@ -1546,15 +1609,11 @@ double3 mad(double3, double3, double3);
1546
1609
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
1547
1610
  double4 mad(double4, double4, double4);
1548
1611
 
1549
- //===----------------------------------------------------------------------===//
1550
- // max builtins
1551
- //===----------------------------------------------------------------------===//
1552
-
1553
1612
  /// \fn T max(T X, T Y)
1554
1613
  /// \brief Return the greater of \a X and \a Y.
1555
1614
  /// \param X The X input value.
1556
1615
  /// \param Y The Y input value.
1557
-
1616
+ // max overloads
1558
1617
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1559
1618
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1560
1619
  half max(half, half);
@@ -1650,15 +1709,11 @@ double3 max(double3, double3);
1650
1709
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1651
1710
  double4 max(double4, double4);
1652
1711
 
1653
- //===----------------------------------------------------------------------===//
1654
- // min builtins
1655
- //===----------------------------------------------------------------------===//
1656
-
1657
1712
  /// \fn T min(T X, T Y)
1658
1713
  /// \brief Return the lesser of \a X and \a Y.
1659
1714
  /// \param X The X input value.
1660
1715
  /// \param Y The Y input value.
1661
-
1716
+ // min overloads
1662
1717
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1663
1718
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1664
1719
  half min(half, half);
@@ -1718,15 +1773,6 @@ uint3 min(uint3, uint3);
1718
1773
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1719
1774
  uint4 min(uint4, uint4);
1720
1775
 
1721
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1722
- float min(float, float);
1723
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1724
- float2 min(float2, float2);
1725
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1726
- float3 min(float3, float3);
1727
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1728
- float4 min(float4, float4);
1729
-
1730
1776
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1731
1777
  int64_t min(int64_t, int64_t);
1732
1778
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
@@ -1745,6 +1791,15 @@ uint64_t3 min(uint64_t3, uint64_t3);
1745
1791
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1746
1792
  uint64_t4 min(uint64_t4, uint64_t4);
1747
1793
 
1794
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1795
+ float min(float, float);
1796
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1797
+ float2 min(float2, float2);
1798
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1799
+ float3 min(float3, float3);
1800
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1801
+ float4 min(float4, float4);
1802
+
1748
1803
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1749
1804
  double min(double, double);
1750
1805
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
@@ -1754,16 +1809,23 @@ double3 min(double3, double3);
1754
1809
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1755
1810
  double4 min(double4, double4);
1756
1811
 
1757
- //===----------------------------------------------------------------------===//
1758
- // normalize builtins
1759
- //===----------------------------------------------------------------------===//
1812
+ /// \fn uint NonUniformResourceIndex(uint I)
1813
+ /// \brief A compiler hint to indicate that a resource index varies across
1814
+ /// threads within a wave (i.e., it is non-uniform).
1815
+ /// \param I [in] Resource array index
1816
+ ///
1817
+ /// The return value is the \a I parameter.
1818
+ // NonUniformResourceIndex overloads
1819
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_resource_nonuniformindex)
1820
+ uint NonUniformResourceIndex(uint);
1760
1821
 
1761
1822
  /// \fn T normalize(T x)
1762
1823
  /// \brief Returns the normalized unit vector of the specified floating-point
1763
- /// vector. \param x [in] The vector of floats.
1824
+ /// vector.
1825
+ /// \param x [in] The vector of floats.
1764
1826
  ///
1765
1827
  /// Normalize is based on the following formula: x / length(x).
1766
-
1828
+ // normalize overloads
1767
1829
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1768
1830
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_normalize)
1769
1831
  half normalize(half);
@@ -1786,18 +1848,10 @@ float3 normalize(float3);
1786
1848
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_normalize)
1787
1849
  float4 normalize(float4);
1788
1850
 
1789
- //===----------------------------------------------------------------------===//
1790
- // or builtins
1791
- //===----------------------------------------------------------------------===//
1792
-
1793
1851
  /// \fn bool or(bool x, bool y)
1794
1852
  /// \brief Logically ors two boolean vectors or matrices elementwise and
1795
1853
  /// produces a bool vector or matrix output.
1796
-
1797
- // TODO: Clean up clang-format marker once we've resolved
1798
- // https://github.com/llvm/llvm-project/issues/127851
1799
- //
1800
- // clang-format off
1854
+ // or overloads
1801
1855
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1802
1856
  bool or(bool, bool);
1803
1857
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
@@ -1806,48 +1860,42 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1806
1860
  bool3 or(bool3, bool3);
1807
1861
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1808
1862
  bool4 or(bool4, bool4);
1809
-
1810
1863
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1811
- bool1x2 or(bool1x2 x, bool1x2 y);
1864
+ bool1x2 or(bool1x2, bool1x2);
1812
1865
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1813
- bool1x3 or(bool1x3 x, bool1x3 y);
1866
+ bool1x3 or(bool1x3, bool1x3);
1814
1867
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1815
- bool1x4 or(bool1x4 x, bool1x4 y);
1868
+ bool1x4 or(bool1x4, bool1x4);
1816
1869
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1817
- bool2x1 or(bool2x1 x, bool2x1 y);
1870
+ bool2x1 or(bool2x1, bool2x1);
1818
1871
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1819
- bool2x2 or(bool2x2 x, bool2x2 y);
1872
+ bool2x2 or(bool2x2, bool2x2);
1820
1873
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1821
- bool2x3 or(bool2x3 x, bool2x3 y);
1874
+ bool2x3 or(bool2x3, bool2x3);
1822
1875
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1823
- bool2x4 or(bool2x4 x, bool2x4 y);
1876
+ bool2x4 or(bool2x4, bool2x4);
1824
1877
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1825
- bool3x1 or(bool3x1 x, bool3x1 y);
1878
+ bool3x1 or(bool3x1, bool3x1);
1826
1879
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1827
- bool3x2 or(bool3x2 x, bool3x2 y);
1880
+ bool3x2 or(bool3x2, bool3x2);
1828
1881
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1829
- bool3x3 or(bool3x3 x, bool3x3 y);
1882
+ bool3x3 or(bool3x3, bool3x3);
1830
1883
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1831
- bool3x4 or(bool3x4 x, bool3x4 y);
1884
+ bool3x4 or(bool3x4, bool3x4);
1832
1885
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1833
- bool4x1 or(bool4x1 x, bool4x1 y);
1886
+ bool4x1 or(bool4x1, bool4x1);
1834
1887
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1835
- bool4x2 or(bool4x2 x, bool4x2 y);
1888
+ bool4x2 or(bool4x2, bool4x2);
1836
1889
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1837
- bool4x3 or(bool4x3 x, bool4x3 y);
1890
+ bool4x3 or(bool4x3, bool4x3);
1838
1891
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1839
- bool4x4 or(bool4x4 x, bool4x4 y);
1840
- // clang-format on
1841
-
1842
- //===----------------------------------------------------------------------===//
1843
- // pow builtins
1844
- //===----------------------------------------------------------------------===//
1892
+ bool4x4 or(bool4x4, bool4x4);
1845
1893
 
1846
1894
  /// \fn T pow(T Val, T Pow)
1847
1895
  /// \brief Return the value \a Val, raised to the power \a Pow.
1848
1896
  /// \param Val The input value.
1849
1897
  /// \param Pow The specified power.
1850
-
1898
+ // pow overloads
1851
1899
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1852
1900
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1853
1901
  half pow(half, half);
@@ -1870,79 +1918,331 @@ float3 pow(float3, float3);
1870
1918
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1871
1919
  float4 pow(float4, float4);
1872
1920
 
1873
- //===----------------------------------------------------------------------===//
1874
- // reversebits builtins
1875
- //===----------------------------------------------------------------------===//
1921
+ /// \brief Returns the value from the lane diagonally opposite from the current lane in the quad.
1922
+ /// \param Val The input value.
1923
+ // QuadReadAcrossDiagonal overloads
1924
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1925
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1926
+ __attribute__((convergent)) half QuadReadAcrossDiagonal(half);
1927
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1928
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1929
+ __attribute__((convergent)) half2 QuadReadAcrossDiagonal(half2);
1930
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1931
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1932
+ __attribute__((convergent)) half3 QuadReadAcrossDiagonal(half3);
1933
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1934
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1935
+ __attribute__((convergent)) half4 QuadReadAcrossDiagonal(half4);
1876
1936
 
1877
- /// \fn T reversebits(T Val)
1878
- /// \brief Return the value \a Val with the bit order reversed.
1937
+ #ifdef __HLSL_ENABLE_16_BIT
1938
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1939
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1940
+ __attribute__((convergent)) int16_t QuadReadAcrossDiagonal(int16_t);
1941
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1942
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1943
+ __attribute__((convergent)) int16_t2 QuadReadAcrossDiagonal(int16_t2);
1944
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1945
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1946
+ __attribute__((convergent)) int16_t3 QuadReadAcrossDiagonal(int16_t3);
1947
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1948
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1949
+ __attribute__((convergent)) int16_t4 QuadReadAcrossDiagonal(int16_t4);
1950
+
1951
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1952
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1953
+ __attribute__((convergent)) uint16_t QuadReadAcrossDiagonal(uint16_t);
1954
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1955
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1956
+ __attribute__((convergent)) uint16_t2 QuadReadAcrossDiagonal(uint16_t2);
1957
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1958
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1959
+ __attribute__((convergent)) uint16_t3 QuadReadAcrossDiagonal(uint16_t3);
1960
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
1961
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1962
+ __attribute__((convergent)) uint16_t4 QuadReadAcrossDiagonal(uint16_t4);
1963
+ #endif
1964
+
1965
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1966
+ __attribute__((convergent)) int QuadReadAcrossDiagonal(int);
1967
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1968
+ __attribute__((convergent)) int2 QuadReadAcrossDiagonal(int2);
1969
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1970
+ __attribute__((convergent)) int3 QuadReadAcrossDiagonal(int3);
1971
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1972
+ __attribute__((convergent)) int4 QuadReadAcrossDiagonal(int4);
1973
+
1974
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1975
+ __attribute__((convergent)) uint QuadReadAcrossDiagonal(uint);
1976
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1977
+ __attribute__((convergent)) uint2 QuadReadAcrossDiagonal(uint2);
1978
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1979
+ __attribute__((convergent)) uint3 QuadReadAcrossDiagonal(uint3);
1980
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1981
+ __attribute__((convergent)) uint4 QuadReadAcrossDiagonal(uint4);
1982
+
1983
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1984
+ __attribute__((convergent)) int64_t QuadReadAcrossDiagonal(int64_t);
1985
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1986
+ __attribute__((convergent)) int64_t2 QuadReadAcrossDiagonal(int64_t2);
1987
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1988
+ __attribute__((convergent)) int64_t3 QuadReadAcrossDiagonal(int64_t3);
1989
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1990
+ __attribute__((convergent)) int64_t4 QuadReadAcrossDiagonal(int64_t4);
1991
+
1992
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1993
+ __attribute__((convergent)) uint64_t QuadReadAcrossDiagonal(uint64_t);
1994
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1995
+ __attribute__((convergent)) uint64_t2 QuadReadAcrossDiagonal(uint64_t2);
1996
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1997
+ __attribute__((convergent)) uint64_t3 QuadReadAcrossDiagonal(uint64_t3);
1998
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1999
+ __attribute__((convergent)) uint64_t4 QuadReadAcrossDiagonal(uint64_t4);
2000
+
2001
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2002
+ __attribute__((convergent)) float QuadReadAcrossDiagonal(float);
2003
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2004
+ __attribute__((convergent)) float2 QuadReadAcrossDiagonal(float2);
2005
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2006
+ __attribute__((convergent)) float3 QuadReadAcrossDiagonal(float3);
2007
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2008
+ __attribute__((convergent)) float4 QuadReadAcrossDiagonal(float4);
2009
+
2010
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2011
+ __attribute__((convergent)) double QuadReadAcrossDiagonal(double);
2012
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2013
+ __attribute__((convergent)) double2 QuadReadAcrossDiagonal(double2);
2014
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2015
+ __attribute__((convergent)) double3 QuadReadAcrossDiagonal(double3);
2016
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
2017
+ __attribute__((convergent)) double4 QuadReadAcrossDiagonal(double4);
2018
+
2019
+ /// \brief Reads the value from the lane across the X axis of the quad.
1879
2020
  /// \param Val The input value.
2021
+ // QuadReadAcrossX overloads
2022
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2023
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2024
+ __attribute__((convergent)) half QuadReadAcrossX(half);
2025
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2026
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2027
+ __attribute__((convergent)) half2 QuadReadAcrossX(half2);
2028
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2029
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2030
+ __attribute__((convergent)) half3 QuadReadAcrossX(half3);
2031
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2032
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2033
+ __attribute__((convergent)) half4 QuadReadAcrossX(half4);
1880
2034
 
1881
2035
  #ifdef __HLSL_ENABLE_16_BIT
1882
2036
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1883
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1884
- uint16_t reversebits(uint16_t);
2037
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2038
+ __attribute__((convergent)) int16_t QuadReadAcrossX(int16_t);
1885
2039
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1886
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1887
- uint16_t2 reversebits(uint16_t2);
2040
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2041
+ __attribute__((convergent)) int16_t2 QuadReadAcrossX(int16_t2);
1888
2042
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1889
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1890
- uint16_t3 reversebits(uint16_t3);
2043
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2044
+ __attribute__((convergent)) int16_t3 QuadReadAcrossX(int16_t3);
1891
2045
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1892
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1893
- uint16_t4 reversebits(uint16_t4);
2046
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2047
+ __attribute__((convergent)) int16_t4 QuadReadAcrossX(int16_t4);
2048
+
2049
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2050
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2051
+ __attribute__((convergent)) uint16_t QuadReadAcrossX(uint16_t);
2052
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2053
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2054
+ __attribute__((convergent)) uint16_t2 QuadReadAcrossX(uint16_t2);
2055
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2056
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2057
+ __attribute__((convergent)) uint16_t3 QuadReadAcrossX(uint16_t3);
2058
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2059
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2060
+ __attribute__((convergent)) uint16_t4 QuadReadAcrossX(uint16_t4);
1894
2061
  #endif
1895
2062
 
1896
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1897
- uint reversebits(uint);
1898
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1899
- uint2 reversebits(uint2);
1900
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1901
- uint3 reversebits(uint3);
1902
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1903
- uint4 reversebits(uint4);
2063
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2064
+ __attribute__((convergent)) int QuadReadAcrossX(int);
2065
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2066
+ __attribute__((convergent)) int2 QuadReadAcrossX(int2);
2067
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2068
+ __attribute__((convergent)) int3 QuadReadAcrossX(int3);
2069
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2070
+ __attribute__((convergent)) int4 QuadReadAcrossX(int4);
2071
+
2072
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2073
+ __attribute__((convergent)) uint QuadReadAcrossX(uint);
2074
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2075
+ __attribute__((convergent)) uint2 QuadReadAcrossX(uint2);
2076
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2077
+ __attribute__((convergent)) uint3 QuadReadAcrossX(uint3);
2078
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2079
+ __attribute__((convergent)) uint4 QuadReadAcrossX(uint4);
2080
+
2081
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2082
+ __attribute__((convergent)) int64_t QuadReadAcrossX(int64_t);
2083
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2084
+ __attribute__((convergent)) int64_t2 QuadReadAcrossX(int64_t2);
2085
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2086
+ __attribute__((convergent)) int64_t3 QuadReadAcrossX(int64_t3);
2087
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2088
+ __attribute__((convergent)) int64_t4 QuadReadAcrossX(int64_t4);
2089
+
2090
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2091
+ __attribute__((convergent)) uint64_t QuadReadAcrossX(uint64_t);
2092
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2093
+ __attribute__((convergent)) uint64_t2 QuadReadAcrossX(uint64_t2);
2094
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2095
+ __attribute__((convergent)) uint64_t3 QuadReadAcrossX(uint64_t3);
2096
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2097
+ __attribute__((convergent)) uint64_t4 QuadReadAcrossX(uint64_t4);
2098
+
2099
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2100
+ __attribute__((convergent)) float QuadReadAcrossX(float);
2101
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2102
+ __attribute__((convergent)) float2 QuadReadAcrossX(float2);
2103
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2104
+ __attribute__((convergent)) float3 QuadReadAcrossX(float3);
2105
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2106
+ __attribute__((convergent)) float4 QuadReadAcrossX(float4);
2107
+
2108
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2109
+ __attribute__((convergent)) double QuadReadAcrossX(double);
2110
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2111
+ __attribute__((convergent)) double2 QuadReadAcrossX(double2);
2112
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2113
+ __attribute__((convergent)) double3 QuadReadAcrossX(double3);
2114
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2115
+ __attribute__((convergent)) double4 QuadReadAcrossX(double4);
2116
+
2117
+ /// \brief Reads the value from the lane across the Y axis of the quad.
2118
+ /// \param Val The input value.
2119
+ // QuadReadAcrossY overloads
2120
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2121
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2122
+ __attribute__((convergent)) half QuadReadAcrossY(half);
2123
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2124
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2125
+ __attribute__((convergent)) half2 QuadReadAcrossY(half2);
2126
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2127
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2128
+ __attribute__((convergent)) half3 QuadReadAcrossY(half3);
2129
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2130
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2131
+ __attribute__((convergent)) half4 QuadReadAcrossY(half4);
1904
2132
 
1905
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1906
- uint64_t reversebits(uint64_t);
1907
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1908
- uint64_t2 reversebits(uint64_t2);
1909
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1910
- uint64_t3 reversebits(uint64_t3);
1911
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1912
- uint64_t4 reversebits(uint64_t4);
2133
+ #ifdef __HLSL_ENABLE_16_BIT
2134
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2135
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2136
+ __attribute__((convergent)) int16_t QuadReadAcrossY(int16_t);
2137
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2138
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2139
+ __attribute__((convergent)) int16_t2 QuadReadAcrossY(int16_t2);
2140
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2141
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2142
+ __attribute__((convergent)) int16_t3 QuadReadAcrossY(int16_t3);
2143
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2144
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2145
+ __attribute__((convergent)) int16_t4 QuadReadAcrossY(int16_t4);
1913
2146
 
1914
- //===----------------------------------------------------------------------===//
1915
- // cross builtins
1916
- //===----------------------------------------------------------------------===//
2147
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2148
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2149
+ __attribute__((convergent)) uint16_t QuadReadAcrossY(uint16_t);
2150
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2151
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2152
+ __attribute__((convergent)) uint16_t2 QuadReadAcrossY(uint16_t2);
2153
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2154
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2155
+ __attribute__((convergent)) uint16_t3 QuadReadAcrossY(uint16_t3);
2156
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2157
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2158
+ __attribute__((convergent)) uint16_t4 QuadReadAcrossY(uint16_t4);
2159
+ #endif
1917
2160
 
1918
- /// \fn T cross(T x, T y)
1919
- /// \brief Returns the cross product of two floating-point, 3D vectors.
1920
- /// \param x [in] The first floating-point, 3D vector.
1921
- /// \param y [in] The second floating-point, 3D vector.
1922
- ///
1923
- /// Result is the cross product of x and y, i.e., the resulting
1924
- /// components are, in order :
1925
- /// x[1] * y[2] - y[1] * x[2]
1926
- /// x[2] * y[0] - y[2] * x[0]
1927
- /// x[0] * y[1] - y[0] * x[1]
2161
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2162
+ __attribute__((convergent)) int QuadReadAcrossY(int);
2163
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2164
+ __attribute__((convergent)) int2 QuadReadAcrossY(int2);
2165
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2166
+ __attribute__((convergent)) int3 QuadReadAcrossY(int3);
2167
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2168
+ __attribute__((convergent)) int4 QuadReadAcrossY(int4);
2169
+
2170
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2171
+ __attribute__((convergent)) uint QuadReadAcrossY(uint);
2172
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2173
+ __attribute__((convergent)) uint2 QuadReadAcrossY(uint2);
2174
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2175
+ __attribute__((convergent)) uint3 QuadReadAcrossY(uint3);
2176
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2177
+ __attribute__((convergent)) uint4 QuadReadAcrossY(uint4);
2178
+
2179
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2180
+ __attribute__((convergent)) int64_t QuadReadAcrossY(int64_t);
2181
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2182
+ __attribute__((convergent)) int64_t2 QuadReadAcrossY(int64_t2);
2183
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2184
+ __attribute__((convergent)) int64_t3 QuadReadAcrossY(int64_t3);
2185
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2186
+ __attribute__((convergent)) int64_t4 QuadReadAcrossY(int64_t4);
2187
+
2188
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2189
+ __attribute__((convergent)) uint64_t QuadReadAcrossY(uint64_t);
2190
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2191
+ __attribute__((convergent)) uint64_t2 QuadReadAcrossY(uint64_t2);
2192
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2193
+ __attribute__((convergent)) uint64_t3 QuadReadAcrossY(uint64_t3);
2194
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2195
+ __attribute__((convergent)) uint64_t4 QuadReadAcrossY(uint64_t4);
2196
+
2197
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2198
+ __attribute__((convergent)) float QuadReadAcrossY(float);
2199
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2200
+ __attribute__((convergent)) float2 QuadReadAcrossY(float2);
2201
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2202
+ __attribute__((convergent)) float3 QuadReadAcrossY(float3);
2203
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2204
+ __attribute__((convergent)) float4 QuadReadAcrossY(float4);
2205
+
2206
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2207
+ __attribute__((convergent)) double QuadReadAcrossY(double);
2208
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2209
+ __attribute__((convergent)) double2 QuadReadAcrossY(double2);
2210
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2211
+ __attribute__((convergent)) double3 QuadReadAcrossY(double3);
2212
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_y)
2213
+ __attribute__((convergent)) double4 QuadReadAcrossY(double4);
1928
2214
 
2215
+ /// \fn T radians(T Val)
2216
+ /// \brief Converts the specified value from degrees to radians.
2217
+ // radians overloads
1929
2218
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1930
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf16)
1931
- half3 cross(half3, half3);
1932
-
1933
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf32)
1934
- float3 cross(float3, float3);
2219
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2220
+ half radians(half);
2221
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2222
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2223
+ half2 radians(half2);
2224
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2225
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2226
+ half3 radians(half3);
2227
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2228
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2229
+ half4 radians(half4);
1935
2230
 
1936
- //===----------------------------------------------------------------------===//
1937
- // rcp builtins
1938
- //===----------------------------------------------------------------------===//
2231
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2232
+ float radians(float);
2233
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2234
+ float2 radians(float2);
2235
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2236
+ float3 radians(float3);
2237
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2238
+ float4 radians(float4);
1939
2239
 
1940
2240
  /// \fn T rcp(T x)
1941
2241
  /// \brief Calculates a fast, approximate, per-component reciprocal ie 1 / \a x.
1942
2242
  /// \param x The specified input value.
1943
2243
  ///
1944
2244
  /// The return value is the reciprocal of the \a x parameter.
1945
-
2245
+ // rcp overloads
1946
2246
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1947
2247
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1948
2248
  half rcp(half);
@@ -1974,42 +2274,73 @@ double3 rcp(double3);
1974
2274
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1975
2275
  double4 rcp(double4);
1976
2276
 
1977
- //===----------------------------------------------------------------------===//
1978
- // rsqrt builtins
1979
- //===----------------------------------------------------------------------===//
2277
+ /// \fn T reversebits(T Val)
2278
+ /// \brief Return the value \a Val with the bit order reversed.
2279
+ /// \param Val The input value.
2280
+ // reversebits overloads
2281
+ #ifdef __HLSL_ENABLE_16_BIT
2282
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2283
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2284
+ int16_t reversebits(int16_t);
2285
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2286
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2287
+ int16_t2 reversebits(int16_t2);
2288
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2289
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2290
+ int16_t3 reversebits(int16_t3);
2291
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2292
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2293
+ int16_t4 reversebits(int16_t4);
1980
2294
 
1981
- /// \fn T rsqrt(T x)
1982
- /// \brief Returns the reciprocal of the square root of the specified value.
1983
- /// ie 1 / sqrt( \a x).
1984
- /// \param x The specified input value.
1985
- ///
1986
- /// This function uses the following formula: 1 / sqrt(x).
2295
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2296
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2297
+ uint16_t reversebits(uint16_t);
2298
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2299
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2300
+ uint16_t2 reversebits(uint16_t2);
2301
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2302
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2303
+ uint16_t3 reversebits(uint16_t3);
2304
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2305
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2306
+ uint16_t4 reversebits(uint16_t4);
2307
+ #endif
1987
2308
 
1988
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1989
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1990
- half rsqrt(half);
1991
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1992
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1993
- half2 rsqrt(half2);
1994
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1995
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1996
- half3 rsqrt(half3);
1997
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1998
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1999
- half4 rsqrt(half4);
2309
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2310
+ int reversebits(int);
2311
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2312
+ int2 reversebits(int2);
2313
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2314
+ int3 reversebits(int3);
2315
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2316
+ int4 reversebits(int4);
2000
2317
 
2001
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2002
- float rsqrt(float);
2003
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2004
- float2 rsqrt(float2);
2005
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2006
- float3 rsqrt(float3);
2007
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2008
- float4 rsqrt(float4);
2318
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2319
+ uint reversebits(uint);
2320
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2321
+ uint2 reversebits(uint2);
2322
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2323
+ uint3 reversebits(uint3);
2324
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2325
+ uint4 reversebits(uint4);
2326
+
2327
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2328
+ int64_t reversebits(int64_t);
2329
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2330
+ int64_t2 reversebits(int64_t2);
2331
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2332
+ int64_t3 reversebits(int64_t3);
2333
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2334
+ int64_t4 reversebits(int64_t4);
2009
2335
 
2010
- //===----------------------------------------------------------------------===//
2011
- // round builtins
2012
- //===----------------------------------------------------------------------===//
2336
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2337
+ uint64_t reversebits(uint64_t);
2338
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2339
+ uint64_t2 reversebits(uint64_t2);
2340
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2341
+ uint64_t3 reversebits(uint64_t3);
2342
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
2343
+ uint64_t4 reversebits(uint64_t4);
2013
2344
 
2014
2345
  /// \fn T round(T x)
2015
2346
  /// \brief Rounds the specified value \a x to the nearest integer.
@@ -2018,7 +2349,7 @@ float4 rsqrt(float4);
2018
2349
  /// The return value is the \a x parameter, rounded to the nearest integer
2019
2350
  /// within a floating-point type. Halfway cases are
2020
2351
  /// rounded to the nearest even value.
2021
-
2352
+ // round overloads
2022
2353
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2023
2354
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
2024
2355
  half round(half);
@@ -2041,14 +2372,40 @@ float3 round(float3);
2041
2372
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
2042
2373
  float4 round(float4);
2043
2374
 
2044
- //===----------------------------------------------------------------------===//
2045
- // saturate builtins
2046
- //===----------------------------------------------------------------------===//
2375
+ /// \fn T rsqrt(T x)
2376
+ /// \brief Returns the reciprocal of the square root of the specified value.
2377
+ /// ie 1 / sqrt( \a x).
2378
+ /// \param x The specified input value.
2379
+ ///
2380
+ /// This function uses the following formula: 1 / sqrt(x).
2381
+ // rsqrt overloads
2382
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2383
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2384
+ half rsqrt(half);
2385
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2386
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2387
+ half2 rsqrt(half2);
2388
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2389
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2390
+ half3 rsqrt(half3);
2391
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2392
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2393
+ half4 rsqrt(half4);
2394
+
2395
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2396
+ float rsqrt(float);
2397
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2398
+ float2 rsqrt(float2);
2399
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2400
+ float3 rsqrt(float3);
2401
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
2402
+ float4 rsqrt(float4);
2047
2403
 
2048
2404
  /// \fn T saturate(T Val)
2049
2405
  /// \brief Returns input value, \a Val, clamped within the range of 0.0f
2050
- /// to 1.0f. \param Val The input value.
2051
-
2406
+ /// to 1.0f.
2407
+ /// \param Val The input value.
2408
+ // saturate overloads
2052
2409
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2053
2410
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_saturate)
2054
2411
  half saturate(half);
@@ -2080,142 +2437,139 @@ double3 saturate(double3);
2080
2437
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_saturate)
2081
2438
  double4 saturate(double4);
2082
2439
 
2083
- //===----------------------------------------------------------------------===//
2084
- // select builtins
2085
- //===----------------------------------------------------------------------===//
2086
-
2087
- /// \fn T select(bool Cond, T TrueVal, T FalseVal)
2088
- /// \brief ternary operator.
2089
- /// \param Cond The Condition input value.
2090
- /// \param TrueVal The Value returned if Cond is true.
2091
- /// \param FalseVal The Value returned if Cond is false.
2092
-
2093
- template <typename T>
2094
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2095
- T select(bool, T, T);
2096
-
2097
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2098
- /// vector<T,Sz> FalseVals)
2099
- /// \brief ternary operator for vectors. All vectors must be the same size.
2100
- /// \param Conds The Condition input values.
2101
- /// \param TrueVals The vector values are chosen from when conditions are true.
2102
- /// \param FalseVals The vector values are chosen from when conditions are
2103
- /// false.
2104
-
2105
- template <typename T>
2106
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2107
- vector<T, 2> select(vector<bool, 2>, vector<T, 2>, vector<T, 2>);
2108
-
2109
- template <typename T>
2110
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2111
- vector<T, 3> select(vector<bool, 3>, vector<T, 3>, vector<T, 3>);
2112
-
2113
- template <typename T>
2114
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2115
- vector<T, 4> select(vector<bool, 4>, vector<T, 4>, vector<T, 4>);
2116
-
2117
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, T TrueVal,
2118
- /// vector<T,Sz> FalseVals)
2119
- /// \brief ternary operator for vectors. All vectors must be the same size.
2120
- /// \param Conds The Condition input values.
2121
- /// \param TrueVal The scalar value to splat from when conditions are true.
2122
- /// \param FalseVals The vector values are chosen from when conditions are
2123
- /// false.
2124
-
2125
- template <typename T>
2126
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2127
- vector<T, 2> select(vector<bool, 2>, T, vector<T, 2>);
2128
-
2129
- template <typename T>
2130
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2131
- vector<T, 3> select(vector<bool, 3>, T, vector<T, 3>);
2132
-
2133
- template <typename T>
2134
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2135
- vector<T, 4> select(vector<bool, 4>, T, vector<T, 4>);
2136
-
2137
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2138
- /// T FalseVal)
2139
- /// \brief ternary operator for vectors. All vectors must be the same size.
2140
- /// \param Conds The Condition input values.
2141
- /// \param TrueVals The vector values are chosen from when conditions are true.
2142
- /// \param FalseVal The scalar value to splat from when conditions are false.
2143
-
2144
- template <typename T>
2145
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2146
- vector<T, 2> select(vector<bool, 2>, vector<T, 2>, T);
2147
-
2148
- template <typename T>
2149
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2150
- vector<T, 3> select(vector<bool, 3>, vector<T, 3>, T);
2151
-
2152
- template <typename T>
2153
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2154
- vector<T, 4> select(vector<bool, 4>, vector<T, 4>, T);
2155
-
2156
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2157
- /// T FalseVal)
2158
- /// \brief ternary operator for vectors. All vectors must be the same size.
2159
- /// \param Conds The Condition input values.
2160
- /// \param TrueVal The scalar value to splat from when conditions are true.
2161
- /// \param FalseVal The scalar value to splat from when conditions are false.
2162
-
2163
- template <typename T>
2164
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2165
- __detail::enable_if_t<__detail::is_arithmetic<T>::Value, vector<T, 2>> select(
2166
- vector<bool, 2>, T, T);
2167
-
2168
- template <typename T>
2169
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2170
- __detail::enable_if_t<__detail::is_arithmetic<T>::Value, vector<T, 3>> select(
2171
- vector<bool, 3>, T, T);
2172
-
2173
- template <typename T>
2174
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2175
- __detail::enable_if_t<__detail::is_arithmetic<T>::Value, vector<T, 4>> select(
2176
- vector<bool, 4>, T, T);
2177
-
2178
- //===----------------------------------------------------------------------===//
2179
- // sin builtins
2180
- //===----------------------------------------------------------------------===//
2181
-
2182
- /// \fn T sin(T Val)
2183
- /// \brief Returns the sine of the input value, \a Val.
2440
+ /// \fn T sign(T Val)
2441
+ /// \brief Returns -1 if \a Val is less than zero; 0 if \a Val equals zero; and
2442
+ /// 1 if \a Val is greater than zero.
2184
2443
  /// \param Val The input value.
2185
-
2444
+ // sign overloads
2186
2445
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2187
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2188
- half sin(half);
2446
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2447
+ int sign(half);
2189
2448
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2190
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2191
- half2 sin(half2);
2449
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2450
+ int2 sign(half2);
2192
2451
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2193
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2194
- half3 sin(half3);
2452
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2453
+ int3 sign(half3);
2195
2454
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2196
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2197
- half4 sin(half4);
2198
-
2199
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2200
- float sin(float);
2201
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2202
- float2 sin(float2);
2203
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2204
- float3 sin(float3);
2205
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2206
- float4 sin(float4);
2207
-
2208
- //===----------------------------------------------------------------------===//
2209
- // sinh builtins
2210
- //===----------------------------------------------------------------------===//
2211
-
2212
- /// \fn T sinh(T Val)
2213
- /// \brief Returns the hyperbolic sine of the input value, \a Val.
2214
- /// \param Val The input value.
2455
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2456
+ int4 sign(half4);
2215
2457
 
2216
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2217
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2218
- half sinh(half);
2458
+ #ifdef __HLSL_ENABLE_16_BIT
2459
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2460
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2461
+ int sign(int16_t);
2462
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2463
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2464
+ int2 sign(int16_t2);
2465
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2466
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2467
+ int3 sign(int16_t3);
2468
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2469
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2470
+ int4 sign(int16_t4);
2471
+
2472
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2473
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2474
+ int sign(uint16_t);
2475
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2476
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2477
+ int2 sign(uint16_t2);
2478
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2479
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2480
+ int3 sign(uint16_t3);
2481
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2482
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2483
+ int4 sign(uint16_t4);
2484
+ #endif
2485
+
2486
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2487
+ int sign(int);
2488
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2489
+ int2 sign(int2);
2490
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2491
+ int3 sign(int3);
2492
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2493
+ int4 sign(int4);
2494
+
2495
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2496
+ int sign(uint);
2497
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2498
+ int2 sign(uint2);
2499
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2500
+ int3 sign(uint3);
2501
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2502
+ int4 sign(uint4);
2503
+
2504
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2505
+ int sign(int64_t);
2506
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2507
+ int2 sign(int64_t2);
2508
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2509
+ int3 sign(int64_t3);
2510
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2511
+ int4 sign(int64_t4);
2512
+
2513
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2514
+ int sign(uint64_t);
2515
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2516
+ int2 sign(uint64_t2);
2517
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2518
+ int3 sign(uint64_t3);
2519
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2520
+ int4 sign(uint64_t4);
2521
+
2522
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2523
+ int sign(float);
2524
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2525
+ int2 sign(float2);
2526
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2527
+ int3 sign(float3);
2528
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2529
+ int4 sign(float4);
2530
+
2531
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2532
+ int sign(double);
2533
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2534
+ int2 sign(double2);
2535
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2536
+ int3 sign(double3);
2537
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2538
+ int4 sign(double4);
2539
+
2540
+ /// \fn T sin(T Val)
2541
+ /// \brief Returns the sine of the input value, \a Val.
2542
+ /// \param Val The input value.
2543
+ // sin overloads
2544
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2545
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2546
+ half sin(half);
2547
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2548
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2549
+ half2 sin(half2);
2550
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2551
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2552
+ half3 sin(half3);
2553
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2554
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2555
+ half4 sin(half4);
2556
+
2557
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2558
+ float sin(float);
2559
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2560
+ float2 sin(float2);
2561
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2562
+ float3 sin(float3);
2563
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2564
+ float4 sin(float4);
2565
+
2566
+ /// \fn T sinh(T Val)
2567
+ /// \brief Returns the hyperbolic sine of the input value, \a Val.
2568
+ /// \param Val The input value.
2569
+ // sinh overloads
2570
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2571
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2572
+ half sinh(half);
2219
2573
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2220
2574
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2221
2575
  half2 sinh(half2);
@@ -2235,14 +2589,10 @@ float3 sinh(float3);
2235
2589
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2236
2590
  float4 sinh(float4);
2237
2591
 
2238
- //===----------------------------------------------------------------------===//
2239
- // sqrt builtins
2240
- //===----------------------------------------------------------------------===//
2241
-
2242
2592
  /// \fn T sqrt(T Val)
2243
2593
  /// \brief Returns the square root of the input value, \a Val.
2244
2594
  /// \param Val The input value.
2245
-
2595
+ // sqrt overloads
2246
2596
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2247
2597
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
2248
2598
  half sqrt(half);
@@ -2265,17 +2615,14 @@ float3 sqrt(float3);
2265
2615
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
2266
2616
  float4 sqrt(float4);
2267
2617
 
2268
- //===----------------------------------------------------------------------===//
2269
- // step builtins
2270
- //===----------------------------------------------------------------------===//
2271
-
2272
2618
  /// \fn T step(T y, T x)
2273
2619
  /// \brief Returns 1 if the x parameter is greater than or equal to the y
2274
- /// parameter; otherwise, 0. vector. \param y [in] The first floating-point
2275
- /// value to compare. \param x [in] The second floating-point value to compare.
2620
+ /// parameter; otherwise, 0.
2621
+ /// \param y [in] The first floating-point value to compare.
2622
+ /// \param x [in] The second floating-point value to compare.
2276
2623
  ///
2277
2624
  /// Step is based on the following formula: (x >= y) ? 1 : 0
2278
-
2625
+ // step overloads
2279
2626
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2280
2627
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_step)
2281
2628
  half step(half, half);
@@ -2298,14 +2645,10 @@ float3 step(float3, float3);
2298
2645
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_step)
2299
2646
  float4 step(float4, float4);
2300
2647
 
2301
- //===----------------------------------------------------------------------===//
2302
- // tan builtins
2303
- //===----------------------------------------------------------------------===//
2304
-
2305
2648
  /// \fn T tan(T Val)
2306
2649
  /// \brief Returns the tangent of the input value, \a Val.
2307
2650
  /// \param Val The input value.
2308
-
2651
+ // tan overloads
2309
2652
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2310
2653
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
2311
2654
  half tan(half);
@@ -2328,14 +2671,10 @@ float3 tan(float3);
2328
2671
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
2329
2672
  float4 tan(float4);
2330
2673
 
2331
- //===----------------------------------------------------------------------===//
2332
- // tanh builtins
2333
- //===----------------------------------------------------------------------===//
2334
-
2335
2674
  /// \fn T tanh(T Val)
2336
2675
  /// \brief Returns the hyperbolic tangent of the input value, \a Val.
2337
2676
  /// \param Val The input value.
2338
-
2677
+ // tanh overloads
2339
2678
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2340
2679
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
2341
2680
  half tanh(half);
@@ -2358,14 +2697,10 @@ float3 tanh(float3);
2358
2697
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
2359
2698
  float4 tanh(float4);
2360
2699
 
2361
- //===----------------------------------------------------------------------===//
2362
- // trunc builtins
2363
- //===----------------------------------------------------------------------===//
2364
-
2365
2700
  /// \fn T trunc(T Val)
2366
2701
  /// \brief Returns the truncated integer value of the input value, \a Val.
2367
2702
  /// \param Val The input value.
2368
-
2703
+ // trunc overloads
2369
2704
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2370
2705
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
2371
2706
  half trunc(half);
@@ -2388,314 +2723,417 @@ float3 trunc(float3);
2388
2723
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
2389
2724
  float4 trunc(float4);
2390
2725
 
2391
- //===----------------------------------------------------------------------===//
2392
- // Wave* builtins
2393
- //===----------------------------------------------------------------------===//
2726
+ /// \brief Evaluates a value for all active invocations in the group. The
2727
+ /// result is true if Value is equal for all active invocations in the
2728
+ /// group. Otherwise, the result is false.
2729
+ /// \param Value The value to compare with
2730
+ /// \return True if all values across all lanes are equal, false otherwise
2731
+ // WaveActiveAllEqual overloads
2732
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2733
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2734
+ __attribute__((convergent)) bool WaveActiveAllEqual(half);
2735
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2736
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2737
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(half2);
2738
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2739
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2740
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(half3);
2741
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2742
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2743
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(half4);
2744
+
2745
+ #ifdef __HLSL_ENABLE_16_BIT
2746
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2747
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2748
+ __attribute__((convergent)) bool WaveActiveAllEqual(int16_t);
2749
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2750
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2751
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(int16_t2);
2752
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2753
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2754
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(int16_t3);
2755
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2756
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2757
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(int16_t4);
2758
+
2759
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2760
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2761
+ __attribute__((convergent)) bool WaveActiveAllEqual(uint16_t);
2762
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2763
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2764
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(uint16_t2);
2765
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2766
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2767
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(uint16_t3);
2768
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2769
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2770
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(uint16_t4);
2771
+ #endif
2772
+
2773
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2774
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2775
+ __attribute__((convergent)) bool WaveActiveAllEqual(int);
2776
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2777
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2778
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(int2);
2779
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2780
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2781
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(int3);
2782
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2783
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2784
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(int4);
2785
+
2786
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2787
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2788
+ __attribute__((convergent)) bool WaveActiveAllEqual(uint);
2789
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2790
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2791
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(uint2);
2792
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2793
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2794
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(uint3);
2795
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2796
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2797
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(uint4);
2798
+
2799
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2800
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2801
+ __attribute__((convergent)) bool WaveActiveAllEqual(int64_t);
2802
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2803
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2804
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(int64_t2);
2805
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2806
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2807
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(int64_t3);
2808
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2809
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2810
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(int64_t4);
2811
+
2812
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2813
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2814
+ __attribute__((convergent)) bool WaveActiveAllEqual(uint64_t);
2815
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2816
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2817
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(uint64_t2);
2818
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2819
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2820
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(uint64_t3);
2821
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2822
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2823
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(uint64_t4);
2824
+
2825
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2826
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2827
+ __attribute__((convergent)) bool WaveActiveAllEqual(float);
2828
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2829
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2830
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(float2);
2831
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2832
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2833
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(float3);
2834
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2835
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2836
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(float4);
2837
+
2838
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2839
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2840
+ __attribute__((convergent)) bool WaveActiveAllEqual(double);
2841
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2842
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2843
+ __attribute__((convergent)) bool2 WaveActiveAllEqual(double2);
2844
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2845
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2846
+ __attribute__((convergent)) bool3 WaveActiveAllEqual(double3);
2847
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2848
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_equal)
2849
+ __attribute__((convergent)) bool4 WaveActiveAllEqual(double4);
2394
2850
 
2395
2851
  /// \brief Returns true if the expression is true in all active lanes in the
2396
2852
  /// current wave.
2397
- ///
2398
2853
  /// \param Val The boolean expression to evaluate.
2399
2854
  /// \return True if the expression is true in all lanes.
2855
+ // WaveActiveAllTrue overloads
2400
2856
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2401
2857
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_true)
2402
- __attribute__((convergent)) bool WaveActiveAllTrue(bool Val);
2858
+ __attribute__((convergent)) bool WaveActiveAllTrue(bool);
2403
2859
 
2404
2860
  /// \brief Returns true if the expression is true in any active lane in the
2405
2861
  /// current wave.
2406
- ///
2407
2862
  /// \param Val The boolean expression to evaluate.
2408
2863
  /// \return True if the expression is true in any lane.
2864
+ // WaveActiveAnyTrue overloads
2409
2865
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2410
2866
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_any_true)
2411
- __attribute__((convergent)) bool WaveActiveAnyTrue(bool Val);
2867
+ __attribute__((convergent)) bool WaveActiveAnyTrue(bool);
2412
2868
 
2413
2869
  /// \brief Returns a uint4 containing a bitmask of the evaluation of the
2414
2870
  /// boolean expression for all active lanes in the current wave.
2415
2871
  /// The least-significant bit corresponds to the lane with index zero.
2416
2872
  /// The bits corresponding to inactive lanes will be zero. The bits that
2417
2873
  /// are greater than or equal to WaveGetLaneCount will be zero.
2418
- ///
2419
2874
  /// \param Val The boolean expression to evaluate.
2420
2875
  /// \return uint4 bitmask
2876
+ // WaveActiveBallot overloads
2421
2877
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2422
2878
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_ballot)
2423
- __attribute__((convergent)) uint4 WaveActiveBallot(bool Val);
2879
+ __attribute__((convergent)) uint4 WaveActiveBallot(bool);
2424
2880
 
2425
- /// \brief Counts the number of boolean variables which evaluate to true across
2426
- /// all active lanes in the current wave.
2427
- ///
2428
- /// \param Val The input boolean value.
2429
- /// \return The number of lanes for which the boolean variable evaluates to
2430
- /// true, across all active lanes in the current wave.
2881
+ // WaveActiveBitAnd overloads
2431
2882
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2432
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
2433
- __attribute__((convergent)) uint WaveActiveCountBits(bool Val);
2434
-
2435
- /// \brief Returns the index of the current lane within the current wave.
2883
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2884
+ __attribute__((convergent)) uint WaveActiveBitAnd(uint);
2436
2885
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2437
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_index)
2438
- __attribute__((convergent)) uint WaveGetLaneIndex();
2439
-
2886
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2887
+ __attribute__((convergent)) uint2 WaveActiveBitAnd(uint2);
2440
2888
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2441
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_is_first_lane)
2442
- __attribute__((convergent)) bool WaveIsFirstLane();
2443
-
2889
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2890
+ __attribute__((convergent)) uint3 WaveActiveBitAnd(uint3);
2444
2891
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2445
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_count)
2446
- __attribute__((convergent)) uint WaveGetLaneCount();
2447
-
2448
- //===----------------------------------------------------------------------===//
2449
- // WaveReadLaneAt builtins
2450
- //===----------------------------------------------------------------------===//
2451
-
2452
- // \brief Returns the value of the expression for the given lane index within
2453
- // the specified wave.
2454
-
2455
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2456
- __attribute__((convergent)) bool WaveReadLaneAt(bool, uint32_t);
2457
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2458
- __attribute__((convergent)) bool2 WaveReadLaneAt(bool2, uint32_t);
2459
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2460
- __attribute__((convergent)) bool3 WaveReadLaneAt(bool3, uint32_t);
2461
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2462
- __attribute__((convergent)) bool4 WaveReadLaneAt(bool4, uint32_t);
2892
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2893
+ __attribute__((convergent)) uint4 WaveActiveBitAnd(uint4);
2463
2894
 
2464
- #ifdef __HLSL_ENABLE_16_BIT
2465
2895
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2466
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2467
- __attribute__((convergent)) int16_t WaveReadLaneAt(int16_t, uint32_t);
2896
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2897
+ __attribute__((convergent)) uint64_t WaveActiveBitAnd(uint64_t);
2468
2898
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2469
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2470
- __attribute__((convergent)) int16_t2 WaveReadLaneAt(int16_t2, uint32_t);
2899
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2900
+ __attribute__((convergent)) uint64_t2 WaveActiveBitAnd(uint64_t2);
2471
2901
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2472
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2473
- __attribute__((convergent)) int16_t3 WaveReadLaneAt(int16_t3, uint32_t);
2902
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2903
+ __attribute__((convergent)) uint64_t3 WaveActiveBitAnd(uint64_t3);
2474
2904
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2475
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2476
- __attribute__((convergent)) int16_t4 WaveReadLaneAt(int16_t4, uint32_t);
2905
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2906
+ __attribute__((convergent)) uint64_t4 WaveActiveBitAnd(uint64_t4);
2477
2907
 
2908
+ /// \brief Returns the bitwise OR of all the values of <expr> across all active
2909
+ /// non-helper lanes in the current wave, and replicates it back to
2910
+ /// all active non-helper lanes.
2911
+ // WaveActiveBitOr overloads
2478
2912
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2479
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2480
- __attribute__((convergent)) uint16_t WaveReadLaneAt(uint16_t, uint32_t);
2913
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2914
+ __attribute__((convergent)) uint WaveActiveBitOr(uint);
2481
2915
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2482
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2483
- __attribute__((convergent)) uint16_t2 WaveReadLaneAt(uint16_t2, uint32_t);
2916
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2917
+ __attribute__((convergent)) uint2 WaveActiveBitOr(uint2);
2484
2918
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2485
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2486
- __attribute__((convergent)) uint16_t3 WaveReadLaneAt(uint16_t3, uint32_t);
2919
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2920
+ __attribute__((convergent)) uint3 WaveActiveBitOr(uint3);
2487
2921
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2488
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2489
- __attribute__((convergent)) uint16_t4 WaveReadLaneAt(uint16_t4, uint32_t);
2490
- #endif
2491
-
2492
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2493
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2494
- __attribute__((convergent)) half WaveReadLaneAt(half, uint32_t);
2495
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2496
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2497
- __attribute__((convergent)) half2 WaveReadLaneAt(half2, uint32_t);
2498
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2499
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2500
- __attribute__((convergent)) half3 WaveReadLaneAt(half3, uint32_t);
2501
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2502
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2503
- __attribute__((convergent)) half4 WaveReadLaneAt(half4, uint32_t);
2504
-
2505
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2506
- __attribute__((convergent)) int WaveReadLaneAt(int, uint32_t);
2507
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2508
- __attribute__((convergent)) int2 WaveReadLaneAt(int2, uint32_t);
2509
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2510
- __attribute__((convergent)) int3 WaveReadLaneAt(int3, uint32_t);
2511
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2512
- __attribute__((convergent)) int4 WaveReadLaneAt(int4, uint32_t);
2513
-
2514
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2515
- __attribute__((convergent)) uint WaveReadLaneAt(uint, uint32_t);
2516
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2517
- __attribute__((convergent)) uint2 WaveReadLaneAt(uint2, uint32_t);
2518
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2519
- __attribute__((convergent)) uint3 WaveReadLaneAt(uint3, uint32_t);
2520
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2521
- __attribute__((convergent)) uint4 WaveReadLaneAt(uint4, uint32_t);
2522
-
2523
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2524
- __attribute__((convergent)) float WaveReadLaneAt(float, uint32_t);
2525
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2526
- __attribute__((convergent)) float2 WaveReadLaneAt(float2, uint32_t);
2527
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2528
- __attribute__((convergent)) float3 WaveReadLaneAt(float3, uint32_t);
2529
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2530
- __attribute__((convergent)) float4 WaveReadLaneAt(float4, uint32_t);
2922
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2923
+ __attribute__((convergent)) uint4 WaveActiveBitOr(uint4);
2531
2924
 
2532
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2533
- __attribute__((convergent)) int64_t WaveReadLaneAt(int64_t, uint32_t);
2534
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2535
- __attribute__((convergent)) int64_t2 WaveReadLaneAt(int64_t2, uint32_t);
2536
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2537
- __attribute__((convergent)) int64_t3 WaveReadLaneAt(int64_t3, uint32_t);
2538
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2539
- __attribute__((convergent)) int64_t4 WaveReadLaneAt(int64_t4, uint32_t);
2925
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2926
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2927
+ __attribute__((convergent)) uint64_t WaveActiveBitOr(uint64_t);
2928
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2929
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2930
+ __attribute__((convergent)) uint64_t2 WaveActiveBitOr(uint64_t2);
2931
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2932
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2933
+ __attribute__((convergent)) uint64_t3 WaveActiveBitOr(uint64_t3);
2934
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2935
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2936
+ __attribute__((convergent)) uint64_t4 WaveActiveBitOr(uint64_t4);
2540
2937
 
2541
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2542
- __attribute__((convergent)) uint64_t WaveReadLaneAt(uint64_t, uint32_t);
2543
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2544
- __attribute__((convergent)) uint64_t2 WaveReadLaneAt(uint64_t2, uint32_t);
2545
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2546
- __attribute__((convergent)) uint64_t3 WaveReadLaneAt(uint64_t3, uint32_t);
2547
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2548
- __attribute__((convergent)) uint64_t4 WaveReadLaneAt(uint64_t4, uint32_t);
2938
+ // WaveActiveBitXor overloads
2939
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2940
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2941
+ __attribute__((convergent)) uint WaveActiveBitXor(uint);
2942
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2943
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2944
+ __attribute__((convergent)) uint2 WaveActiveBitXor(uint2);
2945
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2946
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2947
+ __attribute__((convergent)) uint3 WaveActiveBitXor(uint3);
2948
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2949
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2950
+ __attribute__((convergent)) uint4 WaveActiveBitXor(uint4);
2549
2951
 
2550
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2551
- __attribute__((convergent)) double WaveReadLaneAt(double, uint32_t);
2552
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2553
- __attribute__((convergent)) double2 WaveReadLaneAt(double2, uint32_t);
2554
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2555
- __attribute__((convergent)) double3 WaveReadLaneAt(double3, uint32_t);
2556
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2557
- __attribute__((convergent)) double4 WaveReadLaneAt(double4, uint32_t);
2952
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2953
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2954
+ __attribute__((convergent)) uint64_t WaveActiveBitXor(uint64_t);
2955
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2956
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2957
+ __attribute__((convergent)) uint64_t2 WaveActiveBitXor(uint64_t2);
2958
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2959
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2960
+ __attribute__((convergent)) uint64_t3 WaveActiveBitXor(uint64_t3);
2961
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2962
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_xor)
2963
+ __attribute__((convergent)) uint64_t4 WaveActiveBitXor(uint64_t4);
2558
2964
 
2559
- //===----------------------------------------------------------------------===//
2560
- // WaveActiveMax builtins
2561
- //===----------------------------------------------------------------------===//
2965
+ /// \brief Counts the number of boolean variables which evaluate to true across
2966
+ /// all active lanes in the current wave.
2967
+ /// \param Val The input boolean value.
2968
+ /// \return The number of lanes for which the boolean variable evaluates to
2969
+ /// true, across all active lanes in the current wave.
2970
+ // WaveActiveCountBits overloads
2971
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2972
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
2973
+ __attribute__((convergent)) uint WaveActiveCountBits(bool);
2562
2974
 
2563
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2975
+ /// \brief Returns the maximum value across all active lanes in the wave.
2976
+ /// \param Val The input value.
2977
+ // WaveActiveMax overloads
2978
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2564
2979
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2565
2980
  __attribute__((convergent)) half WaveActiveMax(half);
2566
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2981
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2567
2982
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2568
2983
  __attribute__((convergent)) half2 WaveActiveMax(half2);
2569
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2984
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2570
2985
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2571
2986
  __attribute__((convergent)) half3 WaveActiveMax(half3);
2572
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2987
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2573
2988
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2574
2989
  __attribute__((convergent)) half4 WaveActiveMax(half4);
2575
2990
 
2576
2991
  #ifdef __HLSL_ENABLE_16_BIT
2577
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2992
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2578
2993
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2579
2994
  __attribute__((convergent)) int16_t WaveActiveMax(int16_t);
2580
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2995
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2581
2996
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2582
2997
  __attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2583
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2998
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2584
2999
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2585
3000
  __attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2586
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3001
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2587
3002
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2588
3003
  __attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2589
3004
 
2590
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3005
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2591
3006
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2592
3007
  __attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2593
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3008
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2594
3009
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2595
3010
  __attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2596
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3011
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2597
3012
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2598
3013
  __attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2599
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3014
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2600
3015
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2601
3016
  __attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2602
3017
  #endif
2603
3018
 
3019
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2604
3020
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2605
3021
  __attribute__((convergent)) int WaveActiveMax(int);
3022
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2606
3023
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2607
3024
  __attribute__((convergent)) int2 WaveActiveMax(int2);
3025
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2608
3026
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2609
3027
  __attribute__((convergent)) int3 WaveActiveMax(int3);
3028
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2610
3029
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2611
3030
  __attribute__((convergent)) int4 WaveActiveMax(int4);
2612
3031
 
3032
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2613
3033
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2614
3034
  __attribute__((convergent)) uint WaveActiveMax(uint);
3035
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2615
3036
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2616
3037
  __attribute__((convergent)) uint2 WaveActiveMax(uint2);
3038
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2617
3039
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2618
3040
  __attribute__((convergent)) uint3 WaveActiveMax(uint3);
3041
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2619
3042
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2620
3043
  __attribute__((convergent)) uint4 WaveActiveMax(uint4);
2621
3044
 
3045
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2622
3046
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2623
3047
  __attribute__((convergent)) int64_t WaveActiveMax(int64_t);
3048
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2624
3049
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2625
3050
  __attribute__((convergent)) int64_t2 WaveActiveMax(int64_t2);
3051
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2626
3052
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2627
3053
  __attribute__((convergent)) int64_t3 WaveActiveMax(int64_t3);
3054
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2628
3055
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2629
3056
  __attribute__((convergent)) int64_t4 WaveActiveMax(int64_t4);
2630
3057
 
3058
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2631
3059
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2632
3060
  __attribute__((convergent)) uint64_t WaveActiveMax(uint64_t);
3061
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2633
3062
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2634
3063
  __attribute__((convergent)) uint64_t2 WaveActiveMax(uint64_t2);
3064
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2635
3065
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2636
3066
  __attribute__((convergent)) uint64_t3 WaveActiveMax(uint64_t3);
3067
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2637
3068
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2638
3069
  __attribute__((convergent)) uint64_t4 WaveActiveMax(uint64_t4);
2639
3070
 
3071
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2640
3072
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2641
3073
  __attribute__((convergent)) float WaveActiveMax(float);
3074
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2642
3075
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2643
3076
  __attribute__((convergent)) float2 WaveActiveMax(float2);
3077
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2644
3078
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2645
3079
  __attribute__((convergent)) float3 WaveActiveMax(float3);
3080
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2646
3081
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2647
3082
  __attribute__((convergent)) float4 WaveActiveMax(float4);
2648
3083
 
3084
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2649
3085
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2650
3086
  __attribute__((convergent)) double WaveActiveMax(double);
3087
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2651
3088
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2652
3089
  __attribute__((convergent)) double2 WaveActiveMax(double2);
3090
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2653
3091
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2654
3092
  __attribute__((convergent)) double3 WaveActiveMax(double3);
3093
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2655
3094
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2656
3095
  __attribute__((convergent)) double4 WaveActiveMax(double4);
2657
3096
 
2658
- //===----------------------------------------------------------------------===//
2659
- // WaveActiveMin builtins
2660
- //===----------------------------------------------------------------------===//
2661
-
2662
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3097
+ /// \brief Returns the minimum value across all active lanes in the wave.
3098
+ /// \param Val The input value.
3099
+ // WaveActiveMin overloads
3100
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2663
3101
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2664
3102
  __attribute__((convergent)) half WaveActiveMin(half);
2665
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3103
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2666
3104
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2667
3105
  __attribute__((convergent)) half2 WaveActiveMin(half2);
2668
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3106
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2669
3107
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2670
3108
  __attribute__((convergent)) half3 WaveActiveMin(half3);
2671
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3109
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2672
3110
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2673
3111
  __attribute__((convergent)) half4 WaveActiveMin(half4);
2674
3112
 
2675
3113
  #ifdef __HLSL_ENABLE_16_BIT
2676
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3114
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2677
3115
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2678
3116
  __attribute__((convergent)) int16_t WaveActiveMin(int16_t);
2679
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3117
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2680
3118
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2681
3119
  __attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2682
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3120
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2683
3121
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2684
3122
  __attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2685
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3123
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2686
3124
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2687
3125
  __attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2688
3126
 
2689
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3127
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2690
3128
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2691
3129
  __attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
2692
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3130
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2693
3131
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2694
3132
  __attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
2695
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3133
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2696
3134
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2697
3135
  __attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
2698
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3136
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2699
3137
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2700
3138
  __attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
2701
3139
  #endif
@@ -2778,384 +3216,654 @@ _HLSL_AVAILABILITY(shadermodel, 6.0)
2778
3216
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
2779
3217
  __attribute__((convergent)) double4 WaveActiveMin(double4);
2780
3218
 
2781
- //===----------------------------------------------------------------------===//
2782
- // WaveActiveSum builtins
2783
- //===----------------------------------------------------------------------===//
3219
+ /// \brief Returns the product of values across all active lanes in the wave.
3220
+ /// \param Val The input value.
3221
+ // WaveActiveProduct overloads
3222
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3223
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3224
+ __attribute__((convergent)) half WaveActiveProduct(half);
3225
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3226
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3227
+ __attribute__((convergent)) half2 WaveActiveProduct(half2);
3228
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3229
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3230
+ __attribute__((convergent)) half3 WaveActiveProduct(half3);
3231
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3232
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3233
+ __attribute__((convergent)) half4 WaveActiveProduct(half4);
3234
+
3235
+ #ifdef __HLSL_ENABLE_16_BIT
3236
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3237
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3238
+ __attribute__((convergent)) int16_t WaveActiveProduct(int16_t);
3239
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3240
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3241
+ __attribute__((convergent)) int16_t2 WaveActiveProduct(int16_t2);
3242
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3243
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3244
+ __attribute__((convergent)) int16_t3 WaveActiveProduct(int16_t3);
3245
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3246
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3247
+ __attribute__((convergent)) int16_t4 WaveActiveProduct(int16_t4);
3248
+
3249
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3250
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3251
+ __attribute__((convergent)) uint16_t WaveActiveProduct(uint16_t);
3252
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3253
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3254
+ __attribute__((convergent)) uint16_t2 WaveActiveProduct(uint16_t2);
3255
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3256
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3257
+ __attribute__((convergent)) uint16_t3 WaveActiveProduct(uint16_t3);
3258
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3259
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3260
+ __attribute__((convergent)) uint16_t4 WaveActiveProduct(uint16_t4);
3261
+ #endif
3262
+
3263
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3264
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3265
+ __attribute__((convergent)) int WaveActiveProduct(int);
3266
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3267
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3268
+ __attribute__((convergent)) int2 WaveActiveProduct(int2);
3269
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3270
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3271
+ __attribute__((convergent)) int3 WaveActiveProduct(int3);
3272
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3273
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3274
+ __attribute__((convergent)) int4 WaveActiveProduct(int4);
3275
+
3276
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3277
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3278
+ __attribute__((convergent)) uint WaveActiveProduct(uint);
3279
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3280
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3281
+ __attribute__((convergent)) uint2 WaveActiveProduct(uint2);
3282
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3283
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3284
+ __attribute__((convergent)) uint3 WaveActiveProduct(uint3);
3285
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3286
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3287
+ __attribute__((convergent)) uint4 WaveActiveProduct(uint4);
3288
+
3289
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3290
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3291
+ __attribute__((convergent)) int64_t WaveActiveProduct(int64_t);
3292
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3293
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3294
+ __attribute__((convergent)) int64_t2 WaveActiveProduct(int64_t2);
3295
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3296
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3297
+ __attribute__((convergent)) int64_t3 WaveActiveProduct(int64_t3);
3298
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3299
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3300
+ __attribute__((convergent)) int64_t4 WaveActiveProduct(int64_t4);
3301
+
3302
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3303
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3304
+ __attribute__((convergent)) uint64_t WaveActiveProduct(uint64_t);
3305
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3306
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3307
+ __attribute__((convergent)) uint64_t2 WaveActiveProduct(uint64_t2);
3308
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3309
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3310
+ __attribute__((convergent)) uint64_t3 WaveActiveProduct(uint64_t3);
3311
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3312
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3313
+ __attribute__((convergent)) uint64_t4 WaveActiveProduct(uint64_t4);
3314
+
3315
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3316
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3317
+ __attribute__((convergent)) float WaveActiveProduct(float);
3318
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3319
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3320
+ __attribute__((convergent)) float2 WaveActiveProduct(float2);
3321
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3322
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3323
+ __attribute__((convergent)) float3 WaveActiveProduct(float3);
3324
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3325
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3326
+ __attribute__((convergent)) float4 WaveActiveProduct(float4);
3327
+
3328
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3329
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3330
+ __attribute__((convergent)) double WaveActiveProduct(double);
3331
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3332
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3333
+ __attribute__((convergent)) double2 WaveActiveProduct(double2);
3334
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3335
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3336
+ __attribute__((convergent)) double3 WaveActiveProduct(double3);
3337
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3338
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_product)
3339
+ __attribute__((convergent)) double4 WaveActiveProduct(double4);
2784
3340
 
2785
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3341
+ /// \brief Returns the sum of values across all active lanes in the wave.
3342
+ /// \param Val The input value.
3343
+ // WaveActiveSum overloads
3344
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2786
3345
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2787
3346
  __attribute__((convergent)) half WaveActiveSum(half);
2788
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3347
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2789
3348
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2790
3349
  __attribute__((convergent)) half2 WaveActiveSum(half2);
2791
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3350
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2792
3351
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2793
3352
  __attribute__((convergent)) half3 WaveActiveSum(half3);
2794
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
3353
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2795
3354
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2796
3355
  __attribute__((convergent)) half4 WaveActiveSum(half4);
2797
3356
 
2798
3357
  #ifdef __HLSL_ENABLE_16_BIT
2799
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3358
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2800
3359
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2801
3360
  __attribute__((convergent)) int16_t WaveActiveSum(int16_t);
2802
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3361
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2803
3362
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2804
3363
  __attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2805
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3364
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2806
3365
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2807
3366
  __attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2808
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3367
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2809
3368
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2810
3369
  __attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2811
3370
 
2812
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3371
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2813
3372
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2814
3373
  __attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2815
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3374
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2816
3375
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2817
3376
  __attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2818
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3377
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2819
3378
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2820
3379
  __attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2821
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3380
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2822
3381
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2823
3382
  __attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2824
3383
  #endif
2825
3384
 
3385
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2826
3386
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2827
3387
  __attribute__((convergent)) int WaveActiveSum(int);
3388
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2828
3389
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2829
3390
  __attribute__((convergent)) int2 WaveActiveSum(int2);
3391
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2830
3392
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2831
3393
  __attribute__((convergent)) int3 WaveActiveSum(int3);
3394
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2832
3395
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2833
3396
  __attribute__((convergent)) int4 WaveActiveSum(int4);
2834
3397
 
3398
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2835
3399
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2836
3400
  __attribute__((convergent)) uint WaveActiveSum(uint);
3401
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2837
3402
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2838
3403
  __attribute__((convergent)) uint2 WaveActiveSum(uint2);
3404
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2839
3405
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2840
3406
  __attribute__((convergent)) uint3 WaveActiveSum(uint3);
3407
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2841
3408
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2842
3409
  __attribute__((convergent)) uint4 WaveActiveSum(uint4);
2843
3410
 
3411
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2844
3412
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2845
3413
  __attribute__((convergent)) int64_t WaveActiveSum(int64_t);
3414
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2846
3415
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2847
3416
  __attribute__((convergent)) int64_t2 WaveActiveSum(int64_t2);
3417
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2848
3418
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2849
3419
  __attribute__((convergent)) int64_t3 WaveActiveSum(int64_t3);
3420
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2850
3421
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2851
3422
  __attribute__((convergent)) int64_t4 WaveActiveSum(int64_t4);
2852
3423
 
3424
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2853
3425
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2854
3426
  __attribute__((convergent)) uint64_t WaveActiveSum(uint64_t);
3427
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2855
3428
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2856
3429
  __attribute__((convergent)) uint64_t2 WaveActiveSum(uint64_t2);
3430
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2857
3431
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2858
3432
  __attribute__((convergent)) uint64_t3 WaveActiveSum(uint64_t3);
3433
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2859
3434
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2860
3435
  __attribute__((convergent)) uint64_t4 WaveActiveSum(uint64_t4);
2861
3436
 
3437
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2862
3438
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2863
3439
  __attribute__((convergent)) float WaveActiveSum(float);
3440
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2864
3441
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2865
3442
  __attribute__((convergent)) float2 WaveActiveSum(float2);
3443
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2866
3444
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2867
3445
  __attribute__((convergent)) float3 WaveActiveSum(float3);
3446
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2868
3447
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2869
3448
  __attribute__((convergent)) float4 WaveActiveSum(float4);
2870
3449
 
3450
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2871
3451
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2872
3452
  __attribute__((convergent)) double WaveActiveSum(double);
3453
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2873
3454
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2874
3455
  __attribute__((convergent)) double2 WaveActiveSum(double2);
3456
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2875
3457
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2876
3458
  __attribute__((convergent)) double3 WaveActiveSum(double3);
3459
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2877
3460
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2878
3461
  __attribute__((convergent)) double4 WaveActiveSum(double4);
2879
3462
 
2880
- //===----------------------------------------------------------------------===//
2881
- // sign builtins
2882
- //===----------------------------------------------------------------------===//
3463
+ /// \brief Returns the number of lanes in the current wave.
3464
+ // WaveGetLaneCount overloads
3465
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3466
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_count)
3467
+ __attribute__((convergent)) uint WaveGetLaneCount();
2883
3468
 
2884
- /// \fn T sign(T Val)
2885
- /// \brief Returns -1 if \a Val is less than zero; 0 if \a Val equals zero; and
2886
- /// 1 if \a Val is greater than zero. \param Val The input value.
3469
+ /// \brief Returns the index of the current lane within the current wave.
3470
+ // WaveGetLaneIndex overloads
3471
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3472
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_index)
3473
+ __attribute__((convergent)) uint WaveGetLaneIndex();
3474
+
3475
+ /// \brief Returns true if the current lane is the first active lane in the wave.
3476
+ // WaveIsFirstLane overloads
3477
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3478
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_is_first_lane)
3479
+ __attribute__((convergent)) bool WaveIsFirstLane();
3480
+
3481
+ /// \brief Returns the count of bits of Expr set to 1 on prior lanes.
3482
+ /// \param Expr The boolean expression to evaluate.
3483
+ /// \return the count of bits set to 1 on prior lanes.
3484
+ // WavePrefixCountBits overloads
3485
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3486
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_count_bits)
3487
+ __attribute__((convergent)) uint WavePrefixCountBits(bool);
3488
+
3489
+ /// \brief Returns the product of values across lanes with smaller indices in the wave.
3490
+ /// \param Val The input value.
3491
+ // WavePrefixProduct overloads
3492
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3493
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3494
+ __attribute__((convergent)) half WavePrefixProduct(half);
3495
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3496
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3497
+ __attribute__((convergent)) half2 WavePrefixProduct(half2);
3498
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3499
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3500
+ __attribute__((convergent)) half3 WavePrefixProduct(half3);
3501
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3502
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3503
+ __attribute__((convergent)) half4 WavePrefixProduct(half4);
2887
3504
 
2888
3505
  #ifdef __HLSL_ENABLE_16_BIT
2889
3506
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2890
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2891
- int sign(int16_t);
3507
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3508
+ __attribute__((convergent)) int16_t WavePrefixProduct(int16_t);
2892
3509
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2893
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2894
- int2 sign(int16_t2);
3510
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3511
+ __attribute__((convergent)) int16_t2 WavePrefixProduct(int16_t2);
2895
3512
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2896
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2897
- int3 sign(int16_t3);
3513
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3514
+ __attribute__((convergent)) int16_t3 WavePrefixProduct(int16_t3);
2898
3515
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2899
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2900
- int4 sign(int16_t4);
3516
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3517
+ __attribute__((convergent)) int16_t4 WavePrefixProduct(int16_t4);
2901
3518
 
2902
3519
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2903
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2904
- int sign(uint16_t);
3520
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3521
+ __attribute__((convergent)) uint16_t WavePrefixProduct(uint16_t);
2905
3522
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2906
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2907
- int2 sign(uint16_t2);
3523
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3524
+ __attribute__((convergent)) uint16_t2 WavePrefixProduct(uint16_t2);
2908
3525
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2909
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2910
- int3 sign(uint16_t3);
3526
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3527
+ __attribute__((convergent)) uint16_t3 WavePrefixProduct(uint16_t3);
2911
3528
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2912
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2913
- int4 sign(uint16_t4);
3529
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3530
+ __attribute__((convergent)) uint16_t4 WavePrefixProduct(uint16_t4);
2914
3531
  #endif
2915
3532
 
2916
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2917
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2918
- int sign(half);
2919
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2920
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2921
- int2 sign(half2);
2922
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2923
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2924
- int3 sign(half3);
2925
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2926
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2927
- int4 sign(half4);
2928
-
2929
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2930
- int sign(int);
2931
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2932
- int2 sign(int2);
2933
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2934
- int3 sign(int3);
2935
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2936
- int4 sign(int4);
2937
-
2938
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2939
- int sign(uint);
2940
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2941
- int2 sign(uint2);
2942
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2943
- int3 sign(uint3);
2944
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2945
- int4 sign(uint4);
2946
-
2947
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2948
- int sign(float);
2949
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2950
- int2 sign(float2);
2951
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2952
- int3 sign(float3);
2953
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2954
- int4 sign(float4);
2955
-
2956
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2957
- int sign(int64_t);
2958
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2959
- int2 sign(int64_t2);
2960
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2961
- int3 sign(int64_t3);
2962
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2963
- int4 sign(int64_t4);
2964
-
2965
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2966
- int sign(uint64_t);
2967
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2968
- int2 sign(uint64_t2);
2969
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2970
- int3 sign(uint64_t3);
2971
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2972
- int4 sign(uint64_t4);
3533
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3534
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3535
+ __attribute__((convergent)) int WavePrefixProduct(int);
3536
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3537
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3538
+ __attribute__((convergent)) int2 WavePrefixProduct(int2);
3539
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3540
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3541
+ __attribute__((convergent)) int3 WavePrefixProduct(int3);
3542
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3543
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3544
+ __attribute__((convergent)) int4 WavePrefixProduct(int4);
2973
3545
 
2974
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2975
- int sign(double);
2976
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2977
- int2 sign(double2);
2978
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2979
- int3 sign(double3);
2980
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2981
- int4 sign(double4);
3546
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3547
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3548
+ __attribute__((convergent)) uint WavePrefixProduct(uint);
3549
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3550
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3551
+ __attribute__((convergent)) uint2 WavePrefixProduct(uint2);
3552
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3553
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3554
+ __attribute__((convergent)) uint3 WavePrefixProduct(uint3);
3555
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3556
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3557
+ __attribute__((convergent)) uint4 WavePrefixProduct(uint4);
2982
3558
 
2983
- //===----------------------------------------------------------------------===//
2984
- // radians builtins
2985
- //===----------------------------------------------------------------------===//
3559
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3560
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3561
+ __attribute__((convergent)) int64_t WavePrefixProduct(int64_t);
3562
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3563
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3564
+ __attribute__((convergent)) int64_t2 WavePrefixProduct(int64_t2);
3565
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3566
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3567
+ __attribute__((convergent)) int64_t3 WavePrefixProduct(int64_t3);
3568
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3569
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3570
+ __attribute__((convergent)) int64_t4 WavePrefixProduct(int64_t4);
2986
3571
 
2987
- /// \fn T radians(T Val)
2988
- /// \brief Converts the specified value from degrees to radians.
3572
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3573
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3574
+ __attribute__((convergent)) uint64_t WavePrefixProduct(uint64_t);
3575
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3576
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3577
+ __attribute__((convergent)) uint64_t2 WavePrefixProduct(uint64_t2);
3578
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3579
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3580
+ __attribute__((convergent)) uint64_t3 WavePrefixProduct(uint64_t3);
3581
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3582
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3583
+ __attribute__((convergent)) uint64_t4 WavePrefixProduct(uint64_t4);
2989
3584
 
2990
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2991
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2992
- half radians(half);
2993
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2994
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2995
- half2 radians(half2);
2996
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2997
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2998
- half3 radians(half3);
2999
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3000
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
3001
- half4 radians(half4);
3585
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3586
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3587
+ __attribute__((convergent)) float WavePrefixProduct(float);
3588
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3589
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3590
+ __attribute__((convergent)) float2 WavePrefixProduct(float2);
3591
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3592
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3593
+ __attribute__((convergent)) float3 WavePrefixProduct(float3);
3594
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3595
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3596
+ __attribute__((convergent)) float4 WavePrefixProduct(float4);
3002
3597
 
3003
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
3004
- float radians(float);
3005
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
3006
- float2 radians(float2);
3007
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
3008
- float3 radians(float3);
3009
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
3010
- float4 radians(float4);
3598
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3599
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3600
+ __attribute__((convergent)) double WavePrefixProduct(double);
3601
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3602
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3603
+ __attribute__((convergent)) double2 WavePrefixProduct(double2);
3604
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3605
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3606
+ __attribute__((convergent)) double3 WavePrefixProduct(double3);
3607
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3608
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3609
+ __attribute__((convergent)) double4 WavePrefixProduct(double4);
3011
3610
 
3012
- //===----------------------------------------------------------------------===//
3013
- // GroupMemoryBarrierWithGroupSync builtins
3014
- //===----------------------------------------------------------------------===//
3611
+ /// \brief Returns the sum of values across lanes with smaller indices in the wave.
3612
+ /// \param Val The input value.
3613
+ // WavePrefixSum overloads
3614
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3615
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3616
+ __attribute__((convergent)) half WavePrefixSum(half);
3617
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3618
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3619
+ __attribute__((convergent)) half2 WavePrefixSum(half2);
3620
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3621
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3622
+ __attribute__((convergent)) half3 WavePrefixSum(half3);
3623
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3624
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3625
+ __attribute__((convergent)) half4 WavePrefixSum(half4);
3015
3626
 
3016
- /// \fn void GroupMemoryBarrierWithGroupSync(void)
3017
- /// \brief Blocks execution of all threads in a group until all group shared
3018
- /// accesses have been completed and all threads in the group have reached this
3019
- /// call.
3627
+ #ifdef __HLSL_ENABLE_16_BIT
3628
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3629
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3630
+ __attribute__((convergent)) int16_t WavePrefixSum(int16_t);
3631
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3632
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3633
+ __attribute__((convergent)) int16_t2 WavePrefixSum(int16_t2);
3634
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3635
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3636
+ __attribute__((convergent)) int16_t3 WavePrefixSum(int16_t3);
3637
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3638
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3639
+ __attribute__((convergent)) int16_t4 WavePrefixSum(int16_t4);
3020
3640
 
3021
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_group_memory_barrier_with_group_sync)
3022
- __attribute__((convergent)) void GroupMemoryBarrierWithGroupSync(void);
3641
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3642
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3643
+ __attribute__((convergent)) uint16_t WavePrefixSum(uint16_t);
3644
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3645
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3646
+ __attribute__((convergent)) uint16_t2 WavePrefixSum(uint16_t2);
3647
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3648
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3649
+ __attribute__((convergent)) uint16_t3 WavePrefixSum(uint16_t3);
3650
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3651
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3652
+ __attribute__((convergent)) uint16_t4 WavePrefixSum(uint16_t4);
3653
+ #endif
3023
3654
 
3024
- //===----------------------------------------------------------------------===//
3025
- // ddx_coarse builtin
3026
- //===----------------------------------------------------------------------===//
3655
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3656
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3657
+ __attribute__((convergent)) int WavePrefixSum(int);
3658
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3659
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3660
+ __attribute__((convergent)) int2 WavePrefixSum(int2);
3661
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3662
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3663
+ __attribute__((convergent)) int3 WavePrefixSum(int3);
3664
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3665
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3666
+ __attribute__((convergent)) int4 WavePrefixSum(int4);
3027
3667
 
3028
- /// \fn T ddx_coarse(T value)
3029
- /// \brief Computes a low precision partial derivative with respect to the
3030
- /// screen-space x-coordinate.
3031
- /// \param value The input value.
3032
- ///
3033
- /// The return value is a floating point scalar or vector containing the low
3034
- /// prevision partial derivative of the input value.
3668
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3669
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3670
+ __attribute__((convergent)) uint WavePrefixSum(uint);
3671
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3672
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3673
+ __attribute__((convergent)) uint2 WavePrefixSum(uint2);
3674
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3675
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3676
+ __attribute__((convergent)) uint3 WavePrefixSum(uint3);
3677
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3678
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3679
+ __attribute__((convergent)) uint4 WavePrefixSum(uint4);
3035
3680
 
3036
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3037
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3038
- half ddx_coarse(half);
3039
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3040
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3041
- half2 ddx_coarse(half2);
3042
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3043
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3044
- half3 ddx_coarse(half3);
3045
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3046
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3047
- half4 ddx_coarse(half4);
3681
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3682
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3683
+ __attribute__((convergent)) int64_t WavePrefixSum(int64_t);
3684
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3685
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3686
+ __attribute__((convergent)) int64_t2 WavePrefixSum(int64_t2);
3687
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3688
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3689
+ __attribute__((convergent)) int64_t3 WavePrefixSum(int64_t3);
3690
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3691
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3692
+ __attribute__((convergent)) int64_t4 WavePrefixSum(int64_t4);
3048
3693
 
3049
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3050
- float ddx_coarse(float);
3051
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3052
- float2 ddx_coarse(float2);
3053
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3054
- float3 ddx_coarse(float3);
3055
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_coarse)
3056
- float4 ddx_coarse(float4);
3694
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3695
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3696
+ __attribute__((convergent)) uint64_t WavePrefixSum(uint64_t);
3697
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3698
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3699
+ __attribute__((convergent)) uint64_t2 WavePrefixSum(uint64_t2);
3700
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3701
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3702
+ __attribute__((convergent)) uint64_t3 WavePrefixSum(uint64_t3);
3703
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3704
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3705
+ __attribute__((convergent)) uint64_t4 WavePrefixSum(uint64_t4);
3057
3706
 
3058
- //===----------------------------------------------------------------------===//
3059
- // ddy_coarse builtin
3060
- //===----------------------------------------------------------------------===//
3707
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3708
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3709
+ __attribute__((convergent)) float WavePrefixSum(float);
3710
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3711
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3712
+ __attribute__((convergent)) float2 WavePrefixSum(float2);
3713
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3714
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3715
+ __attribute__((convergent)) float3 WavePrefixSum(float3);
3716
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3717
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3718
+ __attribute__((convergent)) float4 WavePrefixSum(float4);
3061
3719
 
3062
- /// \fn T ddy_coarse(T value)
3063
- /// \brief Computes a low precision partial derivative with respect to the
3064
- /// screen-space y-coordinate.
3065
- /// \param value The input value.
3066
- ///
3067
- /// The return value is a floating point scalar or vector containing the low
3068
- /// prevision partial derivative of the input value.
3720
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3721
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3722
+ __attribute__((convergent)) double WavePrefixSum(double);
3723
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3724
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3725
+ __attribute__((convergent)) double2 WavePrefixSum(double2);
3726
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3727
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3728
+ __attribute__((convergent)) double3 WavePrefixSum(double3);
3729
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3730
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_sum)
3731
+ __attribute__((convergent)) double4 WavePrefixSum(double4);
3069
3732
 
3070
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3071
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3072
- half ddy_coarse(half);
3073
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3074
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3075
- half2 ddy_coarse(half2);
3076
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3077
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3078
- half3 ddy_coarse(half3);
3079
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3080
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3081
- half4 ddy_coarse(half4);
3733
+ /// \brief Returns the value of the expression for the given lane index within
3734
+ /// the specified wave.
3735
+ /// \param Val The value to read.
3736
+ /// \param Index The lane index.
3737
+ // WaveReadLaneAt overloads
3738
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3739
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3740
+ __attribute__((convergent)) half WaveReadLaneAt(half, uint);
3741
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3742
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3743
+ __attribute__((convergent)) half2 WaveReadLaneAt(half2, uint);
3744
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3745
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3746
+ __attribute__((convergent)) half3 WaveReadLaneAt(half3, uint);
3747
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3748
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3749
+ __attribute__((convergent)) half4 WaveReadLaneAt(half4, uint);
3082
3750
 
3083
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3084
- float ddy_coarse(float);
3085
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3086
- float2 ddy_coarse(float2);
3087
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3088
- float3 ddy_coarse(float3);
3089
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_coarse)
3090
- float4 ddy_coarse(float4);
3751
+ #ifdef __HLSL_ENABLE_16_BIT
3752
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3753
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3754
+ __attribute__((convergent)) int16_t WaveReadLaneAt(int16_t, uint);
3755
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3756
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3757
+ __attribute__((convergent)) int16_t2 WaveReadLaneAt(int16_t2, uint);
3758
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3759
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3760
+ __attribute__((convergent)) int16_t3 WaveReadLaneAt(int16_t3, uint);
3761
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3762
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3763
+ __attribute__((convergent)) int16_t4 WaveReadLaneAt(int16_t4, uint);
3091
3764
 
3092
- //===----------------------------------------------------------------------===//
3093
- // ddx_fine builtin
3094
- //===----------------------------------------------------------------------===//
3765
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3766
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3767
+ __attribute__((convergent)) uint16_t WaveReadLaneAt(uint16_t, uint);
3768
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3769
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3770
+ __attribute__((convergent)) uint16_t2 WaveReadLaneAt(uint16_t2, uint);
3771
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3772
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3773
+ __attribute__((convergent)) uint16_t3 WaveReadLaneAt(uint16_t3, uint);
3774
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3775
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3776
+ __attribute__((convergent)) uint16_t4 WaveReadLaneAt(uint16_t4, uint);
3777
+ #endif
3095
3778
 
3096
- /// \fn T ddx_fine(T value)
3097
- /// \brief Computes a high precision partial derivative with respect to the
3098
- /// screen-space x-coordinate.
3099
- /// \param value The input value.
3100
- ///
3101
- /// The return value is a floating point scalar or vector containing the high
3102
- /// prevision partial derivative of the input value.
3779
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3780
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3781
+ __attribute__((convergent)) bool WaveReadLaneAt(bool, uint);
3782
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3783
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3784
+ __attribute__((convergent)) bool2 WaveReadLaneAt(bool2, uint);
3785
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3786
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3787
+ __attribute__((convergent)) bool3 WaveReadLaneAt(bool3, uint);
3788
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3789
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3790
+ __attribute__((convergent)) bool4 WaveReadLaneAt(bool4, uint);
3103
3791
 
3104
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3105
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3106
- half ddx_fine(half);
3107
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3108
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3109
- half2 ddx_fine(half2);
3110
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3111
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3112
- half3 ddx_fine(half3);
3113
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3114
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3115
- half4 ddx_fine(half4);
3792
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3793
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3794
+ __attribute__((convergent)) int WaveReadLaneAt(int, uint);
3795
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3796
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3797
+ __attribute__((convergent)) int2 WaveReadLaneAt(int2, uint);
3798
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3799
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3800
+ __attribute__((convergent)) int3 WaveReadLaneAt(int3, uint);
3801
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3802
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3803
+ __attribute__((convergent)) int4 WaveReadLaneAt(int4, uint);
3116
3804
 
3117
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3118
- float ddx_fine(float);
3119
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3120
- float2 ddx_fine(float2);
3121
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3122
- float3 ddx_fine(float3);
3123
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddx_fine)
3124
- float4 ddx_fine(float4);
3805
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3806
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3807
+ __attribute__((convergent)) uint WaveReadLaneAt(uint, uint);
3808
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3809
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3810
+ __attribute__((convergent)) uint2 WaveReadLaneAt(uint2, uint);
3811
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3812
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3813
+ __attribute__((convergent)) uint3 WaveReadLaneAt(uint3, uint);
3814
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3815
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3816
+ __attribute__((convergent)) uint4 WaveReadLaneAt(uint4, uint);
3125
3817
 
3126
- //===----------------------------------------------------------------------===//
3127
- // ddy_fine builtin
3128
- //===----------------------------------------------------------------------===//
3818
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3819
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3820
+ __attribute__((convergent)) int64_t WaveReadLaneAt(int64_t, uint);
3821
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3822
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3823
+ __attribute__((convergent)) int64_t2 WaveReadLaneAt(int64_t2, uint);
3824
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3825
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3826
+ __attribute__((convergent)) int64_t3 WaveReadLaneAt(int64_t3, uint);
3827
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3828
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3829
+ __attribute__((convergent)) int64_t4 WaveReadLaneAt(int64_t4, uint);
3129
3830
 
3130
- /// \fn T ddy_fine(T value)
3131
- /// \brief Computes a high precision partial derivative with respect to the
3132
- /// screen-space y-coordinate.
3133
- /// \param value The input value.
3134
- ///
3135
- /// The return value is a floating point scalar or vector containing the high
3136
- /// prevision partial derivative of the input value.
3831
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3832
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3833
+ __attribute__((convergent)) uint64_t WaveReadLaneAt(uint64_t, uint);
3834
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3835
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3836
+ __attribute__((convergent)) uint64_t2 WaveReadLaneAt(uint64_t2, uint);
3837
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3838
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3839
+ __attribute__((convergent)) uint64_t3 WaveReadLaneAt(uint64_t3, uint);
3840
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3841
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3842
+ __attribute__((convergent)) uint64_t4 WaveReadLaneAt(uint64_t4, uint);
3137
3843
 
3138
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3139
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3140
- half ddy_fine(half);
3141
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3142
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3143
- half2 ddy_fine(half2);
3144
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3145
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3146
- half3 ddy_fine(half3);
3147
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
3148
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3149
- half4 ddy_fine(half4);
3844
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3845
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3846
+ __attribute__((convergent)) float WaveReadLaneAt(float, uint);
3847
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3848
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3849
+ __attribute__((convergent)) float2 WaveReadLaneAt(float2, uint);
3850
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3851
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3852
+ __attribute__((convergent)) float3 WaveReadLaneAt(float3, uint);
3853
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3854
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3855
+ __attribute__((convergent)) float4 WaveReadLaneAt(float4, uint);
3150
3856
 
3151
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3152
- float ddy_fine(float);
3153
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3154
- float2 ddy_fine(float2);
3155
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3156
- float3 ddy_fine(float3);
3157
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_ddy_fine)
3158
- float4 ddy_fine(float4);
3857
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3858
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3859
+ __attribute__((convergent)) double WaveReadLaneAt(double, uint);
3860
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3861
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3862
+ __attribute__((convergent)) double2 WaveReadLaneAt(double2, uint);
3863
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3864
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3865
+ __attribute__((convergent)) double3 WaveReadLaneAt(double3, uint);
3866
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3867
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
3868
+ __attribute__((convergent)) double4 WaveReadLaneAt(double4, uint);
3159
3869
 
3160
- } // namespace hlsl
3161
- #endif //_HLSL_HLSL_ALIAS_INTRINSICS_H_