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
14namespace llvm {
15extern llvm::cl::opt<bool> DebugInfoCorrelate;
16extern llvm::cl::opt<llvm::InstrProfCorrelator::ProfCorrelatorKind>
17 ProfileCorrelate;
18} // namespace llvm
19
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(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
66std::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