11 #include "llvm/ADT/StringSwitch.h"
12 #include "llvm/Support/ErrorHandling.h"
13 #include "llvm/Support/Regex.h"
15 using namespace clang::driver;
16 using namespace llvm::opt;
22 case InputClass:
return "input";
23 case BindArchClass:
return "bind-arch";
24 case CudaDeviceClass:
return "cuda-device";
25 case CudaHostClass:
return "cuda-host";
26 case PreprocessJobClass:
return "preprocessor";
27 case PrecompileJobClass:
return "precompiler";
28 case AnalyzeJobClass:
return "analyzer";
29 case MigrateJobClass:
return "migrator";
30 case CompileJobClass:
return "compiler";
31 case BackendJobClass:
return "backend";
32 case AssembleJobClass:
return "assembler";
33 case LinkJobClass:
return "linker";
34 case LipoJobClass:
return "lipo";
35 case DsymutilJobClass:
return "dsymutil";
36 case VerifyDebugInfoJobClass:
return "verify-debug-info";
37 case VerifyPCHJobClass:
return "verify-pch";
40 llvm_unreachable(
"invalid class");
43 void InputAction::anchor() {}
49 void BindArchAction::anchor() {}
52 :
Action(BindArchClass, Input), ArchName(_ArchName) {}
60 return llvm::StringSwitch<const char *>(ArchName)
61 .Cases(
"sm_20",
"sm_21",
"compute_20")
62 .Case(
"sm_30",
"compute_30")
63 .Case(
"sm_32",
"compute_32")
64 .Case(
"sm_35",
"compute_35")
65 .Case(
"sm_37",
"compute_37")
66 .Case(
"sm_50",
"compute_50")
67 .Case(
"sm_52",
"compute_52")
68 .Case(
"sm_53",
"compute_53")
72 void CudaDeviceAction::anchor() {}
76 :
Action(CudaDeviceClass, Input), GpuArchName(ArchName),
77 AtTopLevel(AtTopLevel) {
89 void CudaHostAction::anchor() {}
92 :
Action(CudaHostClass, Input), DeviceActions(DeviceActions) {}
94 void JobAction::anchor() {}
97 :
Action(Kind, Input, Type) {}
100 :
Action(Kind, Inputs, Type) {
103 void PreprocessJobAction::anchor() {}
106 :
JobAction(PreprocessJobClass, Input, OutputType) {}
108 void PrecompileJobAction::anchor() {}
111 :
JobAction(PrecompileJobClass, Input, OutputType) {}
113 void AnalyzeJobAction::anchor() {}
116 :
JobAction(AnalyzeJobClass, Input, OutputType) {}
118 void MigrateJobAction::anchor() {}
121 :
JobAction(MigrateJobClass, Input, OutputType) {}
123 void CompileJobAction::anchor() {}
126 :
JobAction(CompileJobClass, Input, OutputType) {}
128 void BackendJobAction::anchor() {}
131 :
JobAction(BackendJobClass, Input, OutputType) {}
133 void AssembleJobAction::anchor() {}
136 :
JobAction(AssembleJobClass, Input, OutputType) {}
138 void LinkJobAction::anchor() {}
141 :
JobAction(LinkJobClass, Inputs, Type) {
144 void LipoJobAction::anchor() {}
147 :
JobAction(LipoJobClass, Inputs, Type) {
150 void DsymutilJobAction::anchor() {}
153 :
JobAction(DsymutilJobClass, Inputs, Type) {
156 void VerifyJobAction::anchor() {}
162 "ActionClass is not a valid VerifyJobAction");
165 void VerifyDebugInfoJobAction::anchor() {}
171 void VerifyPCHJobAction::anchor() {}
AssembleJobAction(Action *Input, types::ID OutputType)
PrecompileJobAction(Action *Input, types::ID OutputType)
BackendJobAction(Action *Input, types::ID OutputType)
MigrateJobAction(Action *Input, types::ID OutputType)
static const char * GpuArchToComputeName(const char *ArchName)
The base class of the type hierarchy.
LinkJobAction(ActionList &Inputs, types::ID Type)
VerifyJobAction(ActionClass Kind, Action *Input, types::ID Type)
const char * getComputeArchName() const
Gets the compute_XX that corresponds to getGpuArchName().
VerifyDebugInfoJobAction(Action *Input, types::ID Type)
CompileJobAction(Action *Input, types::ID OutputType)
CudaDeviceAction(Action *Input, const char *ArchName, bool AtTopLevel)
JobAction(ActionClass Kind, Action *Input, types::ID Type)
LipoJobAction(ActionList &Inputs, types::ID Type)
Action - Represent an abstract compilation step to perform.
static bool IsValidGpuArchName(llvm::StringRef ArchName)
DsymutilJobAction(ActionList &Inputs, types::ID Type)
PreprocessJobAction(Action *Input, types::ID OutputType)
VerifyPCHJobAction(Action *Input, types::ID Type)
CudaHostAction(Action *Input, const ActionList &DeviceActions)
AnalyzeJobAction(Action *Input, types::ID OutputType)
const char * getClassName() const
BindArchAction(Action *Input, const char *ArchName)