[clang] [llvm] [HLSL] Implement `WaveReadLaneAt` intrinsic (PR #111010)
    Chris B via llvm-commits 
    llvm-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 llvm-commits
mailing list