aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp')
-rw-r--r--contrib/llvm-project/llvm/lib/Frontend/Driver/CodeGenOptions.cpp55
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