[PATCH] D134719: [AArch64] Enable libm vectorized functions via SLEEF

Daniel Kiss via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 30 02:32:53 PST 2022


danielkiss added inline comments.


================
Comment at: clang/lib/CodeGen/BackendUtil.cpp:296
+      case llvm::Triple::aarch64_be:
+        TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SLEEFGNUABI);
+        break;
----------------
paulwalker-arm wrote:
> 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
> ```
> TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SLEEF_VF2_...)
> TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SLEEF_VF4_...)
> ```
> This way there will be one version of TargetLibraryInfo for SLEEF and different targets can pick and choose based on vectorisation factors.
> What does `GNUABI` signify? My understanding is the SLEEF functions use the Vector ABI (which is somewhat target neutral?) to construct their name.
`GNUABI` comes from the [[ https://sleef.org/additional.xhtml#gnuabi | libsleefgnuabi.so ]]. it is compatible with `libmvec` but has more functions. Normal sleef ABI is different.

I added triplet to `addVectorizableFunctionsFromVecLib` so vectorisation factors per target then can be handled there without bloating the enum.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D134719/new/

https://reviews.llvm.org/D134719



More information about the llvm-commits mailing list