From 157f7c67420587aae2f9fb37d0c8fea7cf662b51 Mon Sep 17 00:00:00 2001 From: Silviu Baranga Date: Thu, 13 Sep 2012 15:06:00 +0000 Subject: [PATCH] This patch introduces A15 as a target in Clang. llvm-svn: 163804 --- clang/lib/Basic/Targets.cpp | 4 ++-- clang/lib/Driver/ToolChain.cpp | 2 +- clang/lib/Driver/ToolChains.cpp | 3 ++- clang/lib/Driver/Tools.cpp | 5 +++-- clang/test/CodeGen/a15.c | 5 +++++ 5 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 clang/test/CodeGen/a15.c diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 8bb5a2dd43d5..a02ad6d38d82 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -2936,7 +2936,7 @@ public: void getDefaultFeatures(llvm::StringMap &Features) const { if (CPU == "arm1136jf-s" || CPU == "arm1176jzf-s" || CPU == "mpcore") Features["vfp2"] = true; - else if (CPU == "cortex-a8" || CPU == "cortex-a9") + else if (CPU == "cortex-a8" || CPU == "cortex-a9" || CPU == "cortex-a15") Features["neon"] = true; } @@ -3005,7 +3005,7 @@ public: .Cases("arm1176jz-s", "arm1176jzf-s", "6ZK") .Cases("arm1136jf-s", "mpcorenovfp", "mpcore", "6K") .Cases("arm1156t2-s", "arm1156t2f-s", "6T2") - .Cases("cortex-a8", "cortex-a9", "7A") + .Cases("cortex-a8", "cortex-a9", "cortex-a15", "7A") .Cases("cortex-m3", "cortex-m4", "7M") .Case("cortex-m0", "6M") .Default(0); diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index 48ed044c8f5c..df09c20c180f 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -119,7 +119,7 @@ static const char *getLLVMArchSuffixForARM(StringRef CPU) { .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "v6") .Cases("arm1176jzf-s", "mpcorenovfp", "mpcore", "v6") .Cases("arm1156t2-s", "arm1156t2f-s", "v6t2") - .Cases("cortex-a8", "cortex-a9", "v7") + .Cases("cortex-a8", "cortex-a9", "cortex-a15", "v7") .Case("cortex-m3", "v7m") .Case("cortex-m4", "v7m") .Case("cortex-m0", "v6m") diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 8876d95d8099..d6bd0a80d484 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -122,7 +122,8 @@ static const char *GetArmArchForMCpu(StringRef Value) { .Case("xscale", "xscale") .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "arm1176jzf-s", "cortex-m0", "armv6") - .Cases("cortex-a8", "cortex-r4", "cortex-m3", "cortex-a9", "armv7") + .Cases("cortex-a8", "cortex-r4", "cortex-m3", "cortex-a9", "cortex-a15", + "armv7") .Default(0); } diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index f26ed159d1e1..63182f8c28da 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -442,7 +442,7 @@ static const char *getLLVMArchSuffixForARM(StringRef CPU) { .Cases("arm1136j-s", "arm1136jf-s", "arm1176jz-s", "v6") .Cases("arm1176jzf-s", "mpcorenovfp", "mpcore", "v6") .Cases("arm1156t2-s", "arm1156t2f-s", "v6t2") - .Cases("cortex-a8", "cortex-a9", "v7") + .Cases("cortex-a8", "cortex-a9", "cortex-a15", "v7") .Case("cortex-m3", "v7m") .Case("cortex-m4", "v7m") .Case("cortex-m0", "v6m") @@ -576,7 +576,8 @@ static void addFPMathArgs(const Driver &D, const Arg *A, const ArgList &Args, CmdArgs.push_back("-target-feature"); CmdArgs.push_back("+neonfp"); - if (CPU != "cortex-a8" && CPU != "cortex-a9" && CPU != "cortex-a9-mp") + if (CPU != "cortex-a8" && CPU != "cortex-a9" && CPU != "cortex-a9-mp" && + CPU != "cortex-a15") D.Diag(diag::err_drv_invalid_feature) << "-mfpmath=neon" << CPU; } else if (FPMath == "vfp" || FPMath == "vfp2" || FPMath == "vfp3" || diff --git a/clang/test/CodeGen/a15.c b/clang/test/CodeGen/a15.c new file mode 100644 index 000000000000..115b1091da33 --- /dev/null +++ b/clang/test/CodeGen/a15.c @@ -0,0 +1,5 @@ +// RUN: %clang -ccc-host-triple armv7-none-linux-gnueabi -mcpu=cortex-a15 -emit-llvm -S %s -o /dev/null + +int main() { + return 0; +}