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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/23/include/__clang_cuda_complex_builtins.h +236 -0
  4. package/lib/clang/{21 → 23}/include/__clang_cuda_device_functions.h +1 -1
  5. package/lib/clang/{21 → 23}/include/__clang_cuda_intrinsics.h +207 -226
  6. package/lib/clang/{21 → 23}/include/__clang_cuda_math_forward_declares.h +5 -0
  7. package/lib/clang/{21 → 23}/include/__clang_cuda_runtime_wrapper.h +27 -5
  8. package/lib/clang/23/include/__clang_gpu_builtin_vars.h +71 -0
  9. package/lib/clang/23/include/__clang_gpu_device_functions.h +411 -0
  10. package/lib/clang/23/include/__clang_gpu_intrinsics.h +242 -0
  11. package/lib/clang/{21 → 23}/include/__clang_hip_libdevice_declares.h +14 -121
  12. package/lib/clang/{21 → 23}/include/__clang_hip_math.h +5 -5
  13. package/lib/clang/{21 → 23}/include/__clang_hip_runtime_wrapper.h +9 -1
  14. package/lib/clang/{21 → 23}/include/__clang_spirv_builtins.h +12 -12
  15. package/lib/clang/23/include/__clang_spirv_libdevice_declares.h +170 -0
  16. package/lib/clang/23/include/__clang_spirv_math.h +719 -0
  17. package/lib/clang/{21/include/float.h → 23/include/__float_float.h} +13 -24
  18. package/lib/clang/23/include/__float_header_macro.h +12 -0
  19. package/lib/clang/23/include/__float_infinity_nan.h +20 -0
  20. package/lib/clang/{21 → 23}/include/altivec.h +79 -9
  21. package/lib/clang/{21 → 23}/include/amdgpuintrin.h +2 -29
  22. package/lib/clang/23/include/amdhsa_abi.h +83 -0
  23. package/lib/clang/23/include/amo.h +220 -0
  24. package/lib/clang/{21 → 23}/include/amxavx512intrin.h +215 -1
  25. package/lib/clang/{21 → 23}/include/amxintrin.h +0 -2
  26. package/lib/clang/{21 → 23}/include/andes_vector.h +5 -0
  27. package/lib/clang/23/include/arm64_neon.h +21 -0
  28. package/lib/clang/{21 → 23}/include/arm64intr.h +10 -0
  29. package/lib/clang/{21 → 23}/include/arm_acle.h +38 -27
  30. package/lib/clang/{21 → 23}/include/arm_neon.h +4140 -3836
  31. package/lib/clang/{21 → 23}/include/arm_sme.h +20 -8
  32. package/lib/clang/{21 → 23}/include/arm_sve.h +4582 -3782
  33. package/lib/clang/{21 → 23}/include/avx10_2_512bf16intrin.h +19 -12
  34. package/lib/clang/{21 → 23}/include/avx10_2_512convertintrin.h +1 -1
  35. package/lib/clang/{21 → 23}/include/avx10_2_512niintrin.h +25 -25
  36. package/lib/clang/{21 → 23}/include/avx10_2_512satcvtdsintrin.h +1 -1
  37. package/lib/clang/{21 → 23}/include/avx10_2bf16intrin.h +54 -45
  38. package/lib/clang/{21 → 23}/include/avx10_2convertintrin.h +2 -2
  39. package/lib/clang/{21 → 23}/include/avx10_2copyintrin.h +1 -1
  40. package/lib/clang/{21 → 23}/include/avx10_2niintrin.h +2 -2
  41. package/lib/clang/{21 → 23}/include/avx10_2satcvtdsintrin.h +2 -2
  42. package/lib/clang/{21 → 23}/include/avx2intrin.h +279 -382
  43. package/lib/clang/{21 → 23}/include/avx512bf16intrin.h +25 -16
  44. package/lib/clang/{21 → 23}/include/avx512bitalgintrin.h +19 -30
  45. package/lib/clang/23/include/avx512bmmintrin.h +174 -0
  46. package/lib/clang/23/include/avx512bmmvlintrin.h +245 -0
  47. package/lib/clang/{21 → 23}/include/avx512bwintrin.h +405 -534
  48. package/lib/clang/23/include/avx512cdintrin.h +112 -0
  49. package/lib/clang/{21 → 23}/include/avx512dqintrin.h +132 -161
  50. package/lib/clang/{21 → 23}/include/avx512fintrin.h +1049 -1485
  51. package/lib/clang/{21 → 23}/include/avx512fp16intrin.h +124 -128
  52. package/lib/clang/23/include/avx512ifmaintrin.h +68 -0
  53. package/lib/clang/23/include/avx512ifmavlintrin.h +138 -0
  54. package/lib/clang/{21 → 23}/include/avx512vbmi2intrin.h +55 -48
  55. package/lib/clang/{21 → 23}/include/avx512vbmiintrin.h +19 -27
  56. package/lib/clang/{21 → 23}/include/avx512vbmivlintrin.h +35 -49
  57. package/lib/clang/{21 → 23}/include/avx512vlbf16intrin.h +32 -22
  58. package/lib/clang/{21 → 23}/include/avx512vlbitalgintrin.h +37 -53
  59. package/lib/clang/{21 → 23}/include/avx512vlbwintrin.h +494 -609
  60. package/lib/clang/23/include/avx512vlcdintrin.h +202 -0
  61. package/lib/clang/{21 → 23}/include/avx512vldqintrin.h +110 -127
  62. package/lib/clang/{21 → 23}/include/avx512vlfp16intrin.h +130 -111
  63. package/lib/clang/{21 → 23}/include/avx512vlintrin.h +1025 -1395
  64. package/lib/clang/{21 → 23}/include/avx512vlvbmi2intrin.h +102 -95
  65. package/lib/clang/{21 → 23}/include/avx512vlvnniintrin.h +50 -52
  66. package/lib/clang/{21 → 23}/include/avx512vlvp2intersectintrin.h +2 -2
  67. package/lib/clang/{21 → 23}/include/avx512vnniintrin.h +42 -45
  68. package/lib/clang/{21 → 23}/include/avx512vp2intersectintrin.h +2 -3
  69. package/lib/clang/{21 → 23}/include/avx512vpopcntdqintrin.h +8 -10
  70. package/lib/clang/{21 → 23}/include/avx512vpopcntdqvlintrin.h +17 -15
  71. package/lib/clang/{21 → 23}/include/avxifmaintrin.h +16 -0
  72. package/lib/clang/{21 → 23}/include/avxintrin.h +165 -241
  73. package/lib/clang/{21 → 23}/include/avxvnniint16intrin.h +118 -99
  74. package/lib/clang/{21 → 23}/include/avxvnniint8intrin.h +56 -32
  75. package/lib/clang/{21 → 23}/include/avxvnniintrin.h +39 -26
  76. package/lib/clang/{21 → 23}/include/cpuid.h +101 -4
  77. package/lib/clang/{21 → 23}/include/crc32intrin.h +10 -8
  78. package/lib/clang/23/include/cuda_wrappers/__utility/declval.h +28 -0
  79. package/lib/clang/{21 → 23}/include/emmintrin.h +176 -176
  80. package/lib/clang/23/include/endian.h +91 -0
  81. package/lib/clang/{21 → 23}/include/f16cintrin.h +23 -9
  82. package/lib/clang/23/include/float.h +48 -0
  83. package/lib/clang/23/include/fma4intrin.h +220 -0
  84. package/lib/clang/{21 → 23}/include/fmaintrin.h +96 -66
  85. package/lib/clang/{21 → 23}/include/gfniintrin.h +21 -16
  86. package/lib/clang/{21 → 23}/include/gpuintrin.h +129 -109
  87. package/lib/clang/{21 → 23}/include/hexagon_types.h +23 -20
  88. package/lib/clang/23/include/hlsl/hlsl_alias_intrinsics.h +222 -0
  89. package/lib/clang/{21/include/hlsl/hlsl_alias_intrinsics.h → 23/include/hlsl/hlsl_alias_intrinsics_gen.inc} +2090 -1032
  90. package/lib/clang/23/include/hlsl/hlsl_basic_types.h +370 -0
  91. package/lib/clang/{21 → 23}/include/hlsl/hlsl_compat_overloads.h +150 -18
  92. package/lib/clang/{21 → 23}/include/hlsl/hlsl_detail.h +6 -4
  93. package/lib/clang/23/include/hlsl/hlsl_inline_intrinsics_gen.inc +546 -0
  94. package/lib/clang/{21 → 23}/include/hlsl/hlsl_intrinsic_helpers.h +71 -45
  95. package/lib/clang/23/include/hlsl/hlsl_intrinsics.h +331 -0
  96. package/lib/clang/{21 → 23}/include/hvx_hexagon_protos.h +724 -913
  97. package/lib/clang/{21 → 23}/include/immintrin.h +4 -14
  98. package/lib/clang/{21 → 23}/include/intrin.h +24 -10
  99. package/lib/clang/{21 → 23}/include/larchintrin.h +2 -0
  100. package/lib/clang/{21 → 23}/include/lasxintrin.h +113 -0
  101. package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/assert.h +3 -5
  102. package/lib/clang/23/include/llvm_libc_wrappers/ctype.h +29 -0
  103. package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/inttypes.h +3 -5
  104. package/lib/clang/23/include/llvm_libc_wrappers/stdio.h +52 -0
  105. package/lib/clang/23/include/llvm_libc_wrappers/stdlib.h +32 -0
  106. package/lib/clang/23/include/llvm_libc_wrappers/string.h +29 -0
  107. package/lib/clang/{21 → 23}/include/llvm_libc_wrappers/time.h +4 -10
  108. package/lib/clang/{21 → 23}/include/mmintrin.h +188 -257
  109. package/lib/clang/{21 → 23}/include/module.modulemap +39 -5
  110. package/lib/clang/{21 → 23}/include/movrs_avx10_2_512intrin.h +2 -2
  111. package/lib/clang/{21 → 23}/include/movrs_avx10_2intrin.h +4 -4
  112. package/lib/clang/{21 → 23}/include/nvptxintrin.h +15 -26
  113. package/lib/clang/{21 → 23}/include/opencl-c-base.h +7 -93
  114. package/lib/clang/{21 → 23}/include/opencl-c.h +225 -118
  115. package/lib/clang/{21 → 23}/include/openmp_wrappers/__clang_openmp_device_functions.h +14 -0
  116. package/lib/clang/{21 → 23}/include/openmp_wrappers/complex +7 -1
  117. package/lib/clang/{21 → 23}/include/openmp_wrappers/complex.h +6 -0
  118. package/lib/clang/{21 → 23}/include/openmp_wrappers/math.h +10 -0
  119. package/lib/clang/{21 → 23}/include/pmmintrin.h +12 -24
  120. package/lib/clang/{21 → 23}/include/ptrauth.h +104 -12
  121. package/lib/clang/{21 → 23}/include/riscv_bitmanip.h +7 -0
  122. package/lib/clang/{21 → 23}/include/riscv_corev_alu.h +2 -0
  123. package/lib/clang/{21 → 23}/include/riscv_crypto.h +8 -0
  124. package/lib/clang/23/include/riscv_mips.h +36 -0
  125. package/lib/clang/23/include/riscv_nds.h +92 -0
  126. package/lib/clang/{21 → 23}/include/riscv_ntlh.h +2 -0
  127. package/lib/clang/23/include/riscv_packed_simd.h +644 -0
  128. package/lib/clang/{21 → 23}/include/riscv_vector.h +43 -0
  129. package/lib/clang/{21 → 23}/include/sifive_vector.h +76 -2
  130. package/lib/clang/{21 → 23}/include/sm4evexintrin.h +2 -2
  131. package/lib/clang/{21 → 23}/include/smmintrin.h +77 -59
  132. package/lib/clang/23/include/spirvintrin.h +167 -0
  133. package/lib/clang/23/include/stddefer.h +19 -0
  134. package/lib/clang/{21 → 23}/include/stdint.h +5 -14
  135. package/lib/clang/{21 → 23}/include/tmmintrin.h +116 -147
  136. package/lib/clang/{21 → 23}/include/vaesintrin.h +1 -2
  137. package/lib/clang/{21 → 23}/include/vecintrin.h +1 -1
  138. package/lib/clang/{21 → 23}/include/wasm_simd128.h +17 -0
  139. package/lib/clang/{21 → 23}/include/xmmintrin.h +50 -75
  140. package/lib/clang/{21 → 23}/include/xopintrin.h +20 -10
  141. package/lib/clang/23/include/zos_wrappers/grp.h +19 -0
  142. package/lib/clang/23/include/zos_wrappers/locale.h +19 -0
  143. package/lib/clang/23/include/zos_wrappers/math.h +31 -0
  144. package/lib/clang/23/include/zos_wrappers/poll.h +19 -0
  145. package/lib/clang/23/include/zos_wrappers/stdlib.h +20 -0
  146. package/lib/clang/23/include/zos_wrappers/string.h +19 -0
  147. package/lib/clang/23/include/zos_wrappers/time.h +19 -0
  148. package/lib/clang/23/include/zos_wrappers/variant.h +19 -0
  149. package/package.json +6 -6
  150. package/lib/clang/21/include/__clang_cuda_complex_builtins.h +0 -285
  151. package/lib/clang/21/include/amxbf16transposeintrin.h +0 -94
  152. package/lib/clang/21/include/amxcomplextransposeintrin.h +0 -303
  153. package/lib/clang/21/include/amxfp16transposeintrin.h +0 -94
  154. package/lib/clang/21/include/amxmovrstransposeintrin.h +0 -200
  155. package/lib/clang/21/include/amxtf32intrin.h +0 -108
  156. package/lib/clang/21/include/amxtf32transposeintrin.h +0 -105
  157. package/lib/clang/21/include/amxtransposeintrin.h +0 -248
  158. package/lib/clang/21/include/avx512cdintrin.h +0 -125
  159. package/lib/clang/21/include/avx512ifmaintrin.h +0 -70
  160. package/lib/clang/21/include/avx512ifmavlintrin.h +0 -111
  161. package/lib/clang/21/include/avx512vlcdintrin.h +0 -230
  162. package/lib/clang/21/include/fma4intrin.h +0 -218
  163. package/lib/clang/21/include/hlsl/hlsl_basic_types.h +0 -120
  164. package/lib/clang/21/include/hlsl/hlsl_intrinsics.h +0 -526
  165. package/lib/clang/21/include/llvm_libc_wrappers/ctype.h +0 -140
  166. package/lib/clang/21/include/llvm_libc_wrappers/stdio.h +0 -80
  167. package/lib/clang/21/include/llvm_libc_wrappers/stdlib.h +0 -53
  168. package/lib/clang/21/include/llvm_libc_wrappers/string.h +0 -96
  169. /package/lib/clang/{21 → 23}/include/__clang_cuda_builtin_vars.h +0 -0
  170. /package/lib/clang/{21 → 23}/include/__clang_cuda_cmath.h +0 -0
  171. /package/lib/clang/{21 → 23}/include/__clang_cuda_libdevice_declares.h +0 -0
  172. /package/lib/clang/{21 → 23}/include/__clang_cuda_math.h +0 -0
  173. /package/lib/clang/{21 → 23}/include/__clang_cuda_texture_intrinsics.h +0 -0
  174. /package/lib/clang/{21 → 23}/include/__clang_hip_cmath.h +0 -0
  175. /package/lib/clang/{21 → 23}/include/__clang_hip_stdlib.h +0 -0
  176. /package/lib/clang/{21 → 23}/include/__stdarg___gnuc_va_list.h +0 -0
  177. /package/lib/clang/{21 → 23}/include/__stdarg___va_copy.h +0 -0
  178. /package/lib/clang/{21 → 23}/include/__stdarg_header_macro.h +0 -0
  179. /package/lib/clang/{21 → 23}/include/__stdarg_va_arg.h +0 -0
  180. /package/lib/clang/{21 → 23}/include/__stdarg_va_copy.h +0 -0
  181. /package/lib/clang/{21 → 23}/include/__stdarg_va_list.h +0 -0
  182. /package/lib/clang/{21 → 23}/include/__stddef_header_macro.h +0 -0
  183. /package/lib/clang/{21 → 23}/include/__stddef_max_align_t.h +0 -0
  184. /package/lib/clang/{21 → 23}/include/__stddef_null.h +0 -0
  185. /package/lib/clang/{21 → 23}/include/__stddef_nullptr_t.h +0 -0
  186. /package/lib/clang/{21 → 23}/include/__stddef_offsetof.h +0 -0
  187. /package/lib/clang/{21 → 23}/include/__stddef_ptrdiff_t.h +0 -0
  188. /package/lib/clang/{21 → 23}/include/__stddef_rsize_t.h +0 -0
  189. /package/lib/clang/{21 → 23}/include/__stddef_size_t.h +0 -0
  190. /package/lib/clang/{21 → 23}/include/__stddef_unreachable.h +0 -0
  191. /package/lib/clang/{21 → 23}/include/__stddef_wchar_t.h +0 -0
  192. /package/lib/clang/{21 → 23}/include/__stddef_wint_t.h +0 -0
  193. /package/lib/clang/{21 → 23}/include/__wmmintrin_aes.h +0 -0
  194. /package/lib/clang/{21 → 23}/include/__wmmintrin_pclmul.h +0 -0
  195. /package/lib/clang/{21 → 23}/include/adcintrin.h +0 -0
  196. /package/lib/clang/{21 → 23}/include/adxintrin.h +0 -0
  197. /package/lib/clang/{21 → 23}/include/ammintrin.h +0 -0
  198. /package/lib/clang/{21 → 23}/include/amxcomplexintrin.h +0 -0
  199. /package/lib/clang/{21 → 23}/include/amxfp16intrin.h +0 -0
  200. /package/lib/clang/{21 → 23}/include/amxfp8intrin.h +0 -0
  201. /package/lib/clang/{21 → 23}/include/amxmovrsintrin.h +0 -0
  202. /package/lib/clang/{21 → 23}/include/arm_bf16.h +0 -0
  203. /package/lib/clang/{21 → 23}/include/arm_cde.h +0 -0
  204. /package/lib/clang/{21 → 23}/include/arm_cmse.h +0 -0
  205. /package/lib/clang/{21 → 23}/include/arm_fp16.h +0 -0
  206. /package/lib/clang/{21 → 23}/include/arm_mve.h +0 -0
  207. /package/lib/clang/{21 → 23}/include/arm_neon_sve_bridge.h +0 -0
  208. /package/lib/clang/{21 → 23}/include/arm_vector_types.h +0 -0
  209. /package/lib/clang/{21 → 23}/include/armintr.h +0 -0
  210. /package/lib/clang/{21 → 23}/include/avx10_2_512minmaxintrin.h +0 -0
  211. /package/lib/clang/{21 → 23}/include/avx10_2_512satcvtintrin.h +0 -0
  212. /package/lib/clang/{21 → 23}/include/avx10_2minmaxintrin.h +0 -0
  213. /package/lib/clang/{21 → 23}/include/avx10_2satcvtintrin.h +0 -0
  214. /package/lib/clang/{21 → 23}/include/avxneconvertintrin.h +0 -0
  215. /package/lib/clang/{21 → 23}/include/bmi2intrin.h +0 -0
  216. /package/lib/clang/{21 → 23}/include/bmiintrin.h +0 -0
  217. /package/lib/clang/{21 → 23}/include/builtins.h +0 -0
  218. /package/lib/clang/{21 → 23}/include/cet.h +0 -0
  219. /package/lib/clang/{21 → 23}/include/cetintrin.h +0 -0
  220. /package/lib/clang/{21 → 23}/include/cldemoteintrin.h +0 -0
  221. /package/lib/clang/{21 → 23}/include/clflushoptintrin.h +0 -0
  222. /package/lib/clang/{21 → 23}/include/clwbintrin.h +0 -0
  223. /package/lib/clang/{21 → 23}/include/clzerointrin.h +0 -0
  224. /package/lib/clang/{21 → 23}/include/cmpccxaddintrin.h +0 -0
  225. /package/lib/clang/{21 → 23}/include/cuda_wrappers/algorithm +0 -0
  226. /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/basic_string.h +0 -0
  227. /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  228. /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/c++config.h +0 -0
  229. /package/lib/clang/{21 → 23}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  230. /package/lib/clang/{21 → 23}/include/cuda_wrappers/cmath +0 -0
  231. /package/lib/clang/{21 → 23}/include/cuda_wrappers/complex +0 -0
  232. /package/lib/clang/{21 → 23}/include/cuda_wrappers/new +0 -0
  233. /package/lib/clang/{21 → 23}/include/enqcmdintrin.h +0 -0
  234. /package/lib/clang/{21 → 23}/include/fxsrintrin.h +0 -0
  235. /package/lib/clang/{21 → 23}/include/hexagon_circ_brev_intrinsics.h +0 -0
  236. /package/lib/clang/{21 → 23}/include/hexagon_protos.h +0 -0
  237. /package/lib/clang/{21 → 23}/include/hlsl/hlsl_spirv.h +0 -0
  238. /package/lib/clang/{21 → 23}/include/hlsl.h +0 -0
  239. /package/lib/clang/{21 → 23}/include/hresetintrin.h +0 -0
  240. /package/lib/clang/{21 → 23}/include/htmintrin.h +0 -0
  241. /package/lib/clang/{21 → 23}/include/htmxlintrin.h +0 -0
  242. /package/lib/clang/{21 → 23}/include/ia32intrin.h +0 -0
  243. /package/lib/clang/{21 → 23}/include/intrin0.h +0 -0
  244. /package/lib/clang/{21 → 23}/include/inttypes.h +0 -0
  245. /package/lib/clang/{21 → 23}/include/invpcidintrin.h +0 -0
  246. /package/lib/clang/{21 → 23}/include/iso646.h +0 -0
  247. /package/lib/clang/{21 → 23}/include/keylockerintrin.h +0 -0
  248. /package/lib/clang/{21 → 23}/include/limits.h +0 -0
  249. /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload.h +0 -0
  250. /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload_device.h +0 -0
  251. /package/lib/clang/{21 → 23}/include/llvm_offload_wrappers/__llvm_offload_host.h +0 -0
  252. /package/lib/clang/{21 → 23}/include/lsxintrin.h +0 -0
  253. /package/lib/clang/{21 → 23}/include/lwpintrin.h +0 -0
  254. /package/lib/clang/{21 → 23}/include/lzcntintrin.h +0 -0
  255. /package/lib/clang/{21 → 23}/include/mm3dnow.h +0 -0
  256. /package/lib/clang/{21 → 23}/include/mm_malloc.h +0 -0
  257. /package/lib/clang/{21 → 23}/include/movdirintrin.h +0 -0
  258. /package/lib/clang/{21 → 23}/include/movrsintrin.h +0 -0
  259. /package/lib/clang/{21 → 23}/include/msa.h +0 -0
  260. /package/lib/clang/{21 → 23}/include/mwaitxintrin.h +0 -0
  261. /package/lib/clang/{21 → 23}/include/nmmintrin.h +0 -0
  262. /package/lib/clang/{21 → 23}/include/openmp_wrappers/cmath +0 -0
  263. /package/lib/clang/{21 → 23}/include/openmp_wrappers/complex_cmath.h +0 -0
  264. /package/lib/clang/{21 → 23}/include/openmp_wrappers/new +0 -0
  265. /package/lib/clang/{21 → 23}/include/pconfigintrin.h +0 -0
  266. /package/lib/clang/{21 → 23}/include/pkuintrin.h +0 -0
  267. /package/lib/clang/{21 → 23}/include/popcntintrin.h +0 -0
  268. /package/lib/clang/{21 → 23}/include/ppc_wrappers/bmi2intrin.h +0 -0
  269. /package/lib/clang/{21 → 23}/include/ppc_wrappers/bmiintrin.h +0 -0
  270. /package/lib/clang/{21 → 23}/include/ppc_wrappers/emmintrin.h +0 -0
  271. /package/lib/clang/{21 → 23}/include/ppc_wrappers/immintrin.h +0 -0
  272. /package/lib/clang/{21 → 23}/include/ppc_wrappers/mm_malloc.h +0 -0
  273. /package/lib/clang/{21 → 23}/include/ppc_wrappers/mmintrin.h +0 -0
  274. /package/lib/clang/{21 → 23}/include/ppc_wrappers/nmmintrin.h +0 -0
  275. /package/lib/clang/{21 → 23}/include/ppc_wrappers/pmmintrin.h +0 -0
  276. /package/lib/clang/{21 → 23}/include/ppc_wrappers/smmintrin.h +0 -0
  277. /package/lib/clang/{21 → 23}/include/ppc_wrappers/tmmintrin.h +0 -0
  278. /package/lib/clang/{21 → 23}/include/ppc_wrappers/x86gprintrin.h +0 -0
  279. /package/lib/clang/{21 → 23}/include/ppc_wrappers/x86intrin.h +0 -0
  280. /package/lib/clang/{21 → 23}/include/ppc_wrappers/xmmintrin.h +0 -0
  281. /package/lib/clang/{21 → 23}/include/prfchiintrin.h +0 -0
  282. /package/lib/clang/{21 → 23}/include/prfchwintrin.h +0 -0
  283. /package/lib/clang/{21 → 23}/include/ptwriteintrin.h +0 -0
  284. /package/lib/clang/{21 → 23}/include/raointintrin.h +0 -0
  285. /package/lib/clang/{21 → 23}/include/rdpruintrin.h +0 -0
  286. /package/lib/clang/{21 → 23}/include/rdseedintrin.h +0 -0
  287. /package/lib/clang/{21 → 23}/include/rtmintrin.h +0 -0
  288. /package/lib/clang/{21 → 23}/include/s390intrin.h +0 -0
  289. /package/lib/clang/{21 → 23}/include/serializeintrin.h +0 -0
  290. /package/lib/clang/{21 → 23}/include/sgxintrin.h +0 -0
  291. /package/lib/clang/{21 → 23}/include/sha512intrin.h +0 -0
  292. /package/lib/clang/{21 → 23}/include/shaintrin.h +0 -0
  293. /package/lib/clang/{21 → 23}/include/sm3intrin.h +0 -0
  294. /package/lib/clang/{21 → 23}/include/sm4intrin.h +0 -0
  295. /package/lib/clang/{21 → 23}/include/stdalign.h +0 -0
  296. /package/lib/clang/{21 → 23}/include/stdarg.h +0 -0
  297. /package/lib/clang/{21 → 23}/include/stdatomic.h +0 -0
  298. /package/lib/clang/{21 → 23}/include/stdbool.h +0 -0
  299. /package/lib/clang/{21 → 23}/include/stdckdint.h +0 -0
  300. /package/lib/clang/{21 → 23}/include/stdcountof.h +0 -0
  301. /package/lib/clang/{21 → 23}/include/stddef.h +0 -0
  302. /package/lib/clang/{21 → 23}/include/stdnoreturn.h +0 -0
  303. /package/lib/clang/{21 → 23}/include/tbmintrin.h +0 -0
  304. /package/lib/clang/{21 → 23}/include/tgmath.h +0 -0
  305. /package/lib/clang/{21 → 23}/include/tsxldtrkintrin.h +0 -0
  306. /package/lib/clang/{21 → 23}/include/uintrintrin.h +0 -0
  307. /package/lib/clang/{21 → 23}/include/unwind.h +0 -0
  308. /package/lib/clang/{21 → 23}/include/usermsrintrin.h +0 -0
  309. /package/lib/clang/{21 → 23}/include/vadefs.h +0 -0
  310. /package/lib/clang/{21 → 23}/include/varargs.h +0 -0
  311. /package/lib/clang/{21 → 23}/include/velintrin.h +0 -0
  312. /package/lib/clang/{21 → 23}/include/velintrin_approx.h +0 -0
  313. /package/lib/clang/{21 → 23}/include/velintrin_gen.h +0 -0
  314. /package/lib/clang/{21 → 23}/include/vpclmulqdqintrin.h +0 -0
  315. /package/lib/clang/{21 → 23}/include/waitpkgintrin.h +0 -0
  316. /package/lib/clang/{21 → 23}/include/wbnoinvdintrin.h +0 -0
  317. /package/lib/clang/{21 → 23}/include/wmmintrin.h +0 -0
  318. /package/lib/clang/{21 → 23}/include/x86gprintrin.h +0 -0
  319. /package/lib/clang/{21 → 23}/include/x86intrin.h +0 -0
  320. /package/lib/clang/{21 → 23}/include/xsavecintrin.h +0 -0
  321. /package/lib/clang/{21 → 23}/include/xsaveintrin.h +0 -0
  322. /package/lib/clang/{21 → 23}/include/xsaveoptintrin.h +0 -0
  323. /package/lib/clang/{21 → 23}/include/xsavesintrin.h +0 -0
  324. /package/lib/clang/{21 → 23}/include/xtestintrin.h +0 -0
  325. /package/lib/clang/{21 → 23}/include/yvals_core.h +0 -0
  326. /package/lib/clang/{21 → 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,35 +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();
295
230
 
296
- /// \fn bool and(bool x, bool y)
297
- /// \brief Logically ands two boolean vectors elementwise and produces a bool
298
- /// vector output.
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();
299
237
 
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
238
+ /// \fn bool and(bool x, bool y)
239
+ /// \brief Logically ands two boolean vectors or matrices elementwise and
240
+ /// produces a bool vector or matrix output.
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
- // clang-format on
313
-
314
- //===----------------------------------------------------------------------===//
315
- // any builtins
316
- //===----------------------------------------------------------------------===//
249
+ bool4 and(bool4, bool4);
250
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
251
+ bool1x2 and(bool1x2, bool1x2);
252
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
253
+ bool1x3 and(bool1x3, bool1x3);
254
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
255
+ bool1x4 and(bool1x4, bool1x4);
256
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
257
+ bool2x1 and(bool2x1, bool2x1);
258
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
259
+ bool2x2 and(bool2x2, bool2x2);
260
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
261
+ bool2x3 and(bool2x3, bool2x3);
262
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
263
+ bool2x4 and(bool2x4, bool2x4);
264
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
265
+ bool3x1 and(bool3x1, bool3x1);
266
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
267
+ bool3x2 and(bool3x2, bool3x2);
268
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
269
+ bool3x3 and(bool3x3, bool3x3);
270
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
271
+ bool3x4 and(bool3x4, bool3x4);
272
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
273
+ bool4x1 and(bool4x1, bool4x1);
274
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
275
+ bool4x2 and(bool4x2, bool4x2);
276
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
277
+ bool4x3 and(bool4x3, bool4x3);
278
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_and)
279
+ bool4x4 and(bool4x4, bool4x4);
317
280
 
