diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-18 20:30:12 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2024-04-19 21:12:03 +0000 |
| commit | c9157d925c489f07ba9c0b2ce47e5149b75969a5 (patch) | |
| tree | 08bc4a3d9cad3f9ebffa558ddf140b9d9257b219 /contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp | |
| parent | 2a66844f606a35d68ad8a8061f4bea204274b3bc (diff) | |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp b/contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp new file mode 100644 index 000000000000..96c5b19a4a59 --- /dev/null +++ b/contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp @@ -0,0 +1,55 @@ +//===--- CodeGenOptions.cpp - Shared codegen option handling --------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "llvm/Frontend/Driver/CodeGenOptions.h" +#include "llvm/Analysis/TargetLibraryInfo.h" +#include "llvm/TargetParser/Triple.h" + +namespace llvm::driver { + +TargetLibraryInfoImpl *createTLII(llvm::Triple &TargetTriple, + driver::VectorLibrary Veclib) { + TargetLibraryInfoImpl *TLII = new TargetLibraryInfoImpl(TargetTriple); + + using VectorLibrary = llvm::driver::VectorLibrary; + switch (Veclib) { + case VectorLibrary::Accelerate: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::Accelerate, + TargetTriple); + break; + case VectorLibrary::LIBMVEC: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC_X86, + TargetTriple); + break; + case VectorLibrary::MASSV: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::MASSV, + TargetTriple); + break; + case VectorLibrary::SVML: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SVML, + TargetTriple); + break; + case VectorLibrary::SLEEF: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SLEEFGNUABI, + TargetTriple); + break; + case VectorLibrary::Darwin_libsystem_m: + TLII->addVectorizableFunctionsFromVecLib( + TargetLibraryInfoImpl::DarwinLibSystemM, TargetTriple); + break; + case VectorLibrary::ArmPL: + TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::ArmPL, + TargetTriple); + break; + default: + break; + } + return TLII; +} + +} // namespace llvm::driver |
