1 //===--- CodeGenOptions.cpp - Shared codegen option handling --------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/Frontend/Driver/CodeGenOptions.h" 10 #include "llvm/Analysis/TargetLibraryInfo.h" 11 #include "llvm/ProfileData/InstrProfCorrelator.h" 12 #include "llvm/TargetParser/Triple.h" 13 14 namespace llvm { 15 extern llvm::cl::opt<bool> DebugInfoCorrelate; 16 extern llvm::cl::opt<llvm::InstrProfCorrelator::ProfCorrelatorKind> 17 ProfileCorrelate; 18 } // namespace llvm 19 20 namespace llvm::driver { 21 22 TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple, 23 driver::VectorLibrary Veclib) { 24 TargetLibraryInfoImpl *TLII = new TargetLibraryInfoImpl(TargetTriple); 25 26 using VectorLibrary = llvm::driver::VectorLibrary; 27 switch (Veclib) { 28 case VectorLibrary::Accelerate: 29 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::Accelerate, 30 TargetTriple); 31 break; 32 case VectorLibrary::LIBMVEC: 33 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::LIBMVEC, 34 TargetTriple); 35 break; 36 case VectorLibrary::MASSV: 37 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::MASSV, 38 TargetTriple); 39 break; 40 case VectorLibrary::SVML: 41 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SVML, 42 TargetTriple); 43 break; 44 case VectorLibrary::SLEEF: 45 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::SLEEFGNUABI, 46 TargetTriple); 47 break; 48 case VectorLibrary::Darwin_libsystem_m: 49 TLII->addVectorizableFunctionsFromVecLib( 50 TargetLibraryInfoImpl::DarwinLibSystemM, TargetTriple); 51 break; 52 case VectorLibrary::ArmPL: 53 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::ArmPL, 54 TargetTriple); 55 break; 56 case VectorLibrary::AMDLIBM: 57 TLII->addVectorizableFunctionsFromVecLib(TargetLibraryInfoImpl::AMDLIBM, 58 TargetTriple); 59 break; 60 default: 61 break; 62 } 63 return TLII; 64 } 65 66 std::string getDefaultProfileGenName() { 67 return llvm::DebugInfoCorrelate || 68 llvm::ProfileCorrelate != InstrProfCorrelator::NONE 69 ? "default_%m.proflite" 70 : "default_%m.profraw"; 71 } 72 } // namespace llvm::driver 73