forked from OSchip/llvm-project
Revert "[PowerPC] Add support for -mcpu=pwr10 in both clang and llvm"
This reverts commit 7eb666b155
.
This commit is contained in:
parent
78bd0c0e5e
commit
559845f8fe
|
@ -151,8 +151,6 @@ void PPCTargetInfo::getTargetDefines(const LangOptions &Opts,
|
|||
Builder.defineMacro("_ARCH_PWR8");
|
||||
if (ArchDefs & ArchDefinePwr9)
|
||||
Builder.defineMacro("_ARCH_PWR9");
|
||||
if (ArchDefs & ArchDefinePwr10)
|
||||
Builder.defineMacro("_ARCH_PWR10");
|
||||
if (ArchDefs & ArchDefineA2)
|
||||
Builder.defineMacro("_ARCH_A2");
|
||||
if (ArchDefs & ArchDefineA2q) {
|
||||
|
@ -265,51 +263,41 @@ bool PPCTargetInfo::initFeatureMap(
|
|||
.Case("pwr7", true)
|
||||
.Case("pwr8", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("ppc64", true)
|
||||
.Case("ppc64le", true)
|
||||
.Default(false);
|
||||
|
||||
Features["qpx"] = (CPU == "a2q");
|
||||
Features["power9-vector"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Default(false);
|
||||
Features["power9-vector"] = (CPU == "pwr9");
|
||||
Features["crypto"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Default(false);
|
||||
Features["power8-vector"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Default(false);
|
||||
Features["bpermd"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Case("pwr7", true)
|
||||
.Default(false);
|
||||
Features["extdiv"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Case("pwr7", true)
|
||||
.Default(false);
|
||||
Features["direct-move"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Default(false);
|
||||
Features["vsx"] = llvm::StringSwitch<bool>(CPU)
|
||||
.Case("ppc64le", true)
|
||||
.Case("pwr10", true)
|
||||
.Case("pwr9", true)
|
||||
.Case("pwr8", true)
|
||||
.Case("pwr7", true)
|
||||
|
@ -325,10 +313,10 @@ bool PPCTargetInfo::initFeatureMap(
|
|||
.Case("e500", true)
|
||||
.Default(false);
|
||||
|
||||
// Future CPU should include all of the features of Power 10 as well as any
|
||||
// Future CPU should include all of the features of Power 9 as well as any
|
||||
// additional features (yet to be determined) specific to it.
|
||||
if (CPU == "future") {
|
||||
initFeatureMap(Features, Diags, "pwr10", FeaturesVec);
|
||||
initFeatureMap(Features, Diags, "pwr9", FeaturesVec);
|
||||
addFutureSpecificFeatures(Features);
|
||||
}
|
||||
|
||||
|
@ -475,17 +463,18 @@ ArrayRef<TargetInfo::AddlRegName> PPCTargetInfo::getGCCAddlRegNames() const {
|
|||
}
|
||||
|
||||
static constexpr llvm::StringLiteral ValidCPUNames[] = {
|
||||
{"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
|
||||
{"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
|
||||
{"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
|
||||
{"7450"}, {"g4+"}, {"750"}, {"8548"}, {"970"},
|
||||
{"g5"}, {"a2"}, {"a2q"}, {"e500"}, {"e500mc"},
|
||||
{"e5500"}, {"power3"}, {"pwr3"}, {"power4"}, {"pwr4"},
|
||||
{"power5"}, {"pwr5"}, {"power5x"}, {"pwr5x"}, {"power6"},
|
||||
{"pwr6"}, {"power6x"}, {"pwr6x"}, {"power7"}, {"pwr7"},
|
||||
{"power8"}, {"pwr8"}, {"power9"}, {"pwr9"}, {"power10"},
|
||||
{"pwr10"}, {"powerpc"}, {"ppc"}, {"powerpc64"}, {"ppc64"},
|
||||
{"powerpc64le"}, {"ppc64le"}, {"future"}};
|
||||
{"generic"}, {"440"}, {"450"}, {"601"}, {"602"},
|
||||
{"603"}, {"603e"}, {"603ev"}, {"604"}, {"604e"},
|
||||
{"620"}, {"630"}, {"g3"}, {"7400"}, {"g4"},
|
||||
{"7450"}, {"g4+"}, {"750"}, {"8548"}, {"970"},
|
||||
{"g5"}, {"a2"}, {"a2q"}, {"e500"}, {"e500mc"},
|
||||
{"e5500"}, {"power3"}, {"pwr3"}, {"power4"}, {"pwr4"},
|
||||
{"power5"}, {"pwr5"}, {"power5x"}, {"pwr5x"}, {"power6"},
|
||||
{"pwr6"}, {"power6x"}, {"pwr6x"}, {"power7"}, {"pwr7"},
|
||||
{"power8"}, {"pwr8"}, {"power9"}, {"pwr9"}, {"powerpc"},
|
||||
{"ppc"}, {"powerpc64"}, {"ppc64"}, {"powerpc64le"}, {"ppc64le"},
|
||||
{"future"}
|
||||
};
|
||||
|
||||
bool PPCTargetInfo::isValidCPUName(StringRef Name) const {
|
||||
return llvm::find(ValidCPUNames, Name) != std::end(ValidCPUNames);
|
||||
|
|
|
@ -43,13 +43,13 @@ class LLVM_LIBRARY_VISIBILITY PPCTargetInfo : public TargetInfo {
|
|||
ArchDefinePwr7 = 1 << 11,
|
||||
ArchDefinePwr8 = 1 << 12,
|
||||
ArchDefinePwr9 = 1 << 13,
|
||||
ArchDefinePwr10 = 1 << 14,
|
||||
ArchDefineFuture = 1 << 15,
|
||||
ArchDefineA2 = 1 << 16,
|
||||
ArchDefineA2q = 1 << 17,
|
||||
ArchDefineE500 = 1 << 18
|
||||
ArchDefineFuture = 1 << 14,
|
||||
ArchDefineA2 = 1 << 15,
|
||||
ArchDefineA2q = 1 << 16,
|
||||
ArchDefineE500 = 1 << 17
|
||||
} ArchDefineTypes;
|
||||
|
||||
|
||||
ArchDefineTypes ArchDefs = ArchDefineNone;
|
||||
static const Builtin::Info BuiltinInfo[];
|
||||
static const char *const GCCRegNames[];
|
||||
|
@ -119,20 +119,20 @@ public:
|
|||
.Case("a2q", ArchDefineName | ArchDefineA2 | ArchDefineA2q)
|
||||
.Cases("power3", "pwr3", ArchDefinePpcgr)
|
||||
.Cases("power4", "pwr4",
|
||||
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
.Cases("power5", "pwr5",
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
.Cases("power5x", "pwr5x",
|
||||
ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 |
|
||||
ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 |
|
||||
ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
.Cases("power6", "pwr6",
|
||||
ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 |
|
||||
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 |
|
||||
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
.Cases("power6x", "pwr6x",
|
||||
ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x |
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
ArchDefinePwr6x | ArchDefinePwr6 | ArchDefinePwr5x |
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
.Cases("power7", "pwr7",
|
||||
ArchDefinePwr7 | ArchDefinePwr6 | ArchDefinePwr5x |
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
|
@ -146,16 +146,11 @@ public:
|
|||
ArchDefinePwr9 | ArchDefinePwr8 | ArchDefinePwr7 |
|
||||
ArchDefinePwr6 | ArchDefinePwr5x | ArchDefinePwr5 |
|
||||
ArchDefinePwr4 | ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
.Cases("power10", "pwr10",
|
||||
ArchDefinePwr10 | ArchDefinePwr9 | ArchDefinePwr8 |
|
||||
ArchDefinePwr7 | ArchDefinePwr6 | ArchDefinePwr5x |
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
.Case("future",
|
||||
ArchDefineFuture | ArchDefinePwr10 | ArchDefinePwr9 |
|
||||
ArchDefinePwr8 | ArchDefinePwr7 | ArchDefinePwr6 |
|
||||
ArchDefinePwr5x | ArchDefinePwr5 | ArchDefinePwr4 |
|
||||
ArchDefinePpcgr | ArchDefinePpcsq)
|
||||
ArchDefineFuture | ArchDefinePwr9 | ArchDefinePwr8 |
|
||||
ArchDefinePwr7 | ArchDefinePwr6 | ArchDefinePwr5x |
|
||||
ArchDefinePwr5 | ArchDefinePwr4 | ArchDefinePpcgr |
|
||||
ArchDefinePpcsq)
|
||||
.Cases("8548", "e500", ArchDefineE500)
|
||||
.Default(ArchDefineNone);
|
||||
}
|
||||
|
|
|
@ -70,7 +70,6 @@ std::string ppc::getPPCTargetCPU(const ArgList &Args) {
|
|||
.Case("power7", "pwr7")
|
||||
.Case("power8", "pwr8")
|
||||
.Case("power9", "pwr9")
|
||||
.Case("power10", "pwr10")
|
||||
.Case("future", "future")
|
||||
.Case("pwr3", "pwr3")
|
||||
.Case("pwr4", "pwr4")
|
||||
|
@ -81,7 +80,6 @@ std::string ppc::getPPCTargetCPU(const ArgList &Args) {
|
|||
.Case("pwr7", "pwr7")
|
||||
.Case("pwr8", "pwr8")
|
||||
.Case("pwr9", "pwr9")
|
||||
.Case("pwr10", "pwr10")
|
||||
.Case("powerpc", "ppc")
|
||||
.Case("powerpc64", "ppc64")
|
||||
.Case("powerpc64le", "ppc64le")
|
||||
|
@ -93,16 +91,14 @@ std::string ppc::getPPCTargetCPU(const ArgList &Args) {
|
|||
|
||||
const char *ppc::getPPCAsmModeForCPU(StringRef Name) {
|
||||
return llvm::StringSwitch<const char *>(Name)
|
||||
.Case("pwr7", "-mpower7")
|
||||
.Case("power7", "-mpower7")
|
||||
.Case("pwr8", "-mpower8")
|
||||
.Case("power8", "-mpower8")
|
||||
.Case("ppc64le", "-mpower8")
|
||||
.Case("pwr9", "-mpower9")
|
||||
.Case("power9", "-mpower9")
|
||||
.Case("pwr10", "-mpower10")
|
||||
.Case("power10", "-mpower10")
|
||||
.Default("-many");
|
||||
.Case("pwr7", "-mpower7")
|
||||
.Case("power7", "-mpower7")
|
||||
.Case("pwr8", "-mpower8")
|
||||
.Case("power8", "-mpower8")
|
||||
.Case("ppc64le", "-mpower8")
|
||||
.Case("pwr9", "-mpower9")
|
||||
.Case("power9", "-mpower9")
|
||||
.Default("-many");
|
||||
}
|
||||
|
||||
void ppc::getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
// PPC-SAME: 603e, 603ev, 604, 604e, 620, 630, g3, 7400, g4, 7450, g4+, 750,
|
||||
// PPC-SAME: 8548, 970, g5, a2, a2q, e500, e500mc, e5500, power3, pwr3, power4,
|
||||
// PPC-SAME: pwr4, power5, pwr5, power5x, pwr5x, power6, pwr6, power6x, pwr6x,
|
||||
// PPC-SAME: power7, pwr7, power8, pwr8, power9, pwr9, power10, pwr10, powerpc, ppc, powerpc64,
|
||||
// PPC-SAME: power7, pwr7, power8, pwr8, power9, pwr9, powerpc, ppc, powerpc64,
|
||||
// PPC-SAME: ppc64, powerpc64le, ppc64le, future
|
||||
|
||||
// RUN: not %clang_cc1 -triple mips--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix MIPS
|
||||
|
|
|
@ -627,30 +627,12 @@
|
|||
// PPCPOWER9:#define _ARCH_PWR7 1
|
||||
// PPCPOWER9:#define _ARCH_PWR9 1
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu pwr10 -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPCPOWER10 %s
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu power10 -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPCPOWER10 %s
|
||||
//
|
||||
// PPCPOWER10:#define _ARCH_PPC 1
|
||||
// PPCPOWER10:#define _ARCH_PPC64 1
|
||||
// PPCPOWER10:#define _ARCH_PPCGR 1
|
||||
// PPCPOWER10:#define _ARCH_PPCSQ 1
|
||||
// PPCPOWER10:#define _ARCH_PWR10 1
|
||||
// PPCPOWER10:#define _ARCH_PWR4 1
|
||||
// PPCPOWER10:#define _ARCH_PWR5 1
|
||||
// PPCPOWER10:#define _ARCH_PWR5X 1
|
||||
// PPCPOWER10:#define _ARCH_PWR6 1
|
||||
// PPCPOWER10-NOT:#define _ARCH_PWR6X 1
|
||||
// PPCPOWER10:#define _ARCH_PWR7 1
|
||||
// PPCPOWER10:#define _ARCH_PWR8 1
|
||||
// PPCPOWER10:#define _ARCH_PWR9 1
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-none-none -target-cpu future -fno-signed-char < /dev/null | FileCheck -match-full-lines -check-prefix PPCFUTURE %s
|
||||
//
|
||||
// PPCFUTURE:#define _ARCH_PPC 1
|
||||
// PPCFUTURE:#define _ARCH_PPC64 1
|
||||
// PPCFUTURE:#define _ARCH_PPCGR 1
|
||||
// PPCFUTURE:#define _ARCH_PPCSQ 1
|
||||
// PPCFUTURE:#define _ARCH_PWR10 1
|
||||
// PPCFUTURE:#define _ARCH_PWR4 1
|
||||
// PPCFUTURE:#define _ARCH_PWR5 1
|
||||
// PPCFUTURE:#define _ARCH_PWR5X 1
|
||||
|
|
|
@ -142,7 +142,6 @@ StringRef sys::detail::getHostCPUNameForPowerPC(StringRef ProcCpuinfoContent) {
|
|||
.Case("POWER8E", "pwr8")
|
||||
.Case("POWER8NVL", "pwr8")
|
||||
.Case("POWER9", "pwr9")
|
||||
.Case("POWER10", "pwr10")
|
||||
// FIXME: If we get a simulator or machine with the capabilities of
|
||||
// mcpu=future, we should revisit this and add the name reported by the
|
||||
// simulator/machine.
|
||||
|
|
|
@ -51,7 +51,6 @@ def DirectivePwr6x
|
|||
def DirectivePwr7: SubtargetFeature<"", "CPUDirective", "PPC::DIR_PWR7", "">;
|
||||
def DirectivePwr8: SubtargetFeature<"", "CPUDirective", "PPC::DIR_PWR8", "">;
|
||||
def DirectivePwr9: SubtargetFeature<"", "CPUDirective", "PPC::DIR_PWR9", "">;
|
||||
def DirectivePwr10: SubtargetFeature<"", "CPUDirective", "PPC::DIR_PWR10", "">;
|
||||
def DirectivePwrFuture
|
||||
: SubtargetFeature<"", "CPUDirective", "PPC::DIR_PWR_FUTURE", "">;
|
||||
|
||||
|
@ -206,9 +205,6 @@ def DeprecatedDST : SubtargetFeature<"", "DeprecatedDST", "true",
|
|||
def FeatureISA3_0 : SubtargetFeature<"isa-v30-instructions", "IsISA3_0",
|
||||
"true",
|
||||
"Enable instructions added in ISA 3.0.">;
|
||||
def FeatureISA3_1 : SubtargetFeature<"isa-v31-instructions", "IsISA3_1",
|
||||
"true",
|
||||
"Enable instructions added in ISA 3.1.">;
|
||||
def FeatureP9Altivec : SubtargetFeature<"power9-altivec", "HasP9Altivec", "true",
|
||||
"Enable POWER9 Altivec instructions",
|
||||
[FeatureISA3_0, FeatureP8Altivec]>;
|
||||
|
@ -332,25 +328,14 @@ def ProcessorFeatures {
|
|||
list<SubtargetFeature> P9Features =
|
||||
!listconcat(P9InheritableFeatures, P9SpecificFeatures);
|
||||
|
||||
// Power10
|
||||
// For P10 CPU we assume that all of the existing features from Power9
|
||||
// still exist with the exception of those we know are Power9 specific.
|
||||
list<SubtargetFeature> P10AdditionalFeatures =
|
||||
[DirectivePwr10, FeatureISA3_1, FeaturePrefixInstrs,
|
||||
FeaturePCRelativeMemops];
|
||||
list<SubtargetFeature> P10SpecificFeatures = [];
|
||||
list<SubtargetFeature> P10InheritableFeatures =
|
||||
!listconcat(P9InheritableFeatures, P10AdditionalFeatures);
|
||||
list<SubtargetFeature> P10Features =
|
||||
!listconcat(P10InheritableFeatures, P10SpecificFeatures);
|
||||
|
||||
// Future
|
||||
// For future CPU we assume that all of the existing features from Power10
|
||||
// still exist with the exception of those we know are Power10 specific.
|
||||
// For future CPU we assume that all of the existing features from Power 9
|
||||
// still exist with the exception of those we know are Power 9 specific.
|
||||
list<SubtargetFeature> FutureAdditionalFeatures = [];
|
||||
list<SubtargetFeature> FutureSpecificFeatures = [];
|
||||
list<SubtargetFeature> FutureSpecificFeatures =
|
||||
[FeaturePrefixInstrs, FeaturePCRelativeMemops];
|
||||
list<SubtargetFeature> FutureInheritableFeatures =
|
||||
!listconcat(P10InheritableFeatures, FutureAdditionalFeatures);
|
||||
!listconcat(P9InheritableFeatures, FutureAdditionalFeatures);
|
||||
list<SubtargetFeature> FutureFeatures =
|
||||
!listconcat(FutureInheritableFeatures, FutureSpecificFeatures);
|
||||
}
|
||||
|
@ -555,8 +540,6 @@ def : ProcessorModel<"pwr6x", G5Model,
|
|||
def : ProcessorModel<"pwr7", P7Model, ProcessorFeatures.P7Features>;
|
||||
def : ProcessorModel<"pwr8", P8Model, ProcessorFeatures.P8Features>;
|
||||
def : ProcessorModel<"pwr9", P9Model, ProcessorFeatures.P9Features>;
|
||||
// No scheduler model yet.
|
||||
def : ProcessorModel<"pwr10", NoSchedModel, ProcessorFeatures.P10Features>;
|
||||
// No scheduler model for future CPU.
|
||||
def : ProcessorModel<"future", NoSchedModel,
|
||||
ProcessorFeatures.FutureFeatures>;
|
||||
|
|
|
@ -1306,7 +1306,6 @@ PPCTargetLowering::PPCTargetLowering(const PPCTargetMachine &TM,
|
|||
case PPC::DIR_PWR7:
|
||||
case PPC::DIR_PWR8:
|
||||
case PPC::DIR_PWR9:
|
||||
case PPC::DIR_PWR10:
|
||||
case PPC::DIR_PWR_FUTURE:
|
||||
setPrefLoopAlignment(Align(16));
|
||||
setPrefFunctionAlignment(Align(16));
|
||||
|
@ -14914,7 +14913,6 @@ Align PPCTargetLowering::getPrefLoopAlignment(MachineLoop *ML) const {
|
|||
case PPC::DIR_PWR7:
|
||||
case PPC::DIR_PWR8:
|
||||
case PPC::DIR_PWR9:
|
||||
case PPC::DIR_PWR10:
|
||||
case PPC::DIR_PWR_FUTURE: {
|
||||
if (!ML)
|
||||
break;
|
||||
|
@ -16105,7 +16103,6 @@ SDValue PPCTargetLowering::combineMUL(SDNode *N, DAGCombinerInfo &DCI) const {
|
|||
// vector 7 2 2
|
||||
return true;
|
||||
case PPC::DIR_PWR9:
|
||||
case PPC::DIR_PWR10:
|
||||
case PPC::DIR_PWR_FUTURE:
|
||||
// type mul add shl
|
||||
// scalar 5 2 2
|
||||
|
|
|
@ -115,7 +115,6 @@ void PPCSubtarget::initializeEnvironment() {
|
|||
HasAddiLoadFusion = false;
|
||||
HasAddisLoadFusion = false;
|
||||
IsISA3_0 = false;
|
||||
IsISA3_1 = false;
|
||||
UseLongCalls = false;
|
||||
SecurePlt = false;
|
||||
VectorsUseTwoUnits = false;
|
||||
|
|
|
@ -34,33 +34,32 @@ class StringRef;
|
|||
|
||||
namespace PPC {
|
||||
// -m directive values.
|
||||
enum {
|
||||
DIR_NONE,
|
||||
DIR_32,
|
||||
DIR_440,
|
||||
DIR_601,
|
||||
DIR_602,
|
||||
DIR_603,
|
||||
DIR_7400,
|
||||
DIR_750,
|
||||
DIR_970,
|
||||
DIR_A2,
|
||||
DIR_E500,
|
||||
DIR_E500mc,
|
||||
DIR_E5500,
|
||||
DIR_PWR3,
|
||||
DIR_PWR4,
|
||||
DIR_PWR5,
|
||||
DIR_PWR5X,
|
||||
DIR_PWR6,
|
||||
DIR_PWR6X,
|
||||
DIR_PWR7,
|
||||
DIR_PWR8,
|
||||
DIR_PWR9,
|
||||
DIR_PWR10,
|
||||
DIR_PWR_FUTURE,
|
||||
DIR_64
|
||||
};
|
||||
enum {
|
||||
DIR_NONE,
|
||||
DIR_32,
|
||||
DIR_440,
|
||||
DIR_601,
|
||||
DIR_602,
|
||||
DIR_603,
|
||||
DIR_7400,
|
||||
DIR_750,
|
||||
DIR_970,
|
||||
DIR_A2,
|
||||
DIR_E500,
|
||||
DIR_E500mc,
|
||||
DIR_E5500,
|
||||
DIR_PWR3,
|
||||
DIR_PWR4,
|
||||
DIR_PWR5,
|
||||
DIR_PWR5X,
|
||||
DIR_PWR6,
|
||||
DIR_PWR6X,
|
||||
DIR_PWR7,
|
||||
DIR_PWR8,
|
||||
DIR_PWR9,
|
||||
DIR_PWR_FUTURE,
|
||||
DIR_64
|
||||
};
|
||||
}
|
||||
|
||||
class GlobalValue;
|
||||
|
@ -139,7 +138,6 @@ protected:
|
|||
bool HasAddiLoadFusion;
|
||||
bool HasAddisLoadFusion;
|
||||
bool IsISA3_0;
|
||||
bool IsISA3_1;
|
||||
bool UseLongCalls;
|
||||
bool SecurePlt;
|
||||
bool VectorsUseTwoUnits;
|
||||
|
@ -310,7 +308,6 @@ public:
|
|||
bool hasHTM() const { return HasHTM; }
|
||||
bool hasFloat128() const { return HasFloat128; }
|
||||
bool isISA3_0() const { return IsISA3_0; }
|
||||
bool isISA3_1() const { return IsISA3_1; }
|
||||
bool useLongCalls() const { return UseLongCalls; }
|
||||
bool hasFusion() const { return HasFusion; }
|
||||
bool hasAddiLoadFusion() const { return HasAddiLoadFusion; }
|
||||
|
|
|
@ -651,12 +651,11 @@ unsigned PPCTTIImpl::getCacheLineSize() const {
|
|||
if (CacheLineSize.getNumOccurrences() > 0)
|
||||
return CacheLineSize;
|
||||
|
||||
// Starting with P7 we have a cache line size of 128.
|
||||
// On P7, P8 or P9 we have a cache line size of 128.
|
||||
unsigned Directive = ST->getCPUDirective();
|
||||
// Assume that Future CPU has the same cache line size as the others.
|
||||
if (Directive == PPC::DIR_PWR7 || Directive == PPC::DIR_PWR8 ||
|
||||
Directive == PPC::DIR_PWR9 || Directive == PPC::DIR_PWR10 ||
|
||||
Directive == PPC::DIR_PWR_FUTURE)
|
||||
Directive == PPC::DIR_PWR9 || Directive == PPC::DIR_PWR_FUTURE)
|
||||
return 128;
|
||||
|
||||
// On other processors return a default of 64 bytes.
|
||||
|
@ -688,11 +687,9 @@ unsigned PPCTTIImpl::getMaxInterleaveFactor(unsigned VF) {
|
|||
// For P7 and P8, floating-point instructions have a 6-cycle latency and
|
||||
// there are two execution units, so unroll by 12x for latency hiding.
|
||||
// FIXME: the same for P9 as previous gen until POWER9 scheduling is ready
|
||||
// FIXME: the same for P10 as previous gen until POWER10 scheduling is ready
|
||||
// Assume that future is the same as the others.
|
||||
if (Directive == PPC::DIR_PWR7 || Directive == PPC::DIR_PWR8 ||
|
||||
Directive == PPC::DIR_PWR9 || Directive == PPC::DIR_PWR10 ||
|
||||
Directive == PPC::DIR_PWR_FUTURE)
|
||||
Directive == PPC::DIR_PWR9 || Directive == PPC::DIR_PWR_FUTURE)
|
||||
return 12;
|
||||
|
||||
// For most things, modern systems have two execution units (and
|
||||
|
|
|
@ -2,13 +2,9 @@
|
|||
; RUN: -mcpu=future < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
|
||||
; RUN: -mcpu=future < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
|
||||
; RUN: -mcpu=power10 < %s | FileCheck %s
|
||||
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
|
||||
; RUN: -mcpu=pwr10 < %s | FileCheck %s
|
||||
|
||||
|
||||
; Test -mcpu=[pwr10|future] is recognized on PowerPC.
|
||||
; Test mcpu=future that should be recognized on PowerPC.
|
||||
|
||||
; CHECK-NOT: is not a recognized processor for this target
|
||||
; CHECK: .text
|
||||
|
|
Loading…
Reference in New Issue