mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
Some rough approximations for load/stores on A9
llvm-svn: 105108
This commit is contained in:
parent
fb3252df43
commit
16e9c73153
@ -77,7 +77,66 @@ def CortexA9Itineraries : ProcessorItineraries<
|
|||||||
InstrStage<3, [A9_Pipe0]>], [4, 5, 1, 1]>,
|
InstrStage<3, [A9_Pipe0]>], [4, 5, 1, 1]>,
|
||||||
InstrItinData<IIC_iMAC64 , [InstrStage<2, [A9_Pipe1], 0>,
|
InstrItinData<IIC_iMAC64 , [InstrStage<2, [A9_Pipe1], 0>,
|
||||||
InstrStage<3, [A9_Pipe0]>], [4, 5, 1, 1]>,
|
InstrStage<3, [A9_Pipe0]>], [4, 5, 1, 1]>,
|
||||||
|
// Integer load pipeline
|
||||||
|
// FIXME: The timings are some rough approximations
|
||||||
|
//
|
||||||
|
// Immediate offset
|
||||||
|
InstrItinData<IIC_iLoadi , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [3, 1]>,
|
||||||
|
//
|
||||||
|
// Register offset
|
||||||
|
InstrItinData<IIC_iLoadr , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Scaled register offset
|
||||||
|
InstrItinData<IIC_iLoadsi , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [4, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Immediate offset with update
|
||||||
|
InstrItinData<IIC_iLoadiu , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [3, 2, 1]>,
|
||||||
|
//
|
||||||
|
// Register offset with update
|
||||||
|
InstrItinData<IIC_iLoadru , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [3, 2, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Scaled register offset with update
|
||||||
|
InstrItinData<IIC_iLoadsiu , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [4, 3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Load multiple
|
||||||
|
InstrItinData<IIC_iLoadm , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>]>,
|
||||||
|
|
||||||
|
// Integer store pipeline
|
||||||
|
///
|
||||||
|
// Immediate offset
|
||||||
|
InstrItinData<IIC_iStorei , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [3, 1]>,
|
||||||
|
//
|
||||||
|
// Register offset
|
||||||
|
InstrItinData<IIC_iStorer , [InstrStage<1, [ A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Scaled register offset
|
||||||
|
InstrItinData<IIC_iStoresi , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Immediate offset with update
|
||||||
|
InstrItinData<IIC_iStoreiu , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [2, 3, 1]>,
|
||||||
|
//
|
||||||
|
// Register offset with update
|
||||||
|
InstrItinData<IIC_iStoreru , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>], [2, 3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Scaled register offset with update
|
||||||
|
InstrItinData<IIC_iStoresiu, [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<2, [A9_LSPipe]>], [3, 3, 1, 1]>,
|
||||||
|
//
|
||||||
|
// Store multiple
|
||||||
|
InstrItinData<IIC_iStorem , [InstrStage<1, [A9_Pipe1]>,
|
||||||
|
InstrStage<1, [A9_LSPipe]>]>,
|
||||||
// Branch
|
// Branch
|
||||||
//
|
//
|
||||||
// no delay slots, so the latency of a branch is unimportant
|
// no delay slots, so the latency of a branch is unimportant
|
||||||
|
Loading…
Reference in New Issue
Block a user