From: Hal Finkel Date: Fri, 29 Nov 2013 05:59:00 +0000 (+0000) Subject: Adjust PPC440 operand latencies X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b5ff1bb218507bb1c03f139697473412c7cd54de;p=oota-llvm.git Adjust PPC440 operand latencies The operand latencies for the PPC440 should be specified relative to dispatch, not relative to the initial fetch-and-decode stages. Because most instructions (ignoring bypass) wait in dispatch until their operands are ready, this is modeled as reading input operands "at dispatch" (0 cycles after issue), and so every input and output operand has 4 cycles subtracted from it. This could alter scheduling slightly, but I don't expect a large effect. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195947 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCSchedule440.td b/lib/Target/PowerPC/PPCSchedule440.td index 4523cfeb85f..c8e620dd2dd 100644 --- a/lib/Target/PowerPC/PPCSchedule440.td +++ b/lib/Target/PowerPC/PPCSchedule440.td @@ -110,7 +110,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1, P440_JEXE1]>, InstrStage<1, [P440_IEXE2, P440_JEXE2]>, InstrStage<1, [P440_IWB, P440_JWB]>], - [6, 4, 4], + [2, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -118,7 +118,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1, P440_JEXE1]>, InstrStage<1, [P440_IEXE2, P440_JEXE2]>, InstrStage<1, [P440_IWB, P440_JWB]>], - [6, 4, 4], + [2, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -126,21 +126,21 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1, P440_JEXE1]>, InstrStage<1, [P440_IEXE2, P440_JEXE2]>, InstrStage<1, [P440_IWB, P440_JWB]>], - [6, 4, 4], + [2, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<33, [P440_IWB]>], - [40, 4, 4], + [36, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [7, 4, 4], + [3, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -148,7 +148,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [7, 4, 4], + [3, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -156,28 +156,28 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC, P440_LRACC]>, InstrStage<1, [P440_IEXE1, P440_JEXE1]>, InstrStage<1, [P440_IEXE2, P440_JEXE2]>, InstrStage<1, [P440_IWB, P440_JWB]>], - [6, 4, 4], + [2, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -185,7 +185,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1, P440_JEXE1]>, InstrStage<1, [P440_IEXE2, P440_JEXE2]>, InstrStage<1, [P440_IWB, P440_JWB]>], - [6, 4, 4], + [2, 0, 0], [P440_GPR_Bypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, @@ -193,140 +193,140 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [6, 4], + [2, 0], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4], + [4, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4, 4], + [4, 0, 0], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [9, 5], + [5, 1], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [9, 5], + [5, 1], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5, 5], + [4, 1, 1], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5, 5], + [4, 1, 1], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [9, 5, 5], + [5, 1, 1], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [9, 5, 5], + [5, 1, 1], [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC], 0>, @@ -335,21 +335,21 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC], 0>, @@ -358,7 +358,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC], 0>, @@ -367,7 +367,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<1, [P440_LWB]>], - [8, 5], + [4, 1], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, @@ -395,21 +395,21 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [6, 4], + [2, 0], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [6, 4], + [2, 0], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<3, [P440_IWB]>], - [9, 4], + [5, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, @@ -421,56 +421,56 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4], + [4, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [7, 4], + [3, 0], [P440_GPR_Bypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<3, [P440_IWB]>], - [10, 4], + [6, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<3, [P440_IWB]>], - [10, 4], + [6, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<3, [P440_IWB]>], - [10, 4], + [6, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<3, [P440_IWB]>], - [10, 4], + [6, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4], + [4, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_IRACC]>, InstrStage<1, [P440_IEXE1]>, InstrStage<1, [P440_IEXE2]>, InstrStage<1, [P440_IWB]>], - [8, 4], + [4, 0], [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_FRACC]>, @@ -481,7 +481,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<1, [P440_FWB]>], - [10, 4, 4], + [6, 0, 0], [P440_FPR_Bypass, P440_FPR_Bypass, P440_FPR_Bypass]>, InstrItinData, @@ -493,7 +493,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<1, [P440_FWB]>], - [10, 4, 4], + [6, 0, 0], [P440_FPR_Bypass, P440_FPR_Bypass, P440_FPR_Bypass]>, InstrItinData, @@ -505,7 +505,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<1, [P440_FWB]>], - [10, 4, 4], + [6, 0, 0], [P440_FPR_Bypass, P440_FPR_Bypass, P440_FPR_Bypass]>, InstrItinData, @@ -517,7 +517,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<25, [P440_FWB]>], - [35, 4, 4], + [31, 0, 0], [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>, InstrItinData, InstrStage<1, [P440_FRACC]>, @@ -528,7 +528,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<13, [P440_FWB]>], - [23, 4, 4], + [19, 0, 0], [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>, InstrItinData, InstrStage<1, [P440_FRACC]>, @@ -539,7 +539,7 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<1, [P440_FWB]>], - [10, 4, 4, 4], + [6, 0, 0, 0], [P440_FPR_Bypass, P440_FPR_Bypass, P440_FPR_Bypass, P440_FPR_Bypass]>, @@ -552,6 +552,6 @@ def PPC440Itineraries : ProcessorItineraries< InstrStage<1, [P440_FEXE5]>, InstrStage<1, [P440_FEXE6]>, InstrStage<1, [P440_FWB]>], - [10, 4], + [6, 0], [P440_FPR_Bypass, P440_FPR_Bypass]> ]>;