1 // Copyright 2016, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 // * Redistributions of source code must retain the above copyright notice,
8 // this list of conditions and the following disclaimer.
9 // * Redistributions in binary form must reproduce the above copyright notice,
10 // this list of conditions and the following disclaimer in the documentation
11 // and/or other materials provided with the distribution.
12 // * Neither the name of ARM Limited nor the names of its contributors may be
13 // used to endorse or promote products derived from this software without
14 // specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
27
28 // -----------------------------------------------------------------------------
29 // This file is auto generated from the
30 // test/aarch32/config/template-simulator-aarch32.cc.in template file using
31 // tools/generate_tests.py.
32 //
33 // PLEASE DO NOT EDIT.
34 // -----------------------------------------------------------------------------
35
36
37 #include "test-runner.h"
38
39 #include "test-utils.h"
40 #include "test-utils-aarch32.h"
41
42 #include "aarch32/assembler-aarch32.h"
43 #include "aarch32/disasm-aarch32.h"
44 #include "aarch32/macro-assembler-aarch32.h"
45
46 #define __ masm.
47 #define BUF_SIZE (4096)
48
49 #ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
50 // Run tests with the simulator.
51
52 #define SETUP() MacroAssembler masm(BUF_SIZE)
53
54 #define START() masm.GetBuffer()->Reset()
55
56 #define END() \
57 __ Hlt(0); \
58 __ FinalizeCode();
59
60 // TODO: Run the tests in the simulator.
61 #define RUN()
62
63 #else // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32.
64
65 #define SETUP() \
66 MacroAssembler masm(BUF_SIZE); \
67 UseScratchRegisterScope harness_scratch;
68
69 #define START() \
70 harness_scratch.Open(&masm); \
71 harness_scratch.ExcludeAll(); \
72 masm.GetBuffer()->Reset(); \
73 __ Push(r4); \
74 __ Push(r5); \
75 __ Push(r6); \
76 __ Push(r7); \
77 __ Push(r8); \
78 __ Push(r9); \
79 __ Push(r10); \
80 __ Push(r11); \
81 __ Push(lr); \
82 harness_scratch.Include(ip);
83
84 #define END() \
85 harness_scratch.Exclude(ip); \
86 __ Pop(lr); \
87 __ Pop(r11); \
88 __ Pop(r10); \
89 __ Pop(r9); \
90 __ Pop(r8); \
91 __ Pop(r7); \
92 __ Pop(r6); \
93 __ Pop(r5); \
94 __ Pop(r4); \
95 __ Bx(lr); \
96 __ FinalizeCode(); \
97 harness_scratch.Close();
98
99 #define RUN() \
100 { \
101 int pcs_offset = masm.IsUsingT32() ? 1 : 0; \
102 masm.GetBuffer()->SetExecutable(); \
103 ExecuteMemory(masm.GetBuffer()->GetStartAddress<byte*>(), \
104 masm.GetSizeOfCodeGenerated(), \
105 pcs_offset); \
106 masm.GetBuffer()->SetWritable(); \
107 }
108
109 #endif // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
110
111 namespace vixl {
112 namespace aarch32 {
113
114 // List of instruction encodings:
115 #define FOREACH_INSTRUCTION(M) \
116 M(Ldr) \
117 M(Ldrb) \
118 M(Str) \
119 M(Strb)
120
121
122 // The following definitions are defined again in each generated test, therefore
123 // we need to place them in an anomymous namespace. It expresses that they are
124 // local to this file only, and the compiler is not allowed to share these types
125 // across test files during template instantiation. Specifically, `Operands` and
126 // `Inputs` have various layouts across generated tests so they absolutely
127 // cannot be shared.
128
129 #ifdef VIXL_INCLUDE_TARGET_A32
130 namespace {
131
132 // Values to be passed to the assembler to produce the instruction under test.
133 struct Operands {
134 Condition cond;
135 Register rd;
136 Register rn;
137 Sign sign;
138 Register rm;
139 ShiftType shift;
140 uint32_t amount;
141 AddrMode addr_mode;
142 };
143
144 // Input data to feed to the instruction.
145 struct Inputs {
146 uint32_t apsr;
147 uint32_t rd;
148 uint32_t rm;
149 uint32_t memop[2];
150 };
151
152 // This structure contains all input data needed to test one specific encoding.
153 // It used to generate a loop over an instruction.
154 struct TestLoopData {
155 // The `operands` fields represents the values to pass to the assembler to
156 // produce the instruction.
157 Operands operands;
158 // Description of the operands, used for error reporting.
159 const char* operands_description;
160 // Unique identifier, used for generating traces.
161 const char* identifier;
162 // Array of values to be fed to the instruction.
163 size_t input_size;
164 const Inputs* inputs;
165 };
166
167 static const Inputs kCondition[] = {{NFlag, 0xabababab, 0, {0, 0x77777777}},
168 {ZFlag, 0xabababab, 0, {0, 0x77777777}},
169 {CFlag, 0xabababab, 0, {0, 0x77777777}},
170 {VFlag, 0xabababab, 0, {0, 0x77777777}},
171 {NZFlag, 0xabababab, 0, {0, 0x77777777}},
172 {NCFlag, 0xabababab, 0, {0, 0x77777777}},
173 {NVFlag, 0xabababab, 0, {0, 0x77777777}},
174 {ZCFlag, 0xabababab, 0, {0, 0x77777777}},
175 {ZVFlag, 0xabababab, 0, {0, 0x77777777}},
176 {CVFlag, 0xabababab, 0, {0, 0x77777777}},
177 {NZCFlag, 0xabababab, 0, {0, 0x77777777}},
178 {NZVFlag, 0xabababab, 0, {0, 0x77777777}},
179 {NCVFlag, 0xabababab, 0, {0, 0x77777777}},
180 {ZCVFlag, 0xabababab, 0, {0, 0x77777777}},
181 {NZCVFlag, 0xabababab, 0, {0, 0x77777777}}};
182
183 static const Inputs kPositiveOffset[] =
184 {{NoFlag, 0xabababab, 2590, {0, 0x77777777}},
185 {NoFlag, 0xabababab, 180, {0, 0x0cabba9e}},
186 {NoFlag, 0xabababab, 3870, {0, 0x77777777}},
187 {NoFlag, 0xabababab, 618, {0, 0x55555555}},
188 {NoFlag, 0xabababab, 2650, {0, 0x0badbeef}},
189 {NoFlag, 0xabababab, 2091, {0, 0x77777777}},
190 {NoFlag, 0xabababab, 778, {0, 0x0badbeef}},
191 {NoFlag, 0xabababab, 282, {0, 0x0cabba9e}},
192 {NoFlag, 0xabababab, 263, {0, 0x77777777}},
193 {NoFlag, 0xabababab, 200, {0, 0x0cabba9e}}};
194
195 static const Inputs kNegativeOffset[] =
196 {{NoFlag, 0xabababab, 3743, {0, 0x77777777}},
197 {NoFlag, 0xabababab, 2475, {0, 0x0badbeef}},
198 {NoFlag, 0xabababab, 1159, {0, 0x0cabba9e}},
199 {NoFlag, 0xabababab, 2345, {0, 0x55555555}},
200 {NoFlag, 0xabababab, 3625, {0, 0x55555555}},
201 {NoFlag, 0xabababab, 2381, {0, 0x0badbeef}},
202 {NoFlag, 0xabababab, 4037, {0, 0x0badbeef}},
203 {NoFlag, 0xabababab, 778, {0, 0x77777777}},
204 {NoFlag, 0xabababab, 3880, {0, 0x0cabba9e}},
205 {NoFlag, 0xabababab, 3384, {0, 0x77777777}}};
206
207 static const Inputs kPositivePostIndex[] =
208 {{NoFlag, 0xabababab, 1526, {0, 0x0cabba9e}},
209 {NoFlag, 0xabababab, 365, {0, 0x55555555}},
210 {NoFlag, 0xabababab, 1948, {0, 0x0cabba9e}},
211 {NoFlag, 0xabababab, 958, {0, 0x0cabba9e}},
212 {NoFlag, 0xabababab, 969, {0, 0x55555555}},
213 {NoFlag, 0xabababab, 2695, {0, 0x55555555}},
214 {NoFlag, 0xabababab, 2690, {0, 0x0cabba9e}},
215 {NoFlag, 0xabababab, 523, {0, 0x0cabba9e}},
216 {NoFlag, 0xabababab, 2046, {0, 0x0cabba9e}},
217 {NoFlag, 0xabababab, 2490, {0, 0x0cabba9e}}};
218
219 static const Inputs kNegativePostIndex[] =
220 {{NoFlag, 0xabababab, 4093, {0, 0x0badbeef}},
221 {NoFlag, 0xabababab, 1860, {0, 0x0cabba9e}},
222 {NoFlag, 0xabababab, 3157, {0, 0x55555555}},
223 {NoFlag, 0xabababab, 3069, {0, 0x55555555}},
224 {NoFlag, 0xabababab, 932, {0, 0x55555555}},
225 {NoFlag, 0xabababab, 3287, {0, 0x55555555}},
226 {NoFlag, 0xabababab, 685, {0, 0x0cabba9e}},
227 {NoFlag, 0xabababab, 3685, {0, 0x55555555}},
228 {NoFlag, 0xabababab, 3039, {0, 0x0badbeef}},
229 {NoFlag, 0xabababab, 2245, {0, 0x0badbeef}}};
230
231 static const Inputs kPositivePreIndex[] =
232 {{NoFlag, 0xabababab, 719, {0, 0x0badbeef}},
233 {NoFlag, 0xabababab, 2933, {0, 0x0badbeef}},
234 {NoFlag, 0xabababab, 263, {0, 0x0badbeef}},
235 {NoFlag, 0xabababab, 2086, {0, 0x55555555}},
236 {NoFlag, 0xabababab, 2728, {0, 0x0badbeef}},
237 {NoFlag, 0xabababab, 3399, {0, 0x55555555}},
238 {NoFlag, 0xabababab, 2532, {0, 0x0badbeef}},
239 {NoFlag, 0xabababab, 3626, {0, 0x0badbeef}},
240 {NoFlag, 0xabababab, 612, {0, 0x77777777}},
241 {NoFlag, 0xabababab, 3811, {0, 0x77777777}}};
242
243 static const Inputs kNegativePreIndex[] =
244 {{NoFlag, 0xabababab, 3564, {0, 0x77777777}},
245 {NoFlag, 0xabababab, 766, {0, 0x55555555}},
246 {NoFlag, 0xabababab, 2365, {0, 0x0badbeef}},
247 {NoFlag, 0xabababab, 2462, {0, 0x0cabba9e}},
248 {NoFlag, 0xabababab, 3439, {0, 0x0badbeef}},
249 {NoFlag, 0xabababab, 2810, {0, 0x77777777}},
250 {NoFlag, 0xabababab, 2590, {0, 0x55555555}},
251 {NoFlag, 0xabababab, 1527, {0, 0x0cabba9e}},
252 {NoFlag, 0xabababab, 523, {0, 0x0cabba9e}},
253 {NoFlag, 0xabababab, 2290, {0, 0x77777777}}};
254
255
256 // A loop will be generated for each element of this array.
257 const TestLoopData kTests[] =
258 {{{eq, r0, r1, plus, r8, LSR, 1, Offset},
259 "eq r0 r1 plus r8 LSR 1 Offset",
260 "Condition_eq_r0_r1_plus_r8_LSR_1_Offset",
261 ARRAY_SIZE(kCondition),
262 kCondition},
263 {{ne, r0, r1, plus, r8, LSR, 1, Offset},
264 "ne r0 r1 plus r8 LSR 1 Offset",
265 "Condition_ne_r0_r1_plus_r8_LSR_1_Offset",
266 ARRAY_SIZE(kCondition),
267 kCondition},
268 {{cs, r0, r1, plus, r8, LSR, 1, Offset},
269 "cs r0 r1 plus r8 LSR 1 Offset",
270 "Condition_cs_r0_r1_plus_r8_LSR_1_Offset",
271 ARRAY_SIZE(kCondition),
272 kCondition},
273 {{cc, r0, r1, plus, r8, LSR, 1, Offset},
274 "cc r0 r1 plus r8 LSR 1 Offset",
275 "Condition_cc_r0_r1_plus_r8_LSR_1_Offset",
276 ARRAY_SIZE(kCondition),
277 kCondition},
278 {{mi, r0, r1, plus, r8, LSR, 1, Offset},
279 "mi r0 r1 plus r8 LSR 1 Offset",
280 "Condition_mi_r0_r1_plus_r8_LSR_1_Offset",
281 ARRAY_SIZE(kCondition),
282 kCondition},
283 {{pl, r0, r1, plus, r8, LSR, 1, Offset},
284 "pl r0 r1 plus r8 LSR 1 Offset",
285 "Condition_pl_r0_r1_plus_r8_LSR_1_Offset",
286 ARRAY_SIZE(kCondition),
287 kCondition},
288 {{vs, r0, r1, plus, r8, LSR, 1, Offset},
289 "vs r0 r1 plus r8 LSR 1 Offset",
290 "Condition_vs_r0_r1_plus_r8_LSR_1_Offset",
291 ARRAY_SIZE(kCondition),
292 kCondition},
293 {{vc, r0, r1, plus, r8, LSR, 1, Offset},
294 "vc r0 r1 plus r8 LSR 1 Offset",
295 "Condition_vc_r0_r1_plus_r8_LSR_1_Offset",
296 ARRAY_SIZE(kCondition),
297 kCondition},
298 {{hi, r0, r1, plus, r8, LSR, 1, Offset},
299 "hi r0 r1 plus r8 LSR 1 Offset",
300 "Condition_hi_r0_r1_plus_r8_LSR_1_Offset",
301 ARRAY_SIZE(kCondition),
302 kCondition},
303 {{ls, r0, r1, plus, r8, LSR, 1, Offset},
304 "ls r0 r1 plus r8 LSR 1 Offset",
305 "Condition_ls_r0_r1_plus_r8_LSR_1_Offset",
306 ARRAY_SIZE(kCondition),
307 kCondition},
308 {{ge, r0, r1, plus, r8, LSR, 1, Offset},
309 "ge r0 r1 plus r8 LSR 1 Offset",
310 "Condition_ge_r0_r1_plus_r8_LSR_1_Offset",
311 ARRAY_SIZE(kCondition),
312 kCondition},
313 {{lt, r0, r1, plus, r8, LSR, 1, Offset},
314 "lt r0 r1 plus r8 LSR 1 Offset",
315 "Condition_lt_r0_r1_plus_r8_LSR_1_Offset",
316 ARRAY_SIZE(kCondition),
317 kCondition},
318 {{gt, r0, r1, plus, r8, LSR, 1, Offset},
319 "gt r0 r1 plus r8 LSR 1 Offset",
320 "Condition_gt_r0_r1_plus_r8_LSR_1_Offset",
321 ARRAY_SIZE(kCondition),
322 kCondition},
323 {{le, r0, r1, plus, r8, LSR, 1, Offset},
324 "le r0 r1 plus r8 LSR 1 Offset",
325 "Condition_le_r0_r1_plus_r8_LSR_1_Offset",
326 ARRAY_SIZE(kCondition),
327 kCondition},
328 {{al, r0, r1, plus, r8, LSR, 1, Offset},
329 "al r0 r1 plus r8 LSR 1 Offset",
330 "Condition_al_r0_r1_plus_r8_LSR_1_Offset",
331 ARRAY_SIZE(kCondition),
332 kCondition},
333 {{al, r1, r0, plus, r5, ASR, 24, Offset},
334 "al r1 r0 plus r5 ASR 24 Offset",
335 "PositiveOffset_al_r1_r0_plus_r5_ASR_24_Offset",
336 ARRAY_SIZE(kPositiveOffset),
337 kPositiveOffset},
338 {{al, r3, r10, plus, r4, LSR, 31, Offset},
339 "al r3 r10 plus r4 LSR 31 Offset",
340 "PositiveOffset_al_r3_r10_plus_r4_LSR_31_Offset",
341 ARRAY_SIZE(kPositiveOffset),
342 kPositiveOffset},
343 {{al, r12, r10, plus, r0, ASR, 16, Offset},
344 "al r12 r10 plus r0 ASR 16 Offset",
345 "PositiveOffset_al_r12_r10_plus_r0_ASR_16_Offset",
346 ARRAY_SIZE(kPositiveOffset),
347 kPositiveOffset},
348 {{al, r4, r10, plus, r9, ASR, 19, Offset},
349 "al r4 r10 plus r9 ASR 19 Offset",
350 "PositiveOffset_al_r4_r10_plus_r9_ASR_19_Offset",
351 ARRAY_SIZE(kPositiveOffset),
352 kPositiveOffset},
353 {{al, r1, r11, plus, r4, LSR, 17, Offset},
354 "al r1 r11 plus r4 LSR 17 Offset",
355 "PositiveOffset_al_r1_r11_plus_r4_LSR_17_Offset",
356 ARRAY_SIZE(kPositiveOffset),
357 kPositiveOffset},
358 {{al, r1, r8, plus, r11, LSR, 22, Offset},
359 "al r1 r8 plus r11 LSR 22 Offset",
360 "PositiveOffset_al_r1_r8_plus_r11_LSR_22_Offset",
361 ARRAY_SIZE(kPositiveOffset),
362 kPositiveOffset},
363 {{al, r1, r4, plus, r9, ASR, 25, Offset},
364 "al r1 r4 plus r9 ASR 25 Offset",
365 "PositiveOffset_al_r1_r4_plus_r9_ASR_25_Offset",
366 ARRAY_SIZE(kPositiveOffset),
367 kPositiveOffset},
368 {{al, r8, r4, plus, r0, LSR, 32, Offset},
369 "al r8 r4 plus r0 LSR 32 Offset",
370 "PositiveOffset_al_r8_r4_plus_r0_LSR_32_Offset",
371 ARRAY_SIZE(kPositiveOffset),
372 kPositiveOffset},
373 {{al, r12, r7, plus, r4, LSR, 7, Offset},
374 "al r12 r7 plus r4 LSR 7 Offset",
375 "PositiveOffset_al_r12_r7_plus_r4_LSR_7_Offset",
376 ARRAY_SIZE(kPositiveOffset),
377 kPositiveOffset},
378 {{al, r0, r10, plus, r14, ASR, 11, Offset},
379 "al r0 r10 plus r14 ASR 11 Offset",
380 "PositiveOffset_al_r0_r10_plus_r14_ASR_11_Offset",
381 ARRAY_SIZE(kPositiveOffset),
382 kPositiveOffset},
383 {{al, r6, r10, plus, r11, LSR, 32, Offset},
384 "al r6 r10 plus r11 LSR 32 Offset",
385 "PositiveOffset_al_r6_r10_plus_r11_LSR_32_Offset",
386 ARRAY_SIZE(kPositiveOffset),
387 kPositiveOffset},
388 {{al, r2, r10, plus, r8, LSR, 12, Offset},
389 "al r2 r10 plus r8 LSR 12 Offset",
390 "PositiveOffset_al_r2_r10_plus_r8_LSR_12_Offset",
391 ARRAY_SIZE(kPositiveOffset),
392 kPositiveOffset},
393 {{al, r0, r12, plus, r9, ASR, 29, Offset},
394 "al r0 r12 plus r9 ASR 29 Offset",
395 "PositiveOffset_al_r0_r12_plus_r9_ASR_29_Offset",
396 ARRAY_SIZE(kPositiveOffset),
397 kPositiveOffset},
398 {{al, r3, r2, plus, r1, LSR, 19, Offset},
399 "al r3 r2 plus r1 LSR 19 Offset",
400 "PositiveOffset_al_r3_r2_plus_r1_LSR_19_Offset",
401 ARRAY_SIZE(kPositiveOffset),
402 kPositiveOffset},
403 {{al, r10, r7, plus, r3, ASR, 29, Offset},
404 "al r10 r7 plus r3 ASR 29 Offset",
405 "PositiveOffset_al_r10_r7_plus_r3_ASR_29_Offset",
406 ARRAY_SIZE(kPositiveOffset),
407 kPositiveOffset},
408 {{al, r4, r14, plus, r1, ASR, 30, Offset},
409 "al r4 r14 plus r1 ASR 30 Offset",
410 "PositiveOffset_al_r4_r14_plus_r1_ASR_30_Offset",
411 ARRAY_SIZE(kPositiveOffset),
412 kPositiveOffset},
413 {{al, r5, r3, plus, r1, LSR, 5, Offset},
414 "al r5 r3 plus r1 LSR 5 Offset",
415 "PositiveOffset_al_r5_r3_plus_r1_LSR_5_Offset",
416 ARRAY_SIZE(kPositiveOffset),
417 kPositiveOffset},
418 {{al, r2, r9, plus, r0, LSR, 11, Offset},
419 "al r2 r9 plus r0 LSR 11 Offset",
420 "PositiveOffset_al_r2_r9_plus_r0_LSR_11_Offset",
421 ARRAY_SIZE(kPositiveOffset),
422 kPositiveOffset},
423 {{al, r6, r14, plus, r5, LSR, 23, Offset},
424 "al r6 r14 plus r5 LSR 23 Offset",
425 "PositiveOffset_al_r6_r14_plus_r5_LSR_23_Offset",
426 ARRAY_SIZE(kPositiveOffset),
427 kPositiveOffset},
428 {{al, r7, r9, plus, r12, LSR, 8, Offset},
429 "al r7 r9 plus r12 LSR 8 Offset",
430 "PositiveOffset_al_r7_r9_plus_r12_LSR_8_Offset",
431 ARRAY_SIZE(kPositiveOffset),
432 kPositiveOffset},
433 {{al, r14, r11, plus, r6, ASR, 16, Offset},
434 "al r14 r11 plus r6 ASR 16 Offset",
435 "PositiveOffset_al_r14_r11_plus_r6_ASR_16_Offset",
436 ARRAY_SIZE(kPositiveOffset),
437 kPositiveOffset},
438 {{al, r4, r2, plus, r12, LSR, 5, Offset},
439 "al r4 r2 plus r12 LSR 5 Offset",
440 "PositiveOffset_al_r4_r2_plus_r12_LSR_5_Offset",
441 ARRAY_SIZE(kPositiveOffset),
442 kPositiveOffset},
443 {{al, r12, r7, plus, r11, LSR, 32, Offset},
444 "al r12 r7 plus r11 LSR 32 Offset",
445 "PositiveOffset_al_r12_r7_plus_r11_LSR_32_Offset",
446 ARRAY_SIZE(kPositiveOffset),
447 kPositiveOffset},
448 {{al, r11, r2, plus, r9, ASR, 21, Offset},
449 "al r11 r2 plus r9 ASR 21 Offset",
450 "PositiveOffset_al_r11_r2_plus_r9_ASR_21_Offset",
451 ARRAY_SIZE(kPositiveOffset),
452 kPositiveOffset},
453 {{al, r7, r2, plus, r14, ASR, 11, Offset},
454 "al r7 r2 plus r14 ASR 11 Offset",
455 "PositiveOffset_al_r7_r2_plus_r14_ASR_11_Offset",
456 ARRAY_SIZE(kPositiveOffset),
457 kPositiveOffset},
458 {{al, r12, r14, plus, r0, ASR, 2, Offset},
459 "al r12 r14 plus r0 ASR 2 Offset",
460 "PositiveOffset_al_r12_r14_plus_r0_ASR_2_Offset",
461 ARRAY_SIZE(kPositiveOffset),
462 kPositiveOffset},
463 {{al, r0, r12, plus, r3, ASR, 18, Offset},
464 "al r0 r12 plus r3 ASR 18 Offset",
465 "PositiveOffset_al_r0_r12_plus_r3_ASR_18_Offset",
466 ARRAY_SIZE(kPositiveOffset),
467 kPositiveOffset},
468 {{al, r14, r3, plus, r2, LSR, 4, Offset},
469 "al r14 r3 plus r2 LSR 4 Offset",
470 "PositiveOffset_al_r14_r3_plus_r2_LSR_4_Offset",
471 ARRAY_SIZE(kPositiveOffset),
472 kPositiveOffset},
473 {{al, r2, r10, plus, r9, LSR, 20, Offset},
474 "al r2 r10 plus r9 LSR 20 Offset",
475 "PositiveOffset_al_r2_r10_plus_r9_LSR_20_Offset",
476 ARRAY_SIZE(kPositiveOffset),
477 kPositiveOffset},
478 {{al, r4, r14, plus, r12, LSR, 8, Offset},
479 "al r4 r14 plus r12 LSR 8 Offset",
480 "PositiveOffset_al_r4_r14_plus_r12_LSR_8_Offset",
481 ARRAY_SIZE(kPositiveOffset),
482 kPositiveOffset},
483 {{al, r10, r4, plus, r5, ASR, 24, Offset},
484 "al r10 r4 plus r5 ASR 24 Offset",
485 "PositiveOffset_al_r10_r4_plus_r5_ASR_24_Offset",
486 ARRAY_SIZE(kPositiveOffset),
487 kPositiveOffset},
488 {{al, r11, r3, plus, r8, LSR, 22, Offset},
489 "al r11 r3 plus r8 LSR 22 Offset",
490 "PositiveOffset_al_r11_r3_plus_r8_LSR_22_Offset",
491 ARRAY_SIZE(kPositiveOffset),
492 kPositiveOffset},
493 {{al, r7, r2, plus, r10, ASR, 7, Offset},
494 "al r7 r2 plus r10 ASR 7 Offset",
495 "PositiveOffset_al_r7_r2_plus_r10_ASR_7_Offset",
496 ARRAY_SIZE(kPositiveOffset),
497 kPositiveOffset},
498 {{al, r8, r9, plus, r6, ASR, 27, Offset},
499 "al r8 r9 plus r6 ASR 27 Offset",
500 "PositiveOffset_al_r8_r9_plus_r6_ASR_27_Offset",
501 ARRAY_SIZE(kPositiveOffset),
502 kPositiveOffset},
503 {{al, r1, r2, plus, r6, ASR, 10, Offset},
504 "al r1 r2 plus r6 ASR 10 Offset",
505 "PositiveOffset_al_r1_r2_plus_r6_ASR_10_Offset",
506 ARRAY_SIZE(kPositiveOffset),
507 kPositiveOffset},
508 {{al, r11, r9, plus, r1, ASR, 19, Offset},
509 "al r11 r9 plus r1 ASR 19 Offset",
510 "PositiveOffset_al_r11_r9_plus_r1_ASR_19_Offset",
511 ARRAY_SIZE(kPositiveOffset),
512 kPositiveOffset},
513 {{al, r3, r2, plus, r10, ASR, 31, Offset},
514 "al r3 r2 plus r10 ASR 31 Offset",
515 "PositiveOffset_al_r3_r2_plus_r10_ASR_31_Offset",
516 ARRAY_SIZE(kPositiveOffset),
517 kPositiveOffset},
518 {{al, r7, r6, plus, r11, ASR, 12, Offset},
519 "al r7 r6 plus r11 ASR 12 Offset",
520 "PositiveOffset_al_r7_r6_plus_r11_ASR_12_Offset",
521 ARRAY_SIZE(kPositiveOffset),
522 kPositiveOffset},
523 {{al, r4, r0, plus, r5, LSR, 10, Offset},
524 "al r4 r0 plus r5 LSR 10 Offset",
525 "PositiveOffset_al_r4_r0_plus_r5_LSR_10_Offset",
526 ARRAY_SIZE(kPositiveOffset),
527 kPositiveOffset},
528 {{al, r3, r2, plus, r12, ASR, 22, Offset},
529 "al r3 r2 plus r12 ASR 22 Offset",
530 "PositiveOffset_al_r3_r2_plus_r12_ASR_22_Offset",
531 ARRAY_SIZE(kPositiveOffset),
532 kPositiveOffset},
533 {{al, r11, r7, plus, r0, ASR, 13, Offset},
534 "al r11 r7 plus r0 ASR 13 Offset",
535 "PositiveOffset_al_r11_r7_plus_r0_ASR_13_Offset",
536 ARRAY_SIZE(kPositiveOffset),
537 kPositiveOffset},
538 {{al, r1, r2, plus, r0, ASR, 9, Offset},
539 "al r1 r2 plus r0 ASR 9 Offset",
540 "PositiveOffset_al_r1_r2_plus_r0_ASR_9_Offset",
541 ARRAY_SIZE(kPositiveOffset),
542 kPositiveOffset},
543 {{al, r6, r3, plus, r11, ASR, 9, Offset},
544 "al r6 r3 plus r11 ASR 9 Offset",
545 "PositiveOffset_al_r6_r3_plus_r11_ASR_9_Offset",
546 ARRAY_SIZE(kPositiveOffset),
547 kPositiveOffset},
548 {{al, r14, r12, plus, r4, ASR, 4, Offset},
549 "al r14 r12 plus r4 ASR 4 Offset",
550 "PositiveOffset_al_r14_r12_plus_r4_ASR_4_Offset",
551 ARRAY_SIZE(kPositiveOffset),
552 kPositiveOffset},
553 {{al, r7, r3, plus, r0, LSR, 14, Offset},
554 "al r7 r3 plus r0 LSR 14 Offset",
555 "PositiveOffset_al_r7_r3_plus_r0_LSR_14_Offset",
556 ARRAY_SIZE(kPositiveOffset),
557 kPositiveOffset},
558 {{al, r7, r0, plus, r5, ASR, 4, Offset},
559 "al r7 r0 plus r5 ASR 4 Offset",
560 "PositiveOffset_al_r7_r0_plus_r5_ASR_4_Offset",
561 ARRAY_SIZE(kPositiveOffset),
562 kPositiveOffset},
563 {{al, r12, r1, plus, r6, ASR, 13, Offset},
564 "al r12 r1 plus r6 ASR 13 Offset",
565 "PositiveOffset_al_r12_r1_plus_r6_ASR_13_Offset",
566 ARRAY_SIZE(kPositiveOffset),
567 kPositiveOffset},
568 {{al, r14, r9, plus, r5, ASR, 32, Offset},
569 "al r14 r9 plus r5 ASR 32 Offset",
570 "PositiveOffset_al_r14_r9_plus_r5_ASR_32_Offset",
571 ARRAY_SIZE(kPositiveOffset),
572 kPositiveOffset},
573 {{al, r8, r2, plus, r1, ASR, 24, Offset},
574 "al r8 r2 plus r1 ASR 24 Offset",
575 "PositiveOffset_al_r8_r2_plus_r1_ASR_24_Offset",
576 ARRAY_SIZE(kPositiveOffset),
577 kPositiveOffset},
578 {{al, r8, r10, plus, r7, ASR, 3, Offset},
579 "al r8 r10 plus r7 ASR 3 Offset",
580 "PositiveOffset_al_r8_r10_plus_r7_ASR_3_Offset",
581 ARRAY_SIZE(kPositiveOffset),
582 kPositiveOffset},
583 {{al, r3, r1, plus, r11, LSR, 15, Offset},
584 "al r3 r1 plus r11 LSR 15 Offset",
585 "PositiveOffset_al_r3_r1_plus_r11_LSR_15_Offset",
586 ARRAY_SIZE(kPositiveOffset),
587 kPositiveOffset},
588 {{al, r3, r11, plus, r0, LSR, 19, Offset},
589 "al r3 r11 plus r0 LSR 19 Offset",
590 "PositiveOffset_al_r3_r11_plus_r0_LSR_19_Offset",
591 ARRAY_SIZE(kPositiveOffset),
592 kPositiveOffset},
593 {{al, r12, r0, plus, r9, ASR, 8, Offset},
594 "al r12 r0 plus r9 ASR 8 Offset",
595 "PositiveOffset_al_r12_r0_plus_r9_ASR_8_Offset",
596 ARRAY_SIZE(kPositiveOffset),
597 kPositiveOffset},
598 {{al, r5, r8, plus, r2, ASR, 22, Offset},
599 "al r5 r8 plus r2 ASR 22 Offset",
600 "PositiveOffset_al_r5_r8_plus_r2_ASR_22_Offset",
601 ARRAY_SIZE(kPositiveOffset),
602 kPositiveOffset},
603 {{al, r12, r10, plus, r6, ASR, 17, Offset},
604 "al r12 r10 plus r6 ASR 17 Offset",
605 "PositiveOffset_al_r12_r10_plus_r6_ASR_17_Offset",
606 ARRAY_SIZE(kPositiveOffset),
607 kPositiveOffset},
608 {{al, r14, r10, plus, r9, ASR, 7, Offset},
609 "al r14 r10 plus r9 ASR 7 Offset",
610 "PositiveOffset_al_r14_r10_plus_r9_ASR_7_Offset",
611 ARRAY_SIZE(kPositiveOffset),
612 kPositiveOffset},
613 {{al, r2, r7, plus, r0, ASR, 3, Offset},
614 "al r2 r7 plus r0 ASR 3 Offset",
615 "PositiveOffset_al_r2_r7_plus_r0_ASR_3_Offset",
616 ARRAY_SIZE(kPositiveOffset),
617 kPositiveOffset},
618 {{al, r1, r6, plus, r12, LSR, 5, Offset},
619 "al r1 r6 plus r12 LSR 5 Offset",
620 "PositiveOffset_al_r1_r6_plus_r12_LSR_5_Offset",
621 ARRAY_SIZE(kPositiveOffset),
622 kPositiveOffset},
623 {{al, r9, r8, plus, r7, LSR, 2, Offset},
624 "al r9 r8 plus r7 LSR 2 Offset",
625 "PositiveOffset_al_r9_r8_plus_r7_LSR_2_Offset",
626 ARRAY_SIZE(kPositiveOffset),
627 kPositiveOffset},
628 {{al, r4, r9, plus, r0, ASR, 23, Offset},
629 "al r4 r9 plus r0 ASR 23 Offset",
630 "PositiveOffset_al_r4_r9_plus_r0_ASR_23_Offset",
631 ARRAY_SIZE(kPositiveOffset),
632 kPositiveOffset},
633 {{al, r6, r9, plus, r10, LSR, 14, Offset},
634 "al r6 r9 plus r10 LSR 14 Offset",
635 "PositiveOffset_al_r6_r9_plus_r10_LSR_14_Offset",
636 ARRAY_SIZE(kPositiveOffset),
637 kPositiveOffset},
638 {{al, r14, r0, plus, r2, ASR, 11, Offset},
639 "al r14 r0 plus r2 ASR 11 Offset",
640 "PositiveOffset_al_r14_r0_plus_r2_ASR_11_Offset",
641 ARRAY_SIZE(kPositiveOffset),
642 kPositiveOffset},
643 {{al, r8, r2, plus, r0, LSR, 24, Offset},
644 "al r8 r2 plus r0 LSR 24 Offset",
645 "PositiveOffset_al_r8_r2_plus_r0_LSR_24_Offset",
646 ARRAY_SIZE(kPositiveOffset),
647 kPositiveOffset},
648 {{al, r12, r4, plus, r5, LSR, 5, Offset},
649 "al r12 r4 plus r5 LSR 5 Offset",
650 "PositiveOffset_al_r12_r4_plus_r5_LSR_5_Offset",
651 ARRAY_SIZE(kPositiveOffset),
652 kPositiveOffset},
653 {{al, r9, r6, plus, r5, LSR, 11, Offset},
654 "al r9 r6 plus r5 LSR 11 Offset",
655 "PositiveOffset_al_r9_r6_plus_r5_LSR_11_Offset",
656 ARRAY_SIZE(kPositiveOffset),
657 kPositiveOffset},
658 {{al, r5, r6, plus, r14, LSR, 4, Offset},
659 "al r5 r6 plus r14 LSR 4 Offset",
660 "PositiveOffset_al_r5_r6_plus_r14_LSR_4_Offset",
661 ARRAY_SIZE(kPositiveOffset),
662 kPositiveOffset},
663 {{al, r2, r0, plus, r10, LSR, 15, Offset},
664 "al r2 r0 plus r10 LSR 15 Offset",
665 "PositiveOffset_al_r2_r0_plus_r10_LSR_15_Offset",
666 ARRAY_SIZE(kPositiveOffset),
667 kPositiveOffset},
668 {{al, r9, r5, plus, r1, LSR, 22, Offset},
669 "al r9 r5 plus r1 LSR 22 Offset",
670 "PositiveOffset_al_r9_r5_plus_r1_LSR_22_Offset",
671 ARRAY_SIZE(kPositiveOffset),
672 kPositiveOffset},
673 {{al, r5, r6, plus, r0, LSR, 26, Offset},
674 "al r5 r6 plus r0 LSR 26 Offset",
675 "PositiveOffset_al_r5_r6_plus_r0_LSR_26_Offset",
676 ARRAY_SIZE(kPositiveOffset),
677 kPositiveOffset},
678 {{al, r9, r6, plus, r5, ASR, 19, Offset},
679 "al r9 r6 plus r5 ASR 19 Offset",
680 "PositiveOffset_al_r9_r6_plus_r5_ASR_19_Offset",
681 ARRAY_SIZE(kPositiveOffset),
682 kPositiveOffset},
683 {{al, r6, r12, plus, r11, ASR, 3, Offset},
684 "al r6 r12 plus r11 ASR 3 Offset",
685 "PositiveOffset_al_r6_r12_plus_r11_ASR_3_Offset",
686 ARRAY_SIZE(kPositiveOffset),
687 kPositiveOffset},
688 {{al, r8, r1, plus, r4, ASR, 30, Offset},
689 "al r8 r1 plus r4 ASR 30 Offset",
690 "PositiveOffset_al_r8_r1_plus_r4_ASR_30_Offset",
691 ARRAY_SIZE(kPositiveOffset),
692 kPositiveOffset},
693 {{al, r3, r10, plus, r5, LSR, 22, Offset},
694 "al r3 r10 plus r5 LSR 22 Offset",
695 "PositiveOffset_al_r3_r10_plus_r5_LSR_22_Offset",
696 ARRAY_SIZE(kPositiveOffset),
697 kPositiveOffset},
698 {{al, r3, r8, plus, r6, ASR, 8, Offset},
699 "al r3 r8 plus r6 ASR 8 Offset",
700 "PositiveOffset_al_r3_r8_plus_r6_ASR_8_Offset",
701 ARRAY_SIZE(kPositiveOffset),
702 kPositiveOffset},
703 {{al, r1, r5, plus, r9, ASR, 26, Offset},
704 "al r1 r5 plus r9 ASR 26 Offset",
705 "PositiveOffset_al_r1_r5_plus_r9_ASR_26_Offset",
706 ARRAY_SIZE(kPositiveOffset),
707 kPositiveOffset},
708 {{al, r6, r14, plus, r0, LSR, 7, Offset},
709 "al r6 r14 plus r0 LSR 7 Offset",
710 "PositiveOffset_al_r6_r14_plus_r0_LSR_7_Offset",
711 ARRAY_SIZE(kPositiveOffset),
712 kPositiveOffset},
713 {{al, r8, r2, plus, r14, LSR, 20, Offset},
714 "al r8 r2 plus r14 LSR 20 Offset",
715 "PositiveOffset_al_r8_r2_plus_r14_LSR_20_Offset",
716 ARRAY_SIZE(kPositiveOffset),
717 kPositiveOffset},
718 {{al, r5, r11, plus, r2, LSR, 16, Offset},
719 "al r5 r11 plus r2 LSR 16 Offset",
720 "PositiveOffset_al_r5_r11_plus_r2_LSR_16_Offset",
721 ARRAY_SIZE(kPositiveOffset),
722 kPositiveOffset},
723 {{al, r6, r3, plus, r9, ASR, 23, Offset},
724 "al r6 r3 plus r9 ASR 23 Offset",
725 "PositiveOffset_al_r6_r3_plus_r9_ASR_23_Offset",
726 ARRAY_SIZE(kPositiveOffset),
727 kPositiveOffset},
728 {{al, r7, r14, plus, r0, LSR, 9, Offset},
729 "al r7 r14 plus r0 LSR 9 Offset",
730 "PositiveOffset_al_r7_r14_plus_r0_LSR_9_Offset",
731 ARRAY_SIZE(kPositiveOffset),
732 kPositiveOffset},
733 {{al, r2, r0, plus, r14, ASR, 7, Offset},
734 "al r2 r0 plus r14 ASR 7 Offset",
735 "PositiveOffset_al_r2_r0_plus_r14_ASR_7_Offset",
736 ARRAY_SIZE(kPositiveOffset),
737 kPositiveOffset},
738 {{al, r9, r12, plus, r5, LSR, 9, Offset},
739 "al r9 r12 plus r5 LSR 9 Offset",
740 "PositiveOffset_al_r9_r12_plus_r5_LSR_9_Offset",
741 ARRAY_SIZE(kPositiveOffset),
742 kPositiveOffset},
743 {{al, r7, r4, plus, r3, LSR, 14, Offset},
744 "al r7 r4 plus r3 LSR 14 Offset",
745 "PositiveOffset_al_r7_r4_plus_r3_LSR_14_Offset",
746 ARRAY_SIZE(kPositiveOffset),
747 kPositiveOffset},
748 {{al, r11, r0, plus, r10, ASR, 20, Offset},
749 "al r11 r0 plus r10 ASR 20 Offset",
750 "PositiveOffset_al_r11_r0_plus_r10_ASR_20_Offset",
751 ARRAY_SIZE(kPositiveOffset),
752 kPositiveOffset},
753 {{al, r11, r0, plus, r1, LSR, 21, Offset},
754 "al r11 r0 plus r1 LSR 21 Offset",
755 "PositiveOffset_al_r11_r0_plus_r1_LSR_21_Offset",
756 ARRAY_SIZE(kPositiveOffset),
757 kPositiveOffset},
758 {{al, r11, r9, plus, r8, ASR, 14, Offset},
759 "al r11 r9 plus r8 ASR 14 Offset",
760 "PositiveOffset_al_r11_r9_plus_r8_ASR_14_Offset",
761 ARRAY_SIZE(kPositiveOffset),
762 kPositiveOffset},
763 {{al, r5, r14, plus, r10, ASR, 10, Offset},
764 "al r5 r14 plus r10 ASR 10 Offset",
765 "PositiveOffset_al_r5_r14_plus_r10_ASR_10_Offset",
766 ARRAY_SIZE(kPositiveOffset),
767 kPositiveOffset},
768 {{al, r1, r11, plus, r2, LSR, 12, Offset},
769 "al r1 r11 plus r2 LSR 12 Offset",
770 "PositiveOffset_al_r1_r11_plus_r2_LSR_12_Offset",
771 ARRAY_SIZE(kPositiveOffset),
772 kPositiveOffset},
773 {{al, r14, r12, plus, r0, ASR, 7, Offset},
774 "al r14 r12 plus r0 ASR 7 Offset",
775 "PositiveOffset_al_r14_r12_plus_r0_ASR_7_Offset",
776 ARRAY_SIZE(kPositiveOffset),
777 kPositiveOffset},
778 {{al, r14, r6, plus, r4, ASR, 2, Offset},
779 "al r14 r6 plus r4 ASR 2 Offset",
780 "PositiveOffset_al_r14_r6_plus_r4_ASR_2_Offset",
781 ARRAY_SIZE(kPositiveOffset),
782 kPositiveOffset},
783 {{al, r4, r8, plus, r1, ASR, 9, Offset},
784 "al r4 r8 plus r1 ASR 9 Offset",
785 "PositiveOffset_al_r4_r8_plus_r1_ASR_9_Offset",
786 ARRAY_SIZE(kPositiveOffset),
787 kPositiveOffset},
788 {{al, r4, r8, plus, r2, LSR, 2, Offset},
789 "al r4 r8 plus r2 LSR 2 Offset",
790 "PositiveOffset_al_r4_r8_plus_r2_LSR_2_Offset",
791 ARRAY_SIZE(kPositiveOffset),
792 kPositiveOffset},
793 {{al, r0, r11, plus, r14, LSR, 17, Offset},
794 "al r0 r11 plus r14 LSR 17 Offset",
795 "PositiveOffset_al_r0_r11_plus_r14_LSR_17_Offset",
796 ARRAY_SIZE(kPositiveOffset),
797 kPositiveOffset},
798 {{al, r4, r14, plus, r8, LSR, 31, Offset},
799 "al r4 r14 plus r8 LSR 31 Offset",
800 "PositiveOffset_al_r4_r14_plus_r8_LSR_31_Offset",
801 ARRAY_SIZE(kPositiveOffset),
802 kPositiveOffset},
803 {{al, r1, r12, plus, r7, ASR, 1, Offset},
804 "al r1 r12 plus r7 ASR 1 Offset",
805 "PositiveOffset_al_r1_r12_plus_r7_ASR_1_Offset",
806 ARRAY_SIZE(kPositiveOffset),
807 kPositiveOffset},
808 {{al, r12, r6, plus, r10, LSR, 7, Offset},
809 "al r12 r6 plus r10 LSR 7 Offset",
810 "PositiveOffset_al_r12_r6_plus_r10_LSR_7_Offset",
811 ARRAY_SIZE(kPositiveOffset),
812 kPositiveOffset},
813 {{al, r1, r5, plus, r11, LSR, 9, Offset},
814 "al r1 r5 plus r11 LSR 9 Offset",
815 "PositiveOffset_al_r1_r5_plus_r11_LSR_9_Offset",
816 ARRAY_SIZE(kPositiveOffset),
817 kPositiveOffset},
818 {{al, r6, r5, plus, r10, LSR, 16, Offset},
819 "al r6 r5 plus r10 LSR 16 Offset",
820 "PositiveOffset_al_r6_r5_plus_r10_LSR_16_Offset",
821 ARRAY_SIZE(kPositiveOffset),
822 kPositiveOffset},
823 {{al, r6, r8, plus, r14, ASR, 18, Offset},
824 "al r6 r8 plus r14 ASR 18 Offset",
825 "PositiveOffset_al_r6_r8_plus_r14_ASR_18_Offset",
826 ARRAY_SIZE(kPositiveOffset),
827 kPositiveOffset},
828 {{al, r5, r11, plus, r1, ASR, 20, Offset},
829 "al r5 r11 plus r1 ASR 20 Offset",
830 "PositiveOffset_al_r5_r11_plus_r1_ASR_20_Offset",
831 ARRAY_SIZE(kPositiveOffset),
832 kPositiveOffset},
833 {{al, r6, r12, minus, r11, LSR, 3, Offset},
834 "al r6 r12 minus r11 LSR 3 Offset",
835 "NegativeOffset_al_r6_r12_minus_r11_LSR_3_Offset",
836 ARRAY_SIZE(kNegativeOffset),
837 kNegativeOffset},
838 {{al, r4, r10, minus, r6, ASR, 15, Offset},
839 "al r4 r10 minus r6 ASR 15 Offset",
840 "NegativeOffset_al_r4_r10_minus_r6_ASR_15_Offset",
841 ARRAY_SIZE(kNegativeOffset),
842 kNegativeOffset},
843 {{al, r6, r2, minus, r3, LSR, 4, Offset},
844 "al r6 r2 minus r3 LSR 4 Offset",
845 "NegativeOffset_al_r6_r2_minus_r3_LSR_4_Offset",
846 ARRAY_SIZE(kNegativeOffset),
847 kNegativeOffset},
848 {{al, r9, r10, minus, r11, LSR, 15, Offset},
849 "al r9 r10 minus r11 LSR 15 Offset",
850 "NegativeOffset_al_r9_r10_minus_r11_LSR_15_Offset",
851 ARRAY_SIZE(kNegativeOffset),
852 kNegativeOffset},
853 {{al, r9, r14, minus, r10, LSR, 6, Offset},
854 "al r9 r14 minus r10 LSR 6 Offset",
855 "NegativeOffset_al_r9_r14_minus_r10_LSR_6_Offset",
856 ARRAY_SIZE(kNegativeOffset),
857 kNegativeOffset},
858 {{al, r9, r14, minus, r8, LSR, 8, Offset},
859 "al r9 r14 minus r8 LSR 8 Offset",
860 "NegativeOffset_al_r9_r14_minus_r8_LSR_8_Offset",
861 ARRAY_SIZE(kNegativeOffset),
862 kNegativeOffset},
863 {{al, r14, r5, minus, r4, LSR, 30, Offset},
864 "al r14 r5 minus r4 LSR 30 Offset",
865 "NegativeOffset_al_r14_r5_minus_r4_LSR_30_Offset",
866 ARRAY_SIZE(kNegativeOffset),
867 kNegativeOffset},
868 {{al, r2, r10, minus, r4, LSR, 12, Offset},
869 "al r2 r10 minus r4 LSR 12 Offset",
870 "NegativeOffset_al_r2_r10_minus_r4_LSR_12_Offset",
871 ARRAY_SIZE(kNegativeOffset),
872 kNegativeOffset},
873 {{al, r12, r14, minus, r8, ASR, 3, Offset},
874 "al r12 r14 minus r8 ASR 3 Offset",
875 "NegativeOffset_al_r12_r14_minus_r8_ASR_3_Offset",
876 ARRAY_SIZE(kNegativeOffset),
877 kNegativeOffset},
878 {{al, r7, r1, minus, r10, LSR, 26, Offset},
879 "al r7 r1 minus r10 LSR 26 Offset",
880 "NegativeOffset_al_r7_r1_minus_r10_LSR_26_Offset",
881 ARRAY_SIZE(kNegativeOffset),
882 kNegativeOffset},
883 {{al, r4, r0, minus, r6, ASR, 23, Offset},
884 "al r4 r0 minus r6 ASR 23 Offset",
885 "NegativeOffset_al_r4_r0_minus_r6_ASR_23_Offset",
886 ARRAY_SIZE(kNegativeOffset),
887 kNegativeOffset},
888 {{al, r10, r7, minus, r3, LSR, 3, Offset},
889 "al r10 r7 minus r3 LSR 3 Offset",
890 "NegativeOffset_al_r10_r7_minus_r3_LSR_3_Offset",
891 ARRAY_SIZE(kNegativeOffset),
892 kNegativeOffset},
893 {{al, r5, r2, minus, r0, LSR, 3, Offset},
894 "al r5 r2 minus r0 LSR 3 Offset",
895 "NegativeOffset_al_r5_r2_minus_r0_LSR_3_Offset",
896 ARRAY_SIZE(kNegativeOffset),
897 kNegativeOffset},
898 {{al, r10, r9, minus, r3, ASR, 15, Offset},
899 "al r10 r9 minus r3 ASR 15 Offset",
900 "NegativeOffset_al_r10_r9_minus_r3_ASR_15_Offset",
901 ARRAY_SIZE(kNegativeOffset),
902 kNegativeOffset},
903 {{al, r10, r12, minus, r11, ASR, 30, Offset},
904 "al r10 r12 minus r11 ASR 30 Offset",
905 "NegativeOffset_al_r10_r12_minus_r11_ASR_30_Offset",
906 ARRAY_SIZE(kNegativeOffset),
907 kNegativeOffset},
908 {{al, r3, r10, minus, r8, LSR, 8, Offset},
909 "al r3 r10 minus r8 LSR 8 Offset",
910 "NegativeOffset_al_r3_r10_minus_r8_LSR_8_Offset",
911 ARRAY_SIZE(kNegativeOffset),
912 kNegativeOffset},
913 {{al, r3, r0, minus, r9, ASR, 15, Offset},
914 "al r3 r0 minus r9 ASR 15 Offset",
915 "NegativeOffset_al_r3_r0_minus_r9_ASR_15_Offset",
916 ARRAY_SIZE(kNegativeOffset),
917 kNegativeOffset},
918 {{al, r8, r11, minus, r10, ASR, 31, Offset},
919 "al r8 r11 minus r10 ASR 31 Offset",
920 "NegativeOffset_al_r8_r11_minus_r10_ASR_31_Offset",
921 ARRAY_SIZE(kNegativeOffset),
922 kNegativeOffset},
923 {{al, r2, r8, minus, r5, LSR, 10, Offset},
924 "al r2 r8 minus r5 LSR 10 Offset",
925 "NegativeOffset_al_r2_r8_minus_r5_LSR_10_Offset",
926 ARRAY_SIZE(kNegativeOffset),
927 kNegativeOffset},
928 {{al, r4, r3, minus, r6, LSR, 24, Offset},
929 "al r4 r3 minus r6 LSR 24 Offset",
930 "NegativeOffset_al_r4_r3_minus_r6_LSR_24_Offset",
931 ARRAY_SIZE(kNegativeOffset),
932 kNegativeOffset},
933 {{al, r14, r2, minus, r12, ASR, 1, Offset},
934 "al r14 r2 minus r12 ASR 1 Offset",
935 "NegativeOffset_al_r14_r2_minus_r12_ASR_1_Offset",
936 ARRAY_SIZE(kNegativeOffset),
937 kNegativeOffset},
938 {{al, r4, r12, minus, r10, ASR, 4, Offset},
939 "al r4 r12 minus r10 ASR 4 Offset",
940 "NegativeOffset_al_r4_r12_minus_r10_ASR_4_Offset",
941 ARRAY_SIZE(kNegativeOffset),
942 kNegativeOffset},
943 {{al, r5, r2, minus, r10, ASR, 16, Offset},
944 "al r5 r2 minus r10 ASR 16 Offset",
945 "NegativeOffset_al_r5_r2_minus_r10_ASR_16_Offset",
946 ARRAY_SIZE(kNegativeOffset),
947 kNegativeOffset},
948 {{al, r4, r8, minus, r2, LSR, 8, Offset},
949 "al r4 r8 minus r2 LSR 8 Offset",
950 "NegativeOffset_al_r4_r8_minus_r2_LSR_8_Offset",
951 ARRAY_SIZE(kNegativeOffset),
952 kNegativeOffset},
953 {{al, r6, r3, minus, r4, LSR, 11, Offset},
954 "al r6 r3 minus r4 LSR 11 Offset",
955 "NegativeOffset_al_r6_r3_minus_r4_LSR_11_Offset",
956 ARRAY_SIZE(kNegativeOffset),
957 kNegativeOffset},
958 {{al, r1, r10, minus, r4, ASR, 31, Offset},
959 "al r1 r10 minus r4 ASR 31 Offset",
960 "NegativeOffset_al_r1_r10_minus_r4_ASR_31_Offset",
961 ARRAY_SIZE(kNegativeOffset),
962 kNegativeOffset},
963 {{al, r14, r8, minus, r0, ASR, 6, Offset},
964 "al r14 r8 minus r0 ASR 6 Offset",
965 "NegativeOffset_al_r14_r8_minus_r0_ASR_6_Offset",
966 ARRAY_SIZE(kNegativeOffset),
967 kNegativeOffset},
968 {{al, r10, r5, minus, r1, LSR, 14, Offset},
969 "al r10 r5 minus r1 LSR 14 Offset",
970 "NegativeOffset_al_r10_r5_minus_r1_LSR_14_Offset",
971 ARRAY_SIZE(kNegativeOffset),
972 kNegativeOffset},
973 {{al, r12, r10, minus, r1, ASR, 20, Offset},
974 "al r12 r10 minus r1 ASR 20 Offset",
975 "NegativeOffset_al_r12_r10_minus_r1_ASR_20_Offset",
976 ARRAY_SIZE(kNegativeOffset),
977 kNegativeOffset},
978 {{al, r3, r10, minus, r8, LSR, 29, Offset},
979 "al r3 r10 minus r8 LSR 29 Offset",
980 "NegativeOffset_al_r3_r10_minus_r8_LSR_29_Offset",
981 ARRAY_SIZE(kNegativeOffset),
982 kNegativeOffset},
983 {{al, r11, r1, minus, r10, ASR, 31, Offset},
984 "al r11 r1 minus r10 ASR 31 Offset",
985 "NegativeOffset_al_r11_r1_minus_r10_ASR_31_Offset",
986 ARRAY_SIZE(kNegativeOffset),
987 kNegativeOffset},
988 {{al, r2, r12, minus, r7, ASR, 24, Offset},
989 "al r2 r12 minus r7 ASR 24 Offset",
990 "NegativeOffset_al_r2_r12_minus_r7_ASR_24_Offset",
991 ARRAY_SIZE(kNegativeOffset),
992 kNegativeOffset},
993 {{al, r6, r1, minus, r3, LSR, 30, Offset},
994 "al r6 r1 minus r3 LSR 30 Offset",
995 "NegativeOffset_al_r6_r1_minus_r3_LSR_30_Offset",
996 ARRAY_SIZE(kNegativeOffset),
997 kNegativeOffset},
998 {{al, r8, r11, minus, r10, ASR, 24, Offset},
999 "al r8 r11 minus r10 ASR 24 Offset",
1000 "NegativeOffset_al_r8_r11_minus_r10_ASR_24_Offset",
1001 ARRAY_SIZE(kNegativeOffset),
1002 kNegativeOffset},
1003 {{al, r1, r11, minus, r2, ASR, 9, Offset},
1004 "al r1 r11 minus r2 ASR 9 Offset",
1005 "NegativeOffset_al_r1_r11_minus_r2_ASR_9_Offset",
1006 ARRAY_SIZE(kNegativeOffset),
1007 kNegativeOffset},
1008 {{al, r7, r3, minus, r12, ASR, 2, Offset},
1009 "al r7 r3 minus r12 ASR 2 Offset",
1010 "NegativeOffset_al_r7_r3_minus_r12_ASR_2_Offset",
1011 ARRAY_SIZE(kNegativeOffset),
1012 kNegativeOffset},
1013 {{al, r11, r8, minus, r12, ASR, 19, Offset},
1014 "al r11 r8 minus r12 ASR 19 Offset",
1015 "NegativeOffset_al_r11_r8_minus_r12_ASR_19_Offset",
1016 ARRAY_SIZE(kNegativeOffset),
1017 kNegativeOffset},
1018 {{al, r11, r7, minus, r0, ASR, 2, Offset},
1019 "al r11 r7 minus r0 ASR 2 Offset",
1020 "NegativeOffset_al_r11_r7_minus_r0_ASR_2_Offset",
1021 ARRAY_SIZE(kNegativeOffset),
1022 kNegativeOffset},
1023 {{al, r12, r0, minus, r6, ASR, 4, Offset},
1024 "al r12 r0 minus r6 ASR 4 Offset",
1025 "NegativeOffset_al_r12_r0_minus_r6_ASR_4_Offset",
1026 ARRAY_SIZE(kNegativeOffset),
1027 kNegativeOffset},
1028 {{al, r8, r10, minus, r12, ASR, 9, Offset},
1029 "al r8 r10 minus r12 ASR 9 Offset",
1030 "NegativeOffset_al_r8_r10_minus_r12_ASR_9_Offset",
1031 ARRAY_SIZE(kNegativeOffset),
1032 kNegativeOffset},
1033 {{al, r11, r9, minus, r6, LSR, 20, Offset},
1034 "al r11 r9 minus r6 LSR 20 Offset",
1035 "NegativeOffset_al_r11_r9_minus_r6_LSR_20_Offset",
1036 ARRAY_SIZE(kNegativeOffset),
1037 kNegativeOffset},
1038 {{al, r11, r3, minus, r0, ASR, 14, Offset},
1039 "al r11 r3 minus r0 ASR 14 Offset",
1040 "NegativeOffset_al_r11_r3_minus_r0_ASR_14_Offset",
1041 ARRAY_SIZE(kNegativeOffset),
1042 kNegativeOffset},
1043 {{al, r6, r7, minus, r14, LSR, 16, Offset},
1044 "al r6 r7 minus r14 LSR 16 Offset",
1045 "NegativeOffset_al_r6_r7_minus_r14_LSR_16_Offset",
1046 ARRAY_SIZE(kNegativeOffset),
1047 kNegativeOffset},
1048 {{al, r2, r5, minus, r7, LSR, 32, Offset},
1049 "al r2 r5 minus r7 LSR 32 Offset",
1050 "NegativeOffset_al_r2_r5_minus_r7_LSR_32_Offset",
1051 ARRAY_SIZE(kNegativeOffset),
1052 kNegativeOffset},
1053 {{al, r7, r5, minus, r6, ASR, 10, Offset},
1054 "al r7 r5 minus r6 ASR 10 Offset",
1055 "NegativeOffset_al_r7_r5_minus_r6_ASR_10_Offset",
1056 ARRAY_SIZE(kNegativeOffset),
1057 kNegativeOffset},
1058 {{al, r10, r5, minus, r4, ASR, 22, Offset},
1059 "al r10 r5 minus r4 ASR 22 Offset",
1060 "NegativeOffset_al_r10_r5_minus_r4_ASR_22_Offset",
1061 ARRAY_SIZE(kNegativeOffset),
1062 kNegativeOffset},
1063 {{al, r10, r9, minus, r8, ASR, 3, Offset},
1064 "al r10 r9 minus r8 ASR 3 Offset",
1065 "NegativeOffset_al_r10_r9_minus_r8_ASR_3_Offset",
1066 ARRAY_SIZE(kNegativeOffset),
1067 kNegativeOffset},
1068 {{al, r12, r10, minus, r8, LSR, 31, Offset},
1069 "al r12 r10 minus r8 LSR 31 Offset",
1070 "NegativeOffset_al_r12_r10_minus_r8_LSR_31_Offset",
1071 ARRAY_SIZE(kNegativeOffset),
1072 kNegativeOffset},
1073 {{al, r1, r9, minus, r11, LSR, 24, Offset},
1074 "al r1 r9 minus r11 LSR 24 Offset",
1075 "NegativeOffset_al_r1_r9_minus_r11_LSR_24_Offset",
1076 ARRAY_SIZE(kNegativeOffset),
1077 kNegativeOffset},
1078 {{al, r2, r10, minus, r4, LSR, 15, Offset},
1079 "al r2 r10 minus r4 LSR 15 Offset",
1080 "NegativeOffset_al_r2_r10_minus_r4_LSR_15_Offset",
1081 ARRAY_SIZE(kNegativeOffset),
1082 kNegativeOffset},
1083 {{al, r3, r7, minus, r10, ASR, 7, Offset},
1084 "al r3 r7 minus r10 ASR 7 Offset",
1085 "NegativeOffset_al_r3_r7_minus_r10_ASR_7_Offset",
1086 ARRAY_SIZE(kNegativeOffset),
1087 kNegativeOffset},
1088 {{al, r14, r0, minus, r4, ASR, 23, Offset},
1089 "al r14 r0 minus r4 ASR 23 Offset",
1090 "NegativeOffset_al_r14_r0_minus_r4_ASR_23_Offset",
1091 ARRAY_SIZE(kNegativeOffset),
1092 kNegativeOffset},
1093 {{al, r4, r3, minus, r10, LSR, 19, Offset},
1094 "al r4 r3 minus r10 LSR 19 Offset",
1095 "NegativeOffset_al_r4_r3_minus_r10_LSR_19_Offset",
1096 ARRAY_SIZE(kNegativeOffset),
1097 kNegativeOffset},
1098 {{al, r8, r1, minus, r0, LSR, 31, Offset},
1099 "al r8 r1 minus r0 LSR 31 Offset",
1100 "NegativeOffset_al_r8_r1_minus_r0_LSR_31_Offset",
1101 ARRAY_SIZE(kNegativeOffset),
1102 kNegativeOffset},
1103 {{al, r3, r4, minus, r5, LSR, 2, Offset},
1104 "al r3 r4 minus r5 LSR 2 Offset",
1105 "NegativeOffset_al_r3_r4_minus_r5_LSR_2_Offset",
1106 ARRAY_SIZE(kNegativeOffset),
1107 kNegativeOffset},
1108 {{al, r11, r3, minus, r4, LSR, 22, Offset},
1109 "al r11 r3 minus r4 LSR 22 Offset",
1110 "NegativeOffset_al_r11_r3_minus_r4_LSR_22_Offset",
1111 ARRAY_SIZE(kNegativeOffset),
1112 kNegativeOffset},
1113 {{al, r9, r5, minus, r1, LSR, 25, Offset},
1114 "al r9 r5 minus r1 LSR 25 Offset",
1115 "NegativeOffset_al_r9_r5_minus_r1_LSR_25_Offset",
1116 ARRAY_SIZE(kNegativeOffset),
1117 kNegativeOffset},
1118 {{al, r1, r2, minus, r9, LSR, 24, Offset},
1119 "al r1 r2 minus r9 LSR 24 Offset",
1120 "NegativeOffset_al_r1_r2_minus_r9_LSR_24_Offset",
1121 ARRAY_SIZE(kNegativeOffset),
1122 kNegativeOffset},
1123 {{al, r1, r8, minus, r14, ASR, 29, Offset},
1124 "al r1 r8 minus r14 ASR 29 Offset",
1125 "NegativeOffset_al_r1_r8_minus_r14_ASR_29_Offset",
1126 ARRAY_SIZE(kNegativeOffset),
1127 kNegativeOffset},
1128 {{al, r6, r4, minus, r5, LSR, 17, Offset},
1129 "al r6 r4 minus r5 LSR 17 Offset",
1130 "NegativeOffset_al_r6_r4_minus_r5_LSR_17_Offset",
1131 ARRAY_SIZE(kNegativeOffset),
1132 kNegativeOffset},
1133 {{al, r6, r10, minus, r11, ASR, 29, Offset},
1134 "al r6 r10 minus r11 ASR 29 Offset",
1135 "NegativeOffset_al_r6_r10_minus_r11_ASR_29_Offset",
1136 ARRAY_SIZE(kNegativeOffset),
1137 kNegativeOffset},
1138 {{al, r4, r10, minus, r7, ASR, 10, Offset},
1139 "al r4 r10 minus r7 ASR 10 Offset",
1140 "NegativeOffset_al_r4_r10_minus_r7_ASR_10_Offset",
1141 ARRAY_SIZE(kNegativeOffset),
1142 kNegativeOffset},
1143 {{al, r6, r4, minus, r7, LSR, 1, Offset},
1144 "al r6 r4 minus r7 LSR 1 Offset",
1145 "NegativeOffset_al_r6_r4_minus_r7_LSR_1_Offset",
1146 ARRAY_SIZE(kNegativeOffset),
1147 kNegativeOffset},
1148 {{al, r2, r7, minus, r8, ASR, 11, Offset},
1149 "al r2 r7 minus r8 ASR 11 Offset",
1150 "NegativeOffset_al_r2_r7_minus_r8_ASR_11_Offset",
1151 ARRAY_SIZE(kNegativeOffset),
1152 kNegativeOffset},
1153 {{al, r9, r7, minus, r14, ASR, 13, Offset},
1154 "al r9 r7 minus r14 ASR 13 Offset",
1155 "NegativeOffset_al_r9_r7_minus_r14_ASR_13_Offset",
1156 ARRAY_SIZE(kNegativeOffset),
1157 kNegativeOffset},
1158 {{al, r14, r10, minus, r8, ASR, 27, Offset},
1159 "al r14 r10 minus r8 ASR 27 Offset",
1160 "NegativeOffset_al_r14_r10_minus_r8_ASR_27_Offset",
1161 ARRAY_SIZE(kNegativeOffset),
1162 kNegativeOffset},
1163 {{al, r10, r14, minus, r1, ASR, 26, Offset},
1164 "al r10 r14 minus r1 ASR 26 Offset",
1165 "NegativeOffset_al_r10_r14_minus_r1_ASR_26_Offset",
1166 ARRAY_SIZE(kNegativeOffset),
1167 kNegativeOffset},
1168 {{al, r6, r4, minus, r9, ASR, 20, Offset},
1169 "al r6 r4 minus r9 ASR 20 Offset",
1170 "NegativeOffset_al_r6_r4_minus_r9_ASR_20_Offset",
1171 ARRAY_SIZE(kNegativeOffset),
1172 kNegativeOffset},
1173 {{al, r0, r6, minus, r11, ASR, 23, Offset},
1174 "al r0 r6 minus r11 ASR 23 Offset",
1175 "NegativeOffset_al_r0_r6_minus_r11_ASR_23_Offset",
1176 ARRAY_SIZE(kNegativeOffset),
1177 kNegativeOffset},
1178 {{al, r8, r3, minus, r9, ASR, 4, Offset},
1179 "al r8 r3 minus r9 ASR 4 Offset",
1180 "NegativeOffset_al_r8_r3_minus_r9_ASR_4_Offset",
1181 ARRAY_SIZE(kNegativeOffset),
1182 kNegativeOffset},
1183 {{al, r7, r1, minus, r8, LSR, 27, Offset},
1184 "al r7 r1 minus r8 LSR 27 Offset",
1185 "NegativeOffset_al_r7_r1_minus_r8_LSR_27_Offset",
1186 ARRAY_SIZE(kNegativeOffset),
1187 kNegativeOffset},
1188 {{al, r14, r5, minus, r7, LSR, 18, Offset},
1189 "al r14 r5 minus r7 LSR 18 Offset",
1190 "NegativeOffset_al_r14_r5_minus_r7_LSR_18_Offset",
1191 ARRAY_SIZE(kNegativeOffset),
1192 kNegativeOffset},
1193 {{al, r12, r7, minus, r3, LSR, 25, Offset},
1194 "al r12 r7 minus r3 LSR 25 Offset",
1195 "NegativeOffset_al_r12_r7_minus_r3_LSR_25_Offset",
1196 ARRAY_SIZE(kNegativeOffset),
1197 kNegativeOffset},
1198 {{al, r4, r10, minus, r14, LSR, 27, Offset},
1199 "al r4 r10 minus r14 LSR 27 Offset",
1200 "NegativeOffset_al_r4_r10_minus_r14_LSR_27_Offset",
1201 ARRAY_SIZE(kNegativeOffset),
1202 kNegativeOffset},
1203 {{al, r14, r7, minus, r8, LSR, 3, Offset},
1204 "al r14 r7 minus r8 LSR 3 Offset",
1205 "NegativeOffset_al_r14_r7_minus_r8_LSR_3_Offset",
1206 ARRAY_SIZE(kNegativeOffset),
1207 kNegativeOffset},
1208 {{al, r6, r9, minus, r5, LSR, 5, Offset},
1209 "al r6 r9 minus r5 LSR 5 Offset",
1210 "NegativeOffset_al_r6_r9_minus_r5_LSR_5_Offset",
1211 ARRAY_SIZE(kNegativeOffset),
1212 kNegativeOffset},
1213 {{al, r10, r11, minus, r1, LSR, 12, Offset},
1214 "al r10 r11 minus r1 LSR 12 Offset",
1215 "NegativeOffset_al_r10_r11_minus_r1_LSR_12_Offset",
1216 ARRAY_SIZE(kNegativeOffset),
1217 kNegativeOffset},
1218 {{al, r8, r12, minus, r0, LSR, 28, Offset},
1219 "al r8 r12 minus r0 LSR 28 Offset",
1220 "NegativeOffset_al_r8_r12_minus_r0_LSR_28_Offset",
1221 ARRAY_SIZE(kNegativeOffset),
1222 kNegativeOffset},
1223 {{al, r0, r6, minus, r2, LSR, 25, Offset},
1224 "al r0 r6 minus r2 LSR 25 Offset",
1225 "NegativeOffset_al_r0_r6_minus_r2_LSR_25_Offset",
1226 ARRAY_SIZE(kNegativeOffset),
1227 kNegativeOffset},
1228 {{al, r12, r3, minus, r10, ASR, 4, Offset},
1229 "al r12 r3 minus r10 ASR 4 Offset",
1230 "NegativeOffset_al_r12_r3_minus_r10_ASR_4_Offset",
1231 ARRAY_SIZE(kNegativeOffset),
1232 kNegativeOffset},
1233 {{al, r0, r10, minus, r12, LSR, 4, Offset},
1234 "al r0 r10 minus r12 LSR 4 Offset",
1235 "NegativeOffset_al_r0_r10_minus_r12_LSR_4_Offset",
1236 ARRAY_SIZE(kNegativeOffset),
1237 kNegativeOffset},
1238 {{al, r10, r14, minus, r7, ASR, 1, Offset},
1239 "al r10 r14 minus r7 ASR 1 Offset",
1240 "NegativeOffset_al_r10_r14_minus_r7_ASR_1_Offset",
1241 ARRAY_SIZE(kNegativeOffset),
1242 kNegativeOffset},
1243 {{al, r4, r9, minus, r0, ASR, 14, Offset},
1244 "al r4 r9 minus r0 ASR 14 Offset",
1245 "NegativeOffset_al_r4_r9_minus_r0_ASR_14_Offset",
1246 ARRAY_SIZE(kNegativeOffset),
1247 kNegativeOffset},
1248 {{al, r6, r12, minus, r0, LSR, 8, Offset},
1249 "al r6 r12 minus r0 LSR 8 Offset",
1250 "NegativeOffset_al_r6_r12_minus_r0_LSR_8_Offset",
1251 ARRAY_SIZE(kNegativeOffset),
1252 kNegativeOffset},
1253 {{al, r6, r9, minus, r3, LSR, 22, Offset},
1254 "al r6 r9 minus r3 LSR 22 Offset",
1255 "NegativeOffset_al_r6_r9_minus_r3_LSR_22_Offset",
1256 ARRAY_SIZE(kNegativeOffset),
1257 kNegativeOffset},
1258 {{al, r14, r11, minus, r6, LSR, 21, Offset},
1259 "al r14 r11 minus r6 LSR 21 Offset",
1260 "NegativeOffset_al_r14_r11_minus_r6_LSR_21_Offset",
1261 ARRAY_SIZE(kNegativeOffset),
1262 kNegativeOffset},
1263 {{al, r5, r14, minus, r0, LSR, 3, Offset},
1264 "al r5 r14 minus r0 LSR 3 Offset",
1265 "NegativeOffset_al_r5_r14_minus_r0_LSR_3_Offset",
1266 ARRAY_SIZE(kNegativeOffset),
1267 kNegativeOffset},
1268 {{al, r9, r0, minus, r2, ASR, 17, Offset},
1269 "al r9 r0 minus r2 ASR 17 Offset",
1270 "NegativeOffset_al_r9_r0_minus_r2_ASR_17_Offset",
1271 ARRAY_SIZE(kNegativeOffset),
1272 kNegativeOffset},
1273 {{al, r14, r10, minus, r4, ASR, 4, Offset},
1274 "al r14 r10 minus r4 ASR 4 Offset",
1275 "NegativeOffset_al_r14_r10_minus_r4_ASR_4_Offset",
1276 ARRAY_SIZE(kNegativeOffset),
1277 kNegativeOffset},
1278 {{al, r11, r8, minus, r9, LSR, 6, Offset},
1279 "al r11 r8 minus r9 LSR 6 Offset",
1280 "NegativeOffset_al_r11_r8_minus_r9_LSR_6_Offset",
1281 ARRAY_SIZE(kNegativeOffset),
1282 kNegativeOffset},
1283 {{al, r9, r4, minus, r12, ASR, 10, Offset},
1284 "al r9 r4 minus r12 ASR 10 Offset",
1285 "NegativeOffset_al_r9_r4_minus_r12_ASR_10_Offset",
1286 ARRAY_SIZE(kNegativeOffset),
1287 kNegativeOffset},
1288 {{al, r8, r12, minus, r5, ASR, 8, Offset},
1289 "al r8 r12 minus r5 ASR 8 Offset",
1290 "NegativeOffset_al_r8_r12_minus_r5_ASR_8_Offset",
1291 ARRAY_SIZE(kNegativeOffset),
1292 kNegativeOffset},
1293 {{al, r11, r10, minus, r5, LSR, 32, Offset},
1294 "al r11 r10 minus r5 LSR 32 Offset",
1295 "NegativeOffset_al_r11_r10_minus_r5_LSR_32_Offset",
1296 ARRAY_SIZE(kNegativeOffset),
1297 kNegativeOffset},
1298 {{al, r6, r3, minus, r9, ASR, 9, Offset},
1299 "al r6 r3 minus r9 ASR 9 Offset",
1300 "NegativeOffset_al_r6_r3_minus_r9_ASR_9_Offset",
1301 ARRAY_SIZE(kNegativeOffset),
1302 kNegativeOffset},
1303 {{al, r1, r12, minus, r2, ASR, 22, Offset},
1304 "al r1 r12 minus r2 ASR 22 Offset",
1305 "NegativeOffset_al_r1_r12_minus_r2_ASR_22_Offset",
1306 ARRAY_SIZE(kNegativeOffset),
1307 kNegativeOffset},
1308 {{al, r12, r14, minus, r5, ASR, 18, Offset},
1309 "al r12 r14 minus r5 ASR 18 Offset",
1310 "NegativeOffset_al_r12_r14_minus_r5_ASR_18_Offset",
1311 ARRAY_SIZE(kNegativeOffset),
1312 kNegativeOffset},
1313 {{al, r12, r14, minus, r9, LSR, 7, Offset},
1314 "al r12 r14 minus r9 LSR 7 Offset",
1315 "NegativeOffset_al_r12_r14_minus_r9_LSR_7_Offset",
1316 ARRAY_SIZE(kNegativeOffset),
1317 kNegativeOffset},
1318 {{al, r9, r3, minus, r0, LSR, 3, Offset},
1319 "al r9 r3 minus r0 LSR 3 Offset",
1320 "NegativeOffset_al_r9_r3_minus_r0_LSR_3_Offset",
1321 ARRAY_SIZE(kNegativeOffset),
1322 kNegativeOffset},
1323 {{al, r4, r6, minus, r14, ASR, 4, Offset},
1324 "al r4 r6 minus r14 ASR 4 Offset",
1325 "NegativeOffset_al_r4_r6_minus_r14_ASR_4_Offset",
1326 ARRAY_SIZE(kNegativeOffset),
1327 kNegativeOffset},
1328 {{al, r0, r12, minus, r6, LSR, 30, Offset},
1329 "al r0 r12 minus r6 LSR 30 Offset",
1330 "NegativeOffset_al_r0_r12_minus_r6_LSR_30_Offset",
1331 ARRAY_SIZE(kNegativeOffset),
1332 kNegativeOffset},
1333 {{al, r9, r0, plus, r4, LSR, 26, PostIndex},
1334 "al r9 r0 plus r4 LSR 26 PostIndex",
1335 "PositivePostIndex_al_r9_r0_plus_r4_LSR_26_PostIndex",
1336 ARRAY_SIZE(kPositivePostIndex),
1337 kPositivePostIndex},
1338 {{al, r2, r1, plus, r9, LSR, 30, PostIndex},
1339 "al r2 r1 plus r9 LSR 30 PostIndex",
1340 "PositivePostIndex_al_r2_r1_plus_r9_LSR_30_PostIndex",
1341 ARRAY_SIZE(kPositivePostIndex),
1342 kPositivePostIndex},
1343 {{al, r11, r7, plus, r8, LSR, 13, PostIndex},
1344 "al r11 r7 plus r8 LSR 13 PostIndex",
1345 "PositivePostIndex_al_r11_r7_plus_r8_LSR_13_PostIndex",
1346 ARRAY_SIZE(kPositivePostIndex),
1347 kPositivePostIndex},
1348 {{al, r5, r11, plus, r3, ASR, 2, PostIndex},
1349 "al r5 r11 plus r3 ASR 2 PostIndex",
1350 "PositivePostIndex_al_r5_r11_plus_r3_ASR_2_PostIndex",
1351 ARRAY_SIZE(kPositivePostIndex),
1352 kPositivePostIndex},
1353 {{al, r5, r12, plus, r11, LSR, 27, PostIndex},
1354 "al r5 r12 plus r11 LSR 27 PostIndex",
1355 "PositivePostIndex_al_r5_r12_plus_r11_LSR_27_PostIndex",
1356 ARRAY_SIZE(kPositivePostIndex),
1357 kPositivePostIndex},
1358 {{al, r3, r1, plus, r9, ASR, 5, PostIndex},
1359 "al r3 r1 plus r9 ASR 5 PostIndex",
1360 "PositivePostIndex_al_r3_r1_plus_r9_ASR_5_PostIndex",
1361 ARRAY_SIZE(kPositivePostIndex),
1362 kPositivePostIndex},
1363 {{al, r12, r6, plus, r8, ASR, 9, PostIndex},
1364 "al r12 r6 plus r8 ASR 9 PostIndex",
1365 "PositivePostIndex_al_r12_r6_plus_r8_ASR_9_PostIndex",
1366 ARRAY_SIZE(kPositivePostIndex),
1367 kPositivePostIndex},
1368 {{al, r4, r12, plus, r8, ASR, 10, PostIndex},
1369 "al r4 r12 plus r8 ASR 10 PostIndex",
1370 "PositivePostIndex_al_r4_r12_plus_r8_ASR_10_PostIndex",
1371 ARRAY_SIZE(kPositivePostIndex),
1372 kPositivePostIndex},
1373 {{al, r4, r9, plus, r10, LSR, 7, PostIndex},
1374 "al r4 r9 plus r10 LSR 7 PostIndex",
1375 "PositivePostIndex_al_r4_r9_plus_r10_LSR_7_PostIndex",
1376 ARRAY_SIZE(kPositivePostIndex),
1377 kPositivePostIndex},
1378 {{al, r6, r7, plus, r3, LSR, 8, PostIndex},
1379 "al r6 r7 plus r3 LSR 8 PostIndex",
1380 "PositivePostIndex_al_r6_r7_plus_r3_LSR_8_PostIndex",
1381 ARRAY_SIZE(kPositivePostIndex),
1382 kPositivePostIndex},
1383 {{al, r3, r8, plus, r10, LSR, 2, PostIndex},
1384 "al r3 r8 plus r10 LSR 2 PostIndex",
1385 "PositivePostIndex_al_r3_r8_plus_r10_LSR_2_PostIndex",
1386 ARRAY_SIZE(kPositivePostIndex),
1387 kPositivePostIndex},
1388 {{al, r3, r4, plus, r1, ASR, 26, PostIndex},
1389 "al r3 r4 plus r1 ASR 26 PostIndex",
1390 "PositivePostIndex_al_r3_r4_plus_r1_ASR_26_PostIndex",
1391 ARRAY_SIZE(kPositivePostIndex),
1392 kPositivePostIndex},
1393 {{al, r8, r7, plus, r11, ASR, 28, PostIndex},
1394 "al r8 r7 plus r11 ASR 28 PostIndex",
1395 "PositivePostIndex_al_r8_r7_plus_r11_ASR_28_PostIndex",
1396 ARRAY_SIZE(kPositivePostIndex),
1397 kPositivePostIndex},
1398 {{al, r10, r14, plus, r9, ASR, 17, PostIndex},
1399 "al r10 r14 plus r9 ASR 17 PostIndex",
1400 "PositivePostIndex_al_r10_r14_plus_r9_ASR_17_PostIndex",
1401 ARRAY_SIZE(kPositivePostIndex),
1402 kPositivePostIndex},
1403 {{al, r8, r9, plus, r3, LSR, 19, PostIndex},
1404 "al r8 r9 plus r3 LSR 19 PostIndex",
1405 "PositivePostIndex_al_r8_r9_plus_r3_LSR_19_PostIndex",
1406 ARRAY_SIZE(kPositivePostIndex),
1407 kPositivePostIndex},
1408 {{al, r14, r1, plus, r10, LSR, 20, PostIndex},
1409 "al r14 r1 plus r10 LSR 20 PostIndex",
1410 "PositivePostIndex_al_r14_r1_plus_r10_LSR_20_PostIndex",
1411 ARRAY_SIZE(kPositivePostIndex),
1412 kPositivePostIndex},
1413 {{al, r2, r4, plus, r0, ASR, 29, PostIndex},
1414 "al r2 r4 plus r0 ASR 29 PostIndex",
1415 "PositivePostIndex_al_r2_r4_plus_r0_ASR_29_PostIndex",
1416 ARRAY_SIZE(kPositivePostIndex),
1417 kPositivePostIndex},
1418 {{al, r14, r12, plus, r3, ASR, 26, PostIndex},
1419 "al r14 r12 plus r3 ASR 26 PostIndex",
1420 "PositivePostIndex_al_r14_r12_plus_r3_ASR_26_PostIndex",
1421 ARRAY_SIZE(kPositivePostIndex),
1422 kPositivePostIndex},
1423 {{al, r1, r14, plus, r0, LSR, 9, PostIndex},
1424 "al r1 r14 plus r0 LSR 9 PostIndex",
1425 "PositivePostIndex_al_r1_r14_plus_r0_LSR_9_PostIndex",
1426 ARRAY_SIZE(kPositivePostIndex),
1427 kPositivePostIndex},
1428 {{al, r8, r11, plus, r1, ASR, 24, PostIndex},
1429 "al r8 r11 plus r1 ASR 24 PostIndex",
1430 "PositivePostIndex_al_r8_r11_plus_r1_ASR_24_PostIndex",
1431 ARRAY_SIZE(kPositivePostIndex),
1432 kPositivePostIndex},
1433 {{al, r7, r12, plus, r6, ASR, 11, PostIndex},
1434 "al r7 r12 plus r6 ASR 11 PostIndex",
1435 "PositivePostIndex_al_r7_r12_plus_r6_ASR_11_PostIndex",
1436 ARRAY_SIZE(kPositivePostIndex),
1437 kPositivePostIndex},
1438 {{al, r10, r6, plus, r9, ASR, 30, PostIndex},
1439 "al r10 r6 plus r9 ASR 30 PostIndex",
1440 "PositivePostIndex_al_r10_r6_plus_r9_ASR_30_PostIndex",
1441 ARRAY_SIZE(kPositivePostIndex),
1442 kPositivePostIndex},
1443 {{al, r9, r0, plus, r7, ASR, 30, PostIndex},
1444 "al r9 r0 plus r7 ASR 30 PostIndex",
1445 "PositivePostIndex_al_r9_r0_plus_r7_ASR_30_PostIndex",
1446 ARRAY_SIZE(kPositivePostIndex),
1447 kPositivePostIndex},
1448 {{al, r5, r14, plus, r7, LSR, 6, PostIndex},
1449 "al r5 r14 plus r7 LSR 6 PostIndex",
1450 "PositivePostIndex_al_r5_r14_plus_r7_LSR_6_PostIndex",
1451 ARRAY_SIZE(kPositivePostIndex),
1452 kPositivePostIndex},
1453 {{al, r9, r7, plus, r5, ASR, 8, PostIndex},
1454 "al r9 r7 plus r5 ASR 8 PostIndex",
1455 "PositivePostIndex_al_r9_r7_plus_r5_ASR_8_PostIndex",
1456 ARRAY_SIZE(kPositivePostIndex),
1457 kPositivePostIndex},
1458 {{al, r11, r3, plus, r2, ASR, 10, PostIndex},
1459 "al r11 r3 plus r2 ASR 10 PostIndex",
1460 "PositivePostIndex_al_r11_r3_plus_r2_ASR_10_PostIndex",
1461 ARRAY_SIZE(kPositivePostIndex),
1462 kPositivePostIndex},
1463 {{al, r1, r3, plus, r10, ASR, 2, PostIndex},
1464 "al r1 r3 plus r10 ASR 2 PostIndex",
1465 "PositivePostIndex_al_r1_r3_plus_r10_ASR_2_PostIndex",
1466 ARRAY_SIZE(kPositivePostIndex),
1467 kPositivePostIndex},
1468 {{al, r3, r0, plus, r10, LSR, 12, PostIndex},
1469 "al r3 r0 plus r10 LSR 12 PostIndex",
1470 "PositivePostIndex_al_r3_r0_plus_r10_LSR_12_PostIndex",
1471 ARRAY_SIZE(kPositivePostIndex),
1472 kPositivePostIndex},
1473 {{al, r6, r11, plus, r5, LSR, 25, PostIndex},
1474 "al r6 r11 plus r5 LSR 25 PostIndex",
1475 "PositivePostIndex_al_r6_r11_plus_r5_LSR_25_PostIndex",
1476 ARRAY_SIZE(kPositivePostIndex),
1477 kPositivePostIndex},
1478 {{al, r0, r7, plus, r12, LSR, 18, PostIndex},
1479 "al r0 r7 plus r12 LSR 18 PostIndex",
1480 "PositivePostIndex_al_r0_r7_plus_r12_LSR_18_PostIndex",
1481 ARRAY_SIZE(kPositivePostIndex),
1482 kPositivePostIndex},
1483 {{al, r5, r2, plus, r9, LSR, 14, PostIndex},
1484 "al r5 r2 plus r9 LSR 14 PostIndex",
1485 "PositivePostIndex_al_r5_r2_plus_r9_LSR_14_PostIndex",
1486 ARRAY_SIZE(kPositivePostIndex),
1487 kPositivePostIndex},
1488 {{al, r8, r9, plus, r12, LSR, 1, PostIndex},
1489 "al r8 r9 plus r12 LSR 1 PostIndex",
1490 "PositivePostIndex_al_r8_r9_plus_r12_LSR_1_PostIndex",
1491 ARRAY_SIZE(kPositivePostIndex),
1492 kPositivePostIndex},
1493 {{al, r11, r2, plus, r9, ASR, 9, PostIndex},
1494 "al r11 r2 plus r9 ASR 9 PostIndex",
1495 "PositivePostIndex_al_r11_r2_plus_r9_ASR_9_PostIndex",
1496 ARRAY_SIZE(kPositivePostIndex),
1497 kPositivePostIndex},
1498 {{al, r14, r0, plus, r3, LSR, 17, PostIndex},
1499 "al r14 r0 plus r3 LSR 17 PostIndex",
1500 "PositivePostIndex_al_r14_r0_plus_r3_LSR_17_PostIndex",
1501 ARRAY_SIZE(kPositivePostIndex),
1502 kPositivePostIndex},
1503 {{al, r5, r4, plus, r9, ASR, 6, PostIndex},
1504 "al r5 r4 plus r9 ASR 6 PostIndex",
1505 "PositivePostIndex_al_r5_r4_plus_r9_ASR_6_PostIndex",
1506 ARRAY_SIZE(kPositivePostIndex),
1507 kPositivePostIndex},
1508 {{al, r8, r5, plus, r2, ASR, 29, PostIndex},
1509 "al r8 r5 plus r2 ASR 29 PostIndex",
1510 "PositivePostIndex_al_r8_r5_plus_r2_ASR_29_PostIndex",
1511 ARRAY_SIZE(kPositivePostIndex),
1512 kPositivePostIndex},
1513 {{al, r4, r10, plus, r3, LSR, 23, PostIndex},
1514 "al r4 r10 plus r3 LSR 23 PostIndex",
1515 "PositivePostIndex_al_r4_r10_plus_r3_LSR_23_PostIndex",
1516 ARRAY_SIZE(kPositivePostIndex),
1517 kPositivePostIndex},
1518 {{al, r7, r11, plus, r12, LSR, 10, PostIndex},
1519 "al r7 r11 plus r12 LSR 10 PostIndex",
1520 "PositivePostIndex_al_r7_r11_plus_r12_LSR_10_PostIndex",
1521 ARRAY_SIZE(kPositivePostIndex),
1522 kPositivePostIndex},
1523 {{al, r14, r8, plus, r7, ASR, 1, PostIndex},
1524 "al r14 r8 plus r7 ASR 1 PostIndex",
1525 "PositivePostIndex_al_r14_r8_plus_r7_ASR_1_PostIndex",
1526 ARRAY_SIZE(kPositivePostIndex),
1527 kPositivePostIndex},
1528 {{al, r11, r2, plus, r4, ASR, 31, PostIndex},
1529 "al r11 r2 plus r4 ASR 31 PostIndex",
1530 "PositivePostIndex_al_r11_r2_plus_r4_ASR_31_PostIndex",
1531 ARRAY_SIZE(kPositivePostIndex),
1532 kPositivePostIndex},
1533 {{al, r5, r12, plus, r11, ASR, 21, PostIndex},
1534 "al r5 r12 plus r11 ASR 21 PostIndex",
1535 "PositivePostIndex_al_r5_r12_plus_r11_ASR_21_PostIndex",
1536 ARRAY_SIZE(kPositivePostIndex),
1537 kPositivePostIndex},
1538 {{al, r3, r9, plus, r11, LSR, 29, PostIndex},
1539 "al r3 r9 plus r11 LSR 29 PostIndex",
1540 "PositivePostIndex_al_r3_r9_plus_r11_LSR_29_PostIndex",
1541 ARRAY_SIZE(kPositivePostIndex),
1542 kPositivePostIndex},
1543 {{al, r4, r10, plus, r1, LSR, 9, PostIndex},
1544 "al r4 r10 plus r1 LSR 9 PostIndex",
1545 "PositivePostIndex_al_r4_r10_plus_r1_LSR_9_PostIndex",
1546 ARRAY_SIZE(kPositivePostIndex),
1547 kPositivePostIndex},
1548 {{al, r0, r4, plus, r5, ASR, 21, PostIndex},
1549 "al r0 r4 plus r5 ASR 21 PostIndex",
1550 "PositivePostIndex_al_r0_r4_plus_r5_ASR_21_PostIndex",
1551 ARRAY_SIZE(kPositivePostIndex),
1552 kPositivePostIndex},
1553 {{al, r8, r12, plus, r9, ASR, 3, PostIndex},
1554 "al r8 r12 plus r9 ASR 3 PostIndex",
1555 "PositivePostIndex_al_r8_r12_plus_r9_ASR_3_PostIndex",
1556 ARRAY_SIZE(kPositivePostIndex),
1557 kPositivePostIndex},
1558 {{al, r3, r6, plus, r2, ASR, 2, PostIndex},
1559 "al r3 r6 plus r2 ASR 2 PostIndex",
1560 "PositivePostIndex_al_r3_r6_plus_r2_ASR_2_PostIndex",
1561 ARRAY_SIZE(kPositivePostIndex),
1562 kPositivePostIndex},
1563 {{al, r12, r11, plus, r2, ASR, 28, PostIndex},
1564 "al r12 r11 plus r2 ASR 28 PostIndex",
1565 "PositivePostIndex_al_r12_r11_plus_r2_ASR_28_PostIndex",
1566 ARRAY_SIZE(kPositivePostIndex),
1567 kPositivePostIndex},
1568 {{al, r4, r10, plus, r11, LSR, 28, PostIndex},
1569 "al r4 r10 plus r11 LSR 28 PostIndex",
1570 "PositivePostIndex_al_r4_r10_plus_r11_LSR_28_PostIndex",
1571 ARRAY_SIZE(kPositivePostIndex),
1572 kPositivePostIndex},
1573 {{al, r7, r10, plus, r9, ASR, 22, PostIndex},
1574 "al r7 r10 plus r9 ASR 22 PostIndex",
1575 "PositivePostIndex_al_r7_r10_plus_r9_ASR_22_PostIndex",
1576 ARRAY_SIZE(kPositivePostIndex),
1577 kPositivePostIndex},
1578 {{al, r5, r6, plus, r11, LSR, 9, PostIndex},
1579 "al r5 r6 plus r11 LSR 9 PostIndex",
1580 "PositivePostIndex_al_r5_r6_plus_r11_LSR_9_PostIndex",
1581 ARRAY_SIZE(kPositivePostIndex),
1582 kPositivePostIndex},
1583 {{al, r7, r3, plus, r8, ASR, 26, PostIndex},
1584 "al r7 r3 plus r8 ASR 26 PostIndex",
1585 "PositivePostIndex_al_r7_r3_plus_r8_ASR_26_PostIndex",
1586 ARRAY_SIZE(kPositivePostIndex),
1587 kPositivePostIndex},
1588 {{al, r7, r9, plus, r8, LSR, 15, PostIndex},
1589 "al r7 r9 plus r8 LSR 15 PostIndex",
1590 "PositivePostIndex_al_r7_r9_plus_r8_LSR_15_PostIndex",
1591 ARRAY_SIZE(kPositivePostIndex),
1592 kPositivePostIndex},
1593 {{al, r0, r14, plus, r12, ASR, 17, PostIndex},
1594 "al r0 r14 plus r12 ASR 17 PostIndex",
1595 "PositivePostIndex_al_r0_r14_plus_r12_ASR_17_PostIndex",
1596 ARRAY_SIZE(kPositivePostIndex),
1597 kPositivePostIndex},
1598 {{al, r11, r12, plus, r14, ASR, 18, PostIndex},
1599 "al r11 r12 plus r14 ASR 18 PostIndex",
1600 "PositivePostIndex_al_r11_r12_plus_r14_ASR_18_PostIndex",
1601 ARRAY_SIZE(kPositivePostIndex),
1602 kPositivePostIndex},
1603 {{al, r11, r0, plus, r6, LSR, 17, PostIndex},
1604 "al r11 r0 plus r6 LSR 17 PostIndex",
1605 "PositivePostIndex_al_r11_r0_plus_r6_LSR_17_PostIndex",
1606 ARRAY_SIZE(kPositivePostIndex),
1607 kPositivePostIndex},
1608 {{al, r10, r14, plus, r9, LSR, 29, PostIndex},
1609 "al r10 r14 plus r9 LSR 29 PostIndex",
1610 "PositivePostIndex_al_r10_r14_plus_r9_LSR_29_PostIndex",
1611 ARRAY_SIZE(kPositivePostIndex),
1612 kPositivePostIndex},
1613 {{al, r6, r2, plus, r0, LSR, 6, PostIndex},
1614 "al r6 r2 plus r0 LSR 6 PostIndex",
1615 "PositivePostIndex_al_r6_r2_plus_r0_LSR_6_PostIndex",
1616 ARRAY_SIZE(kPositivePostIndex),
1617 kPositivePostIndex},
1618 {{al, r0, r1, plus, r12, ASR, 5, PostIndex},
1619 "al r0 r1 plus r12 ASR 5 PostIndex",
1620 "PositivePostIndex_al_r0_r1_plus_r12_ASR_5_PostIndex",
1621 ARRAY_SIZE(kPositivePostIndex),
1622 kPositivePostIndex},
1623 {{al, r2, r7, plus, r11, ASR, 11, PostIndex},
1624 "al r2 r7 plus r11 ASR 11 PostIndex",
1625 "PositivePostIndex_al_r2_r7_plus_r11_ASR_11_PostIndex",
1626 ARRAY_SIZE(kPositivePostIndex),
1627 kPositivePostIndex},
1628 {{al, r1, r4, plus, r3, ASR, 5, PostIndex},
1629 "al r1 r4 plus r3 ASR 5 PostIndex",
1630 "PositivePostIndex_al_r1_r4_plus_r3_ASR_5_PostIndex",
1631 ARRAY_SIZE(kPositivePostIndex),
1632 kPositivePostIndex},
1633 {{al, r0, r2, plus, r6, LSR, 23, PostIndex},
1634 "al r0 r2 plus r6 LSR 23 PostIndex",
1635 "PositivePostIndex_al_r0_r2_plus_r6_LSR_23_PostIndex",
1636 ARRAY_SIZE(kPositivePostIndex),
1637 kPositivePostIndex},
1638 {{al, r2, r11, plus, r0, ASR, 4, PostIndex},
1639 "al r2 r11 plus r0 ASR 4 PostIndex",
1640 "PositivePostIndex_al_r2_r11_plus_r0_ASR_4_PostIndex",
1641 ARRAY_SIZE(kPositivePostIndex),
1642 kPositivePostIndex},
1643 {{al, r14, r0, plus, r2, LSR, 9, PostIndex},
1644 "al r14 r0 plus r2 LSR 9 PostIndex",
1645 "PositivePostIndex_al_r14_r0_plus_r2_LSR_9_PostIndex",
1646 ARRAY_SIZE(kPositivePostIndex),
1647 kPositivePostIndex},
1648 {{al, r12, r1, plus, r3, LSR, 24, PostIndex},
1649 "al r12 r1 plus r3 LSR 24 PostIndex",
1650 "PositivePostIndex_al_r12_r1_plus_r3_LSR_24_PostIndex",
1651 ARRAY_SIZE(kPositivePostIndex),
1652 kPositivePostIndex},
1653 {{al, r1, r10, plus, r11, ASR, 29, PostIndex},
1654 "al r1 r10 plus r11 ASR 29 PostIndex",
1655 "PositivePostIndex_al_r1_r10_plus_r11_ASR_29_PostIndex",
1656 ARRAY_SIZE(kPositivePostIndex),
1657 kPositivePostIndex},
1658 {{al, r5, r6, plus, r0, LSR, 12, PostIndex},
1659 "al r5 r6 plus r0 LSR 12 PostIndex",
1660 "PositivePostIndex_al_r5_r6_plus_r0_LSR_12_PostIndex",
1661 ARRAY_SIZE(kPositivePostIndex),
1662 kPositivePostIndex},
1663 {{al, r8, r7, plus, r5, ASR, 17, PostIndex},
1664 "al r8 r7 plus r5 ASR 17 PostIndex",
1665 "PositivePostIndex_al_r8_r7_plus_r5_ASR_17_PostIndex",
1666 ARRAY_SIZE(kPositivePostIndex),
1667 kPositivePostIndex},
1668 {{al, r14, r1, plus, r5, LSR, 26, PostIndex},
1669 "al r14 r1 plus r5 LSR 26 PostIndex",
1670 "PositivePostIndex_al_r14_r1_plus_r5_LSR_26_PostIndex",
1671 ARRAY_SIZE(kPositivePostIndex),
1672 kPositivePostIndex},
1673 {{al, r7, r0, plus, r11, ASR, 13, PostIndex},
1674 "al r7 r0 plus r11 ASR 13 PostIndex",
1675 "PositivePostIndex_al_r7_r0_plus_r11_ASR_13_PostIndex",
1676 ARRAY_SIZE(kPositivePostIndex),
1677 kPositivePostIndex},
1678 {{al, r0, r8, plus, r1, ASR, 14, PostIndex},
1679 "al r0 r8 plus r1 ASR 14 PostIndex",
1680 "PositivePostIndex_al_r0_r8_plus_r1_ASR_14_PostIndex",
1681 ARRAY_SIZE(kPositivePostIndex),
1682 kPositivePostIndex},
1683 {{al, r7, r4, plus, r3, ASR, 4, PostIndex},
1684 "al r7 r4 plus r3 ASR 4 PostIndex",
1685 "PositivePostIndex_al_r7_r4_plus_r3_ASR_4_PostIndex",
1686 ARRAY_SIZE(kPositivePostIndex),
1687 kPositivePostIndex},
1688 {{al, r5, r2, plus, r11, LSR, 3, PostIndex},
1689 "al r5 r2 plus r11 LSR 3 PostIndex",
1690 "PositivePostIndex_al_r5_r2_plus_r11_LSR_3_PostIndex",
1691 ARRAY_SIZE(kPositivePostIndex),
1692 kPositivePostIndex},
1693 {{al, r2, r7, plus, r1, ASR, 5, PostIndex},
1694 "al r2 r7 plus r1 ASR 5 PostIndex",
1695 "PositivePostIndex_al_r2_r7_plus_r1_ASR_5_PostIndex",
1696 ARRAY_SIZE(kPositivePostIndex),
1697 kPositivePostIndex},
1698 {{al, r8, r14, plus, r6, LSR, 30, PostIndex},
1699 "al r8 r14 plus r6 LSR 30 PostIndex",
1700 "PositivePostIndex_al_r8_r14_plus_r6_LSR_30_PostIndex",
1701 ARRAY_SIZE(kPositivePostIndex),
1702 kPositivePostIndex},
1703 {{al, r5, r8, plus, r14, ASR, 11, PostIndex},
1704 "al r5 r8 plus r14 ASR 11 PostIndex",
1705 "PositivePostIndex_al_r5_r8_plus_r14_ASR_11_PostIndex",
1706 ARRAY_SIZE(kPositivePostIndex),
1707 kPositivePostIndex},
1708 {{al, r3, r5, plus, r6, ASR, 22, PostIndex},
1709 "al r3 r5 plus r6 ASR 22 PostIndex",
1710 "PositivePostIndex_al_r3_r5_plus_r6_ASR_22_PostIndex",
1711 ARRAY_SIZE(kPositivePostIndex),
1712 kPositivePostIndex},
1713 {{al, r3, r5, plus, r4, LSR, 9, PostIndex},
1714 "al r3 r5 plus r4 LSR 9 PostIndex",
1715 "PositivePostIndex_al_r3_r5_plus_r4_LSR_9_PostIndex",
1716 ARRAY_SIZE(kPositivePostIndex),
1717 kPositivePostIndex},
1718 {{al, r7, r1, plus, r11, LSR, 7, PostIndex},
1719 "al r7 r1 plus r11 LSR 7 PostIndex",
1720 "PositivePostIndex_al_r7_r1_plus_r11_LSR_7_PostIndex",
1721 ARRAY_SIZE(kPositivePostIndex),
1722 kPositivePostIndex},
1723 {{al, r2, r10, plus, r6, ASR, 3, PostIndex},
1724 "al r2 r10 plus r6 ASR 3 PostIndex",
1725 "PositivePostIndex_al_r2_r10_plus_r6_ASR_3_PostIndex",
1726 ARRAY_SIZE(kPositivePostIndex),
1727 kPositivePostIndex},
1728 {{al, r6, r7, plus, r12, LSR, 5, PostIndex},
1729 "al r6 r7 plus r12 LSR 5 PostIndex",
1730 "PositivePostIndex_al_r6_r7_plus_r12_LSR_5_PostIndex",
1731 ARRAY_SIZE(kPositivePostIndex),
1732 kPositivePostIndex},
1733 {{al, r3, r14, plus, r1, ASR, 18, PostIndex},
1734 "al r3 r14 plus r1 ASR 18 PostIndex",
1735 "PositivePostIndex_al_r3_r14_plus_r1_ASR_18_PostIndex",
1736 ARRAY_SIZE(kPositivePostIndex),
1737 kPositivePostIndex},
1738 {{al, r1, r9, plus, r12, LSR, 29, PostIndex},
1739 "al r1 r9 plus r12 LSR 29 PostIndex",
1740 "PositivePostIndex_al_r1_r9_plus_r12_LSR_29_PostIndex",
1741 ARRAY_SIZE(kPositivePostIndex),
1742 kPositivePostIndex},
1743 {{al, r9, r2, plus, r0, LSR, 16, PostIndex},
1744 "al r9 r2 plus r0 LSR 16 PostIndex",
1745 "PositivePostIndex_al_r9_r2_plus_r0_LSR_16_PostIndex",
1746 ARRAY_SIZE(kPositivePostIndex),
1747 kPositivePostIndex},
1748 {{al, r8, r9, plus, r2, ASR, 1, PostIndex},
1749 "al r8 r9 plus r2 ASR 1 PostIndex",
1750 "PositivePostIndex_al_r8_r9_plus_r2_ASR_1_PostIndex",
1751 ARRAY_SIZE(kPositivePostIndex),
1752 kPositivePostIndex},
1753 {{al, r4, r6, plus, r2, LSR, 6, PostIndex},
1754 "al r4 r6 plus r2 LSR 6 PostIndex",
1755 "PositivePostIndex_al_r4_r6_plus_r2_LSR_6_PostIndex",
1756 ARRAY_SIZE(kPositivePostIndex),
1757 kPositivePostIndex},
1758 {{al, r14, r7, plus, r0, LSR, 25, PostIndex},
1759 "al r14 r7 plus r0 LSR 25 PostIndex",
1760 "PositivePostIndex_al_r14_r7_plus_r0_LSR_25_PostIndex",
1761 ARRAY_SIZE(kPositivePostIndex),
1762 kPositivePostIndex},
1763 {{al, r12, r1, plus, r14, LSR, 9, PostIndex},
1764 "al r12 r1 plus r14 LSR 9 PostIndex",
1765 "PositivePostIndex_al_r12_r1_plus_r14_LSR_9_PostIndex",
1766 ARRAY_SIZE(kPositivePostIndex),
1767 kPositivePostIndex},
1768 {{al, r1, r6, plus, r5, ASR, 12, PostIndex},
1769 "al r1 r6 plus r5 ASR 12 PostIndex",
1770 "PositivePostIndex_al_r1_r6_plus_r5_ASR_12_PostIndex",
1771 ARRAY_SIZE(kPositivePostIndex),
1772 kPositivePostIndex},
1773 {{al, r9, r6, plus, r7, LSR, 22, PostIndex},
1774 "al r9 r6 plus r7 LSR 22 PostIndex",
1775 "PositivePostIndex_al_r9_r6_plus_r7_LSR_22_PostIndex",
1776 ARRAY_SIZE(kPositivePostIndex),
1777 kPositivePostIndex},
1778 {{al, r0, r2, plus, r11, ASR, 31, PostIndex},
1779 "al r0 r2 plus r11 ASR 31 PostIndex",
1780 "PositivePostIndex_al_r0_r2_plus_r11_ASR_31_PostIndex",
1781 ARRAY_SIZE(kPositivePostIndex),
1782 kPositivePostIndex},
1783 {{al, r8, r14, plus, r1, ASR, 3, PostIndex},
1784 "al r8 r14 plus r1 ASR 3 PostIndex",
1785 "PositivePostIndex_al_r8_r14_plus_r1_ASR_3_PostIndex",
1786 ARRAY_SIZE(kPositivePostIndex),
1787 kPositivePostIndex},
1788 {{al, r10, r0, plus, r5, LSR, 3, PostIndex},
1789 "al r10 r0 plus r5 LSR 3 PostIndex",
1790 "PositivePostIndex_al_r10_r0_plus_r5_LSR_3_PostIndex",
1791 ARRAY_SIZE(kPositivePostIndex),
1792 kPositivePostIndex},
1793 {{al, r3, r5, plus, r14, ASR, 28, PostIndex},
1794 "al r3 r5 plus r14 ASR 28 PostIndex",
1795 "PositivePostIndex_al_r3_r5_plus_r14_ASR_28_PostIndex",
1796 ARRAY_SIZE(kPositivePostIndex),
1797 kPositivePostIndex},
1798 {{al, r1, r3, plus, r0, ASR, 23, PostIndex},
1799 "al r1 r3 plus r0 ASR 23 PostIndex",
1800 "PositivePostIndex_al_r1_r3_plus_r0_ASR_23_PostIndex",
1801 ARRAY_SIZE(kPositivePostIndex),
1802 kPositivePostIndex},
1803 {{al, r9, r6, plus, r4, LSR, 8, PostIndex},
1804 "al r9 r6 plus r4 LSR 8 PostIndex",
1805 "PositivePostIndex_al_r9_r6_plus_r4_LSR_8_PostIndex",
1806 ARRAY_SIZE(kPositivePostIndex),
1807 kPositivePostIndex},
1808 {{al, r10, r14, plus, r0, LSR, 22, PostIndex},
1809 "al r10 r14 plus r0 LSR 22 PostIndex",
1810 "PositivePostIndex_al_r10_r14_plus_r0_LSR_22_PostIndex",
1811 ARRAY_SIZE(kPositivePostIndex),
1812 kPositivePostIndex},
1813 {{al, r10, r12, plus, r2, ASR, 7, PostIndex},
1814 "al r10 r12 plus r2 ASR 7 PostIndex",
1815 "PositivePostIndex_al_r10_r12_plus_r2_ASR_7_PostIndex",
1816 ARRAY_SIZE(kPositivePostIndex),
1817 kPositivePostIndex},
1818 {{al, r2, r1, plus, r8, LSR, 27, PostIndex},
1819 "al r2 r1 plus r8 LSR 27 PostIndex",
1820 "PositivePostIndex_al_r2_r1_plus_r8_LSR_27_PostIndex",
1821 ARRAY_SIZE(kPositivePostIndex),
1822 kPositivePostIndex},
1823 {{al, r14, r9, plus, r6, LSR, 23, PostIndex},
1824 "al r14 r9 plus r6 LSR 23 PostIndex",
1825 "PositivePostIndex_al_r14_r9_plus_r6_LSR_23_PostIndex",
1826 ARRAY_SIZE(kPositivePostIndex),
1827 kPositivePostIndex},
1828 {{al, r12, r10, plus, r7, LSR, 27, PostIndex},
1829 "al r12 r10 plus r7 LSR 27 PostIndex",
1830 "PositivePostIndex_al_r12_r10_plus_r7_LSR_27_PostIndex",
1831 ARRAY_SIZE(kPositivePostIndex),
1832 kPositivePostIndex},
1833 {{al, r10, r14, minus, r7, LSR, 30, PostIndex},
1834 "al r10 r14 minus r7 LSR 30 PostIndex",
1835 "NegativePostIndex_al_r10_r14_minus_r7_LSR_30_PostIndex",
1836 ARRAY_SIZE(kNegativePostIndex),
1837 kNegativePostIndex},
1838 {{al, r5, r9, minus, r7, LSR, 11, PostIndex},
1839 "al r5 r9 minus r7 LSR 11 PostIndex",
1840 "NegativePostIndex_al_r5_r9_minus_r7_LSR_11_PostIndex",
1841 ARRAY_SIZE(kNegativePostIndex),
1842 kNegativePostIndex},
1843 {{al, r4, r3, minus, r5, ASR, 1, PostIndex},
1844 "al r4 r3 minus r5 ASR 1 PostIndex",
1845 "NegativePostIndex_al_r4_r3_minus_r5_ASR_1_PostIndex",
1846 ARRAY_SIZE(kNegativePostIndex),
1847 kNegativePostIndex},
1848 {{al, r14, r7, minus, r4, LSR, 3, PostIndex},
1849 "al r14 r7 minus r4 LSR 3 PostIndex",
1850 "NegativePostIndex_al_r14_r7_minus_r4_LSR_3_PostIndex",
1851 ARRAY_SIZE(kNegativePostIndex),
1852 kNegativePostIndex},
1853 {{al, r11, r3, minus, r4, ASR, 4, PostIndex},
1854 "al r11 r3 minus r4 ASR 4 PostIndex",
1855 "NegativePostIndex_al_r11_r3_minus_r4_ASR_4_PostIndex",
1856 ARRAY_SIZE(kNegativePostIndex),
1857 kNegativePostIndex},
1858 {{al, r2, r6, minus, r3, ASR, 5, PostIndex},
1859 "al r2 r6 minus r3 ASR 5 PostIndex",
1860 "NegativePostIndex_al_r2_r6_minus_r3_ASR_5_PostIndex",
1861 ARRAY_SIZE(kNegativePostIndex),
1862 kNegativePostIndex},
1863 {{al, r14, r8, minus, r5, ASR, 31, PostIndex},
1864 "al r14 r8 minus r5 ASR 31 PostIndex",
1865 "NegativePostIndex_al_r14_r8_minus_r5_ASR_31_PostIndex",
1866 ARRAY_SIZE(kNegativePostIndex),
1867 kNegativePostIndex},
1868 {{al, r2, r12, minus, r5, ASR, 21, PostIndex},
1869 "al r2 r12 minus r5 ASR 21 PostIndex",
1870 "NegativePostIndex_al_r2_r12_minus_r5_ASR_21_PostIndex",
1871 ARRAY_SIZE(kNegativePostIndex),
1872 kNegativePostIndex},
1873 {{al, r8, r14, minus, r9, ASR, 12, PostIndex},
1874 "al r8 r14 minus r9 ASR 12 PostIndex",
1875 "NegativePostIndex_al_r8_r14_minus_r9_ASR_12_PostIndex",
1876 ARRAY_SIZE(kNegativePostIndex),
1877 kNegativePostIndex},
1878 {{al, r6, r3, minus, r4, ASR, 20, PostIndex},
1879 "al r6 r3 minus r4 ASR 20 PostIndex",
1880 "NegativePostIndex_al_r6_r3_minus_r4_ASR_20_PostIndex",
1881 ARRAY_SIZE(kNegativePostIndex),
1882 kNegativePostIndex},
1883 {{al, r11, r8, minus, r10, ASR, 28, PostIndex},
1884 "al r11 r8 minus r10 ASR 28 PostIndex",
1885 "NegativePostIndex_al_r11_r8_minus_r10_ASR_28_PostIndex",
1886 ARRAY_SIZE(kNegativePostIndex),
1887 kNegativePostIndex},
1888 {{al, r3, r10, minus, r12, ASR, 4, PostIndex},
1889 "al r3 r10 minus r12 ASR 4 PostIndex",
1890 "NegativePostIndex_al_r3_r10_minus_r12_ASR_4_PostIndex",
1891 ARRAY_SIZE(kNegativePostIndex),
1892 kNegativePostIndex},
1893 {{al, r5, r6, minus, r14, ASR, 23, PostIndex},
1894 "al r5 r6 minus r14 ASR 23 PostIndex",
1895 "NegativePostIndex_al_r5_r6_minus_r14_ASR_23_PostIndex",
1896 ARRAY_SIZE(kNegativePostIndex),
1897 kNegativePostIndex},
1898 {{al, r8, r1, minus, r14, LSR, 28, PostIndex},
1899 "al r8 r1 minus r14 LSR 28 PostIndex",
1900 "NegativePostIndex_al_r8_r1_minus_r14_LSR_28_PostIndex",
1901 ARRAY_SIZE(kNegativePostIndex),
1902 kNegativePostIndex},
1903 {{al, r1, r5, minus, r8, ASR, 22, PostIndex},
1904 "al r1 r5 minus r8 ASR 22 PostIndex",
1905 "NegativePostIndex_al_r1_r5_minus_r8_ASR_22_PostIndex",
1906 ARRAY_SIZE(kNegativePostIndex),
1907 kNegativePostIndex},
1908 {{al, r14, r0, minus, r10, LSR, 11, PostIndex},
1909 "al r14 r0 minus r10 LSR 11 PostIndex",
1910 "NegativePostIndex_al_r14_r0_minus_r10_LSR_11_PostIndex",
1911 ARRAY_SIZE(kNegativePostIndex),
1912 kNegativePostIndex},
1913 {{al, r5, r10, minus, r6, ASR, 25, PostIndex},
1914 "al r5 r10 minus r6 ASR 25 PostIndex",
1915 "NegativePostIndex_al_r5_r10_minus_r6_ASR_25_PostIndex",
1916 ARRAY_SIZE(kNegativePostIndex),
1917 kNegativePostIndex},
1918 {{al, r0, r6, minus, r3, ASR, 19, PostIndex},
1919 "al r0 r6 minus r3 ASR 19 PostIndex",
1920 "NegativePostIndex_al_r0_r6_minus_r3_ASR_19_PostIndex",
1921 ARRAY_SIZE(kNegativePostIndex),
1922 kNegativePostIndex},
1923 {{al, r8, r0, minus, r3, LSR, 23, PostIndex},
1924 "al r8 r0 minus r3 LSR 23 PostIndex",
1925 "NegativePostIndex_al_r8_r0_minus_r3_LSR_23_PostIndex",
1926 ARRAY_SIZE(kNegativePostIndex),
1927 kNegativePostIndex},
1928 {{al, r6, r0, minus, r11, LSR, 17, PostIndex},
1929 "al r6 r0 minus r11 LSR 17 PostIndex",
1930 "NegativePostIndex_al_r6_r0_minus_r11_LSR_17_PostIndex",
1931 ARRAY_SIZE(kNegativePostIndex),
1932 kNegativePostIndex},
1933 {{al, r6, r7, minus, r11, LSR, 9, PostIndex},
1934 "al r6 r7 minus r11 LSR 9 PostIndex",
1935 "NegativePostIndex_al_r6_r7_minus_r11_LSR_9_PostIndex",
1936 ARRAY_SIZE(kNegativePostIndex),
1937 kNegativePostIndex},
1938 {{al, r0, r4, minus, r5, LSR, 9, PostIndex},
1939 "al r0 r4 minus r5 LSR 9 PostIndex",
1940 "NegativePostIndex_al_r0_r4_minus_r5_LSR_9_PostIndex",
1941 ARRAY_SIZE(kNegativePostIndex),
1942 kNegativePostIndex},
1943 {{al, r11, r9, minus, r10, ASR, 18, PostIndex},
1944 "al r11 r9 minus r10 ASR 18 PostIndex",
1945 "NegativePostIndex_al_r11_r9_minus_r10_ASR_18_PostIndex",
1946 ARRAY_SIZE(kNegativePostIndex),
1947 kNegativePostIndex},
1948 {{al, r11, r12, minus, r14, LSR, 32, PostIndex},
1949 "al r11 r12 minus r14 LSR 32 PostIndex",
1950 "NegativePostIndex_al_r11_r12_minus_r14_LSR_32_PostIndex",
1951 ARRAY_SIZE(kNegativePostIndex),
1952 kNegativePostIndex},
1953 {{al, r3, r12, minus, r6, ASR, 7, PostIndex},
1954 "al r3 r12 minus r6 ASR 7 PostIndex",
1955 "NegativePostIndex_al_r3_r12_minus_r6_ASR_7_PostIndex",
1956 ARRAY_SIZE(kNegativePostIndex),
1957 kNegativePostIndex},
1958 {{al, r11, r8, minus, r2, ASR, 18, PostIndex},
1959 "al r11 r8 minus r2 ASR 18 PostIndex",
1960 "NegativePostIndex_al_r11_r8_minus_r2_ASR_18_PostIndex",
1961 ARRAY_SIZE(kNegativePostIndex),
1962 kNegativePostIndex},
1963 {{al, r7, r0, minus, r6, LSR, 24, PostIndex},
1964 "al r7 r0 minus r6 LSR 24 PostIndex",
1965 "NegativePostIndex_al_r7_r0_minus_r6_LSR_24_PostIndex",
1966 ARRAY_SIZE(kNegativePostIndex),
1967 kNegativePostIndex},
1968 {{al, r11, r8, minus, r0, ASR, 15, PostIndex},
1969 "al r11 r8 minus r0 ASR 15 PostIndex",
1970 "NegativePostIndex_al_r11_r8_minus_r0_ASR_15_PostIndex",
1971 ARRAY_SIZE(kNegativePostIndex),
1972 kNegativePostIndex},
1973 {{al, r1, r8, minus, r0, LSR, 22, PostIndex},
1974 "al r1 r8 minus r0 LSR 22 PostIndex",
1975 "NegativePostIndex_al_r1_r8_minus_r0_LSR_22_PostIndex",
1976 ARRAY_SIZE(kNegativePostIndex),
1977 kNegativePostIndex},
1978 {{al, r3, r2, minus, r10, ASR, 11, PostIndex},
1979 "al r3 r2 minus r10 ASR 11 PostIndex",
1980 "NegativePostIndex_al_r3_r2_minus_r10_ASR_11_PostIndex",
1981 ARRAY_SIZE(kNegativePostIndex),
1982 kNegativePostIndex},
1983 {{al, r0, r10, minus, r3, ASR, 1, PostIndex},
1984 "al r0 r10 minus r3 ASR 1 PostIndex",
1985 "NegativePostIndex_al_r0_r10_minus_r3_ASR_1_PostIndex",
1986 ARRAY_SIZE(kNegativePostIndex),
1987 kNegativePostIndex},
1988 {{al, r10, r14, minus, r8, LSR, 7, PostIndex},
1989 "al r10 r14 minus r8 LSR 7 PostIndex",
1990 "NegativePostIndex_al_r10_r14_minus_r8_LSR_7_PostIndex",
1991 ARRAY_SIZE(kNegativePostIndex),
1992 kNegativePostIndex},
1993 {{al, r4, r12, minus, r3, LSR, 3, PostIndex},
1994 "al r4 r12 minus r3 LSR 3 PostIndex",
1995 "NegativePostIndex_al_r4_r12_minus_r3_LSR_3_PostIndex",
1996 ARRAY_SIZE(kNegativePostIndex),
1997 kNegativePostIndex},
1998 {{al, r2, r4, minus, r7, ASR, 10, PostIndex},
1999 "al r2 r4 minus r7 ASR 10 PostIndex",
2000 "NegativePostIndex_al_r2_r4_minus_r7_ASR_10_PostIndex",
2001 ARRAY_SIZE(kNegativePostIndex),
2002 kNegativePostIndex},
2003 {{al, r4, r6, minus, r3, ASR, 32, PostIndex},
2004 "al r4 r6 minus r3 ASR 32 PostIndex",
2005 "NegativePostIndex_al_r4_r6_minus_r3_ASR_32_PostIndex",
2006 ARRAY_SIZE(kNegativePostIndex),
2007 kNegativePostIndex},
2008 {{al, r4, r0, minus, r14, ASR, 12, PostIndex},
2009 "al r4 r0 minus r14 ASR 12 PostIndex",
2010 "NegativePostIndex_al_r4_r0_minus_r14_ASR_12_PostIndex",
2011 ARRAY_SIZE(kNegativePostIndex),
2012 kNegativePostIndex},
2013 {{al, r2, r0, minus, r5, ASR, 28, PostIndex},
2014 "al r2 r0 minus r5 ASR 28 PostIndex",
2015 "NegativePostIndex_al_r2_r0_minus_r5_ASR_28_PostIndex",
2016 ARRAY_SIZE(kNegativePostIndex),
2017 kNegativePostIndex},
2018 {{al, r1, r11, minus, r8, LSR, 10, PostIndex},
2019 "al r1 r11 minus r8 LSR 10 PostIndex",
2020 "NegativePostIndex_al_r1_r11_minus_r8_LSR_10_PostIndex",
2021 ARRAY_SIZE(kNegativePostIndex),
2022 kNegativePostIndex},
2023 {{al, r5, r9, minus, r12, ASR, 24, PostIndex},
2024 "al r5 r9 minus r12 ASR 24 PostIndex",
2025 "NegativePostIndex_al_r5_r9_minus_r12_ASR_24_PostIndex",
2026 ARRAY_SIZE(kNegativePostIndex),
2027 kNegativePostIndex},
2028 {{al, r14, r11, minus, r9, ASR, 28, PostIndex},
2029 "al r14 r11 minus r9 ASR 28 PostIndex",
2030 "NegativePostIndex_al_r14_r11_minus_r9_ASR_28_PostIndex",
2031 ARRAY_SIZE(kNegativePostIndex),
2032 kNegativePostIndex},
2033 {{al, r1, r8, minus, r3, ASR, 7, PostIndex},
2034 "al r1 r8 minus r3 ASR 7 PostIndex",
2035 "NegativePostIndex_al_r1_r8_minus_r3_ASR_7_PostIndex",
2036 ARRAY_SIZE(kNegativePostIndex),
2037 kNegativePostIndex},
2038 {{al, r12, r3, minus, r4, ASR, 7, PostIndex},
2039 "al r12 r3 minus r4 ASR 7 PostIndex",
2040 "NegativePostIndex_al_r12_r3_minus_r4_ASR_7_PostIndex",
2041 ARRAY_SIZE(kNegativePostIndex),
2042 kNegativePostIndex},
2043 {{al, r10, r4, minus, r5, LSR, 22, PostIndex},
2044 "al r10 r4 minus r5 LSR 22 PostIndex",
2045 "NegativePostIndex_al_r10_r4_minus_r5_LSR_22_PostIndex",
2046 ARRAY_SIZE(kNegativePostIndex),
2047 kNegativePostIndex},
2048 {{al, r3, r14, minus, r6, LSR, 11, PostIndex},
2049 "al r3 r14 minus r6 LSR 11 PostIndex",
2050 "NegativePostIndex_al_r3_r14_minus_r6_LSR_11_PostIndex",
2051 ARRAY_SIZE(kNegativePostIndex),
2052 kNegativePostIndex},
2053 {{al, r5, r14, minus, r1, LSR, 31, PostIndex},
2054 "al r5 r14 minus r1 LSR 31 PostIndex",
2055 "NegativePostIndex_al_r5_r14_minus_r1_LSR_31_PostIndex",
2056 ARRAY_SIZE(kNegativePostIndex),
2057 kNegativePostIndex},
2058 {{al, r3, r0, minus, r9, LSR, 9, PostIndex},
2059 "al r3 r0 minus r9 LSR 9 PostIndex",
2060 "NegativePostIndex_al_r3_r0_minus_r9_LSR_9_PostIndex",
2061 ARRAY_SIZE(kNegativePostIndex),
2062 kNegativePostIndex},
2063 {{al, r0, r4, minus, r8, LSR, 28, PostIndex},
2064 "al r0 r4 minus r8 LSR 28 PostIndex",
2065 "NegativePostIndex_al_r0_r4_minus_r8_LSR_28_PostIndex",
2066 ARRAY_SIZE(kNegativePostIndex),
2067 kNegativePostIndex},
2068 {{al, r7, r9, minus, r12, ASR, 32, PostIndex},
2069 "al r7 r9 minus r12 ASR 32 PostIndex",
2070 "NegativePostIndex_al_r7_r9_minus_r12_ASR_32_PostIndex",
2071 ARRAY_SIZE(kNegativePostIndex),
2072 kNegativePostIndex},
2073 {{al, r4, r8, minus, r14, LSR, 20, PostIndex},
2074 "al r4 r8 minus r14 LSR 20 PostIndex",
2075 "NegativePostIndex_al_r4_r8_minus_r14_LSR_20_PostIndex",
2076 ARRAY_SIZE(kNegativePostIndex),
2077 kNegativePostIndex},
2078 {{al, r0, r11, minus, r1, ASR, 1, PostIndex},
2079 "al r0 r11 minus r1 ASR 1 PostIndex",
2080 "NegativePostIndex_al_r0_r11_minus_r1_ASR_1_PostIndex",
2081 ARRAY_SIZE(kNegativePostIndex),
2082 kNegativePostIndex},
2083 {{al, r6, r2, minus, r0, ASR, 6, PostIndex},
2084 "al r6 r2 minus r0 ASR 6 PostIndex",
2085 "NegativePostIndex_al_r6_r2_minus_r0_ASR_6_PostIndex",
2086 ARRAY_SIZE(kNegativePostIndex),
2087 kNegativePostIndex},
2088 {{al, r9, r2, minus, r7, LSR, 26, PostIndex},
2089 "al r9 r2 minus r7 LSR 26 PostIndex",
2090 "NegativePostIndex_al_r9_r2_minus_r7_LSR_26_PostIndex",
2091 ARRAY_SIZE(kNegativePostIndex),
2092 kNegativePostIndex},
2093 {{al, r6, r9, minus, r7, ASR, 25, PostIndex},
2094 "al r6 r9 minus r7 ASR 25 PostIndex",
2095 "NegativePostIndex_al_r6_r9_minus_r7_ASR_25_PostIndex",
2096 ARRAY_SIZE(kNegativePostIndex),
2097 kNegativePostIndex},
2098 {{al, r7, r8, minus, r12, ASR, 10, PostIndex},
2099 "al r7 r8 minus r12 ASR 10 PostIndex",
2100 "NegativePostIndex_al_r7_r8_minus_r12_ASR_10_PostIndex",
2101 ARRAY_SIZE(kNegativePostIndex),
2102 kNegativePostIndex},
2103 {{al, r4, r11, minus, r12, LSR, 4, PostIndex},
2104 "al r4 r11 minus r12 LSR 4 PostIndex",
2105 "NegativePostIndex_al_r4_r11_minus_r12_LSR_4_PostIndex",
2106 ARRAY_SIZE(kNegativePostIndex),
2107 kNegativePostIndex},
2108 {{al, r7, r4, minus, r11, LSR, 31, PostIndex},
2109 "al r7 r4 minus r11 LSR 31 PostIndex",
2110 "NegativePostIndex_al_r7_r4_minus_r11_LSR_31_PostIndex",
2111 ARRAY_SIZE(kNegativePostIndex),
2112 kNegativePostIndex},
2113 {{al, r2, r9, minus, r5, LSR, 14, PostIndex},
2114 "al r2 r9 minus r5 LSR 14 PostIndex",
2115 "NegativePostIndex_al_r2_r9_minus_r5_LSR_14_PostIndex",
2116 ARRAY_SIZE(kNegativePostIndex),
2117 kNegativePostIndex},
2118 {{al, r14, r3, minus, r0, LSR, 30, PostIndex},
2119 "al r14 r3 minus r0 LSR 30 PostIndex",
2120 "NegativePostIndex_al_r14_r3_minus_r0_LSR_30_PostIndex",
2121 ARRAY_SIZE(kNegativePostIndex),
2122 kNegativePostIndex},
2123 {{al, r12, r1, minus, r11, ASR, 1, PostIndex},
2124 "al r12 r1 minus r11 ASR 1 PostIndex",
2125 "NegativePostIndex_al_r12_r1_minus_r11_ASR_1_PostIndex",
2126 ARRAY_SIZE(kNegativePostIndex),
2127 kNegativePostIndex},
2128 {{al, r7, r4, minus, r5, ASR, 32, PostIndex},
2129 "al r7 r4 minus r5 ASR 32 PostIndex",
2130 "NegativePostIndex_al_r7_r4_minus_r5_ASR_32_PostIndex",
2131 ARRAY_SIZE(kNegativePostIndex),
2132 kNegativePostIndex},
2133 {{al, r3, r1, minus, r6, LSR, 32, PostIndex},
2134 "al r3 r1 minus r6 LSR 32 PostIndex",
2135 "NegativePostIndex_al_r3_r1_minus_r6_LSR_32_PostIndex",
2136 ARRAY_SIZE(kNegativePostIndex),
2137 kNegativePostIndex},
2138 {{al, r4, r7, minus, r6, LSR, 4, PostIndex},
2139 "al r4 r7 minus r6 LSR 4 PostIndex",
2140 "NegativePostIndex_al_r4_r7_minus_r6_LSR_4_PostIndex",
2141 ARRAY_SIZE(kNegativePostIndex),
2142 kNegativePostIndex},
2143 {{al, r10, r9, minus, r11, LSR, 3, PostIndex},
2144 "al r10 r9 minus r11 LSR 3 PostIndex",
2145 "NegativePostIndex_al_r10_r9_minus_r11_LSR_3_PostIndex",
2146 ARRAY_SIZE(kNegativePostIndex),
2147 kNegativePostIndex},
2148 {{al, r8, r2, minus, r1, ASR, 12, PostIndex},
2149 "al r8 r2 minus r1 ASR 12 PostIndex",
2150 "NegativePostIndex_al_r8_r2_minus_r1_ASR_12_PostIndex",
2151 ARRAY_SIZE(kNegativePostIndex),
2152 kNegativePostIndex},
2153 {{al, r6, r2, minus, r12, ASR, 30, PostIndex},
2154 "al r6 r2 minus r12 ASR 30 PostIndex",
2155 "NegativePostIndex_al_r6_r2_minus_r12_ASR_30_PostIndex",
2156 ARRAY_SIZE(kNegativePostIndex),
2157 kNegativePostIndex},
2158 {{al, r4, r5, minus, r9, LSR, 22, PostIndex},
2159 "al r4 r5 minus r9 LSR 22 PostIndex",
2160 "NegativePostIndex_al_r4_r5_minus_r9_LSR_22_PostIndex",
2161 ARRAY_SIZE(kNegativePostIndex),
2162 kNegativePostIndex},
2163 {{al, r8, r9, minus, r2, LSR, 3, PostIndex},
2164 "al r8 r9 minus r2 LSR 3 PostIndex",
2165 "NegativePostIndex_al_r8_r9_minus_r2_LSR_3_PostIndex",
2166 ARRAY_SIZE(kNegativePostIndex),
2167 kNegativePostIndex},
2168 {{al, r14, r1, minus, r9, ASR, 13, PostIndex},
2169 "al r14 r1 minus r9 ASR 13 PostIndex",
2170 "NegativePostIndex_al_r14_r1_minus_r9_ASR_13_PostIndex",
2171 ARRAY_SIZE(kNegativePostIndex),
2172 kNegativePostIndex},
2173 {{al, r12, r11, minus, r3, ASR, 23, PostIndex},
2174 "al r12 r11 minus r3 ASR 23 PostIndex",
2175 "NegativePostIndex_al_r12_r11_minus_r3_ASR_23_PostIndex",
2176 ARRAY_SIZE(kNegativePostIndex),
2177 kNegativePostIndex},
2178 {{al, r1, r12, minus, r11, LSR, 29, PostIndex},
2179 "al r1 r12 minus r11 LSR 29 PostIndex",
2180 "NegativePostIndex_al_r1_r12_minus_r11_LSR_29_PostIndex",
2181 ARRAY_SIZE(kNegativePostIndex),
2182 kNegativePostIndex},
2183 {{al, r3, r1, minus, r6, ASR, 15, PostIndex},
2184 "al r3 r1 minus r6 ASR 15 PostIndex",
2185 "NegativePostIndex_al_r3_r1_minus_r6_ASR_15_PostIndex",
2186 ARRAY_SIZE(kNegativePostIndex),
2187 kNegativePostIndex},
2188 {{al, r7, r0, minus, r6, ASR, 2, PostIndex},
2189 "al r7 r0 minus r6 ASR 2 PostIndex",
2190 "NegativePostIndex_al_r7_r0_minus_r6_ASR_2_PostIndex",
2191 ARRAY_SIZE(kNegativePostIndex),
2192 kNegativePostIndex},
2193 {{al, r11, r7, minus, r9, LSR, 14, PostIndex},
2194 "al r11 r7 minus r9 LSR 14 PostIndex",
2195 "NegativePostIndex_al_r11_r7_minus_r9_LSR_14_PostIndex",
2196 ARRAY_SIZE(kNegativePostIndex),
2197 kNegativePostIndex},
2198 {{al, r14, r10, minus, r4, ASR, 23, PostIndex},
2199 "al r14 r10 minus r4 ASR 23 PostIndex",
2200 "NegativePostIndex_al_r14_r10_minus_r4_ASR_23_PostIndex",
2201 ARRAY_SIZE(kNegativePostIndex),
2202 kNegativePostIndex},
2203 {{al, r10, r12, minus, r4, ASR, 5, PostIndex},
2204 "al r10 r12 minus r4 ASR 5 PostIndex",
2205 "NegativePostIndex_al_r10_r12_minus_r4_ASR_5_PostIndex",
2206 ARRAY_SIZE(kNegativePostIndex),
2207 kNegativePostIndex},
2208 {{al, r10, r11, minus, r3, LSR, 7, PostIndex},
2209 "al r10 r11 minus r3 LSR 7 PostIndex",
2210 "NegativePostIndex_al_r10_r11_minus_r3_LSR_7_PostIndex",
2211 ARRAY_SIZE(kNegativePostIndex),
2212 kNegativePostIndex},
2213 {{al, r14, r1, minus, r11, ASR, 6, PostIndex},
2214 "al r14 r1 minus r11 ASR 6 PostIndex",
2215 "NegativePostIndex_al_r14_r1_minus_r11_ASR_6_PostIndex",
2216 ARRAY_SIZE(kNegativePostIndex),
2217 kNegativePostIndex},
2218 {{al, r12, r7, minus, r4, ASR, 9, PostIndex},
2219 "al r12 r7 minus r4 ASR 9 PostIndex",
2220 "NegativePostIndex_al_r12_r7_minus_r4_ASR_9_PostIndex",
2221 ARRAY_SIZE(kNegativePostIndex),
2222 kNegativePostIndex},
2223 {{al, r6, r7, minus, r10, ASR, 21, PostIndex},
2224 "al r6 r7 minus r10 ASR 21 PostIndex",
2225 "NegativePostIndex_al_r6_r7_minus_r10_ASR_21_PostIndex",
2226 ARRAY_SIZE(kNegativePostIndex),
2227 kNegativePostIndex},
2228 {{al, r1, r5, minus, r0, ASR, 28, PostIndex},
2229 "al r1 r5 minus r0 ASR 28 PostIndex",
2230 "NegativePostIndex_al_r1_r5_minus_r0_ASR_28_PostIndex",
2231 ARRAY_SIZE(kNegativePostIndex),
2232 kNegativePostIndex},
2233 {{al, r2, r8, minus, r0, ASR, 10, PostIndex},
2234 "al r2 r8 minus r0 ASR 10 PostIndex",
2235 "NegativePostIndex_al_r2_r8_minus_r0_ASR_10_PostIndex",
2236 ARRAY_SIZE(kNegativePostIndex),
2237 kNegativePostIndex},
2238 {{al, r9, r0, minus, r3, ASR, 24, PostIndex},
2239 "al r9 r0 minus r3 ASR 24 PostIndex",
2240 "NegativePostIndex_al_r9_r0_minus_r3_ASR_24_PostIndex",
2241 ARRAY_SIZE(kNegativePostIndex),
2242 kNegativePostIndex},
2243 {{al, r5, r1, minus, r3, LSR, 14, PostIndex},
2244 "al r5 r1 minus r3 LSR 14 PostIndex",
2245 "NegativePostIndex_al_r5_r1_minus_r3_LSR_14_PostIndex",
2246 ARRAY_SIZE(kNegativePostIndex),
2247 kNegativePostIndex},
2248 {{al, r3, r14, minus, r1, ASR, 12, PostIndex},
2249 "al r3 r14 minus r1 ASR 12 PostIndex",
2250 "NegativePostIndex_al_r3_r14_minus_r1_ASR_12_PostIndex",
2251 ARRAY_SIZE(kNegativePostIndex),
2252 kNegativePostIndex},
2253 {{al, r4, r2, minus, r1, LSR, 5, PostIndex},
2254 "al r4 r2 minus r1 LSR 5 PostIndex",
2255 "NegativePostIndex_al_r4_r2_minus_r1_LSR_5_PostIndex",
2256 ARRAY_SIZE(kNegativePostIndex),
2257 kNegativePostIndex},
2258 {{al, r12, r6, minus, r4, LSR, 16, PostIndex},
2259 "al r12 r6 minus r4 LSR 16 PostIndex",
2260 "NegativePostIndex_al_r12_r6_minus_r4_LSR_16_PostIndex",
2261 ARRAY_SIZE(kNegativePostIndex),
2262 kNegativePostIndex},
2263 {{al, r9, r12, minus, r3, ASR, 24, PostIndex},
2264 "al r9 r12 minus r3 ASR 24 PostIndex",
2265 "NegativePostIndex_al_r9_r12_minus_r3_ASR_24_PostIndex",
2266 ARRAY_SIZE(kNegativePostIndex),
2267 kNegativePostIndex},
2268 {{al, r5, r10, minus, r7, ASR, 3, PostIndex},
2269 "al r5 r10 minus r7 ASR 3 PostIndex",
2270 "NegativePostIndex_al_r5_r10_minus_r7_ASR_3_PostIndex",
2271 ARRAY_SIZE(kNegativePostIndex),
2272 kNegativePostIndex},
2273 {{al, r3, r7, minus, r14, LSR, 3, PostIndex},
2274 "al r3 r7 minus r14 LSR 3 PostIndex",
2275 "NegativePostIndex_al_r3_r7_minus_r14_LSR_3_PostIndex",
2276 ARRAY_SIZE(kNegativePostIndex),
2277 kNegativePostIndex},
2278 {{al, r7, r14, minus, r5, LSR, 18, PostIndex},
2279 "al r7 r14 minus r5 LSR 18 PostIndex",
2280 "NegativePostIndex_al_r7_r14_minus_r5_LSR_18_PostIndex",
2281 ARRAY_SIZE(kNegativePostIndex),
2282 kNegativePostIndex},
2283 {{al, r6, r12, minus, r14, ASR, 2, PostIndex},
2284 "al r6 r12 minus r14 ASR 2 PostIndex",
2285 "NegativePostIndex_al_r6_r12_minus_r14_ASR_2_PostIndex",
2286 ARRAY_SIZE(kNegativePostIndex),
2287 kNegativePostIndex},
2288 {{al, r7, r9, minus, r2, LSR, 28, PostIndex},
2289 "al r7 r9 minus r2 LSR 28 PostIndex",
2290 "NegativePostIndex_al_r7_r9_minus_r2_LSR_28_PostIndex",
2291 ARRAY_SIZE(kNegativePostIndex),
2292 kNegativePostIndex},
2293 {{al, r8, r0, minus, r9, ASR, 25, PostIndex},
2294 "al r8 r0 minus r9 ASR 25 PostIndex",
2295 "NegativePostIndex_al_r8_r0_minus_r9_ASR_25_PostIndex",
2296 ARRAY_SIZE(kNegativePostIndex),
2297 kNegativePostIndex},
2298 {{al, r2, r9, minus, r4, ASR, 15, PostIndex},
2299 "al r2 r9 minus r4 ASR 15 PostIndex",
2300 "NegativePostIndex_al_r2_r9_minus_r4_ASR_15_PostIndex",
2301 ARRAY_SIZE(kNegativePostIndex),
2302 kNegativePostIndex},
2303 {{al, r11, r7, minus, r2, ASR, 31, PostIndex},
2304 "al r11 r7 minus r2 ASR 31 PostIndex",
2305 "NegativePostIndex_al_r11_r7_minus_r2_ASR_31_PostIndex",
2306 ARRAY_SIZE(kNegativePostIndex),
2307 kNegativePostIndex},
2308 {{al, r7, r4, minus, r2, ASR, 28, PostIndex},
2309 "al r7 r4 minus r2 ASR 28 PostIndex",
2310 "NegativePostIndex_al_r7_r4_minus_r2_ASR_28_PostIndex",
2311 ARRAY_SIZE(kNegativePostIndex),
2312 kNegativePostIndex},
2313 {{al, r7, r1, minus, r4, LSR, 21, PostIndex},
2314 "al r7 r1 minus r4 LSR 21 PostIndex",
2315 "NegativePostIndex_al_r7_r1_minus_r4_LSR_21_PostIndex",
2316 ARRAY_SIZE(kNegativePostIndex),
2317 kNegativePostIndex},
2318 {{al, r6, r0, minus, r11, ASR, 5, PostIndex},
2319 "al r6 r0 minus r11 ASR 5 PostIndex",
2320 "NegativePostIndex_al_r6_r0_minus_r11_ASR_5_PostIndex",
2321 ARRAY_SIZE(kNegativePostIndex),
2322 kNegativePostIndex},
2323 {{al, r7, r8, minus, r14, ASR, 7, PostIndex},
2324 "al r7 r8 minus r14 ASR 7 PostIndex",
2325 "NegativePostIndex_al_r7_r8_minus_r14_ASR_7_PostIndex",
2326 ARRAY_SIZE(kNegativePostIndex),
2327 kNegativePostIndex},
2328 {{al, r1, r12, minus, r6, LSR, 8, PostIndex},
2329 "al r1 r12 minus r6 LSR 8 PostIndex",
2330 "NegativePostIndex_al_r1_r12_minus_r6_LSR_8_PostIndex",
2331 ARRAY_SIZE(kNegativePostIndex),
2332 kNegativePostIndex},
2333 {{al, r4, r7, plus, r5, LSR, 28, PreIndex},
2334 "al r4 r7 plus r5 LSR 28 PreIndex",
2335 "PositivePreIndex_al_r4_r7_plus_r5_LSR_28_PreIndex",
2336 ARRAY_SIZE(kPositivePreIndex),
2337 kPositivePreIndex},
2338 {{al, r1, r9, plus, r0, LSR, 17, PreIndex},
2339 "al r1 r9 plus r0 LSR 17 PreIndex",
2340 "PositivePreIndex_al_r1_r9_plus_r0_LSR_17_PreIndex",
2341 ARRAY_SIZE(kPositivePreIndex),
2342 kPositivePreIndex},
2343 {{al, r12, r9, plus, r7, ASR, 17, PreIndex},
2344 "al r12 r9 plus r7 ASR 17 PreIndex",
2345 "PositivePreIndex_al_r12_r9_plus_r7_ASR_17_PreIndex",
2346 ARRAY_SIZE(kPositivePreIndex),
2347 kPositivePreIndex},
2348 {{al, r3, r9, plus, r6, LSR, 2, PreIndex},
2349 "al r3 r9 plus r6 LSR 2 PreIndex",
2350 "PositivePreIndex_al_r3_r9_plus_r6_LSR_2_PreIndex",
2351 ARRAY_SIZE(kPositivePreIndex),
2352 kPositivePreIndex},
2353 {{al, r10, r0, plus, r11, ASR, 9, PreIndex},
2354 "al r10 r0 plus r11 ASR 9 PreIndex",
2355 "PositivePreIndex_al_r10_r0_plus_r11_ASR_9_PreIndex",
2356 ARRAY_SIZE(kPositivePreIndex),
2357 kPositivePreIndex},
2358 {{al, r1, r6, plus, r12, ASR, 32, PreIndex},
2359 "al r1 r6 plus r12 ASR 32 PreIndex",
2360 "PositivePreIndex_al_r1_r6_plus_r12_ASR_32_PreIndex",
2361 ARRAY_SIZE(kPositivePreIndex),
2362 kPositivePreIndex},
2363 {{al, r5, r2, plus, r14, ASR, 15, PreIndex},
2364 "al r5 r2 plus r14 ASR 15 PreIndex",
2365 "PositivePreIndex_al_r5_r2_plus_r14_ASR_15_PreIndex",
2366 ARRAY_SIZE(kPositivePreIndex),
2367 kPositivePreIndex},
2368 {{al, r4, r3, plus, r7, LSR, 12, PreIndex},
2369 "al r4 r3 plus r7 LSR 12 PreIndex",
2370 "PositivePreIndex_al_r4_r3_plus_r7_LSR_12_PreIndex",
2371 ARRAY_SIZE(kPositivePreIndex),
2372 kPositivePreIndex},
2373 {{al, r0, r11, plus, r7, LSR, 3, PreIndex},
2374 "al r0 r11 plus r7 LSR 3 PreIndex",
2375 "PositivePreIndex_al_r0_r11_plus_r7_LSR_3_PreIndex",
2376 ARRAY_SIZE(kPositivePreIndex),
2377 kPositivePreIndex},
2378 {{al, r2, r12, plus, r8, ASR, 31, PreIndex},
2379 "al r2 r12 plus r8 ASR 31 PreIndex",
2380 "PositivePreIndex_al_r2_r12_plus_r8_ASR_31_PreIndex",
2381 ARRAY_SIZE(kPositivePreIndex),
2382 kPositivePreIndex},
2383 {{al, r8, r2, plus, r9, ASR, 27, PreIndex},
2384 "al r8 r2 plus r9 ASR 27 PreIndex",
2385 "PositivePreIndex_al_r8_r2_plus_r9_ASR_27_PreIndex",
2386 ARRAY_SIZE(kPositivePreIndex),
2387 kPositivePreIndex},
2388 {{al, r9, r4, plus, r7, ASR, 2, PreIndex},
2389 "al r9 r4 plus r7 ASR 2 PreIndex",
2390 "PositivePreIndex_al_r9_r4_plus_r7_ASR_2_PreIndex",
2391 ARRAY_SIZE(kPositivePreIndex),
2392 kPositivePreIndex},
2393 {{al, r4, r3, plus, r1, ASR, 19, PreIndex},
2394 "al r4 r3 plus r1 ASR 19 PreIndex",
2395 "PositivePreIndex_al_r4_r3_plus_r1_ASR_19_PreIndex",
2396 ARRAY_SIZE(kPositivePreIndex),
2397 kPositivePreIndex},
2398 {{al, r2, r9, plus, r11, ASR, 4, PreIndex},
2399 "al r2 r9 plus r11 ASR 4 PreIndex",
2400 "PositivePreIndex_al_r2_r9_plus_r11_ASR_4_PreIndex",
2401 ARRAY_SIZE(kPositivePreIndex),
2402 kPositivePreIndex},
2403 {{al, r0, r9, plus, r11, ASR, 22, PreIndex},
2404 "al r0 r9 plus r11 ASR 22 PreIndex",
2405 "PositivePreIndex_al_r0_r9_plus_r11_ASR_22_PreIndex",
2406 ARRAY_SIZE(kPositivePreIndex),
2407 kPositivePreIndex},
2408 {{al, r11, r6, plus, r4, LSR, 29, PreIndex},
2409 "al r11 r6 plus r4 LSR 29 PreIndex",
2410 "PositivePreIndex_al_r11_r6_plus_r4_LSR_29_PreIndex",
2411 ARRAY_SIZE(kPositivePreIndex),
2412 kPositivePreIndex},
2413 {{al, r10, r1, plus, r5, ASR, 2, PreIndex},
2414 "al r10 r1 plus r5 ASR 2 PreIndex",
2415 "PositivePreIndex_al_r10_r1_plus_r5_ASR_2_PreIndex",
2416 ARRAY_SIZE(kPositivePreIndex),
2417 kPositivePreIndex},
2418 {{al, r10, r12, plus, r14, ASR, 9, PreIndex},
2419 "al r10 r12 plus r14 ASR 9 PreIndex",
2420 "PositivePreIndex_al_r10_r12_plus_r14_ASR_9_PreIndex",
2421 ARRAY_SIZE(kPositivePreIndex),
2422 kPositivePreIndex},
2423 {{al, r11, r8, plus, r14, ASR, 24, PreIndex},
2424 "al r11 r8 plus r14 ASR 24 PreIndex",
2425 "PositivePreIndex_al_r11_r8_plus_r14_ASR_24_PreIndex",
2426 ARRAY_SIZE(kPositivePreIndex),
2427 kPositivePreIndex},
2428 {{al, r12, r14, plus, r8, ASR, 14, PreIndex},
2429 "al r12 r14 plus r8 ASR 14 PreIndex",
2430 "PositivePreIndex_al_r12_r14_plus_r8_ASR_14_PreIndex",
2431 ARRAY_SIZE(kPositivePreIndex),
2432 kPositivePreIndex},
2433 {{al, r14, r2, plus, r1, ASR, 13, PreIndex},
2434 "al r14 r2 plus r1 ASR 13 PreIndex",
2435 "PositivePreIndex_al_r14_r2_plus_r1_ASR_13_PreIndex",
2436 ARRAY_SIZE(kPositivePreIndex),
2437 kPositivePreIndex},
2438 {{al, r11, r10, plus, r6, ASR, 26, PreIndex},
2439 "al r11 r10 plus r6 ASR 26 PreIndex",
2440 "PositivePreIndex_al_r11_r10_plus_r6_ASR_26_PreIndex",
2441 ARRAY_SIZE(kPositivePreIndex),
2442 kPositivePreIndex},
2443 {{al, r14, r10, plus, r12, LSR, 11, PreIndex},
2444 "al r14 r10 plus r12 LSR 11 PreIndex",
2445 "PositivePreIndex_al_r14_r10_plus_r12_LSR_11_PreIndex",
2446 ARRAY_SIZE(kPositivePreIndex),
2447 kPositivePreIndex},
2448 {{al, r6, r3, plus, r4, LSR, 19, PreIndex},
2449 "al r6 r3 plus r4 LSR 19 PreIndex",
2450 "PositivePreIndex_al_r6_r3_plus_r4_LSR_19_PreIndex",
2451 ARRAY_SIZE(kPositivePreIndex),
2452 kPositivePreIndex},
2453 {{al, r1, r12, plus, r6, ASR, 11, PreIndex},
2454 "al r1 r12 plus r6 ASR 11 PreIndex",
2455 "PositivePreIndex_al_r1_r12_plus_r6_ASR_11_PreIndex",
2456 ARRAY_SIZE(kPositivePreIndex),
2457 kPositivePreIndex},
2458 {{al, r8, r14, plus, r0, ASR, 14, PreIndex},
2459 "al r8 r14 plus r0 ASR 14 PreIndex",
2460 "PositivePreIndex_al_r8_r14_plus_r0_ASR_14_PreIndex",
2461 ARRAY_SIZE(kPositivePreIndex),
2462 kPositivePreIndex},
2463 {{al, r6, r4, plus, r12, ASR, 28, PreIndex},
2464 "al r6 r4 plus r12 ASR 28 PreIndex",
2465 "PositivePreIndex_al_r6_r4_plus_r12_ASR_28_PreIndex",
2466 ARRAY_SIZE(kPositivePreIndex),
2467 kPositivePreIndex},
2468 {{al, r7, r11, plus, r10, LSR, 6, PreIndex},
2469 "al r7 r11 plus r10 LSR 6 PreIndex",
2470 "PositivePreIndex_al_r7_r11_plus_r10_LSR_6_PreIndex",
2471 ARRAY_SIZE(kPositivePreIndex),
2472 kPositivePreIndex},
2473 {{al, r12, r8, plus, r2, LSR, 2, PreIndex},
2474 "al r12 r8 plus r2 LSR 2 PreIndex",
2475 "PositivePreIndex_al_r12_r8_plus_r2_LSR_2_PreIndex",
2476 ARRAY_SIZE(kPositivePreIndex),
2477 kPositivePreIndex},
2478 {{al, r1, r5, plus, r8, LSR, 23, PreIndex},
2479 "al r1 r5 plus r8 LSR 23 PreIndex",
2480 "PositivePreIndex_al_r1_r5_plus_r8_LSR_23_PreIndex",
2481 ARRAY_SIZE(kPositivePreIndex),
2482 kPositivePreIndex},
2483 {{al, r11, r14, plus, r8, ASR, 11, PreIndex},
2484 "al r11 r14 plus r8 ASR 11 PreIndex",
2485 "PositivePreIndex_al_r11_r14_plus_r8_ASR_11_PreIndex",
2486 ARRAY_SIZE(kPositivePreIndex),
2487 kPositivePreIndex},
2488 {{al, r4, r14, plus, r8, ASR, 20, PreIndex},
2489 "al r4 r14 plus r8 ASR 20 PreIndex",
2490 "PositivePreIndex_al_r4_r14_plus_r8_ASR_20_PreIndex",
2491 ARRAY_SIZE(kPositivePreIndex),
2492 kPositivePreIndex},
2493 {{al, r6, r11, plus, r1, ASR, 24, PreIndex},
2494 "al r6 r11 plus r1 ASR 24 PreIndex",
2495 "PositivePreIndex_al_r6_r11_plus_r1_ASR_24_PreIndex",
2496 ARRAY_SIZE(kPositivePreIndex),
2497 kPositivePreIndex},
2498 {{al, r0, r3, plus, r4, ASR, 19, PreIndex},
2499 "al r0 r3 plus r4 ASR 19 PreIndex",
2500 "PositivePreIndex_al_r0_r3_plus_r4_ASR_19_PreIndex",
2501 ARRAY_SIZE(kPositivePreIndex),
2502 kPositivePreIndex},
2503 {{al, r2, r10, plus, r0, ASR, 25, PreIndex},
2504 "al r2 r10 plus r0 ASR 25 PreIndex",
2505 "PositivePreIndex_al_r2_r10_plus_r0_ASR_25_PreIndex",
2506 ARRAY_SIZE(kPositivePreIndex),
2507 kPositivePreIndex},
2508 {{al, r3, r2, plus, r5, LSR, 18, PreIndex},
2509 "al r3 r2 plus r5 LSR 18 PreIndex",
2510 "PositivePreIndex_al_r3_r2_plus_r5_LSR_18_PreIndex",
2511 ARRAY_SIZE(kPositivePreIndex),
2512 kPositivePreIndex},
2513 {{al, r6, r8, plus, r10, ASR, 3, PreIndex},
2514 "al r6 r8 plus r10 ASR 3 PreIndex",
2515 "PositivePreIndex_al_r6_r8_plus_r10_ASR_3_PreIndex",
2516 ARRAY_SIZE(kPositivePreIndex),
2517 kPositivePreIndex},
2518 {{al, r4, r10, plus, r1, LSR, 19, PreIndex},
2519 "al r4 r10 plus r1 LSR 19 PreIndex",
2520 "PositivePreIndex_al_r4_r10_plus_r1_LSR_19_PreIndex",
2521 ARRAY_SIZE(kPositivePreIndex),
2522 kPositivePreIndex},
2523 {{al, r4, r3, plus, r5, ASR, 13, PreIndex},
2524 "al r4 r3 plus r5 ASR 13 PreIndex",
2525 "PositivePreIndex_al_r4_r3_plus_r5_ASR_13_PreIndex",
2526 ARRAY_SIZE(kPositivePreIndex),
2527 kPositivePreIndex},
2528 {{al, r5, r0, plus, r4, ASR, 3, PreIndex},
2529 "al r5 r0 plus r4 ASR 3 PreIndex",
2530 "PositivePreIndex_al_r5_r0_plus_r4_ASR_3_PreIndex",
2531 ARRAY_SIZE(kPositivePreIndex),
2532 kPositivePreIndex},
2533 {{al, r9, r2, plus, r7, ASR, 16, PreIndex},
2534 "al r9 r2 plus r7 ASR 16 PreIndex",
2535 "PositivePreIndex_al_r9_r2_plus_r7_ASR_16_PreIndex",
2536 ARRAY_SIZE(kPositivePreIndex),
2537 kPositivePreIndex},
2538 {{al, r4, r1, plus, r9, ASR, 21, PreIndex},
2539 "al r4 r1 plus r9 ASR 21 PreIndex",
2540 "PositivePreIndex_al_r4_r1_plus_r9_ASR_21_PreIndex",
2541 ARRAY_SIZE(kPositivePreIndex),
2542 kPositivePreIndex},
2543 {{al, r5, r12, plus, r2, LSR, 9, PreIndex},
2544 "al r5 r12 plus r2 LSR 9 PreIndex",
2545 "PositivePreIndex_al_r5_r12_plus_r2_LSR_9_PreIndex",
2546 ARRAY_SIZE(kPositivePreIndex),
2547 kPositivePreIndex},
2548 {{al, r10, r7, plus, r11, LSR, 9, PreIndex},
2549 "al r10 r7 plus r11 LSR 9 PreIndex",
2550 "PositivePreIndex_al_r10_r7_plus_r11_LSR_9_PreIndex",
2551 ARRAY_SIZE(kPositivePreIndex),
2552 kPositivePreIndex},
2553 {{al, r1, r9, plus, r7, LSR, 32, PreIndex},
2554 "al r1 r9 plus r7 LSR 32 PreIndex",
2555 "PositivePreIndex_al_r1_r9_plus_r7_LSR_32_PreIndex",
2556 ARRAY_SIZE(kPositivePreIndex),
2557 kPositivePreIndex},
2558 {{al, r6, r7, plus, r4, LSR, 23, PreIndex},
2559 "al r6 r7 plus r4 LSR 23 PreIndex",
2560 "PositivePreIndex_al_r6_r7_plus_r4_LSR_23_PreIndex",
2561 ARRAY_SIZE(kPositivePreIndex),
2562 kPositivePreIndex},
2563 {{al, r4, r14, plus, r11, LSR, 17, PreIndex},
2564 "al r4 r14 plus r11 LSR 17 PreIndex",
2565 "PositivePreIndex_al_r4_r14_plus_r11_LSR_17_PreIndex",
2566 ARRAY_SIZE(kPositivePreIndex),
2567 kPositivePreIndex},
2568 {{al, r6, r9, plus, r14, ASR, 17, PreIndex},
2569 "al r6 r9 plus r14 ASR 17 PreIndex",
2570 "PositivePreIndex_al_r6_r9_plus_r14_ASR_17_PreIndex",
2571 ARRAY_SIZE(kPositivePreIndex),
2572 kPositivePreIndex},
2573 {{al, r10, r1, plus, r5, ASR, 8, PreIndex},
2574 "al r10 r1 plus r5 ASR 8 PreIndex",
2575 "PositivePreIndex_al_r10_r1_plus_r5_ASR_8_PreIndex",
2576 ARRAY_SIZE(kPositivePreIndex),
2577 kPositivePreIndex},
2578 {{al, r12, r3, plus, r4, ASR, 2, PreIndex},
2579 "al r12 r3 plus r4 ASR 2 PreIndex",
2580 "PositivePreIndex_al_r12_r3_plus_r4_ASR_2_PreIndex",
2581 ARRAY_SIZE(kPositivePreIndex),
2582 kPositivePreIndex},
2583 {{al, r14, r0, plus, r11, LSR, 8, PreIndex},
2584 "al r14 r0 plus r11 LSR 8 PreIndex",
2585 "PositivePreIndex_al_r14_r0_plus_r11_LSR_8_PreIndex",
2586 ARRAY_SIZE(kPositivePreIndex),
2587 kPositivePreIndex},
2588 {{al, r5, r6, plus, r2, ASR, 15, PreIndex},
2589 "al r5 r6 plus r2 ASR 15 PreIndex",
2590 "PositivePreIndex_al_r5_r6_plus_r2_ASR_15_PreIndex",
2591 ARRAY_SIZE(kPositivePreIndex),
2592 kPositivePreIndex},
2593 {{al, r1, r4, plus, r3, ASR, 4, PreIndex},
2594 "al r1 r4 plus r3 ASR 4 PreIndex",
2595 "PositivePreIndex_al_r1_r4_plus_r3_ASR_4_PreIndex",
2596 ARRAY_SIZE(kPositivePreIndex),
2597 kPositivePreIndex},
2598 {{al, r8, r4, plus, r9, LSR, 22, PreIndex},
2599 "al r8 r4 plus r9 LSR 22 PreIndex",
2600 "PositivePreIndex_al_r8_r4_plus_r9_LSR_22_PreIndex",
2601 ARRAY_SIZE(kPositivePreIndex),
2602 kPositivePreIndex},
2603 {{al, r0, r2, plus, r6, LSR, 5, PreIndex},
2604 "al r0 r2 plus r6 LSR 5 PreIndex",
2605 "PositivePreIndex_al_r0_r2_plus_r6_LSR_5_PreIndex",
2606 ARRAY_SIZE(kPositivePreIndex),
2607 kPositivePreIndex},
2608 {{al, r4, r12, plus, r14, ASR, 21, PreIndex},
2609 "al r4 r12 plus r14 ASR 21 PreIndex",
2610 "PositivePreIndex_al_r4_r12_plus_r14_ASR_21_PreIndex",
2611 ARRAY_SIZE(kPositivePreIndex),
2612 kPositivePreIndex},
2613 {{al, r4, r3, plus, r5, LSR, 1, PreIndex},
2614 "al r4 r3 plus r5 LSR 1 PreIndex",
2615 "PositivePreIndex_al_r4_r3_plus_r5_LSR_1_PreIndex",
2616 ARRAY_SIZE(kPositivePreIndex),
2617 kPositivePreIndex},
2618 {{al, r7, r3, plus, r4, ASR, 15, PreIndex},
2619 "al r7 r3 plus r4 ASR 15 PreIndex",
2620 "PositivePreIndex_al_r7_r3_plus_r4_ASR_15_PreIndex",
2621 ARRAY_SIZE(kPositivePreIndex),
2622 kPositivePreIndex},
2623 {{al, r3, r8, plus, r11, ASR, 5, PreIndex},
2624 "al r3 r8 plus r11 ASR 5 PreIndex",
2625 "PositivePreIndex_al_r3_r8_plus_r11_ASR_5_PreIndex",
2626 ARRAY_SIZE(kPositivePreIndex),
2627 kPositivePreIndex},
2628 {{al, r11, r6, plus, r1, LSR, 17, PreIndex},
2629 "al r11 r6 plus r1 LSR 17 PreIndex",
2630 "PositivePreIndex_al_r11_r6_plus_r1_LSR_17_PreIndex",
2631 ARRAY_SIZE(kPositivePreIndex),
2632 kPositivePreIndex},
2633 {{al, r12, r4, plus, r0, LSR, 1, PreIndex},
2634 "al r12 r4 plus r0 LSR 1 PreIndex",
2635 "PositivePreIndex_al_r12_r4_plus_r0_LSR_1_PreIndex",
2636 ARRAY_SIZE(kPositivePreIndex),
2637 kPositivePreIndex},
2638 {{al, r1, r4, plus, r5, ASR, 12, PreIndex},
2639 "al r1 r4 plus r5 ASR 12 PreIndex",
2640 "PositivePreIndex_al_r1_r4_plus_r5_ASR_12_PreIndex",
2641 ARRAY_SIZE(kPositivePreIndex),
2642 kPositivePreIndex},
2643 {{al, r14, r0, plus, r2, LSR, 5, PreIndex},
2644 "al r14 r0 plus r2 LSR 5 PreIndex",
2645 "PositivePreIndex_al_r14_r0_plus_r2_LSR_5_PreIndex",
2646 ARRAY_SIZE(kPositivePreIndex),
2647 kPositivePreIndex},
2648 {{al, r14, r8, plus, r7, LSR, 10, PreIndex},
2649 "al r14 r8 plus r7 LSR 10 PreIndex",
2650 "PositivePreIndex_al_r14_r8_plus_r7_LSR_10_PreIndex",
2651 ARRAY_SIZE(kPositivePreIndex),
2652 kPositivePreIndex},
2653 {{al, r8, r6, plus, r4, ASR, 21, PreIndex},
2654 "al r8 r6 plus r4 ASR 21 PreIndex",
2655 "PositivePreIndex_al_r8_r6_plus_r4_ASR_21_PreIndex",
2656 ARRAY_SIZE(kPositivePreIndex),
2657 kPositivePreIndex},
2658 {{al, r4, r7, plus, r11, ASR, 8, PreIndex},
2659 "al r4 r7 plus r11 ASR 8 PreIndex",
2660 "PositivePreIndex_al_r4_r7_plus_r11_ASR_8_PreIndex",
2661 ARRAY_SIZE(kPositivePreIndex),
2662 kPositivePreIndex},
2663 {{al, r3, r0, plus, r10, LSR, 30, PreIndex},
2664 "al r3 r0 plus r10 LSR 30 PreIndex",
2665 "PositivePreIndex_al_r3_r0_plus_r10_LSR_30_PreIndex",
2666 ARRAY_SIZE(kPositivePreIndex),
2667 kPositivePreIndex},
2668 {{al, r7, r8, plus, r5, ASR, 7, PreIndex},
2669 "al r7 r8 plus r5 ASR 7 PreIndex",
2670 "PositivePreIndex_al_r7_r8_plus_r5_ASR_7_PreIndex",
2671 ARRAY_SIZE(kPositivePreIndex),
2672 kPositivePreIndex},
2673 {{al, r1, r14, plus, r10, LSR, 20, PreIndex},
2674 "al r1 r14 plus r10 LSR 20 PreIndex",
2675 "PositivePreIndex_al_r1_r14_plus_r10_LSR_20_PreIndex",
2676 ARRAY_SIZE(kPositivePreIndex),
2677 kPositivePreIndex},
2678 {{al, r7, r4, plus, r6, ASR, 24, PreIndex},
2679 "al r7 r4 plus r6 ASR 24 PreIndex",
2680 "PositivePreIndex_al_r7_r4_plus_r6_ASR_24_PreIndex",
2681 ARRAY_SIZE(kPositivePreIndex),
2682 kPositivePreIndex},
2683 {{al, r2, r0, plus, r11, ASR, 9, PreIndex},
2684 "al r2 r0 plus r11 ASR 9 PreIndex",
2685 "PositivePreIndex_al_r2_r0_plus_r11_ASR_9_PreIndex",
2686 ARRAY_SIZE(kPositivePreIndex),
2687 kPositivePreIndex},
2688 {{al, r4, r5, plus, r6, ASR, 24, PreIndex},
2689 "al r4 r5 plus r6 ASR 24 PreIndex",
2690 "PositivePreIndex_al_r4_r5_plus_r6_ASR_24_PreIndex",
2691 ARRAY_SIZE(kPositivePreIndex),
2692 kPositivePreIndex},
2693 {{al, r9, r0, plus, r3, ASR, 26, PreIndex},
2694 "al r9 r0 plus r3 ASR 26 PreIndex",
2695 "PositivePreIndex_al_r9_r0_plus_r3_ASR_26_PreIndex",
2696 ARRAY_SIZE(kPositivePreIndex),
2697 kPositivePreIndex},
2698 {{al, r3, r8, plus, r12, ASR, 21, PreIndex},
2699 "al r3 r8 plus r12 ASR 21 PreIndex",
2700 "PositivePreIndex_al_r3_r8_plus_r12_ASR_21_PreIndex",
2701 ARRAY_SIZE(kPositivePreIndex),
2702 kPositivePreIndex},
2703 {{al, r3, r1, plus, r0, ASR, 22, PreIndex},
2704 "al r3 r1 plus r0 ASR 22 PreIndex",
2705 "PositivePreIndex_al_r3_r1_plus_r0_ASR_22_PreIndex",
2706 ARRAY_SIZE(kPositivePreIndex),
2707 kPositivePreIndex},
2708 {{al, r9, r8, plus, r5, ASR, 25, PreIndex},
2709 "al r9 r8 plus r5 ASR 25 PreIndex",
2710 "PositivePreIndex_al_r9_r8_plus_r5_ASR_25_PreIndex",
2711 ARRAY_SIZE(kPositivePreIndex),
2712 kPositivePreIndex},
2713 {{al, r12, r10, plus, r9, LSR, 2, PreIndex},
2714 "al r12 r10 plus r9 LSR 2 PreIndex",
2715 "PositivePreIndex_al_r12_r10_plus_r9_LSR_2_PreIndex",
2716 ARRAY_SIZE(kPositivePreIndex),
2717 kPositivePreIndex},
2718 {{al, r12, r10, plus, r14, LSR, 11, PreIndex},
2719 "al r12 r10 plus r14 LSR 11 PreIndex",
2720 "PositivePreIndex_al_r12_r10_plus_r14_LSR_11_PreIndex",
2721 ARRAY_SIZE(kPositivePreIndex),
2722 kPositivePreIndex},
2723 {{al, r1, r11, plus, r6, LSR, 12, PreIndex},
2724 "al r1 r11 plus r6 LSR 12 PreIndex",
2725 "PositivePreIndex_al_r1_r11_plus_r6_LSR_12_PreIndex",
2726 ARRAY_SIZE(kPositivePreIndex),
2727 kPositivePreIndex},
2728 {{al, r1, r4, plus, r14, LSR, 14, PreIndex},
2729 "al r1 r4 plus r14 LSR 14 PreIndex",
2730 "PositivePreIndex_al_r1_r4_plus_r14_LSR_14_PreIndex",
2731 ARRAY_SIZE(kPositivePreIndex),
2732 kPositivePreIndex},
2733 {{al, r6, r7, plus, r12, LSR, 14, PreIndex},
2734 "al r6 r7 plus r12 LSR 14 PreIndex",
2735 "PositivePreIndex_al_r6_r7_plus_r12_LSR_14_PreIndex",
2736 ARRAY_SIZE(kPositivePreIndex),
2737 kPositivePreIndex},
2738 {{al, r10, r9, plus, r11, ASR, 9, PreIndex},
2739 "al r10 r9 plus r11 ASR 9 PreIndex",
2740 "PositivePreIndex_al_r10_r9_plus_r11_ASR_9_PreIndex",
2741 ARRAY_SIZE(kPositivePreIndex),
2742 kPositivePreIndex},
2743 {{al, r12, r8, plus, r7, ASR, 7, PreIndex},
2744 "al r12 r8 plus r7 ASR 7 PreIndex",
2745 "PositivePreIndex_al_r12_r8_plus_r7_ASR_7_PreIndex",
2746 ARRAY_SIZE(kPositivePreIndex),
2747 kPositivePreIndex},
2748 {{al, r10, r7, plus, r9, LSR, 11, PreIndex},
2749 "al r10 r7 plus r9 LSR 11 PreIndex",
2750 "PositivePreIndex_al_r10_r7_plus_r9_LSR_11_PreIndex",
2751 ARRAY_SIZE(kPositivePreIndex),
2752 kPositivePreIndex},
2753 {{al, r14, r1, plus, r7, LSR, 27, PreIndex},
2754 "al r14 r1 plus r7 LSR 27 PreIndex",
2755 "PositivePreIndex_al_r14_r1_plus_r7_LSR_27_PreIndex",
2756 ARRAY_SIZE(kPositivePreIndex),
2757 kPositivePreIndex},
2758 {{al, r4, r7, plus, r8, ASR, 9, PreIndex},
2759 "al r4 r7 plus r8 ASR 9 PreIndex",
2760 "PositivePreIndex_al_r4_r7_plus_r8_ASR_9_PreIndex",
2761 ARRAY_SIZE(kPositivePreIndex),
2762 kPositivePreIndex},
2763 {{al, r3, r10, plus, r5, LSR, 10, PreIndex},
2764 "al r3 r10 plus r5 LSR 10 PreIndex",
2765 "PositivePreIndex_al_r3_r10_plus_r5_LSR_10_PreIndex",
2766 ARRAY_SIZE(kPositivePreIndex),
2767 kPositivePreIndex},
2768 {{al, r3, r0, plus, r8, ASR, 3, PreIndex},
2769 "al r3 r0 plus r8 ASR 3 PreIndex",
2770 "PositivePreIndex_al_r3_r0_plus_r8_ASR_3_PreIndex",
2771 ARRAY_SIZE(kPositivePreIndex),
2772 kPositivePreIndex},
2773 {{al, r1, r12, plus, r0, ASR, 9, PreIndex},
2774 "al r1 r12 plus r0 ASR 9 PreIndex",
2775 "PositivePreIndex_al_r1_r12_plus_r0_ASR_9_PreIndex",
2776 ARRAY_SIZE(kPositivePreIndex),
2777 kPositivePreIndex},
2778 {{al, r14, r3, plus, r5, ASR, 16, PreIndex},
2779 "al r14 r3 plus r5 ASR 16 PreIndex",
2780 "PositivePreIndex_al_r14_r3_plus_r5_ASR_16_PreIndex",
2781 ARRAY_SIZE(kPositivePreIndex),
2782 kPositivePreIndex},
2783 {{al, r0, r5, plus, r2, ASR, 9, PreIndex},
2784 "al r0 r5 plus r2 ASR 9 PreIndex",
2785 "PositivePreIndex_al_r0_r5_plus_r2_ASR_9_PreIndex",
2786 ARRAY_SIZE(kPositivePreIndex),
2787 kPositivePreIndex},
2788 {{al, r11, r4, plus, r10, ASR, 32, PreIndex},
2789 "al r11 r4 plus r10 ASR 32 PreIndex",
2790 "PositivePreIndex_al_r11_r4_plus_r10_ASR_32_PreIndex",
2791 ARRAY_SIZE(kPositivePreIndex),
2792 kPositivePreIndex},
2793 {{al, r11, r0, plus, r5, ASR, 5, PreIndex},
2794 "al r11 r0 plus r5 ASR 5 PreIndex",
2795 "PositivePreIndex_al_r11_r0_plus_r5_ASR_5_PreIndex",
2796 ARRAY_SIZE(kPositivePreIndex),
2797 kPositivePreIndex},
2798 {{al, r8, r5, plus, r2, ASR, 20, PreIndex},
2799 "al r8 r5 plus r2 ASR 20 PreIndex",
2800 "PositivePreIndex_al_r8_r5_plus_r2_ASR_20_PreIndex",
2801 ARRAY_SIZE(kPositivePreIndex),
2802 kPositivePreIndex},
2803 {{al, r5, r0, plus, r7, LSR, 23, PreIndex},
2804 "al r5 r0 plus r7 LSR 23 PreIndex",
2805 "PositivePreIndex_al_r5_r0_plus_r7_LSR_23_PreIndex",
2806 ARRAY_SIZE(kPositivePreIndex),
2807 kPositivePreIndex},
2808 {{al, r7, r11, plus, r2, LSR, 23, PreIndex},
2809 "al r7 r11 plus r2 LSR 23 PreIndex",
2810 "PositivePreIndex_al_r7_r11_plus_r2_LSR_23_PreIndex",
2811 ARRAY_SIZE(kPositivePreIndex),
2812 kPositivePreIndex},
2813 {{al, r0, r10, plus, r1, ASR, 28, PreIndex},
2814 "al r0 r10 plus r1 ASR 28 PreIndex",
2815 "PositivePreIndex_al_r0_r10_plus_r1_ASR_28_PreIndex",
2816 ARRAY_SIZE(kPositivePreIndex),
2817 kPositivePreIndex},
2818 {{al, r8, r7, plus, r10, ASR, 14, PreIndex},
2819 "al r8 r7 plus r10 ASR 14 PreIndex",
2820 "PositivePreIndex_al_r8_r7_plus_r10_ASR_14_PreIndex",
2821 ARRAY_SIZE(kPositivePreIndex),
2822 kPositivePreIndex},
2823 {{al, r8, r12, plus, r11, LSR, 31, PreIndex},
2824 "al r8 r12 plus r11 LSR 31 PreIndex",
2825 "PositivePreIndex_al_r8_r12_plus_r11_LSR_31_PreIndex",
2826 ARRAY_SIZE(kPositivePreIndex),
2827 kPositivePreIndex},
2828 {{al, r11, r12, plus, r8, LSR, 4, PreIndex},
2829 "al r11 r12 plus r8 LSR 4 PreIndex",
2830 "PositivePreIndex_al_r11_r12_plus_r8_LSR_4_PreIndex",
2831 ARRAY_SIZE(kPositivePreIndex),
2832 kPositivePreIndex},
2833 {{al, r4, r8, minus, r7, ASR, 31, PreIndex},
2834 "al r4 r8 minus r7 ASR 31 PreIndex",
2835 "NegativePreIndex_al_r4_r8_minus_r7_ASR_31_PreIndex",
2836 ARRAY_SIZE(kNegativePreIndex),
2837 kNegativePreIndex},
2838 {{al, r9, r0, minus, r12, ASR, 12, PreIndex},
2839 "al r9 r0 minus r12 ASR 12 PreIndex",
2840 "NegativePreIndex_al_r9_r0_minus_r12_ASR_12_PreIndex",
2841 ARRAY_SIZE(kNegativePreIndex),
2842 kNegativePreIndex},
2843 {{al, r3, r1, minus, r9, ASR, 9, PreIndex},
2844 "al r3 r1 minus r9 ASR 9 PreIndex",
2845 "NegativePreIndex_al_r3_r1_minus_r9_ASR_9_PreIndex",
2846 ARRAY_SIZE(kNegativePreIndex),
2847 kNegativePreIndex},
2848 {{al, r14, r9, minus, r10, ASR, 27, PreIndex},
2849 "al r14 r9 minus r10 ASR 27 PreIndex",
2850 "NegativePreIndex_al_r14_r9_minus_r10_ASR_27_PreIndex",
2851 ARRAY_SIZE(kNegativePreIndex),
2852 kNegativePreIndex},
2853 {{al, r1, r5, minus, r14, ASR, 25, PreIndex},
2854 "al r1 r5 minus r14 ASR 25 PreIndex",
2855 "NegativePreIndex_al_r1_r5_minus_r14_ASR_25_PreIndex",
2856 ARRAY_SIZE(kNegativePreIndex),
2857 kNegativePreIndex},
2858 {{al, r0, r10, minus, r11, LSR, 7, PreIndex},
2859 "al r0 r10 minus r11 LSR 7 PreIndex",
2860 "NegativePreIndex_al_r0_r10_minus_r11_LSR_7_PreIndex",
2861 ARRAY_SIZE(kNegativePreIndex),
2862 kNegativePreIndex},
2863 {{al, r6, r9, minus, r1, LSR, 13, PreIndex},
2864 "al r6 r9 minus r1 LSR 13 PreIndex",
2865 "NegativePreIndex_al_r6_r9_minus_r1_LSR_13_PreIndex",
2866 ARRAY_SIZE(kNegativePreIndex),
2867 kNegativePreIndex},
2868 {{al, r11, r10, minus, r9, LSR, 27, PreIndex},
2869 "al r11 r10 minus r9 LSR 27 PreIndex",
2870 "NegativePreIndex_al_r11_r10_minus_r9_LSR_27_PreIndex",
2871 ARRAY_SIZE(kNegativePreIndex),
2872 kNegativePreIndex},
2873 {{al, r6, r1, minus, r11, ASR, 23, PreIndex},
2874 "al r6 r1 minus r11 ASR 23 PreIndex",
2875 "NegativePreIndex_al_r6_r1_minus_r11_ASR_23_PreIndex",
2876 ARRAY_SIZE(kNegativePreIndex),
2877 kNegativePreIndex},
2878 {{al, r0, r2, minus, r11, ASR, 11, PreIndex},
2879 "al r0 r2 minus r11 ASR 11 PreIndex",
2880 "NegativePreIndex_al_r0_r2_minus_r11_ASR_11_PreIndex",
2881 ARRAY_SIZE(kNegativePreIndex),
2882 kNegativePreIndex},
2883 {{al, r2, r9, minus, r8, ASR, 9, PreIndex},
2884 "al r2 r9 minus r8 ASR 9 PreIndex",
2885 "NegativePreIndex_al_r2_r9_minus_r8_ASR_9_PreIndex",
2886 ARRAY_SIZE(kNegativePreIndex),
2887 kNegativePreIndex},
2888 {{al, r14, r9, minus, r4, LSR, 28, PreIndex},
2889 "al r14 r9 minus r4 LSR 28 PreIndex",
2890 "NegativePreIndex_al_r14_r9_minus_r4_LSR_28_PreIndex",
2891 ARRAY_SIZE(kNegativePreIndex),
2892 kNegativePreIndex},
2893 {{al, r5, r14, minus, r11, LSR, 10, PreIndex},
2894 "al r5 r14 minus r11 LSR 10 PreIndex",
2895 "NegativePreIndex_al_r5_r14_minus_r11_LSR_10_PreIndex",
2896 ARRAY_SIZE(kNegativePreIndex),
2897 kNegativePreIndex},
2898 {{al, r10, r2, minus, r14, ASR, 20, PreIndex},
2899 "al r10 r2 minus r14 ASR 20 PreIndex",
2900 "NegativePreIndex_al_r10_r2_minus_r14_ASR_20_PreIndex",
2901 ARRAY_SIZE(kNegativePreIndex),
2902 kNegativePreIndex},
2903 {{al, r9, r5, minus, r3, LSR, 16, PreIndex},
2904 "al r9 r5 minus r3 LSR 16 PreIndex",
2905 "NegativePreIndex_al_r9_r5_minus_r3_LSR_16_PreIndex",
2906 ARRAY_SIZE(kNegativePreIndex),
2907 kNegativePreIndex},
2908 {{al, r1, r12, minus, r7, ASR, 20, PreIndex},
2909 "al r1 r12 minus r7 ASR 20 PreIndex",
2910 "NegativePreIndex_al_r1_r12_minus_r7_ASR_20_PreIndex",
2911 ARRAY_SIZE(kNegativePreIndex),
2912 kNegativePreIndex},
2913 {{al, r10, r11, minus, r4, ASR, 12, PreIndex},
2914 "al r10 r11 minus r4 ASR 12 PreIndex",
2915 "NegativePreIndex_al_r10_r11_minus_r4_ASR_12_PreIndex",
2916 ARRAY_SIZE(kNegativePreIndex),
2917 kNegativePreIndex},
2918 {{al, r12, r7, minus, r3, LSR, 4, PreIndex},
2919 "al r12 r7 minus r3 LSR 4 PreIndex",
2920 "NegativePreIndex_al_r12_r7_minus_r3_LSR_4_PreIndex",
2921 ARRAY_SIZE(kNegativePreIndex),
2922 kNegativePreIndex},
2923 {{al, r1, r14, minus, r6, ASR, 8, PreIndex},
2924 "al r1 r14 minus r6 ASR 8 PreIndex",
2925 "NegativePreIndex_al_r1_r14_minus_r6_ASR_8_PreIndex",
2926 ARRAY_SIZE(kNegativePreIndex),
2927 kNegativePreIndex},
2928 {{al, r12, r7, minus, r8, LSR, 8, PreIndex},
2929 "al r12 r7 minus r8 LSR 8 PreIndex",
2930 "NegativePreIndex_al_r12_r7_minus_r8_LSR_8_PreIndex",
2931 ARRAY_SIZE(kNegativePreIndex),
2932 kNegativePreIndex},
2933 {{al, r7, r10, minus, r5, ASR, 2, PreIndex},
2934 "al r7 r10 minus r5 ASR 2 PreIndex",
2935 "NegativePreIndex_al_r7_r10_minus_r5_ASR_2_PreIndex",
2936 ARRAY_SIZE(kNegativePreIndex),
2937 kNegativePreIndex},
2938 {{al, r11, r4, minus, r6, ASR, 23, PreIndex},
2939 "al r11 r4 minus r6 ASR 23 PreIndex",
2940 "NegativePreIndex_al_r11_r4_minus_r6_ASR_23_PreIndex",
2941 ARRAY_SIZE(kNegativePreIndex),
2942 kNegativePreIndex},
2943 {{al, r5, r2, minus, r3, ASR, 17, PreIndex},
2944 "al r5 r2 minus r3 ASR 17 PreIndex",
2945 "NegativePreIndex_al_r5_r2_minus_r3_ASR_17_PreIndex",
2946 ARRAY_SIZE(kNegativePreIndex),
2947 kNegativePreIndex},
2948 {{al, r1, r14, minus, r5, LSR, 13, PreIndex},
2949 "al r1 r14 minus r5 LSR 13 PreIndex",
2950 "NegativePreIndex_al_r1_r14_minus_r5_LSR_13_PreIndex",
2951 ARRAY_SIZE(kNegativePreIndex),
2952 kNegativePreIndex},
2953 {{al, r0, r14, minus, r7, LSR, 4, PreIndex},
2954 "al r0 r14 minus r7 LSR 4 PreIndex",
2955 "NegativePreIndex_al_r0_r14_minus_r7_LSR_4_PreIndex",
2956 ARRAY_SIZE(kNegativePreIndex),
2957 kNegativePreIndex},
2958 {{al, r11, r14, minus, r2, LSR, 12, PreIndex},
2959 "al r11 r14 minus r2 LSR 12 PreIndex",
2960 "NegativePreIndex_al_r11_r14_minus_r2_LSR_12_PreIndex",
2961 ARRAY_SIZE(kNegativePreIndex),
2962 kNegativePreIndex},
2963 {{al, r2, r10, minus, r14, LSR, 32, PreIndex},
2964 "al r2 r10 minus r14 LSR 32 PreIndex",
2965 "NegativePreIndex_al_r2_r10_minus_r14_LSR_32_PreIndex",
2966 ARRAY_SIZE(kNegativePreIndex),
2967 kNegativePreIndex},
2968 {{al, r8, r14, minus, r2, LSR, 25, PreIndex},
2969 "al r8 r14 minus r2 LSR 25 PreIndex",
2970 "NegativePreIndex_al_r8_r14_minus_r2_LSR_25_PreIndex",
2971 ARRAY_SIZE(kNegativePreIndex),
2972 kNegativePreIndex},
2973 {{al, r0, r7, minus, r14, LSR, 9, PreIndex},
2974 "al r0 r7 minus r14 LSR 9 PreIndex",
2975 "NegativePreIndex_al_r0_r7_minus_r14_LSR_9_PreIndex",
2976 ARRAY_SIZE(kNegativePreIndex),
2977 kNegativePreIndex},
2978 {{al, r7, r8, minus, r10, LSR, 15, PreIndex},
2979 "al r7 r8 minus r10 LSR 15 PreIndex",
2980 "NegativePreIndex_al_r7_r8_minus_r10_LSR_15_PreIndex",
2981 ARRAY_SIZE(kNegativePreIndex),
2982 kNegativePreIndex},
2983 {{al, r5, r0, minus, r10, LSR, 21, PreIndex},
2984 "al r5 r0 minus r10 LSR 21 PreIndex",
2985 "NegativePreIndex_al_r5_r0_minus_r10_LSR_21_PreIndex",
2986 ARRAY_SIZE(kNegativePreIndex),
2987 kNegativePreIndex},
2988 {{al, r9, r0, minus, r4, LSR, 16, PreIndex},
2989 "al r9 r0 minus r4 LSR 16 PreIndex",
2990 "NegativePreIndex_al_r9_r0_minus_r4_LSR_16_PreIndex",
2991 ARRAY_SIZE(kNegativePreIndex),
2992 kNegativePreIndex},
2993 {{al, r0, r7, minus, r11, LSR, 30, PreIndex},
2994 "al r0 r7 minus r11 LSR 30 PreIndex",
2995 "NegativePreIndex_al_r0_r7_minus_r11_LSR_30_PreIndex",
2996 ARRAY_SIZE(kNegativePreIndex),
2997 kNegativePreIndex},
2998 {{al, r9, r8, minus, r4, ASR, 26, PreIndex},
2999 "al r9 r8 minus r4 ASR 26 PreIndex",
3000 "NegativePreIndex_al_r9_r8_minus_r4_ASR_26_PreIndex",
3001 ARRAY_SIZE(kNegativePreIndex),
3002 kNegativePreIndex},
3003 {{al, r11, r12, minus, r7, LSR, 9, PreIndex},
3004 "al r11 r12 minus r7 LSR 9 PreIndex",
3005 "NegativePreIndex_al_r11_r12_minus_r7_LSR_9_PreIndex",
3006 ARRAY_SIZE(kNegativePreIndex),
3007 kNegativePreIndex},
3008 {{al, r3, r2, minus, r10, LSR, 13, PreIndex},
3009 "al r3 r2 minus r10 LSR 13 PreIndex",
3010 "NegativePreIndex_al_r3_r2_minus_r10_LSR_13_PreIndex",
3011 ARRAY_SIZE(kNegativePreIndex),
3012 kNegativePreIndex},
3013 {{al, r8, r10, minus, r2, LSR, 27, PreIndex},
3014 "al r8 r10 minus r2 LSR 27 PreIndex",
3015 "NegativePreIndex_al_r8_r10_minus_r2_LSR_27_PreIndex",
3016 ARRAY_SIZE(kNegativePreIndex),
3017 kNegativePreIndex},
3018 {{al, r7, r5, minus, r12, LSR, 7, PreIndex},
3019 "al r7 r5 minus r12 LSR 7 PreIndex",
3020 "NegativePreIndex_al_r7_r5_minus_r12_LSR_7_PreIndex",
3021 ARRAY_SIZE(kNegativePreIndex),
3022 kNegativePreIndex},
3023 {{al, r14, r7, minus, r8, ASR, 14, PreIndex},
3024 "al r14 r7 minus r8 ASR 14 PreIndex",
3025 "NegativePreIndex_al_r14_r7_minus_r8_ASR_14_PreIndex",
3026 ARRAY_SIZE(kNegativePreIndex),
3027 kNegativePreIndex},
3028 {{al, r1, r12, minus, r3, ASR, 23, PreIndex},
3029 "al r1 r12 minus r3 ASR 23 PreIndex",
3030 "NegativePreIndex_al_r1_r12_minus_r3_ASR_23_PreIndex",
3031 ARRAY_SIZE(kNegativePreIndex),
3032 kNegativePreIndex},
3033 {{al, r6, r9, minus, r8, ASR, 22, PreIndex},
3034 "al r6 r9 minus r8 ASR 22 PreIndex",
3035 "NegativePreIndex_al_r6_r9_minus_r8_ASR_22_PreIndex",
3036 ARRAY_SIZE(kNegativePreIndex),
3037 kNegativePreIndex},
3038 {{al, r5, r11, minus, r2, ASR, 29, PreIndex},
3039 "al r5 r11 minus r2 ASR 29 PreIndex",
3040 "NegativePreIndex_al_r5_r11_minus_r2_ASR_29_PreIndex",
3041 ARRAY_SIZE(kNegativePreIndex),
3042 kNegativePreIndex},
3043 {{al, r4, r1, minus, r10, ASR, 32, PreIndex},
3044 "al r4 r1 minus r10 ASR 32 PreIndex",
3045 "NegativePreIndex_al_r4_r1_minus_r10_ASR_32_PreIndex",
3046 ARRAY_SIZE(kNegativePreIndex),
3047 kNegativePreIndex},
3048 {{al, r8, r4, minus, r3, ASR, 5, PreIndex},
3049 "al r8 r4 minus r3 ASR 5 PreIndex",
3050 "NegativePreIndex_al_r8_r4_minus_r3_ASR_5_PreIndex",
3051 ARRAY_SIZE(kNegativePreIndex),
3052 kNegativePreIndex},
3053 {{al, r14, r10, minus, r1, LSR, 13, PreIndex},
3054 "al r14 r10 minus r1 LSR 13 PreIndex",
3055 "NegativePreIndex_al_r14_r10_minus_r1_LSR_13_PreIndex",
3056 ARRAY_SIZE(kNegativePreIndex),
3057 kNegativePreIndex},
3058 {{al, r2, r10, minus, r3, LSR, 32, PreIndex},
3059 "al r2 r10 minus r3 LSR 32 PreIndex",
3060 "NegativePreIndex_al_r2_r10_minus_r3_LSR_32_PreIndex",
3061 ARRAY_SIZE(kNegativePreIndex),
3062 kNegativePreIndex},
3063 {{al, r0, r7, minus, r6, LSR, 17, PreIndex},
3064 "al r0 r7 minus r6 LSR 17 PreIndex",
3065 "NegativePreIndex_al_r0_r7_minus_r6_LSR_17_PreIndex",
3066 ARRAY_SIZE(kNegativePreIndex),
3067 kNegativePreIndex},
3068 {{al, r11, r3, minus, r5, LSR, 2, PreIndex},
3069 "al r11 r3 minus r5 LSR 2 PreIndex",
3070 "NegativePreIndex_al_r11_r3_minus_r5_LSR_2_PreIndex",
3071 ARRAY_SIZE(kNegativePreIndex),
3072 kNegativePreIndex},
3073 {{al, r9, r10, minus, r14, ASR, 1, PreIndex},
3074 "al r9 r10 minus r14 ASR 1 PreIndex",
3075 "NegativePreIndex_al_r9_r10_minus_r14_ASR_1_PreIndex",
3076 ARRAY_SIZE(kNegativePreIndex),
3077 kNegativePreIndex},
3078 {{al, r1, r4, minus, r12, LSR, 20, PreIndex},
3079 "al r1 r4 minus r12 LSR 20 PreIndex",
3080 "NegativePreIndex_al_r1_r4_minus_r12_LSR_20_PreIndex",
3081 ARRAY_SIZE(kNegativePreIndex),
3082 kNegativePreIndex},
3083 {{al, r6, r12, minus, r2, LSR, 31, PreIndex},
3084 "al r6 r12 minus r2 LSR 31 PreIndex",
3085 "NegativePreIndex_al_r6_r12_minus_r2_LSR_31_PreIndex",
3086 ARRAY_SIZE(kNegativePreIndex),
3087 kNegativePreIndex},
3088 {{al, r12, r8, minus, r14, LSR, 20, PreIndex},
3089 "al r12 r8 minus r14 LSR 20 PreIndex",
3090 "NegativePreIndex_al_r12_r8_minus_r14_LSR_20_PreIndex",
3091 ARRAY_SIZE(kNegativePreIndex),
3092 kNegativePreIndex},
3093 {{al, r0, r12, minus, r1, ASR, 10, PreIndex},
3094 "al r0 r12 minus r1 ASR 10 PreIndex",
3095 "NegativePreIndex_al_r0_r12_minus_r1_ASR_10_PreIndex",
3096 ARRAY_SIZE(kNegativePreIndex),
3097 kNegativePreIndex},
3098 {{al, r2, r10, minus, r8, LSR, 14, PreIndex},
3099 "al r2 r10 minus r8 LSR 14 PreIndex",
3100 "NegativePreIndex_al_r2_r10_minus_r8_LSR_14_PreIndex",
3101 ARRAY_SIZE(kNegativePreIndex),
3102 kNegativePreIndex},
3103 {{al, r7, r8, minus, r11, ASR, 22, PreIndex},
3104 "al r7 r8 minus r11 ASR 22 PreIndex",
3105 "NegativePreIndex_al_r7_r8_minus_r11_ASR_22_PreIndex",
3106 ARRAY_SIZE(kNegativePreIndex),
3107 kNegativePreIndex},
3108 {{al, r12, r7, minus, r6, LSR, 26, PreIndex},
3109 "al r12 r7 minus r6 LSR 26 PreIndex",
3110 "NegativePreIndex_al_r12_r7_minus_r6_LSR_26_PreIndex",
3111 ARRAY_SIZE(kNegativePreIndex),
3112 kNegativePreIndex},
3113 {{al, r2, r5, minus, r11, ASR, 2, PreIndex},
3114 "al r2 r5 minus r11 ASR 2 PreIndex",
3115 "NegativePreIndex_al_r2_r5_minus_r11_ASR_2_PreIndex",
3116 ARRAY_SIZE(kNegativePreIndex),
3117 kNegativePreIndex},
3118 {{al, r12, r8, minus, r10, LSR, 1, PreIndex},
3119 "al r12 r8 minus r10 LSR 1 PreIndex",
3120 "NegativePreIndex_al_r12_r8_minus_r10_LSR_1_PreIndex",
3121 ARRAY_SIZE(kNegativePreIndex),
3122 kNegativePreIndex},
3123 {{al, r8, r11, minus, r9, ASR, 18, PreIndex},
3124 "al r8 r11 minus r9 ASR 18 PreIndex",
3125 "NegativePreIndex_al_r8_r11_minus_r9_ASR_18_PreIndex",
3126 ARRAY_SIZE(kNegativePreIndex),
3127 kNegativePreIndex},
3128 {{al, r7, r1, minus, r0, ASR, 6, PreIndex},
3129 "al r7 r1 minus r0 ASR 6 PreIndex",
3130 "NegativePreIndex_al_r7_r1_minus_r0_ASR_6_PreIndex",
3131 ARRAY_SIZE(kNegativePreIndex),
3132 kNegativePreIndex},
3133 {{al, r10, r6, minus, r5, LSR, 12, PreIndex},
3134 "al r10 r6 minus r5 LSR 12 PreIndex",
3135 "NegativePreIndex_al_r10_r6_minus_r5_LSR_12_PreIndex",
3136 ARRAY_SIZE(kNegativePreIndex),
3137 kNegativePreIndex},
3138 {{al, r8, r12, minus, r2, ASR, 1, PreIndex},
3139 "al r8 r12 minus r2 ASR 1 PreIndex",
3140 "NegativePreIndex_al_r8_r12_minus_r2_ASR_1_PreIndex",
3141 ARRAY_SIZE(kNegativePreIndex),
3142 kNegativePreIndex},
3143 {{al, r9, r1, minus, r14, LSR, 30, PreIndex},
3144 "al r9 r1 minus r14 LSR 30 PreIndex",
3145 "NegativePreIndex_al_r9_r1_minus_r14_LSR_30_PreIndex",
3146 ARRAY_SIZE(kNegativePreIndex),
3147 kNegativePreIndex},
3148 {{al, r1, r14, minus, r0, ASR, 2, PreIndex},
3149 "al r1 r14 minus r0 ASR 2 PreIndex",
3150 "NegativePreIndex_al_r1_r14_minus_r0_ASR_2_PreIndex",
3151 ARRAY_SIZE(kNegativePreIndex),
3152 kNegativePreIndex},
3153 {{al, r10, r7, minus, r2, ASR, 26, PreIndex},
3154 "al r10 r7 minus r2 ASR 26 PreIndex",
3155 "NegativePreIndex_al_r10_r7_minus_r2_ASR_26_PreIndex",
3156 ARRAY_SIZE(kNegativePreIndex),
3157 kNegativePreIndex},
3158 {{al, r5, r6, minus, r0, LSR, 29, PreIndex},
3159 "al r5 r6 minus r0 LSR 29 PreIndex",
3160 "NegativePreIndex_al_r5_r6_minus_r0_LSR_29_PreIndex",
3161 ARRAY_SIZE(kNegativePreIndex),
3162 kNegativePreIndex},
3163 {{al, r2, r12, minus, r11, LSR, 11, PreIndex},
3164 "al r2 r12 minus r11 LSR 11 PreIndex",
3165 "NegativePreIndex_al_r2_r12_minus_r11_LSR_11_PreIndex",
3166 ARRAY_SIZE(kNegativePreIndex),
3167 kNegativePreIndex},
3168 {{al, r5, r0, minus, r10, LSR, 10, PreIndex},
3169 "al r5 r0 minus r10 LSR 10 PreIndex",
3170 "NegativePreIndex_al_r5_r0_minus_r10_LSR_10_PreIndex",
3171 ARRAY_SIZE(kNegativePreIndex),
3172 kNegativePreIndex},
3173 {{al, r3, r6, minus, r2, LSR, 8, PreIndex},
3174 "al r3 r6 minus r2 LSR 8 PreIndex",
3175 "NegativePreIndex_al_r3_r6_minus_r2_LSR_8_PreIndex",
3176 ARRAY_SIZE(kNegativePreIndex),
3177 kNegativePreIndex},
3178 {{al, r2, r14, minus, r1, LSR, 5, PreIndex},
3179 "al r2 r14 minus r1 LSR 5 PreIndex",
3180 "NegativePreIndex_al_r2_r14_minus_r1_LSR_5_PreIndex",
3181 ARRAY_SIZE(kNegativePreIndex),
3182 kNegativePreIndex},
3183 {{al, r2, r7, minus, r5, LSR, 16, PreIndex},
3184 "al r2 r7 minus r5 LSR 16 PreIndex",
3185 "NegativePreIndex_al_r2_r7_minus_r5_LSR_16_PreIndex",
3186 ARRAY_SIZE(kNegativePreIndex),
3187 kNegativePreIndex},
3188 {{al, r1, r2, minus, r7, ASR, 27, PreIndex},
3189 "al r1 r2 minus r7 ASR 27 PreIndex",
3190 "NegativePreIndex_al_r1_r2_minus_r7_ASR_27_PreIndex",
3191 ARRAY_SIZE(kNegativePreIndex),
3192 kNegativePreIndex},
3193 {{al, r8, r0, minus, r12, LSR, 5, PreIndex},
3194 "al r8 r0 minus r12 LSR 5 PreIndex",
3195 "NegativePreIndex_al_r8_r0_minus_r12_LSR_5_PreIndex",
3196 ARRAY_SIZE(kNegativePreIndex),
3197 kNegativePreIndex},
3198 {{al, r0, r12, minus, r2, LSR, 10, PreIndex},
3199 "al r0 r12 minus r2 LSR 10 PreIndex",
3200 "NegativePreIndex_al_r0_r12_minus_r2_LSR_10_PreIndex",
3201 ARRAY_SIZE(kNegativePreIndex),
3202 kNegativePreIndex},
3203 {{al, r7, r1, minus, r12, LSR, 26, PreIndex},
3204 "al r7 r1 minus r12 LSR 26 PreIndex",
3205 "NegativePreIndex_al_r7_r1_minus_r12_LSR_26_PreIndex",
3206 ARRAY_SIZE(kNegativePreIndex),
3207 kNegativePreIndex},
3208 {{al, r3, r4, minus, r14, ASR, 30, PreIndex},
3209 "al r3 r4 minus r14 ASR 30 PreIndex",
3210 "NegativePreIndex_al_r3_r4_minus_r14_ASR_30_PreIndex",
3211 ARRAY_SIZE(kNegativePreIndex),
3212 kNegativePreIndex},
3213 {{al, r6, r10, minus, r9, LSR, 1, PreIndex},
3214 "al r6 r10 minus r9 LSR 1 PreIndex",
3215 "NegativePreIndex_al_r6_r10_minus_r9_LSR_1_PreIndex",
3216 ARRAY_SIZE(kNegativePreIndex),
3217 kNegativePreIndex},
3218 {{al, r4, r0, minus, r12, LSR, 8, PreIndex},
3219 "al r4 r0 minus r12 LSR 8 PreIndex",
3220 "NegativePreIndex_al_r4_r0_minus_r12_LSR_8_PreIndex",
3221 ARRAY_SIZE(kNegativePreIndex),
3222 kNegativePreIndex},
3223 {{al, r8, r4, minus, r11, LSR, 32, PreIndex},
3224 "al r8 r4 minus r11 LSR 32 PreIndex",
3225 "NegativePreIndex_al_r8_r4_minus_r11_LSR_32_PreIndex",
3226 ARRAY_SIZE(kNegativePreIndex),
3227 kNegativePreIndex},
3228 {{al, r8, r10, minus, r2, LSR, 23, PreIndex},
3229 "al r8 r10 minus r2 LSR 23 PreIndex",
3230 "NegativePreIndex_al_r8_r10_minus_r2_LSR_23_PreIndex",
3231 ARRAY_SIZE(kNegativePreIndex),
3232 kNegativePreIndex},
3233 {{al, r14, r9, minus, r11, LSR, 27, PreIndex},
3234 "al r14 r9 minus r11 LSR 27 PreIndex",
3235 "NegativePreIndex_al_r14_r9_minus_r11_LSR_27_PreIndex",
3236 ARRAY_SIZE(kNegativePreIndex),
3237 kNegativePreIndex},
3238 {{al, r7, r3, minus, r4, ASR, 28, PreIndex},
3239 "al r7 r3 minus r4 ASR 28 PreIndex",
3240 "NegativePreIndex_al_r7_r3_minus_r4_ASR_28_PreIndex",
3241 ARRAY_SIZE(kNegativePreIndex),
3242 kNegativePreIndex},
3243 {{al, r12, r4, minus, r7, ASR, 19, PreIndex},
3244 "al r12 r4 minus r7 ASR 19 PreIndex",
3245 "NegativePreIndex_al_r12_r4_minus_r7_ASR_19_PreIndex",
3246 ARRAY_SIZE(kNegativePreIndex),
3247 kNegativePreIndex},
3248 {{al, r7, r10, minus, r6, ASR, 6, PreIndex},
3249 "al r7 r10 minus r6 ASR 6 PreIndex",
3250 "NegativePreIndex_al_r7_r10_minus_r6_ASR_6_PreIndex",
3251 ARRAY_SIZE(kNegativePreIndex),
3252 kNegativePreIndex},
3253 {{al, r2, r0, minus, r4, ASR, 2, PreIndex},
3254 "al r2 r0 minus r4 ASR 2 PreIndex",
3255 "NegativePreIndex_al_r2_r0_minus_r4_ASR_2_PreIndex",
3256 ARRAY_SIZE(kNegativePreIndex),
3257 kNegativePreIndex},
3258 {{al, r3, r7, minus, r14, ASR, 26, PreIndex},
3259 "al r3 r7 minus r14 ASR 26 PreIndex",
3260 "NegativePreIndex_al_r3_r7_minus_r14_ASR_26_PreIndex",
3261 ARRAY_SIZE(kNegativePreIndex),
3262 kNegativePreIndex},
3263 {{al, r7, r8, minus, r1, ASR, 29, PreIndex},
3264 "al r7 r8 minus r1 ASR 29 PreIndex",
3265 "NegativePreIndex_al_r7_r8_minus_r1_ASR_29_PreIndex",
3266 ARRAY_SIZE(kNegativePreIndex),
3267 kNegativePreIndex},
3268 {{al, r11, r14, minus, r3, LSR, 11, PreIndex},
3269 "al r11 r14 minus r3 LSR 11 PreIndex",
3270 "NegativePreIndex_al_r11_r14_minus_r3_LSR_11_PreIndex",
3271 ARRAY_SIZE(kNegativePreIndex),
3272 kNegativePreIndex},
3273 {{al, r11, r12, minus, r4, LSR, 20, PreIndex},
3274 "al r11 r12 minus r4 LSR 20 PreIndex",
3275 "NegativePreIndex_al_r11_r12_minus_r4_LSR_20_PreIndex",
3276 ARRAY_SIZE(kNegativePreIndex),
3277 kNegativePreIndex},
3278 {{al, r8, r11, minus, r10, ASR, 23, PreIndex},
3279 "al r8 r11 minus r10 ASR 23 PreIndex",
3280 "NegativePreIndex_al_r8_r11_minus_r10_ASR_23_PreIndex",
3281 ARRAY_SIZE(kNegativePreIndex),
3282 kNegativePreIndex},
3283 {{al, r2, r10, minus, r5, ASR, 24, PreIndex},
3284 "al r2 r10 minus r5 ASR 24 PreIndex",
3285 "NegativePreIndex_al_r2_r10_minus_r5_ASR_24_PreIndex",
3286 ARRAY_SIZE(kNegativePreIndex),
3287 kNegativePreIndex},
3288 {{al, r5, r7, minus, r1, ASR, 9, PreIndex},
3289 "al r5 r7 minus r1 ASR 9 PreIndex",
3290 "NegativePreIndex_al_r5_r7_minus_r1_ASR_9_PreIndex",
3291 ARRAY_SIZE(kNegativePreIndex),
3292 kNegativePreIndex},
3293 {{al, r3, r5, minus, r11, LSR, 16, PreIndex},
3294 "al r3 r5 minus r11 LSR 16 PreIndex",
3295 "NegativePreIndex_al_r3_r5_minus_r11_LSR_16_PreIndex",
3296 ARRAY_SIZE(kNegativePreIndex),
3297 kNegativePreIndex},
3298 {{al, r4, r6, minus, r1, ASR, 27, PreIndex},
3299 "al r4 r6 minus r1 ASR 27 PreIndex",
3300 "NegativePreIndex_al_r4_r6_minus_r1_ASR_27_PreIndex",
3301 ARRAY_SIZE(kNegativePreIndex),
3302 kNegativePreIndex},
3303 {{al, r8, r5, minus, r14, LSR, 5, PreIndex},
3304 "al r8 r5 minus r14 LSR 5 PreIndex",
3305 "NegativePreIndex_al_r8_r5_minus_r14_LSR_5_PreIndex",
3306 ARRAY_SIZE(kNegativePreIndex),
3307 kNegativePreIndex},
3308 {{al, r11, r7, minus, r2, LSR, 9, PreIndex},
3309 "al r11 r7 minus r2 LSR 9 PreIndex",
3310 "NegativePreIndex_al_r11_r7_minus_r2_LSR_9_PreIndex",
3311 ARRAY_SIZE(kNegativePreIndex),
3312 kNegativePreIndex},
3313 {{al, r6, r11, minus, r4, LSR, 29, PreIndex},
3314 "al r6 r11 minus r4 LSR 29 PreIndex",
3315 "NegativePreIndex_al_r6_r11_minus_r4_LSR_29_PreIndex",
3316 ARRAY_SIZE(kNegativePreIndex),
3317 kNegativePreIndex},
3318 {{al, r4, r10, minus, r1, ASR, 10, PreIndex},
3319 "al r4 r10 minus r1 ASR 10 PreIndex",
3320 "NegativePreIndex_al_r4_r10_minus_r1_ASR_10_PreIndex",
3321 ARRAY_SIZE(kNegativePreIndex),
3322 kNegativePreIndex},
3323 {{al, r3, r0, minus, r12, ASR, 18, PreIndex},
3324 "al r3 r0 minus r12 ASR 18 PreIndex",
3325 "NegativePreIndex_al_r3_r0_minus_r12_ASR_18_PreIndex",
3326 ARRAY_SIZE(kNegativePreIndex),
3327 kNegativePreIndex},
3328 {{al, r4, r3, minus, r14, ASR, 14, PreIndex},
3329 "al r4 r3 minus r14 ASR 14 PreIndex",
3330 "NegativePreIndex_al_r4_r3_minus_r14_ASR_14_PreIndex",
3331 ARRAY_SIZE(kNegativePreIndex),
3332 kNegativePreIndex}};
3333
3334 // We record all inputs to the instructions as outputs. This way, we also check
3335 // that what shouldn't change didn't change.
3336 struct TestResult {
3337 size_t output_size;
3338 const Inputs* outputs;
3339 };
3340
3341 // These headers each contain an array of `TestResult` with the reference output
3342 // values. The reference arrays are names `kReference{mnemonic}`.
3343 #include "aarch32/traces/simulator-cond-rd-memop-rs-shift-amount-1to32-ldr-a32.h"
3344 #include "aarch32/traces/simulator-cond-rd-memop-rs-shift-amount-1to32-ldrb-a32.h"
3345 #include "aarch32/traces/simulator-cond-rd-memop-rs-shift-amount-1to32-str-a32.h"
3346 #include "aarch32/traces/simulator-cond-rd-memop-rs-shift-amount-1to32-strb-a32.h"
3347
3348
3349 // The maximum number of errors to report in detail for each test.
3350 const unsigned kErrorReportLimit = 8;
3351
3352 typedef void (MacroAssembler::*Fn)(Condition cond,
3353 Register rd,
3354 const MemOperand& memop);
3355
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])3356 void TestHelper(Fn instruction,
3357 const char* mnemonic,
3358 const TestResult reference[]) {
3359 SETUP();
3360 masm.UseA32();
3361 START();
3362
3363 // Data to compare to `reference`.
3364 TestResult* results[ARRAY_SIZE(kTests)];
3365
3366 // Test cases for memory bound instructions may allocate a buffer and save its
3367 // address in this array.
3368 byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
3369
3370 // Generate a loop for each element in `kTests`. Each loop tests one specific
3371 // instruction.
3372 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
3373 // Allocate results on the heap for this test.
3374 results[i] = new TestResult;
3375 results[i]->outputs = new Inputs[kTests[i].input_size];
3376 results[i]->output_size = kTests[i].input_size;
3377
3378 size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
3379 VIXL_ASSERT(IsUint32(input_stride));
3380
3381 scratch_memory_buffers[i] = NULL;
3382
3383 Label loop;
3384 UseScratchRegisterScope scratch_registers(&masm);
3385 // Include all registers from r0 ro r12.
3386 scratch_registers.Include(RegisterList(0x1fff));
3387
3388 // Values to pass to the macro-assembler.
3389 Condition cond = kTests[i].operands.cond;
3390 Register rd = kTests[i].operands.rd;
3391 Register rn = kTests[i].operands.rn;
3392 Sign sign = kTests[i].operands.sign;
3393 Register rm = kTests[i].operands.rm;
3394 ShiftType shift = kTests[i].operands.shift;
3395 uint32_t amount = kTests[i].operands.amount;
3396 AddrMode addr_mode = kTests[i].operands.addr_mode;
3397 MemOperand memop(rn, sign, rm, shift, amount, addr_mode);
3398 scratch_registers.Exclude(rd);
3399 scratch_registers.Exclude(rn);
3400 scratch_registers.Exclude(rm);
3401
3402 // Allocate reserved registers for our own use.
3403 Register input_ptr = scratch_registers.Acquire();
3404 Register input_end = scratch_registers.Acquire();
3405 Register result_ptr = scratch_registers.Acquire();
3406
3407 // Initialize `input_ptr` to the first element and `input_end` the address
3408 // after the array.
3409 __ Mov(input_ptr, Operand::From(kTests[i].inputs));
3410 __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
3411 __ Mov(result_ptr, Operand::From(results[i]->outputs));
3412 __ Bind(&loop);
3413
3414 {
3415 UseScratchRegisterScope temp_registers(&masm);
3416 Register nzcv_bits = temp_registers.Acquire();
3417 Register saved_q_bit = temp_registers.Acquire();
3418 // Save the `Q` bit flag.
3419 __ Mrs(saved_q_bit, APSR);
3420 __ And(saved_q_bit, saved_q_bit, QFlag);
3421 // Set the `NZCV` and `Q` flags together.
3422 __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr)));
3423 __ Orr(nzcv_bits, nzcv_bits, saved_q_bit);
3424 __ Msr(APSR_nzcvq, nzcv_bits);
3425 }
3426 __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
3427 __ Ldr(rm, MemOperand(input_ptr, offsetof(Inputs, rm)));
3428 // Allocate 4 bytes for the instruction to work with.
3429 scratch_memory_buffers[i] = new byte[4];
3430 {
3431 UseScratchRegisterScope temp_registers(&masm);
3432
3433 Register memop_tmp = temp_registers.Acquire();
3434 Register base_register = memop.GetBaseRegister();
3435
3436 // Write the expected data into the scratch buffer.
3437 __ Mov(base_register, Operand::From(scratch_memory_buffers[i]));
3438 __ Ldr(memop_tmp, MemOperand(input_ptr, offsetof(Inputs, memop) + 4));
3439 __ Str(memop_tmp, MemOperand(base_register));
3440
3441 // Compute the address to put into the base register so that the
3442 // `MemOperand` points to the right location.
3443 // TODO: Support more kinds of `MemOperand`.
3444 if (!memop.IsPostIndex()) {
3445 if (memop.IsImmediate()) {
3446 if (memop.GetSign().IsPlus()) {
3447 __ Mov(memop_tmp, memop.GetOffsetImmediate());
3448 __ Sub(base_register, base_register, memop_tmp);
3449 } else {
3450 __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3451 __ Add(base_register, base_register, memop_tmp);
3452 }
3453 } else if (memop.IsShiftedRegister()) {
3454 __ Mov(memop_tmp,
3455 Operand(memop.GetOffsetRegister(),
3456 memop.GetShift(),
3457 memop.GetShiftAmount()));
3458 if (memop.GetSign().IsPlus()) {
3459 __ Sub(base_register, base_register, memop_tmp);
3460 } else {
3461 __ Add(base_register, base_register, memop_tmp);
3462 }
3463 }
3464 }
3465 }
3466
3467
3468 (masm.*instruction)(cond, rd, memop);
3469
3470 {
3471 UseScratchRegisterScope temp_registers(&masm);
3472 Register nzcv_bits = temp_registers.Acquire();
3473 __ Mrs(nzcv_bits, APSR);
3474 // Only record the NZCV bits.
3475 __ And(nzcv_bits, nzcv_bits, NZCVFlag);
3476 __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr)));
3477 }
3478 __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
3479 __ Str(rm, MemOperand(result_ptr, offsetof(Inputs, rm)));
3480 {
3481 UseScratchRegisterScope temp_registers(&masm);
3482 Register memop_tmp = temp_registers.Acquire();
3483 Register base_register = memop.GetBaseRegister();
3484
3485 // Compute the address of the scratch buffer by from the base register. If
3486 // the instruction has updated the base register, we will be able to
3487 // record it.
3488 if (!memop.IsPostIndex()) {
3489 if (memop.IsImmediate()) {
3490 if (memop.GetSign().IsPlus()) {
3491 __ Mov(memop_tmp, memop.GetOffsetImmediate());
3492 __ Add(base_register, base_register, memop_tmp);
3493 } else {
3494 __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3495 __ Sub(base_register, base_register, memop_tmp);
3496 }
3497 } else if (memop.IsShiftedRegister()) {
3498 __ Mov(memop_tmp,
3499 Operand(memop.GetOffsetRegister(),
3500 memop.GetShift(),
3501 memop.GetShiftAmount()));
3502 if (memop.GetSign().IsPlus()) {
3503 __ Add(base_register, base_register, memop_tmp);
3504 } else {
3505 __ Sub(base_register, base_register, memop_tmp);
3506 }
3507 }
3508 }
3509
3510 // Record the value of the base register, as an offset from the scratch
3511 // buffer's address.
3512 __ Mov(memop_tmp, Operand::From(scratch_memory_buffers[i]));
3513 __ Sub(base_register, base_register, memop_tmp);
3514 __ Str(base_register, MemOperand(result_ptr, offsetof(Inputs, memop)));
3515
3516 // Record the 32 bit word from memory.
3517 __ Ldr(memop_tmp, MemOperand(memop_tmp));
3518 __ Str(memop_tmp, MemOperand(result_ptr, offsetof(Inputs, memop) + 4));
3519 }
3520
3521
3522 // Advance the result pointer.
3523 __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3524 // Loop back until `input_ptr` is lower than `input_base`.
3525 __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3526 __ Cmp(input_ptr, input_end);
3527 __ B(ne, &loop);
3528 }
3529
3530 END();
3531
3532 RUN();
3533
3534 if (Test::generate_test_trace()) {
3535 // Print the results.
3536 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3537 printf("const Inputs kOutputs_%s_%s[] = {\n",
3538 mnemonic,
3539 kTests[i].identifier);
3540 for (size_t j = 0; j < results[i]->output_size; j++) {
3541 printf(" { ");
3542 printf("0x%08" PRIx32, results[i]->outputs[j].apsr);
3543 printf(", ");
3544 printf("0x%08" PRIx32, results[i]->outputs[j].rd);
3545 printf(", ");
3546 printf("0x%08" PRIx32, results[i]->outputs[j].rm);
3547 printf(", ");
3548 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3549 results[i]->outputs[j].memop[0],
3550 results[i]->outputs[j].memop[1]);
3551 printf(" },\n");
3552 }
3553 printf("};\n");
3554 }
3555 printf("const TestResult kReference%s[] = {\n", mnemonic);
3556 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3557 printf(" {\n");
3558 printf(" ARRAY_SIZE(kOutputs_%s_%s),\n",
3559 mnemonic,
3560 kTests[i].identifier);
3561 printf(" kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
3562 printf(" },\n");
3563 }
3564 printf("};\n");
3565 } else if (kCheckSimulatorTestResults) {
3566 // Check the results.
3567 unsigned total_error_count = 0;
3568 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3569 bool instruction_has_errors = false;
3570 for (size_t j = 0; j < kTests[i].input_size; j++) {
3571 uint32_t apsr = results[i]->outputs[j].apsr;
3572 uint32_t rd = results[i]->outputs[j].rd;
3573 uint32_t rm = results[i]->outputs[j].rm;
3574 uint32_t memop[2] = {results[i]->outputs[j].memop[0],
3575 results[i]->outputs[j].memop[1]};
3576
3577 uint32_t apsr_input = kTests[i].inputs[j].apsr;
3578 uint32_t rd_input = kTests[i].inputs[j].rd;
3579 uint32_t rm_input = kTests[i].inputs[j].rm;
3580 uint32_t memop_input[2] = {kTests[i].inputs[j].memop[0],
3581 kTests[i].inputs[j].memop[1]};
3582
3583 uint32_t apsr_ref = reference[i].outputs[j].apsr;
3584 uint32_t rd_ref = reference[i].outputs[j].rd;
3585 uint32_t rm_ref = reference[i].outputs[j].rm;
3586 uint32_t memop_ref[2] = {results[i]->outputs[j].memop[0],
3587 results[i]->outputs[j].memop[1]};
3588
3589
3590 if (((apsr != apsr_ref) || (rd != rd_ref) || (rm != rm_ref) ||
3591 ((memop[0] != memop_ref[0]) && (memop[1] != memop_ref[1]))) &&
3592 (++total_error_count <= kErrorReportLimit)) {
3593 // Print the instruction once even if it triggered multiple failures.
3594 if (!instruction_has_errors) {
3595 printf("Error(s) when testing \"%s %s\":\n",
3596 mnemonic,
3597 kTests[i].operands_description);
3598 instruction_has_errors = true;
3599 }
3600 // Print subsequent errors.
3601 printf(" Input: ");
3602 printf("0x%08" PRIx32, apsr_input);
3603 printf(", ");
3604 printf("0x%08" PRIx32, rd_input);
3605 printf(", ");
3606 printf("0x%08" PRIx32, rm_input);
3607 printf(", ");
3608 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3609 memop_input[0],
3610 memop_input[1]);
3611 printf("\n");
3612 printf(" Expected: ");
3613 printf("0x%08" PRIx32, apsr_ref);
3614 printf(", ");
3615 printf("0x%08" PRIx32, rd_ref);
3616 printf(", ");
3617 printf("0x%08" PRIx32, rm_ref);
3618 printf(", ");
3619 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3620 memop_ref[0],
3621 memop_ref[1]);
3622 printf("\n");
3623 printf(" Found: ");
3624 printf("0x%08" PRIx32, apsr);
3625 printf(", ");
3626 printf("0x%08" PRIx32, rd);
3627 printf(", ");
3628 printf("0x%08" PRIx32, rm);
3629 printf(", ");
3630 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}", memop[0], memop[1]);
3631 printf("\n\n");
3632 }
3633 }
3634 }
3635
3636 if (total_error_count > kErrorReportLimit) {
3637 printf("%u other errors follow.\n",
3638 total_error_count - kErrorReportLimit);
3639 }
3640 VIXL_CHECK(total_error_count == 0);
3641 } else {
3642 VIXL_WARNING("Assembled the code, but did not run anything.\n");
3643 }
3644
3645 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3646 delete[] results[i]->outputs;
3647 delete results[i];
3648 delete[] scratch_memory_buffers[i];
3649 }
3650 }
3651
3652 // Instantiate tests for each instruction in the list.
3653 // TODO: Remove this limitation by having a sandboxing mechanism.
3654 #if defined(VIXL_HOST_POINTER_32)
3655 #define TEST(mnemonic) \
3656 void Test_##mnemonic() { \
3657 TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
3658 } \
3659 Test test_##mnemonic( \
3660 "AARCH32_SIMULATOR_COND_RD_MEMOP_RS_SHIFT_AMOUNT_1TO32_" #mnemonic \
3661 "_A32", \
3662 &Test_##mnemonic);
3663 #else
3664 #define TEST(mnemonic) \
3665 void Test_##mnemonic() { \
3666 VIXL_WARNING("This test can only run on a 32-bit host.\n"); \
3667 USE(TestHelper); \
3668 } \
3669 Test test_##mnemonic( \
3670 "AARCH32_SIMULATOR_COND_RD_MEMOP_RS_SHIFT_AMOUNT_1TO32_" #mnemonic \
3671 "_A32", \
3672 &Test_##mnemonic);
3673 #endif
3674
3675 FOREACH_INSTRUCTION(TEST)
3676 #undef TEST
3677
3678 } // namespace
3679 #endif
3680
3681 } // namespace aarch32
3682 } // namespace vixl
3683