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/IR/SystemLibraries.h"
12#include "llvm/TargetParser/Triple.h"
13#include "llvm/Transforms/Instrumentation/InstrProfiling.h"
14
15namespace llvm::driver {
16
17llvm::VectorLibrary
18convertDriverVectorLibraryToVectorLibrary(llvm::driver::VectorLibrary VecLib) {
19 switch (VecLib) {
20 case llvm::driver::VectorLibrary::NoLibrary:
21 return llvm::VectorLibrary::NoLibrary;
22 case llvm::driver::VectorLibrary::Accelerate:
23 return llvm::VectorLibrary::Accelerate;
24 case llvm::driver::VectorLibrary::Darwin_libsystem_m:
25 return llvm::VectorLibrary::DarwinLibSystemM;
26 case llvm::driver::VectorLibrary::LIBMVEC:
27 return llvm::VectorLibrary::LIBMVEC;
28 case llvm::driver::VectorLibrary::MASSV:
29 return llvm::VectorLibrary::MASSV;
30 case llvm::driver::VectorLibrary::SVML:
31 return llvm::VectorLibrary::SVML;
32 case llvm::driver::VectorLibrary::SLEEF:
33 return llvm::VectorLibrary::SLEEFGNUABI;
34 case llvm::driver::VectorLibrary::ArmPL:
35 return llvm::VectorLibrary::ArmPL;
36 case llvm::driver::VectorLibrary::AMDLIBM:
37 return llvm::VectorLibrary::AMDLIBM;
38 }
39 llvm_unreachable("Unexpected driver::VectorLibrary");
40}
41
42TargetLibraryInfoImpl *createTLII(const llvm::Triple &TargetTriple,
43 driver::VectorLibrary Veclib) {
44 return new TargetLibraryInfoImpl(
45 TargetTriple, convertDriverVectorLibraryToVectorLibrary(VecLib: Veclib));
46}
47
48std::string getDefaultProfileGenName() {
49 return isProfileCorrelationEnabled() ? "default_%m.proflite"
50 : "default_%m.profraw";
51}
52} // namespace llvm::driver
53