summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2014-01-02 21:38:26 +0000
committerHal Finkel <hfinkel@anl.gov>2014-01-02 21:38:26 +0000
commitd151389bd1909103ae3063bf470eb4d44abab468 (patch)
tree928ed488ca4767be5aecec43dfdc1e6f619af84e /lib
parent628dca146eb20a652704d475e41af75eb9b28a44 (diff)
downloadllvm-d151389bd1909103ae3063bf470eb4d44abab468.tar.gz
llvm-d151389bd1909103ae3063bf470eb4d44abab468.tar.bz2
llvm-d151389bd1909103ae3063bf470eb4d44abab468.tar.xz
[PPC] Fix the scheduling of CR logicals on the P7
CR logicals (crand, crxor, etc.) on the P7 need to be in the first slot of each dispatch group. The old itinerary entry was just wrong (but has not mattered because we don't generate these instructions). This will matter when, in an upcoming commit, we start generating these instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198359 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/PowerPC/PPCHazardRecognizers.cpp1
-rw-r--r--lib/Target/PowerPC/PPCScheduleP7.td4
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/Target/PowerPC/PPCHazardRecognizers.cpp b/lib/Target/PowerPC/PPCHazardRecognizers.cpp
index 0c07fd3340..37c85b3735 100644
--- a/lib/Target/PowerPC/PPCHazardRecognizers.cpp
+++ b/lib/Target/PowerPC/PPCHazardRecognizers.cpp
@@ -128,6 +128,7 @@ bool PPCDispatchGroupSBHazardRecognizer::mustComeFirst(const MCInstrDesc *MCID,
default:
// All multi-slot instructions must come first.
return NSlots > 1;
+ case PPC::Sched::IIC_BrCR: // cr logicals
case PPC::Sched::IIC_SprMFCR:
case PPC::Sched::IIC_SprMFCRF:
case PPC::Sched::IIC_SprMTSPR:
diff --git a/lib/Target/PowerPC/PPCScheduleP7.td b/lib/Target/PowerPC/PPCScheduleP7.td
index 958bc90f67..a3670a55a0 100644
--- a/lib/Target/PowerPC/PPCScheduleP7.td
+++ b/lib/Target/PowerPC/PPCScheduleP7.td
@@ -137,8 +137,8 @@ def P7Itineraries : ProcessorItineraries<
InstrItinData<IIC_BrB , [InstrStage<1, [P7_DU5, P7_DU6], 0>,
InstrStage<1, [P7_BRU]>],
[3, 1, 1]>,
- InstrItinData<IIC_BrCR , [InstrStage<1, [P7_DU5, P7_DU6], 0>,
- InstrStage<1, [P7_BRU]>],
+ InstrItinData<IIC_BrCR , [InstrStage<1, [P7_DU1], 0>,
+ InstrStage<1, [P7_CRU]>],
[3, 1, 1]>,
InstrItinData<IIC_BrMCR , [InstrStage<1, [P7_DU5, P7_DU6], 0>,
InstrStage<1, [P7_BRU]>],