blob: 0f4e79aeee39a9802bebba8ada69de8c0b23d368 [file] [log] [blame]
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001//=- ARMScheduleA9.td - ARM Cortex-A9 Scheduling Definitions -*- tablegen -*-=//
Jim Grosbach7ea5fc02010-06-28 04:27:01 +00002//
Anton Korobeynikov090323a2010-04-07 18:22:11 +00003// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
Jim Grosbach7ea5fc02010-06-28 04:27:01 +00007//
Anton Korobeynikov090323a2010-04-07 18:22:11 +00008//===----------------------------------------------------------------------===//
9//
10// This file defines the itinerary class data for the ARM Cortex A9 processors.
11//
12//===----------------------------------------------------------------------===//
13
14//
15// Ad-hoc scheduling information derived from pretty vague "Cortex-A9 Technical
16// Reference Manual".
17//
Anton Korobeynikov7d62e332010-04-18 20:31:01 +000018// Functional units
Evan Cheng73eac2a2010-10-03 02:03:59 +000019def A9_Issue0 : FuncUnit; // Issue 0
20def A9_Issue1 : FuncUnit; // Issue 1
21def A9_Branch : FuncUnit; // Branch
22def A9_ALU0 : FuncUnit; // ALU / MUL pipeline 0
23def A9_ALU1 : FuncUnit; // ALU pipeline 1
Evan Cheng89e6f672010-10-01 19:41:46 +000024def A9_AGU : FuncUnit; // Address generation unit for ld / st
Evan Cheng73eac2a2010-10-03 02:03:59 +000025def A9_NPipe : FuncUnit; // NEON pipeline
26def A9_MUX0 : FuncUnit; // AGU + NEON/FPU multiplexer
Evan Cheng39121582010-10-13 01:54:21 +000027def A9_LSUnit : FuncUnit; // L/S Unit
Anton Korobeynikov7d62e332010-04-18 20:31:01 +000028def A9_DRegsVFP: FuncUnit; // FP register set, VFP side
29def A9_DRegsN : FuncUnit; // FP register set, NEON side
30
Evan Cheng4a010fd2010-09-29 22:42:35 +000031// Bypasses
32def A9_LdBypass : Bypass;
33
Anton Korobeynikov7d62e332010-04-18 20:31:01 +000034def CortexA9Itineraries : ProcessorItineraries<
Evan Cheng73eac2a2010-10-03 02:03:59 +000035 [A9_Issue0, A9_Issue1, A9_Branch, A9_ALU0, A9_ALU1, A9_AGU, A9_NPipe, A9_MUX0,
Evan Cheng39121582010-10-13 01:54:21 +000036 A9_LSUnit, A9_DRegsVFP, A9_DRegsN],
Evan Cheng4a010fd2010-09-29 22:42:35 +000037 [A9_LdBypass], [
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +000038 // Two fully-pipelined integer ALU pipelines
Evan Cheng2259d672010-09-29 00:49:25 +000039
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +000040 //
41 // Move instructions, unconditional
Evan Cheng73eac2a2010-10-03 02:03:59 +000042 InstrItinData<IIC_iMOVi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
43 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1]>,
44 InstrItinData<IIC_iMOVr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
45 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
46 InstrItinData<IIC_iMOVsi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
47 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
48 InstrItinData<IIC_iMOVsr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
49 InstrStage<2, [A9_ALU0, A9_ALU1]>], [2, 1, 1]>,
50 InstrItinData<IIC_iMOVix2 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
51 InstrStage<1, [A9_ALU0, A9_ALU1]>,
52 InstrStage<1, [A9_ALU0, A9_ALU1]>], [2]>,
Evan Cheng2259d672010-09-29 00:49:25 +000053 //
54 // MVN instructions
Evan Cheng73eac2a2010-10-03 02:03:59 +000055 InstrItinData<IIC_iMVNi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
56 InstrStage<1, [A9_ALU0, A9_ALU1]>],
Evan Cheng4a010fd2010-09-29 22:42:35 +000057 [1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000058 InstrItinData<IIC_iMVNr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
59 InstrStage<1, [A9_ALU0, A9_ALU1]>],
Evan Cheng4a010fd2010-09-29 22:42:35 +000060 [1, 1], [NoBypass, A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000061 InstrItinData<IIC_iMVNsi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
62 InstrStage<2, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000063 [2, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000064 InstrItinData<IIC_iMVNsr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
65 InstrStage<3, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000066 [3, 1, 1]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +000067 //
68 // No operand cycles
Evan Cheng73eac2a2010-10-03 02:03:59 +000069 InstrItinData<IIC_iALUx , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
70 InstrStage<1, [A9_ALU0, A9_ALU1]>]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +000071 //
72 // Binary Instructions that produce a result
Evan Cheng73eac2a2010-10-03 02:03:59 +000073 InstrItinData<IIC_iALUi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
74 InstrStage<1, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000075 [1, 1], [NoBypass, A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000076 InstrItinData<IIC_iALUr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
77 InstrStage<1, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000078 [1, 1, 1], [NoBypass, A9_LdBypass, A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000079 InstrItinData<IIC_iALUsi, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
80 InstrStage<2, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000081 [2, 1, 1], [NoBypass, A9_LdBypass, NoBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000082 InstrItinData<IIC_iALUsir,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
83 InstrStage<2, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000084 [2, 1, 1], [NoBypass, NoBypass, A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +000085 InstrItinData<IIC_iALUsr, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
86 InstrStage<3, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +000087 [3, 1, 1, 1],
Evan Cheng4a010fd2010-09-29 22:42:35 +000088 [NoBypass, A9_LdBypass, NoBypass, NoBypass]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +000089 //
Evan Chengc35d7bb2010-09-29 00:27:46 +000090 // Bitwise Instructions that produce a result
Evan Cheng73eac2a2010-10-03 02:03:59 +000091 InstrItinData<IIC_iBITi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
92 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
93 InstrItinData<IIC_iBITr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
94 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1, 1]>,
95 InstrItinData<IIC_iBITsi, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
96 InstrStage<2, [A9_ALU0, A9_ALU1]>], [2, 1, 1]>,
97 InstrItinData<IIC_iBITsr, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
98 InstrStage<3, [A9_ALU0, A9_ALU1]>], [3, 1, 1, 1]>,
Evan Chengc35d7bb2010-09-29 00:27:46 +000099 //
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000100 // Unary Instructions that produce a result
Evan Cheng2fb20b12010-09-30 01:08:25 +0000101
102 // CLZ, RBIT, etc.
Evan Cheng73eac2a2010-10-03 02:03:59 +0000103 InstrItinData<IIC_iUNAr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
104 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
Evan Cheng2fb20b12010-09-30 01:08:25 +0000105
106 // BFC, BFI, UBFX, SBFX
Evan Cheng73eac2a2010-10-03 02:03:59 +0000107 InstrItinData<IIC_iUNAsi, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
108 InstrStage<2, [A9_ALU0, A9_ALU1]>], [2, 1]>,
Evan Cheng2fb20b12010-09-30 01:08:25 +0000109
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000110 //
Evan Cheng62d626c2010-09-25 00:49:35 +0000111 // Zero and sign extension instructions
Evan Cheng73eac2a2010-10-03 02:03:59 +0000112 InstrItinData<IIC_iEXTr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
113 InstrStage<1, [A9_ALU0, A9_ALU1]>], [2, 1]>,
114 InstrItinData<IIC_iEXTAr, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
115 InstrStage<2, [A9_ALU0, A9_ALU1]>], [3, 1, 1]>,
116 InstrItinData<IIC_iEXTAsr,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
117 InstrStage<3, [A9_ALU0, A9_ALU1]>], [3, 1, 1, 1]>,
Evan Cheng62d626c2010-09-25 00:49:35 +0000118 //
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000119 // Compare instructions
Evan Cheng73eac2a2010-10-03 02:03:59 +0000120 InstrItinData<IIC_iCMPi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
121 InstrStage<1, [A9_ALU0, A9_ALU1]>],
122 [1], [A9_LdBypass]>,
123 InstrItinData<IIC_iCMPr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
124 InstrStage<1, [A9_ALU0, A9_ALU1]>],
125 [1, 1], [A9_LdBypass, A9_LdBypass]>,
126 InstrItinData<IIC_iCMPsi , [InstrStage<2, [A9_ALU0, A9_ALU1]>],
127 [1, 1], [A9_LdBypass, NoBypass]>,
128 InstrItinData<IIC_iCMPsr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
129 InstrStage<3, [A9_ALU0, A9_ALU1]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000130 [1, 1, 1], [A9_LdBypass, NoBypass, NoBypass]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000131 //
Evan Cheng2259d672010-09-29 00:49:25 +0000132 // Test instructions
Evan Cheng73eac2a2010-10-03 02:03:59 +0000133 InstrItinData<IIC_iTSTi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
134 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1]>,
135 InstrItinData<IIC_iTSTr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
136 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
137 InstrItinData<IIC_iTSTsi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
138 InstrStage<2, [A9_ALU0, A9_ALU1]>], [1, 1]>,
139 InstrItinData<IIC_iTSTsr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
140 InstrStage<3, [A9_ALU0, A9_ALU1]>], [1, 1, 1]>,
Evan Cheng2259d672010-09-29 00:49:25 +0000141 //
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000142 // Move instructions, conditional
Evan Cheng2fb20b12010-09-30 01:08:25 +0000143 // FIXME: Correctly model the extra input dep on the destination.
Evan Cheng73eac2a2010-10-03 02:03:59 +0000144 InstrItinData<IIC_iCMOVi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
145 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1]>,
146 InstrItinData<IIC_iCMOVr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
147 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
148 InstrItinData<IIC_iCMOVsi , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
149 InstrStage<1, [A9_ALU0, A9_ALU1]>], [1, 1]>,
150 InstrItinData<IIC_iCMOVsr , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
151 InstrStage<2, [A9_ALU0, A9_ALU1]>], [2, 1, 1]>,
Evan Cheng79ff5232010-11-13 05:14:20 +0000152 InstrItinData<IIC_iCMOVix2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
153 InstrStage<1, [A9_ALU0, A9_ALU1]>,
154 InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
155 InstrStage<1, [A9_ALU0, A9_ALU1]>], [2]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000156
157 // Integer multiply pipeline
158 //
Evan Cheng73eac2a2010-10-03 02:03:59 +0000159 InstrItinData<IIC_iMUL16 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
160 InstrStage<2, [A9_ALU0]>], [3, 1, 1]>,
161 InstrItinData<IIC_iMAC16 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
162 InstrStage<2, [A9_ALU0]>],
163 [3, 1, 1, 1]>,
164 InstrItinData<IIC_iMUL32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
165 InstrStage<2, [A9_ALU0]>], [4, 1, 1]>,
166 InstrItinData<IIC_iMAC32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
167 InstrStage<2, [A9_ALU0]>],
168 [4, 1, 1, 1]>,
169 InstrItinData<IIC_iMUL64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
170 InstrStage<3, [A9_ALU0]>], [4, 5, 1, 1]>,
171 InstrItinData<IIC_iMAC64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
172 InstrStage<3, [A9_ALU0]>],
173 [4, 5, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000174 // Integer load pipeline
175 // FIXME: The timings are some rough approximations
176 //
177 // Immediate offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000178 InstrItinData<IIC_iLoad_i , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000179 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000180 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000181 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000182 [3, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000183 InstrItinData<IIC_iLoad_bh_i, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000184 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000185 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000186 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000187 [4, 1], [A9_LdBypass]>,
188 // FIXME: If address is 64-bit aligned, AGU cycles is 1.
Evan Cheng73eac2a2010-10-03 02:03:59 +0000189 InstrItinData<IIC_iLoad_d_i , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000190 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000191 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000192 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000193 [3, 3, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000194 //
195 // Register offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000196 InstrItinData<IIC_iLoad_r , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000197 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000198 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000199 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000200 [3, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000201 InstrItinData<IIC_iLoad_bh_r, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000202 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000203 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000204 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000205 [4, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000206 InstrItinData<IIC_iLoad_d_r , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000207 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000208 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000209 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000210 [3, 3, 1, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000211 //
212 // Scaled register offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000213 InstrItinData<IIC_iLoad_si , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000214 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000215 InstrStage<1, [A9_AGU], 0>,
216 InstrStage<1, [A9_LSUnit], 0>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000217 [4, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000218 InstrItinData<IIC_iLoad_bh_si,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000219 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000220 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000221 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000222 [5, 1, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000223 //
224 // Immediate offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000225 InstrItinData<IIC_iLoad_iu , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000226 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000227 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000228 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000229 [3, 2, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000230 InstrItinData<IIC_iLoad_bh_iu,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000231 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000232 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000233 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000234 [4, 3, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000235 //
236 // Register offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000237 InstrItinData<IIC_iLoad_ru , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000238 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000239 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000240 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000241 [3, 2, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000242 InstrItinData<IIC_iLoad_bh_ru,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000243 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000244 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000245 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000246 [4, 3, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000247 InstrItinData<IIC_iLoad_d_ru, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000248 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000249 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000250 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000251 [3, 3, 1, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000252 //
253 // Scaled register offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000254 InstrItinData<IIC_iLoad_siu , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000255 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000256 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000257 InstrStage<1, [A9_LSUnit]>],
Evan Cheng2fb20b12010-09-30 01:08:25 +0000258 [4, 3, 1, 1], [A9_LdBypass]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000259 InstrItinData<IIC_iLoad_bh_siu,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000260 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000261 InstrStage<2, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000262 InstrStage<1, [A9_LSUnit]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000263 [5, 4, 1, 1], [A9_LdBypass]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000264 //
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000265 // Load multiple, def is the 5th operand.
Evan Cheng05f13e92010-10-09 01:03:04 +0000266 // FIXME: This assumes 3 to 4 registers.
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000267 InstrItinData<IIC_iLoad_m , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000268 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000269 InstrStage<2, [A9_AGU], 1>,
270 InstrStage<2, [A9_LSUnit]>],
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000271 [1, 1, 1, 1, 3],
272 [NoBypass, NoBypass, NoBypass, NoBypass, A9_LdBypass]>,
273 //
274 // Load multiple + update, defs are the 1st and 5th operands.
275 InstrItinData<IIC_iLoad_mu , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
276 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000277 InstrStage<2, [A9_AGU], 1>,
278 InstrStage<2, [A9_LSUnit]>],
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000279 [2, 1, 1, 1, 3],
280 [NoBypass, NoBypass, NoBypass, NoBypass, A9_LdBypass]>,
Evan Cheng722cd122010-09-08 22:57:08 +0000281 //
282 // Load multiple plus branch
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000283 InstrItinData<IIC_iLoad_mBr, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000284 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000285 InstrStage<1, [A9_AGU], 1>,
286 InstrStage<2, [A9_LSUnit]>,
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000287 InstrStage<1, [A9_Branch]>],
288 [1, 2, 1, 1, 3],
289 [NoBypass, NoBypass, NoBypass, NoBypass, A9_LdBypass]>,
290 //
291 // Pop, def is the 3rd operand.
292 InstrItinData<IIC_iPop , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
293 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000294 InstrStage<2, [A9_AGU], 1>,
295 InstrStage<2, [A9_LSUnit]>],
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000296 [1, 1, 3],
297 [NoBypass, NoBypass, A9_LdBypass]>,
298 //
299 // Pop + branch, def is the 3rd operand.
300 InstrItinData<IIC_iPop_Br, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
301 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000302 InstrStage<2, [A9_AGU], 1>,
303 InstrStage<2, [A9_LSUnit]>,
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000304 InstrStage<1, [A9_Branch]>],
305 [1, 1, 3],
306 [NoBypass, NoBypass, A9_LdBypass]>,
Evan Cheng722cd122010-09-08 22:57:08 +0000307
Evan Chenge37da032010-09-24 22:41:41 +0000308 //
309 // iLoadi + iALUr for t2LDRpci_pic.
Evan Cheng73eac2a2010-10-03 02:03:59 +0000310 InstrItinData<IIC_iLoadiALU, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000311 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000312 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000313 InstrStage<1, [A9_LSUnit]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000314 InstrStage<1, [A9_ALU0, A9_ALU1]>],
Evan Cheng4a010fd2010-09-29 22:42:35 +0000315 [2, 1]>,
Evan Chenge37da032010-09-24 22:41:41 +0000316
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000317 // Integer store pipeline
318 ///
319 // Immediate offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000320 InstrItinData<IIC_iStore_i , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000321 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000322 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000323 InstrStage<1, [A9_LSUnit]>], [1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000324 InstrItinData<IIC_iStore_bh_i,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000325 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000326 InstrStage<2, [A9_AGU], 1>,
327 InstrStage<1, [A9_LSUnit]>], [1, 1]>,
Evan Cheng2fb20b12010-09-30 01:08:25 +0000328 // FIXME: If address is 64-bit aligned, AGU cycles is 1.
Evan Cheng73eac2a2010-10-03 02:03:59 +0000329 InstrItinData<IIC_iStore_d_i, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000330 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000331 InstrStage<2, [A9_AGU], 1>,
332 InstrStage<1, [A9_LSUnit]>], [1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000333 //
334 // Register offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000335 InstrItinData<IIC_iStore_r , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000336 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000337 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000338 InstrStage<1, [A9_LSUnit]>], [1, 1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000339 InstrItinData<IIC_iStore_bh_r,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000340 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000341 InstrStage<2, [A9_AGU], 1>,
342 InstrStage<1, [A9_LSUnit]>], [1, 1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000343 InstrItinData<IIC_iStore_d_r, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000344 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000345 InstrStage<2, [A9_AGU], 1>,
346 InstrStage<1, [A9_LSUnit]>], [1, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000347 //
348 // Scaled register offset
Evan Cheng73eac2a2010-10-03 02:03:59 +0000349 InstrItinData<IIC_iStore_si , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
350 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000351 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000352 InstrStage<1, [A9_LSUnit]>], [1, 1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000353 InstrItinData<IIC_iStore_bh_si,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000354 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000355 InstrStage<2, [A9_AGU], 1>,
356 InstrStage<1, [A9_LSUnit]>], [1, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000357 //
358 // Immediate offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000359 InstrItinData<IIC_iStore_iu , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
360 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000361 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000362 InstrStage<1, [A9_LSUnit]>], [2, 1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000363 InstrItinData<IIC_iStore_bh_iu,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000364 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000365 InstrStage<2, [A9_AGU], 1>,
366 InstrStage<1, [A9_LSUnit]>], [3, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000367 //
368 // Register offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000369 InstrItinData<IIC_iStore_ru , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
370 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000371 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000372 InstrStage<1, [A9_LSUnit]>],
Evan Cheng73eac2a2010-10-03 02:03:59 +0000373 [2, 1, 1, 1]>,
374 InstrItinData<IIC_iStore_bh_ru,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000375 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000376 InstrStage<2, [A9_AGU], 1>,
377 InstrStage<1, [A9_LSUnit]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000378 [3, 1, 1, 1]>,
Evan Cheng73eac2a2010-10-03 02:03:59 +0000379 InstrItinData<IIC_iStore_d_ru, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
380 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000381 InstrStage<2, [A9_AGU], 1>,
382 InstrStage<1, [A9_LSUnit]>],
Evan Cheng73eac2a2010-10-03 02:03:59 +0000383 [3, 1, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000384 //
385 // Scaled register offset with update
Evan Cheng73eac2a2010-10-03 02:03:59 +0000386 InstrItinData<IIC_iStore_siu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
387 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000388 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000389 InstrStage<1, [A9_LSUnit]>],
Evan Cheng73eac2a2010-10-03 02:03:59 +0000390 [2, 1, 1, 1]>,
391 InstrItinData<IIC_iStore_bh_siu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
392 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000393 InstrStage<2, [A9_AGU], 1>,
394 InstrStage<1, [A9_LSUnit]>],
Evan Cheng73eac2a2010-10-03 02:03:59 +0000395 [3, 1, 1, 1]>,
Anton Korobeynikov2a21aef2010-05-29 19:25:34 +0000396 //
397 // Store multiple
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000398 InstrItinData<IIC_iStore_m , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000399 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000400 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000401 InstrStage<2, [A9_LSUnit]>]>,
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000402 //
403 // Store multiple + update
404 InstrItinData<IIC_iStore_mu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
405 InstrStage<1, [A9_MUX0], 0>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000406 InstrStage<1, [A9_AGU], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000407 InstrStage<2, [A9_LSUnit]>], [2]>,
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000408
Evan Cheng8740ee32010-11-03 06:34:55 +0000409 //
410 // Preload
411 InstrItinData<IIC_Preload, [InstrStage<1, [A9_Issue0, A9_Issue1]>], [1, 1]>,
412
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000413 // Branch
414 //
415 // no delay slots, so the latency of a branch is unimportant
Evan Cheng49d4c0b2010-10-06 06:27:31 +0000416 InstrItinData<IIC_Br , [InstrStage<1, [A9_Issue0], 0>,
417 InstrStage<1, [A9_Issue1], 0>,
418 InstrStage<1, [A9_Branch]>]>,
Anton Korobeynikov94d7fd82010-05-29 19:25:17 +0000419
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000420 // VFP and NEON shares the same register file. This means that every VFP
421 // instruction should wait for full completion of the consecutive NEON
422 // instruction and vice-versa. We model this behavior with two artificial FUs:
423 // DRegsVFP and DRegsVFP.
424 //
425 // Every VFP instruction:
426 // - Acquires DRegsVFP resource for 1 cycle
427 // - Reserves DRegsN resource for the whole duration (including time to
428 // register file writeback!).
429 // Every NEON instruction does the same but with FUs swapped.
430 //
Jim Grosbach7ea5fc02010-06-28 04:27:01 +0000431 // Since the reserved FU cannot be acquired, this models precisely
432 // "cross-domain" stalls.
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000433
434 // VFP
435 // Issue through integer pipeline, and execute in NEON unit.
436
437 // FP Special Register to Integer Register File Move
Evan Chenge790afc2010-10-11 23:41:41 +0000438 InstrItinData<IIC_fpSTAT , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000439 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000440 InstrStage<1, [A9_DRegsVFP], 0, Required>,
441 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng99cce362010-10-29 23:16:55 +0000442 InstrStage<1, [A9_NPipe]>],
443 [1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000444 //
445 // Single-precision FP Unary
Evan Chenge790afc2010-10-11 23:41:41 +0000446 InstrItinData<IIC_fpUNA32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
447 InstrStage<1, [A9_MUX0], 0>,
448 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000449 // Extra latency cycles since wbck is 2 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000450 InstrStage<3, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000451 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000452 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000453 //
454 // Double-precision FP Unary
Evan Chenge790afc2010-10-11 23:41:41 +0000455 InstrItinData<IIC_fpUNA64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
456 InstrStage<1, [A9_MUX0], 0>,
457 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000458 // Extra latency cycles since wbck is 2 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000459 InstrStage<3, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000460 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000461 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000462
463 //
464 // Single-precision FP Compare
Evan Chenge790afc2010-10-11 23:41:41 +0000465 InstrItinData<IIC_fpCMP32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
466 InstrStage<1, [A9_MUX0], 0>,
467 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000468 // Extra latency cycles since wbck is 4 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000469 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000470 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000471 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000472 //
473 // Double-precision FP Compare
Evan Chenge790afc2010-10-11 23:41:41 +0000474 InstrItinData<IIC_fpCMP64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
475 InstrStage<1, [A9_MUX0], 0>,
476 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000477 // Extra latency cycles since wbck is 4 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000478 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000479 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000480 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000481 //
482 // Single to Double FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000483 InstrItinData<IIC_fpCVTSD , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000484 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000485 InstrStage<1, [A9_DRegsVFP], 0, Required>,
486 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000487 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000488 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000489 //
490 // Double to Single FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000491 InstrItinData<IIC_fpCVTDS , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000492 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000493 InstrStage<1, [A9_DRegsVFP], 0, Required>,
494 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000495 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000496 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000497
498 //
499 // Single to Half FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000500 InstrItinData<IIC_fpCVTSH , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000501 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000502 InstrStage<1, [A9_DRegsVFP], 0, Required>,
503 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000504 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000505 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000506 //
507 // Half to Single FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000508 InstrItinData<IIC_fpCVTHS , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000509 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000510 InstrStage<1, [A9_DRegsVFP], 0, Required>,
511 InstrStage<3, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000512 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000513 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000514
515 //
516 // Single-Precision FP to Integer Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000517 InstrItinData<IIC_fpCVTSI , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000518 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000519 InstrStage<1, [A9_DRegsVFP], 0, Required>,
520 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000521 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000522 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000523 //
524 // Double-Precision FP to Integer Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000525 InstrItinData<IIC_fpCVTDI , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000526 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000527 InstrStage<1, [A9_DRegsVFP], 0, Required>,
528 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000529 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000530 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000531 //
532 // Integer to Single-Precision FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000533 InstrItinData<IIC_fpCVTIS , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000534 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000535 InstrStage<1, [A9_DRegsVFP], 0, Required>,
536 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000537 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000538 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000539 //
540 // Integer to Double-Precision FP Convert
Evan Chenge790afc2010-10-11 23:41:41 +0000541 InstrItinData<IIC_fpCVTID , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000542 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000543 InstrStage<1, [A9_DRegsVFP], 0, Required>,
544 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000545 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000546 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000547 //
548 // Single-precision FP ALU
Evan Chenge790afc2010-10-11 23:41:41 +0000549 InstrItinData<IIC_fpALU32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000550 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000551 InstrStage<1, [A9_DRegsVFP], 0, Required>,
552 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000553 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000554 [4, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000555 //
556 // Double-precision FP ALU
Evan Chenge790afc2010-10-11 23:41:41 +0000557 InstrItinData<IIC_fpALU64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000558 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000559 InstrStage<1, [A9_DRegsVFP], 0, Required>,
560 InstrStage<5, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000561 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000562 [4, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000563 //
564 // Single-precision FP Multiply
Evan Chenge790afc2010-10-11 23:41:41 +0000565 InstrItinData<IIC_fpMUL32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000566 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000567 InstrStage<1, [A9_DRegsVFP], 0, Required>,
568 InstrStage<6, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000569 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000570 [5, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000571 //
572 // Double-precision FP Multiply
Evan Chenge790afc2010-10-11 23:41:41 +0000573 InstrItinData<IIC_fpMUL64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000574 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000575 InstrStage<1, [A9_DRegsVFP], 0, Required>,
576 InstrStage<7, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000577 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000578 [6, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000579 //
580 // Single-precision FP MAC
Evan Chenge790afc2010-10-11 23:41:41 +0000581 InstrItinData<IIC_fpMAC32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000582 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000583 InstrStage<1, [A9_DRegsVFP], 0, Required>,
584 InstrStage<9, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000585 InstrStage<1, [A9_NPipe]>],
Evan Chengff310732010-10-28 06:47:08 +0000586 [8, 1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000587 //
588 // Double-precision FP MAC
Evan Chenge790afc2010-10-11 23:41:41 +0000589 InstrItinData<IIC_fpMAC64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000590 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000591 InstrStage<1, [A9_DRegsVFP], 0, Required>,
592 InstrStage<10, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000593 InstrStage<2, [A9_NPipe]>],
Evan Chengff310732010-10-28 06:47:08 +0000594 [9, 1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000595 //
596 // Single-precision FP DIV
Evan Chenge790afc2010-10-11 23:41:41 +0000597 InstrItinData<IIC_fpDIV32 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000598 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000599 InstrStage<1, [A9_DRegsVFP], 0, Required>,
600 InstrStage<16, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000601 InstrStage<10, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000602 [15, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000603 //
604 // Double-precision FP DIV
Evan Chenge790afc2010-10-11 23:41:41 +0000605 InstrItinData<IIC_fpDIV64 , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000606 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000607 InstrStage<1, [A9_DRegsVFP], 0, Required>,
608 InstrStage<26, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000609 InstrStage<20, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000610 [25, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000611 //
612 // Single-precision FP SQRT
Evan Chenge790afc2010-10-11 23:41:41 +0000613 InstrItinData<IIC_fpSQRT32, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000614 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000615 InstrStage<1, [A9_DRegsVFP], 0, Required>,
616 InstrStage<18, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000617 InstrStage<13, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000618 [17, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000619 //
620 // Double-precision FP SQRT
Evan Chenge790afc2010-10-11 23:41:41 +0000621 InstrItinData<IIC_fpSQRT64, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000622 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000623 InstrStage<1, [A9_DRegsVFP], 0, Required>,
624 InstrStage<33, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000625 InstrStage<28, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000626 [32, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000627
628 //
629 // Integer to Single-precision Move
Evan Chenge790afc2010-10-11 23:41:41 +0000630 InstrItinData<IIC_fpMOVIS, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
631 InstrStage<1, [A9_MUX0], 0>,
632 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000633 // Extra 1 latency cycle since wbck is 2 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000634 InstrStage<3, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000635 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000636 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000637 //
638 // Integer to Double-precision Move
Evan Chenge790afc2010-10-11 23:41:41 +0000639 InstrItinData<IIC_fpMOVID, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
640 InstrStage<1, [A9_MUX0], 0>,
641 InstrStage<1, [A9_DRegsVFP], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000642 // Extra 1 latency cycle since wbck is 2 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +0000643 InstrStage<3, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000644 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +0000645 [1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000646 //
647 // Single-precision to Integer Move
Evan Chenge790afc2010-10-11 23:41:41 +0000648 InstrItinData<IIC_fpMOVSI, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000649 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000650 InstrStage<1, [A9_DRegsVFP], 0, Required>,
651 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000652 InstrStage<1, [A9_NPipe]>],
Andrew Trickf4ebec02010-10-21 03:40:16 +0000653 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000654 //
655 // Double-precision to Integer Move
Evan Chenge790afc2010-10-11 23:41:41 +0000656 InstrItinData<IIC_fpMOVDI, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000657 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000658 InstrStage<1, [A9_DRegsVFP], 0, Required>,
659 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +0000660 InstrStage<1, [A9_NPipe]>],
Andrew Trickf4ebec02010-10-21 03:40:16 +0000661 [2, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000662 //
663 // Single-precision FP Load
Evan Chenge790afc2010-10-11 23:41:41 +0000664 InstrItinData<IIC_fpLoad32, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000665 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000666 InstrStage<1, [A9_DRegsVFP], 0, Required>,
667 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000668 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000669 InstrStage<1, [A9_LSUnit]>],
Evan Chengf3179562010-10-01 21:40:30 +0000670 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000671 //
672 // Double-precision FP Load
Evan Chengf3179562010-10-01 21:40:30 +0000673 // FIXME: Result latency is 1 if address is 64-bit aligned.
Evan Chenge790afc2010-10-11 23:41:41 +0000674 InstrItinData<IIC_fpLoad64, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000675 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000676 InstrStage<1, [A9_DRegsVFP], 0, Required>,
677 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000678 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000679 InstrStage<1, [A9_LSUnit]>],
Evan Chengf3179562010-10-01 21:40:30 +0000680 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000681 //
682 // FP Load Multiple
Evan Chenge790afc2010-10-11 23:41:41 +0000683 InstrItinData<IIC_fpLoad_m, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000684 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000685 InstrStage<1, [A9_DRegsVFP], 0, Required>,
686 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000687 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000688 InstrStage<1, [A9_LSUnit]>], [1, 1, 1, 1]>,
Evan Cheng1958cef2010-10-07 01:50:48 +0000689 //
690 // FP Load Multiple + update
Evan Chenge790afc2010-10-11 23:41:41 +0000691 InstrItinData<IIC_fpLoad_mu,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng1958cef2010-10-07 01:50:48 +0000692 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000693 InstrStage<1, [A9_DRegsVFP], 0, Required>,
694 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000695 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000696 InstrStage<1, [A9_LSUnit]>], [2, 1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000697 //
698 // Single-precision FP Store
Evan Chenge790afc2010-10-11 23:41:41 +0000699 InstrItinData<IIC_fpStore32,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000700 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000701 InstrStage<1, [A9_DRegsVFP], 0, Required>,
702 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000703 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000704 InstrStage<1, [A9_LSUnit]>],
Evan Chengf3179562010-10-01 21:40:30 +0000705 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000706 //
707 // Double-precision FP Store
Evan Chenge790afc2010-10-11 23:41:41 +0000708 InstrItinData<IIC_fpStore64,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000709 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000710 InstrStage<1, [A9_DRegsVFP], 0, Required>,
711 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000712 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000713 InstrStage<1, [A9_LSUnit]>],
Evan Chengf3179562010-10-01 21:40:30 +0000714 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000715 //
716 // FP Store Multiple
Evan Chenge790afc2010-10-11 23:41:41 +0000717 InstrItinData<IIC_fpStore_m,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000718 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000719 InstrStage<1, [A9_DRegsVFP], 0, Required>,
720 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000721 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000722 InstrStage<1, [A9_LSUnit]>], [1, 1, 1, 1]>,
Evan Cheng1958cef2010-10-07 01:50:48 +0000723 //
724 // FP Store Multiple + update
Evan Chenge790afc2010-10-11 23:41:41 +0000725 InstrItinData<IIC_fpStore_mu,[InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng1958cef2010-10-07 01:50:48 +0000726 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000727 InstrStage<1, [A9_DRegsVFP], 0, Required>,
728 InstrStage<2, [A9_DRegsN], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000729 InstrStage<1, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000730 InstrStage<1, [A9_LSUnit]>], [2, 1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000731 // NEON
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000732 // VLD1
Evan Cheng05f13e92010-10-09 01:03:04 +0000733 // FIXME: Conservatively assume insufficent alignment.
Evan Chenge790afc2010-10-11 23:41:41 +0000734 InstrItinData<IIC_VLD1, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000735 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000736 InstrStage<1, [A9_DRegsN], 0, Required>,
737 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000738 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000739 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000740 [2, 1]>,
741 // VLD1x2
Evan Chenge790afc2010-10-11 23:41:41 +0000742 InstrItinData<IIC_VLD1x2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000743 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000744 InstrStage<1, [A9_DRegsN], 0, Required>,
745 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000746 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000747 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000748 [2, 2, 1]>,
749 // VLD1x3
Evan Chenge790afc2010-10-11 23:41:41 +0000750 InstrItinData<IIC_VLD1x3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000751 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000752 InstrStage<1, [A9_DRegsN], 0, Required>,
753 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000754 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000755 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000756 [2, 2, 3, 1]>,
757 // VLD1x4
Evan Chenge790afc2010-10-11 23:41:41 +0000758 InstrItinData<IIC_VLD1x4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000759 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000760 InstrStage<1, [A9_DRegsN], 0, Required>,
761 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000762 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000763 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000764 [2, 2, 3, 3, 1]>,
765 // VLD1u
Evan Chenge790afc2010-10-11 23:41:41 +0000766 InstrItinData<IIC_VLD1u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000767 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000768 InstrStage<1, [A9_DRegsN], 0, Required>,
769 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000770 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000771 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000772 [2, 2, 1]>,
773 // VLD1x2u
Evan Chenge790afc2010-10-11 23:41:41 +0000774 InstrItinData<IIC_VLD1x2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000775 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000776 InstrStage<1, [A9_DRegsN], 0, Required>,
777 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000778 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000779 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000780 [2, 2, 2, 1]>,
781 // VLD1x3u
Evan Chenge790afc2010-10-11 23:41:41 +0000782 InstrItinData<IIC_VLD1x3u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000783 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000784 InstrStage<1, [A9_DRegsN], 0, Required>,
785 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000786 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000787 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000788 [2, 2, 3, 2, 1]>,
789 // VLD1x4u
Evan Chenge790afc2010-10-11 23:41:41 +0000790 InstrItinData<IIC_VLD1x4u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000791 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000792 InstrStage<1, [A9_DRegsN], 0, Required>,
793 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000794 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000795 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000796 [2, 2, 3, 3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000797 //
Bob Wilsondc449902010-11-01 22:04:05 +0000798 // VLD1ln
799 InstrItinData<IIC_VLD1ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
800 InstrStage<1, [A9_MUX0], 0>,
801 InstrStage<1, [A9_DRegsN], 0, Required>,
802 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Bob Wilson3a63f9d2010-11-27 06:35:09 +0000803 InstrStage<3, [A9_NPipe], 0>,
Bob Wilsondc449902010-11-01 22:04:05 +0000804 InstrStage<3, [A9_LSUnit]>],
805 [4, 1, 1, 1]>,
806 //
807 // VLD1lnu
808 InstrItinData<IIC_VLD1lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
809 InstrStage<1, [A9_MUX0], 0>,
810 InstrStage<1, [A9_DRegsN], 0, Required>,
811 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Bob Wilson3a63f9d2010-11-27 06:35:09 +0000812 InstrStage<3, [A9_NPipe], 0>,
Bob Wilsondc449902010-11-01 22:04:05 +0000813 InstrStage<3, [A9_LSUnit]>],
814 [4, 2, 1, 1, 1, 1]>,
815 //
Bob Wilsonc92eea02010-11-27 06:35:16 +0000816 // VLD1dup
817 InstrItinData<IIC_VLD1dup, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
818 InstrStage<1, [A9_MUX0], 0>,
819 InstrStage<1, [A9_DRegsN], 0, Required>,
820 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
821 InstrStage<2, [A9_NPipe], 0>,
822 InstrStage<2, [A9_LSUnit]>],
823 [3, 1]>,
824 //
825 // VLD1dupu
826 InstrItinData<IIC_VLD1dupu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
827 InstrStage<1, [A9_MUX0], 0>,
828 InstrStage<1, [A9_DRegsN], 0, Required>,
829 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
830 InstrStage<2, [A9_NPipe], 0>,
831 InstrStage<2, [A9_LSUnit]>],
832 [3, 2, 1, 1]>,
833 //
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000834 // VLD2
Evan Chenge790afc2010-10-11 23:41:41 +0000835 InstrItinData<IIC_VLD2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
836 InstrStage<1, [A9_MUX0], 0>,
837 InstrStage<1, [A9_DRegsN], 0, Required>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000838 // Extra latency cycles since wbck is 7 cycles
839 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000840 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000841 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000842 [3, 3, 1]>,
843 //
844 // VLD2x2
Evan Chenge790afc2010-10-11 23:41:41 +0000845 InstrItinData<IIC_VLD2x2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000846 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000847 InstrStage<1, [A9_DRegsN], 0, Required>,
848 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000849 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000850 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000851 [3, 4, 3, 4, 1]>,
852 //
853 // VLD2ln
Evan Chenge790afc2010-10-11 23:41:41 +0000854 InstrItinData<IIC_VLD2ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000855 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000856 InstrStage<1, [A9_DRegsN], 0, Required>,
857 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000858 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000859 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000860 [4, 4, 1, 1, 1, 1]>,
861 //
862 // VLD2u
Evan Chenge790afc2010-10-11 23:41:41 +0000863 InstrItinData<IIC_VLD2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
864 InstrStage<1, [A9_MUX0], 0>,
865 InstrStage<1, [A9_DRegsN], 0, Required>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000866 // Extra latency cycles since wbck is 7 cycles
867 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000868 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000869 InstrStage<2, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000870 [3, 3, 2, 1, 1, 1]>,
871 //
872 // VLD2x2u
Evan Chenge790afc2010-10-11 23:41:41 +0000873 InstrItinData<IIC_VLD2x2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000874 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000875 InstrStage<1, [A9_DRegsN], 0, Required>,
876 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000877 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000878 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000879 [3, 4, 3, 4, 2, 1]>,
880 //
881 // VLD2lnu
Evan Chenge790afc2010-10-11 23:41:41 +0000882 InstrItinData<IIC_VLD2lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Cheng05f13e92010-10-09 01:03:04 +0000883 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000884 InstrStage<1, [A9_DRegsN], 0, Required>,
885 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000886 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000887 InstrStage<3, [A9_LSUnit]>],
Evan Cheng05f13e92010-10-09 01:03:04 +0000888 [4, 4, 2, 1, 1, 1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000889 //
890 // VLD3
Evan Chenge790afc2010-10-11 23:41:41 +0000891 InstrItinData<IIC_VLD3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000892 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000893 InstrStage<1, [A9_DRegsN], 0, Required>,
894 InstrStage<10,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000895 InstrStage<4, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000896 InstrStage<4, [A9_LSUnit]>],
Evan Chenga7624002010-10-09 01:45:34 +0000897 [4, 4, 5, 1]>,
898 //
899 // VLD3ln
Evan Chenge790afc2010-10-11 23:41:41 +0000900 InstrItinData<IIC_VLD3ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga7624002010-10-09 01:45:34 +0000901 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000902 InstrStage<1, [A9_DRegsN], 0, Required>,
903 InstrStage<11,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000904 InstrStage<5, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000905 InstrStage<5, [A9_LSUnit]>],
Evan Chenga7624002010-10-09 01:45:34 +0000906 [5, 5, 6, 1, 1, 1, 1, 2]>,
907 //
908 // VLD3u
Evan Chenge790afc2010-10-11 23:41:41 +0000909 InstrItinData<IIC_VLD3u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga7624002010-10-09 01:45:34 +0000910 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000911 InstrStage<1, [A9_DRegsN], 0, Required>,
912 InstrStage<10,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000913 InstrStage<4, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000914 InstrStage<4, [A9_LSUnit]>],
Evan Chenga7624002010-10-09 01:45:34 +0000915 [4, 4, 5, 2, 1]>,
916 //
917 // VLD3lnu
Evan Chenge790afc2010-10-11 23:41:41 +0000918 InstrItinData<IIC_VLD3lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga7624002010-10-09 01:45:34 +0000919 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000920 InstrStage<1, [A9_DRegsN], 0, Required>,
921 InstrStage<11,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000922 InstrStage<5, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000923 InstrStage<5, [A9_LSUnit]>],
Evan Chenga7624002010-10-09 01:45:34 +0000924 [5, 5, 6, 2, 1, 1, 1, 1, 1, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000925 //
926 // VLD4
Evan Chenge790afc2010-10-11 23:41:41 +0000927 InstrItinData<IIC_VLD4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000928 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000929 InstrStage<1, [A9_DRegsN], 0, Required>,
930 InstrStage<10,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000931 InstrStage<4, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000932 InstrStage<4, [A9_LSUnit]>],
Evan Chengd7a404d2010-10-09 04:07:58 +0000933 [4, 4, 5, 5, 1]>,
934 //
935 // VLD4ln
Evan Chenge790afc2010-10-11 23:41:41 +0000936 InstrItinData<IIC_VLD4ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chengd7a404d2010-10-09 04:07:58 +0000937 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000938 InstrStage<1, [A9_DRegsN], 0, Required>,
939 InstrStage<11,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000940 InstrStage<5, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000941 InstrStage<5, [A9_LSUnit]>],
Evan Chengd7a404d2010-10-09 04:07:58 +0000942 [5, 5, 6, 6, 1, 1, 1, 1, 2, 2]>,
943 //
944 // VLD4u
Evan Chenge790afc2010-10-11 23:41:41 +0000945 InstrItinData<IIC_VLD4u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chengd7a404d2010-10-09 04:07:58 +0000946 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000947 InstrStage<1, [A9_DRegsN], 0, Required>,
948 InstrStage<10,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000949 InstrStage<4, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000950 InstrStage<4, [A9_LSUnit]>],
Evan Chengd7a404d2010-10-09 04:07:58 +0000951 [4, 4, 5, 5, 2, 1]>,
952 //
953 // VLD4lnu
Evan Chenge790afc2010-10-11 23:41:41 +0000954 InstrItinData<IIC_VLD4lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chengd7a404d2010-10-09 04:07:58 +0000955 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000956 InstrStage<1, [A9_DRegsN], 0, Required>,
957 InstrStage<11,[A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000958 InstrStage<5, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000959 InstrStage<5, [A9_LSUnit]>],
Evan Chengd7a404d2010-10-09 04:07:58 +0000960 [5, 5, 6, 6, 2, 1, 1, 1, 1, 1, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +0000961 //
Evan Cheng94ad0082010-10-11 22:03:18 +0000962 // VST1
963 InstrItinData<IIC_VST1, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +0000964 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000965 InstrStage<1, [A9_DRegsN], 0, Required>,
966 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000967 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000968 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +0000969 [1, 1, 1]>,
970 //
971 // VST1x2
972 InstrItinData<IIC_VST1x2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
973 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000974 InstrStage<1, [A9_DRegsN], 0, Required>,
975 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000976 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000977 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +0000978 [1, 1, 1, 1]>,
979 //
980 // VST1x3
981 InstrItinData<IIC_VST1x3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
982 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000983 InstrStage<1, [A9_DRegsN], 0, Required>,
984 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000985 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000986 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +0000987 [1, 1, 1, 1, 2]>,
988 //
989 // VST1x4
990 InstrItinData<IIC_VST1x4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
991 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +0000992 InstrStage<1, [A9_DRegsN], 0, Required>,
993 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +0000994 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +0000995 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +0000996 [1, 1, 1, 1, 2, 2]>,
997 //
998 // VST1u
999 InstrItinData<IIC_VST1u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1000 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001001 InstrStage<1, [A9_DRegsN], 0, Required>,
1002 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001003 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001004 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001005 [2, 1, 1, 1, 1]>,
1006 //
1007 // VST1x2u
1008 InstrItinData<IIC_VST1x2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1009 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001010 InstrStage<1, [A9_DRegsN], 0, Required>,
1011 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001012 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001013 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001014 [2, 1, 1, 1, 1, 1]>,
1015 //
1016 // VST1x3u
1017 InstrItinData<IIC_VST1x3u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1018 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001019 InstrStage<1, [A9_DRegsN], 0, Required>,
1020 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001021 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001022 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001023 [2, 1, 1, 1, 1, 1, 2]>,
1024 //
1025 // VST1x4u
1026 InstrItinData<IIC_VST1x4u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1027 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001028 InstrStage<1, [A9_DRegsN], 0, Required>,
1029 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001030 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001031 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001032 [2, 1, 1, 1, 1, 1, 2, 2]>,
1033 //
Bob Wilsond80b29d2010-11-02 21:18:25 +00001034 // VST1ln
1035 InstrItinData<IIC_VST1ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1036 InstrStage<1, [A9_MUX0], 0>,
1037 InstrStage<1, [A9_DRegsN], 0, Required>,
1038 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Bob Wilson3a63f9d2010-11-27 06:35:09 +00001039 InstrStage<2, [A9_NPipe], 0>,
Bob Wilsond80b29d2010-11-02 21:18:25 +00001040 InstrStage<2, [A9_LSUnit]>],
1041 [1, 1, 1]>,
1042 //
1043 // VST1lnu
1044 InstrItinData<IIC_VST1lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1045 InstrStage<1, [A9_MUX0], 0>,
1046 InstrStage<1, [A9_DRegsN], 0, Required>,
1047 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Bob Wilson3a63f9d2010-11-27 06:35:09 +00001048 InstrStage<3, [A9_NPipe], 0>,
Bob Wilsond80b29d2010-11-02 21:18:25 +00001049 InstrStage<3, [A9_LSUnit]>],
1050 [2, 1, 1, 1, 1]>,
1051 //
Evan Cheng94ad0082010-10-11 22:03:18 +00001052 // VST2
1053 InstrItinData<IIC_VST2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1054 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001055 InstrStage<1, [A9_DRegsN], 0, Required>,
1056 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001057 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001058 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001059 [1, 1, 1, 1]>,
1060 //
1061 // VST2x2
1062 InstrItinData<IIC_VST2x2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1063 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001064 InstrStage<1, [A9_DRegsN], 0, Required>,
1065 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001066 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001067 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001068 [1, 1, 1, 1, 2, 2]>,
1069 //
1070 // VST2u
1071 InstrItinData<IIC_VST2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1072 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001073 InstrStage<1, [A9_DRegsN], 0, Required>,
1074 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001075 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001076 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001077 [2, 1, 1, 1, 1, 1]>,
1078 //
1079 // VST2x2u
1080 InstrItinData<IIC_VST2x2u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1081 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001082 InstrStage<1, [A9_DRegsN], 0, Required>,
1083 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001084 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001085 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001086 [2, 1, 1, 1, 1, 1, 2, 2]>,
1087 //
1088 // VST2ln
1089 InstrItinData<IIC_VST2ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1090 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001091 InstrStage<1, [A9_DRegsN], 0, Required>,
1092 InstrStage<2, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001093 InstrStage<2, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001094 InstrStage<2, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001095 [1, 1, 1, 1]>,
1096 //
1097 // VST2lnu
1098 InstrItinData<IIC_VST2lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1099 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001100 InstrStage<1, [A9_DRegsN], 0, Required>,
1101 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001102 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001103 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001104 [2, 1, 1, 1, 1, 1]>,
1105 //
1106 // VST3
1107 InstrItinData<IIC_VST3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1108 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001109 InstrStage<1, [A9_DRegsN], 0, Required>,
1110 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001111 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001112 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001113 [1, 1, 1, 1, 2]>,
1114 //
1115 // VST3u
1116 InstrItinData<IIC_VST3u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1117 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001118 InstrStage<1, [A9_DRegsN], 0, Required>,
1119 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001120 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001121 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001122 [2, 1, 1, 1, 1, 1, 2]>,
1123 //
1124 // VST3ln
1125 InstrItinData<IIC_VST3ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1126 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001127 InstrStage<1, [A9_DRegsN], 0, Required>,
1128 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001129 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001130 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001131 [1, 1, 1, 1, 2]>,
1132 //
1133 // VST3lnu
1134 InstrItinData<IIC_VST3lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1135 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001136 InstrStage<1, [A9_DRegsN], 0, Required>,
1137 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001138 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001139 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001140 [2, 1, 1, 1, 1, 1, 2]>,
1141 //
1142 // VST4
1143 InstrItinData<IIC_VST4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1144 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001145 InstrStage<1, [A9_DRegsN], 0, Required>,
1146 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001147 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001148 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001149 [1, 1, 1, 1, 2, 2]>,
1150 //
1151 // VST4u
1152 InstrItinData<IIC_VST4u, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1153 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001154 InstrStage<1, [A9_DRegsN], 0, Required>,
1155 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001156 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001157 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001158 [2, 1, 1, 1, 1, 1, 2, 2]>,
1159 //
1160 // VST4ln
1161 InstrItinData<IIC_VST4ln, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1162 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001163 InstrStage<1, [A9_DRegsN], 0, Required>,
1164 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001165 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001166 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001167 [1, 1, 1, 1, 2, 2]>,
1168 //
1169 // VST4lnu
1170 InstrItinData<IIC_VST4lnu, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1171 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001172 InstrStage<1, [A9_DRegsN], 0, Required>,
1173 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng634ab6c2010-11-03 00:40:22 +00001174 InstrStage<3, [A9_NPipe], 0>,
Evan Cheng39121582010-10-13 01:54:21 +00001175 InstrStage<3, [A9_LSUnit]>],
Evan Cheng94ad0082010-10-11 22:03:18 +00001176 [2, 1, 1, 1, 1, 1, 2, 2]>,
1177
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001178 //
1179 // Double-register Integer Unary
Evan Chenge790afc2010-10-11 23:41:41 +00001180 InstrItinData<IIC_VUNAiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1181 InstrStage<1, [A9_MUX0], 0>,
1182 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001183 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001184 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001185 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001186 [4, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001187 //
1188 // Quad-register Integer Unary
Evan Chenge790afc2010-10-11 23:41:41 +00001189 InstrItinData<IIC_VUNAiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1190 InstrStage<1, [A9_MUX0], 0>,
1191 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001192 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001193 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001194 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001195 [4, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001196 //
1197 // Double-register Integer Q-Unary
Evan Chenge790afc2010-10-11 23:41:41 +00001198 InstrItinData<IIC_VQUNAiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1199 InstrStage<1, [A9_MUX0], 0>,
1200 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001201 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001202 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001203 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001204 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001205 //
1206 // Quad-register Integer CountQ-Unary
Evan Chenge790afc2010-10-11 23:41:41 +00001207 InstrItinData<IIC_VQUNAiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1208 InstrStage<1, [A9_MUX0], 0>,
1209 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001210 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001211 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001212 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001213 [4, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001214 //
1215 // Double-register Integer Binary
Evan Chenge790afc2010-10-11 23:41:41 +00001216 InstrItinData<IIC_VBINiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1217 InstrStage<1, [A9_MUX0], 0>,
1218 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001219 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001220 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001221 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001222 [3, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001223 //
1224 // Quad-register Integer Binary
Evan Chenge790afc2010-10-11 23:41:41 +00001225 InstrItinData<IIC_VBINiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1226 InstrStage<1, [A9_MUX0], 0>,
1227 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001228 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001229 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001230 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001231 [3, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001232 //
1233 // Double-register Integer Subtract
Evan Chenge790afc2010-10-11 23:41:41 +00001234 InstrItinData<IIC_VSUBiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1235 InstrStage<1, [A9_MUX0], 0>,
1236 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001237 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001238 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001239 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001240 [3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001241 //
1242 // Quad-register Integer Subtract
Evan Chenge790afc2010-10-11 23:41:41 +00001243 InstrItinData<IIC_VSUBiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1244 InstrStage<1, [A9_MUX0], 0>,
1245 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001246 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001247 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001248 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001249 [3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001250 //
1251 // Double-register Integer Shift
Evan Chenge790afc2010-10-11 23:41:41 +00001252 InstrItinData<IIC_VSHLiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1253 InstrStage<1, [A9_MUX0], 0>,
1254 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001255 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001256 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001257 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001258 [3, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001259 //
1260 // Quad-register Integer Shift
Evan Chenge790afc2010-10-11 23:41:41 +00001261 InstrItinData<IIC_VSHLiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1262 InstrStage<1, [A9_MUX0], 0>,
1263 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001264 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001265 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001266 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001267 [3, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001268 //
1269 // Double-register Integer Shift (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001270 InstrItinData<IIC_VSHLi4D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1271 InstrStage<1, [A9_MUX0], 0>,
1272 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001273 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001274 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001275 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001276 [4, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001277 //
1278 // Quad-register Integer Shift (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001279 InstrItinData<IIC_VSHLi4Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1280 InstrStage<1, [A9_MUX0], 0>,
1281 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001282 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001283 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001284 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001285 [4, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001286 //
1287 // Double-register Integer Binary (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001288 InstrItinData<IIC_VBINi4D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1289 InstrStage<1, [A9_MUX0], 0>,
1290 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001291 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001292 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001293 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001294 [4, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001295 //
1296 // Quad-register Integer Binary (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001297 InstrItinData<IIC_VBINi4Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1298 InstrStage<1, [A9_MUX0], 0>,
1299 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001300 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001301 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001302 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001303 [4, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001304 //
1305 // Double-register Integer Subtract (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001306 InstrItinData<IIC_VSUBi4D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1307 InstrStage<1, [A9_MUX0], 0>,
1308 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001309 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001310 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001311 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001312 [4, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001313 //
1314 // Quad-register Integer Subtract (4 cycle)
Evan Chenge790afc2010-10-11 23:41:41 +00001315 InstrItinData<IIC_VSUBi4Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1316 InstrStage<1, [A9_MUX0], 0>,
1317 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001318 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001319 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001320 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001321 [4, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001322
1323 //
1324 // Double-register Integer Count
Evan Chenge790afc2010-10-11 23:41:41 +00001325 InstrItinData<IIC_VCNTiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1326 InstrStage<1, [A9_MUX0], 0>,
1327 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001328 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001329 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001330 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001331 [3, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001332 //
1333 // Quad-register Integer Count
1334 // Result written in N3, but that is relative to the last cycle of multicycle,
1335 // so we use 4 for those cases
Evan Chenge790afc2010-10-11 23:41:41 +00001336 InstrItinData<IIC_VCNTiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1337 InstrStage<1, [A9_MUX0], 0>,
1338 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001339 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001340 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001341 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001342 [4, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001343 //
1344 // Double-register Absolute Difference and Accumulate
Evan Chenge790afc2010-10-11 23:41:41 +00001345 InstrItinData<IIC_VABAD, [InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Cheng73eac2a2010-10-03 02:03:59 +00001346 InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001347 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001348 InstrStage<1, [A9_DRegsN], 0, Required>,
1349 // Extra latency cycles since wbck is 6 cycles
Evan Chenga3178152010-10-01 22:52:29 +00001350 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001351 [6, 3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001352 //
1353 // Quad-register Absolute Difference and Accumulate
Evan Chenge790afc2010-10-11 23:41:41 +00001354 InstrItinData<IIC_VABAQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1355 InstrStage<1, [A9_MUX0], 0>,
1356 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001357 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001358 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001359 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001360 [6, 3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001361 //
1362 // Double-register Integer Pair Add Long
Evan Chenge790afc2010-10-11 23:41:41 +00001363 InstrItinData<IIC_VPALiD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1364 InstrStage<1, [A9_MUX0], 0>,
1365 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001366 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001367 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001368 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001369 [6, 3, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001370 //
1371 // Quad-register Integer Pair Add Long
Evan Chenge790afc2010-10-11 23:41:41 +00001372 InstrItinData<IIC_VPALiQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1373 InstrStage<1, [A9_MUX0], 0>,
1374 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001375 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001376 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001377 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001378 [6, 3, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001379
1380 //
1381 // Double-register Integer Multiply (.8, .16)
Evan Chenge790afc2010-10-11 23:41:41 +00001382 InstrItinData<IIC_VMULi16D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1383 InstrStage<1, [A9_MUX0], 0>,
1384 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001385 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001386 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001387 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001388 [6, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001389 //
1390 // Quad-register Integer Multiply (.8, .16)
Evan Chenge790afc2010-10-11 23:41:41 +00001391 InstrItinData<IIC_VMULi16Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1392 InstrStage<1, [A9_MUX0], 0>,
1393 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001394 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001395 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001396 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001397 [7, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001398
1399 //
1400 // Double-register Integer Multiply (.32)
Evan Chenge790afc2010-10-11 23:41:41 +00001401 InstrItinData<IIC_VMULi32D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1402 InstrStage<1, [A9_MUX0], 0>,
1403 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001404 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001405 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001406 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001407 [7, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001408 //
1409 // Quad-register Integer Multiply (.32)
Evan Chenge790afc2010-10-11 23:41:41 +00001410 InstrItinData<IIC_VMULi32Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1411 InstrStage<1, [A9_MUX0], 0>,
1412 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001413 // Extra latency cycles since wbck is 9 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001414 InstrStage<10, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001415 InstrStage<4, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001416 [9, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001417 //
1418 // Double-register Integer Multiply-Accumulate (.8, .16)
Evan Chenge790afc2010-10-11 23:41:41 +00001419 InstrItinData<IIC_VMACi16D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1420 InstrStage<1, [A9_MUX0], 0>,
1421 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001422 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001423 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001424 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001425 [6, 3, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001426 //
1427 // Double-register Integer Multiply-Accumulate (.32)
Evan Chenge790afc2010-10-11 23:41:41 +00001428 InstrItinData<IIC_VMACi32D, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1429 InstrStage<1, [A9_MUX0], 0>,
1430 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001431 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001432 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001433 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001434 [7, 3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001435 //
1436 // Quad-register Integer Multiply-Accumulate (.8, .16)
Evan Chenge790afc2010-10-11 23:41:41 +00001437 InstrItinData<IIC_VMACi16Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1438 InstrStage<1, [A9_MUX0], 0>,
1439 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001440 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001441 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001442 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001443 [7, 3, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001444 //
1445 // Quad-register Integer Multiply-Accumulate (.32)
Evan Chenge790afc2010-10-11 23:41:41 +00001446 InstrItinData<IIC_VMACi32Q, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1447 InstrStage<1, [A9_MUX0], 0>,
1448 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001449 // Extra latency cycles since wbck is 9 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001450 InstrStage<10, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001451 InstrStage<4, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001452 [9, 3, 2, 1]>,
Evan Cheng2a5d7642010-10-01 20:50:58 +00001453
1454 //
1455 // Move
Evan Chenge790afc2010-10-11 23:41:41 +00001456 InstrItinData<IIC_VMOV, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001457 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001458 InstrStage<1, [A9_DRegsN], 0, Required>,
1459 InstrStage<1, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001460 InstrStage<1, [A9_NPipe]>],
Evan Cheng2a5d7642010-10-01 20:50:58 +00001461 [1,1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001462 //
1463 // Move Immediate
Evan Chenge790afc2010-10-11 23:41:41 +00001464 InstrItinData<IIC_VMOVImm, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1465 InstrStage<1, [A9_MUX0], 0>,
1466 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001467 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001468 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001469 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001470 [3]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001471 //
1472 // Double-register Permute Move
Evan Chenge790afc2010-10-11 23:41:41 +00001473 InstrItinData<IIC_VMOVD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001474 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001475 InstrStage<1, [A9_DRegsN], 0, Required>,
1476 // Extra latency cycles since wbck is 6 cycles
1477 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001478 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001479 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001480 //
1481 // Quad-register Permute Move
Evan Chenge790afc2010-10-11 23:41:41 +00001482 InstrItinData<IIC_VMOVQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001483 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001484 InstrStage<1, [A9_DRegsN], 0, Required>,
1485 // Extra latency cycles since wbck is 6 cycles
1486 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001487 InstrStage<1, [A9_NPipe]>],
Evan Cheng2a5d7642010-10-01 20:50:58 +00001488 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001489 //
1490 // Integer to Single-precision Move
Evan Chenge790afc2010-10-11 23:41:41 +00001491 InstrItinData<IIC_VMOVIS , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001492 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001493 InstrStage<1, [A9_DRegsN], 0, Required>,
1494 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001495 InstrStage<1, [A9_NPipe]>],
Andrew Trickf4ebec02010-10-21 03:40:16 +00001496 [1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001497 //
1498 // Integer to Double-precision Move
Evan Chenge790afc2010-10-11 23:41:41 +00001499 InstrItinData<IIC_VMOVID , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001500 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001501 InstrStage<1, [A9_DRegsN], 0, Required>,
1502 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001503 InstrStage<1, [A9_NPipe]>],
Andrew Trickf4ebec02010-10-21 03:40:16 +00001504 [1, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001505 //
1506 // Single-precision to Integer Move
Evan Chenge790afc2010-10-11 23:41:41 +00001507 InstrItinData<IIC_VMOVSI , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001508 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001509 InstrStage<1, [A9_DRegsN], 0, Required>,
1510 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001511 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001512 [2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001513 //
1514 // Double-precision to Integer Move
Evan Chenge790afc2010-10-11 23:41:41 +00001515 InstrItinData<IIC_VMOVDI , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001516 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001517 InstrStage<1, [A9_DRegsN], 0, Required>,
1518 InstrStage<3, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001519 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001520 [2, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001521 //
1522 // Integer to Lane Move
Evan Chenge790afc2010-10-11 23:41:41 +00001523 InstrItinData<IIC_VMOVISL , [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001524 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001525 InstrStage<1, [A9_DRegsN], 0, Required>,
1526 InstrStage<4, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001527 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001528 [3, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001529
1530 //
Evan Cheng2a5d7642010-10-01 20:50:58 +00001531 // Vector narrow move
Evan Chenge790afc2010-10-11 23:41:41 +00001532 InstrItinData<IIC_VMOVN, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1533 InstrStage<1, [A9_MUX0], 0>,
1534 InstrStage<1, [A9_DRegsN], 0, Required>,
Evan Cheng2a5d7642010-10-01 20:50:58 +00001535 // Extra latency cycles since wbck is 6 cycles
1536 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001537 InstrStage<1, [A9_NPipe]>],
Evan Cheng2a5d7642010-10-01 20:50:58 +00001538 [3, 1]>,
1539 //
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001540 // Double-register FP Unary
Evan Chenge790afc2010-10-11 23:41:41 +00001541 InstrItinData<IIC_VUNAD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1542 InstrStage<1, [A9_MUX0], 0>,
1543 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001544 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001545 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001546 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001547 [5, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001548 //
1549 // Quad-register FP Unary
1550 // Result written in N5, but that is relative to the last cycle of multicycle,
1551 // so we use 6 for those cases
Evan Chenge790afc2010-10-11 23:41:41 +00001552 InstrItinData<IIC_VUNAQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1553 InstrStage<1, [A9_MUX0], 0>,
1554 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001555 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001556 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001557 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001558 [6, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001559 //
1560 // Double-register FP Binary
1561 // FIXME: We're using this itin for many instructions and [2, 2] here is too
1562 // optimistic.
Evan Chenge790afc2010-10-11 23:41:41 +00001563 InstrItinData<IIC_VBIND, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001564 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001565 InstrStage<1, [A9_DRegsN], 0, Required>,
1566 // Extra latency cycles since wbck is 6 cycles
1567 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001568 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001569 [5, 2, 2]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001570
1571 //
1572 // VPADD, etc.
1573 InstrItinData<IIC_VPBIND, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1574 InstrStage<1, [A9_MUX0], 0>,
1575 InstrStage<1, [A9_DRegsN], 0, Required>,
1576 // Extra latency cycles since wbck is 6 cycles
1577 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
1578 InstrStage<1, [A9_NPipe]>],
1579 [5, 1, 1]>,
1580 //
1581 // Double-register FP VMUL
1582 InstrItinData<IIC_VFMULD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1583 InstrStage<1, [A9_MUX0], 0>,
1584 InstrStage<1, [A9_DRegsN], 0, Required>,
1585 // Extra latency cycles since wbck is 6 cycles
1586 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
1587 InstrStage<1, [A9_NPipe]>],
1588 [5, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001589 //
1590 // Quad-register FP Binary
1591 // Result written in N5, but that is relative to the last cycle of multicycle,
1592 // so we use 6 for those cases
1593 // FIXME: We're using this itin for many instructions and [2, 2] here is too
1594 // optimistic.
Evan Chenge790afc2010-10-11 23:41:41 +00001595 InstrItinData<IIC_VBINQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001596 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001597 InstrStage<1, [A9_DRegsN], 0, Required>,
1598 // Extra latency cycles since wbck is 7 cycles
1599 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001600 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001601 [6, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001602 //
Evan Chenge790afc2010-10-11 23:41:41 +00001603 // Quad-register FP VMUL
1604 InstrItinData<IIC_VFMULQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1605 InstrStage<1, [A9_MUX0], 0>,
1606 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001607 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001608 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenge790afc2010-10-11 23:41:41 +00001609 InstrStage<1, [A9_NPipe]>],
1610 [6, 2, 1]>,
1611 //
1612 // Double-register FP Multiple-Accumulate
1613 InstrItinData<IIC_VMACD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001614 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001615 InstrStage<1, [A9_DRegsN], 0, Required>,
1616 // Extra latency cycles since wbck is 7 cycles
1617 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001618 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001619 [6, 3, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001620 //
1621 // Quad-register FP Multiple-Accumulate
1622 // Result written in N9, but that is relative to the last cycle of multicycle,
1623 // so we use 10 for those cases
Evan Chenge790afc2010-10-11 23:41:41 +00001624 InstrItinData<IIC_VMACQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1625 InstrStage<1, [A9_MUX0], 0>,
1626 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001627 // Extra latency cycles since wbck is 9 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001628 InstrStage<10, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001629 InstrStage<4, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001630 [8, 4, 2, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001631 //
1632 // Double-register Reciprical Step
Evan Chenge790afc2010-10-11 23:41:41 +00001633 InstrItinData<IIC_VRECSD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001634 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001635 InstrStage<1, [A9_DRegsN], 0, Required>,
1636 // Extra latency cycles since wbck is 10 cycles
1637 InstrStage<11, [A9_DRegsVFP], 0, Reserved>,
1638 InstrStage<1, [A9_NPipe]>],
1639 [9, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001640 //
1641 // Quad-register Reciprical Step
Evan Chenge790afc2010-10-11 23:41:41 +00001642 InstrItinData<IIC_VRECSQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001643 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001644 InstrStage<1, [A9_DRegsN], 0, Required>,
1645 // Extra latency cycles since wbck is 11 cycles
1646 InstrStage<12, [A9_DRegsVFP], 0, Reserved>,
1647 InstrStage<2, [A9_NPipe]>],
1648 [10, 2, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001649 //
1650 // Double-register Permute
Evan Chenge790afc2010-10-11 23:41:41 +00001651 InstrItinData<IIC_VPERMD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1652 InstrStage<1, [A9_MUX0], 0>,
1653 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001654 // Extra latency cycles since wbck is 6 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001655 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001656 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001657 [2, 2, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001658 //
1659 // Quad-register Permute
1660 // Result written in N2, but that is relative to the last cycle of multicycle,
1661 // so we use 3 for those cases
Evan Chenge790afc2010-10-11 23:41:41 +00001662 InstrItinData<IIC_VPERMQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1663 InstrStage<1, [A9_MUX0], 0>,
1664 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001665 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001666 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001667 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001668 [3, 3, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001669 //
1670 // Quad-register Permute (3 cycle issue)
1671 // Result written in N2, but that is relative to the last cycle of multicycle,
1672 // so we use 4 for those cases
Evan Chenge790afc2010-10-11 23:41:41 +00001673 InstrItinData<IIC_VPERMQ3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1674 InstrStage<1, [A9_MUX0], 0>,
1675 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001676 // Extra latency cycles since wbck is 8 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001677 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001678 InstrStage<3, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001679 [4, 4, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001680
1681 //
1682 // Double-register VEXT
Evan Chenge790afc2010-10-11 23:41:41 +00001683 InstrItinData<IIC_VEXTD, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001684 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001685 InstrStage<1, [A9_DRegsN], 0, Required>,
1686 // Extra latency cycles since wbck is 6 cycles
1687 InstrStage<7, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001688 InstrStage<1, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001689 [2, 1, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001690 //
1691 // Quad-register VEXT
Evan Chenge790afc2010-10-11 23:41:41 +00001692 InstrItinData<IIC_VEXTQ, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
Evan Chenga3178152010-10-01 22:52:29 +00001693 InstrStage<1, [A9_MUX0], 0>,
Evan Chenge790afc2010-10-11 23:41:41 +00001694 InstrStage<1, [A9_DRegsN], 0, Required>,
1695 // Extra latency cycles since wbck is 7 cycles
1696 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001697 InstrStage<2, [A9_NPipe]>],
Evan Chenge790afc2010-10-11 23:41:41 +00001698 [3, 1, 2]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001699 //
1700 // VTB
Evan Chenge790afc2010-10-11 23:41:41 +00001701 InstrItinData<IIC_VTB1, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1702 InstrStage<1, [A9_MUX0], 0>,
1703 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001704 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001705 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001706 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001707 [3, 2, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001708 InstrItinData<IIC_VTB2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1709 InstrStage<1, [A9_MUX0], 0>,
1710 InstrStage<2, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001711 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001712 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001713 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001714 [3, 2, 2, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001715 InstrItinData<IIC_VTB3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1716 InstrStage<1, [A9_MUX0], 0>,
1717 InstrStage<2, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001718 // Extra latency cycles since wbck is 8 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001719 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001720 InstrStage<3, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001721 [4, 2, 2, 3, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001722 InstrItinData<IIC_VTB4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1723 InstrStage<1, [A9_MUX0], 0>,
1724 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001725 // Extra latency cycles since wbck is 8 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001726 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001727 InstrStage<3, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001728 [4, 2, 2, 3, 3, 1]>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001729 //
1730 // VTBX
Evan Chenge790afc2010-10-11 23:41:41 +00001731 InstrItinData<IIC_VTBX1, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1732 InstrStage<1, [A9_MUX0], 0>,
1733 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001734 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001735 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001736 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001737 [3, 1, 2, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001738 InstrItinData<IIC_VTBX2, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1739 InstrStage<1, [A9_MUX0], 0>,
1740 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001741 // Extra latency cycles since wbck is 7 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001742 InstrStage<8, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001743 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001744 [3, 1, 2, 2, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001745 InstrItinData<IIC_VTBX3, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1746 InstrStage<1, [A9_MUX0], 0>,
1747 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001748 // Extra latency cycles since wbck is 8 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001749 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001750 InstrStage<3, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001751 [4, 1, 2, 2, 3, 1]>,
Evan Chenge790afc2010-10-11 23:41:41 +00001752 InstrItinData<IIC_VTBX4, [InstrStage<1, [A9_Issue0, A9_Issue1], 0>,
1753 InstrStage<1, [A9_MUX0], 0>,
1754 InstrStage<1, [A9_DRegsN], 0, Required>,
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001755 // Extra latency cycles since wbck is 8 cycles
Anton Korobeynikov7d62e332010-04-18 20:31:01 +00001756 InstrStage<9, [A9_DRegsVFP], 0, Reserved>,
Evan Chenga3178152010-10-01 22:52:29 +00001757 InstrStage<2, [A9_NPipe]>],
Evan Cheng89e6f672010-10-01 19:41:46 +00001758 [4, 1, 2, 2, 3, 3, 1]>
Anton Korobeynikov090323a2010-04-07 18:22:11 +00001759]>;