================
@@ -19108,6 +19108,21 @@ case Builtin::BI__builtin_hlsl_elementwise_isinf: {
/*ReturnType=*/Op0->getType(), CGM.getHLSLRuntime().getStepIntrinsic(),
ArrayRef<Value *>{Op0, Op1}, nullptr, "hlsl.step");
}
+ case Builtin::BI__builtin_hlsl_wave_active_any_true: {
+ IntegerType *Int1Ty =
+ llvm::Type::getInt1Ty(CGM.getTypes().getLLVMContext());
+ Value *Op = EmitScalarExpr(E->getArg(0));
+ assert(Op->getType() == Int1Ty &&
+ "wave_active_any_true operand must be a bool");
+
+ llvm::FunctionType *FT =
----------------
V-FEXrt wrote:
I originally had something like this
```hlsl
case Builtin::BI__builtin_hlsl_wave_active_any_true: {
Value *Op = EmitScalarExpr(E->getArg(0));
return Builder.CreateIntrinsic(
Op->getType(),
CGM.getHLSLRuntime().getWaveActiveAnyTrueIntrinsic(),
Op, nullptr, "hlsl.wave.activeanytrue"
);
}
```
but that was failing with a convergence error `Cannot mix controlled and
uncontrolled convergence in the same function.`. I also though I tried
`Intrinsic::getOrInsertDeclaration` but I can't remember what happened with
that. I'll give it another try
https://github.com/llvm/llvm-project/pull/115902
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits