From 3552d3e0f7c943c3547c0227ddd80fd4d0732a7e Mon Sep 17 00:00:00 2001 From: Simon Atanasyan Date: Tue, 5 Nov 2019 02:21:16 +0300 Subject: [PATCH] [mips] Add `octeon+` to the list of CPUs accepted by the driver --- clang/lib/Basic/Targets/Mips.cpp | 3 ++- clang/lib/Basic/Targets/Mips.h | 2 ++ clang/lib/Driver/ToolChains/Gnu.cpp | 3 ++- clang/test/Driver/mips-abi.c | 6 ++++++ clang/test/Driver/mips-as.c | 10 ++++++++++ clang/test/Misc/target-invalid-cpu-note.c | 2 +- 6 files changed, 23 insertions(+), 3 deletions(-) diff --git a/clang/lib/Basic/Targets/Mips.cpp b/clang/lib/Basic/Targets/Mips.cpp index 9b35bbc..a08c231 100644 --- a/clang/lib/Basic/Targets/Mips.cpp +++ b/clang/lib/Basic/Targets/Mips.cpp @@ -39,6 +39,7 @@ bool MipsTargetInfo::processorSupportsGPR64() const { .Case("mips64r5", true) .Case("mips64r6", true) .Case("octeon", true) + .Case("octeon+", true) .Default(false); return false; } @@ -47,7 +48,7 @@ static constexpr llvm::StringLiteral ValidCPUNames[] = { {"mips1"}, {"mips2"}, {"mips3"}, {"mips4"}, {"mips5"}, {"mips32"}, {"mips32r2"}, {"mips32r3"}, {"mips32r5"}, {"mips32r6"}, {"mips64"}, {"mips64r2"}, {"mips64r3"}, {"mips64r5"}, {"mips64r6"}, - {"octeon"}, {"p5600"}}; + {"octeon"}, {"octeon+"}, {"p5600"}}; bool MipsTargetInfo::isValidCPUName(StringRef Name) const { return llvm::find(ValidCPUNames, Name) != std::end(ValidCPUNames); diff --git a/clang/lib/Basic/Targets/Mips.h b/clang/lib/Basic/Targets/Mips.h index 474cda8..224ec07 100644 --- a/clang/lib/Basic/Targets/Mips.h +++ b/clang/lib/Basic/Targets/Mips.h @@ -180,6 +180,8 @@ public: CPU = getCPU(); if (CPU == "octeon") Features["mips64r2"] = Features["cnmips"] = true; + else if (CPU == "octeon+") + Features["mips64r2"] = Features["cnmips"] = Features["cnmipsp"] = true; else Features[CPU] = true; return TargetInfo::initFeatureMap(Features, Diags, CPU, FeaturesVec); diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index c302a31..6a0c756 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -1393,7 +1393,8 @@ bool clang::driver::findMIPSMultilibs(const Driver &D, addMultilibFlag(CPUName == "mips32r6", "march=mips32r6", Flags); addMultilibFlag(CPUName == "mips64", "march=mips64", Flags); addMultilibFlag(CPUName == "mips64r2" || CPUName == "mips64r3" || - CPUName == "mips64r5" || CPUName == "octeon", + CPUName == "mips64r5" || CPUName == "octeon" || + CPUName == "octeon+", "march=mips64r2", Flags); addMultilibFlag(CPUName == "mips64r6", "march=mips64r6", Flags); addMultilibFlag(isMicroMips(Args), "mmicromips", Flags); diff --git a/clang/test/Driver/mips-abi.c b/clang/test/Driver/mips-abi.c index 63ffd99..f0f678b 100644 --- a/clang/test/Driver/mips-abi.c +++ b/clang/test/Driver/mips-abi.c @@ -153,6 +153,12 @@ // MIPS-ARCH-OCTEON: "-target-cpu" "octeon" // MIPS-ARCH-OCTEON: "-target-abi" "n64" // +// RUN: %clang -target mips64-linux-gnu -### -c %s \ +// RUN: -march=octeon+ 2>&1 \ +// RUN: | FileCheck -check-prefix=MIPS-ARCH-OCTEONP %s +// MIPS-ARCH-OCTEONP: "-target-cpu" "octeon+" +// MIPS-ARCH-OCTEONP: "-target-abi" "n64" +// // RUN: not %clang -target mips64-linux-gnu -c %s \ // RUN: -march=mips32 2>&1 \ // RUN: | FileCheck -check-prefix=MIPS-ARCH-6432 %s diff --git a/clang/test/Driver/mips-as.c b/clang/test/Driver/mips-as.c index ced64d8..cd4808d 100644 --- a/clang/test/Driver/mips-as.c +++ b/clang/test/Driver/mips-as.c @@ -88,6 +88,16 @@ // RUN: | FileCheck -check-prefix=MIPS-OCTEON %s // MIPS-OCTEON: as{{(.exe)?}}" "-march" "octeon" "-mabi" "64" "-mno-shared" "-EB" // +// RUN: %clang -target mips64-linux-gnu -march=octeon+ -### \ +// RUN: -no-integrated-as -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=MIPS-OCTEONP-PIC %s +// MIPS-OCTEONP-PIC: as{{(.exe)?}}" "-march" "octeon+" "-mabi" "64" "-EB" "-KPIC" +// +// RUN: %clang -target mips64-linux-gnu -march=octeon+ -### \ +// RUN: -no-integrated-as -c %s -fno-pic -mno-abicalls 2>&1 \ +// RUN: | FileCheck -check-prefix=MIPS-OCTEONP %s +// MIPS-OCTEONP: as{{(.exe)?}}" "-march" "octeon+" "-mabi" "64" "-mno-shared" "-EB" +// // RUN: %clang -target mips-linux-gnu -mips1 -### \ // RUN: -no-integrated-as -c %s 2>&1 \ // RUN: | FileCheck -check-prefix=MIPS-ALIAS-1 %s diff --git a/clang/test/Misc/target-invalid-cpu-note.c b/clang/test/Misc/target-invalid-cpu-note.c index 4f8158e5..bcb5825 100644 --- a/clang/test/Misc/target-invalid-cpu-note.c +++ b/clang/test/Misc/target-invalid-cpu-note.c @@ -88,7 +88,7 @@ // MIPS: error: unknown target CPU 'not-a-cpu' // MIPS: note: valid target CPU values are: mips1, mips2, mips3, mips4, mips5, // MIPS-SAME: mips32, mips32r2, mips32r3, mips32r5, mips32r6, mips64, mips64r2, -// MIPS-SAME: mips64r3, mips64r5, mips64r6, octeon, p5600 +// MIPS-SAME: mips64r3, mips64r5, mips64r6, octeon, octeon+, p5600 // RUN: not %clang_cc1 -triple lanai--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix LANAI // LANAI: error: unknown target CPU 'not-a-cpu' -- 2.7.4