LLVM
22.0.0git
lib
Frontend
Driver
CodeGenOptions.cpp
Go to the documentation of this file.
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<llvm::InstrProfCorrelator::ProfCorrelatorKind>
16
ProfileCorrelate
;
17
}
// namespace llvm
18
19
namespace
llvm::driver
{
20
21
TargetLibraryInfoImpl
*
createTLII
(
const
llvm::Triple
&TargetTriple,
22
driver::VectorLibrary
Veclib) {
23
TargetLibraryInfoImpl
*TLII =
new
TargetLibraryInfoImpl
(TargetTriple);
24
25
using
VectorLibrary
=
llvm::driver::VectorLibrary
;
26
switch
(Veclib) {
27
case
VectorLibrary::Accelerate
:
28
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::Accelerate
,
29
TargetTriple);
30
break
;
31
case
VectorLibrary::LIBMVEC
:
32
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::LIBMVEC
,
33
TargetTriple);
34
break
;
35
case
VectorLibrary::MASSV
:
36
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::MASSV
,
37
TargetTriple);
38
break
;
39
case
VectorLibrary::SVML
:
40
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::SVML
,
41
TargetTriple);
42
break
;
43
case
VectorLibrary::SLEEF
:
44
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::SLEEFGNUABI
,
45
TargetTriple);
46
break
;
47
case
VectorLibrary::Darwin_libsystem_m
:
48
TLII->
addVectorizableFunctionsFromVecLib
(
49
TargetLibraryInfoImpl::DarwinLibSystemM
, TargetTriple);
50
break
;
51
case
VectorLibrary::ArmPL
:
52
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::ArmPL
,
53
TargetTriple);
54
break
;
55
case
VectorLibrary::AMDLIBM
:
56
TLII->
addVectorizableFunctionsFromVecLib
(
TargetLibraryInfoImpl::AMDLIBM
,
57
TargetTriple);
58
break
;
59
default
:
60
break
;
61
}
62
return
TLII;
63
}
64
65
std::string
getDefaultProfileGenName
() {
66
return
llvm::ProfileCorrelate
!=
InstrProfCorrelator::NONE
67
?
"default_%m.proflite"
68
:
"default_%m.profraw"
;
69
}
70
}
// namespace llvm::driver
CodeGenOptions.h
InstrProfCorrelator.h
TargetLibraryInfo.h
Triple.h
llvm::InstrProfCorrelator::NONE
@ NONE
Definition
InstrProfCorrelator.h:39
llvm::TargetLibraryInfoImpl
Implementation of the target library information.
Definition
TargetLibraryInfo.h:86
llvm::TargetLibraryInfoImpl::addVectorizableFunctionsFromVecLib
LLVM_ABI void addVectorizableFunctionsFromVecLib(enum VectorLibrary VecLib, const llvm::Triple &TargetTriple)
Calls addVectorizableFunctions with a known preset of functions for the given vector library.
Definition
TargetLibraryInfo.cpp:1386
llvm::TargetLibraryInfoImpl::MASSV
@ MASSV
Definition
TargetLibraryInfo.h:132
llvm::TargetLibraryInfoImpl::DarwinLibSystemM
@ DarwinLibSystemM
Definition
TargetLibraryInfo.h:130
llvm::TargetLibraryInfoImpl::SVML
@ SVML
Definition
TargetLibraryInfo.h:133
llvm::TargetLibraryInfoImpl::SLEEFGNUABI
@ SLEEFGNUABI
Definition
TargetLibraryInfo.h:134
llvm::TargetLibraryInfoImpl::LIBMVEC
@ LIBMVEC
Definition
TargetLibraryInfo.h:131
llvm::TargetLibraryInfoImpl::AMDLIBM
@ AMDLIBM
Definition
TargetLibraryInfo.h:136
llvm::TargetLibraryInfoImpl::ArmPL
@ ArmPL
Definition
TargetLibraryInfo.h:135
llvm::TargetLibraryInfoImpl::Accelerate
@ Accelerate
Definition
TargetLibraryInfo.h:129
llvm::Triple
Triple - Helper class for working with autoconf configuration names.
Definition
Triple.h:47
llvm::cl::opt
Definition
CommandLine.h:1455
llvm::driver
Definition
CodeGenOptions.h:24
llvm::driver::getDefaultProfileGenName
LLVM_ABI std::string getDefaultProfileGenName()
Definition
CodeGenOptions.cpp:65
llvm::driver::createTLII
LLVM_ABI TargetLibraryInfoImpl * createTLII(const llvm::Triple &TargetTriple, VectorLibrary Veclib)
Definition
CodeGenOptions.cpp:21
llvm::driver::VectorLibrary
VectorLibrary
Vector library option used with -fveclib=.
Definition
CodeGenOptions.h:40
llvm::driver::VectorLibrary::LIBMVEC
@ LIBMVEC
Definition
CodeGenOptions.h:43
llvm::driver::VectorLibrary::Darwin_libsystem_m
@ Darwin_libsystem_m
Definition
CodeGenOptions.h:47
llvm::driver::VectorLibrary::SVML
@ SVML
Definition
CodeGenOptions.h:45
llvm::driver::VectorLibrary::ArmPL
@ ArmPL
Definition
CodeGenOptions.h:48
llvm::driver::VectorLibrary::AMDLIBM
@ AMDLIBM
Definition
CodeGenOptions.h:49
llvm::driver::VectorLibrary::Accelerate
@ Accelerate
Definition
CodeGenOptions.h:42
llvm::driver::VectorLibrary::SLEEF
@ SLEEF
Definition
CodeGenOptions.h:46
llvm::driver::VectorLibrary::MASSV
@ MASSV
Definition
CodeGenOptions.h:44
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition
AddressRanges.h:18
llvm::ProfileCorrelate
llvm::cl::opt< llvm::InstrProfCorrelator::ProfCorrelatorKind > ProfileCorrelate
Definition
PGOInstrumentation.cpp:362
Generated on
for LLVM by
1.14.0