R600: Handle -mcpu option v3
v2: - Add a test case v3: - Use the -### clang option in the tests llvm-svn: 178499
This commit is contained in:
parent
7856993228
commit
6674c703b6
|
@ -1122,6 +1122,30 @@ void Clang::AddPPCTargetArgs(const ArgList &Args,
|
|||
}
|
||||
}
|
||||
|
||||
/// Get the (LLVM) name of the R600 gpu we are targeting.
|
||||
static std::string getR600TargetGPU(const ArgList &Args) {
|
||||
if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
|
||||
std::string GPUName = A->getValue();
|
||||
return llvm::StringSwitch<const char *>(GPUName)
|
||||
.Cases("rv610", "rv620", "rv630", "r600")
|
||||
.Cases("rv635", "rs780", "rs880", "r600")
|
||||
.Case("rv740", "rv770")
|
||||
.Case("palm", "cedar")
|
||||
.Cases("sumo", "sumo2", "redwood")
|
||||
.Case("hemlock", "cypress")
|
||||
.Case("aruba", "cayman")
|
||||
.Default(GPUName.c_str());
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
void Clang::AddR600TargetArgs(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
std::string TargetGPUName = getR600TargetGPU(Args);
|
||||
CmdArgs.push_back("-target-cpu");
|
||||
CmdArgs.push_back(Args.MakeArgString(TargetGPUName.c_str()));
|
||||
}
|
||||
|
||||
void Clang::AddSparcTargetArgs(const ArgList &Args,
|
||||
ArgStringList &CmdArgs) const {
|
||||
const Driver &D = getToolChain().getDriver();
|
||||
|
@ -2272,6 +2296,10 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
AddPPCTargetArgs(Args, CmdArgs);
|
||||
break;
|
||||
|
||||
case llvm::Triple::r600:
|
||||
AddR600TargetArgs(Args, CmdArgs);
|
||||
break;
|
||||
|
||||
case llvm::Triple::sparc:
|
||||
AddSparcTargetArgs(Args, CmdArgs);
|
||||
break;
|
||||
|
|
|
@ -51,6 +51,7 @@ namespace tools {
|
|||
bool KernelOrKext) const;
|
||||
void AddMIPSTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
void AddPPCTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
void AddR600TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
void AddSparcTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
void AddX86TargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
void AddHexagonTargetArgs (const ArgList &Args, ArgStringList &CmdArgs) const;
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
// Check that -mcpu works for all supported GPUs
|
||||
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=r600 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv610 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv620 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv630 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv635 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rs780 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rs880 %s -o - 2>&1 | FileCheck --check-prefix=R600-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv670 %s -o - 2>&1 | FileCheck --check-prefix=RV670-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv710 %s -o - 2>&1 | FileCheck --check-prefix=RV710-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv730 %s -o - 2>&1 | FileCheck --check-prefix=RV730-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv740 %s -o - 2>&1 | FileCheck --check-prefix=RV770-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=rv770 %s -o - 2>&1 | FileCheck --check-prefix=RV770-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=palm %s -o - 2>&1 | FileCheck --check-prefix=CEDAR-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cedar %s -o - 2>&1 | FileCheck --check-prefix=CEDAR-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=sumo %s -o - 2>&1 | FileCheck --check-prefix=REDWOOD-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=sumo2 %s -o - 2>&1 | FileCheck --check-prefix=REDWOOD-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=redwood %s -o - 2>&1 | FileCheck --check-prefix=REDWOOD-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=juniper %s -o - 2>&1 | FileCheck --check-prefix=JUNIPER-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=juniper %s -o - 2>&1 | FileCheck --check-prefix=JUNIPER-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=hemlock %s -o - 2>&1 | FileCheck --check-prefix=CYPRESS-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cypress %s -o - 2>&1 | FileCheck --check-prefix=CYPRESS-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=barts %s -o - 2>&1 | FileCheck --check-prefix=BARTS-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=turks %s -o - 2>&1 | FileCheck --check-prefix=TURKS-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=caicos %s -o - 2>&1 | FileCheck --check-prefix=CAICOS-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=cayman %s -o - 2>&1 | FileCheck --check-prefix=CAYMAN-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=aruba %s -o - 2>&1 | FileCheck --check-prefix=CAYMAN-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=tahiti %s -o - 2>&1 | FileCheck --check-prefix=TAHITI-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=pitcairn %s -o - 2>&1 | FileCheck --check-prefix=PITCAIRN-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=verde %s -o - 2>&1 | FileCheck --check-prefix=VERDE-CHECK %s
|
||||
// RUN: %clang -### -target r600 -x cl -S -emit-llvm -mcpu=oland %s -o - 2>&1 | FileCheck --check-prefix=OLAND-CHECK %s
|
||||
|
||||
// R600-CHECK: "-target-cpu" "r600"
|
||||
// RV670-CHECK: "-target-cpu" "rv670"
|
||||
// RV710-CHECK: "-target-cpu" "rv710"
|
||||
// RV730-CHECK: "-target-cpu" "rv730"
|
||||
// RV770-CHECK: "-target-cpu" "rv770"
|
||||
// CEDAR-CHECK: "-target-cpu" "cedar"
|
||||
// REDOWOOD-CHECK: "-target-cpu" "redwood"
|
||||
// JUNIPER-CHECK: "-target-cpu" "juniper"
|
||||
// CYPRESS-CHECK: "-target-cpu" "cypress"
|
||||
// BARTS-CHECK: "-target-cpu" "barts"
|
||||
// TURKS-CHECK: "-target-cpu" "turks"
|
||||
// CAICOS-CHECK: "-target-cpu" "caicos"
|
||||
// CAYMAN-CHECK: "-target-cpu" "cayman"
|
||||
// TAHITI-CHECK: "-target-cpu" "tahiti"
|
||||
// PITCAIRN-CHECK: "-target-cpu" "pitcairn"
|
||||
// VERDE-CHECK: "-target-cpu" "verde"
|
||||
// OLAND-CHECK: "-target-cpu" "oland"
|
Loading…
Reference in New Issue