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(VecLib: TargetLibraryInfoImpl::Accelerate, |
30 | TargetTriple); |
31 | break; |
32 | case VectorLibrary::LIBMVEC: |
33 | TLII->addVectorizableFunctionsFromVecLib(VecLib: TargetLibraryInfoImpl::LIBMVEC, |
34 | TargetTriple); |
35 | break; |
36 | case VectorLibrary::MASSV: |
37 | TLII->addVectorizableFunctionsFromVecLib(VecLib: TargetLibraryInfoImpl::MASSV, |
38 | TargetTriple); |
39 | break; |
40 | case VectorLibrary::SVML: |
41 | TLII->addVectorizableFunctionsFromVecLib(VecLib: TargetLibraryInfoImpl::SVML, |
42 | TargetTriple); |
43 | break; |
44 | case VectorLibrary::SLEEF: |
45 | TLII->addVectorizableFunctionsFromVecLib(VecLib: TargetLibraryInfoImpl::SLEEFGNUABI, |
46 | TargetTriple); |
47 | break; |
48 | case VectorLibrary::Darwin_libsystem_m: |
49 | TLII->addVectorizableFunctionsFromVecLib( |
50 | VecLib: TargetLibraryInfoImpl::DarwinLibSystemM, TargetTriple); |
51 | break; |
52 | case VectorLibrary::ArmPL: |
53 | TLII->addVectorizableFunctionsFromVecLib(VecLib: TargetLibraryInfoImpl::ArmPL, |
54 | TargetTriple); |
55 | break; |
56 | case VectorLibrary::AMDLIBM: |
57 | TLII->addVectorizableFunctionsFromVecLib(VecLib: 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 | |