318
281
  /// \fn bool any(T x)
319
282
  /// \brief Returns True if any components of the \a x parameter are non-zero;
320
- /// 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);
321
298
 
322
299
  #ifdef __HLSL_ENABLE_16_BIT
323
300
  _HLSL_AVAILABILITY(shadermodel, 6.2)
@@ -332,6 +309,7 @@ bool any(int16_t3);
332
309
  _HLSL_AVAILABILITY(shadermodel, 6.2)
333
310
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
334
311
  bool any(int16_t4);
312
+
335
313
  _HLSL_AVAILABILITY(shadermodel, 6.2)
336
314
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
337
315
  bool any(uint16_t);
@@ -346,19 +324,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
346
324
  bool any(uint16_t4);
347
325
  #endif
348
326
 
349
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
350
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
351
- bool any(half);
352
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
353
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
354
- bool any(half2);
355
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
356
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
357
- bool any(half3);
358
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
359
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
360
- bool any(half4);
361
-
362
327
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
363
328
  bool any(bool);
364
329
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -367,7 +332,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
367
332
  bool any(bool3);
368
333
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
369
334
  bool any(bool4);
370
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
371
335
 
372
336
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
373
337
  bool any(int);
@@ -387,15 +351,6 @@ bool any(uint3);
387
351
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
388
352
  bool any(uint4);
