From f048751912afc0bd38a2a1875e3da089d7d26fc2 Mon Sep 17 00:00:00 2001 From: Will Schmidt Date: Thu, 26 Jun 2014 13:34:10 +0000 Subject: [PATCH] Add ppc64/power8 as a target llvm-svn: 211778 --- clang/lib/Basic/Targets.cpp | 20 ++++++++++++++++---- clang/lib/Driver/Tools.cpp | 2 ++ clang/test/Driver/clang-translation.c | 6 ++++++ clang/test/Driver/ppc-features.cpp | 5 ++++- clang/test/Preprocessor/init.c | 28 ++++++++++++++++++++++++++++ 5 files changed, 56 insertions(+), 5 deletions(-) diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index a71e8b0..fde4284 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -706,8 +706,9 @@ public: ArchDefinePwr6 = 1 << 9, ArchDefinePwr6x = 1 << 10, ArchDefinePwr7 = 1 << 11, - ArchDefineA2 = 1 << 12, - ArchDefineA2q = 1 << 13 + ArchDefinePwr8 = 1 << 12, + ArchDefineA2 = 1 << 13, + ArchDefineA2q = 1 << 14 } ArchDefineTypes; // Note: GCC recognizes the following additional cpus: @@ -754,6 +755,8 @@ public: .Case("pwr6x", true) .Case("power7", true) .Case("pwr7", true) + .Case("power8", true) + .Case("pwr8", true) .Case("powerpc", true) .Case("ppc", true) .Case("powerpc64", true) @@ -1016,7 +1019,10 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, | ArchDefinePpcsq) .Case("pwr7", ArchDefineName | ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 - | ArchDefinePwr6 | ArchDefinePpcgr | ArchDefinePpcsq) + | ArchDefinePpcgr | ArchDefinePpcsq) + .Case("pwr8", ArchDefineName | ArchDefinePwr7 | ArchDefinePwr6x + | ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 + | ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) .Case("power3", ArchDefinePpcgr) .Case("power4", ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) .Case("power5", ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr @@ -1030,7 +1036,10 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, | ArchDefinePpcsq) .Case("power7", ArchDefinePwr7 | ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 - | ArchDefinePwr6 | ArchDefinePpcgr | ArchDefinePpcsq) + | ArchDefinePpcgr | ArchDefinePpcsq) + .Case("power8", ArchDefinePwr8 | ArchDefinePwr7 | ArchDefinePwr6x + | ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 + | ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq) .Default(ArchDefineNone); if (defs & ArchDefineName) @@ -1057,6 +1066,8 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("_ARCH_PWR6X"); if (defs & ArchDefinePwr7) Builder.defineMacro("_ARCH_PWR7"); + if (defs & ArchDefinePwr8) + Builder.defineMacro("_ARCH_PWR8"); if (defs & ArchDefineA2) Builder.defineMacro("_ARCH_A2"); if (defs & ArchDefineA2q) { @@ -1105,6 +1116,7 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap &Features) const { .Case("g5", true) .Case("pwr6", true) .Case("pwr7", true) + .Case("pwr8", true) .Case("ppc64", true) .Case("ppc64le", true) .Default(false); diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 1f89d39..76b9890 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -1156,6 +1156,7 @@ static std::string getPPCTargetCPU(const ArgList &Args) { .Case("power6", "pwr6") .Case("power6x", "pwr6x") .Case("power7", "pwr7") + .Case("power8", "pwr8") .Case("pwr3", "pwr3") .Case("pwr4", "pwr4") .Case("pwr5", "pwr5") @@ -1163,6 +1164,7 @@ static std::string getPPCTargetCPU(const ArgList &Args) { .Case("pwr6", "pwr6") .Case("pwr6x", "pwr6x") .Case("pwr7", "pwr7") + .Case("pwr8", "pwr8") .Case("powerpc", "ppc") .Case("powerpc64", "ppc64") .Case("powerpc64le", "ppc64le") diff --git a/clang/test/Driver/clang-translation.c b/clang/test/Driver/clang-translation.c index 34a932d..9db23a0 100644 --- a/clang/test/Driver/clang-translation.c +++ b/clang/test/Driver/clang-translation.c @@ -71,6 +71,12 @@ // PPCPWR7: "-target-cpu" "pwr7" // RUN: %clang -target powerpc64-unknown-linux-gnu \ +// RUN: -### -S %s -mcpu=power8 2>&1 | FileCheck -check-prefix=PPCPWR8 %s +// PPCPWR8: clang +// PPCPWR8: "-cc1" +// PPCPWR8: "-target-cpu" "pwr8" + +// RUN: %clang -target powerpc64-unknown-linux-gnu \ // RUN: -### -S %s -mcpu=a2q 2>&1 | FileCheck -check-prefix=PPCA2Q %s // PPCA2Q: clang // PPCA2Q: "-cc1" diff --git a/clang/test/Driver/ppc-features.cpp b/clang/test/Driver/ppc-features.cpp index a7ccedf..fa9a7ec 100644 --- a/clang/test/Driver/ppc-features.cpp +++ b/clang/test/Driver/ppc-features.cpp @@ -59,9 +59,12 @@ // RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr7 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-14 %s // CHECK-14: "-target-feature" "-altivec" -// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=ppc64 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-15 %s +// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=pwr8 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-15 %s // CHECK-15: "-target-feature" "-altivec" +// RUN: %clang -target powerpc64-unknown-linux-gnu %s -fno-altivec -mcpu=ppc64 -### -o %t.o 2>&1 | FileCheck --check-prefix=CHECK-16 %s +// CHECK-16: "-target-feature" "-altivec" + // RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-qpx -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOQPX %s // CHECK-NOQPX: "-target-feature" "-qpx" diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index ea2e0db..a3cc2ed 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -3971,6 +3971,34 @@ // PPCPOWER7:#define _ARCH_PWR6X 1 // PPCPOWER7:#define _ARCH_PWR7 1 // +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr8 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPWR8 %s +// +// PPCPWR8:#define _ARCH_PPC 1 +// PPCPWR8:#define _ARCH_PPC64 1 +// PPCPWR8:#define _ARCH_PPCGR 1 +// PPCPWR8:#define _ARCH_PPCSQ 1 +// PPCPWR8:#define _ARCH_PWR4 1 +// PPCPWR8:#define _ARCH_PWR5 1 +// PPCPWR8:#define _ARCH_PWR5X 1 +// PPCPWR8:#define _ARCH_PWR6 1 +// PPCPWR8:#define _ARCH_PWR6X 1 +// PPCPWR8:#define _ARCH_PWR7 1 +// PPCPWR8:#define _ARCH_PWR8 1 +// +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power8 -fno-signed-char < /dev/null | FileCheck -check-prefix PPCPOWER8 %s +// +// PPCPOWER8:#define _ARCH_PPC 1 +// PPCPOWER8:#define _ARCH_PPC64 1 +// PPCPOWER8:#define _ARCH_PPCGR 1 +// PPCPOWER8:#define _ARCH_PPCSQ 1 +// PPCPOWER8:#define _ARCH_PWR4 1 +// PPCPOWER8:#define _ARCH_PWR5 1 +// PPCPOWER8:#define _ARCH_PWR5X 1 +// PPCPOWER8:#define _ARCH_PWR6 1 +// PPCPOWER8:#define _ARCH_PWR6X 1 +// PPCPOWER8:#define _ARCH_PWR7 1 +// PPCPOWER8:#define _ARCH_PWR8 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 -- 2.7.4