[clang] [llvm] [HLSL] Implement `WaveReadLaneAt` intrinsic (PR #111010)
Chris B via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 7 14:55:59 PDT 2024
================
@@ -2015,6 +2015,13 @@ _HLSL_AVAILABILITY(shadermodel, 6.0)
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_is_first_lane)
__attribute__((convergent)) bool WaveIsFirstLane();
+// \brief Returns the value of the expression for the given lane index within
+// the specified wave.
+template <typename T>
+_HLSL_AVAILABILITY(shadermodel, 6.0)
+_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_read_lane_at)
+ __attribute__((convergent)) T WaveReadLaneAt(T, int32_t);
----------------
llvm-beanz wrote:
> Fwiw, this is also true for the `select` intrinsic and we use the arbitrary type template.
`select` is a little different, there are two overloads of it, one for numeric types and one for samplers. Really it should have worked with any type, but gen_intrin_main isn't expressive enough.
https://github.com/llvm/llvm-project/pull/111010
More information about the cfe-commits
mailing list