Open
Description
This issue tracks the downstream changes needed to enable sincos()
vectorization in the Arm toolchain. These changes are only for the release 20.x branch (https://github.com/arm/arm-toolchain/tree/release/arm-software/20.x) as we intend to complete up-streaming the changes for LLVM 21.
- (release 20.x non-upstream patch) [LV] Add initial support for vectorizing literal struct return values #82
- (release 20.x non-upstream patch) [clang] Lower non-builtin sincos[f|l] calls to llvm.sincos.* when -fno-math-errno is set #83
- (release 20.x non-upstream patch) [LV] Teach the vectorizer to cost and vectorize llvm.sincos intrinsics #84
- (Merged) Upstream PR: [CostModel] Handle vector struct results and cost
llvm.sincos
llvm/llvm-project#123210 - Behavior change:
sincos()
becomes vectorizable with-fveclib=ArmPL/SLEEF
- (Merged) Upstream PR: [CostModel] Handle vector struct results and cost
- [Downstream change][TargetParser] Parse Amazon Linux triple and handle RuntimeLibcalls #286
- Allows vectorization of sincos on
aarch64-amazon-linux
triple
- Allows vectorization of sincos on
The patches were not possible to upstream for LLVM 20 due to long review times.