From: Hal Finkel Date: Fri, 1 Feb 2013 05:53:33 +0000 (+0000) Subject: Add PPC A2Q core and BG/Q preprocessor definitions X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5ccd3d0214b9d765a1bb41872da27d3c5530ab2b;p=clang Add PPC A2Q core and BG/Q preprocessor definitions The a2q core is the variant of the a2 core used on the BG/Q supercomputers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174151 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 4d0a833d23..4647970295 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -661,7 +661,9 @@ public: ArchDefine603 = 1 << 4, ArchDefine604 = 1 << 5, ArchDefinePwr4 = 1 << 6, - ArchDefinePwr6 = 1 << 7 + ArchDefinePwr6 = 1 << 7, + ArchDefineA2 = 1 << 8, + ArchDefineA2q = 1 << 9 } ArchDefineTypes; virtual bool setCPU(const std::string &Name) { @@ -686,6 +688,7 @@ public: .Case("970", true) .Case("g5", true) .Case("a2", true) + .Case("a2q", true) .Case("e500mc", true) .Case("e5500", true) .Case("pwr6", true) @@ -894,6 +897,8 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, .Case("pwr6", ArchDefinePwr6 | ArchDefinePpcgr | ArchDefinePpcsq) .Case("pwr7", ArchDefineName | ArchDefinePwr6 | ArchDefinePpcgr | ArchDefinePpcsq) + .Case("a2", ArchDefineA2) + .Case("a2q", ArchDefineName | ArchDefineA2 | ArchDefineA2q) .Default(ArchDefineNone); if (defs & ArchDefineName) @@ -913,7 +918,20 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, if (defs & ArchDefinePwr6) { Builder.defineMacro("_ARCH_PWR5"); Builder.defineMacro("_ARCH_PWR6"); - } + } + if (defs & ArchDefineA2) + Builder.defineMacro("_ARCH_A2"); + if (defs & ArchDefineA2q) { + Builder.defineMacro("_ARCH_A2Q"); + Builder.defineMacro("_ARCH_QP"); + } + + if (getTriple().getVendor() == llvm::Triple::BGQ) { + Builder.defineMacro("__bg__"); + Builder.defineMacro("__THW_BLUEGENE__"); + Builder.defineMacro("__bgq__"); + Builder.defineMacro("__TOS_BGQ__"); + } } void PPCTargetInfo::getDefaultFeatures(llvm::StringMap &Features) const { diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 844367ee44..18b49e65e8 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -1053,6 +1053,7 @@ static std::string getPPCTargetCPU(const ArgList &Args) { .Case("970", "970") .Case("G5", "g5") .Case("a2", "a2") + .Case("a2q", "a2q") .Case("e500mc", "e500mc") .Case("e5500", "e5500") .Case("power6", "pwr6") diff --git a/test/Driver/clang-translation.c b/test/Driver/clang-translation.c index 3ddb189eb1..7010385252 100644 --- a/test/Driver/clang-translation.c +++ b/test/Driver/clang-translation.c @@ -66,6 +66,12 @@ // PPCPWR7: "-cc1" // PPCPWR7: "-target-cpu" "pwr7" +// RUN: %clang -target powerpc64-unknown-linux-gnu \ +// RUN: -### -S %s -mcpu=a2q 2>&1 | FileCheck -check-prefix=PPCA2Q %s +// PPCA2Q: clang +// PPCA2Q: "-cc1" +// PPCA2Q: "-target-cpu" "a2q" + // RUN: %clang -target powerpc64-unknown-linux-gnu \ // RUN: -### -S %s 2>&1 | FileCheck -check-prefix=PPC64NS %s // PPC64NS: clang diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index c45067d7fe..73590f7035 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -1663,6 +1663,21 @@ // PPC64:#define __ppc64__ 1 // PPC64:#define __ppc__ 1 // +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu a2q -fno-signed-char < /dev/null | FileCheck -check-prefix PPCA2Q %s +// +// PPCA2Q:#define _ARCH_A2 1 +// PPCA2Q:#define _ARCH_A2Q 1 +// PPCA2Q:#define _ARCH_PPC 1 +// PPCA2Q:#define _ARCH_PPC64 1 +// PPCA2Q:#define _ARCH_QP 1 +// +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-bgq-linux -fno-signed-char < /dev/null | FileCheck -check-prefix PPCBGQ %s +// +// PPCBGQ:#define __THW_BLUEGENE__ 1 +// PPCBGQ:#define __TOS_BGQ__ 1 +// PPCBGQ:#define __bg__ 1 +// PPCBGQ:#define __bgq__ 1 +// // RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-linux-gnu -fno-signed-char < /dev/null | FileCheck -check-prefix PPC64-LINUX %s // // PPC64-LINUX:#define _ARCH_PPC 1