diff options
-rw-r--r-- | lib/Basic/Targets.cpp | 9 | ||||
-rw-r--r-- | test/CodeGen/nvptx-cpus.c | 11 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index a17b2a8256..54edcbaf68 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -1302,7 +1302,14 @@ namespace { return TargetInfo::CharPtrBuiltinVaList; } virtual bool setCPU(const std::string &Name) { - return Name == "sm_10" || Name == "sm_13" || Name == "sm_20"; + bool Valid = llvm::StringSwitch<bool>(Name) + .Case("sm_20", true) + .Case("sm_21", true) + .Case("sm_30", true) + .Case("sm_35", true) + .Default(false); + + return Valid; } virtual bool setFeatureEnabled(llvm::StringMap<bool> &Features, StringRef Name, diff --git a/test/CodeGen/nvptx-cpus.c b/test/CodeGen/nvptx-cpus.c new file mode 100644 index 0000000000..c9c7680d67 --- /dev/null +++ b/test/CodeGen/nvptx-cpus.c @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_20 -O3 -S -o %t %s -emit-llvm +// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_21 -O3 -S -o %t %s -emit-llvm +// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_30 -O3 -S -o %t %s -emit-llvm +// RUN: %clang_cc1 -triple nvptx-unknown-unknown -target-cpu sm_35 -O3 -S -o %t %s -emit-llvm + +// Make sure clang accepts all supported architectures. + +void foo(float* a, + float* b) { + a[0] = b[0]; +} |