389
353
 
390
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
391
- bool any(float);
392
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
393
- bool any(float2);
394
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
395
- bool any(float3);
396
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
397
- bool any(float4);
398
-
399
354
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
400
355
  bool any(int64_t);
401
356
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -414,6 +369,15 @@ bool any(uint64_t3);
414
369
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
415
370
  bool any(uint64_t4);
416
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
+
417
381
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
418
382
  bool any(double);
419
383
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
@@ -423,15 +387,11 @@ bool any(double3);
423
387
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_any)
424
388
  bool any(double4);
425
389
 
426
- //===----------------------------------------------------------------------===//
427
- // asdouble builtins
428
- //===----------------------------------------------------------------------===//
429
-
430
390
  /// \fn double asdouble(uint LowBits, uint HighBits)
431
391
  /// \brief Reinterprets a cast value (two 32-bit values) into a double.
432
392
  /// \param LowBits The low 32-bit pattern of the input value.
433
393
  /// \param HighBits The high 32-bit pattern of the input value.
434
-
394
+ // asdouble overloads
435
395
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
436
396
  double asdouble(uint, uint);
437
397
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
@@ -441,14 +401,10 @@ double3 asdouble(uint3, uint3);
441
401
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_asdouble)
442
402
  double4 asdouble(uint4, uint4);
443
403
 
444
- //===----------------------------------------------------------------------===//
445
- // asin builtins
446
- //===----------------------------------------------------------------------===//
447
-
448
404
  /// \fn T asin(T Val)
449
405
  /// \brief Returns the arcsine of the input value, \a Val.
450
406
  /// \param Val The input value.
451
-
407
+ // asin overloads
452
408
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
453
409
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
454
410
  half asin(half);
@@ -471,14 +427,10 @@ float3 asin(float3);
471
427
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_asin)
472
428
  float4 asin(float4);
473
429
 
474
- //===----------------------------------------------------------------------===//
475
- // atan builtins
476
- //===----------------------------------------------------------------------===//
477
-
478
430
  /// \fn T atan(T Val)
479
431
  /// \brief Returns the arctangent of the input value, \a Val.
480
432
  /// \param Val The input value.
481
-
433
+ // atan overloads
482
434
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
483
435
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
484
436
  half atan(half);
@@ -501,47 +453,114 @@ float3 atan(float3);
501
453
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan)
502
454
  float4 atan(float4);
503
455
 
504
- //===----------------------------------------------------------------------===//
505
- // atan2 builtins
506
- //===----------------------------------------------------------------------===//
507
-
508
456
  /// \fn T atan2(T y, T x)
509
457
  /// \brief Returns the arctangent of y/x, using the signs of the arguments to
510
458
  /// determine the correct quadrant.
511
459
  /// \param y The y-coordinate.
512
460
  /// \param x The x-coordinate.
513
-
461
+ // atan2 overloads
514
462
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
515
463
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
516
- half atan2(half y, half x);
464
+ half atan2(half, half);
517
465
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
518
466
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
519
- half2 atan2(half2 y, half2 x);
467
+ half2 atan2(half2, half2);
520
468
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
521
469
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
522
- half3 atan2(half3 y, half3 x);
470
+ half3 atan2(half3, half3);
523
471
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
524
472
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
525
- half4 atan2(half4 y, half4 x);
526
-
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)
496
+ _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
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)
527
508
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
528
- float atan2(float y, float x);
509
+ half4x1 atan2(half4x1, half4x1);
510
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
529
511
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
530
- float2 atan2(float2 y, float2 x);
512
+ half4x2 atan2(half4x2, half4x2);
513
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
531
514
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
532
- float3 atan2(float3 y, float3 x);
515
+ half4x3 atan2(half4x3, half4x3);
516
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
533
517
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_atan2)
534
- float4 atan2(float4 y, float4 x);
518
+ half4x4 atan2(half4x4, half4x4);
535
519
 
536
- //===----------------------------------------------------------------------===//
537
- // ceil builtins
538
- //===----------------------------------------------------------------------===//
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);
539
558
 
540
559
  /// \fn T ceil(T Val)
541
560
  /// \brief Returns the smallest integer value that is greater than or equal to
542
561
  /// the input value, \a Val.
543
562
  /// \param Val The input value.
544
-
563
+ // ceil overloads
545
564
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
546
565
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
547
566
  half ceil(half);
@@ -564,10 +583,6 @@ float3 ceil(float3);
564
583
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
565
584
  float4 ceil(float4);
566
585
 
567
- //===----------------------------------------------------------------------===//
568
- // clamp builtins
569
- //===----------------------------------------------------------------------===//
570
-
571
586
  /// \fn T clamp(T X, T Min, T Max)
572
587
  /// \brief Clamps the specified value \a X to the specified
573
588
  /// minimum ( \a Min) and maximum ( \a Max) range.
@@ -578,7 +593,7 @@ float4 ceil(float4);
578
593
  /// Returns The clamped value for the \a X parameter.
579
594
  /// For values of -INF or INF, clamp will behave as expected.
580
595
  /// However for values of NaN, the results are undefined.
581
-
596
+ // clamp overloads
582
597
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
583
598
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
584
599
  half clamp(half, half, half);
@@ -674,13 +689,22 @@ double3 clamp(double3, double3, double3);
674
689
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
675
690
  double4 clamp(double4, double4, double4);
676
691
 
677
- //===----------------------------------------------------------------------===//
678
- // clip builtins
679
- //===----------------------------------------------------------------------===//
680
-
681
692
  /// \fn void clip(T Val)
682
693
  /// \brief Discards the current pixel if the specified value is less than zero.
683
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);
684
708
 
685
709
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
686
710
  void clip(float);
@@ -691,14 +715,10 @@ void clip(float3);
691
715
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clip)
692
716
  void clip(float4);
693
717
 
694
- //===----------------------------------------------------------------------===//
695
- // cos builtins
696
- //===----------------------------------------------------------------------===//
697
-
698
718
  /// \fn T cos(T Val)
699
719
  /// \brief Returns the cosine of the input value, \a Val.
700
720
  /// \param Val The input value.
701
-
721
+ // cos overloads
702
722
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
703
723
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
704
724
  half cos(half);
@@ -721,14 +741,10 @@ float3 cos(float3);
721
741
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
722
742
  float4 cos(float4);
723
743
 
724
- //===----------------------------------------------------------------------===//
725
- // cosh builtins
726
- //===----------------------------------------------------------------------===//
727
-
728
744
  /// \fn T cosh(T Val)
729
745
  /// \brief Returns the hyperbolic cosine of the input value, \a Val.
730
746
  /// \param Val The input value.
731
-
747
+ // cosh overloads
732
748
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
733
749
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
734
750
  half cosh(half);
@@ -751,107 +767,149 @@ float3 cosh(float3);
751
767
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_cosh)
752
768
  float4 cosh(float4);
753
769
 
754
- //===----------------------------------------------------------------------===//
755
- // count bits builtins
756
- //===----------------------------------------------------------------------===//
757
-
758
- /// \fn T countbits(T Val)
759
- /// \brief Return the number of bits (per component) set in the input integer.
760
- /// \param Val The input value.
770
+ // cross overloads
771
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf32)
772
+ float3 cross(float3, float3);
761
773
 
