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
createTLII(const llvm::Triple & TargetTriple,driver::VectorLibrary Veclib)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
getDefaultProfileGenName()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