72 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/Frontend/Driver/CodeGenOptions.h"10#include "llvm/Analysis/TargetLibraryInfo.h"11#include "llvm/IR/SystemLibraries.h"12#include "llvm/ProfileData/InstrProfCorrelator.h"13#include "llvm/TargetParser/Triple.h"14 15namespace llvm {16extern llvm::cl::opt<llvm::InstrProfCorrelator::ProfCorrelatorKind>17 ProfileCorrelate;18} // namespace llvm19 20namespace llvm::driver {21 22TargetLibraryInfoImpl *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(llvm::VectorLibrary::Accelerate,30 TargetTriple);31 break;32 case VectorLibrary::LIBMVEC:33 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::LIBMVEC,34 TargetTriple);35 break;36 case VectorLibrary::MASSV:37 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::MASSV,38 TargetTriple);39 break;40 case VectorLibrary::SVML:41 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::SVML,42 TargetTriple);43 break;44 case VectorLibrary::SLEEF:45 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::SLEEFGNUABI,46 TargetTriple);47 break;48 case VectorLibrary::Darwin_libsystem_m:49 TLII->addVectorizableFunctionsFromVecLib(50 llvm::VectorLibrary::DarwinLibSystemM, TargetTriple);51 break;52 case VectorLibrary::ArmPL:53 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::ArmPL,54 TargetTriple);55 break;56 case VectorLibrary::AMDLIBM:57 TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::AMDLIBM,58 TargetTriple);59 break;60 default:61 break;62 }63 return TLII;64}65 66std::string getDefaultProfileGenName() {67 return llvm::ProfileCorrelate != InstrProfCorrelator::NONE68 ? "default_%m.proflite"69 : "default_%m.profraw";70}71} // namespace llvm::driver72