762
- #ifdef __HLSL_ENABLE_16_BIT
763
- _HLSL_AVAILABILITY(shadermodel, 6.2)
764
- const inline uint countbits(int16_t x) {
765
- return __builtin_elementwise_popcount(x);
766
- }
767
- _HLSL_AVAILABILITY(shadermodel, 6.2)
768
- const inline uint2 countbits(int16_t2 x) {
769
- return __builtin_elementwise_popcount(x);
770
- }
771
- _HLSL_AVAILABILITY(shadermodel, 6.2)
772
- const inline uint3 countbits(int16_t3 x) {
773
- return __builtin_elementwise_popcount(x);
774
- }
775
- _HLSL_AVAILABILITY(shadermodel, 6.2)
776
- const inline uint4 countbits(int16_t4 x) {
777
- return __builtin_elementwise_popcount(x);
778
- }
779
- _HLSL_AVAILABILITY(shadermodel, 6.2)
780
- const inline uint countbits(uint16_t x) {
781
- return __builtin_elementwise_popcount(x);
782
- }
783
- _HLSL_AVAILABILITY(shadermodel, 6.2)
784
- const inline uint2 countbits(uint16_t2 x) {
785
- return __builtin_elementwise_popcount(x);
786
- }
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
787
785
  _HLSL_AVAILABILITY(shadermodel, 6.2)
788
- const inline uint3 countbits(uint16_t3 x) {
789
- return __builtin_elementwise_popcount(x);
790
- }
791
- _HLSL_AVAILABILITY(shadermodel, 6.2)
792
- const inline uint4 countbits(uint16_t4 x) {
793
- return __builtin_elementwise_popcount(x);
794
- }
795
- #endif
786
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf16)
787
+ half3 cross(half3, half3);
788
+
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);
796
899
 
797
- const inline uint countbits(int x) { return __builtin_elementwise_popcount(x); }
798
- const inline uint2 countbits(int2 x) {
799
- return __builtin_elementwise_popcount(x);
800
- }
801
- const inline uint3 countbits(int3 x) {
802
- return __builtin_elementwise_popcount(x);
803
- }
804
- const inline uint4 countbits(int4 x) {
805
- return __builtin_elementwise_popcount(x);
806
- }
807
-
808
- const inline uint countbits(uint x) {
809
- return __builtin_elementwise_popcount(x);
810
- }
811
- const inline uint2 countbits(uint2 x) {
812
- return __builtin_elementwise_popcount(x);
813
- }
814
- const inline uint3 countbits(uint3 x) {
815
- return __builtin_elementwise_popcount(x);
816
- }
817
- const inline uint4 countbits(uint4 x) {
818
- return __builtin_elementwise_popcount(x);
819
- }
820
-
821
- const inline uint countbits(int64_t x) {
822
- return __builtin_elementwise_popcount(x);
823
- }
824
- const inline uint2 countbits(int64_t2 x) {
825
- return __builtin_elementwise_popcount(x);
826
- }
827
- const inline uint3 countbits(int64_t3 x) {
828
- return __builtin_elementwise_popcount(x);
829
- }
830
- const inline uint4 countbits(int64_t4 x) {
831
- return __builtin_elementwise_popcount(x);
832
- }
833
-
834
- const inline uint countbits(uint64_t x) {
835
- return __builtin_elementwise_popcount(x);
836
- }
837
- const inline uint2 countbits(uint64_t2 x) {
838
- return __builtin_elementwise_popcount(x);
839
- }
840
- const inline uint3 countbits(uint64_t3 x) {
841
- return __builtin_elementwise_popcount(x);
842
- }
843
- const inline uint4 countbits(uint64_t4 x) {
844
- return __builtin_elementwise_popcount(x);
845
- }
846
-
847
- //===----------------------------------------------------------------------===//
848
- // degrees builtins
849
- //===----------------------------------------------------------------------===//
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);
850
908
 
851
909
  /// \fn T degrees(T x)
852
910
  /// \brief Converts the specified value from radians to degrees.
853
911
  /// \param x The specified input value.
854
-
912
+ // degrees overloads
855
913
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
856
914
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
857
915
  half degrees(half);
@@ -874,15 +932,25 @@ float3 degrees(float3);
874
932
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_degrees)
875
933
  float4 degrees(float4);
876
934
 
877
- //===----------------------------------------------------------------------===//
878
- // dot product builtins
879
- //===----------------------------------------------------------------------===//
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();
880
948
 
881
949
  /// \fn K dot(T X, T Y)
882
950
  /// \brief Return the dot product (a scalar value) of \a X and \a Y.
883
951
  /// \param X The X input value.
884
952
  /// \param Y The Y input value.
885
-
953
+ // dot overloads
886
954
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
887
955
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
888
956
  half dot(half, half);
@@ -924,18 +992,6 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
924
992
  uint16_t dot(uint16_t4, uint16_t4);
925
993
  #endif
926
994
 
927
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
928
- float dot(float, float);
929
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
930
- float dot(float2, float2);
931
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
932
- float dot(float3, float3);
933
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
934
- float dot(float4, float4);
935
-
936
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
937
- double dot(double, double);
938
-
939
995
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
940
996
  int dot(int, int);
941
997
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
@@ -972,32 +1028,41 @@ uint64_t dot(uint64_t3, uint64_t3);
972
1028
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
973
1029
  uint64_t dot(uint64_t4, uint64_t4);
974
1030
 
975
- //===----------------------------------------------------------------------===//
976
- // dot4add builtins
977
- //===----------------------------------------------------------------------===//
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);
978
1039
 
979
1040
  /// \fn int dot4add_i8packed(uint A, uint B, int C)
980
-
1041
+ /// \brief Dot product of two packed 8-bit signed integer vectors, accumulated
1042
+ /// with a 32-bit signed integer.
1043
+ // dot4add_i8packed overloads
981
1044
  _HLSL_AVAILABILITY(shadermodel, 6.4)
982
1045
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot4add_i8packed)
983
1046
  int dot4add_i8packed(uint, uint, int);
984
1047
 
985
1048
  /// \fn uint dot4add_u8packed(uint A, uint B, uint C)
986
-
1049
+ /// \brief Dot product of two packed 8-bit unsigned integer vectors, accumulated
1050
+ /// with a 32-bit unsigned integer.
1051
+ // dot4add_u8packed overloads
987
1052
  _HLSL_AVAILABILITY(shadermodel, 6.4)
988
1053
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot4add_u8packed)
989
1054
  uint dot4add_u8packed(uint, uint, uint);
990
1055
 
991
- //===----------------------------------------------------------------------===//
992
- // exp builtins
993
- //===----------------------------------------------------------------------===//
1056
+ // dot overloads
1057
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
1058
+ double dot(double, double);
994
1059
 
995
1060
  /// \fn T exp(T x)
996
1061
  /// \brief Returns the base-e exponential, or \a e**x, of the specified value.
997
1062
  /// \param x The specified input value.
998
1063
  ///
999
1064
  /// The return value is the base-e exponential of the \a x parameter.
1000
-
1065
+ // exp overloads
1001
1066
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1002
1067
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
1003
1068
  half exp(half);
@@ -1020,16 +1085,12 @@ float3 exp(float3);
1020
1085
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
1021
1086
  float4 exp(float4);
1022
1087
 
1023
- //===----------------------------------------------------------------------===//
1024
- // exp2 builtins
1025
- //===----------------------------------------------------------------------===//
1026
-
1027
1088
  /// \fn T exp2(T x)
1028
1089
  /// \brief Returns the base 2 exponential, or \a 2**x, of the specified value.
1029
1090
  /// \param x The specified input value.
1030
1091
  ///
1031
1092
  /// The base 2 exponential of the \a x parameter.
1032
-
1093
+ // exp2 overloads
1033
1094
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1034
1095
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
1035
1096
  half exp2(half);
@@ -1052,87 +1113,45 @@ float3 exp2(float3);
1052
1113
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
1053
1114
  float4 exp2(float4);
1054
1115
 
1055
- //===----------------------------------------------------------------------===//
1056
- // firstbithigh builtins
1057
- //===----------------------------------------------------------------------===//
1058
-
1059
- /// \fn T firstbithigh(T Val)
1060
- /// \brief Returns the location of the first set bit starting from the highest
1061
- /// order bit and working downward, per component.
1062
- /// \param Val the input value.
1063
-
1064
- #ifdef __HLSL_ENABLE_16_BIT
1065
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1066
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1067
- uint firstbithigh(int16_t);
1068
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1069
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1070
- uint2 firstbithigh(int16_t2);
1071
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1072
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1073
- uint3 firstbithigh(int16_t3);
1074
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1075
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1076
- uint4 firstbithigh(int16_t4);
1077
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1078
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1079
- uint firstbithigh(uint16_t);
1080
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1081
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1082
- uint2 firstbithigh(uint16_t2);
1083
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1084
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1085
- uint3 firstbithigh(uint16_t3);
1086
- _HLSL_AVAILABILITY(shadermodel, 6.2)
1087
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1088
- uint4 firstbithigh(uint16_t4);
1089
- #endif
1090
-
1091
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1092
- uint firstbithigh(int);
1093
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1094
- uint2 firstbithigh(int2);
1095
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1096
- uint3 firstbithigh(int3);
1097
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1098
- uint4 firstbithigh(int4);
1099
-
1100
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1101
- uint firstbithigh(uint);
1102
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1103
- uint2 firstbithigh(uint2);
1104
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1105
- uint3 firstbithigh(uint3);
1106
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1107
- uint4 firstbithigh(uint4);
1108
-
1109
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1110
- uint firstbithigh(int64_t);
1111
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1112
- uint2 firstbithigh(int64_t2);
1113
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1114
- uint3 firstbithigh(int64_t3);
1115
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1116
- uint4 firstbithigh(int64_t4);
1117
-
1118
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1119
- uint firstbithigh(uint64_t);
1120
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1121
- uint2 firstbithigh(uint64_t2);
1122
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1123
- uint3 firstbithigh(uint64_t3);
1124
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbithigh)
1125
- uint4 firstbithigh(uint64_t4);
1126
-
1127
- //===----------------------------------------------------------------------===//
1128
- // firstbitlow builtins
1129
- //===----------------------------------------------------------------------===//
1116
+ /// \fn float f16tof32(uint x)
1117
+ /// \brief Returns the half value stored in the low 16 bits of the uint arg
1118
+ /// converted to a float.
1119
+ /// \param x The uint containing two half values.
1120
+ ///
1121
+ /// The float value of the half value found in the low 16 bits of the \a x
1122
+ /// parameter.
1123
+ // f16tof32 overloads
1124
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1125
+ float f16tof32(uint);
1126
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1127
+ float2 f16tof32(uint2);
1128
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1129
+ float3 f16tof32(uint3);
1130
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_f16tof32)
1131
+ float4 f16tof32(uint4);
1132
+
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);
1130
1149
 
1131
1150
  /// \fn T firstbitlow(T Val)
1132
1151
  /// \brief Returns the location of the first set bit starting from the lowest
1133
1152
  /// order bit and working upward, per component.
1134
1153
  /// \param Val the input value.
1135
-
1154
+ // firstbitlow overloads
1136
1155
  #ifdef __HLSL_ENABLE_16_BIT
1137
1156
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1138
1157
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
@@ -1146,6 +1165,7 @@ uint3 firstbitlow(int16_t3);
1146
1165
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1147
1166
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1148
1167
  uint4 firstbitlow(int16_t4);
1168
+
1149
1169
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1150
1170
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1151
1171
  uint firstbitlow(uint16_t);
@@ -1196,15 +1216,11 @@ uint3 firstbitlow(uint64_t3);
1196
1216
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_firstbitlow)
1197
1217
  uint4 firstbitlow(uint64_t4);
1198
1218
 
1199
- //===----------------------------------------------------------------------===//
1200
- // floor builtins
1201
- //===----------------------------------------------------------------------===//
1202
-
1203
1219
  /// \fn T floor(T Val)
1204
1220
  /// \brief Returns the largest integer that is less than or equal to the input
1205
1221
  /// value, \a Val.
1206
1222
  /// \param Val The input value.
1207
-
1223
+ // floor overloads
1208
1224
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1209
1225
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
1210
1226
  half floor(half);
@@ -1227,16 +1243,57 @@ float3 floor(float3);
1227
1243
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
1228
1244
  float4 floor(float4);
1229
1245
 
1230
- //===----------------------------------------------------------------------===//
1231
- // frac builtins
1232
- //===----------------------------------------------------------------------===//
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);
1233
1290
 
1234
1291
  /// \fn T frac(T x)
1235
1292
  /// \brief Returns the fractional (or decimal) part of x. \a x parameter.
1236
1293
  /// \param x The specified input value.
1237
1294
  ///
1238
1295
  /// If \a the return value is greater than or equal to 0 and less than 1.
1239
-
1296
+ // frac overloads
1240
1297
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1241
1298
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
1242
1299
  half frac(half);
@@ -1259,9 +1316,20 @@ float3 frac(float3);
1259
1316
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
1260
1317
  float4 frac(float4);
1261
1318
 
