fpetrogalli added inline comments.
================ Comment at: llvm/include/llvm/Analysis/TargetLibraryInfo.h:91 Accelerate, // Use Accelerate framework. + LIBMVEC, // GLIBC Vector Math library. MASSV, // IBM MASS vector library. ---------------- nemanjai wrote: > fpetrogalli wrote: > > Can we call this LIBMVEC-X86? Libmvec itself is supposed to support other > > architectures, I can see list of mappings for each of the supported targets. > > > > Then, the logic of selecting the correct one in the frontent clang would > > depend on the value of `-fvec-lib=libmvec` plus the value of `-target`. > So if I follow correctly, we can choose the various vendor-specific libraries > as well as `libmvec` which itself has target-specific ports. > > Would it make sense to just add an overload of `addVectorizableFunctions()` > that would consider the `Triple` and remove any entries from `VectorDescs` > that the target doesn't support? Or even more specifically, simply add the > `Triple` argument to `addVectorizableFunctionsFromVecLib()` and call > something like `removeLIBMVECEntriesForTarget(const Triple &T)` that would do > the job. > > And of course, if the triple isn't provided and the user is targeting an > architecture that doesn't provide some entry, that is just user error. The overload of the `addVectorizableFunctions()` might be feasible, but for the sake of simplicity I think that having `LIBMVEC_<TARGET>` in `enum VectorLibrary` for each of the <TARGET> to support would avoid having to deal with overload of methods. Given that these lists are static, I'd rather see them explicitly instead of having them filled up by add/remove methods. All in all, I think it is easier to add the logic for the target triple in clang as it is just a matter of modifying the changes in `BackendUtils.cpp` (warning, pseudocode ahead): ``` case CodeGenOptions::LIBMVEC: switch(Triple) { case X: TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC_X); break case Y: TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC_Y); break; case ... } break; ``` CHANGES SINCE LAST ACTION https://reviews.llvm.org/D88154/new/ https://reviews.llvm.org/D88154 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits