//===--- 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 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