1262
- //===----------------------------------------------------------------------===//
1263
- // isinf builtins
1264
- //===----------------------------------------------------------------------===//
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();
1265
1333
 
1266
1334
  /// \fn T isinf(T x)
1267
1335
  /// \brief Determines if the specified value \a x is infinite.
@@ -1269,7 +1337,7 @@ float4 frac(float4);
1269
1337
  ///
1270
1338
  /// Returns a value of the same size as the input, with a value set
1271
1339
  /// to True if the x parameter is +INF or -INF. Otherwise, False.
1272
-
1340
+ // isinf overloads
1273
1341
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1274
1342
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
1275
1343
  bool isinf(half);
@@ -1292,9 +1360,34 @@ bool3 isinf(float3);
1292
1360
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
1293
1361
  bool4 isinf(float4);
1294
1362
 
1295
- //===----------------------------------------------------------------------===//
1296
- // lerp builtins
1297
- //===----------------------------------------------------------------------===//
1363
+ /// \fn T isnan(T x)
1364
+ /// \brief Determines if the specified value \a x is Not a Number.
1365
+ /// \param x The specified input value.
1366
+ ///
1367
+ /// Returns a value of the same size as the input, with a value set
1368
+ /// to True if the x parameter is NaN or QNaN. Otherwise, False.
1369
+ // isnan overloads
1370
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1371
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1372
+ bool isnan(half);
1373
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1374
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1375
+ bool2 isnan(half2);
1376
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1377
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1378
+ bool3 isnan(half3);
1379
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1380
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1381
+ bool4 isnan(half4);
1382
+
1383
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1384
+ bool isnan(float);
1385
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1386
+ bool2 isnan(float2);
1387
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1388
+ bool3 isnan(float3);
1389
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isnan)
1390
+ bool4 isnan(float4);
1298
1391
 
1299
1392
  /// \fn T lerp(T x, T y, T s)
1300
1393
  /// \brief Returns the linear interpolation of x to y by s.
@@ -1305,7 +1398,7 @@ bool4 isinf(float4);
1305
1398
  ///
1306
1399
  /// Linear interpolation is based on the following formula: x*(1-s) + y*s which
1307
1400
  /// can equivalently be written as x + s(y-x).
1308
-
1401
+ // lerp overloads
1309
1402
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1310
1403
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
1311
1404
  half lerp(half, half, half);
@@ -1328,17 +1421,13 @@ float3 lerp(float3, float3, float3);
1328
1421
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
1329
1422
  float4 lerp(float4, float4, float4);
1330
1423
 
1331
- //===----------------------------------------------------------------------===//
1332
- // log builtins
1333
- //===----------------------------------------------------------------------===//
1334
-
1335
1424
  /// \fn T log(T Val)
1336
1425
  /// \brief The base-e logarithm of the input value, \a Val parameter.
1337
1426
  /// \param Val The input value.
1338
1427
  ///
1339
1428
  /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1340
1429
  /// function returns negative infinity.
1341
-
1430
+ // log overloads
1342
1431
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1343
1432
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
1344
1433
  half log(half);
@@ -1361,50 +1450,13 @@ float3 log(float3);
1361
1450
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
1362
1451
  float4 log(float4);
1363
1452
 
1364
- //===----------------------------------------------------------------------===//
1365
- // log10 builtins
1366
- //===----------------------------------------------------------------------===//
1367
-
1368
- /// \fn T log10(T Val)
1369
- /// \brief The base-10 logarithm of the input value, \a Val parameter.
1370
- /// \param Val The input value.
1371
- ///
1372
- /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1373
- /// function returns negative infinity.
1374
-
1375
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1376
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1377
- half log10(half);
1378
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1379
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1380
- half2 log10(half2);
1381
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1382
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1383
- half3 log10(half3);
1384
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1385
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1386
- half4 log10(half4);
1387
-
1388
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1389
- float log10(float);
1390
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1391
- float2 log10(float2);
1392
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1393
- float3 log10(float3);
1394
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
1395
- float4 log10(float4);
1396
-
1397
- //===----------------------------------------------------------------------===//
1398
- // log2 builtins
1399
- //===----------------------------------------------------------------------===//
1400
-
1401
1453
  /// \fn T log2(T Val)
1402
1454
  /// \brief The base-2 logarithm of the input value, \a Val parameter.
1403
1455
  /// \param Val The input value.
1404
1456
  ///
1405
1457
  /// If \a Val is negative, this result is undefined. If \a Val is 0, this
1406
1458
  /// function returns negative infinity.
1407
-
1459
+ // log2 overloads
1408
1460
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1409
1461
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
1410
1462
  half log2(half);
@@ -1427,16 +1479,41 @@ float3 log2(float3);
1427
1479
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
1428
1480
  float4 log2(float4);
1429
1481
 
1430
- //===----------------------------------------------------------------------===//
1431
- // mad builtins
1432
- //===----------------------------------------------------------------------===//
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);
1433
1510
 
1434
1511
  /// \fn T mad(T M, T A, T B)
1435
1512
  /// \brief The result of \a M * \a A + \a B.
1436
1513
  /// \param M The multiplication value.
1437
1514
  /// \param A The first addition value.
1438
1515
  /// \param B The second addition value.
1439
-
1516
+ // mad overloads
1440
1517
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1441
1518
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
1442
1519
  half mad(half, half, half);
@@ -1532,15 +1609,11 @@ double3 mad(double3, double3, double3);
1532
1609
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
1533
1610
  double4 mad(double4, double4, double4);
1534
1611
 
1535
- //===----------------------------------------------------------------------===//
1536
- // max builtins
1537
- //===----------------------------------------------------------------------===//
1538
-
1539
1612
  /// \fn T max(T X, T Y)
1540
1613
  /// \brief Return the greater of \a X and \a Y.
1541
1614
  /// \param X The X input value.
1542
1615
  /// \param Y The Y input value.
1543
-
1616
+ // max overloads
1544
1617
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1545
1618
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1546
1619
  half max(half, half);
@@ -1636,15 +1709,11 @@ double3 max(double3, double3);
1636
1709
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1637
1710
  double4 max(double4, double4);
1638
1711
 
1639
- //===----------------------------------------------------------------------===//
1640
- // min builtins
1641
- //===----------------------------------------------------------------------===//
1642
-
1643
1712
  /// \fn T min(T X, T Y)
1644
1713
  /// \brief Return the lesser of \a X and \a Y.
1645
1714
  /// \param X The X input value.
1646
1715
  /// \param Y The Y input value.
1647
-
1716
+ // min overloads
1648
1717
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1649
1718
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1650
1719
  half min(half, half);
@@ -1704,15 +1773,6 @@ uint3 min(uint3, uint3);
1704
1773
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1705
1774
  uint4 min(uint4, uint4);
1706
1775
 
1707
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1708
- float min(float, float);
1709
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1710
- float2 min(float2, float2);
1711
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1712
- float3 min(float3, float3);
1713
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1714
- float4 min(float4, float4);
1715
-
1716
1776
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1717
1777
  int64_t min(int64_t, int64_t);
1718
1778
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
@@ -1731,6 +1791,15 @@ uint64_t3 min(uint64_t3, uint64_t3);
1731
1791
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1732
1792
  uint64_t4 min(uint64_t4, uint64_t4);
1733
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
+
1734
1803
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1735
1804
  double min(double, double);
1736
1805
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
@@ -1740,16 +1809,23 @@ double3 min(double3, double3);
1740
1809
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1741
1810
  double4 min(double4, double4);
1742
1811
 
1743
- //===----------------------------------------------------------------------===//
1744
- // normalize builtins
1745
- //===----------------------------------------------------------------------===//
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);
1746
1821
 
1747
1822
  /// \fn T normalize(T x)
1748
1823
  /// \brief Returns the normalized unit vector of the specified floating-point
1749
- /// vector. \param x [in] The vector of floats.
1824
+ /// vector.
1825
+ /// \param x [in] The vector of floats.
1750
1826
  ///
1751
1827
  /// Normalize is based on the following formula: x / length(x).
1752
-
1828
+ // normalize overloads
1753
1829
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1754
1830
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_normalize)
1755
1831
  half normalize(half);
@@ -1772,18 +1848,10 @@ float3 normalize(float3);
1772
1848
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_normalize)
1773
1849
  float4 normalize(float4);
1774
1850
 
1775
- //===----------------------------------------------------------------------===//
1776
- // or builtins
1777
- //===----------------------------------------------------------------------===//
1778
-
1779
1851
  /// \fn bool or(bool x, bool y)
1780
- /// \brief Logically ors two boolean vectors elementwise and produces a bool
1781
- /// vector output.
1782
-
1783
- // TODO: Clean up clang-format marker once we've resolved
1784
- // https://github.com/llvm/llvm-project/issues/127851
1785
- //
1786
- // clang-format off
1852
+ /// \brief Logically ors two boolean vectors or matrices elementwise and
1853
+ /// produces a bool vector or matrix output.
1854
+ // or overloads
1787
1855
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1788
1856
  bool or(bool, bool);
1789
1857
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
@@ -1792,17 +1860,42 @@ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1792
1860
  bool3 or(bool3, bool3);
1793
1861
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1794
1862
  bool4 or(bool4, bool4);
1795
- // clang-format on
1796
-
1797
- //===----------------------------------------------------------------------===//
1798
- // pow builtins
1799
- //===----------------------------------------------------------------------===//
1863
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1864
+ bool1x2 or(bool1x2, bool1x2);
1865
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1866
+ bool1x3 or(bool1x3, bool1x3);
1867
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1868
+ bool1x4 or(bool1x4, bool1x4);
1869
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1870
+ bool2x1 or(bool2x1, bool2x1);
1871
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1872
+ bool2x2 or(bool2x2, bool2x2);
1873
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1874
+ bool2x3 or(bool2x3, bool2x3);
1875
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1876
+ bool2x4 or(bool2x4, bool2x4);
1877
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1878
+ bool3x1 or(bool3x1, bool3x1);
1879
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1880
+ bool3x2 or(bool3x2, bool3x2);
1881
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1882
+ bool3x3 or(bool3x3, bool3x3);
1883
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1884
+ bool3x4 or(bool3x4, bool3x4);
1885
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1886
+ bool4x1 or(bool4x1, bool4x1);
1887
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1888
+ bool4x2 or(bool4x2, bool4x2);
1889
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1890
+ bool4x3 or(bool4x3, bool4x3);
1891
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_or)
1892
+ bool4x4 or(bool4x4, bool4x4);
1800
1893
 
1801
1894
  /// \fn T pow(T Val, T Pow)
1802
1895
  /// \brief Return the value \a Val, raised to the power \a Pow.
1803
1896
  /// \param Val The input value.
1804
1897
  /// \param Pow The specified power.
1805
-
1898
+ // pow overloads
1806
1899
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1807
1900
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1808
1901
  half pow(half, half);
@@ -1825,79 +1918,331 @@ float3 pow(float3, float3);
1825
1918
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1826
1919
  float4 pow(float4, float4);
1827
1920
 
1828
- //===----------------------------------------------------------------------===//
1829
- // reversebits builtins
1830
- //===----------------------------------------------------------------------===//
1831
-
1832
- /// \fn T reversebits(T Val)
1833
- /// \brief Return the value \a Val with the bit order reversed.
1921
+ /// \brief Returns the value from the lane diagonally opposite from the current lane in the quad.
1834
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);
1835
1936
 
1836
1937
  #ifdef __HLSL_ENABLE_16_BIT
1837
1938
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1838
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1839
- uint16_t reversebits(uint16_t);
1939
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1940
+ __attribute__((convergent)) int16_t QuadReadAcrossDiagonal(int16_t);
1840
1941
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1841
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1842
- uint16_t2 reversebits(uint16_t2);
1942
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1943
+ __attribute__((convergent)) int16_t2 QuadReadAcrossDiagonal(int16_t2);
1843
1944
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1844
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1845
- uint16_t3 reversebits(uint16_t3);
1945
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1946
+ __attribute__((convergent)) int16_t3 QuadReadAcrossDiagonal(int16_t3);
1846
1947
  _HLSL_AVAILABILITY(shadermodel, 6.2)
1847
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1848
- uint16_t4 reversebits(uint16_t4);
1849
- #endif
1948
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_diagonal)
1949
+ __attribute__((convergent)) int16_t4 QuadReadAcrossDiagonal(int16_t4);
1850
1950
 
1851
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1852
- uint reversebits(uint);
1853
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1854
- uint2 reversebits(uint2);
1855
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1856
- uint3 reversebits(uint3);
1857
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1858
- uint4 reversebits(uint4);
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
1859
1964
 
1860
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1861
- uint64_t reversebits(uint64_t);
1862
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1863
- uint64_t2 reversebits(uint64_t2);
1864
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1865
- uint64_t3 reversebits(uint64_t3);
1866
- _HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1867
- uint64_t4 reversebits(uint64_t4);
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.
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);
1868
2034
 
