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/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 llvm
19
20namespace llvm::driver {
21
22llvm::VectorLibrary
23convertDriverVectorLibraryToVectorLibrary(llvm::driver::VectorLibrary VecLib) {
24 switch (VecLib) {
25 case llvm::driver::VectorLibrary::NoLibrary:
26 return llvm::VectorLibrary::NoLibrary;
27 case llvm::driver::VectorLibrary::Accelerate:
28 return llvm::VectorLibrary::Accelerate;
29 case llvm::driver::VectorLibrary::Darwin_libsystem_m:
30 return llvm::VectorLibrary::DarwinLibSystemM;
31 case llvm::driver::VectorLibrary::LIBMVEC:
32 return llvm::VectorLibrary::LIBMVEC;
33 case llvm::driver::VectorLibrary::MASSV:
34 return llvm::VectorLibrary::MASSV;
35 case llvm::driver::VectorLibrary::SVML:
36 return llvm::VectorLibrary::SVML;
37 case llvm::driver::VectorLibrary::SLEEF:
38 return llvm::VectorLibrary::SLEEFGNUABI;
39 case llvm::driver::VectorLibrary::ArmPL:
40 return llvm::VectorLibrary::ArmPL;
41 case llvm::driver::VectorLibrary::AMDLIBM:
42 return llvm::VectorLibrary::AMDLIBM;
43 }
44 llvm_unreachable("Unexpected driver::VectorLibrary");
45}
46
47TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple,
48 driver::VectorLibrary Veclib) {
49 return new TargetLibraryInfoImpl(
50 TargetTriple, convertDriverVectorLibraryToVectorLibrary(VecLib: Veclib));
51}
52
53std::string getDefaultProfileGenName() {
54 return llvm::ProfileCorrelate != InstrProfCorrelator::NONE
55 ? "default_%m.proflite"
56 : "default_%m.profraw";
57}
58} // namespace llvm::driver
59