It enables trigonometry functions vectorization via SLEEF: http://sleef.org/.
- A new vectorization library enum is added to TargetLibraryInfo.h: SLEEF.
- A new option is added to TargetLibraryInfoImpl - ClVectorLibrary: SLEEF.
- A comprehensive test case is included in this changeset.
- A new vectorization library argument is added to -fveclib: -fveclib=SLEEF.
Trigonometry functions that are vectorized by sleef:
acos
asin
atan
atanh
cos
cosh
exp
exp2
exp10
lgamma
log10
log2
log
sin
sinh
sqrt
tan
tanh
tgamma
Co-authored-by: Stefan Teleman
What does GNUABI signify? My understanding is the SLEEF functions use the Vector ABI (which is somewhat target neutral?) to construct their name.
Just a thought but to be a bit more target neutral what about splitting TargetLibraryInfoImpl::SLEEF based on vector length. So here we'll have
This way there will be one version of TargetLibraryInfo for SLEEF and different targets can pick and choose based on vectorisation factors.