diff options
author | Hal Finkel <hfinkel@anl.gov> | 2013-11-29 06:32:17 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2013-11-29 06:32:17 +0000 |
commit | 4dd359fcde2432289c66a62beab232601e4d5248 (patch) | |
tree | c3456fff4e48109e7c7eeb53b77222e65fe00db1 | |
parent | 6e33f489a18eb3a28b174e7ba55240e95c9c6e22 (diff) | |
download | llvm-4dd359fcde2432289c66a62beab232601e4d5248.tar.gz llvm-4dd359fcde2432289c66a62beab232601e4d5248.tar.bz2 llvm-4dd359fcde2432289c66a62beab232601e4d5248.tar.xz |
Create a PPC440 SchedMachineModel
Some of the older PPC processor definitions don't have associated
SchedMachineModels; correct this for the PPC440.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195949 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/PowerPC/PPC.td | 12 | ||||
-rw-r--r-- | lib/Target/PowerPC/PPCSchedule440.td | 14 |
2 files changed, 20 insertions, 6 deletions
diff --git a/lib/Target/PowerPC/PPC.td b/lib/Target/PowerPC/PPC.td index 54e3d400a9..18430d47a4 100644 --- a/lib/Target/PowerPC/PPC.td +++ b/lib/Target/PowerPC/PPC.td @@ -153,12 +153,12 @@ include "PPCInstrInfo.td" // def : Processor<"generic", G3Itineraries, [Directive32]>; -def : Processor<"440", PPC440Itineraries, [Directive440, FeatureISEL, - FeatureFRES, FeatureFRSQRTE, - FeatureBookE, DeprecatedMFTB]>; -def : Processor<"450", PPC440Itineraries, [Directive440, FeatureISEL, - FeatureFRES, FeatureFRSQRTE, - FeatureBookE, DeprecatedMFTB]>; +def : ProcessorModel<"440", PPC440Model, [Directive440, FeatureISEL, + FeatureFRES, FeatureFRSQRTE, + FeatureBookE, DeprecatedMFTB]>; +def : ProcessorModel<"450", PPC440Model, [Directive440, FeatureISEL, + FeatureFRES, FeatureFRSQRTE, + FeatureBookE, DeprecatedMFTB]>; def : Processor<"601", G3Itineraries, [Directive601]>; def : Processor<"602", G3Itineraries, [Directive602]>; def : Processor<"603", G3Itineraries, [Directive603, diff --git a/lib/Target/PowerPC/PPCSchedule440.td b/lib/Target/PowerPC/PPCSchedule440.td index 11d79f2be0..780fa4779b 100644 --- a/lib/Target/PowerPC/PPCSchedule440.td +++ b/lib/Target/PowerPC/PPCSchedule440.td @@ -555,3 +555,17 @@ def PPC440Itineraries : ProcessorItineraries< [6, 0], [P440_FPR_Bypass, P440_FPR_Bypass]> ]>; + +// ===---------------------------------------------------------------------===// +// PPC440 machine model for scheduling and other instruction cost heuristics. + +def PPC440Model : SchedMachineModel { + let IssueWidth = 2; // 2 instructions are dispatched per cycle. + let MinLatency = -1; // OperandCycles are interpreted as MinLatency. + let LoadLatency = 5; // Optimistic load latency assuming bypass. + // This is overriden by OperandCycles if the + // Itineraries are queried instead. + + let Itineraries = PPC440Itineraries; +} + |