From 0e55fd61ae9ab88cf76b30f7e69d168bd7be87d0 Mon Sep 17 00:00:00 2001 From: Evan Cheng Date: Thu, 30 Sep 2010 01:08:25 +0000 Subject: ARM instruction itinerary fixes: 1. Cortex-a9 8-bit and 16-bit loads / stores AGU cycles are 1 cycle longer than 32-bit ones. 2. Cortex-a9 is out-of-order so model all read cycles as cycle 1. 3. Lots of other random fixes for A8 and A9. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115121 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMScheduleV6.td | 43 ++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'lib/Target/ARM/ARMScheduleV6.td') diff --git a/lib/Target/ARM/ARMScheduleV6.td b/lib/Target/ARM/ARMScheduleV6.td index f19d1d1..b5ae927 100644 --- a/lib/Target/ARM/ARMScheduleV6.td +++ b/lib/Target/ARM/ARMScheduleV6.td @@ -89,22 +89,31 @@ def ARMV6Itineraries : ProcessorItineraries< // Integer load pipeline // // Immediate offset - InstrItinData], [4, 1]>, + InstrItinData], [4, 1]>, + InstrItinData], [4, 1]>, + InstrItinData], [4, 1]>, // // Register offset - InstrItinData], [4, 1, 1]>, + InstrItinData], [4, 1, 1]>, + InstrItinData], [4, 1, 1]>, + InstrItinData], [4, 1, 1]>, // // Scaled register offset, issues over 2 cycles - InstrItinData], [5, 2, 1]>, + InstrItinData], [5, 2, 1]>, + InstrItinData], [5, 2, 1]>, // // Immediate offset with update - InstrItinData], [4, 2, 1]>, + InstrItinData], [4, 2, 1]>, + InstrItinData], [4, 2, 1]>, // // Register offset with update - InstrItinData], [4, 2, 1, 1]>, + InstrItinData], [4, 2, 1, 1]>, + InstrItinData], [4, 2, 1, 1]>, + InstrItinData], [4, 2, 1, 1]>, // // Scaled register offset with update, issues over 2 cycles - InstrItinData], [5, 2, 2, 1]>, + InstrItinData], [5, 2, 2, 1]>, + InstrItinData], [5, 2, 2, 1]>, // // Load multiple @@ -123,23 +132,31 @@ def ARMV6Itineraries : ProcessorItineraries< // Integer store pipeline // // Immediate offset - InstrItinData], [2, 1]>, + InstrItinData], [2, 1]>, + InstrItinData], [2, 1]>, + InstrItinData], [2, 1]>, // // Register offset - InstrItinData], [2, 1, 1]>, - + InstrItinData], [2, 1, 1]>, + InstrItinData], [2, 1, 1]>, + InstrItinData], [2, 1, 1]>, // // Scaled register offset, issues over 2 cycles - InstrItinData], [2, 2, 1]>, + InstrItinData], [2, 2, 1]>, + InstrItinData], [2, 2, 1]>, // // Immediate offset with update - InstrItinData], [2, 2, 1]>, + InstrItinData], [2, 2, 1]>, + InstrItinData], [2, 2, 1]>, // // Register offset with update - InstrItinData], [2, 2, 1, 1]>, + InstrItinData], [2, 2, 1, 1]>, + InstrItinData], [2, 2, 1, 1]>, + InstrItinData], [2, 2, 1, 1]>, // // Scaled register offset with update, issues over 2 cycles - InstrItinData], [2, 2, 2, 1]>, + InstrItinData], [2, 2, 2, 1]>, + InstrItinData], [2, 2, 2, 1]>, // // Store multiple InstrItinData]>, -- cgit v1.1