1869
- //===----------------------------------------------------------------------===//
1870
- // cross builtins
1871
- //===----------------------------------------------------------------------===//
2035
+ #ifdef __HLSL_ENABLE_16_BIT
2036
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2037
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2038
+ __attribute__((convergent)) int16_t QuadReadAcrossX(int16_t);
2039
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2040
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2041
+ __attribute__((convergent)) int16_t2 QuadReadAcrossX(int16_t2);
2042
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2043
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2044
+ __attribute__((convergent)) int16_t3 QuadReadAcrossX(int16_t3);
2045
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2046
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_quad_read_across_x)
2047
+ __attribute__((convergent)) int16_t4 QuadReadAcrossX(int16_t4);
1872
2048
 
1873
- /// \fn T cross(T x, T y)
1874
- /// \brief Returns the cross product of two floating-point, 3D vectors.
1875
- /// \param x [in] The first floating-point, 3D vector.
1876
- /// \param y [in] The second floating-point, 3D vector.
1877
- ///
1878
- /// Result is the cross product of x and y, i.e., the resulting
1879
- /// components are, in order :
1880
- /// x[1] * y[2] - y[1] * x[2]
1881
- /// x[2] * y[0] - y[2] * x[0]
1882
- /// x[0] * y[1] - y[0] * x[1]
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);
2061
+ #endif
1883
2062
 
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
1884
2120
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1885
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf16)
1886
- half3 cross(half3, half3);
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);
1887
2132
 
1888
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_crossf32)
1889
- float3 cross(float3, float3);
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);
2146
+
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
2160
+
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);
2214
+
2215
+ /// \fn T radians(T Val)
2216
+ /// \brief Converts the specified value from degrees to radians.
2217
+ // radians overloads
2218
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
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);
1890
2230
 
1891
- //===----------------------------------------------------------------------===//
1892
- // rcp builtins
1893
- //===----------------------------------------------------------------------===//
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);
1894
2239
 
1895
2240
  /// \fn T rcp(T x)
1896
2241
  /// \brief Calculates a fast, approximate, per-component reciprocal ie 1 / \a x.
1897
2242
  /// \param x The specified input value.
1898
2243
  ///
1899
2244
  /// The return value is the reciprocal of the \a x parameter.
1900
-
2245
+ // rcp overloads
1901
2246
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1902
2247
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1903
2248
  half rcp(half);
@@ -1929,42 +2274,73 @@ double3 rcp(double3);
1929
2274
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1930
2275
  double4 rcp(double4);
1931
2276
 
1932
- //===----------------------------------------------------------------------===//
1933
- // rsqrt builtins
1934
- //===----------------------------------------------------------------------===//
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);
1935
2294
 
1936
- /// \fn T rsqrt(T x)
1937
- /// \brief Returns the reciprocal of the square root of the specified value.
1938
- /// ie 1 / sqrt( \a x).
1939
- /// \param x The specified input value.
1940
- ///
1941
- /// 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
1942
2308
 
1943
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1944
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1945
- half rsqrt(half);
1946
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1947
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1948
- half2 rsqrt(half2);
1949
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1950
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1951
- half3 rsqrt(half3);
1952
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1953
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1954
- 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);
1955
2317
 
1956
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1957
- float rsqrt(float);
1958
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1959
- float2 rsqrt(float2);
1960
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1961
- float3 rsqrt(float3);
1962
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1963
- 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);
1964
2335
 
1965
- //===----------------------------------------------------------------------===//
1966
- // round builtins
1967
- //===----------------------------------------------------------------------===//
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);
1968
2344
 
1969
2345
  /// \fn T round(T x)
1970
2346
  /// \brief Rounds the specified value \a x to the nearest integer.
@@ -1973,7 +2349,7 @@ float4 rsqrt(float4);
1973
2349
  /// The return value is the \a x parameter, rounded to the nearest integer
1974
2350
  /// within a floating-point type. Halfway cases are
1975
2351
  /// rounded to the nearest even value.
1976
-
2352
+ // round overloads
1977
2353
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1978
2354
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1979
2355
  half round(half);
@@ -1996,14 +2372,40 @@ float3 round(float3);
1996
2372
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1997
2373
  float4 round(float4);
1998
2374
 
1999
- //===----------------------------------------------------------------------===//
2000
- // saturate builtins
2001
- //===----------------------------------------------------------------------===//
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);
2002
2403
 
2003
2404
  /// \fn T saturate(T Val)
2004
2405
  /// \brief Returns input value, \a Val, clamped within the range of 0.0f
2005
- /// to 1.0f. \param Val The input value.
2006
-
2406
+ /// to 1.0f.
2407
+ /// \param Val The input value.
2408
+ // saturate overloads
2007
2409
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2008
2410
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_saturate)
2009
2411
  half saturate(half);
@@ -2035,75 +2437,110 @@ double3 saturate(double3);
2035
2437
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_saturate)
2036
2438
  double4 saturate(double4);
2037
2439
 
2038
- //===----------------------------------------------------------------------===//
2039
- // select builtins
2040
- //===----------------------------------------------------------------------===//
2041
-
2042
- /// \fn T select(bool Cond, T TrueVal, T FalseVal)
2043
- /// \brief ternary operator.
2044
- /// \param Cond The Condition input value.
2045
- /// \param TrueVal The Value returned if Cond is true.
2046
- /// \param FalseVal The Value returned if Cond is false.
2047
-
2048
- template <typename T>
2049
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2050
- T select(bool, T, T);
2051
-
2052
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2053
- /// vector<T,Sz> FalseVals)
2054
- /// \brief ternary operator for vectors. All vectors must be the same size.
2055
- /// \param Conds The Condition input values.
2056
- /// \param TrueVals The vector values are chosen from when conditions are true.
2057
- /// \param FalseVals The vector values are chosen from when conditions are
2058
- /// false.
2059
-
2060
- template <typename T, int Sz>
2061
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2062
- vector<T, Sz> select(vector<bool, Sz>, vector<T, Sz>, vector<T, Sz>);
2063
-
2064
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, T TrueVal,
2065
- /// vector<T,Sz> FalseVals)
2066
- /// \brief ternary operator for vectors. All vectors must be the same size.
2067
- /// \param Conds The Condition input values.
2068
- /// \param TrueVal The scalar value to splat from when conditions are true.
2069
- /// \param FalseVals The vector values are chosen from when conditions are
2070
- /// false.
2071
-
2072
- template <typename T, int Sz>
2073
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2074
- vector<T, Sz> select(vector<bool, Sz>, T, vector<T, Sz>);
2075
-
2076
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2077
- /// T FalseVal)
2078
- /// \brief ternary operator for vectors. All vectors must be the same size.
2079
- /// \param Conds The Condition input values.
2080
- /// \param TrueVals The vector values are chosen from when conditions are true.
2081
- /// \param FalseVal The scalar value to splat from when conditions are false.
2082
-
2083
- template <typename T, int Sz>
2084
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2085
- vector<T, Sz> select(vector<bool, Sz>, vector<T, Sz>, T);
2086
-
2087
- /// \fn vector<T,Sz> select(vector<bool,Sz> Conds, vector<T,Sz> TrueVals,
2088
- /// T FalseVal)
2089
- /// \brief ternary operator for vectors. All vectors must be the same size.
2090
- /// \param Conds The Condition input values.
2091
- /// \param TrueVal The scalar value to splat from when conditions are true.
2092
- /// \param FalseVal The scalar value to splat from when conditions are false.
2093
-
2094
- template <typename T, int Sz>
2095
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_select)
2096
- __detail::enable_if_t<__detail::is_arithmetic<T>::Value, vector<T, Sz>> select(
2097
- vector<bool, Sz>, T, T);
2098
-
2099
- //===----------------------------------------------------------------------===//
2100
- // sin builtins
2101
- //===----------------------------------------------------------------------===//
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.
2443
+ /// \param Val The input value.
2444
+ // sign overloads
2445
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2446
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2447
+ int sign(half);
2448
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2449
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2450
+ int2 sign(half2);
2451
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2452
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2453
+ int3 sign(half3);
2454
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2455
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2456
+ int4 sign(half4);
2457
+
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);
2102
2539
 
2103
2540
  /// \fn T sin(T Val)
2104
2541
  /// \brief Returns the sine of the input value, \a Val.
2105
2542
  /// \param Val The input value.
2106
-
2543
+ // sin overloads
2107
2544
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2108
2545
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2109
2546
  half sin(half);
@@ -2126,14 +2563,10 @@ float3 sin(float3);
2126
2563
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
2127
2564
  float4 sin(float4);
2128
2565
 
2129
- //===----------------------------------------------------------------------===//
2130
- // sinh builtins
2131
- //===----------------------------------------------------------------------===//
2132
-
2133
2566
  /// \fn T sinh(T Val)
2134
2567
  /// \brief Returns the hyperbolic sine of the input value, \a Val.
2135
2568
  /// \param Val The input value.
2136
-
2569
+ // sinh overloads
2137
2570
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2138
2571
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2139
2572
  half sinh(half);
@@ -2156,14 +2589,10 @@ float3 sinh(float3);
2156
2589
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sinh)
2157
2590
  float4 sinh(float4);
2158
2591
 
2159
- //===----------------------------------------------------------------------===//
2160
- // sqrt builtins
2161
- //===----------------------------------------------------------------------===//
2162
-
2163
2592
  /// \fn T sqrt(T Val)
2164
2593
  /// \brief Returns the square root of the input value, \a Val.
2165
2594
  /// \param Val The input value.
2166
-
2595
+ // sqrt overloads
2167
2596
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2168
2597
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
2169
2598
  half sqrt(half);
@@ -2186,17 +2615,14 @@ float3 sqrt(float3);
2186
2615
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
2187
2616
  float4 sqrt(float4);
2188
2617
 
2189
- //===----------------------------------------------------------------------===//
2190
- // step builtins
2191
- //===----------------------------------------------------------------------===//
2192
-
2193
- /// \fn T step(T x, T y)
2618
+ /// \fn T step(T y, T x)
2194
2619
  /// \brief Returns 1 if the x parameter is greater than or equal to the y
2195
- /// parameter; otherwise, 0. vector. \param x [in] The first floating-point
2196
- /// value to compare. \param y [in] The first 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.
2197
2623
  ///
2198
2624
  /// Step is based on the following formula: (x >= y) ? 1 : 0
2199
-
2625
+ // step overloads
2200
2626
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2201
2627
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_step)
2202
2628
  half step(half, half);
@@ -2219,14 +2645,10 @@ float3 step(float3, float3);
2219
2645
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_step)
2220
2646
  float4 step(float4, float4);
2221
2647
 
2222
- //===----------------------------------------------------------------------===//
2223
- // tan builtins
2224
- //===----------------------------------------------------------------------===//
2225
-
2226
2648
  /// \fn T tan(T Val)
2227
2649
  /// \brief Returns the tangent of the input value, \a Val.
2228
2650
  /// \param Val The input value.
2229
-
2651
+ // tan overloads
2230
2652
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2231
2653
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
2232
2654
  half tan(half);
@@ -2249,14 +2671,10 @@ float3 tan(float3);
2249
2671
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
2250
2672
  float4 tan(float4);
2251
2673
 
2252
- //===----------------------------------------------------------------------===//
2253
- // tanh builtins
2254
- //===----------------------------------------------------------------------===//
2255
-
2256
2674
  /// \fn T tanh(T Val)
2257
2675
  /// \brief Returns the hyperbolic tangent of the input value, \a Val.
2258
2676
  /// \param Val The input value.
2259
-
2677
+ // tanh overloads
2260
2678
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2261
2679
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
2262
2680
  half tanh(half);
@@ -2279,14 +2697,10 @@ float3 tanh(float3);
2279
2697
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_tanh)
2280
2698
  float4 tanh(float4);
2281
2699
 
2282
- //===----------------------------------------------------------------------===//
2283
- // trunc builtins
2284
- //===----------------------------------------------------------------------===//
2285
-
2286
2700
  /// \fn T trunc(T Val)
2287
2701
  /// \brief Returns the truncated integer value of the input value, \a Val.
2288
2702
  /// \param Val The input value.
2289
-
2703
+ // trunc overloads
2290
2704
  _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2291
2705
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
2292
2706
  half trunc(half);
@@ -2309,503 +2723,1147 @@ float3 trunc(float3);
2309
2723
  _HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
2310
2724
  float4 trunc(float4);
2311
2725
 
2312
- //===----------------------------------------------------------------------===//
2313
- // Wave* builtins
2314
- //===----------------------------------------------------------------------===//
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);
2315
2744
 
2316
- /// \brief Returns true if the expression is true in all active lanes in the
2317
- /// current wave.
2318
- ///
2319
- /// \param Val The boolean expression to evaluate.
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);
2850
+
2851
+ /// \brief Returns true if the expression is true in all active lanes in the
2852
+ /// current wave.
2853
+ /// \param Val The boolean expression to evaluate.
2320
2854
  /// \return True if the expression is true in all lanes.
2855
+ // WaveActiveAllTrue overloads
2321
2856
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2322
2857
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_all_true)
2323
- __attribute__((convergent)) bool WaveActiveAllTrue(bool Val);
2858
+ __attribute__((convergent)) bool WaveActiveAllTrue(bool);
2324
2859
 
2325
2860
  /// \brief Returns true if the expression is true in any active lane in the
