blob: 4e1602703fb3528b8b379a6060d4b46ba1f747de (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
//===--- CodeGenOptions.cpp - Shared codegen option handling --------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#include "llvm/Frontend/Driver/CodeGenOptions.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/SystemLibraries.h"
#include "llvm/ProfileData/InstrProfCorrelator.h"
#include "llvm/TargetParser/Triple.h"
namespace llvm {
extern llvm::cl::opt<llvm::InstrProfCorrelator::ProfCorrelatorKind>
ProfileCorrelate;
} // namespace llvm
namespace llvm::driver {
TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple,
driver::VectorLibrary Veclib) {
TargetLibraryInfoImpl *TLII = new TargetLibraryInfoImpl(TargetTriple);
using VectorLibrary = llvm::driver::VectorLibrary;
switch (Veclib) {
case VectorLibrary::Accelerate:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::Accelerate,
TargetTriple);
break;
case VectorLibrary::LIBMVEC:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::LIBMVEC,
TargetTriple);
break;
case VectorLibrary::MASSV:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::MASSV,
TargetTriple);
break;
case VectorLibrary::SVML:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::SVML,
TargetTriple);
break;
case VectorLibrary::SLEEF:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::SLEEFGNUABI,
TargetTriple);
break;
case VectorLibrary::Darwin_libsystem_m:
TLII->addVectorizableFunctionsFromVecLib(
llvm::VectorLibrary::DarwinLibSystemM, TargetTriple);
break;
case VectorLibrary::ArmPL:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::ArmPL,
TargetTriple);
break;
case VectorLibrary::AMDLIBM:
TLII->addVectorizableFunctionsFromVecLib(llvm::VectorLibrary::AMDLIBM,
TargetTriple);
break;
default:
break;
}
return TLII;
}
std::string getDefaultProfileGenName() {
return llvm::ProfileCorrelate != InstrProfCorrelator::NONE
? "default_%m.proflite"
: "default_%m.profraw";
}
} // namespace llvm::driver
|