[clang] [clang] Add sincos builtin using `llvm.sincos` intrinsic (PR #114086)
Benjamin Maxwell via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 19 03:15:46 PST 2024
================
@@ -3232,6 +3264,22 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
return RValue::get(emitUnaryMaybeConstrainedFPBuiltin(
*this, E, Intrinsic::sinh, Intrinsic::experimental_constrained_sinh));
+ case Builtin::BIsincos:
+ case Builtin::BIsincosf:
+ case Builtin::BIsincosl:
+ case Builtin::BI__builtin_sincos:
+ case Builtin::BI__builtin_sincosf:
+ case Builtin::BI__builtin_sincosl:
+ // Only use the llvm.sincos.* builtin on AArch64 with optimizations.
+ // Currently, getting codegen that is no worse than the direct call
+ // requires using AA during codegen. This is not done at optlevel=none,
+ // and not all targets support this (AArch64 is one of the few known to).
+ if (!getTarget().getTriple().isAArch64() ||
+ CGM.getCodeGenOpts().OptimizationLevel == 0)
+ break;
----------------
MacDue wrote:
Okay, I'd be happier landing this if I could get word from someone working on one of the larger targets that disable this to why `combiner-global-alias-analysis` is turned off. `x86_64` was where I noticed the issue, so perhaps @RKSimon?
https://github.com/llvm/llvm-project/pull/114086
More information about the cfe-commits
mailing list