2326
2861
  /// current wave.
2327
- ///
2328
2862
  /// \param Val The boolean expression to evaluate.
2329
2863
  /// \return True if the expression is true in any lane.
2864
+ // WaveActiveAnyTrue overloads
2330
2865
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2331
2866
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_any_true)
2332
- __attribute__((convergent)) bool WaveActiveAnyTrue(bool Val);
2867
+ __attribute__((convergent)) bool WaveActiveAnyTrue(bool);
2333
2868
 
2334
- /// \brief Counts the number of boolean variables which evaluate to true across
2335
- /// all active lanes in the current wave.
2336
- ///
2337
- /// \param Val The input boolean value.
2338
- /// \return The number of lanes for which the boolean variable evaluates to
2339
- /// true, across all active lanes in the current wave.
2869
+ /// \brief Returns a uint4 containing a bitmask of the evaluation of the
2870
+ /// boolean expression for all active lanes in the current wave.
2871
+ /// The least-significant bit corresponds to the lane with index zero.
2872
+ /// The bits corresponding to inactive lanes will be zero. The bits that
2873
+ /// are greater than or equal to WaveGetLaneCount will be zero.
2874
+ /// \param Val The boolean expression to evaluate.
2875
+ /// \return uint4 bitmask
2876
+ // WaveActiveBallot overloads
2340
2877
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2341
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
2342
- __attribute__((convergent)) uint WaveActiveCountBits(bool Val);
2878
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_ballot)
2879
+ __attribute__((convergent)) uint4 WaveActiveBallot(bool);
2343
2880
 
2344
- /// \brief Returns the index of the current lane within the current wave.
2881
+ // WaveActiveBitAnd overloads
2345
2882
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2346
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_index)
2347
- __attribute__((convergent)) uint WaveGetLaneIndex();
2348
-
2883
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2884
+ __attribute__((convergent)) uint WaveActiveBitAnd(uint);
2349
2885
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2350
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_is_first_lane)
2351
- __attribute__((convergent)) bool WaveIsFirstLane();
2352
-
2886
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2887
+ __attribute__((convergent)) uint2 WaveActiveBitAnd(uint2);
2353
2888
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2354
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_count)
2355
- __attribute__((convergent)) uint WaveGetLaneCount();
2356
-
2357
- //===----------------------------------------------------------------------===//
2358
- // WaveReadLaneAt builtins
2359
- //===----------------------------------------------------------------------===//
2360
-
2361
- // \brief Returns the value of the expression for the given lane index within
2362
- // the specified wave.
2363
-
2364
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2365
- __attribute__((convergent)) bool WaveReadLaneAt(bool, uint32_t);
2366
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2367
- __attribute__((convergent)) bool2 WaveReadLaneAt(bool2, uint32_t);
2368
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2369
- __attribute__((convergent)) bool3 WaveReadLaneAt(bool3, uint32_t);
2370
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2371
- __attribute__((convergent)) bool4 WaveReadLaneAt(bool4, uint32_t);
2889
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2890
+ __attribute__((convergent)) uint3 WaveActiveBitAnd(uint3);
2891
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2892
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_and)
2893
+ __attribute__((convergent)) uint4 WaveActiveBitAnd(uint4);
2372
2894
 
2373
- #ifdef __HLSL_ENABLE_16_BIT
2374
2895
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2375
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2376
- __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);
2377
2898
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2378
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2379
- __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);
2380
2901
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2381
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2382
- __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);
2383
2904
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2384
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2385
- __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);
2386
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
2387
2912
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2388
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2389
- __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);
2390
2915
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2391
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2392
- __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);
2393
2918
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2394
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2395
- __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);
2396
2921
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2397
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2398
- __attribute__((convergent)) uint16_t4 WaveReadLaneAt(uint16_t4, uint32_t);
2399
- #endif
2400
-
2401
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2402
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2403
- __attribute__((convergent)) half WaveReadLaneAt(half, uint32_t);
2404
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2405
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2406
- __attribute__((convergent)) half2 WaveReadLaneAt(half2, uint32_t);
2407
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2408
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2409
- __attribute__((convergent)) half3 WaveReadLaneAt(half3, uint32_t);
2410
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2411
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2412
- __attribute__((convergent)) half4 WaveReadLaneAt(half4, uint32_t);
2413
-
2414
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2415
- __attribute__((convergent)) int WaveReadLaneAt(int, uint32_t);
2416
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2417
- __attribute__((convergent)) int2 WaveReadLaneAt(int2, uint32_t);
2418
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2419
- __attribute__((convergent)) int3 WaveReadLaneAt(int3, uint32_t);
2420
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2421
- __attribute__((convergent)) int4 WaveReadLaneAt(int4, uint32_t);
2422
-
2423
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2424
- __attribute__((convergent)) uint WaveReadLaneAt(uint, uint32_t);
2425
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2426
- __attribute__((convergent)) uint2 WaveReadLaneAt(uint2, uint32_t);
2427
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2428
- __attribute__((convergent)) uint3 WaveReadLaneAt(uint3, uint32_t);
2429
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2430
- __attribute__((convergent)) uint4 WaveReadLaneAt(uint4, uint32_t);
2922
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_bit_or)
2923
+ __attribute__((convergent)) uint4 WaveActiveBitOr(uint4);
2431
2924
 
2432
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2433
- __attribute__((convergent)) float WaveReadLaneAt(float, uint32_t);
2434
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2435
- __attribute__((convergent)) float2 WaveReadLaneAt(float2, uint32_t);
2436
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2437
- __attribute__((convergent)) float3 WaveReadLaneAt(float3, uint32_t);
2438
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2439
- __attribute__((convergent)) float4 WaveReadLaneAt(float4, uint32_t);
2440
-
2441
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2442
- __attribute__((convergent)) int64_t WaveReadLaneAt(int64_t, uint32_t);
2443
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2444
- __attribute__((convergent)) int64_t2 WaveReadLaneAt(int64_t2, uint32_t);
2445
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2446
- __attribute__((convergent)) int64_t3 WaveReadLaneAt(int64_t3, uint32_t);
2447
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2448
- __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);
2449
2937
 
2450
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2451
- __attribute__((convergent)) uint64_t WaveReadLaneAt(uint64_t, uint32_t);
2452
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2453
- __attribute__((convergent)) uint64_t2 WaveReadLaneAt(uint64_t2, uint32_t);
2454
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2455
- __attribute__((convergent)) uint64_t3 WaveReadLaneAt(uint64_t3, uint32_t);
2456
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2457
- __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);
2458
2951
 
2459
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2460
- __attribute__((convergent)) double WaveReadLaneAt(double, uint32_t);
2461
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2462
- __attribute__((convergent)) double2 WaveReadLaneAt(double2, uint32_t);
2463
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2464
- __attribute__((convergent)) double3 WaveReadLaneAt(double3, uint32_t);
2465
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
2466
- __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);
2467
2964
 
2468
- //===----------------------------------------------------------------------===//
2469
- // WaveActiveMax builtins
2470
- //===----------------------------------------------------------------------===//
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);
2471
2974
 
2472
- _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)
2473
2979
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2474
2980
  __attribute__((convergent)) half WaveActiveMax(half);
2475
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2981
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2476
2982
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2477
2983
  __attribute__((convergent)) half2 WaveActiveMax(half2);
2478
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2984
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2479
2985
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2480
2986
  __attribute__((convergent)) half3 WaveActiveMax(half3);
2481
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2987
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
2482
2988
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2483
2989
  __attribute__((convergent)) half4 WaveActiveMax(half4);
2484
2990
 
2485
2991
  #ifdef __HLSL_ENABLE_16_BIT
2486
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2992
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2487
2993
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2488
2994
  __attribute__((convergent)) int16_t WaveActiveMax(int16_t);
2489
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2995
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2490
2996
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2491
2997
  __attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2492
- _HLSL_AVAILABILITY(shadermodel, 6.0)
2998
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2493
2999
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2494
3000
  __attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2495
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3001
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2496
3002
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2497
3003
  __attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2498
3004
 
2499
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3005
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2500
3006
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2501
3007
  __attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2502
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3008
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2503
3009
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2504
3010
  __attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2505
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3011
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2506
3012
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2507
3013
  __attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2508
- _HLSL_AVAILABILITY(shadermodel, 6.0)
3014
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
2509
3015
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2510
3016
  __attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2511
3017
  #endif
2512
3018
 
3019
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2513
3020
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2514
3021
  __attribute__((convergent)) int WaveActiveMax(int);
3022
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2515
3023
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2516
3024
  __attribute__((convergent)) int2 WaveActiveMax(int2);
3025
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2517
3026
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2518
3027
  __attribute__((convergent)) int3 WaveActiveMax(int3);
3028
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2519
3029
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2520
3030
  __attribute__((convergent)) int4 WaveActiveMax(int4);
2521
3031
 
3032
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2522
3033
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2523
3034
  __attribute__((convergent)) uint WaveActiveMax(uint);
3035
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2524
3036
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2525
3037
  __attribute__((convergent)) uint2 WaveActiveMax(uint2);
3038
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2526
3039
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2527
3040
  __attribute__((convergent)) uint3 WaveActiveMax(uint3);
3041
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2528
3042
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2529
3043
  __attribute__((convergent)) uint4 WaveActiveMax(uint4);
2530
3044
 
3045
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2531
3046
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2532
3047
  __attribute__((convergent)) int64_t WaveActiveMax(int64_t);
3048
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2533
3049
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2534
3050
  __attribute__((convergent)) int64_t2 WaveActiveMax(int64_t2);
3051
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2535
3052
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2536
3053
  __attribute__((convergent)) int64_t3 WaveActiveMax(int64_t3);
3054
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2537
3055
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2538
3056
  __attribute__((convergent)) int64_t4 WaveActiveMax(int64_t4);
2539
3057
 
3058
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2540
3059
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2541
3060
  __attribute__((convergent)) uint64_t WaveActiveMax(uint64_t);
3061
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2542
3062
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2543
3063
  __attribute__((convergent)) uint64_t2 WaveActiveMax(uint64_t2);
3064
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2544
3065
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2545
3066
  __attribute__((convergent)) uint64_t3 WaveActiveMax(uint64_t3);
3067
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2546
3068
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2547
3069
  __attribute__((convergent)) uint64_t4 WaveActiveMax(uint64_t4);
2548
3070
 
3071
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2549
3072
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2550
3073
  __attribute__((convergent)) float WaveActiveMax(float);
3074
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2551
3075
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2552
3076
  __attribute__((convergent)) float2 WaveActiveMax(float2);
3077
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2553
3078
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2554
3079
  __attribute__((convergent)) float3 WaveActiveMax(float3);
3080
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2555
3081
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2556
3082
  __attribute__((convergent)) float4 WaveActiveMax(float4);
2557
3083
 
3084
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2558
3085
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2559
3086
  __attribute__((convergent)) double WaveActiveMax(double);
3087
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2560
3088
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2561
3089
  __attribute__((convergent)) double2 WaveActiveMax(double2);
3090
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2562
3091
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2563
3092
  __attribute__((convergent)) double3 WaveActiveMax(double3);
3093
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2564
3094
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_max)
2565
3095
  __attribute__((convergent)) double4 WaveActiveMax(double4);
2566
3096
 
2567
- //===----------------------------------------------------------------------===//
2568
- // WaveActiveSum builtins
2569
- //===----------------------------------------------------------------------===//
2570
-
2571
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2572
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2573
- __attribute__((convergent)) half WaveActiveSum(half);
2574
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2575
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2576
- __attribute__((convergent)) half2 WaveActiveSum(half2);
2577
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2578
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2579
- __attribute__((convergent)) half3 WaveActiveSum(half3);
2580
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.0)
2581
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2582
- __attribute__((convergent)) half4 WaveActiveSum(half4);
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)
3101
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3102
+ __attribute__((convergent)) half WaveActiveMin(half);
3103
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3104
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3105
+ __attribute__((convergent)) half2 WaveActiveMin(half2);
3106
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3107
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3108
+ __attribute__((convergent)) half3 WaveActiveMin(half3);
3109
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3110
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3111
+ __attribute__((convergent)) half4 WaveActiveMin(half4);
2583
3112
 
2584
3113
  #ifdef __HLSL_ENABLE_16_BIT
3114
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3115
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3116
+ __attribute__((convergent)) int16_t WaveActiveMin(int16_t);
3117
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3118
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3119
+ __attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
3120
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3121
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3122
+ __attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
3123
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3124
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3125
+ __attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
3126
+
3127
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3128
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3129
+ __attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
3130
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3131
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3132
+ __attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
3133
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3134
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3135
+ __attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
3136
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3137
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3138
+ __attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
3139
+ #endif
3140
+
2585
3141
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2586
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2587
- __attribute__((convergent)) int16_t WaveActiveSum(int16_t);
3142
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3143
+ __attribute__((convergent)) int WaveActiveMin(int);
2588
3144
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2589
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2590
- __attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
3145
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3146
+ __attribute__((convergent)) int2 WaveActiveMin(int2);
2591
3147
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2592
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2593
- __attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
3148
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3149
+ __attribute__((convergent)) int3 WaveActiveMin(int3);
2594
3150
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2595
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2596
- __attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
3151
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3152
+ __attribute__((convergent)) int4 WaveActiveMin(int4);
2597
3153
 
