================
@@ -4197,6 +4197,29 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl
GD, unsigned BuiltinID,
case Builtin::BI__builtin_reduce_minimum:
return RValue::get(emitBuiltinWithOneOverloadedType<1>(
*this, E, Intrinsic::vector_reduce_fminimum, "rdx.minimum"));
+ case Builtin::BI__builtin_reduce_addf:
+ case Builtin::BI__builtin_ordered_reduce_addf: {
+ llvm::Value *Vector = EmitScalarExpr(E->getArg(0));
+ llvm::Type *ScalarTy = Vector->getType()->getScalarType();
+ llvm::Value *StartValue = nullptr;
+ if (E->getNumArgs() == 2)
+ StartValue = Builder.CreateFPCast(EmitScalarExpr(E->getArg(1)),
ScalarTy);
+ llvm::Value *Args[] = {/*start_value=*/StartValue
+ ? StartValue
+ : llvm::ConstantFP::get(ScalarTy, -0.0F),
+ /*vector=*/Vector};
+ llvm::Function *F =
+ CGM.getIntrinsic(Intrinsic::vector_reduce_fadd, Vector->getType());
+ llvm::CallBase *Reduce = Builder.CreateCall(F, Args, "rdx.addf");
+ if (BuiltinIDIfNoAsmLabel == Builtin::BI__builtin_reduce_addf) {
+ // `__builtin_reduce_addf` an unordered reduction, which requires the
----------------
sdesmalen-arm wrote:
nit:
```suggestion
// `__builtin_reduce_addf` is an unordered reduction which requires the
```
https://github.com/llvm/llvm-project/pull/176160
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits