| //===--- 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/IR/SystemLibraries.h" | |
| #include "llvm/ProfileData/InstrProfCorrelator.h" | |
| #include "llvm/TargetParser/Triple.h" | |
| namespace llvm { | |
| extern llvm::cl::opt<llvm::InstrProfCorrelator::ProfCorrelatorKind> | |
| ProfileCorrelate; | |
| } // namespace llvm | |
| namespace llvm::driver { | |
| llvm::VectorLibrary | |
| convertDriverVectorLibraryToVectorLibrary(llvm::driver::VectorLibrary VecLib) { | |
| switch (VecLib) { | |
| case llvm::driver::VectorLibrary::NoLibrary: | |
| return llvm::VectorLibrary::NoLibrary; | |
| case llvm::driver::VectorLibrary::Accelerate: | |
| return llvm::VectorLibrary::Accelerate; | |
| case llvm::driver::VectorLibrary::Darwin_libsystem_m: | |
| return llvm::VectorLibrary::DarwinLibSystemM; | |
| case llvm::driver::VectorLibrary::LIBMVEC: | |
| return llvm::VectorLibrary::LIBMVEC; | |
| case llvm::driver::VectorLibrary::MASSV: | |
| return llvm::VectorLibrary::MASSV; | |
| case llvm::driver::VectorLibrary::SVML: | |
| return llvm::VectorLibrary::SVML; | |
| case llvm::driver::VectorLibrary::SLEEF: | |
| return llvm::VectorLibrary::SLEEFGNUABI; | |
| case llvm::driver::VectorLibrary::ArmPL: | |
| return llvm::VectorLibrary::ArmPL; | |
| case llvm::driver::VectorLibrary::AMDLIBM: | |
| return llvm::VectorLibrary::AMDLIBM; | |
| } | |
| llvm_unreachable("Unexpected driver::VectorLibrary"); | |
| } | |
| TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple, | |
| driver::VectorLibrary Veclib) { | |
| return new TargetLibraryInfoImpl( | |
| TargetTriple, convertDriverVectorLibraryToVectorLibrary(Veclib)); | |
| } | |
| std::string getDefaultProfileGenName() { | |
| return llvm::ProfileCorrelate != InstrProfCorrelator::NONE | |
| ? "default_%m.proflite" | |
| : "default_%m.profraw"; | |
| } | |
| } // namespace llvm::driver |