diff options
author | Walter Lee <waltl@google.com> | 2017-10-02 18:50:57 +0000 |
---|---|---|
committer | Walter Lee <waltl@google.com> | 2017-10-02 18:50:57 +0000 |
commit | 0e22b1b52952c3e5334f0d5105ca08430d7eeff1 (patch) | |
tree | 0e0a749f68a7702b693edb0708d472f11f3a7dc8 | |
parent | 7b93fc9054c185272b5e4b3c4bc9cd8f512fd9f4 (diff) |
Add support for Myriad ma2x8x series of CPUs
Summary:
Also:
- Add support for some older Myriad CPUs that were missing.
- Fix some incorrect compiler defines for exisitng CPUs.
Reviewers: jyknight
Subscribers: fedor.sergeev
Differential Revision: https://reviews.llvm.org/D37551
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@314706 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Basic/Targets/Sparc.cpp | 53 | ||||
-rw-r--r-- | lib/Basic/Targets/Sparc.h | 16 | ||||
-rw-r--r-- | test/Preprocessor/predefined-arch-macros.c | 50 |
3 files changed, 110 insertions, 9 deletions
diff --git a/lib/Basic/Targets/Sparc.cpp b/lib/Basic/Targets/Sparc.cpp index b6d47a4c5b..429c1ee3a2 100644 --- a/lib/Basic/Targets/Sparc.cpp +++ b/lib/Basic/Targets/Sparc.cpp @@ -70,12 +70,21 @@ SparcTargetInfo::CPUKind SparcTargetInfo::getCPUKind(StringRef Name) const { .Case("niagara4", CK_NIAGARA4) .Case("ma2100", CK_MYRIAD2100) .Case("ma2150", CK_MYRIAD2150) + .Case("ma2155", CK_MYRIAD2155) .Case("ma2450", CK_MYRIAD2450) + .Case("ma2455", CK_MYRIAD2455) + .Case("ma2x5x", CK_MYRIAD2x5x) + .Case("ma2080", CK_MYRIAD2080) + .Case("ma2085", CK_MYRIAD2085) + .Case("ma2480", CK_MYRIAD2480) + .Case("ma2485", CK_MYRIAD2485) + .Case("ma2x8x", CK_MYRIAD2x8x) // FIXME: the myriad2[.n] spellings are obsolete, // but a grace period is needed to allow updating dependent builds. - .Case("myriad2", CK_MYRIAD2100) + .Case("myriad2", CK_MYRIAD2x5x) .Case("myriad2.1", CK_MYRIAD2100) - .Case("myriad2.2", CK_MYRIAD2150) + .Case("myriad2.2", CK_MYRIAD2x5x) + .Case("myriad2.3", CK_MYRIAD2x8x) .Case("leon2", CK_LEON2) .Case("at697e", CK_LEON2_AT697E) .Case("at697f", CK_LEON2_AT697F) @@ -118,21 +127,57 @@ void SparcV8TargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__sparc_v8__"); Builder.defineMacro("__leon__"); switch (CPU) { + case CK_MYRIAD2100: + MyriadArchValue = "__ma2100"; + Myriad2Value = "1"; + break; case CK_MYRIAD2150: MyriadArchValue = "__ma2150"; Myriad2Value = "2"; break; + case CK_MYRIAD2155: + MyriadArchValue = "__ma2155"; + Myriad2Value = "2"; + break; case CK_MYRIAD2450: MyriadArchValue = "__ma2450"; Myriad2Value = "2"; break; + case CK_MYRIAD2455: + MyriadArchValue = "__ma2455"; + Myriad2Value = "2"; + break; + case CK_MYRIAD2x5x: + Myriad2Value = "2"; + break; + case CK_MYRIAD2080: + MyriadArchValue = "__ma2080"; + Myriad2Value = "3"; + break; + case CK_MYRIAD2085: + MyriadArchValue = "__ma2085"; + Myriad2Value = "3"; + break; + case CK_MYRIAD2480: + MyriadArchValue = "__ma2480"; + Myriad2Value = "3"; + break; + case CK_MYRIAD2485: + MyriadArchValue = "__ma2485"; + Myriad2Value = "3"; + break; + case CK_MYRIAD2x8x: + Myriad2Value = "3"; + break; default: MyriadArchValue = "__ma2100"; Myriad2Value = "1"; break; } - Builder.defineMacro(MyriadArchValue, "1"); - Builder.defineMacro(MyriadArchValue + "__", "1"); + if (!MyriadArchValue.empty()) { + Builder.defineMacro(MyriadArchValue, "1"); + Builder.defineMacro(MyriadArchValue + "__", "1"); + } Builder.defineMacro("__myriad2__", Myriad2Value); Builder.defineMacro("__myriad2", Myriad2Value); } diff --git a/lib/Basic/Targets/Sparc.h b/lib/Basic/Targets/Sparc.h index 95d2b48f39..aacc26119d 100644 --- a/lib/Basic/Targets/Sparc.h +++ b/lib/Basic/Targets/Sparc.h @@ -107,7 +107,15 @@ public: CK_NIAGARA4, CK_MYRIAD2100, CK_MYRIAD2150, + CK_MYRIAD2155, CK_MYRIAD2450, + CK_MYRIAD2455, + CK_MYRIAD2x5x, + CK_MYRIAD2080, + CK_MYRIAD2085, + CK_MYRIAD2480, + CK_MYRIAD2485, + CK_MYRIAD2x8x, CK_LEON2, CK_LEON2_AT697E, CK_LEON2_AT697F, @@ -136,7 +144,15 @@ public: case CK_TSC701: case CK_MYRIAD2100: case CK_MYRIAD2150: + case CK_MYRIAD2155: case CK_MYRIAD2450: + case CK_MYRIAD2455: + case CK_MYRIAD2x5x: + case CK_MYRIAD2080: + case CK_MYRIAD2085: + case CK_MYRIAD2480: + case CK_MYRIAD2485: + case CK_MYRIAD2x8x: case CK_LEON2: case CK_LEON2_AT697E: case CK_LEON2_AT697F: diff --git a/test/Preprocessor/predefined-arch-macros.c b/test/Preprocessor/predefined-arch-macros.c index dd2a72250b..aba0665b65 100644 --- a/test/Preprocessor/predefined-arch-macros.c +++ b/test/Preprocessor/predefined-arch-macros.c @@ -2137,21 +2137,61 @@ // RUN: -target sparcel-unknown-linux \ // RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_SPARCEL // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.1 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.2 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=myriad2.3 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2100 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-1 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2150 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2155 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2450 2>&1 \ -// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 -check-prefix=CHECK_SPARCEL +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2455 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x5x 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-2 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2080 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2085 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2480 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2485 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 +// RUN: %clang -E -dM %s -o - -target sparcel-myriad -mcpu=ma2x8x 2>&1 \ +// RUN: | FileCheck -match-full-lines %s -check-prefix=CHECK_MYRIAD2-3 \ +// RUN: -check-prefix=CHECK_SPARCEL -check-prefix=CHECK_MYRIAD2 // CHECK_SPARCEL: #define __LITTLE_ENDIAN__ 1 +// CHECK_MYRIAD2: #define __leon__ 1 // CHECK_MYRIAD2-1: #define __myriad2 1 // CHECK_MYRIAD2-1: #define __myriad2__ 1 // CHECK_MYRIAD2-2: #define __myriad2 2 // CHECK_MYRIAD2-2: #define __myriad2__ 2 +// CHECK_MYRIAD2-3: #define __myriad2 3 +// CHECK_MYRIAD2-3: #define __myriad2__ 3 // CHECK_SPARCEL: #define __sparc 1 // CHECK_SPARCEL: #define __sparc__ 1 -// CHECK_MYRIAD2-1: #define __sparc_v8__ 1 +// CHECK_MYRIAD2: #define __sparc_v8__ 1 // CHECK_SPARCEL: #define __sparcv8 1 // // RUN: %clang -E -dM %s -o - 2>&1 \ |