[clang] [llvm] [HLSL] Implement WaveActiveAnyTrue intrinsic (PR #115902)

Finn Plummer via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 19 13:26:45 PST 2024


================
@@ -94,6 +94,7 @@ def int_dx_umad : DefaultAttrsIntrinsic<[llvm_anyint_ty], [LLVMMatchType<0>, LLV
 def int_dx_normalize : DefaultAttrsIntrinsic<[LLVMMatchType<0>], [llvm_anyfloat_ty], [IntrNoMem]>;
 def int_dx_rsqrt  : DefaultAttrsIntrinsic<[llvm_anyfloat_ty], [LLVMMatchType<0>], [IntrNoMem]>;
 def int_dx_wave_active_countbits : DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i1_ty], [IntrConvergent, IntrNoMem]>;
+def int_dx_wave_any : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_i1_ty], [IntrConvergent, IntrNoMem]>;
----------------
inbelic wrote:

Not quite, we can keep the `IntrNoMem` on the dx intrinsics (assuming it correctly describes memory access). We [require|can use] them in certain passes, for instance the scalarizer. Then they are discarded when lowering to the DXIL op, so they don't correlate to the dxil op attributes.

I will audit that they are added correctly, in this case I think `IntrNoMem` is correct.

https://github.com/llvm/llvm-project/pull/115902


More information about the llvm-commits mailing list