2598
3154
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2599
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2600
- __attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
3155
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3156
+ __attribute__((convergent)) uint WaveActiveMin(uint);
2601
3157
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2602
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2603
- __attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
3158
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3159
+ __attribute__((convergent)) uint2 WaveActiveMin(uint2);
2604
3160
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2605
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2606
- __attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
3161
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3162
+ __attribute__((convergent)) uint3 WaveActiveMin(uint3);
2607
3163
  _HLSL_AVAILABILITY(shadermodel, 6.0)
2608
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2609
- __attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2610
- #endif
2611
-
2612
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2613
- __attribute__((convergent)) int WaveActiveSum(int);
2614
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2615
- __attribute__((convergent)) int2 WaveActiveSum(int2);
2616
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2617
- __attribute__((convergent)) int3 WaveActiveSum(int3);
2618
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2619
- __attribute__((convergent)) int4 WaveActiveSum(int4);
3164
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3165
+ __attribute__((convergent)) uint4 WaveActiveMin(uint4);
2620
3166
 
2621
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2622
- __attribute__((convergent)) uint WaveActiveSum(uint);
2623
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2624
- __attribute__((convergent)) uint2 WaveActiveSum(uint2);
2625
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2626
- __attribute__((convergent)) uint3 WaveActiveSum(uint3);
2627
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2628
- __attribute__((convergent)) uint4 WaveActiveSum(uint4);
3167
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3168
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3169
+ __attribute__((convergent)) int64_t WaveActiveMin(int64_t);
3170
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3171
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3172
+ __attribute__((convergent)) int64_t2 WaveActiveMin(int64_t2);
3173
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3174
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3175
+ __attribute__((convergent)) int64_t3 WaveActiveMin(int64_t3);
3176
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3177
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3178
+ __attribute__((convergent)) int64_t4 WaveActiveMin(int64_t4);
2629
3179
 
2630
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2631
- __attribute__((convergent)) int64_t WaveActiveSum(int64_t);
2632
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2633
- __attribute__((convergent)) int64_t2 WaveActiveSum(int64_t2);
2634
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2635
- __attribute__((convergent)) int64_t3 WaveActiveSum(int64_t3);
2636
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2637
- __attribute__((convergent)) int64_t4 WaveActiveSum(int64_t4);
3180
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3181
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3182
+ __attribute__((convergent)) uint64_t WaveActiveMin(uint64_t);
3183
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3184
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3185
+ __attribute__((convergent)) uint64_t2 WaveActiveMin(uint64_t2);
3186
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3187
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3188
+ __attribute__((convergent)) uint64_t3 WaveActiveMin(uint64_t3);
3189
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3190
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3191
+ __attribute__((convergent)) uint64_t4 WaveActiveMin(uint64_t4);
2638
3192
 
2639
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2640
- __attribute__((convergent)) uint64_t WaveActiveSum(uint64_t);
2641
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2642
- __attribute__((convergent)) uint64_t2 WaveActiveSum(uint64_t2);
2643
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2644
- __attribute__((convergent)) uint64_t3 WaveActiveSum(uint64_t3);
2645
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2646
- __attribute__((convergent)) uint64_t4 WaveActiveSum(uint64_t4);
3193
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3194
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3195
+ __attribute__((convergent)) float WaveActiveMin(float);
3196
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3197
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3198
+ __attribute__((convergent)) float2 WaveActiveMin(float2);
3199
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3200
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3201
+ __attribute__((convergent)) float3 WaveActiveMin(float3);
3202
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3203
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3204
+ __attribute__((convergent)) float4 WaveActiveMin(float4);
2647
3205
 
3206
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3207
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3208
+ __attribute__((convergent)) double WaveActiveMin(double);
3209
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3210
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3211
+ __attribute__((convergent)) double2 WaveActiveMin(double2);
3212
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3213
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3214
+ __attribute__((convergent)) double3 WaveActiveMin(double3);
3215
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3216
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_min)
3217
+ __attribute__((convergent)) double4 WaveActiveMin(double4);
3218
+
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);
3340
+
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)
3345
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3346
+ __attribute__((convergent)) half WaveActiveSum(half);
3347
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3348
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3349
+ __attribute__((convergent)) half2 WaveActiveSum(half2);
3350
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3351
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3352
+ __attribute__((convergent)) half3 WaveActiveSum(half3);
3353
+ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2, 6.0)
3354
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3355
+ __attribute__((convergent)) half4 WaveActiveSum(half4);
3356
+
3357
+ #ifdef __HLSL_ENABLE_16_BIT
3358
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3359
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3360
+ __attribute__((convergent)) int16_t WaveActiveSum(int16_t);
3361
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3362
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3363
+ __attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
3364
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3365
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3366
+ __attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
3367
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3368
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3369
+ __attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
3370
+
3371
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3372
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3373
+ __attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
3374
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3375
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3376
+ __attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
3377
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3378
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3379
+ __attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
3380
+ _HLSL_AVAILABILITY(shadermodel, 6.2)
3381
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3382
+ __attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
3383
+ #endif
3384
+
3385
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3386
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3387
+ __attribute__((convergent)) int WaveActiveSum(int);
3388
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3389
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3390
+ __attribute__((convergent)) int2 WaveActiveSum(int2);
3391
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3392
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3393
+ __attribute__((convergent)) int3 WaveActiveSum(int3);
3394
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3395
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3396
+ __attribute__((convergent)) int4 WaveActiveSum(int4);
3397
+
3398
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3399
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3400
+ __attribute__((convergent)) uint WaveActiveSum(uint);
3401
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3402
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3403
+ __attribute__((convergent)) uint2 WaveActiveSum(uint2);
3404
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3405
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3406
+ __attribute__((convergent)) uint3 WaveActiveSum(uint3);
3407
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3408
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3409
+ __attribute__((convergent)) uint4 WaveActiveSum(uint4);
3410
+
3411
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3412
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3413
+ __attribute__((convergent)) int64_t WaveActiveSum(int64_t);
3414
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3415
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3416
+ __attribute__((convergent)) int64_t2 WaveActiveSum(int64_t2);
3417
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3418
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3419
+ __attribute__((convergent)) int64_t3 WaveActiveSum(int64_t3);
3420
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3421
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3422
+ __attribute__((convergent)) int64_t4 WaveActiveSum(int64_t4);
3423
+
3424
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3425
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3426
+ __attribute__((convergent)) uint64_t WaveActiveSum(uint64_t);
3427
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3428
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3429
+ __attribute__((convergent)) uint64_t2 WaveActiveSum(uint64_t2);
3430
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3431
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3432
+ __attribute__((convergent)) uint64_t3 WaveActiveSum(uint64_t3);
3433
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
3434
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
3435
+ __attribute__((convergent)) uint64_t4 WaveActiveSum(uint64_t4);
3436
+
3437
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2648
3438
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2649
3439
  __attribute__((convergent)) float WaveActiveSum(float);
3440
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2650
3441
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2651
3442
  __attribute__((convergent)) float2 WaveActiveSum(float2);
3443
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2652
3444
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2653
3445
  __attribute__((convergent)) float3 WaveActiveSum(float3);
3446
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2654
3447
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2655
3448
  __attribute__((convergent)) float4 WaveActiveSum(float4);
2656
3449
 
3450
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2657
3451
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2658
3452
  __attribute__((convergent)) double WaveActiveSum(double);
3453
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2659
3454
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2660
3455
  __attribute__((convergent)) double2 WaveActiveSum(double2);
3456
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2661
3457
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2662
3458
  __attribute__((convergent)) double3 WaveActiveSum(double3);
3459
+ _HLSL_AVAILABILITY(shadermodel, 6.0)
2663
3460
  _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_sum)
2664
3461
  __attribute__((convergent)) double4 WaveActiveSum(double4);
2665
3462
 
2666
- //===----------------------------------------------------------------------===//
2667
- // sign builtins
2668
- //===----------------------------------------------------------------------===//
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();
2669
3468
 
2670
- /// \fn T sign(T Val)
2671
- /// \brief Returns -1 if \a Val is less than zero; 0 if \a Val equals zero; and
2672
- /// 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);
2673
3504
 
2674
3505
  #ifdef __HLSL_ENABLE_16_BIT
2675
3506
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2676
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2677
- int sign(int16_t);
3507
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3508
+ __attribute__((convergent)) int16_t WavePrefixProduct(int16_t);
2678
3509
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2679
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2680
- int2 sign(int16_t2);
3510
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3511
+ __attribute__((convergent)) int16_t2 WavePrefixProduct(int16_t2);
2681
3512
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2682
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2683
- int3 sign(int16_t3);
3513
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3514
+ __attribute__((convergent)) int16_t3 WavePrefixProduct(int16_t3);
2684
3515
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2685
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2686
- int4 sign(int16_t4);
3516
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3517
+ __attribute__((convergent)) int16_t4 WavePrefixProduct(int16_t4);
2687
3518
 
2688
3519
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2689
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2690
- int sign(uint16_t);
3520
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3521
+ __attribute__((convergent)) uint16_t WavePrefixProduct(uint16_t);
2691
3522
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2692
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2693
- int2 sign(uint16_t2);
3523
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3524
+ __attribute__((convergent)) uint16_t2 WavePrefixProduct(uint16_t2);
2694
3525
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2695
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2696
- int3 sign(uint16_t3);
3526
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3527
+ __attribute__((convergent)) uint16_t3 WavePrefixProduct(uint16_t3);
2697
3528
  _HLSL_AVAILABILITY(shadermodel, 6.2)
2698
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2699
- int4 sign(uint16_t4);
3529
+ _HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_prefix_product)
3530
+ __attribute__((convergent)) uint16_t4 WavePrefixProduct(uint16_t4);
2700
3531
  #endif
2701
3532
 
2702
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2703
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2704
- int sign(half);
2705
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2706
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2707
- int2 sign(half2);
2708
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2709
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2710
- int3 sign(half3);
2711
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2712
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2713
- int4 sign(half4);
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);
2714
3545
 
2715
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2716
- int sign(int);
2717
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2718
- int2 sign(int2);
2719
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2720
- int3 sign(int3);
2721
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2722
- int4 sign(int4);
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);
2723
3558
 
2724
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2725
- int sign(uint);
2726
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2727
- int2 sign(uint2);
2728
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2729
- int3 sign(uint3);
2730
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2731
- int4 sign(uint4);
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);
2732
3571
 
2733
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2734
- int sign(float);
2735
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2736
- int2 sign(float2);
2737
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2738
- int3 sign(float3);
2739
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2740
- int4 sign(float4);
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);
2741
3584
 
2742
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2743
- int sign(int64_t);
2744
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2745
- int2 sign(int64_t2);
2746
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2747
- int3 sign(int64_t3);
2748
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2749
- int4 sign(int64_t4);
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);
2750
3597
 
2751
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2752
- int sign(uint64_t);
2753
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2754
- int2 sign(uint64_t2);
2755
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2756
- int3 sign(uint64_t3);
2757
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2758
- int4 sign(uint64_t4);
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);
2759
3610
 
2760
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2761
- int sign(double);
2762
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2763
- int2 sign(double2);
2764
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2765
- int3 sign(double3);
2766
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_sign)
2767
- int4 sign(double4);
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);
2768
3626
 
2769
- //===----------------------------------------------------------------------===//
2770
- // radians builtins
2771
- //===----------------------------------------------------------------------===//
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);
2772
3640
 
2773
- /// \fn T radians(T Val)
2774
- /// \brief Converts the specified value from degrees to radians.
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
2775
3654
 
2776
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2777
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2778
- half radians(half);
2779
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2780
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2781
- half2 radians(half2);
2782
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2783
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2784
- half3 radians(half3);
2785
- _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
2786
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2787
- half4 radians(half4);
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);
2788
3667
 
2789
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2790
- float radians(float);
2791
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2792
- float2 radians(float2);
2793
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2794
- float3 radians(float3);
2795
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_radians)
2796
- float4 radians(float4);
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);
2797
3680
 
2798
- //===----------------------------------------------------------------------===//
2799
- // GroupMemoryBarrierWithGroupSync builtins
2800
- //===----------------------------------------------------------------------===//
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);
2801
3693
 
2802
- /// \fn void GroupMemoryBarrierWithGroupSync(void)
2803
- /// \brief Blocks execution of all threads in a group until all group shared
2804
- /// accesses have been completed and all threads in the group have reached this
2805
- /// call.
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);
2806
3706
 
2807
- _HLSL_BUILTIN_ALIAS(__builtin_hlsl_group_memory_barrier_with_group_sync)
2808
- void GroupMemoryBarrierWithGroupSync(void);
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);
3719
+
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);
3732
+
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);
3750
+
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);
3764
+
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
3778
+
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);
3791
+
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);
3804
+
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);
3817
+
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);
3830
+
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);
3843
+
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);
3856
+
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);
2809
3869
 
2810
- } // namespace hlsl
2811
- #endif //_HLSL_HLSL_ALIAS_INTRINSICS_H_