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(Ldrh) \
119 M(Ldrsb) \
120 M(Ldrsh) \
121 M(Str) \
122 M(Strb) \
123 M(Strh)
124
125
126 // The following definitions are defined again in each generated test, therefore
127 // we need to place them in an anomymous namespace. It expresses that they are
128 // local to this file only, and the compiler is not allowed to share these types
129 // across test files during template instantiation. Specifically, `Operands` and
130 // `Inputs` have various layouts across generated tests so they absolutely
131 // cannot be shared.
132
133 #ifdef VIXL_INCLUDE_TARGET_A32
134 namespace {
135
136 // Values to be passed to the assembler to produce the instruction under test.
137 struct Operands {
138 Condition cond;
139 Register rd;
140 Register rn;
141 Sign sign;
142 Register rm;
143 AddrMode addr_mode;
144 };
145
146 // Input data to feed to the instruction.
147 struct Inputs {
148 uint32_t apsr;
149 uint32_t rd;
150 uint32_t rm;
151 uint32_t memop[2];
152 };
153
154 // This structure contains all input data needed to test one specific encoding.
155 // It used to generate a loop over an instruction.
156 struct TestLoopData {
157 // The `operands` fields represents the values to pass to the assembler to
158 // produce the instruction.
159 Operands operands;
160 // Description of the operands, used for error reporting.
161 const char* operands_description;
162 // Unique identifier, used for generating traces.
163 const char* identifier;
164 // Array of values to be fed to the instruction.
165 size_t input_size;
166 const Inputs* inputs;
167 };
168
169 static const Inputs kCondition[] = {{NFlag, 0xabababab, 0, {0, 0x77777777}},
170 {ZFlag, 0xabababab, 0, {0, 0x77777777}},
171 {CFlag, 0xabababab, 0, {0, 0x77777777}},
172 {VFlag, 0xabababab, 0, {0, 0x77777777}},
173 {NZFlag, 0xabababab, 0, {0, 0x77777777}},
174 {NCFlag, 0xabababab, 0, {0, 0x77777777}},
175 {NVFlag, 0xabababab, 0, {0, 0x77777777}},
176 {ZCFlag, 0xabababab, 0, {0, 0x77777777}},
177 {ZVFlag, 0xabababab, 0, {0, 0x77777777}},
178 {CVFlag, 0xabababab, 0, {0, 0x77777777}},
179 {NZCFlag, 0xabababab, 0, {0, 0x77777777}},
180 {NZVFlag, 0xabababab, 0, {0, 0x77777777}},
181 {NCVFlag, 0xabababab, 0, {0, 0x77777777}},
182 {ZCVFlag, 0xabababab, 0, {0, 0x77777777}},
183 {NZCVFlag, 0xabababab, 0, {0, 0x77777777}}};
184
185 static const Inputs kPositiveOffset[] =
186 {{NoFlag, 0xabababab, 1651, {0, 0x0cabba9e}},
187 {NoFlag, 0xabababab, 601, {0, 0x0cabba9e}},
188 {NoFlag, 0xabababab, 1934, {0, 0x0badbeef}},
189 {NoFlag, 0xabababab, 3952, {0, 0x0cabba9e}},
190 {NoFlag, 0xabababab, 674, {0, 0x55555555}},
191 {NoFlag, 0xabababab, 3438, {0, 0x0cabba9e}},
192 {NoFlag, 0xabababab, 3963, {0, 0x0cabba9e}},
193 {NoFlag, 0xabababab, 1428, {0, 0x0cabba9e}},
194 {NoFlag, 0xabababab, 1835, {0, 0x0cabba9e}},
195 {NoFlag, 0xabababab, 2619, {0, 0x77777777}}};
196
197 static const Inputs kNegativeOffset[] =
198 {{NoFlag, 0xabababab, 1635, {0, 0x0cabba9e}},
199 {NoFlag, 0xabababab, 48, {0, 0x0badbeef}},
200 {NoFlag, 0xabababab, 3871, {0, 0x0cabba9e}},
201 {NoFlag, 0xabababab, 517, {0, 0x77777777}},
202 {NoFlag, 0xabababab, 513, {0, 0x0badbeef}},
203 {NoFlag, 0xabababab, 1348, {0, 0x77777777}},
204 {NoFlag, 0xabababab, 3002, {0, 0x0badbeef}},
205 {NoFlag, 0xabababab, 306, {0, 0x0badbeef}},
206 {NoFlag, 0xabababab, 1458, {0, 0x0cabba9e}},
207 {NoFlag, 0xabababab, 3028, {0, 0x55555555}}};
208
209 static const Inputs kPositivePostIndex[] =
210 {{NoFlag, 0xabababab, 2442, {0, 0x55555555}},
211 {NoFlag, 0xabababab, 1485, {0, 0x0badbeef}},
212 {NoFlag, 0xabababab, 674, {0, 0x0badbeef}},
213 {NoFlag, 0xabababab, 55, {0, 0x0badbeef}},
214 {NoFlag, 0xabababab, 2395, {0, 0x0cabba9e}},
215 {NoFlag, 0xabababab, 582, {0, 0x77777777}},
216 {NoFlag, 0xabababab, 3572, {0, 0x77777777}},
217 {NoFlag, 0xabababab, 2849, {0, 0x0cabba9e}},
218 {NoFlag, 0xabababab, 3522, {0, 0x77777777}},
219 {NoFlag, 0xabababab, 1234, {0, 0x0badbeef}}};
220
221 static const Inputs kNegativePostIndex[] =
222 {{NoFlag, 0xabababab, 3413, {0, 0x55555555}},
223 {NoFlag, 0xabababab, 2442, {0, 0x0badbeef}},
224 {NoFlag, 0xabababab, 3136, {0, 0x0badbeef}},
225 {NoFlag, 0xabababab, 2119, {0, 0x0badbeef}},
226 {NoFlag, 0xabababab, 778, {0, 0x0badbeef}},
227 {NoFlag, 0xabababab, 1666, {0, 0x77777777}},
228 {NoFlag, 0xabababab, 3069, {0, 0x0badbeef}},
229 {NoFlag, 0xabababab, 365, {0, 0x0badbeef}},
230 {NoFlag, 0xabababab, 3094, {0, 0x55555555}},
231 {NoFlag, 0xabababab, 2690, {0, 0x55555555}}};
232
233 static const Inputs kPositivePreIndex[] =
234 {{NoFlag, 0xabababab, 2072, {0, 0x0badbeef}},
235 {NoFlag, 0xabababab, 22, {0, 0x0badbeef}},
236 {NoFlag, 0xabababab, 2254, {0, 0x55555555}},
237 {NoFlag, 0xabababab, 3002, {0, 0x55555555}},
238 {NoFlag, 0xabababab, 3391, {0, 0x0cabba9e}},
239 {NoFlag, 0xabababab, 3449, {0, 0x0cabba9e}},
240 {NoFlag, 0xabababab, 2796, {0, 0x0badbeef}},
241 {NoFlag, 0xabababab, 3325, {0, 0x0badbeef}},
242 {NoFlag, 0xabababab, 365, {0, 0x55555555}},
243 {NoFlag, 0xabababab, 1323, {0, 0x77777777}}};
244
245 static const Inputs kNegativePreIndex[] =
246 {{NoFlag, 0xabababab, 3821, {0, 0x0badbeef}},
247 {NoFlag, 0xabababab, 2892, {0, 0x77777777}},
248 {NoFlag, 0xabababab, 3439, {0, 0x0cabba9e}},
249 {NoFlag, 0xabababab, 3057, {0, 0x55555555}},
250 {NoFlag, 0xabababab, 2559, {0, 0x55555555}},
251 {NoFlag, 0xabababab, 3663, {0, 0x0cabba9e}},
252 {NoFlag, 0xabababab, 1506, {0, 0x0badbeef}},
253 {NoFlag, 0xabababab, 2011, {0, 0x77777777}},
254 {NoFlag, 0xabababab, 3865, {0, 0x77777777}},
255 {NoFlag, 0xabababab, 4058, {0, 0x55555555}}};
256
257
258 // A loop will be generated for each element of this array.
259 const TestLoopData kTests[] =
260 {{{eq, r0, r1, plus, r8, Offset},
261 "eq r0 r1 plus r8 Offset",
262 "Condition_eq_r0_r1_plus_r8_Offset",
263 ARRAY_SIZE(kCondition),
264 kCondition},
265 {{ne, r0, r1, plus, r8, Offset},
266 "ne r0 r1 plus r8 Offset",
267 "Condition_ne_r0_r1_plus_r8_Offset",
268 ARRAY_SIZE(kCondition),
269 kCondition},
270 {{cs, r0, r1, plus, r8, Offset},
271 "cs r0 r1 plus r8 Offset",
272 "Condition_cs_r0_r1_plus_r8_Offset",
273 ARRAY_SIZE(kCondition),
274 kCondition},
275 {{cc, r0, r1, plus, r8, Offset},
276 "cc r0 r1 plus r8 Offset",
277 "Condition_cc_r0_r1_plus_r8_Offset",
278 ARRAY_SIZE(kCondition),
279 kCondition},
280 {{mi, r0, r1, plus, r8, Offset},
281 "mi r0 r1 plus r8 Offset",
282 "Condition_mi_r0_r1_plus_r8_Offset",
283 ARRAY_SIZE(kCondition),
284 kCondition},
285 {{pl, r0, r1, plus, r8, Offset},
286 "pl r0 r1 plus r8 Offset",
287 "Condition_pl_r0_r1_plus_r8_Offset",
288 ARRAY_SIZE(kCondition),
289 kCondition},
290 {{vs, r0, r1, plus, r8, Offset},
291 "vs r0 r1 plus r8 Offset",
292 "Condition_vs_r0_r1_plus_r8_Offset",
293 ARRAY_SIZE(kCondition),
294 kCondition},
295 {{vc, r0, r1, plus, r8, Offset},
296 "vc r0 r1 plus r8 Offset",
297 "Condition_vc_r0_r1_plus_r8_Offset",
298 ARRAY_SIZE(kCondition),
299 kCondition},
300 {{hi, r0, r1, plus, r8, Offset},
301 "hi r0 r1 plus r8 Offset",
302 "Condition_hi_r0_r1_plus_r8_Offset",
303 ARRAY_SIZE(kCondition),
304 kCondition},
305 {{ls, r0, r1, plus, r8, Offset},
306 "ls r0 r1 plus r8 Offset",
307 "Condition_ls_r0_r1_plus_r8_Offset",
308 ARRAY_SIZE(kCondition),
309 kCondition},
310 {{ge, r0, r1, plus, r8, Offset},
311 "ge r0 r1 plus r8 Offset",
312 "Condition_ge_r0_r1_plus_r8_Offset",
313 ARRAY_SIZE(kCondition),
314 kCondition},
315 {{lt, r0, r1, plus, r8, Offset},
316 "lt r0 r1 plus r8 Offset",
317 "Condition_lt_r0_r1_plus_r8_Offset",
318 ARRAY_SIZE(kCondition),
319 kCondition},
320 {{gt, r0, r1, plus, r8, Offset},
321 "gt r0 r1 plus r8 Offset",
322 "Condition_gt_r0_r1_plus_r8_Offset",
323 ARRAY_SIZE(kCondition),
324 kCondition},
325 {{le, r0, r1, plus, r8, Offset},
326 "le r0 r1 plus r8 Offset",
327 "Condition_le_r0_r1_plus_r8_Offset",
328 ARRAY_SIZE(kCondition),
329 kCondition},
330 {{al, r0, r1, plus, r8, Offset},
331 "al r0 r1 plus r8 Offset",
332 "Condition_al_r0_r1_plus_r8_Offset",
333 ARRAY_SIZE(kCondition),
334 kCondition},
335 {{al, r9, r8, plus, r14, Offset},
336 "al r9 r8 plus r14 Offset",
337 "PositiveOffset_al_r9_r8_plus_r14_Offset",
338 ARRAY_SIZE(kPositiveOffset),
339 kPositiveOffset},
340 {{al, r3, r8, plus, r9, Offset},
341 "al r3 r8 plus r9 Offset",
342 "PositiveOffset_al_r3_r8_plus_r9_Offset",
343 ARRAY_SIZE(kPositiveOffset),
344 kPositiveOffset},
345 {{al, r11, r6, plus, r9, Offset},
346 "al r11 r6 plus r9 Offset",
347 "PositiveOffset_al_r11_r6_plus_r9_Offset",
348 ARRAY_SIZE(kPositiveOffset),
349 kPositiveOffset},
350 {{al, r4, r0, plus, r12, Offset},
351 "al r4 r0 plus r12 Offset",
352 "PositiveOffset_al_r4_r0_plus_r12_Offset",
353 ARRAY_SIZE(kPositiveOffset),
354 kPositiveOffset},
355 {{al, r8, r3, plus, r14, Offset},
356 "al r8 r3 plus r14 Offset",
357 "PositiveOffset_al_r8_r3_plus_r14_Offset",
358 ARRAY_SIZE(kPositiveOffset),
359 kPositiveOffset},
360 {{al, r10, r9, plus, r14, Offset},
361 "al r10 r9 plus r14 Offset",
362 "PositiveOffset_al_r10_r9_plus_r14_Offset",
363 ARRAY_SIZE(kPositiveOffset),
364 kPositiveOffset},
365 {{al, r7, r4, plus, r0, Offset},
366 "al r7 r4 plus r0 Offset",
367 "PositiveOffset_al_r7_r4_plus_r0_Offset",
368 ARRAY_SIZE(kPositiveOffset),
369 kPositiveOffset},
370 {{al, r4, r5, plus, r0, Offset},
371 "al r4 r5 plus r0 Offset",
372 "PositiveOffset_al_r4_r5_plus_r0_Offset",
373 ARRAY_SIZE(kPositiveOffset),
374 kPositiveOffset},
375 {{al, r14, r4, plus, r6, Offset},
376 "al r14 r4 plus r6 Offset",
377 "PositiveOffset_al_r14_r4_plus_r6_Offset",
378 ARRAY_SIZE(kPositiveOffset),
379 kPositiveOffset},
380 {{al, r3, r10, plus, r0, Offset},
381 "al r3 r10 plus r0 Offset",
382 "PositiveOffset_al_r3_r10_plus_r0_Offset",
383 ARRAY_SIZE(kPositiveOffset),
384 kPositiveOffset},
385 {{al, r8, r3, plus, r7, Offset},
386 "al r8 r3 plus r7 Offset",
387 "PositiveOffset_al_r8_r3_plus_r7_Offset",
388 ARRAY_SIZE(kPositiveOffset),
389 kPositiveOffset},
390 {{al, r11, r10, plus, r3, Offset},
391 "al r11 r10 plus r3 Offset",
392 "PositiveOffset_al_r11_r10_plus_r3_Offset",
393 ARRAY_SIZE(kPositiveOffset),
394 kPositiveOffset},
395 {{al, r10, r4, plus, r14, Offset},
396 "al r10 r4 plus r14 Offset",
397 "PositiveOffset_al_r10_r4_plus_r14_Offset",
398 ARRAY_SIZE(kPositiveOffset),
399 kPositiveOffset},
400 {{al, r0, r3, plus, r9, Offset},
401 "al r0 r3 plus r9 Offset",
402 "PositiveOffset_al_r0_r3_plus_r9_Offset",
403 ARRAY_SIZE(kPositiveOffset),
404 kPositiveOffset},
405 {{al, r10, r8, plus, r3, Offset},
406 "al r10 r8 plus r3 Offset",
407 "PositiveOffset_al_r10_r8_plus_r3_Offset",
408 ARRAY_SIZE(kPositiveOffset),
409 kPositiveOffset},
410 {{al, r3, r1, plus, r5, Offset},
411 "al r3 r1 plus r5 Offset",
412 "PositiveOffset_al_r3_r1_plus_r5_Offset",
413 ARRAY_SIZE(kPositiveOffset),
414 kPositiveOffset},
415 {{al, r6, r14, plus, r12, Offset},
416 "al r6 r14 plus r12 Offset",
417 "PositiveOffset_al_r6_r14_plus_r12_Offset",
418 ARRAY_SIZE(kPositiveOffset),
419 kPositiveOffset},
420 {{al, r14, r3, plus, r1, Offset},
421 "al r14 r3 plus r1 Offset",
422 "PositiveOffset_al_r14_r3_plus_r1_Offset",
423 ARRAY_SIZE(kPositiveOffset),
424 kPositiveOffset},
425 {{al, r12, r7, plus, r4, Offset},
426 "al r12 r7 plus r4 Offset",
427 "PositiveOffset_al_r12_r7_plus_r4_Offset",
428 ARRAY_SIZE(kPositiveOffset),
429 kPositiveOffset},
430 {{al, r0, r12, plus, r11, Offset},
431 "al r0 r12 plus r11 Offset",
432 "PositiveOffset_al_r0_r12_plus_r11_Offset",
433 ARRAY_SIZE(kPositiveOffset),
434 kPositiveOffset},
435 {{al, r5, r10, plus, r9, Offset},
436 "al r5 r10 plus r9 Offset",
437 "PositiveOffset_al_r5_r10_plus_r9_Offset",
438 ARRAY_SIZE(kPositiveOffset),
439 kPositiveOffset},
440 {{al, r6, r9, plus, r10, Offset},
441 "al r6 r9 plus r10 Offset",
442 "PositiveOffset_al_r6_r9_plus_r10_Offset",
443 ARRAY_SIZE(kPositiveOffset),
444 kPositiveOffset},
445 {{al, r1, r2, plus, r14, Offset},
446 "al r1 r2 plus r14 Offset",
447 "PositiveOffset_al_r1_r2_plus_r14_Offset",
448 ARRAY_SIZE(kPositiveOffset),
449 kPositiveOffset},
450 {{al, r4, r6, plus, r10, Offset},
451 "al r4 r6 plus r10 Offset",
452 "PositiveOffset_al_r4_r6_plus_r10_Offset",
453 ARRAY_SIZE(kPositiveOffset),
454 kPositiveOffset},
455 {{al, r1, r14, plus, r9, Offset},
456 "al r1 r14 plus r9 Offset",
457 "PositiveOffset_al_r1_r14_plus_r9_Offset",
458 ARRAY_SIZE(kPositiveOffset),
459 kPositiveOffset},
460 {{al, r14, r4, plus, r8, Offset},
461 "al r14 r4 plus r8 Offset",
462 "PositiveOffset_al_r14_r4_plus_r8_Offset",
463 ARRAY_SIZE(kPositiveOffset),
464 kPositiveOffset},
465 {{al, r9, r11, plus, r4, Offset},
466 "al r9 r11 plus r4 Offset",
467 "PositiveOffset_al_r9_r11_plus_r4_Offset",
468 ARRAY_SIZE(kPositiveOffset),
469 kPositiveOffset},
470 {{al, r9, r7, plus, r12, Offset},
471 "al r9 r7 plus r12 Offset",
472 "PositiveOffset_al_r9_r7_plus_r12_Offset",
473 ARRAY_SIZE(kPositiveOffset),
474 kPositiveOffset},
475 {{al, r8, r6, plus, r11, Offset},
476 "al r8 r6 plus r11 Offset",
477 "PositiveOffset_al_r8_r6_plus_r11_Offset",
478 ARRAY_SIZE(kPositiveOffset),
479 kPositiveOffset},
480 {{al, r1, r12, plus, r4, Offset},
481 "al r1 r12 plus r4 Offset",
482 "PositiveOffset_al_r1_r12_plus_r4_Offset",
483 ARRAY_SIZE(kPositiveOffset),
484 kPositiveOffset},
485 {{al, r3, r7, plus, r10, Offset},
486 "al r3 r7 plus r10 Offset",
487 "PositiveOffset_al_r3_r7_plus_r10_Offset",
488 ARRAY_SIZE(kPositiveOffset),
489 kPositiveOffset},
490 {{al, r11, r4, plus, r7, Offset},
491 "al r11 r4 plus r7 Offset",
492 "PositiveOffset_al_r11_r4_plus_r7_Offset",
493 ARRAY_SIZE(kPositiveOffset),
494 kPositiveOffset},
495 {{al, r3, r7, plus, r0, Offset},
496 "al r3 r7 plus r0 Offset",
497 "PositiveOffset_al_r3_r7_plus_r0_Offset",
498 ARRAY_SIZE(kPositiveOffset),
499 kPositiveOffset},
500 {{al, r4, r0, plus, r2, Offset},
501 "al r4 r0 plus r2 Offset",
502 "PositiveOffset_al_r4_r0_plus_r2_Offset",
503 ARRAY_SIZE(kPositiveOffset),
504 kPositiveOffset},
505 {{al, r5, r14, plus, r6, Offset},
506 "al r5 r14 plus r6 Offset",
507 "PositiveOffset_al_r5_r14_plus_r6_Offset",
508 ARRAY_SIZE(kPositiveOffset),
509 kPositiveOffset},
510 {{al, r6, r14, plus, r9, Offset},
511 "al r6 r14 plus r9 Offset",
512 "PositiveOffset_al_r6_r14_plus_r9_Offset",
513 ARRAY_SIZE(kPositiveOffset),
514 kPositiveOffset},
515 {{al, r2, r9, plus, r6, Offset},
516 "al r2 r9 plus r6 Offset",
517 "PositiveOffset_al_r2_r9_plus_r6_Offset",
518 ARRAY_SIZE(kPositiveOffset),
519 kPositiveOffset},
520 {{al, r1, r3, plus, r4, Offset},
521 "al r1 r3 plus r4 Offset",
522 "PositiveOffset_al_r1_r3_plus_r4_Offset",
523 ARRAY_SIZE(kPositiveOffset),
524 kPositiveOffset},
525 {{al, r5, r11, plus, r8, Offset},
526 "al r5 r11 plus r8 Offset",
527 "PositiveOffset_al_r5_r11_plus_r8_Offset",
528 ARRAY_SIZE(kPositiveOffset),
529 kPositiveOffset},
530 {{al, r11, r9, plus, r3, Offset},
531 "al r11 r9 plus r3 Offset",
532 "PositiveOffset_al_r11_r9_plus_r3_Offset",
533 ARRAY_SIZE(kPositiveOffset),
534 kPositiveOffset},
535 {{al, r4, r12, plus, r5, Offset},
536 "al r4 r12 plus r5 Offset",
537 "PositiveOffset_al_r4_r12_plus_r5_Offset",
538 ARRAY_SIZE(kPositiveOffset),
539 kPositiveOffset},
540 {{al, r7, r8, plus, r12, Offset},
541 "al r7 r8 plus r12 Offset",
542 "PositiveOffset_al_r7_r8_plus_r12_Offset",
543 ARRAY_SIZE(kPositiveOffset),
544 kPositiveOffset},
545 {{al, r10, r14, plus, r6, Offset},
546 "al r10 r14 plus r6 Offset",
547 "PositiveOffset_al_r10_r14_plus_r6_Offset",
548 ARRAY_SIZE(kPositiveOffset),
549 kPositiveOffset},
550 {{al, r1, r6, plus, r10, Offset},
551 "al r1 r6 plus r10 Offset",
552 "PositiveOffset_al_r1_r6_plus_r10_Offset",
553 ARRAY_SIZE(kPositiveOffset),
554 kPositiveOffset},
555 {{al, r2, r6, plus, r3, Offset},
556 "al r2 r6 plus r3 Offset",
557 "PositiveOffset_al_r2_r6_plus_r3_Offset",
558 ARRAY_SIZE(kPositiveOffset),
559 kPositiveOffset},
560 {{al, r9, r10, plus, r6, Offset},
561 "al r9 r10 plus r6 Offset",
562 "PositiveOffset_al_r9_r10_plus_r6_Offset",
563 ARRAY_SIZE(kPositiveOffset),
564 kPositiveOffset},
565 {{al, r8, r3, plus, r10, Offset},
566 "al r8 r3 plus r10 Offset",
567 "PositiveOffset_al_r8_r3_plus_r10_Offset",
568 ARRAY_SIZE(kPositiveOffset),
569 kPositiveOffset},
570 {{al, r5, r9, plus, r12, Offset},
571 "al r5 r9 plus r12 Offset",
572 "PositiveOffset_al_r5_r9_plus_r12_Offset",
573 ARRAY_SIZE(kPositiveOffset),
574 kPositiveOffset},
575 {{al, r3, r0, plus, r12, Offset},
576 "al r3 r0 plus r12 Offset",
577 "PositiveOffset_al_r3_r0_plus_r12_Offset",
578 ARRAY_SIZE(kPositiveOffset),
579 kPositiveOffset},
580 {{al, r3, r8, plus, r2, Offset},
581 "al r3 r8 plus r2 Offset",
582 "PositiveOffset_al_r3_r8_plus_r2_Offset",
583 ARRAY_SIZE(kPositiveOffset),
584 kPositiveOffset},
585 {{al, r9, r5, plus, r6, Offset},
586 "al r9 r5 plus r6 Offset",
587 "PositiveOffset_al_r9_r5_plus_r6_Offset",
588 ARRAY_SIZE(kPositiveOffset),
589 kPositiveOffset},
590 {{al, r3, r0, plus, r9, Offset},
591 "al r3 r0 plus r9 Offset",
592 "PositiveOffset_al_r3_r0_plus_r9_Offset",
593 ARRAY_SIZE(kPositiveOffset),
594 kPositiveOffset},
595 {{al, r7, r12, plus, r9, Offset},
596 "al r7 r12 plus r9 Offset",
597 "PositiveOffset_al_r7_r12_plus_r9_Offset",
598 ARRAY_SIZE(kPositiveOffset),
599 kPositiveOffset},
600 {{al, r10, r3, plus, r0, Offset},
601 "al r10 r3 plus r0 Offset",
602 "PositiveOffset_al_r10_r3_plus_r0_Offset",
603 ARRAY_SIZE(kPositiveOffset),
604 kPositiveOffset},
605 {{al, r1, r14, plus, r11, Offset},
606 "al r1 r14 plus r11 Offset",
607 "PositiveOffset_al_r1_r14_plus_r11_Offset",
608 ARRAY_SIZE(kPositiveOffset),
609 kPositiveOffset},
610 {{al, r11, r10, plus, r6, Offset},
611 "al r11 r10 plus r6 Offset",
612 "PositiveOffset_al_r11_r10_plus_r6_Offset",
613 ARRAY_SIZE(kPositiveOffset),
614 kPositiveOffset},
615 {{al, r9, r11, plus, r6, Offset},
616 "al r9 r11 plus r6 Offset",
617 "PositiveOffset_al_r9_r11_plus_r6_Offset",
618 ARRAY_SIZE(kPositiveOffset),
619 kPositiveOffset},
620 {{al, r4, r0, plus, r5, Offset},
621 "al r4 r0 plus r5 Offset",
622 "PositiveOffset_al_r4_r0_plus_r5_Offset",
623 ARRAY_SIZE(kPositiveOffset),
624 kPositiveOffset},
625 {{al, r10, r14, plus, r4, Offset},
626 "al r10 r14 plus r4 Offset",
627 "PositiveOffset_al_r10_r14_plus_r4_Offset",
628 ARRAY_SIZE(kPositiveOffset),
629 kPositiveOffset},
630 {{al, r11, r7, plus, r14, Offset},
631 "al r11 r7 plus r14 Offset",
632 "PositiveOffset_al_r11_r7_plus_r14_Offset",
633 ARRAY_SIZE(kPositiveOffset),
634 kPositiveOffset},
635 {{al, r8, r2, plus, r9, Offset},
636 "al r8 r2 plus r9 Offset",
637 "PositiveOffset_al_r8_r2_plus_r9_Offset",
638 ARRAY_SIZE(kPositiveOffset),
639 kPositiveOffset},
640 {{al, r7, r2, plus, r11, Offset},
641 "al r7 r2 plus r11 Offset",
642 "PositiveOffset_al_r7_r2_plus_r11_Offset",
643 ARRAY_SIZE(kPositiveOffset),
644 kPositiveOffset},
645 {{al, r12, r6, plus, r14, Offset},
646 "al r12 r6 plus r14 Offset",
647 "PositiveOffset_al_r12_r6_plus_r14_Offset",
648 ARRAY_SIZE(kPositiveOffset),
649 kPositiveOffset},
650 {{al, r3, r2, plus, r1, Offset},
651 "al r3 r2 plus r1 Offset",
652 "PositiveOffset_al_r3_r2_plus_r1_Offset",
653 ARRAY_SIZE(kPositiveOffset),
654 kPositiveOffset},
655 {{al, r14, r5, plus, r12, Offset},
656 "al r14 r5 plus r12 Offset",
657 "PositiveOffset_al_r14_r5_plus_r12_Offset",
658 ARRAY_SIZE(kPositiveOffset),
659 kPositiveOffset},
660 {{al, r4, r9, plus, r2, Offset},
661 "al r4 r9 plus r2 Offset",
662 "PositiveOffset_al_r4_r9_plus_r2_Offset",
663 ARRAY_SIZE(kPositiveOffset),
664 kPositiveOffset},
665 {{al, r5, r4, plus, r7, Offset},
666 "al r5 r4 plus r7 Offset",
667 "PositiveOffset_al_r5_r4_plus_r7_Offset",
668 ARRAY_SIZE(kPositiveOffset),
669 kPositiveOffset},
670 {{al, r7, r2, plus, r14, Offset},
671 "al r7 r2 plus r14 Offset",
672 "PositiveOffset_al_r7_r2_plus_r14_Offset",
673 ARRAY_SIZE(kPositiveOffset),
674 kPositiveOffset},
675 {{al, r4, r8, plus, r2, Offset},
676 "al r4 r8 plus r2 Offset",
677 "PositiveOffset_al_r4_r8_plus_r2_Offset",
678 ARRAY_SIZE(kPositiveOffset),
679 kPositiveOffset},
680 {{al, r7, r5, plus, r6, Offset},
681 "al r7 r5 plus r6 Offset",
682 "PositiveOffset_al_r7_r5_plus_r6_Offset",
683 ARRAY_SIZE(kPositiveOffset),
684 kPositiveOffset},
685 {{al, r11, r8, plus, r6, Offset},
686 "al r11 r8 plus r6 Offset",
687 "PositiveOffset_al_r11_r8_plus_r6_Offset",
688 ARRAY_SIZE(kPositiveOffset),
689 kPositiveOffset},
690 {{al, r8, r0, plus, r1, Offset},
691 "al r8 r0 plus r1 Offset",
692 "PositiveOffset_al_r8_r0_plus_r1_Offset",
693 ARRAY_SIZE(kPositiveOffset),
694 kPositiveOffset},
695 {{al, r4, r9, plus, r8, Offset},
696 "al r4 r9 plus r8 Offset",
697 "PositiveOffset_al_r4_r9_plus_r8_Offset",
698 ARRAY_SIZE(kPositiveOffset),
699 kPositiveOffset},
700 {{al, r7, r1, plus, r12, Offset},
701 "al r7 r1 plus r12 Offset",
702 "PositiveOffset_al_r7_r1_plus_r12_Offset",
703 ARRAY_SIZE(kPositiveOffset),
704 kPositiveOffset},
705 {{al, r12, r14, plus, r11, Offset},
706 "al r12 r14 plus r11 Offset",
707 "PositiveOffset_al_r12_r14_plus_r11_Offset",
708 ARRAY_SIZE(kPositiveOffset),
709 kPositiveOffset},
710 {{al, r1, r6, plus, r5, Offset},
711 "al r1 r6 plus r5 Offset",
712 "PositiveOffset_al_r1_r6_plus_r5_Offset",
713 ARRAY_SIZE(kPositiveOffset),
714 kPositiveOffset},
715 {{al, r9, r10, plus, r1, Offset},
716 "al r9 r10 plus r1 Offset",
717 "PositiveOffset_al_r9_r10_plus_r1_Offset",
718 ARRAY_SIZE(kPositiveOffset),
719 kPositiveOffset},
720 {{al, r8, r14, plus, r10, Offset},
721 "al r8 r14 plus r10 Offset",
722 "PositiveOffset_al_r8_r14_plus_r10_Offset",
723 ARRAY_SIZE(kPositiveOffset),
724 kPositiveOffset},
725 {{al, r12, r10, plus, r0, Offset},
726 "al r12 r10 plus r0 Offset",
727 "PositiveOffset_al_r12_r10_plus_r0_Offset",
728 ARRAY_SIZE(kPositiveOffset),
729 kPositiveOffset},
730 {{al, r6, r2, plus, r10, Offset},
731 "al r6 r2 plus r10 Offset",
732 "PositiveOffset_al_r6_r2_plus_r10_Offset",
733 ARRAY_SIZE(kPositiveOffset),
734 kPositiveOffset},
735 {{al, r9, r1, plus, r5, Offset},
736 "al r9 r1 plus r5 Offset",
737 "PositiveOffset_al_r9_r1_plus_r5_Offset",
738 ARRAY_SIZE(kPositiveOffset),
739 kPositiveOffset},
740 {{al, r4, r6, plus, r5, Offset},
741 "al r4 r6 plus r5 Offset",
742 "PositiveOffset_al_r4_r6_plus_r5_Offset",
743 ARRAY_SIZE(kPositiveOffset),
744 kPositiveOffset},
745 {{al, r12, r5, plus, r11, Offset},
746 "al r12 r5 plus r11 Offset",
747 "PositiveOffset_al_r12_r5_plus_r11_Offset",
748 ARRAY_SIZE(kPositiveOffset),
749 kPositiveOffset},
750 {{al, r0, r2, plus, r1, Offset},
751 "al r0 r2 plus r1 Offset",
752 "PositiveOffset_al_r0_r2_plus_r1_Offset",
753 ARRAY_SIZE(kPositiveOffset),
754 kPositiveOffset},
755 {{al, r9, r1, plus, r8, Offset},
756 "al r9 r1 plus r8 Offset",
757 "PositiveOffset_al_r9_r1_plus_r8_Offset",
758 ARRAY_SIZE(kPositiveOffset),
759 kPositiveOffset},
760 {{al, r6, r4, plus, r9, Offset},
761 "al r6 r4 plus r9 Offset",
762 "PositiveOffset_al_r6_r4_plus_r9_Offset",
763 ARRAY_SIZE(kPositiveOffset),
764 kPositiveOffset},
765 {{al, r11, r2, plus, r7, Offset},
766 "al r11 r2 plus r7 Offset",
767 "PositiveOffset_al_r11_r2_plus_r7_Offset",
768 ARRAY_SIZE(kPositiveOffset),
769 kPositiveOffset},
770 {{al, r11, r4, plus, r0, Offset},
771 "al r11 r4 plus r0 Offset",
772 "PositiveOffset_al_r11_r4_plus_r0_Offset",
773 ARRAY_SIZE(kPositiveOffset),
774 kPositiveOffset},
775 {{al, r2, r11, plus, r7, Offset},
776 "al r2 r11 plus r7 Offset",
777 "PositiveOffset_al_r2_r11_plus_r7_Offset",
778 ARRAY_SIZE(kPositiveOffset),
779 kPositiveOffset},
780 {{al, r3, r7, plus, r5, Offset},
781 "al r3 r7 plus r5 Offset",
782 "PositiveOffset_al_r3_r7_plus_r5_Offset",
783 ARRAY_SIZE(kPositiveOffset),
784 kPositiveOffset},
785 {{al, r1, r0, plus, r4, Offset},
786 "al r1 r0 plus r4 Offset",
787 "PositiveOffset_al_r1_r0_plus_r4_Offset",
788 ARRAY_SIZE(kPositiveOffset),
789 kPositiveOffset},
790 {{al, r10, r12, plus, r0, Offset},
791 "al r10 r12 plus r0 Offset",
792 "PositiveOffset_al_r10_r12_plus_r0_Offset",
793 ARRAY_SIZE(kPositiveOffset),
794 kPositiveOffset},
795 {{al, r5, r0, plus, r11, Offset},
796 "al r5 r0 plus r11 Offset",
797 "PositiveOffset_al_r5_r0_plus_r11_Offset",
798 ARRAY_SIZE(kPositiveOffset),
799 kPositiveOffset},
800 {{al, r3, r5, plus, r7, Offset},
801 "al r3 r5 plus r7 Offset",
802 "PositiveOffset_al_r3_r5_plus_r7_Offset",
803 ARRAY_SIZE(kPositiveOffset),
804 kPositiveOffset},
805 {{al, r2, r14, plus, r4, Offset},
806 "al r2 r14 plus r4 Offset",
807 "PositiveOffset_al_r2_r14_plus_r4_Offset",
808 ARRAY_SIZE(kPositiveOffset),
809 kPositiveOffset},
810 {{al, r3, r12, plus, r10, Offset},
811 "al r3 r12 plus r10 Offset",
812 "PositiveOffset_al_r3_r12_plus_r10_Offset",
813 ARRAY_SIZE(kPositiveOffset),
814 kPositiveOffset},
815 {{al, r0, r11, plus, r1, Offset},
816 "al r0 r11 plus r1 Offset",
817 "PositiveOffset_al_r0_r11_plus_r1_Offset",
818 ARRAY_SIZE(kPositiveOffset),
819 kPositiveOffset},
820 {{al, r2, r14, plus, r6, Offset},
821 "al r2 r14 plus r6 Offset",
822 "PositiveOffset_al_r2_r14_plus_r6_Offset",
823 ARRAY_SIZE(kPositiveOffset),
824 kPositiveOffset},
825 {{al, r0, r10, plus, r11, Offset},
826 "al r0 r10 plus r11 Offset",
827 "PositiveOffset_al_r0_r10_plus_r11_Offset",
828 ARRAY_SIZE(kPositiveOffset),
829 kPositiveOffset},
830 {{al, r14, r10, plus, r2, Offset},
831 "al r14 r10 plus r2 Offset",
832 "PositiveOffset_al_r14_r10_plus_r2_Offset",
833 ARRAY_SIZE(kPositiveOffset),
834 kPositiveOffset},
835 {{al, r9, r7, minus, r8, Offset},
836 "al r9 r7 minus r8 Offset",
837 "NegativeOffset_al_r9_r7_minus_r8_Offset",
838 ARRAY_SIZE(kNegativeOffset),
839 kNegativeOffset},
840 {{al, r0, r6, minus, r2, Offset},
841 "al r0 r6 minus r2 Offset",
842 "NegativeOffset_al_r0_r6_minus_r2_Offset",
843 ARRAY_SIZE(kNegativeOffset),
844 kNegativeOffset},
845 {{al, r3, r0, minus, r7, Offset},
846 "al r3 r0 minus r7 Offset",
847 "NegativeOffset_al_r3_r0_minus_r7_Offset",
848 ARRAY_SIZE(kNegativeOffset),
849 kNegativeOffset},
850 {{al, r3, r0, minus, r2, Offset},
851 "al r3 r0 minus r2 Offset",
852 "NegativeOffset_al_r3_r0_minus_r2_Offset",
853 ARRAY_SIZE(kNegativeOffset),
854 kNegativeOffset},
855 {{al, r7, r10, minus, r0, Offset},
856 "al r7 r10 minus r0 Offset",
857 "NegativeOffset_al_r7_r10_minus_r0_Offset",
858 ARRAY_SIZE(kNegativeOffset),
859 kNegativeOffset},
860 {{al, r1, r11, minus, r10, Offset},
861 "al r1 r11 minus r10 Offset",
862 "NegativeOffset_al_r1_r11_minus_r10_Offset",
863 ARRAY_SIZE(kNegativeOffset),
864 kNegativeOffset},
865 {{al, r8, r7, minus, r3, Offset},
866 "al r8 r7 minus r3 Offset",
867 "NegativeOffset_al_r8_r7_minus_r3_Offset",
868 ARRAY_SIZE(kNegativeOffset),
869 kNegativeOffset},
870 {{al, r6, r5, minus, r4, Offset},
871 "al r6 r5 minus r4 Offset",
872 "NegativeOffset_al_r6_r5_minus_r4_Offset",
873 ARRAY_SIZE(kNegativeOffset),
874 kNegativeOffset},
875 {{al, r3, r10, minus, r6, Offset},
876 "al r3 r10 minus r6 Offset",
877 "NegativeOffset_al_r3_r10_minus_r6_Offset",
878 ARRAY_SIZE(kNegativeOffset),
879 kNegativeOffset},
880 {{al, r3, r14, minus, r0, Offset},
881 "al r3 r14 minus r0 Offset",
882 "NegativeOffset_al_r3_r14_minus_r0_Offset",
883 ARRAY_SIZE(kNegativeOffset),
884 kNegativeOffset},
885 {{al, r10, r4, minus, r5, Offset},
886 "al r10 r4 minus r5 Offset",
887 "NegativeOffset_al_r10_r4_minus_r5_Offset",
888 ARRAY_SIZE(kNegativeOffset),
889 kNegativeOffset},
890 {{al, r10, r0, minus, r11, Offset},
891 "al r10 r0 minus r11 Offset",
892 "NegativeOffset_al_r10_r0_minus_r11_Offset",
893 ARRAY_SIZE(kNegativeOffset),
894 kNegativeOffset},
895 {{al, r7, r0, minus, r10, Offset},
896 "al r7 r0 minus r10 Offset",
897 "NegativeOffset_al_r7_r0_minus_r10_Offset",
898 ARRAY_SIZE(kNegativeOffset),
899 kNegativeOffset},
900 {{al, r9, r4, minus, r10, Offset},
901 "al r9 r4 minus r10 Offset",
902 "NegativeOffset_al_r9_r4_minus_r10_Offset",
903 ARRAY_SIZE(kNegativeOffset),
904 kNegativeOffset},
905 {{al, r6, r3, minus, r10, Offset},
906 "al r6 r3 minus r10 Offset",
907 "NegativeOffset_al_r6_r3_minus_r10_Offset",
908 ARRAY_SIZE(kNegativeOffset),
909 kNegativeOffset},
910 {{al, r14, r2, minus, r8, Offset},
911 "al r14 r2 minus r8 Offset",
912 "NegativeOffset_al_r14_r2_minus_r8_Offset",
913 ARRAY_SIZE(kNegativeOffset),
914 kNegativeOffset},
915 {{al, r14, r8, minus, r1, Offset},
916 "al r14 r8 minus r1 Offset",
917 "NegativeOffset_al_r14_r8_minus_r1_Offset",
918 ARRAY_SIZE(kNegativeOffset),
919 kNegativeOffset},
920 {{al, r9, r6, minus, r11, Offset},
921 "al r9 r6 minus r11 Offset",
922 "NegativeOffset_al_r9_r6_minus_r11_Offset",
923 ARRAY_SIZE(kNegativeOffset),
924 kNegativeOffset},
925 {{al, r11, r7, minus, r6, Offset},
926 "al r11 r7 minus r6 Offset",
927 "NegativeOffset_al_r11_r7_minus_r6_Offset",
928 ARRAY_SIZE(kNegativeOffset),
929 kNegativeOffset},
930 {{al, r8, r5, minus, r7, Offset},
931 "al r8 r5 minus r7 Offset",
932 "NegativeOffset_al_r8_r5_minus_r7_Offset",
933 ARRAY_SIZE(kNegativeOffset),
934 kNegativeOffset},
935 {{al, r1, r2, minus, r10, Offset},
936 "al r1 r2 minus r10 Offset",
937 "NegativeOffset_al_r1_r2_minus_r10_Offset",
938 ARRAY_SIZE(kNegativeOffset),
939 kNegativeOffset},
940 {{al, r0, r12, minus, r5, Offset},
941 "al r0 r12 minus r5 Offset",
942 "NegativeOffset_al_r0_r12_minus_r5_Offset",
943 ARRAY_SIZE(kNegativeOffset),
944 kNegativeOffset},
945 {{al, r7, r8, minus, r1, Offset},
946 "al r7 r8 minus r1 Offset",
947 "NegativeOffset_al_r7_r8_minus_r1_Offset",
948 ARRAY_SIZE(kNegativeOffset),
949 kNegativeOffset},
950 {{al, r4, r12, minus, r6, Offset},
951 "al r4 r12 minus r6 Offset",
952 "NegativeOffset_al_r4_r12_minus_r6_Offset",
953 ARRAY_SIZE(kNegativeOffset),
954 kNegativeOffset},
955 {{al, r2, r11, minus, r9, Offset},
956 "al r2 r11 minus r9 Offset",
957 "NegativeOffset_al_r2_r11_minus_r9_Offset",
958 ARRAY_SIZE(kNegativeOffset),
959 kNegativeOffset},
960 {{al, r4, r14, minus, r11, Offset},
961 "al r4 r14 minus r11 Offset",
962 "NegativeOffset_al_r4_r14_minus_r11_Offset",
963 ARRAY_SIZE(kNegativeOffset),
964 kNegativeOffset},
965 {{al, r8, r5, minus, r6, Offset},
966 "al r8 r5 minus r6 Offset",
967 "NegativeOffset_al_r8_r5_minus_r6_Offset",
968 ARRAY_SIZE(kNegativeOffset),
969 kNegativeOffset},
970 {{al, r10, r11, minus, r8, Offset},
971 "al r10 r11 minus r8 Offset",
972 "NegativeOffset_al_r10_r11_minus_r8_Offset",
973 ARRAY_SIZE(kNegativeOffset),
974 kNegativeOffset},
975 {{al, r14, r4, minus, r2, Offset},
976 "al r14 r4 minus r2 Offset",
977 "NegativeOffset_al_r14_r4_minus_r2_Offset",
978 ARRAY_SIZE(kNegativeOffset),
979 kNegativeOffset},
980 {{al, r2, r4, minus, r12, Offset},
981 "al r2 r4 minus r12 Offset",
982 "NegativeOffset_al_r2_r4_minus_r12_Offset",
983 ARRAY_SIZE(kNegativeOffset),
984 kNegativeOffset},
985 {{al, r0, r4, minus, r8, Offset},
986 "al r0 r4 minus r8 Offset",
987 "NegativeOffset_al_r0_r4_minus_r8_Offset",
988 ARRAY_SIZE(kNegativeOffset),
989 kNegativeOffset},
990 {{al, r14, r5, minus, r0, Offset},
991 "al r14 r5 minus r0 Offset",
992 "NegativeOffset_al_r14_r5_minus_r0_Offset",
993 ARRAY_SIZE(kNegativeOffset),
994 kNegativeOffset},
995 {{al, r8, r4, minus, r9, Offset},
996 "al r8 r4 minus r9 Offset",
997 "NegativeOffset_al_r8_r4_minus_r9_Offset",
998 ARRAY_SIZE(kNegativeOffset),
999 kNegativeOffset},
1000 {{al, r7, r11, minus, r2, Offset},
1001 "al r7 r11 minus r2 Offset",
1002 "NegativeOffset_al_r7_r11_minus_r2_Offset",
1003 ARRAY_SIZE(kNegativeOffset),
1004 kNegativeOffset},
1005 {{al, r7, r5, minus, r10, Offset},
1006 "al r7 r5 minus r10 Offset",
1007 "NegativeOffset_al_r7_r5_minus_r10_Offset",
1008 ARRAY_SIZE(kNegativeOffset),
1009 kNegativeOffset},
1010 {{al, r5, r0, minus, r14, Offset},
1011 "al r5 r0 minus r14 Offset",
1012 "NegativeOffset_al_r5_r0_minus_r14_Offset",
1013 ARRAY_SIZE(kNegativeOffset),
1014 kNegativeOffset},
1015 {{al, r1, r10, minus, r12, Offset},
1016 "al r1 r10 minus r12 Offset",
1017 "NegativeOffset_al_r1_r10_minus_r12_Offset",
1018 ARRAY_SIZE(kNegativeOffset),
1019 kNegativeOffset},
1020 {{al, r0, r14, minus, r10, Offset},
1021 "al r0 r14 minus r10 Offset",
1022 "NegativeOffset_al_r0_r14_minus_r10_Offset",
1023 ARRAY_SIZE(kNegativeOffset),
1024 kNegativeOffset},
1025 {{al, r5, r10, minus, r4, Offset},
1026 "al r5 r10 minus r4 Offset",
1027 "NegativeOffset_al_r5_r10_minus_r4_Offset",
1028 ARRAY_SIZE(kNegativeOffset),
1029 kNegativeOffset},
1030 {{al, r8, r5, minus, r4, Offset},
1031 "al r8 r5 minus r4 Offset",
1032 "NegativeOffset_al_r8_r5_minus_r4_Offset",
1033 ARRAY_SIZE(kNegativeOffset),
1034 kNegativeOffset},
1035 {{al, r9, r5, minus, r3, Offset},
1036 "al r9 r5 minus r3 Offset",
1037 "NegativeOffset_al_r9_r5_minus_r3_Offset",
1038 ARRAY_SIZE(kNegativeOffset),
1039 kNegativeOffset},
1040 {{al, r9, r3, minus, r11, Offset},
1041 "al r9 r3 minus r11 Offset",
1042 "NegativeOffset_al_r9_r3_minus_r11_Offset",
1043 ARRAY_SIZE(kNegativeOffset),
1044 kNegativeOffset},
1045 {{al, r9, r11, minus, r1, Offset},
1046 "al r9 r11 minus r1 Offset",
1047 "NegativeOffset_al_r9_r11_minus_r1_Offset",
1048 ARRAY_SIZE(kNegativeOffset),
1049 kNegativeOffset},
1050 {{al, r11, r8, minus, r1, Offset},
1051 "al r11 r8 minus r1 Offset",
1052 "NegativeOffset_al_r11_r8_minus_r1_Offset",
1053 ARRAY_SIZE(kNegativeOffset),
1054 kNegativeOffset},
1055 {{al, r5, r12, minus, r14, Offset},
1056 "al r5 r12 minus r14 Offset",
1057 "NegativeOffset_al_r5_r12_minus_r14_Offset",
1058 ARRAY_SIZE(kNegativeOffset),
1059 kNegativeOffset},
1060 {{al, r5, r0, minus, r7, Offset},
1061 "al r5 r0 minus r7 Offset",
1062 "NegativeOffset_al_r5_r0_minus_r7_Offset",
1063 ARRAY_SIZE(kNegativeOffset),
1064 kNegativeOffset},
1065 {{al, r1, r3, minus, r6, Offset},
1066 "al r1 r3 minus r6 Offset",
1067 "NegativeOffset_al_r1_r3_minus_r6_Offset",
1068 ARRAY_SIZE(kNegativeOffset),
1069 kNegativeOffset},
1070 {{al, r12, r5, minus, r14, Offset},
1071 "al r12 r5 minus r14 Offset",
1072 "NegativeOffset_al_r12_r5_minus_r14_Offset",
1073 ARRAY_SIZE(kNegativeOffset),
1074 kNegativeOffset},
1075 {{al, r7, r9, minus, r6, Offset},
1076 "al r7 r9 minus r6 Offset",
1077 "NegativeOffset_al_r7_r9_minus_r6_Offset",
1078 ARRAY_SIZE(kNegativeOffset),
1079 kNegativeOffset},
1080 {{al, r10, r0, minus, r2, Offset},
1081 "al r10 r0 minus r2 Offset",
1082 "NegativeOffset_al_r10_r0_minus_r2_Offset",
1083 ARRAY_SIZE(kNegativeOffset),
1084 kNegativeOffset},
1085 {{al, r8, r10, minus, r6, Offset},
1086 "al r8 r10 minus r6 Offset",
1087 "NegativeOffset_al_r8_r10_minus_r6_Offset",
1088 ARRAY_SIZE(kNegativeOffset),
1089 kNegativeOffset},
1090 {{al, r4, r9, minus, r2, Offset},
1091 "al r4 r9 minus r2 Offset",
1092 "NegativeOffset_al_r4_r9_minus_r2_Offset",
1093 ARRAY_SIZE(kNegativeOffset),
1094 kNegativeOffset},
1095 {{al, r11, r1, minus, r14, Offset},
1096 "al r11 r1 minus r14 Offset",
1097 "NegativeOffset_al_r11_r1_minus_r14_Offset",
1098 ARRAY_SIZE(kNegativeOffset),
1099 kNegativeOffset},
1100 {{al, r10, r11, minus, r2, Offset},
1101 "al r10 r11 minus r2 Offset",
1102 "NegativeOffset_al_r10_r11_minus_r2_Offset",
1103 ARRAY_SIZE(kNegativeOffset),
1104 kNegativeOffset},
1105 {{al, r5, r7, minus, r14, Offset},
1106 "al r5 r7 minus r14 Offset",
1107 "NegativeOffset_al_r5_r7_minus_r14_Offset",
1108 ARRAY_SIZE(kNegativeOffset),
1109 kNegativeOffset},
1110 {{al, r7, r14, minus, r5, Offset},
1111 "al r7 r14 minus r5 Offset",
1112 "NegativeOffset_al_r7_r14_minus_r5_Offset",
1113 ARRAY_SIZE(kNegativeOffset),
1114 kNegativeOffset},
1115 {{al, r14, r11, minus, r10, Offset},
1116 "al r14 r11 minus r10 Offset",
1117 "NegativeOffset_al_r14_r11_minus_r10_Offset",
1118 ARRAY_SIZE(kNegativeOffset),
1119 kNegativeOffset},
1120 {{al, r10, r4, minus, r12, Offset},
1121 "al r10 r4 minus r12 Offset",
1122 "NegativeOffset_al_r10_r4_minus_r12_Offset",
1123 ARRAY_SIZE(kNegativeOffset),
1124 kNegativeOffset},
1125 {{al, r10, r12, minus, r6, Offset},
1126 "al r10 r12 minus r6 Offset",
1127 "NegativeOffset_al_r10_r12_minus_r6_Offset",
1128 ARRAY_SIZE(kNegativeOffset),
1129 kNegativeOffset},
1130 {{al, r8, r11, minus, r9, Offset},
1131 "al r8 r11 minus r9 Offset",
1132 "NegativeOffset_al_r8_r11_minus_r9_Offset",
1133 ARRAY_SIZE(kNegativeOffset),
1134 kNegativeOffset},
1135 {{al, r9, r1, minus, r3, Offset},
1136 "al r9 r1 minus r3 Offset",
1137 "NegativeOffset_al_r9_r1_minus_r3_Offset",
1138 ARRAY_SIZE(kNegativeOffset),
1139 kNegativeOffset},
1140 {{al, r4, r12, minus, r14, Offset},
1141 "al r4 r12 minus r14 Offset",
1142 "NegativeOffset_al_r4_r12_minus_r14_Offset",
1143 ARRAY_SIZE(kNegativeOffset),
1144 kNegativeOffset},
1145 {{al, r8, r11, minus, r1, Offset},
1146 "al r8 r11 minus r1 Offset",
1147 "NegativeOffset_al_r8_r11_minus_r1_Offset",
1148 ARRAY_SIZE(kNegativeOffset),
1149 kNegativeOffset},
1150 {{al, r3, r2, minus, r8, Offset},
1151 "al r3 r2 minus r8 Offset",
1152 "NegativeOffset_al_r3_r2_minus_r8_Offset",
1153 ARRAY_SIZE(kNegativeOffset),
1154 kNegativeOffset},
1155 {{al, r5, r3, minus, r8, Offset},
1156 "al r5 r3 minus r8 Offset",
1157 "NegativeOffset_al_r5_r3_minus_r8_Offset",
1158 ARRAY_SIZE(kNegativeOffset),
1159 kNegativeOffset},
1160 {{al, r9, r7, minus, r0, Offset},
1161 "al r9 r7 minus r0 Offset",
1162 "NegativeOffset_al_r9_r7_minus_r0_Offset",
1163 ARRAY_SIZE(kNegativeOffset),
1164 kNegativeOffset},
1165 {{al, r6, r12, minus, r8, Offset},
1166 "al r6 r12 minus r8 Offset",
1167 "NegativeOffset_al_r6_r12_minus_r8_Offset",
1168 ARRAY_SIZE(kNegativeOffset),
1169 kNegativeOffset},
1170 {{al, r10, r8, minus, r9, Offset},
1171 "al r10 r8 minus r9 Offset",
1172 "NegativeOffset_al_r10_r8_minus_r9_Offset",
1173 ARRAY_SIZE(kNegativeOffset),
1174 kNegativeOffset},
1175 {{al, r11, r0, minus, r3, Offset},
1176 "al r11 r0 minus r3 Offset",
1177 "NegativeOffset_al_r11_r0_minus_r3_Offset",
1178 ARRAY_SIZE(kNegativeOffset),
1179 kNegativeOffset},
1180 {{al, r10, r0, minus, r6, Offset},
1181 "al r10 r0 minus r6 Offset",
1182 "NegativeOffset_al_r10_r0_minus_r6_Offset",
1183 ARRAY_SIZE(kNegativeOffset),
1184 kNegativeOffset},
1185 {{al, r11, r10, minus, r12, Offset},
1186 "al r11 r10 minus r12 Offset",
1187 "NegativeOffset_al_r11_r10_minus_r12_Offset",
1188 ARRAY_SIZE(kNegativeOffset),
1189 kNegativeOffset},
1190 {{al, r0, r1, minus, r2, Offset},
1191 "al r0 r1 minus r2 Offset",
1192 "NegativeOffset_al_r0_r1_minus_r2_Offset",
1193 ARRAY_SIZE(kNegativeOffset),
1194 kNegativeOffset},
1195 {{al, r5, r9, minus, r2, Offset},
1196 "al r5 r9 minus r2 Offset",
1197 "NegativeOffset_al_r5_r9_minus_r2_Offset",
1198 ARRAY_SIZE(kNegativeOffset),
1199 kNegativeOffset},
1200 {{al, r14, r6, minus, r5, Offset},
1201 "al r14 r6 minus r5 Offset",
1202 "NegativeOffset_al_r14_r6_minus_r5_Offset",
1203 ARRAY_SIZE(kNegativeOffset),
1204 kNegativeOffset},
1205 {{al, r6, r9, minus, r1, Offset},
1206 "al r6 r9 minus r1 Offset",
1207 "NegativeOffset_al_r6_r9_minus_r1_Offset",
1208 ARRAY_SIZE(kNegativeOffset),
1209 kNegativeOffset},
1210 {{al, r3, r2, minus, r6, Offset},
1211 "al r3 r2 minus r6 Offset",
1212 "NegativeOffset_al_r3_r2_minus_r6_Offset",
1213 ARRAY_SIZE(kNegativeOffset),
1214 kNegativeOffset},
1215 {{al, r2, r0, minus, r8, Offset},
1216 "al r2 r0 minus r8 Offset",
1217 "NegativeOffset_al_r2_r0_minus_r8_Offset",
1218 ARRAY_SIZE(kNegativeOffset),
1219 kNegativeOffset},
1220 {{al, r11, r0, minus, r8, Offset},
1221 "al r11 r0 minus r8 Offset",
1222 "NegativeOffset_al_r11_r0_minus_r8_Offset",
1223 ARRAY_SIZE(kNegativeOffset),
1224 kNegativeOffset},
1225 {{al, r6, r7, minus, r12, Offset},
1226 "al r6 r7 minus r12 Offset",
1227 "NegativeOffset_al_r6_r7_minus_r12_Offset",
1228 ARRAY_SIZE(kNegativeOffset),
1229 kNegativeOffset},
1230 {{al, r0, r2, minus, r9, Offset},
1231 "al r0 r2 minus r9 Offset",
1232 "NegativeOffset_al_r0_r2_minus_r9_Offset",
1233 ARRAY_SIZE(kNegativeOffset),
1234 kNegativeOffset},
1235 {{al, r1, r10, minus, r8, Offset},
1236 "al r1 r10 minus r8 Offset",
1237 "NegativeOffset_al_r1_r10_minus_r8_Offset",
1238 ARRAY_SIZE(kNegativeOffset),
1239 kNegativeOffset},
1240 {{al, r5, r3, minus, r2, Offset},
1241 "al r5 r3 minus r2 Offset",
1242 "NegativeOffset_al_r5_r3_minus_r2_Offset",
1243 ARRAY_SIZE(kNegativeOffset),
1244 kNegativeOffset},
1245 {{al, r6, r11, minus, r8, Offset},
1246 "al r6 r11 minus r8 Offset",
1247 "NegativeOffset_al_r6_r11_minus_r8_Offset",
1248 ARRAY_SIZE(kNegativeOffset),
1249 kNegativeOffset},
1250 {{al, r6, r11, minus, r9, Offset},
1251 "al r6 r11 minus r9 Offset",
1252 "NegativeOffset_al_r6_r11_minus_r9_Offset",
1253 ARRAY_SIZE(kNegativeOffset),
1254 kNegativeOffset},
1255 {{al, r14, r12, minus, r9, Offset},
1256 "al r14 r12 minus r9 Offset",
1257 "NegativeOffset_al_r14_r12_minus_r9_Offset",
1258 ARRAY_SIZE(kNegativeOffset),
1259 kNegativeOffset},
1260 {{al, r3, r4, minus, r2, Offset},
1261 "al r3 r4 minus r2 Offset",
1262 "NegativeOffset_al_r3_r4_minus_r2_Offset",
1263 ARRAY_SIZE(kNegativeOffset),
1264 kNegativeOffset},
1265 {{al, r7, r3, minus, r8, Offset},
1266 "al r7 r3 minus r8 Offset",
1267 "NegativeOffset_al_r7_r3_minus_r8_Offset",
1268 ARRAY_SIZE(kNegativeOffset),
1269 kNegativeOffset},
1270 {{al, r6, r14, minus, r8, Offset},
1271 "al r6 r14 minus r8 Offset",
1272 "NegativeOffset_al_r6_r14_minus_r8_Offset",
1273 ARRAY_SIZE(kNegativeOffset),
1274 kNegativeOffset},
1275 {{al, r11, r10, minus, r14, Offset},
1276 "al r11 r10 minus r14 Offset",
1277 "NegativeOffset_al_r11_r10_minus_r14_Offset",
1278 ARRAY_SIZE(kNegativeOffset),
1279 kNegativeOffset},
1280 {{al, r3, r4, minus, r7, Offset},
1281 "al r3 r4 minus r7 Offset",
1282 "NegativeOffset_al_r3_r4_minus_r7_Offset",
1283 ARRAY_SIZE(kNegativeOffset),
1284 kNegativeOffset},
1285 {{al, r9, r6, minus, r0, Offset},
1286 "al r9 r6 minus r0 Offset",
1287 "NegativeOffset_al_r9_r6_minus_r0_Offset",
1288 ARRAY_SIZE(kNegativeOffset),
1289 kNegativeOffset},
1290 {{al, r10, r3, minus, r2, Offset},
1291 "al r10 r3 minus r2 Offset",
1292 "NegativeOffset_al_r10_r3_minus_r2_Offset",
1293 ARRAY_SIZE(kNegativeOffset),
1294 kNegativeOffset},
1295 {{al, r10, r5, minus, r1, Offset},
1296 "al r10 r5 minus r1 Offset",
1297 "NegativeOffset_al_r10_r5_minus_r1_Offset",
1298 ARRAY_SIZE(kNegativeOffset),
1299 kNegativeOffset},
1300 {{al, r10, r11, minus, r9, Offset},
1301 "al r10 r11 minus r9 Offset",
1302 "NegativeOffset_al_r10_r11_minus_r9_Offset",
1303 ARRAY_SIZE(kNegativeOffset),
1304 kNegativeOffset},
1305 {{al, r3, r1, minus, r8, Offset},
1306 "al r3 r1 minus r8 Offset",
1307 "NegativeOffset_al_r3_r1_minus_r8_Offset",
1308 ARRAY_SIZE(kNegativeOffset),
1309 kNegativeOffset},
1310 {{al, r6, r1, minus, r2, Offset},
1311 "al r6 r1 minus r2 Offset",
1312 "NegativeOffset_al_r6_r1_minus_r2_Offset",
1313 ARRAY_SIZE(kNegativeOffset),
1314 kNegativeOffset},
1315 {{al, r7, r6, minus, r14, Offset},
1316 "al r7 r6 minus r14 Offset",
1317 "NegativeOffset_al_r7_r6_minus_r14_Offset",
1318 ARRAY_SIZE(kNegativeOffset),
1319 kNegativeOffset},
1320 {{al, r3, r9, minus, r5, Offset},
1321 "al r3 r9 minus r5 Offset",
1322 "NegativeOffset_al_r3_r9_minus_r5_Offset",
1323 ARRAY_SIZE(kNegativeOffset),
1324 kNegativeOffset},
1325 {{al, r10, r7, minus, r2, Offset},
1326 "al r10 r7 minus r2 Offset",
1327 "NegativeOffset_al_r10_r7_minus_r2_Offset",
1328 ARRAY_SIZE(kNegativeOffset),
1329 kNegativeOffset},
1330 {{al, r12, r9, minus, r7, Offset},
1331 "al r12 r9 minus r7 Offset",
1332 "NegativeOffset_al_r12_r9_minus_r7_Offset",
1333 ARRAY_SIZE(kNegativeOffset),
1334 kNegativeOffset},
1335 {{al, r8, r11, plus, r4, PostIndex},
1336 "al r8 r11 plus r4 PostIndex",
1337 "PositivePostIndex_al_r8_r11_plus_r4_PostIndex",
1338 ARRAY_SIZE(kPositivePostIndex),
1339 kPositivePostIndex},
1340 {{al, r4, r1, plus, r2, PostIndex},
1341 "al r4 r1 plus r2 PostIndex",
1342 "PositivePostIndex_al_r4_r1_plus_r2_PostIndex",
1343 ARRAY_SIZE(kPositivePostIndex),
1344 kPositivePostIndex},
1345 {{al, r0, r7, plus, r5, PostIndex},
1346 "al r0 r7 plus r5 PostIndex",
1347 "PositivePostIndex_al_r0_r7_plus_r5_PostIndex",
1348 ARRAY_SIZE(kPositivePostIndex),
1349 kPositivePostIndex},
1350 {{al, r3, r6, plus, r10, PostIndex},
1351 "al r3 r6 plus r10 PostIndex",
1352 "PositivePostIndex_al_r3_r6_plus_r10_PostIndex",
1353 ARRAY_SIZE(kPositivePostIndex),
1354 kPositivePostIndex},
1355 {{al, r7, r3, plus, r6, PostIndex},
1356 "al r7 r3 plus r6 PostIndex",
1357 "PositivePostIndex_al_r7_r3_plus_r6_PostIndex",
1358 ARRAY_SIZE(kPositivePostIndex),
1359 kPositivePostIndex},
1360 {{al, r14, r0, plus, r3, PostIndex},
1361 "al r14 r0 plus r3 PostIndex",
1362 "PositivePostIndex_al_r14_r0_plus_r3_PostIndex",
1363 ARRAY_SIZE(kPositivePostIndex),
1364 kPositivePostIndex},
1365 {{al, r11, r0, plus, r2, PostIndex},
1366 "al r11 r0 plus r2 PostIndex",
1367 "PositivePostIndex_al_r11_r0_plus_r2_PostIndex",
1368 ARRAY_SIZE(kPositivePostIndex),
1369 kPositivePostIndex},
1370 {{al, r11, r14, plus, r3, PostIndex},
1371 "al r11 r14 plus r3 PostIndex",
1372 "PositivePostIndex_al_r11_r14_plus_r3_PostIndex",
1373 ARRAY_SIZE(kPositivePostIndex),
1374 kPositivePostIndex},
1375 {{al, r10, r3, plus, r14, PostIndex},
1376 "al r10 r3 plus r14 PostIndex",
1377 "PositivePostIndex_al_r10_r3_plus_r14_PostIndex",
1378 ARRAY_SIZE(kPositivePostIndex),
1379 kPositivePostIndex},
1380 {{al, r3, r10, plus, r4, PostIndex},
1381 "al r3 r10 plus r4 PostIndex",
1382 "PositivePostIndex_al_r3_r10_plus_r4_PostIndex",
1383 ARRAY_SIZE(kPositivePostIndex),
1384 kPositivePostIndex},
1385 {{al, r14, r0, plus, r11, PostIndex},
1386 "al r14 r0 plus r11 PostIndex",
1387 "PositivePostIndex_al_r14_r0_plus_r11_PostIndex",
1388 ARRAY_SIZE(kPositivePostIndex),
1389 kPositivePostIndex},
1390 {{al, r10, r1, plus, r14, PostIndex},
1391 "al r10 r1 plus r14 PostIndex",
1392 "PositivePostIndex_al_r10_r1_plus_r14_PostIndex",
1393 ARRAY_SIZE(kPositivePostIndex),
1394 kPositivePostIndex},
1395 {{al, r7, r2, plus, r10, PostIndex},
1396 "al r7 r2 plus r10 PostIndex",
1397 "PositivePostIndex_al_r7_r2_plus_r10_PostIndex",
1398 ARRAY_SIZE(kPositivePostIndex),
1399 kPositivePostIndex},
1400 {{al, r4, r11, plus, r9, PostIndex},
1401 "al r4 r11 plus r9 PostIndex",
1402 "PositivePostIndex_al_r4_r11_plus_r9_PostIndex",
1403 ARRAY_SIZE(kPositivePostIndex),
1404 kPositivePostIndex},
1405 {{al, r6, r7, plus, r8, PostIndex},
1406 "al r6 r7 plus r8 PostIndex",
1407 "PositivePostIndex_al_r6_r7_plus_r8_PostIndex",
1408 ARRAY_SIZE(kPositivePostIndex),
1409 kPositivePostIndex},
1410 {{al, r3, r7, plus, r6, PostIndex},
1411 "al r3 r7 plus r6 PostIndex",
1412 "PositivePostIndex_al_r3_r7_plus_r6_PostIndex",
1413 ARRAY_SIZE(kPositivePostIndex),
1414 kPositivePostIndex},
1415 {{al, r1, r9, plus, r5, PostIndex},
1416 "al r1 r9 plus r5 PostIndex",
1417 "PositivePostIndex_al_r1_r9_plus_r5_PostIndex",
1418 ARRAY_SIZE(kPositivePostIndex),
1419 kPositivePostIndex},
1420 {{al, r5, r10, plus, r2, PostIndex},
1421 "al r5 r10 plus r2 PostIndex",
1422 "PositivePostIndex_al_r5_r10_plus_r2_PostIndex",
1423 ARRAY_SIZE(kPositivePostIndex),
1424 kPositivePostIndex},
1425 {{al, r9, r3, plus, r5, PostIndex},
1426 "al r9 r3 plus r5 PostIndex",
1427 "PositivePostIndex_al_r9_r3_plus_r5_PostIndex",
1428 ARRAY_SIZE(kPositivePostIndex),
1429 kPositivePostIndex},
1430 {{al, r2, r11, plus, r14, PostIndex},
1431 "al r2 r11 plus r14 PostIndex",
1432 "PositivePostIndex_al_r2_r11_plus_r14_PostIndex",
1433 ARRAY_SIZE(kPositivePostIndex),
1434 kPositivePostIndex},
1435 {{al, r14, r5, plus, r3, PostIndex},
1436 "al r14 r5 plus r3 PostIndex",
1437 "PositivePostIndex_al_r14_r5_plus_r3_PostIndex",
1438 ARRAY_SIZE(kPositivePostIndex),
1439 kPositivePostIndex},
1440 {{al, r0, r1, plus, r4, PostIndex},
1441 "al r0 r1 plus r4 PostIndex",
1442 "PositivePostIndex_al_r0_r1_plus_r4_PostIndex",
1443 ARRAY_SIZE(kPositivePostIndex),
1444 kPositivePostIndex},
1445 {{al, r5, r14, plus, r8, PostIndex},
1446 "al r5 r14 plus r8 PostIndex",
1447 "PositivePostIndex_al_r5_r14_plus_r8_PostIndex",
1448 ARRAY_SIZE(kPositivePostIndex),
1449 kPositivePostIndex},
1450 {{al, r0, r1, plus, r9, PostIndex},
1451 "al r0 r1 plus r9 PostIndex",
1452 "PositivePostIndex_al_r0_r1_plus_r9_PostIndex",
1453 ARRAY_SIZE(kPositivePostIndex),
1454 kPositivePostIndex},
1455 {{al, r8, r12, plus, r5, PostIndex},
1456 "al r8 r12 plus r5 PostIndex",
1457 "PositivePostIndex_al_r8_r12_plus_r5_PostIndex",
1458 ARRAY_SIZE(kPositivePostIndex),
1459 kPositivePostIndex},
1460 {{al, r6, r3, plus, r5, PostIndex},
1461 "al r6 r3 plus r5 PostIndex",
1462 "PositivePostIndex_al_r6_r3_plus_r5_PostIndex",
1463 ARRAY_SIZE(kPositivePostIndex),
1464 kPositivePostIndex},
1465 {{al, r3, r10, plus, r8, PostIndex},
1466 "al r3 r10 plus r8 PostIndex",
1467 "PositivePostIndex_al_r3_r10_plus_r8_PostIndex",
1468 ARRAY_SIZE(kPositivePostIndex),
1469 kPositivePostIndex},
1470 {{al, r9, r6, plus, r12, PostIndex},
1471 "al r9 r6 plus r12 PostIndex",
1472 "PositivePostIndex_al_r9_r6_plus_r12_PostIndex",
1473 ARRAY_SIZE(kPositivePostIndex),
1474 kPositivePostIndex},
1475 {{al, r10, r5, plus, r3, PostIndex},
1476 "al r10 r5 plus r3 PostIndex",
1477 "PositivePostIndex_al_r10_r5_plus_r3_PostIndex",
1478 ARRAY_SIZE(kPositivePostIndex),
1479 kPositivePostIndex},
1480 {{al, r3, r10, plus, r6, PostIndex},
1481 "al r3 r10 plus r6 PostIndex",
1482 "PositivePostIndex_al_r3_r10_plus_r6_PostIndex",
1483 ARRAY_SIZE(kPositivePostIndex),
1484 kPositivePostIndex},
1485 {{al, r4, r7, plus, r2, PostIndex},
1486 "al r4 r7 plus r2 PostIndex",
1487 "PositivePostIndex_al_r4_r7_plus_r2_PostIndex",
1488 ARRAY_SIZE(kPositivePostIndex),
1489 kPositivePostIndex},
1490 {{al, r14, r12, plus, r5, PostIndex},
1491 "al r14 r12 plus r5 PostIndex",
1492 "PositivePostIndex_al_r14_r12_plus_r5_PostIndex",
1493 ARRAY_SIZE(kPositivePostIndex),
1494 kPositivePostIndex},
1495 {{al, r1, r8, plus, r7, PostIndex},
1496 "al r1 r8 plus r7 PostIndex",
1497 "PositivePostIndex_al_r1_r8_plus_r7_PostIndex",
1498 ARRAY_SIZE(kPositivePostIndex),
1499 kPositivePostIndex},
1500 {{al, r5, r7, plus, r8, PostIndex},
1501 "al r5 r7 plus r8 PostIndex",
1502 "PositivePostIndex_al_r5_r7_plus_r8_PostIndex",
1503 ARRAY_SIZE(kPositivePostIndex),
1504 kPositivePostIndex},
1505 {{al, r0, r6, plus, r11, PostIndex},
1506 "al r0 r6 plus r11 PostIndex",
1507 "PositivePostIndex_al_r0_r6_plus_r11_PostIndex",
1508 ARRAY_SIZE(kPositivePostIndex),
1509 kPositivePostIndex},
1510 {{al, r5, r6, plus, r7, PostIndex},
1511 "al r5 r6 plus r7 PostIndex",
1512 "PositivePostIndex_al_r5_r6_plus_r7_PostIndex",
1513 ARRAY_SIZE(kPositivePostIndex),
1514 kPositivePostIndex},
1515 {{al, r7, r2, plus, r6, PostIndex},
1516 "al r7 r2 plus r6 PostIndex",
1517 "PositivePostIndex_al_r7_r2_plus_r6_PostIndex",
1518 ARRAY_SIZE(kPositivePostIndex),
1519 kPositivePostIndex},
1520 {{al, r6, r8, plus, r5, PostIndex},
1521 "al r6 r8 plus r5 PostIndex",
1522 "PositivePostIndex_al_r6_r8_plus_r5_PostIndex",
1523 ARRAY_SIZE(kPositivePostIndex),
1524 kPositivePostIndex},
1525 {{al, r7, r4, plus, r0, PostIndex},
1526 "al r7 r4 plus r0 PostIndex",
1527 "PositivePostIndex_al_r7_r4_plus_r0_PostIndex",
1528 ARRAY_SIZE(kPositivePostIndex),
1529 kPositivePostIndex},
1530 {{al, r2, r8, plus, r3, PostIndex},
1531 "al r2 r8 plus r3 PostIndex",
1532 "PositivePostIndex_al_r2_r8_plus_r3_PostIndex",
1533 ARRAY_SIZE(kPositivePostIndex),
1534 kPositivePostIndex},
1535 {{al, r3, r2, plus, r6, PostIndex},
1536 "al r3 r2 plus r6 PostIndex",
1537 "PositivePostIndex_al_r3_r2_plus_r6_PostIndex",
1538 ARRAY_SIZE(kPositivePostIndex),
1539 kPositivePostIndex},
1540 {{al, r7, r6, plus, r2, PostIndex},
1541 "al r7 r6 plus r2 PostIndex",
1542 "PositivePostIndex_al_r7_r6_plus_r2_PostIndex",
1543 ARRAY_SIZE(kPositivePostIndex),
1544 kPositivePostIndex},
1545 {{al, r0, r4, plus, r10, PostIndex},
1546 "al r0 r4 plus r10 PostIndex",
1547 "PositivePostIndex_al_r0_r4_plus_r10_PostIndex",
1548 ARRAY_SIZE(kPositivePostIndex),
1549 kPositivePostIndex},
1550 {{al, r9, r14, plus, r6, PostIndex},
1551 "al r9 r14 plus r6 PostIndex",
1552 "PositivePostIndex_al_r9_r14_plus_r6_PostIndex",
1553 ARRAY_SIZE(kPositivePostIndex),
1554 kPositivePostIndex},
1555 {{al, r0, r3, plus, r12, PostIndex},
1556 "al r0 r3 plus r12 PostIndex",
1557 "PositivePostIndex_al_r0_r3_plus_r12_PostIndex",
1558 ARRAY_SIZE(kPositivePostIndex),
1559 kPositivePostIndex},
1560 {{al, r8, r7, plus, r5, PostIndex},
1561 "al r8 r7 plus r5 PostIndex",
1562 "PositivePostIndex_al_r8_r7_plus_r5_PostIndex",
1563 ARRAY_SIZE(kPositivePostIndex),
1564 kPositivePostIndex},
1565 {{al, r5, r14, plus, r2, PostIndex},
1566 "al r5 r14 plus r2 PostIndex",
1567 "PositivePostIndex_al_r5_r14_plus_r2_PostIndex",
1568 ARRAY_SIZE(kPositivePostIndex),
1569 kPositivePostIndex},
1570 {{al, r7, r6, plus, r4, PostIndex},
1571 "al r7 r6 plus r4 PostIndex",
1572 "PositivePostIndex_al_r7_r6_plus_r4_PostIndex",
1573 ARRAY_SIZE(kPositivePostIndex),
1574 kPositivePostIndex},
1575 {{al, r1, r14, plus, r12, PostIndex},
1576 "al r1 r14 plus r12 PostIndex",
1577 "PositivePostIndex_al_r1_r14_plus_r12_PostIndex",
1578 ARRAY_SIZE(kPositivePostIndex),
1579 kPositivePostIndex},
1580 {{al, r11, r1, plus, r0, PostIndex},
1581 "al r11 r1 plus r0 PostIndex",
1582 "PositivePostIndex_al_r11_r1_plus_r0_PostIndex",
1583 ARRAY_SIZE(kPositivePostIndex),
1584 kPositivePostIndex},
1585 {{al, r4, r2, plus, r12, PostIndex},
1586 "al r4 r2 plus r12 PostIndex",
1587 "PositivePostIndex_al_r4_r2_plus_r12_PostIndex",
1588 ARRAY_SIZE(kPositivePostIndex),
1589 kPositivePostIndex},
1590 {{al, r0, r1, plus, r3, PostIndex},
1591 "al r0 r1 plus r3 PostIndex",
1592 "PositivePostIndex_al_r0_r1_plus_r3_PostIndex",
1593 ARRAY_SIZE(kPositivePostIndex),
1594 kPositivePostIndex},
1595 {{al, r4, r0, plus, r5, PostIndex},
1596 "al r4 r0 plus r5 PostIndex",
1597 "PositivePostIndex_al_r4_r0_plus_r5_PostIndex",
1598 ARRAY_SIZE(kPositivePostIndex),
1599 kPositivePostIndex},
1600 {{al, r8, r4, plus, r0, PostIndex},
1601 "al r8 r4 plus r0 PostIndex",
1602 "PositivePostIndex_al_r8_r4_plus_r0_PostIndex",
1603 ARRAY_SIZE(kPositivePostIndex),
1604 kPositivePostIndex},
1605 {{al, r1, r7, plus, r11, PostIndex},
1606 "al r1 r7 plus r11 PostIndex",
1607 "PositivePostIndex_al_r1_r7_plus_r11_PostIndex",
1608 ARRAY_SIZE(kPositivePostIndex),
1609 kPositivePostIndex},
1610 {{al, r9, r0, plus, r14, PostIndex},
1611 "al r9 r0 plus r14 PostIndex",
1612 "PositivePostIndex_al_r9_r0_plus_r14_PostIndex",
1613 ARRAY_SIZE(kPositivePostIndex),
1614 kPositivePostIndex},
1615 {{al, r8, r9, plus, r14, PostIndex},
1616 "al r8 r9 plus r14 PostIndex",
1617 "PositivePostIndex_al_r8_r9_plus_r14_PostIndex",
1618 ARRAY_SIZE(kPositivePostIndex),
1619 kPositivePostIndex},
1620 {{al, r10, r14, plus, r12, PostIndex},
1621 "al r10 r14 plus r12 PostIndex",
1622 "PositivePostIndex_al_r10_r14_plus_r12_PostIndex",
1623 ARRAY_SIZE(kPositivePostIndex),
1624 kPositivePostIndex},
1625 {{al, r8, r9, plus, r10, PostIndex},
1626 "al r8 r9 plus r10 PostIndex",
1627 "PositivePostIndex_al_r8_r9_plus_r10_PostIndex",
1628 ARRAY_SIZE(kPositivePostIndex),
1629 kPositivePostIndex},
1630 {{al, r14, r8, plus, r11, PostIndex},
1631 "al r14 r8 plus r11 PostIndex",
1632 "PositivePostIndex_al_r14_r8_plus_r11_PostIndex",
1633 ARRAY_SIZE(kPositivePostIndex),
1634 kPositivePostIndex},
1635 {{al, r4, r10, plus, r2, PostIndex},
1636 "al r4 r10 plus r2 PostIndex",
1637 "PositivePostIndex_al_r4_r10_plus_r2_PostIndex",
1638 ARRAY_SIZE(kPositivePostIndex),
1639 kPositivePostIndex},
1640 {{al, r7, r8, plus, r10, PostIndex},
1641 "al r7 r8 plus r10 PostIndex",
1642 "PositivePostIndex_al_r7_r8_plus_r10_PostIndex",
1643 ARRAY_SIZE(kPositivePostIndex),
1644 kPositivePostIndex},
1645 {{al, r11, r4, plus, r7, PostIndex},
1646 "al r11 r4 plus r7 PostIndex",
1647 "PositivePostIndex_al_r11_r4_plus_r7_PostIndex",
1648 ARRAY_SIZE(kPositivePostIndex),
1649 kPositivePostIndex},
1650 {{al, r8, r6, plus, r1, PostIndex},
1651 "al r8 r6 plus r1 PostIndex",
1652 "PositivePostIndex_al_r8_r6_plus_r1_PostIndex",
1653 ARRAY_SIZE(kPositivePostIndex),
1654 kPositivePostIndex},
1655 {{al, r0, r5, plus, r12, PostIndex},
1656 "al r0 r5 plus r12 PostIndex",
1657 "PositivePostIndex_al_r0_r5_plus_r12_PostIndex",
1658 ARRAY_SIZE(kPositivePostIndex),
1659 kPositivePostIndex},
1660 {{al, r14, r11, plus, r5, PostIndex},
1661 "al r14 r11 plus r5 PostIndex",
1662 "PositivePostIndex_al_r14_r11_plus_r5_PostIndex",
1663 ARRAY_SIZE(kPositivePostIndex),
1664 kPositivePostIndex},
1665 {{al, r12, r7, plus, r3, PostIndex},
1666 "al r12 r7 plus r3 PostIndex",
1667 "PositivePostIndex_al_r12_r7_plus_r3_PostIndex",
1668 ARRAY_SIZE(kPositivePostIndex),
1669 kPositivePostIndex},
1670 {{al, r6, r4, plus, r8, PostIndex},
1671 "al r6 r4 plus r8 PostIndex",
1672 "PositivePostIndex_al_r6_r4_plus_r8_PostIndex",
1673 ARRAY_SIZE(kPositivePostIndex),
1674 kPositivePostIndex},
1675 {{al, r14, r3, plus, r2, PostIndex},
1676 "al r14 r3 plus r2 PostIndex",
1677 "PositivePostIndex_al_r14_r3_plus_r2_PostIndex",
1678 ARRAY_SIZE(kPositivePostIndex),
1679 kPositivePostIndex},
1680 {{al, r7, r6, plus, r1, PostIndex},
1681 "al r7 r6 plus r1 PostIndex",
1682 "PositivePostIndex_al_r7_r6_plus_r1_PostIndex",
1683 ARRAY_SIZE(kPositivePostIndex),
1684 kPositivePostIndex},
1685 {{al, r7, r14, plus, r12, PostIndex},
1686 "al r7 r14 plus r12 PostIndex",
1687 "PositivePostIndex_al_r7_r14_plus_r12_PostIndex",
1688 ARRAY_SIZE(kPositivePostIndex),
1689 kPositivePostIndex},
1690 {{al, r8, r7, plus, r14, PostIndex},
1691 "al r8 r7 plus r14 PostIndex",
1692 "PositivePostIndex_al_r8_r7_plus_r14_PostIndex",
1693 ARRAY_SIZE(kPositivePostIndex),
1694 kPositivePostIndex},
1695 {{al, r3, r11, plus, r5, PostIndex},
1696 "al r3 r11 plus r5 PostIndex",
1697 "PositivePostIndex_al_r3_r11_plus_r5_PostIndex",
1698 ARRAY_SIZE(kPositivePostIndex),
1699 kPositivePostIndex},
1700 {{al, r8, r2, plus, r9, PostIndex},
1701 "al r8 r2 plus r9 PostIndex",
1702 "PositivePostIndex_al_r8_r2_plus_r9_PostIndex",
1703 ARRAY_SIZE(kPositivePostIndex),
1704 kPositivePostIndex},
1705 {{al, r8, r2, plus, r0, PostIndex},
1706 "al r8 r2 plus r0 PostIndex",
1707 "PositivePostIndex_al_r8_r2_plus_r0_PostIndex",
1708 ARRAY_SIZE(kPositivePostIndex),
1709 kPositivePostIndex},
1710 {{al, r10, r9, plus, r4, PostIndex},
1711 "al r10 r9 plus r4 PostIndex",
1712 "PositivePostIndex_al_r10_r9_plus_r4_PostIndex",
1713 ARRAY_SIZE(kPositivePostIndex),
1714 kPositivePostIndex},
1715 {{al, r1, r5, plus, r9, PostIndex},
1716 "al r1 r5 plus r9 PostIndex",
1717 "PositivePostIndex_al_r1_r5_plus_r9_PostIndex",
1718 ARRAY_SIZE(kPositivePostIndex),
1719 kPositivePostIndex},
1720 {{al, r14, r7, plus, r2, PostIndex},
1721 "al r14 r7 plus r2 PostIndex",
1722 "PositivePostIndex_al_r14_r7_plus_r2_PostIndex",
1723 ARRAY_SIZE(kPositivePostIndex),
1724 kPositivePostIndex},
1725 {{al, r2, r1, plus, r9, PostIndex},
1726 "al r2 r1 plus r9 PostIndex",
1727 "PositivePostIndex_al_r2_r1_plus_r9_PostIndex",
1728 ARRAY_SIZE(kPositivePostIndex),
1729 kPositivePostIndex},
1730 {{al, r9, r3, plus, r2, PostIndex},
1731 "al r9 r3 plus r2 PostIndex",
1732 "PositivePostIndex_al_r9_r3_plus_r2_PostIndex",
1733 ARRAY_SIZE(kPositivePostIndex),
1734 kPositivePostIndex},
1735 {{al, r14, r7, plus, r0, PostIndex},
1736 "al r14 r7 plus r0 PostIndex",
1737 "PositivePostIndex_al_r14_r7_plus_r0_PostIndex",
1738 ARRAY_SIZE(kPositivePostIndex),
1739 kPositivePostIndex},
1740 {{al, r0, r14, plus, r5, PostIndex},
1741 "al r0 r14 plus r5 PostIndex",
1742 "PositivePostIndex_al_r0_r14_plus_r5_PostIndex",
1743 ARRAY_SIZE(kPositivePostIndex),
1744 kPositivePostIndex},
1745 {{al, r7, r4, plus, r12, PostIndex},
1746 "al r7 r4 plus r12 PostIndex",
1747 "PositivePostIndex_al_r7_r4_plus_r12_PostIndex",
1748 ARRAY_SIZE(kPositivePostIndex),
1749 kPositivePostIndex},
1750 {{al, r4, r10, plus, r7, PostIndex},
1751 "al r4 r10 plus r7 PostIndex",
1752 "PositivePostIndex_al_r4_r10_plus_r7_PostIndex",
1753 ARRAY_SIZE(kPositivePostIndex),
1754 kPositivePostIndex},
1755 {{al, r10, r4, plus, r7, PostIndex},
1756 "al r10 r4 plus r7 PostIndex",
1757 "PositivePostIndex_al_r10_r4_plus_r7_PostIndex",
1758 ARRAY_SIZE(kPositivePostIndex),
1759 kPositivePostIndex},
1760 {{al, r8, r4, plus, r2, PostIndex},
1761 "al r8 r4 plus r2 PostIndex",
1762 "PositivePostIndex_al_r8_r4_plus_r2_PostIndex",
1763 ARRAY_SIZE(kPositivePostIndex),
1764 kPositivePostIndex},
1765 {{al, r0, r3, plus, r6, PostIndex},
1766 "al r0 r3 plus r6 PostIndex",
1767 "PositivePostIndex_al_r0_r3_plus_r6_PostIndex",
1768 ARRAY_SIZE(kPositivePostIndex),
1769 kPositivePostIndex},
1770 {{al, r2, r8, plus, r11, PostIndex},
1771 "al r2 r8 plus r11 PostIndex",
1772 "PositivePostIndex_al_r2_r8_plus_r11_PostIndex",
1773 ARRAY_SIZE(kPositivePostIndex),
1774 kPositivePostIndex},
1775 {{al, r11, r9, plus, r7, PostIndex},
1776 "al r11 r9 plus r7 PostIndex",
1777 "PositivePostIndex_al_r11_r9_plus_r7_PostIndex",
1778 ARRAY_SIZE(kPositivePostIndex),
1779 kPositivePostIndex},
1780 {{al, r5, r2, plus, r10, PostIndex},
1781 "al r5 r2 plus r10 PostIndex",
1782 "PositivePostIndex_al_r5_r2_plus_r10_PostIndex",
1783 ARRAY_SIZE(kPositivePostIndex),
1784 kPositivePostIndex},
1785 {{al, r6, r12, plus, r7, PostIndex},
1786 "al r6 r12 plus r7 PostIndex",
1787 "PositivePostIndex_al_r6_r12_plus_r7_PostIndex",
1788 ARRAY_SIZE(kPositivePostIndex),
1789 kPositivePostIndex},
1790 {{al, r12, r11, plus, r0, PostIndex},
1791 "al r12 r11 plus r0 PostIndex",
1792 "PositivePostIndex_al_r12_r11_plus_r0_PostIndex",
1793 ARRAY_SIZE(kPositivePostIndex),
1794 kPositivePostIndex},
1795 {{al, r5, r11, plus, r6, PostIndex},
1796 "al r5 r11 plus r6 PostIndex",
1797 "PositivePostIndex_al_r5_r11_plus_r6_PostIndex",
1798 ARRAY_SIZE(kPositivePostIndex),
1799 kPositivePostIndex},
1800 {{al, r1, r0, plus, r11, PostIndex},
1801 "al r1 r0 plus r11 PostIndex",
1802 "PositivePostIndex_al_r1_r0_plus_r11_PostIndex",
1803 ARRAY_SIZE(kPositivePostIndex),
1804 kPositivePostIndex},
1805 {{al, r12, r10, plus, r9, PostIndex},
1806 "al r12 r10 plus r9 PostIndex",
1807 "PositivePostIndex_al_r12_r10_plus_r9_PostIndex",
1808 ARRAY_SIZE(kPositivePostIndex),
1809 kPositivePostIndex},
1810 {{al, r2, r3, plus, r9, PostIndex},
1811 "al r2 r3 plus r9 PostIndex",
1812 "PositivePostIndex_al_r2_r3_plus_r9_PostIndex",
1813 ARRAY_SIZE(kPositivePostIndex),
1814 kPositivePostIndex},
1815 {{al, r3, r0, plus, r2, PostIndex},
1816 "al r3 r0 plus r2 PostIndex",
1817 "PositivePostIndex_al_r3_r0_plus_r2_PostIndex",
1818 ARRAY_SIZE(kPositivePostIndex),
1819 kPositivePostIndex},
1820 {{al, r2, r5, plus, r1, PostIndex},
1821 "al r2 r5 plus r1 PostIndex",
1822 "PositivePostIndex_al_r2_r5_plus_r1_PostIndex",
1823 ARRAY_SIZE(kPositivePostIndex),
1824 kPositivePostIndex},
1825 {{al, r2, r9, plus, r12, PostIndex},
1826 "al r2 r9 plus r12 PostIndex",
1827 "PositivePostIndex_al_r2_r9_plus_r12_PostIndex",
1828 ARRAY_SIZE(kPositivePostIndex),
1829 kPositivePostIndex},
1830 {{al, r4, r2, plus, r14, PostIndex},
1831 "al r4 r2 plus r14 PostIndex",
1832 "PositivePostIndex_al_r4_r2_plus_r14_PostIndex",
1833 ARRAY_SIZE(kPositivePostIndex),
1834 kPositivePostIndex},
1835 {{al, r12, r11, minus, r8, PostIndex},
1836 "al r12 r11 minus r8 PostIndex",
1837 "NegativePostIndex_al_r12_r11_minus_r8_PostIndex",
1838 ARRAY_SIZE(kNegativePostIndex),
1839 kNegativePostIndex},
1840 {{al, r4, r10, minus, r9, PostIndex},
1841 "al r4 r10 minus r9 PostIndex",
1842 "NegativePostIndex_al_r4_r10_minus_r9_PostIndex",
1843 ARRAY_SIZE(kNegativePostIndex),
1844 kNegativePostIndex},
1845 {{al, r9, r12, minus, r10, PostIndex},
1846 "al r9 r12 minus r10 PostIndex",
1847 "NegativePostIndex_al_r9_r12_minus_r10_PostIndex",
1848 ARRAY_SIZE(kNegativePostIndex),
1849 kNegativePostIndex},
1850 {{al, r2, r1, minus, r11, PostIndex},
1851 "al r2 r1 minus r11 PostIndex",
1852 "NegativePostIndex_al_r2_r1_minus_r11_PostIndex",
1853 ARRAY_SIZE(kNegativePostIndex),
1854 kNegativePostIndex},
1855 {{al, r14, r8, minus, r6, PostIndex},
1856 "al r14 r8 minus r6 PostIndex",
1857 "NegativePostIndex_al_r14_r8_minus_r6_PostIndex",
1858 ARRAY_SIZE(kNegativePostIndex),
1859 kNegativePostIndex},
1860 {{al, r7, r2, minus, r8, PostIndex},
1861 "al r7 r2 minus r8 PostIndex",
1862 "NegativePostIndex_al_r7_r2_minus_r8_PostIndex",
1863 ARRAY_SIZE(kNegativePostIndex),
1864 kNegativePostIndex},
1865 {{al, r9, r1, minus, r8, PostIndex},
1866 "al r9 r1 minus r8 PostIndex",
1867 "NegativePostIndex_al_r9_r1_minus_r8_PostIndex",
1868 ARRAY_SIZE(kNegativePostIndex),
1869 kNegativePostIndex},
1870 {{al, r1, r6, minus, r5, PostIndex},
1871 "al r1 r6 minus r5 PostIndex",
1872 "NegativePostIndex_al_r1_r6_minus_r5_PostIndex",
1873 ARRAY_SIZE(kNegativePostIndex),
1874 kNegativePostIndex},
1875 {{al, r6, r2, minus, r14, PostIndex},
1876 "al r6 r2 minus r14 PostIndex",
1877 "NegativePostIndex_al_r6_r2_minus_r14_PostIndex",
1878 ARRAY_SIZE(kNegativePostIndex),
1879 kNegativePostIndex},
1880 {{al, r11, r1, minus, r9, PostIndex},
1881 "al r11 r1 minus r9 PostIndex",
1882 "NegativePostIndex_al_r11_r1_minus_r9_PostIndex",
1883 ARRAY_SIZE(kNegativePostIndex),
1884 kNegativePostIndex},
1885 {{al, r9, r7, minus, r12, PostIndex},
1886 "al r9 r7 minus r12 PostIndex",
1887 "NegativePostIndex_al_r9_r7_minus_r12_PostIndex",
1888 ARRAY_SIZE(kNegativePostIndex),
1889 kNegativePostIndex},
1890 {{al, r10, r6, minus, r1, PostIndex},
1891 "al r10 r6 minus r1 PostIndex",
1892 "NegativePostIndex_al_r10_r6_minus_r1_PostIndex",
1893 ARRAY_SIZE(kNegativePostIndex),
1894 kNegativePostIndex},
1895 {{al, r4, r9, minus, r6, PostIndex},
1896 "al r4 r9 minus r6 PostIndex",
1897 "NegativePostIndex_al_r4_r9_minus_r6_PostIndex",
1898 ARRAY_SIZE(kNegativePostIndex),
1899 kNegativePostIndex},
1900 {{al, r11, r4, minus, r9, PostIndex},
1901 "al r11 r4 minus r9 PostIndex",
1902 "NegativePostIndex_al_r11_r4_minus_r9_PostIndex",
1903 ARRAY_SIZE(kNegativePostIndex),
1904 kNegativePostIndex},
1905 {{al, r7, r12, minus, r0, PostIndex},
1906 "al r7 r12 minus r0 PostIndex",
1907 "NegativePostIndex_al_r7_r12_minus_r0_PostIndex",
1908 ARRAY_SIZE(kNegativePostIndex),
1909 kNegativePostIndex},
1910 {{al, r10, r3, minus, r7, PostIndex},
1911 "al r10 r3 minus r7 PostIndex",
1912 "NegativePostIndex_al_r10_r3_minus_r7_PostIndex",
1913 ARRAY_SIZE(kNegativePostIndex),
1914 kNegativePostIndex},
1915 {{al, r7, r14, minus, r11, PostIndex},
1916 "al r7 r14 minus r11 PostIndex",
1917 "NegativePostIndex_al_r7_r14_minus_r11_PostIndex",
1918 ARRAY_SIZE(kNegativePostIndex),
1919 kNegativePostIndex},
1920 {{al, r6, r12, minus, r2, PostIndex},
1921 "al r6 r12 minus r2 PostIndex",
1922 "NegativePostIndex_al_r6_r12_minus_r2_PostIndex",
1923 ARRAY_SIZE(kNegativePostIndex),
1924 kNegativePostIndex},
1925 {{al, r10, r7, minus, r1, PostIndex},
1926 "al r10 r7 minus r1 PostIndex",
1927 "NegativePostIndex_al_r10_r7_minus_r1_PostIndex",
1928 ARRAY_SIZE(kNegativePostIndex),
1929 kNegativePostIndex},
1930 {{al, r3, r11, minus, r0, PostIndex},
1931 "al r3 r11 minus r0 PostIndex",
1932 "NegativePostIndex_al_r3_r11_minus_r0_PostIndex",
1933 ARRAY_SIZE(kNegativePostIndex),
1934 kNegativePostIndex},
1935 {{al, r4, r5, minus, r11, PostIndex},
1936 "al r4 r5 minus r11 PostIndex",
1937 "NegativePostIndex_al_r4_r5_minus_r11_PostIndex",
1938 ARRAY_SIZE(kNegativePostIndex),
1939 kNegativePostIndex},
1940 {{al, r6, r12, minus, r5, PostIndex},
1941 "al r6 r12 minus r5 PostIndex",
1942 "NegativePostIndex_al_r6_r12_minus_r5_PostIndex",
1943 ARRAY_SIZE(kNegativePostIndex),
1944 kNegativePostIndex},
1945 {{al, r4, r11, minus, r12, PostIndex},
1946 "al r4 r11 minus r12 PostIndex",
1947 "NegativePostIndex_al_r4_r11_minus_r12_PostIndex",
1948 ARRAY_SIZE(kNegativePostIndex),
1949 kNegativePostIndex},
1950 {{al, r12, r5, minus, r4, PostIndex},
1951 "al r12 r5 minus r4 PostIndex",
1952 "NegativePostIndex_al_r12_r5_minus_r4_PostIndex",
1953 ARRAY_SIZE(kNegativePostIndex),
1954 kNegativePostIndex},
1955 {{al, r11, r10, minus, r9, PostIndex},
1956 "al r11 r10 minus r9 PostIndex",
1957 "NegativePostIndex_al_r11_r10_minus_r9_PostIndex",
1958 ARRAY_SIZE(kNegativePostIndex),
1959 kNegativePostIndex},
1960 {{al, r8, r11, minus, r2, PostIndex},
1961 "al r8 r11 minus r2 PostIndex",
1962 "NegativePostIndex_al_r8_r11_minus_r2_PostIndex",
1963 ARRAY_SIZE(kNegativePostIndex),
1964 kNegativePostIndex},
1965 {{al, r6, r7, minus, r4, PostIndex},
1966 "al r6 r7 minus r4 PostIndex",
1967 "NegativePostIndex_al_r6_r7_minus_r4_PostIndex",
1968 ARRAY_SIZE(kNegativePostIndex),
1969 kNegativePostIndex},
1970 {{al, r14, r8, minus, r2, PostIndex},
1971 "al r14 r8 minus r2 PostIndex",
1972 "NegativePostIndex_al_r14_r8_minus_r2_PostIndex",
1973 ARRAY_SIZE(kNegativePostIndex),
1974 kNegativePostIndex},
1975 {{al, r7, r10, minus, r12, PostIndex},
1976 "al r7 r10 minus r12 PostIndex",
1977 "NegativePostIndex_al_r7_r10_minus_r12_PostIndex",
1978 ARRAY_SIZE(kNegativePostIndex),
1979 kNegativePostIndex},
1980 {{al, r14, r5, minus, r7, PostIndex},
1981 "al r14 r5 minus r7 PostIndex",
1982 "NegativePostIndex_al_r14_r5_minus_r7_PostIndex",
1983 ARRAY_SIZE(kNegativePostIndex),
1984 kNegativePostIndex},
1985 {{al, r9, r8, minus, r2, PostIndex},
1986 "al r9 r8 minus r2 PostIndex",
1987 "NegativePostIndex_al_r9_r8_minus_r2_PostIndex",
1988 ARRAY_SIZE(kNegativePostIndex),
1989 kNegativePostIndex},
1990 {{al, r10, r8, minus, r9, PostIndex},
1991 "al r10 r8 minus r9 PostIndex",
1992 "NegativePostIndex_al_r10_r8_minus_r9_PostIndex",
1993 ARRAY_SIZE(kNegativePostIndex),
1994 kNegativePostIndex},
1995 {{al, r11, r6, minus, r1, PostIndex},
1996 "al r11 r6 minus r1 PostIndex",
1997 "NegativePostIndex_al_r11_r6_minus_r1_PostIndex",
1998 ARRAY_SIZE(kNegativePostIndex),
1999 kNegativePostIndex},
2000 {{al, r3, r7, minus, r0, PostIndex},
2001 "al r3 r7 minus r0 PostIndex",
2002 "NegativePostIndex_al_r3_r7_minus_r0_PostIndex",
2003 ARRAY_SIZE(kNegativePostIndex),
2004 kNegativePostIndex},
2005 {{al, r3, r12, minus, r5, PostIndex},
2006 "al r3 r12 minus r5 PostIndex",
2007 "NegativePostIndex_al_r3_r12_minus_r5_PostIndex",
2008 ARRAY_SIZE(kNegativePostIndex),
2009 kNegativePostIndex},
2010 {{al, r12, r1, minus, r14, PostIndex},
2011 "al r12 r1 minus r14 PostIndex",
2012 "NegativePostIndex_al_r12_r1_minus_r14_PostIndex",
2013 ARRAY_SIZE(kNegativePostIndex),
2014 kNegativePostIndex},
2015 {{al, r11, r14, minus, r4, PostIndex},
2016 "al r11 r14 minus r4 PostIndex",
2017 "NegativePostIndex_al_r11_r14_minus_r4_PostIndex",
2018 ARRAY_SIZE(kNegativePostIndex),
2019 kNegativePostIndex},
2020 {{al, r7, r8, minus, r11, PostIndex},
2021 "al r7 r8 minus r11 PostIndex",
2022 "NegativePostIndex_al_r7_r8_minus_r11_PostIndex",
2023 ARRAY_SIZE(kNegativePostIndex),
2024 kNegativePostIndex},
2025 {{al, r3, r11, minus, r1, PostIndex},
2026 "al r3 r11 minus r1 PostIndex",
2027 "NegativePostIndex_al_r3_r11_minus_r1_PostIndex",
2028 ARRAY_SIZE(kNegativePostIndex),
2029 kNegativePostIndex},
2030 {{al, r12, r7, minus, r1, PostIndex},
2031 "al r12 r7 minus r1 PostIndex",
2032 "NegativePostIndex_al_r12_r7_minus_r1_PostIndex",
2033 ARRAY_SIZE(kNegativePostIndex),
2034 kNegativePostIndex},
2035 {{al, r3, r0, minus, r5, PostIndex},
2036 "al r3 r0 minus r5 PostIndex",
2037 "NegativePostIndex_al_r3_r0_minus_r5_PostIndex",
2038 ARRAY_SIZE(kNegativePostIndex),
2039 kNegativePostIndex},
2040 {{al, r2, r1, minus, r12, PostIndex},
2041 "al r2 r1 minus r12 PostIndex",
2042 "NegativePostIndex_al_r2_r1_minus_r12_PostIndex",
2043 ARRAY_SIZE(kNegativePostIndex),
2044 kNegativePostIndex},
2045 {{al, r6, r11, minus, r0, PostIndex},
2046 "al r6 r11 minus r0 PostIndex",
2047 "NegativePostIndex_al_r6_r11_minus_r0_PostIndex",
2048 ARRAY_SIZE(kNegativePostIndex),
2049 kNegativePostIndex},
2050 {{al, r9, r4, minus, r10, PostIndex},
2051 "al r9 r4 minus r10 PostIndex",
2052 "NegativePostIndex_al_r9_r4_minus_r10_PostIndex",
2053 ARRAY_SIZE(kNegativePostIndex),
2054 kNegativePostIndex},
2055 {{al, r1, r3, minus, r8, PostIndex},
2056 "al r1 r3 minus r8 PostIndex",
2057 "NegativePostIndex_al_r1_r3_minus_r8_PostIndex",
2058 ARRAY_SIZE(kNegativePostIndex),
2059 kNegativePostIndex},
2060 {{al, r2, r5, minus, r4, PostIndex},
2061 "al r2 r5 minus r4 PostIndex",
2062 "NegativePostIndex_al_r2_r5_minus_r4_PostIndex",
2063 ARRAY_SIZE(kNegativePostIndex),
2064 kNegativePostIndex},
2065 {{al, r12, r3, minus, r9, PostIndex},
2066 "al r12 r3 minus r9 PostIndex",
2067 "NegativePostIndex_al_r12_r3_minus_r9_PostIndex",
2068 ARRAY_SIZE(kNegativePostIndex),
2069 kNegativePostIndex},
2070 {{al, r14, r6, minus, r1, PostIndex},
2071 "al r14 r6 minus r1 PostIndex",
2072 "NegativePostIndex_al_r14_r6_minus_r1_PostIndex",
2073 ARRAY_SIZE(kNegativePostIndex),
2074 kNegativePostIndex},
2075 {{al, r8, r4, minus, r7, PostIndex},
2076 "al r8 r4 minus r7 PostIndex",
2077 "NegativePostIndex_al_r8_r4_minus_r7_PostIndex",
2078 ARRAY_SIZE(kNegativePostIndex),
2079 kNegativePostIndex},
2080 {{al, r14, r2, minus, r3, PostIndex},
2081 "al r14 r2 minus r3 PostIndex",
2082 "NegativePostIndex_al_r14_r2_minus_r3_PostIndex",
2083 ARRAY_SIZE(kNegativePostIndex),
2084 kNegativePostIndex},
2085 {{al, r11, r2, minus, r0, PostIndex},
2086 "al r11 r2 minus r0 PostIndex",
2087 "NegativePostIndex_al_r11_r2_minus_r0_PostIndex",
2088 ARRAY_SIZE(kNegativePostIndex),
2089 kNegativePostIndex},
2090 {{al, r10, r14, minus, r5, PostIndex},
2091 "al r10 r14 minus r5 PostIndex",
2092 "NegativePostIndex_al_r10_r14_minus_r5_PostIndex",
2093 ARRAY_SIZE(kNegativePostIndex),
2094 kNegativePostIndex},
2095 {{al, r3, r8, minus, r5, PostIndex},
2096 "al r3 r8 minus r5 PostIndex",
2097 "NegativePostIndex_al_r3_r8_minus_r5_PostIndex",
2098 ARRAY_SIZE(kNegativePostIndex),
2099 kNegativePostIndex},
2100 {{al, r6, r1, minus, r5, PostIndex},
2101 "al r6 r1 minus r5 PostIndex",
2102 "NegativePostIndex_al_r6_r1_minus_r5_PostIndex",
2103 ARRAY_SIZE(kNegativePostIndex),
2104 kNegativePostIndex},
2105 {{al, r1, r2, minus, r11, PostIndex},
2106 "al r1 r2 minus r11 PostIndex",
2107 "NegativePostIndex_al_r1_r2_minus_r11_PostIndex",
2108 ARRAY_SIZE(kNegativePostIndex),
2109 kNegativePostIndex},
2110 {{al, r12, r9, minus, r4, PostIndex},
2111 "al r12 r9 minus r4 PostIndex",
2112 "NegativePostIndex_al_r12_r9_minus_r4_PostIndex",
2113 ARRAY_SIZE(kNegativePostIndex),
2114 kNegativePostIndex},
2115 {{al, r14, r12, minus, r7, PostIndex},
2116 "al r14 r12 minus r7 PostIndex",
2117 "NegativePostIndex_al_r14_r12_minus_r7_PostIndex",
2118 ARRAY_SIZE(kNegativePostIndex),
2119 kNegativePostIndex},
2120 {{al, r5, r2, minus, r4, PostIndex},
2121 "al r5 r2 minus r4 PostIndex",
2122 "NegativePostIndex_al_r5_r2_minus_r4_PostIndex",
2123 ARRAY_SIZE(kNegativePostIndex),
2124 kNegativePostIndex},
2125 {{al, r2, r6, minus, r8, PostIndex},
2126 "al r2 r6 minus r8 PostIndex",
2127 "NegativePostIndex_al_r2_r6_minus_r8_PostIndex",
2128 ARRAY_SIZE(kNegativePostIndex),
2129 kNegativePostIndex},
2130 {{al, r5, r3, minus, r8, PostIndex},
2131 "al r5 r3 minus r8 PostIndex",
2132 "NegativePostIndex_al_r5_r3_minus_r8_PostIndex",
2133 ARRAY_SIZE(kNegativePostIndex),
2134 kNegativePostIndex},
2135 {{al, r6, r11, minus, r3, PostIndex},
2136 "al r6 r11 minus r3 PostIndex",
2137 "NegativePostIndex_al_r6_r11_minus_r3_PostIndex",
2138 ARRAY_SIZE(kNegativePostIndex),
2139 kNegativePostIndex},
2140 {{al, r12, r6, minus, r11, PostIndex},
2141 "al r12 r6 minus r11 PostIndex",
2142 "NegativePostIndex_al_r12_r6_minus_r11_PostIndex",
2143 ARRAY_SIZE(kNegativePostIndex),
2144 kNegativePostIndex},
2145 {{al, r8, r14, minus, r7, PostIndex},
2146 "al r8 r14 minus r7 PostIndex",
2147 "NegativePostIndex_al_r8_r14_minus_r7_PostIndex",
2148 ARRAY_SIZE(kNegativePostIndex),
2149 kNegativePostIndex},
2150 {{al, r2, r6, minus, r5, PostIndex},
2151 "al r2 r6 minus r5 PostIndex",
2152 "NegativePostIndex_al_r2_r6_minus_r5_PostIndex",
2153 ARRAY_SIZE(kNegativePostIndex),
2154 kNegativePostIndex},
2155 {{al, r12, r5, minus, r1, PostIndex},
2156 "al r12 r5 minus r1 PostIndex",
2157 "NegativePostIndex_al_r12_r5_minus_r1_PostIndex",
2158 ARRAY_SIZE(kNegativePostIndex),
2159 kNegativePostIndex},
2160 {{al, r11, r2, minus, r9, PostIndex},
2161 "al r11 r2 minus r9 PostIndex",
2162 "NegativePostIndex_al_r11_r2_minus_r9_PostIndex",
2163 ARRAY_SIZE(kNegativePostIndex),
2164 kNegativePostIndex},
2165 {{al, r12, r4, minus, r0, PostIndex},
2166 "al r12 r4 minus r0 PostIndex",
2167 "NegativePostIndex_al_r12_r4_minus_r0_PostIndex",
2168 ARRAY_SIZE(kNegativePostIndex),
2169 kNegativePostIndex},
2170 {{al, r4, r3, minus, r12, PostIndex},
2171 "al r4 r3 minus r12 PostIndex",
2172 "NegativePostIndex_al_r4_r3_minus_r12_PostIndex",
2173 ARRAY_SIZE(kNegativePostIndex),
2174 kNegativePostIndex},
2175 {{al, r14, r1, minus, r6, PostIndex},
2176 "al r14 r1 minus r6 PostIndex",
2177 "NegativePostIndex_al_r14_r1_minus_r6_PostIndex",
2178 ARRAY_SIZE(kNegativePostIndex),
2179 kNegativePostIndex},
2180 {{al, r12, r4, minus, r7, PostIndex},
2181 "al r12 r4 minus r7 PostIndex",
2182 "NegativePostIndex_al_r12_r4_minus_r7_PostIndex",
2183 ARRAY_SIZE(kNegativePostIndex),
2184 kNegativePostIndex},
2185 {{al, r12, r7, minus, r3, PostIndex},
2186 "al r12 r7 minus r3 PostIndex",
2187 "NegativePostIndex_al_r12_r7_minus_r3_PostIndex",
2188 ARRAY_SIZE(kNegativePostIndex),
2189 kNegativePostIndex},
2190 {{al, r8, r0, minus, r4, PostIndex},
2191 "al r8 r0 minus r4 PostIndex",
2192 "NegativePostIndex_al_r8_r0_minus_r4_PostIndex",
2193 ARRAY_SIZE(kNegativePostIndex),
2194 kNegativePostIndex},
2195 {{al, r10, r0, minus, r5, PostIndex},
2196 "al r10 r0 minus r5 PostIndex",
2197 "NegativePostIndex_al_r10_r0_minus_r5_PostIndex",
2198 ARRAY_SIZE(kNegativePostIndex),
2199 kNegativePostIndex},
2200 {{al, r4, r2, minus, r8, PostIndex},
2201 "al r4 r2 minus r8 PostIndex",
2202 "NegativePostIndex_al_r4_r2_minus_r8_PostIndex",
2203 ARRAY_SIZE(kNegativePostIndex),
2204 kNegativePostIndex},
2205 {{al, r7, r8, minus, r1, PostIndex},
2206 "al r7 r8 minus r1 PostIndex",
2207 "NegativePostIndex_al_r7_r8_minus_r1_PostIndex",
2208 ARRAY_SIZE(kNegativePostIndex),
2209 kNegativePostIndex},
2210 {{al, r8, r2, minus, r10, PostIndex},
2211 "al r8 r2 minus r10 PostIndex",
2212 "NegativePostIndex_al_r8_r2_minus_r10_PostIndex",
2213 ARRAY_SIZE(kNegativePostIndex),
2214 kNegativePostIndex},
2215 {{al, r11, r2, minus, r5, PostIndex},
2216 "al r11 r2 minus r5 PostIndex",
2217 "NegativePostIndex_al_r11_r2_minus_r5_PostIndex",
2218 ARRAY_SIZE(kNegativePostIndex),
2219 kNegativePostIndex},
2220 {{al, r5, r12, minus, r14, PostIndex},
2221 "al r5 r12 minus r14 PostIndex",
2222 "NegativePostIndex_al_r5_r12_minus_r14_PostIndex",
2223 ARRAY_SIZE(kNegativePostIndex),
2224 kNegativePostIndex},
2225 {{al, r8, r1, minus, r14, PostIndex},
2226 "al r8 r1 minus r14 PostIndex",
2227 "NegativePostIndex_al_r8_r1_minus_r14_PostIndex",
2228 ARRAY_SIZE(kNegativePostIndex),
2229 kNegativePostIndex},
2230 {{al, r10, r6, minus, r8, PostIndex},
2231 "al r10 r6 minus r8 PostIndex",
2232 "NegativePostIndex_al_r10_r6_minus_r8_PostIndex",
2233 ARRAY_SIZE(kNegativePostIndex),
2234 kNegativePostIndex},
2235 {{al, r0, r4, minus, r12, PostIndex},
2236 "al r0 r4 minus r12 PostIndex",
2237 "NegativePostIndex_al_r0_r4_minus_r12_PostIndex",
2238 ARRAY_SIZE(kNegativePostIndex),
2239 kNegativePostIndex},
2240 {{al, r6, r0, minus, r11, PostIndex},
2241 "al r6 r0 minus r11 PostIndex",
2242 "NegativePostIndex_al_r6_r0_minus_r11_PostIndex",
2243 ARRAY_SIZE(kNegativePostIndex),
2244 kNegativePostIndex},
2245 {{al, r10, r7, minus, r11, PostIndex},
2246 "al r10 r7 minus r11 PostIndex",
2247 "NegativePostIndex_al_r10_r7_minus_r11_PostIndex",
2248 ARRAY_SIZE(kNegativePostIndex),
2249 kNegativePostIndex},
2250 {{al, r0, r10, minus, r5, PostIndex},
2251 "al r0 r10 minus r5 PostIndex",
2252 "NegativePostIndex_al_r0_r10_minus_r5_PostIndex",
2253 ARRAY_SIZE(kNegativePostIndex),
2254 kNegativePostIndex},
2255 {{al, r4, r7, minus, r12, PostIndex},
2256 "al r4 r7 minus r12 PostIndex",
2257 "NegativePostIndex_al_r4_r7_minus_r12_PostIndex",
2258 ARRAY_SIZE(kNegativePostIndex),
2259 kNegativePostIndex},
2260 {{al, r8, r2, minus, r0, PostIndex},
2261 "al r8 r2 minus r0 PostIndex",
2262 "NegativePostIndex_al_r8_r2_minus_r0_PostIndex",
2263 ARRAY_SIZE(kNegativePostIndex),
2264 kNegativePostIndex},
2265 {{al, r2, r11, minus, r10, PostIndex},
2266 "al r2 r11 minus r10 PostIndex",
2267 "NegativePostIndex_al_r2_r11_minus_r10_PostIndex",
2268 ARRAY_SIZE(kNegativePostIndex),
2269 kNegativePostIndex},
2270 {{al, r8, r10, minus, r5, PostIndex},
2271 "al r8 r10 minus r5 PostIndex",
2272 "NegativePostIndex_al_r8_r10_minus_r5_PostIndex",
2273 ARRAY_SIZE(kNegativePostIndex),
2274 kNegativePostIndex},
2275 {{al, r11, r5, minus, r10, PostIndex},
2276 "al r11 r5 minus r10 PostIndex",
2277 "NegativePostIndex_al_r11_r5_minus_r10_PostIndex",
2278 ARRAY_SIZE(kNegativePostIndex),
2279 kNegativePostIndex},
2280 {{al, r9, r14, minus, r2, PostIndex},
2281 "al r9 r14 minus r2 PostIndex",
2282 "NegativePostIndex_al_r9_r14_minus_r2_PostIndex",
2283 ARRAY_SIZE(kNegativePostIndex),
2284 kNegativePostIndex},
2285 {{al, r7, r12, minus, r3, PostIndex},
2286 "al r7 r12 minus r3 PostIndex",
2287 "NegativePostIndex_al_r7_r12_minus_r3_PostIndex",
2288 ARRAY_SIZE(kNegativePostIndex),
2289 kNegativePostIndex},
2290 {{al, r12, r8, minus, r6, PostIndex},
2291 "al r12 r8 minus r6 PostIndex",
2292 "NegativePostIndex_al_r12_r8_minus_r6_PostIndex",
2293 ARRAY_SIZE(kNegativePostIndex),
2294 kNegativePostIndex},
2295 {{al, r9, r12, minus, r5, PostIndex},
2296 "al r9 r12 minus r5 PostIndex",
2297 "NegativePostIndex_al_r9_r12_minus_r5_PostIndex",
2298 ARRAY_SIZE(kNegativePostIndex),
2299 kNegativePostIndex},
2300 {{al, r4, r8, minus, r10, PostIndex},
2301 "al r4 r8 minus r10 PostIndex",
2302 "NegativePostIndex_al_r4_r8_minus_r10_PostIndex",
2303 ARRAY_SIZE(kNegativePostIndex),
2304 kNegativePostIndex},
2305 {{al, r10, r12, minus, r1, PostIndex},
2306 "al r10 r12 minus r1 PostIndex",
2307 "NegativePostIndex_al_r10_r12_minus_r1_PostIndex",
2308 ARRAY_SIZE(kNegativePostIndex),
2309 kNegativePostIndex},
2310 {{al, r12, r7, minus, r8, PostIndex},
2311 "al r12 r7 minus r8 PostIndex",
2312 "NegativePostIndex_al_r12_r7_minus_r8_PostIndex",
2313 ARRAY_SIZE(kNegativePostIndex),
2314 kNegativePostIndex},
2315 {{al, r8, r6, minus, r0, PostIndex},
2316 "al r8 r6 minus r0 PostIndex",
2317 "NegativePostIndex_al_r8_r6_minus_r0_PostIndex",
2318 ARRAY_SIZE(kNegativePostIndex),
2319 kNegativePostIndex},
2320 {{al, r8, r3, minus, r14, PostIndex},
2321 "al r8 r3 minus r14 PostIndex",
2322 "NegativePostIndex_al_r8_r3_minus_r14_PostIndex",
2323 ARRAY_SIZE(kNegativePostIndex),
2324 kNegativePostIndex},
2325 {{al, r12, r14, minus, r3, PostIndex},
2326 "al r12 r14 minus r3 PostIndex",
2327 "NegativePostIndex_al_r12_r14_minus_r3_PostIndex",
2328 ARRAY_SIZE(kNegativePostIndex),
2329 kNegativePostIndex},
2330 {{al, r10, r2, minus, r7, PostIndex},
2331 "al r10 r2 minus r7 PostIndex",
2332 "NegativePostIndex_al_r10_r2_minus_r7_PostIndex",
2333 ARRAY_SIZE(kNegativePostIndex),
2334 kNegativePostIndex},
2335 {{al, r12, r9, plus, r0, PreIndex},
2336 "al r12 r9 plus r0 PreIndex",
2337 "PositivePreIndex_al_r12_r9_plus_r0_PreIndex",
2338 ARRAY_SIZE(kPositivePreIndex),
2339 kPositivePreIndex},
2340 {{al, r0, r4, plus, r11, PreIndex},
2341 "al r0 r4 plus r11 PreIndex",
2342 "PositivePreIndex_al_r0_r4_plus_r11_PreIndex",
2343 ARRAY_SIZE(kPositivePreIndex),
2344 kPositivePreIndex},
2345 {{al, r14, r8, plus, r7, PreIndex},
2346 "al r14 r8 plus r7 PreIndex",
2347 "PositivePreIndex_al_r14_r8_plus_r7_PreIndex",
2348 ARRAY_SIZE(kPositivePreIndex),
2349 kPositivePreIndex},
2350 {{al, r2, r1, plus, r8, PreIndex},
2351 "al r2 r1 plus r8 PreIndex",
2352 "PositivePreIndex_al_r2_r1_plus_r8_PreIndex",
2353 ARRAY_SIZE(kPositivePreIndex),
2354 kPositivePreIndex},
2355 {{al, r7, r9, plus, r5, PreIndex},
2356 "al r7 r9 plus r5 PreIndex",
2357 "PositivePreIndex_al_r7_r9_plus_r5_PreIndex",
2358 ARRAY_SIZE(kPositivePreIndex),
2359 kPositivePreIndex},
2360 {{al, r11, r12, plus, r3, PreIndex},
2361 "al r11 r12 plus r3 PreIndex",
2362 "PositivePreIndex_al_r11_r12_plus_r3_PreIndex",
2363 ARRAY_SIZE(kPositivePreIndex),
2364 kPositivePreIndex},
2365 {{al, r8, r1, plus, r6, PreIndex},
2366 "al r8 r1 plus r6 PreIndex",
2367 "PositivePreIndex_al_r8_r1_plus_r6_PreIndex",
2368 ARRAY_SIZE(kPositivePreIndex),
2369 kPositivePreIndex},
2370 {{al, r9, r10, plus, r8, PreIndex},
2371 "al r9 r10 plus r8 PreIndex",
2372 "PositivePreIndex_al_r9_r10_plus_r8_PreIndex",
2373 ARRAY_SIZE(kPositivePreIndex),
2374 kPositivePreIndex},
2375 {{al, r12, r1, plus, r0, PreIndex},
2376 "al r12 r1 plus r0 PreIndex",
2377 "PositivePreIndex_al_r12_r1_plus_r0_PreIndex",
2378 ARRAY_SIZE(kPositivePreIndex),
2379 kPositivePreIndex},
2380 {{al, r10, r7, plus, r3, PreIndex},
2381 "al r10 r7 plus r3 PreIndex",
2382 "PositivePreIndex_al_r10_r7_plus_r3_PreIndex",
2383 ARRAY_SIZE(kPositivePreIndex),
2384 kPositivePreIndex},
2385 {{al, r9, r0, plus, r2, PreIndex},
2386 "al r9 r0 plus r2 PreIndex",
2387 "PositivePreIndex_al_r9_r0_plus_r2_PreIndex",
2388 ARRAY_SIZE(kPositivePreIndex),
2389 kPositivePreIndex},
2390 {{al, r9, r5, plus, r3, PreIndex},
2391 "al r9 r5 plus r3 PreIndex",
2392 "PositivePreIndex_al_r9_r5_plus_r3_PreIndex",
2393 ARRAY_SIZE(kPositivePreIndex),
2394 kPositivePreIndex},
2395 {{al, r6, r0, plus, r8, PreIndex},
2396 "al r6 r0 plus r8 PreIndex",
2397 "PositivePreIndex_al_r6_r0_plus_r8_PreIndex",
2398 ARRAY_SIZE(kPositivePreIndex),
2399 kPositivePreIndex},
2400 {{al, r3, r4, plus, r8, PreIndex},
2401 "al r3 r4 plus r8 PreIndex",
2402 "PositivePreIndex_al_r3_r4_plus_r8_PreIndex",
2403 ARRAY_SIZE(kPositivePreIndex),
2404 kPositivePreIndex},
2405 {{al, r1, r7, plus, r6, PreIndex},
2406 "al r1 r7 plus r6 PreIndex",
2407 "PositivePreIndex_al_r1_r7_plus_r6_PreIndex",
2408 ARRAY_SIZE(kPositivePreIndex),
2409 kPositivePreIndex},
2410 {{al, r2, r8, plus, r7, PreIndex},
2411 "al r2 r8 plus r7 PreIndex",
2412 "PositivePreIndex_al_r2_r8_plus_r7_PreIndex",
2413 ARRAY_SIZE(kPositivePreIndex),
2414 kPositivePreIndex},
2415 {{al, r10, r11, plus, r0, PreIndex},
2416 "al r10 r11 plus r0 PreIndex",
2417 "PositivePreIndex_al_r10_r11_plus_r0_PreIndex",
2418 ARRAY_SIZE(kPositivePreIndex),
2419 kPositivePreIndex},
2420 {{al, r10, r9, plus, r11, PreIndex},
2421 "al r10 r9 plus r11 PreIndex",
2422 "PositivePreIndex_al_r10_r9_plus_r11_PreIndex",
2423 ARRAY_SIZE(kPositivePreIndex),
2424 kPositivePreIndex},
2425 {{al, r9, r7, plus, r11, PreIndex},
2426 "al r9 r7 plus r11 PreIndex",
2427 "PositivePreIndex_al_r9_r7_plus_r11_PreIndex",
2428 ARRAY_SIZE(kPositivePreIndex),
2429 kPositivePreIndex},
2430 {{al, r11, r0, plus, r7, PreIndex},
2431 "al r11 r0 plus r7 PreIndex",
2432 "PositivePreIndex_al_r11_r0_plus_r7_PreIndex",
2433 ARRAY_SIZE(kPositivePreIndex),
2434 kPositivePreIndex},
2435 {{al, r9, r0, plus, r4, PreIndex},
2436 "al r9 r0 plus r4 PreIndex",
2437 "PositivePreIndex_al_r9_r0_plus_r4_PreIndex",
2438 ARRAY_SIZE(kPositivePreIndex),
2439 kPositivePreIndex},
2440 {{al, r6, r1, plus, r3, PreIndex},
2441 "al r6 r1 plus r3 PreIndex",
2442 "PositivePreIndex_al_r6_r1_plus_r3_PreIndex",
2443 ARRAY_SIZE(kPositivePreIndex),
2444 kPositivePreIndex},
2445 {{al, r0, r11, plus, r1, PreIndex},
2446 "al r0 r11 plus r1 PreIndex",
2447 "PositivePreIndex_al_r0_r11_plus_r1_PreIndex",
2448 ARRAY_SIZE(kPositivePreIndex),
2449 kPositivePreIndex},
2450 {{al, r5, r10, plus, r7, PreIndex},
2451 "al r5 r10 plus r7 PreIndex",
2452 "PositivePreIndex_al_r5_r10_plus_r7_PreIndex",
2453 ARRAY_SIZE(kPositivePreIndex),
2454 kPositivePreIndex},
2455 {{al, r3, r2, plus, r10, PreIndex},
2456 "al r3 r2 plus r10 PreIndex",
2457 "PositivePreIndex_al_r3_r2_plus_r10_PreIndex",
2458 ARRAY_SIZE(kPositivePreIndex),
2459 kPositivePreIndex},
2460 {{al, r8, r2, plus, r0, PreIndex},
2461 "al r8 r2 plus r0 PreIndex",
2462 "PositivePreIndex_al_r8_r2_plus_r0_PreIndex",
2463 ARRAY_SIZE(kPositivePreIndex),
2464 kPositivePreIndex},
2465 {{al, r3, r0, plus, r9, PreIndex},
2466 "al r3 r0 plus r9 PreIndex",
2467 "PositivePreIndex_al_r3_r0_plus_r9_PreIndex",
2468 ARRAY_SIZE(kPositivePreIndex),
2469 kPositivePreIndex},
2470 {{al, r2, r4, plus, r7, PreIndex},
2471 "al r2 r4 plus r7 PreIndex",
2472 "PositivePreIndex_al_r2_r4_plus_r7_PreIndex",
2473 ARRAY_SIZE(kPositivePreIndex),
2474 kPositivePreIndex},
2475 {{al, r14, r1, plus, r6, PreIndex},
2476 "al r14 r1 plus r6 PreIndex",
2477 "PositivePreIndex_al_r14_r1_plus_r6_PreIndex",
2478 ARRAY_SIZE(kPositivePreIndex),
2479 kPositivePreIndex},
2480 {{al, r9, r8, plus, r14, PreIndex},
2481 "al r9 r8 plus r14 PreIndex",
2482 "PositivePreIndex_al_r9_r8_plus_r14_PreIndex",
2483 ARRAY_SIZE(kPositivePreIndex),
2484 kPositivePreIndex},
2485 {{al, r14, r5, plus, r1, PreIndex},
2486 "al r14 r5 plus r1 PreIndex",
2487 "PositivePreIndex_al_r14_r5_plus_r1_PreIndex",
2488 ARRAY_SIZE(kPositivePreIndex),
2489 kPositivePreIndex},
2490 {{al, r5, r14, plus, r12, PreIndex},
2491 "al r5 r14 plus r12 PreIndex",
2492 "PositivePreIndex_al_r5_r14_plus_r12_PreIndex",
2493 ARRAY_SIZE(kPositivePreIndex),
2494 kPositivePreIndex},
2495 {{al, r0, r8, plus, r14, PreIndex},
2496 "al r0 r8 plus r14 PreIndex",
2497 "PositivePreIndex_al_r0_r8_plus_r14_PreIndex",
2498 ARRAY_SIZE(kPositivePreIndex),
2499 kPositivePreIndex},
2500 {{al, r2, r3, plus, r10, PreIndex},
2501 "al r2 r3 plus r10 PreIndex",
2502 "PositivePreIndex_al_r2_r3_plus_r10_PreIndex",
2503 ARRAY_SIZE(kPositivePreIndex),
2504 kPositivePreIndex},
2505 {{al, r2, r10, plus, r11, PreIndex},
2506 "al r2 r10 plus r11 PreIndex",
2507 "PositivePreIndex_al_r2_r10_plus_r11_PreIndex",
2508 ARRAY_SIZE(kPositivePreIndex),
2509 kPositivePreIndex},
2510 {{al, r7, r9, plus, r14, PreIndex},
2511 "al r7 r9 plus r14 PreIndex",
2512 "PositivePreIndex_al_r7_r9_plus_r14_PreIndex",
2513 ARRAY_SIZE(kPositivePreIndex),
2514 kPositivePreIndex},
2515 {{al, r1, r10, plus, r12, PreIndex},
2516 "al r1 r10 plus r12 PreIndex",
2517 "PositivePreIndex_al_r1_r10_plus_r12_PreIndex",
2518 ARRAY_SIZE(kPositivePreIndex),
2519 kPositivePreIndex},
2520 {{al, r1, r10, plus, r0, PreIndex},
2521 "al r1 r10 plus r0 PreIndex",
2522 "PositivePreIndex_al_r1_r10_plus_r0_PreIndex",
2523 ARRAY_SIZE(kPositivePreIndex),
2524 kPositivePreIndex},
2525 {{al, r12, r11, plus, r9, PreIndex},
2526 "al r12 r11 plus r9 PreIndex",
2527 "PositivePreIndex_al_r12_r11_plus_r9_PreIndex",
2528 ARRAY_SIZE(kPositivePreIndex),
2529 kPositivePreIndex},
2530 {{al, r0, r5, plus, r8, PreIndex},
2531 "al r0 r5 plus r8 PreIndex",
2532 "PositivePreIndex_al_r0_r5_plus_r8_PreIndex",
2533 ARRAY_SIZE(kPositivePreIndex),
2534 kPositivePreIndex},
2535 {{al, r2, r4, plus, r8, PreIndex},
2536 "al r2 r4 plus r8 PreIndex",
2537 "PositivePreIndex_al_r2_r4_plus_r8_PreIndex",
2538 ARRAY_SIZE(kPositivePreIndex),
2539 kPositivePreIndex},
2540 {{al, r14, r11, plus, r12, PreIndex},
2541 "al r14 r11 plus r12 PreIndex",
2542 "PositivePreIndex_al_r14_r11_plus_r12_PreIndex",
2543 ARRAY_SIZE(kPositivePreIndex),
2544 kPositivePreIndex},
2545 {{al, r4, r5, plus, r3, PreIndex},
2546 "al r4 r5 plus r3 PreIndex",
2547 "PositivePreIndex_al_r4_r5_plus_r3_PreIndex",
2548 ARRAY_SIZE(kPositivePreIndex),
2549 kPositivePreIndex},
2550 {{al, r1, r6, plus, r12, PreIndex},
2551 "al r1 r6 plus r12 PreIndex",
2552 "PositivePreIndex_al_r1_r6_plus_r12_PreIndex",
2553 ARRAY_SIZE(kPositivePreIndex),
2554 kPositivePreIndex},
2555 {{al, r4, r8, plus, r3, PreIndex},
2556 "al r4 r8 plus r3 PreIndex",
2557 "PositivePreIndex_al_r4_r8_plus_r3_PreIndex",
2558 ARRAY_SIZE(kPositivePreIndex),
2559 kPositivePreIndex},
2560 {{al, r0, r14, plus, r12, PreIndex},
2561 "al r0 r14 plus r12 PreIndex",
2562 "PositivePreIndex_al_r0_r14_plus_r12_PreIndex",
2563 ARRAY_SIZE(kPositivePreIndex),
2564 kPositivePreIndex},
2565 {{al, r0, r11, plus, r9, PreIndex},
2566 "al r0 r11 plus r9 PreIndex",
2567 "PositivePreIndex_al_r0_r11_plus_r9_PreIndex",
2568 ARRAY_SIZE(kPositivePreIndex),
2569 kPositivePreIndex},
2570 {{al, r11, r10, plus, r2, PreIndex},
2571 "al r11 r10 plus r2 PreIndex",
2572 "PositivePreIndex_al_r11_r10_plus_r2_PreIndex",
2573 ARRAY_SIZE(kPositivePreIndex),
2574 kPositivePreIndex},
2575 {{al, r8, r0, plus, r12, PreIndex},
2576 "al r8 r0 plus r12 PreIndex",
2577 "PositivePreIndex_al_r8_r0_plus_r12_PreIndex",
2578 ARRAY_SIZE(kPositivePreIndex),
2579 kPositivePreIndex},
2580 {{al, r0, r10, plus, r7, PreIndex},
2581 "al r0 r10 plus r7 PreIndex",
2582 "PositivePreIndex_al_r0_r10_plus_r7_PreIndex",
2583 ARRAY_SIZE(kPositivePreIndex),
2584 kPositivePreIndex},
2585 {{al, r2, r6, plus, r9, PreIndex},
2586 "al r2 r6 plus r9 PreIndex",
2587 "PositivePreIndex_al_r2_r6_plus_r9_PreIndex",
2588 ARRAY_SIZE(kPositivePreIndex),
2589 kPositivePreIndex},
2590 {{al, r7, r9, plus, r0, PreIndex},
2591 "al r7 r9 plus r0 PreIndex",
2592 "PositivePreIndex_al_r7_r9_plus_r0_PreIndex",
2593 ARRAY_SIZE(kPositivePreIndex),
2594 kPositivePreIndex},
2595 {{al, r11, r2, plus, r4, PreIndex},
2596 "al r11 r2 plus r4 PreIndex",
2597 "PositivePreIndex_al_r11_r2_plus_r4_PreIndex",
2598 ARRAY_SIZE(kPositivePreIndex),
2599 kPositivePreIndex},
2600 {{al, r2, r3, plus, r4, PreIndex},
2601 "al r2 r3 plus r4 PreIndex",
2602 "PositivePreIndex_al_r2_r3_plus_r4_PreIndex",
2603 ARRAY_SIZE(kPositivePreIndex),
2604 kPositivePreIndex},
2605 {{al, r0, r14, plus, r11, PreIndex},
2606 "al r0 r14 plus r11 PreIndex",
2607 "PositivePreIndex_al_r0_r14_plus_r11_PreIndex",
2608 ARRAY_SIZE(kPositivePreIndex),
2609 kPositivePreIndex},
2610 {{al, r7, r5, plus, r0, PreIndex},
2611 "al r7 r5 plus r0 PreIndex",
2612 "PositivePreIndex_al_r7_r5_plus_r0_PreIndex",
2613 ARRAY_SIZE(kPositivePreIndex),
2614 kPositivePreIndex},
2615 {{al, r6, r12, plus, r9, PreIndex},
2616 "al r6 r12 plus r9 PreIndex",
2617 "PositivePreIndex_al_r6_r12_plus_r9_PreIndex",
2618 ARRAY_SIZE(kPositivePreIndex),
2619 kPositivePreIndex},
2620 {{al, r8, r11, plus, r10, PreIndex},
2621 "al r8 r11 plus r10 PreIndex",
2622 "PositivePreIndex_al_r8_r11_plus_r10_PreIndex",
2623 ARRAY_SIZE(kPositivePreIndex),
2624 kPositivePreIndex},
2625 {{al, r5, r14, plus, r2, PreIndex},
2626 "al r5 r14 plus r2 PreIndex",
2627 "PositivePreIndex_al_r5_r14_plus_r2_PreIndex",
2628 ARRAY_SIZE(kPositivePreIndex),
2629 kPositivePreIndex},
2630 {{al, r4, r7, plus, r5, PreIndex},
2631 "al r4 r7 plus r5 PreIndex",
2632 "PositivePreIndex_al_r4_r7_plus_r5_PreIndex",
2633 ARRAY_SIZE(kPositivePreIndex),
2634 kPositivePreIndex},
2635 {{al, r14, r8, plus, r10, PreIndex},
2636 "al r14 r8 plus r10 PreIndex",
2637 "PositivePreIndex_al_r14_r8_plus_r10_PreIndex",
2638 ARRAY_SIZE(kPositivePreIndex),
2639 kPositivePreIndex},
2640 {{al, r8, r1, plus, r9, PreIndex},
2641 "al r8 r1 plus r9 PreIndex",
2642 "PositivePreIndex_al_r8_r1_plus_r9_PreIndex",
2643 ARRAY_SIZE(kPositivePreIndex),
2644 kPositivePreIndex},
2645 {{al, r4, r9, plus, r1, PreIndex},
2646 "al r4 r9 plus r1 PreIndex",
2647 "PositivePreIndex_al_r4_r9_plus_r1_PreIndex",
2648 ARRAY_SIZE(kPositivePreIndex),
2649 kPositivePreIndex},
2650 {{al, r8, r5, plus, r11, PreIndex},
2651 "al r8 r5 plus r11 PreIndex",
2652 "PositivePreIndex_al_r8_r5_plus_r11_PreIndex",
2653 ARRAY_SIZE(kPositivePreIndex),
2654 kPositivePreIndex},
2655 {{al, r0, r7, plus, r5, PreIndex},
2656 "al r0 r7 plus r5 PreIndex",
2657 "PositivePreIndex_al_r0_r7_plus_r5_PreIndex",
2658 ARRAY_SIZE(kPositivePreIndex),
2659 kPositivePreIndex},
2660 {{al, r8, r3, plus, r11, PreIndex},
2661 "al r8 r3 plus r11 PreIndex",
2662 "PositivePreIndex_al_r8_r3_plus_r11_PreIndex",
2663 ARRAY_SIZE(kPositivePreIndex),
2664 kPositivePreIndex},
2665 {{al, r12, r8, plus, r6, PreIndex},
2666 "al r12 r8 plus r6 PreIndex",
2667 "PositivePreIndex_al_r12_r8_plus_r6_PreIndex",
2668 ARRAY_SIZE(kPositivePreIndex),
2669 kPositivePreIndex},
2670 {{al, r5, r0, plus, r12, PreIndex},
2671 "al r5 r0 plus r12 PreIndex",
2672 "PositivePreIndex_al_r5_r0_plus_r12_PreIndex",
2673 ARRAY_SIZE(kPositivePreIndex),
2674 kPositivePreIndex},
2675 {{al, r12, r2, plus, r8, PreIndex},
2676 "al r12 r2 plus r8 PreIndex",
2677 "PositivePreIndex_al_r12_r2_plus_r8_PreIndex",
2678 ARRAY_SIZE(kPositivePreIndex),
2679 kPositivePreIndex},
2680 {{al, r7, r4, plus, r5, PreIndex},
2681 "al r7 r4 plus r5 PreIndex",
2682 "PositivePreIndex_al_r7_r4_plus_r5_PreIndex",
2683 ARRAY_SIZE(kPositivePreIndex),
2684 kPositivePreIndex},
2685 {{al, r4, r12, plus, r3, PreIndex},
2686 "al r4 r12 plus r3 PreIndex",
2687 "PositivePreIndex_al_r4_r12_plus_r3_PreIndex",
2688 ARRAY_SIZE(kPositivePreIndex),
2689 kPositivePreIndex},
2690 {{al, r7, r11, plus, r1, PreIndex},
2691 "al r7 r11 plus r1 PreIndex",
2692 "PositivePreIndex_al_r7_r11_plus_r1_PreIndex",
2693 ARRAY_SIZE(kPositivePreIndex),
2694 kPositivePreIndex},
2695 {{al, r6, r14, plus, r3, PreIndex},
2696 "al r6 r14 plus r3 PreIndex",
2697 "PositivePreIndex_al_r6_r14_plus_r3_PreIndex",
2698 ARRAY_SIZE(kPositivePreIndex),
2699 kPositivePreIndex},
2700 {{al, r5, r9, plus, r10, PreIndex},
2701 "al r5 r9 plus r10 PreIndex",
2702 "PositivePreIndex_al_r5_r9_plus_r10_PreIndex",
2703 ARRAY_SIZE(kPositivePreIndex),
2704 kPositivePreIndex},
2705 {{al, r6, r11, plus, r12, PreIndex},
2706 "al r6 r11 plus r12 PreIndex",
2707 "PositivePreIndex_al_r6_r11_plus_r12_PreIndex",
2708 ARRAY_SIZE(kPositivePreIndex),
2709 kPositivePreIndex},
2710 {{al, r12, r7, plus, r4, PreIndex},
2711 "al r12 r7 plus r4 PreIndex",
2712 "PositivePreIndex_al_r12_r7_plus_r4_PreIndex",
2713 ARRAY_SIZE(kPositivePreIndex),
2714 kPositivePreIndex},
2715 {{al, r9, r10, plus, r0, PreIndex},
2716 "al r9 r10 plus r0 PreIndex",
2717 "PositivePreIndex_al_r9_r10_plus_r0_PreIndex",
2718 ARRAY_SIZE(kPositivePreIndex),
2719 kPositivePreIndex},
2720 {{al, r12, r11, plus, r10, PreIndex},
2721 "al r12 r11 plus r10 PreIndex",
2722 "PositivePreIndex_al_r12_r11_plus_r10_PreIndex",
2723 ARRAY_SIZE(kPositivePreIndex),
2724 kPositivePreIndex},
2725 {{al, r6, r11, plus, r3, PreIndex},
2726 "al r6 r11 plus r3 PreIndex",
2727 "PositivePreIndex_al_r6_r11_plus_r3_PreIndex",
2728 ARRAY_SIZE(kPositivePreIndex),
2729 kPositivePreIndex},
2730 {{al, r9, r8, plus, r6, PreIndex},
2731 "al r9 r8 plus r6 PreIndex",
2732 "PositivePreIndex_al_r9_r8_plus_r6_PreIndex",
2733 ARRAY_SIZE(kPositivePreIndex),
2734 kPositivePreIndex},
2735 {{al, r11, r7, plus, r8, PreIndex},
2736 "al r11 r7 plus r8 PreIndex",
2737 "PositivePreIndex_al_r11_r7_plus_r8_PreIndex",
2738 ARRAY_SIZE(kPositivePreIndex),
2739 kPositivePreIndex},
2740 {{al, r2, r11, plus, r7, PreIndex},
2741 "al r2 r11 plus r7 PreIndex",
2742 "PositivePreIndex_al_r2_r11_plus_r7_PreIndex",
2743 ARRAY_SIZE(kPositivePreIndex),
2744 kPositivePreIndex},
2745 {{al, r6, r7, plus, r2, PreIndex},
2746 "al r6 r7 plus r2 PreIndex",
2747 "PositivePreIndex_al_r6_r7_plus_r2_PreIndex",
2748 ARRAY_SIZE(kPositivePreIndex),
2749 kPositivePreIndex},
2750 {{al, r8, r5, plus, r4, PreIndex},
2751 "al r8 r5 plus r4 PreIndex",
2752 "PositivePreIndex_al_r8_r5_plus_r4_PreIndex",
2753 ARRAY_SIZE(kPositivePreIndex),
2754 kPositivePreIndex},
2755 {{al, r0, r4, plus, r6, PreIndex},
2756 "al r0 r4 plus r6 PreIndex",
2757 "PositivePreIndex_al_r0_r4_plus_r6_PreIndex",
2758 ARRAY_SIZE(kPositivePreIndex),
2759 kPositivePreIndex},
2760 {{al, r11, r14, plus, r1, PreIndex},
2761 "al r11 r14 plus r1 PreIndex",
2762 "PositivePreIndex_al_r11_r14_plus_r1_PreIndex",
2763 ARRAY_SIZE(kPositivePreIndex),
2764 kPositivePreIndex},
2765 {{al, r7, r3, plus, r12, PreIndex},
2766 "al r7 r3 plus r12 PreIndex",
2767 "PositivePreIndex_al_r7_r3_plus_r12_PreIndex",
2768 ARRAY_SIZE(kPositivePreIndex),
2769 kPositivePreIndex},
2770 {{al, r4, r7, plus, r12, PreIndex},
2771 "al r4 r7 plus r12 PreIndex",
2772 "PositivePreIndex_al_r4_r7_plus_r12_PreIndex",
2773 ARRAY_SIZE(kPositivePreIndex),
2774 kPositivePreIndex},
2775 {{al, r6, r14, plus, r0, PreIndex},
2776 "al r6 r14 plus r0 PreIndex",
2777 "PositivePreIndex_al_r6_r14_plus_r0_PreIndex",
2778 ARRAY_SIZE(kPositivePreIndex),
2779 kPositivePreIndex},
2780 {{al, r11, r5, plus, r7, PreIndex},
2781 "al r11 r5 plus r7 PreIndex",
2782 "PositivePreIndex_al_r11_r5_plus_r7_PreIndex",
2783 ARRAY_SIZE(kPositivePreIndex),
2784 kPositivePreIndex},
2785 {{al, r12, r14, plus, r2, PreIndex},
2786 "al r12 r14 plus r2 PreIndex",
2787 "PositivePreIndex_al_r12_r14_plus_r2_PreIndex",
2788 ARRAY_SIZE(kPositivePreIndex),
2789 kPositivePreIndex},
2790 {{al, r10, r14, plus, r2, PreIndex},
2791 "al r10 r14 plus r2 PreIndex",
2792 "PositivePreIndex_al_r10_r14_plus_r2_PreIndex",
2793 ARRAY_SIZE(kPositivePreIndex),
2794 kPositivePreIndex},
2795 {{al, r5, r2, plus, r3, PreIndex},
2796 "al r5 r2 plus r3 PreIndex",
2797 "PositivePreIndex_al_r5_r2_plus_r3_PreIndex",
2798 ARRAY_SIZE(kPositivePreIndex),
2799 kPositivePreIndex},
2800 {{al, r8, r6, plus, r7, PreIndex},
2801 "al r8 r6 plus r7 PreIndex",
2802 "PositivePreIndex_al_r8_r6_plus_r7_PreIndex",
2803 ARRAY_SIZE(kPositivePreIndex),
2804 kPositivePreIndex},
2805 {{al, r1, r2, plus, r4, PreIndex},
2806 "al r1 r2 plus r4 PreIndex",
2807 "PositivePreIndex_al_r1_r2_plus_r4_PreIndex",
2808 ARRAY_SIZE(kPositivePreIndex),
2809 kPositivePreIndex},
2810 {{al, r2, r6, plus, r5, PreIndex},
2811 "al r2 r6 plus r5 PreIndex",
2812 "PositivePreIndex_al_r2_r6_plus_r5_PreIndex",
2813 ARRAY_SIZE(kPositivePreIndex),
2814 kPositivePreIndex},
2815 {{al, r11, r7, plus, r2, PreIndex},
2816 "al r11 r7 plus r2 PreIndex",
2817 "PositivePreIndex_al_r11_r7_plus_r2_PreIndex",
2818 ARRAY_SIZE(kPositivePreIndex),
2819 kPositivePreIndex},
2820 {{al, r4, r10, plus, r3, PreIndex},
2821 "al r4 r10 plus r3 PreIndex",
2822 "PositivePreIndex_al_r4_r10_plus_r3_PreIndex",
2823 ARRAY_SIZE(kPositivePreIndex),
2824 kPositivePreIndex},
2825 {{al, r1, r8, plus, r4, PreIndex},
2826 "al r1 r8 plus r4 PreIndex",
2827 "PositivePreIndex_al_r1_r8_plus_r4_PreIndex",
2828 ARRAY_SIZE(kPositivePreIndex),
2829 kPositivePreIndex},
2830 {{al, r14, r2, plus, r6, PreIndex},
2831 "al r14 r2 plus r6 PreIndex",
2832 "PositivePreIndex_al_r14_r2_plus_r6_PreIndex",
2833 ARRAY_SIZE(kPositivePreIndex),
2834 kPositivePreIndex},
2835 {{al, r8, r14, minus, r4, PreIndex},
2836 "al r8 r14 minus r4 PreIndex",
2837 "NegativePreIndex_al_r8_r14_minus_r4_PreIndex",
2838 ARRAY_SIZE(kNegativePreIndex),
2839 kNegativePreIndex},
2840 {{al, r11, r12, minus, r8, PreIndex},
2841 "al r11 r12 minus r8 PreIndex",
2842 "NegativePreIndex_al_r11_r12_minus_r8_PreIndex",
2843 ARRAY_SIZE(kNegativePreIndex),
2844 kNegativePreIndex},
2845 {{al, r14, r3, minus, r6, PreIndex},
2846 "al r14 r3 minus r6 PreIndex",
2847 "NegativePreIndex_al_r14_r3_minus_r6_PreIndex",
2848 ARRAY_SIZE(kNegativePreIndex),
2849 kNegativePreIndex},
2850 {{al, r9, r14, minus, r12, PreIndex},
2851 "al r9 r14 minus r12 PreIndex",
2852 "NegativePreIndex_al_r9_r14_minus_r12_PreIndex",
2853 ARRAY_SIZE(kNegativePreIndex),
2854 kNegativePreIndex},
2855 {{al, r12, r10, minus, r9, PreIndex},
2856 "al r12 r10 minus r9 PreIndex",
2857 "NegativePreIndex_al_r12_r10_minus_r9_PreIndex",
2858 ARRAY_SIZE(kNegativePreIndex),
2859 kNegativePreIndex},
2860 {{al, r11, r3, minus, r8, PreIndex},
2861 "al r11 r3 minus r8 PreIndex",
2862 "NegativePreIndex_al_r11_r3_minus_r8_PreIndex",
2863 ARRAY_SIZE(kNegativePreIndex),
2864 kNegativePreIndex},
2865 {{al, r4, r7, minus, r2, PreIndex},
2866 "al r4 r7 minus r2 PreIndex",
2867 "NegativePreIndex_al_r4_r7_minus_r2_PreIndex",
2868 ARRAY_SIZE(kNegativePreIndex),
2869 kNegativePreIndex},
2870 {{al, r0, r5, minus, r1, PreIndex},
2871 "al r0 r5 minus r1 PreIndex",
2872 "NegativePreIndex_al_r0_r5_minus_r1_PreIndex",
2873 ARRAY_SIZE(kNegativePreIndex),
2874 kNegativePreIndex},
2875 {{al, r8, r14, minus, r9, PreIndex},
2876 "al r8 r14 minus r9 PreIndex",
2877 "NegativePreIndex_al_r8_r14_minus_r9_PreIndex",
2878 ARRAY_SIZE(kNegativePreIndex),
2879 kNegativePreIndex},
2880 {{al, r4, r5, minus, r6, PreIndex},
2881 "al r4 r5 minus r6 PreIndex",
2882 "NegativePreIndex_al_r4_r5_minus_r6_PreIndex",
2883 ARRAY_SIZE(kNegativePreIndex),
2884 kNegativePreIndex},
2885 {{al, r8, r5, minus, r12, PreIndex},
2886 "al r8 r5 minus r12 PreIndex",
2887 "NegativePreIndex_al_r8_r5_minus_r12_PreIndex",
2888 ARRAY_SIZE(kNegativePreIndex),
2889 kNegativePreIndex},
2890 {{al, r1, r5, minus, r12, PreIndex},
2891 "al r1 r5 minus r12 PreIndex",
2892 "NegativePreIndex_al_r1_r5_minus_r12_PreIndex",
2893 ARRAY_SIZE(kNegativePreIndex),
2894 kNegativePreIndex},
2895 {{al, r6, r0, minus, r10, PreIndex},
2896 "al r6 r0 minus r10 PreIndex",
2897 "NegativePreIndex_al_r6_r0_minus_r10_PreIndex",
2898 ARRAY_SIZE(kNegativePreIndex),
2899 kNegativePreIndex},
2900 {{al, r12, r2, minus, r10, PreIndex},
2901 "al r12 r2 minus r10 PreIndex",
2902 "NegativePreIndex_al_r12_r2_minus_r10_PreIndex",
2903 ARRAY_SIZE(kNegativePreIndex),
2904 kNegativePreIndex},
2905 {{al, r6, r8, minus, r2, PreIndex},
2906 "al r6 r8 minus r2 PreIndex",
2907 "NegativePreIndex_al_r6_r8_minus_r2_PreIndex",
2908 ARRAY_SIZE(kNegativePreIndex),
2909 kNegativePreIndex},
2910 {{al, r7, r3, minus, r9, PreIndex},
2911 "al r7 r3 minus r9 PreIndex",
2912 "NegativePreIndex_al_r7_r3_minus_r9_PreIndex",
2913 ARRAY_SIZE(kNegativePreIndex),
2914 kNegativePreIndex},
2915 {{al, r11, r9, minus, r10, PreIndex},
2916 "al r11 r9 minus r10 PreIndex",
2917 "NegativePreIndex_al_r11_r9_minus_r10_PreIndex",
2918 ARRAY_SIZE(kNegativePreIndex),
2919 kNegativePreIndex},
2920 {{al, r10, r9, minus, r2, PreIndex},
2921 "al r10 r9 minus r2 PreIndex",
2922 "NegativePreIndex_al_r10_r9_minus_r2_PreIndex",
2923 ARRAY_SIZE(kNegativePreIndex),
2924 kNegativePreIndex},
2925 {{al, r10, r1, minus, r3, PreIndex},
2926 "al r10 r1 minus r3 PreIndex",
2927 "NegativePreIndex_al_r10_r1_minus_r3_PreIndex",
2928 ARRAY_SIZE(kNegativePreIndex),
2929 kNegativePreIndex},
2930 {{al, r3, r1, minus, r7, PreIndex},
2931 "al r3 r1 minus r7 PreIndex",
2932 "NegativePreIndex_al_r3_r1_minus_r7_PreIndex",
2933 ARRAY_SIZE(kNegativePreIndex),
2934 kNegativePreIndex},
2935 {{al, r11, r14, minus, r9, PreIndex},
2936 "al r11 r14 minus r9 PreIndex",
2937 "NegativePreIndex_al_r11_r14_minus_r9_PreIndex",
2938 ARRAY_SIZE(kNegativePreIndex),
2939 kNegativePreIndex},
2940 {{al, r14, r0, minus, r6, PreIndex},
2941 "al r14 r0 minus r6 PreIndex",
2942 "NegativePreIndex_al_r14_r0_minus_r6_PreIndex",
2943 ARRAY_SIZE(kNegativePreIndex),
2944 kNegativePreIndex},
2945 {{al, r6, r3, minus, r2, PreIndex},
2946 "al r6 r3 minus r2 PreIndex",
2947 "NegativePreIndex_al_r6_r3_minus_r2_PreIndex",
2948 ARRAY_SIZE(kNegativePreIndex),
2949 kNegativePreIndex},
2950 {{al, r9, r11, minus, r5, PreIndex},
2951 "al r9 r11 minus r5 PreIndex",
2952 "NegativePreIndex_al_r9_r11_minus_r5_PreIndex",
2953 ARRAY_SIZE(kNegativePreIndex),
2954 kNegativePreIndex},
2955 {{al, r11, r2, minus, r8, PreIndex},
2956 "al r11 r2 minus r8 PreIndex",
2957 "NegativePreIndex_al_r11_r2_minus_r8_PreIndex",
2958 ARRAY_SIZE(kNegativePreIndex),
2959 kNegativePreIndex},
2960 {{al, r8, r1, minus, r6, PreIndex},
2961 "al r8 r1 minus r6 PreIndex",
2962 "NegativePreIndex_al_r8_r1_minus_r6_PreIndex",
2963 ARRAY_SIZE(kNegativePreIndex),
2964 kNegativePreIndex},
2965 {{al, r10, r11, minus, r5, PreIndex},
2966 "al r10 r11 minus r5 PreIndex",
2967 "NegativePreIndex_al_r10_r11_minus_r5_PreIndex",
2968 ARRAY_SIZE(kNegativePreIndex),
2969 kNegativePreIndex},
2970 {{al, r12, r4, minus, r7, PreIndex},
2971 "al r12 r4 minus r7 PreIndex",
2972 "NegativePreIndex_al_r12_r4_minus_r7_PreIndex",
2973 ARRAY_SIZE(kNegativePreIndex),
2974 kNegativePreIndex},
2975 {{al, r14, r4, minus, r8, PreIndex},
2976 "al r14 r4 minus r8 PreIndex",
2977 "NegativePreIndex_al_r14_r4_minus_r8_PreIndex",
2978 ARRAY_SIZE(kNegativePreIndex),
2979 kNegativePreIndex},
2980 {{al, r3, r6, minus, r9, PreIndex},
2981 "al r3 r6 minus r9 PreIndex",
2982 "NegativePreIndex_al_r3_r6_minus_r9_PreIndex",
2983 ARRAY_SIZE(kNegativePreIndex),
2984 kNegativePreIndex},
2985 {{al, r2, r1, minus, r0, PreIndex},
2986 "al r2 r1 minus r0 PreIndex",
2987 "NegativePreIndex_al_r2_r1_minus_r0_PreIndex",
2988 ARRAY_SIZE(kNegativePreIndex),
2989 kNegativePreIndex},
2990 {{al, r3, r12, minus, r9, PreIndex},
2991 "al r3 r12 minus r9 PreIndex",
2992 "NegativePreIndex_al_r3_r12_minus_r9_PreIndex",
2993 ARRAY_SIZE(kNegativePreIndex),
2994 kNegativePreIndex},
2995 {{al, r10, r5, minus, r6, PreIndex},
2996 "al r10 r5 minus r6 PreIndex",
2997 "NegativePreIndex_al_r10_r5_minus_r6_PreIndex",
2998 ARRAY_SIZE(kNegativePreIndex),
2999 kNegativePreIndex},
3000 {{al, r11, r2, minus, r6, PreIndex},
3001 "al r11 r2 minus r6 PreIndex",
3002 "NegativePreIndex_al_r11_r2_minus_r6_PreIndex",
3003 ARRAY_SIZE(kNegativePreIndex),
3004 kNegativePreIndex},
3005 {{al, r1, r4, minus, r10, PreIndex},
3006 "al r1 r4 minus r10 PreIndex",
3007 "NegativePreIndex_al_r1_r4_minus_r10_PreIndex",
3008 ARRAY_SIZE(kNegativePreIndex),
3009 kNegativePreIndex},
3010 {{al, r11, r2, minus, r10, PreIndex},
3011 "al r11 r2 minus r10 PreIndex",
3012 "NegativePreIndex_al_r11_r2_minus_r10_PreIndex",
3013 ARRAY_SIZE(kNegativePreIndex),
3014 kNegativePreIndex},
3015 {{al, r14, r12, minus, r5, PreIndex},
3016 "al r14 r12 minus r5 PreIndex",
3017 "NegativePreIndex_al_r14_r12_minus_r5_PreIndex",
3018 ARRAY_SIZE(kNegativePreIndex),
3019 kNegativePreIndex},
3020 {{al, r2, r12, minus, r5, PreIndex},
3021 "al r2 r12 minus r5 PreIndex",
3022 "NegativePreIndex_al_r2_r12_minus_r5_PreIndex",
3023 ARRAY_SIZE(kNegativePreIndex),
3024 kNegativePreIndex},
3025 {{al, r7, r3, minus, r0, PreIndex},
3026 "al r7 r3 minus r0 PreIndex",
3027 "NegativePreIndex_al_r7_r3_minus_r0_PreIndex",
3028 ARRAY_SIZE(kNegativePreIndex),
3029 kNegativePreIndex},
3030 {{al, r0, r9, minus, r11, PreIndex},
3031 "al r0 r9 minus r11 PreIndex",
3032 "NegativePreIndex_al_r0_r9_minus_r11_PreIndex",
3033 ARRAY_SIZE(kNegativePreIndex),
3034 kNegativePreIndex},
3035 {{al, r0, r6, minus, r9, PreIndex},
3036 "al r0 r6 minus r9 PreIndex",
3037 "NegativePreIndex_al_r0_r6_minus_r9_PreIndex",
3038 ARRAY_SIZE(kNegativePreIndex),
3039 kNegativePreIndex},
3040 {{al, r4, r6, minus, r0, PreIndex},
3041 "al r4 r6 minus r0 PreIndex",
3042 "NegativePreIndex_al_r4_r6_minus_r0_PreIndex",
3043 ARRAY_SIZE(kNegativePreIndex),
3044 kNegativePreIndex},
3045 {{al, r12, r11, minus, r14, PreIndex},
3046 "al r12 r11 minus r14 PreIndex",
3047 "NegativePreIndex_al_r12_r11_minus_r14_PreIndex",
3048 ARRAY_SIZE(kNegativePreIndex),
3049 kNegativePreIndex},
3050 {{al, r6, r2, minus, r10, PreIndex},
3051 "al r6 r2 minus r10 PreIndex",
3052 "NegativePreIndex_al_r6_r2_minus_r10_PreIndex",
3053 ARRAY_SIZE(kNegativePreIndex),
3054 kNegativePreIndex},
3055 {{al, r11, r4, minus, r10, PreIndex},
3056 "al r11 r4 minus r10 PreIndex",
3057 "NegativePreIndex_al_r11_r4_minus_r10_PreIndex",
3058 ARRAY_SIZE(kNegativePreIndex),
3059 kNegativePreIndex},
3060 {{al, r5, r3, minus, r12, PreIndex},
3061 "al r5 r3 minus r12 PreIndex",
3062 "NegativePreIndex_al_r5_r3_minus_r12_PreIndex",
3063 ARRAY_SIZE(kNegativePreIndex),
3064 kNegativePreIndex},
3065 {{al, r0, r9, minus, r3, PreIndex},
3066 "al r0 r9 minus r3 PreIndex",
3067 "NegativePreIndex_al_r0_r9_minus_r3_PreIndex",
3068 ARRAY_SIZE(kNegativePreIndex),
3069 kNegativePreIndex},
3070 {{al, r4, r7, minus, r12, PreIndex},
3071 "al r4 r7 minus r12 PreIndex",
3072 "NegativePreIndex_al_r4_r7_minus_r12_PreIndex",
3073 ARRAY_SIZE(kNegativePreIndex),
3074 kNegativePreIndex},
3075 {{al, r8, r3, minus, r14, PreIndex},
3076 "al r8 r3 minus r14 PreIndex",
3077 "NegativePreIndex_al_r8_r3_minus_r14_PreIndex",
3078 ARRAY_SIZE(kNegativePreIndex),
3079 kNegativePreIndex},
3080 {{al, r8, r12, minus, r10, PreIndex},
3081 "al r8 r12 minus r10 PreIndex",
3082 "NegativePreIndex_al_r8_r12_minus_r10_PreIndex",
3083 ARRAY_SIZE(kNegativePreIndex),
3084 kNegativePreIndex},
3085 {{al, r6, r5, minus, r9, PreIndex},
3086 "al r6 r5 minus r9 PreIndex",
3087 "NegativePreIndex_al_r6_r5_minus_r9_PreIndex",
3088 ARRAY_SIZE(kNegativePreIndex),
3089 kNegativePreIndex},
3090 {{al, r3, r6, minus, r14, PreIndex},
3091 "al r3 r6 minus r14 PreIndex",
3092 "NegativePreIndex_al_r3_r6_minus_r14_PreIndex",
3093 ARRAY_SIZE(kNegativePreIndex),
3094 kNegativePreIndex},
3095 {{al, r0, r8, minus, r4, PreIndex},
3096 "al r0 r8 minus r4 PreIndex",
3097 "NegativePreIndex_al_r0_r8_minus_r4_PreIndex",
3098 ARRAY_SIZE(kNegativePreIndex),
3099 kNegativePreIndex},
3100 {{al, r2, r6, minus, r12, PreIndex},
3101 "al r2 r6 minus r12 PreIndex",
3102 "NegativePreIndex_al_r2_r6_minus_r12_PreIndex",
3103 ARRAY_SIZE(kNegativePreIndex),
3104 kNegativePreIndex},
3105 {{al, r8, r12, minus, r11, PreIndex},
3106 "al r8 r12 minus r11 PreIndex",
3107 "NegativePreIndex_al_r8_r12_minus_r11_PreIndex",
3108 ARRAY_SIZE(kNegativePreIndex),
3109 kNegativePreIndex},
3110 {{al, r5, r10, minus, r11, PreIndex},
3111 "al r5 r10 minus r11 PreIndex",
3112 "NegativePreIndex_al_r5_r10_minus_r11_PreIndex",
3113 ARRAY_SIZE(kNegativePreIndex),
3114 kNegativePreIndex},
3115 {{al, r12, r5, minus, r10, PreIndex},
3116 "al r12 r5 minus r10 PreIndex",
3117 "NegativePreIndex_al_r12_r5_minus_r10_PreIndex",
3118 ARRAY_SIZE(kNegativePreIndex),
3119 kNegativePreIndex},
3120 {{al, r10, r2, minus, r1, PreIndex},
3121 "al r10 r2 minus r1 PreIndex",
3122 "NegativePreIndex_al_r10_r2_minus_r1_PreIndex",
3123 ARRAY_SIZE(kNegativePreIndex),
3124 kNegativePreIndex},
3125 {{al, r10, r6, minus, r7, PreIndex},
3126 "al r10 r6 minus r7 PreIndex",
3127 "NegativePreIndex_al_r10_r6_minus_r7_PreIndex",
3128 ARRAY_SIZE(kNegativePreIndex),
3129 kNegativePreIndex},
3130 {{al, r14, r10, minus, r11, PreIndex},
3131 "al r14 r10 minus r11 PreIndex",
3132 "NegativePreIndex_al_r14_r10_minus_r11_PreIndex",
3133 ARRAY_SIZE(kNegativePreIndex),
3134 kNegativePreIndex},
3135 {{al, r11, r14, minus, r10, PreIndex},
3136 "al r11 r14 minus r10 PreIndex",
3137 "NegativePreIndex_al_r11_r14_minus_r10_PreIndex",
3138 ARRAY_SIZE(kNegativePreIndex),
3139 kNegativePreIndex},
3140 {{al, r9, r7, minus, r11, PreIndex},
3141 "al r9 r7 minus r11 PreIndex",
3142 "NegativePreIndex_al_r9_r7_minus_r11_PreIndex",
3143 ARRAY_SIZE(kNegativePreIndex),
3144 kNegativePreIndex},
3145 {{al, r2, r10, minus, r6, PreIndex},
3146 "al r2 r10 minus r6 PreIndex",
3147 "NegativePreIndex_al_r2_r10_minus_r6_PreIndex",
3148 ARRAY_SIZE(kNegativePreIndex),
3149 kNegativePreIndex},
3150 {{al, r6, r5, minus, r0, PreIndex},
3151 "al r6 r5 minus r0 PreIndex",
3152 "NegativePreIndex_al_r6_r5_minus_r0_PreIndex",
3153 ARRAY_SIZE(kNegativePreIndex),
3154 kNegativePreIndex},
3155 {{al, r0, r6, minus, r2, PreIndex},
3156 "al r0 r6 minus r2 PreIndex",
3157 "NegativePreIndex_al_r0_r6_minus_r2_PreIndex",
3158 ARRAY_SIZE(kNegativePreIndex),
3159 kNegativePreIndex},
3160 {{al, r14, r6, minus, r8, PreIndex},
3161 "al r14 r6 minus r8 PreIndex",
3162 "NegativePreIndex_al_r14_r6_minus_r8_PreIndex",
3163 ARRAY_SIZE(kNegativePreIndex),
3164 kNegativePreIndex},
3165 {{al, r14, r9, minus, r2, PreIndex},
3166 "al r14 r9 minus r2 PreIndex",
3167 "NegativePreIndex_al_r14_r9_minus_r2_PreIndex",
3168 ARRAY_SIZE(kNegativePreIndex),
3169 kNegativePreIndex},
3170 {{al, r6, r5, minus, r3, PreIndex},
3171 "al r6 r5 minus r3 PreIndex",
3172 "NegativePreIndex_al_r6_r5_minus_r3_PreIndex",
3173 ARRAY_SIZE(kNegativePreIndex),
3174 kNegativePreIndex},
3175 {{al, r0, r12, minus, r7, PreIndex},
3176 "al r0 r12 minus r7 PreIndex",
3177 "NegativePreIndex_al_r0_r12_minus_r7_PreIndex",
3178 ARRAY_SIZE(kNegativePreIndex),
3179 kNegativePreIndex},
3180 {{al, r11, r3, minus, r4, PreIndex},
3181 "al r11 r3 minus r4 PreIndex",
3182 "NegativePreIndex_al_r11_r3_minus_r4_PreIndex",
3183 ARRAY_SIZE(kNegativePreIndex),
3184 kNegativePreIndex},
3185 {{al, r10, r4, minus, r5, PreIndex},
3186 "al r10 r4 minus r5 PreIndex",
3187 "NegativePreIndex_al_r10_r4_minus_r5_PreIndex",
3188 ARRAY_SIZE(kNegativePreIndex),
3189 kNegativePreIndex},
3190 {{al, r1, r8, minus, r0, PreIndex},
3191 "al r1 r8 minus r0 PreIndex",
3192 "NegativePreIndex_al_r1_r8_minus_r0_PreIndex",
3193 ARRAY_SIZE(kNegativePreIndex),
3194 kNegativePreIndex},
3195 {{al, r10, r14, minus, r9, PreIndex},
3196 "al r10 r14 minus r9 PreIndex",
3197 "NegativePreIndex_al_r10_r14_minus_r9_PreIndex",
3198 ARRAY_SIZE(kNegativePreIndex),
3199 kNegativePreIndex},
3200 {{al, r12, r3, minus, r9, PreIndex},
3201 "al r12 r3 minus r9 PreIndex",
3202 "NegativePreIndex_al_r12_r3_minus_r9_PreIndex",
3203 ARRAY_SIZE(kNegativePreIndex),
3204 kNegativePreIndex},
3205 {{al, r7, r9, minus, r10, PreIndex},
3206 "al r7 r9 minus r10 PreIndex",
3207 "NegativePreIndex_al_r7_r9_minus_r10_PreIndex",
3208 ARRAY_SIZE(kNegativePreIndex),
3209 kNegativePreIndex},
3210 {{al, r8, r6, minus, r1, PreIndex},
3211 "al r8 r6 minus r1 PreIndex",
3212 "NegativePreIndex_al_r8_r6_minus_r1_PreIndex",
3213 ARRAY_SIZE(kNegativePreIndex),
3214 kNegativePreIndex},
3215 {{al, r12, r10, minus, r8, PreIndex},
3216 "al r12 r10 minus r8 PreIndex",
3217 "NegativePreIndex_al_r12_r10_minus_r8_PreIndex",
3218 ARRAY_SIZE(kNegativePreIndex),
3219 kNegativePreIndex},
3220 {{al, r0, r4, minus, r12, PreIndex},
3221 "al r0 r4 minus r12 PreIndex",
3222 "NegativePreIndex_al_r0_r4_minus_r12_PreIndex",
3223 ARRAY_SIZE(kNegativePreIndex),
3224 kNegativePreIndex},
3225 {{al, r2, r10, minus, r3, PreIndex},
3226 "al r2 r10 minus r3 PreIndex",
3227 "NegativePreIndex_al_r2_r10_minus_r3_PreIndex",
3228 ARRAY_SIZE(kNegativePreIndex),
3229 kNegativePreIndex},
3230 {{al, r5, r11, minus, r14, PreIndex},
3231 "al r5 r11 minus r14 PreIndex",
3232 "NegativePreIndex_al_r5_r11_minus_r14_PreIndex",
3233 ARRAY_SIZE(kNegativePreIndex),
3234 kNegativePreIndex},
3235 {{al, r7, r5, minus, r11, PreIndex},
3236 "al r7 r5 minus r11 PreIndex",
3237 "NegativePreIndex_al_r7_r5_minus_r11_PreIndex",
3238 ARRAY_SIZE(kNegativePreIndex),
3239 kNegativePreIndex},
3240 {{al, r1, r3, minus, r5, PreIndex},
3241 "al r1 r3 minus r5 PreIndex",
3242 "NegativePreIndex_al_r1_r3_minus_r5_PreIndex",
3243 ARRAY_SIZE(kNegativePreIndex),
3244 kNegativePreIndex},
3245 {{al, r6, r11, minus, r1, PreIndex},
3246 "al r6 r11 minus r1 PreIndex",
3247 "NegativePreIndex_al_r6_r11_minus_r1_PreIndex",
3248 ARRAY_SIZE(kNegativePreIndex),
3249 kNegativePreIndex},
3250 {{al, r5, r10, minus, r9, PreIndex},
3251 "al r5 r10 minus r9 PreIndex",
3252 "NegativePreIndex_al_r5_r10_minus_r9_PreIndex",
3253 ARRAY_SIZE(kNegativePreIndex),
3254 kNegativePreIndex},
3255 {{al, r5, r12, minus, r2, PreIndex},
3256 "al r5 r12 minus r2 PreIndex",
3257 "NegativePreIndex_al_r5_r12_minus_r2_PreIndex",
3258 ARRAY_SIZE(kNegativePreIndex),
3259 kNegativePreIndex},
3260 {{al, r4, r2, minus, r12, PreIndex},
3261 "al r4 r2 minus r12 PreIndex",
3262 "NegativePreIndex_al_r4_r2_minus_r12_PreIndex",
3263 ARRAY_SIZE(kNegativePreIndex),
3264 kNegativePreIndex},
3265 {{al, r11, r2, minus, r12, PreIndex},
3266 "al r11 r2 minus r12 PreIndex",
3267 "NegativePreIndex_al_r11_r2_minus_r12_PreIndex",
3268 ARRAY_SIZE(kNegativePreIndex),
3269 kNegativePreIndex},
3270 {{al, r14, r11, minus, r5, PreIndex},
3271 "al r14 r11 minus r5 PreIndex",
3272 "NegativePreIndex_al_r14_r11_minus_r5_PreIndex",
3273 ARRAY_SIZE(kNegativePreIndex),
3274 kNegativePreIndex},
3275 {{al, r11, r14, minus, r3, PreIndex},
3276 "al r11 r14 minus r3 PreIndex",
3277 "NegativePreIndex_al_r11_r14_minus_r3_PreIndex",
3278 ARRAY_SIZE(kNegativePreIndex),
3279 kNegativePreIndex},
3280 {{al, r11, r5, minus, r9, PreIndex},
3281 "al r11 r5 minus r9 PreIndex",
3282 "NegativePreIndex_al_r11_r5_minus_r9_PreIndex",
3283 ARRAY_SIZE(kNegativePreIndex),
3284 kNegativePreIndex},
3285 {{al, r2, r1, minus, r14, PreIndex},
3286 "al r2 r1 minus r14 PreIndex",
3287 "NegativePreIndex_al_r2_r1_minus_r14_PreIndex",
3288 ARRAY_SIZE(kNegativePreIndex),
3289 kNegativePreIndex},
3290 {{al, r8, r7, minus, r12, PreIndex},
3291 "al r8 r7 minus r12 PreIndex",
3292 "NegativePreIndex_al_r8_r7_minus_r12_PreIndex",
3293 ARRAY_SIZE(kNegativePreIndex),
3294 kNegativePreIndex},
3295 {{al, r5, r1, minus, r10, PreIndex},
3296 "al r5 r1 minus r10 PreIndex",
3297 "NegativePreIndex_al_r5_r1_minus_r10_PreIndex",
3298 ARRAY_SIZE(kNegativePreIndex),
3299 kNegativePreIndex},
3300 {{al, r1, r10, minus, r2, PreIndex},
3301 "al r1 r10 minus r2 PreIndex",
3302 "NegativePreIndex_al_r1_r10_minus_r2_PreIndex",
3303 ARRAY_SIZE(kNegativePreIndex),
3304 kNegativePreIndex},
3305 {{al, r7, r3, minus, r2, PreIndex},
3306 "al r7 r3 minus r2 PreIndex",
3307 "NegativePreIndex_al_r7_r3_minus_r2_PreIndex",
3308 ARRAY_SIZE(kNegativePreIndex),
3309 kNegativePreIndex},
3310 {{al, r9, r4, minus, r12, PreIndex},
3311 "al r9 r4 minus r12 PreIndex",
3312 "NegativePreIndex_al_r9_r4_minus_r12_PreIndex",
3313 ARRAY_SIZE(kNegativePreIndex),
3314 kNegativePreIndex},
3315 {{al, r8, r10, minus, r1, PreIndex},
3316 "al r8 r10 minus r1 PreIndex",
3317 "NegativePreIndex_al_r8_r10_minus_r1_PreIndex",
3318 ARRAY_SIZE(kNegativePreIndex),
3319 kNegativePreIndex},
3320 {{al, r5, r0, minus, r4, PreIndex},
3321 "al r5 r0 minus r4 PreIndex",
3322 "NegativePreIndex_al_r5_r0_minus_r4_PreIndex",
3323 ARRAY_SIZE(kNegativePreIndex),
3324 kNegativePreIndex},
3325 {{al, r3, r2, minus, r11, PreIndex},
3326 "al r3 r2 minus r11 PreIndex",
3327 "NegativePreIndex_al_r3_r2_minus_r11_PreIndex",
3328 ARRAY_SIZE(kNegativePreIndex),
3329 kNegativePreIndex},
3330 {{al, r6, r14, minus, r2, PreIndex},
3331 "al r6 r14 minus r2 PreIndex",
3332 "NegativePreIndex_al_r6_r14_minus_r2_PreIndex",
3333 ARRAY_SIZE(kNegativePreIndex),
3334 kNegativePreIndex}};
3335
3336 // We record all inputs to the instructions as outputs. This way, we also check
3337 // that what shouldn't change didn't change.
3338 struct TestResult {
3339 size_t output_size;
3340 const Inputs* outputs;
3341 };
3342
3343 // These headers each contain an array of `TestResult` with the reference output
3344 // values. The reference arrays are names `kReference{mnemonic}`.
3345 #include "aarch32/traces/simulator-cond-rd-memop-rs-ldr-a32.h"
3346 #include "aarch32/traces/simulator-cond-rd-memop-rs-ldrb-a32.h"
3347 #include "aarch32/traces/simulator-cond-rd-memop-rs-ldrh-a32.h"
3348 #include "aarch32/traces/simulator-cond-rd-memop-rs-ldrsb-a32.h"
3349 #include "aarch32/traces/simulator-cond-rd-memop-rs-ldrsh-a32.h"
3350 #include "aarch32/traces/simulator-cond-rd-memop-rs-str-a32.h"
3351 #include "aarch32/traces/simulator-cond-rd-memop-rs-strb-a32.h"
3352 #include "aarch32/traces/simulator-cond-rd-memop-rs-strh-a32.h"
3353
3354
3355 // The maximum number of errors to report in detail for each test.
3356 const unsigned kErrorReportLimit = 8;
3357
3358 typedef void (MacroAssembler::*Fn)(Condition cond,
3359 Register rd,
3360 const MemOperand& memop);
3361
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])3362 void TestHelper(Fn instruction,
3363 const char* mnemonic,
3364 const TestResult reference[]) {
3365 SETUP();
3366 masm.UseA32();
3367 START();
3368
3369 // Data to compare to `reference`.
3370 TestResult* results[ARRAY_SIZE(kTests)];
3371
3372 // Test cases for memory bound instructions may allocate a buffer and save its
3373 // address in this array.
3374 byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
3375
3376 // Generate a loop for each element in `kTests`. Each loop tests one specific
3377 // instruction.
3378 for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
3379 // Allocate results on the heap for this test.
3380 results[i] = new TestResult;
3381 results[i]->outputs = new Inputs[kTests[i].input_size];
3382 results[i]->output_size = kTests[i].input_size;
3383
3384 size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
3385 VIXL_ASSERT(IsUint32(input_stride));
3386
3387 scratch_memory_buffers[i] = NULL;
3388
3389 Label loop;
3390 UseScratchRegisterScope scratch_registers(&masm);
3391 // Include all registers from r0 ro r12.
3392 scratch_registers.Include(RegisterList(0x1fff));
3393
3394 // Values to pass to the macro-assembler.
3395 Condition cond = kTests[i].operands.cond;
3396 Register rd = kTests[i].operands.rd;
3397 Register rn = kTests[i].operands.rn;
3398 Sign sign = kTests[i].operands.sign;
3399 Register rm = kTests[i].operands.rm;
3400 AddrMode addr_mode = kTests[i].operands.addr_mode;
3401 MemOperand memop(rn, sign, rm, addr_mode);
3402 scratch_registers.Exclude(rd);
3403 scratch_registers.Exclude(rn);
3404 scratch_registers.Exclude(rm);
3405
3406 // Allocate reserved registers for our own use.
3407 Register input_ptr = scratch_registers.Acquire();
3408 Register input_end = scratch_registers.Acquire();
3409 Register result_ptr = scratch_registers.Acquire();
3410
3411 // Initialize `input_ptr` to the first element and `input_end` the address
3412 // after the array.
3413 __ Mov(input_ptr, Operand::From(kTests[i].inputs));
3414 __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
3415 __ Mov(result_ptr, Operand::From(results[i]->outputs));
3416 __ Bind(&loop);
3417
3418 {
3419 UseScratchRegisterScope temp_registers(&masm);
3420 Register nzcv_bits = temp_registers.Acquire();
3421 Register saved_q_bit = temp_registers.Acquire();
3422 // Save the `Q` bit flag.
3423 __ Mrs(saved_q_bit, APSR);
3424 __ And(saved_q_bit, saved_q_bit, QFlag);
3425 // Set the `NZCV` and `Q` flags together.
3426 __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr)));
3427 __ Orr(nzcv_bits, nzcv_bits, saved_q_bit);
3428 __ Msr(APSR_nzcvq, nzcv_bits);
3429 }
3430 __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
3431 __ Ldr(rm, MemOperand(input_ptr, offsetof(Inputs, rm)));
3432 // Allocate 4 bytes for the instruction to work with.
3433 scratch_memory_buffers[i] = new byte[4];
3434 {
3435 UseScratchRegisterScope temp_registers(&masm);
3436
3437 Register memop_tmp = temp_registers.Acquire();
3438 Register base_register = memop.GetBaseRegister();
3439
3440 // Write the expected data into the scratch buffer.
3441 __ Mov(base_register, Operand::From(scratch_memory_buffers[i]));
3442 __ Ldr(memop_tmp, MemOperand(input_ptr, offsetof(Inputs, memop) + 4));
3443 __ Str(memop_tmp, MemOperand(base_register));
3444
3445 // Compute the address to put into the base register so that the
3446 // `MemOperand` points to the right location.
3447 // TODO: Support more kinds of `MemOperand`.
3448 if (!memop.IsPostIndex()) {
3449 if (memop.IsImmediate()) {
3450 if (memop.GetSign().IsPlus()) {
3451 __ Mov(memop_tmp, memop.GetOffsetImmediate());
3452 __ Sub(base_register, base_register, memop_tmp);
3453 } else {
3454 __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3455 __ Add(base_register, base_register, memop_tmp);
3456 }
3457 } else if (memop.IsShiftedRegister()) {
3458 __ Mov(memop_tmp,
3459 Operand(memop.GetOffsetRegister(),
3460 memop.GetShift(),
3461 memop.GetShiftAmount()));
3462 if (memop.GetSign().IsPlus()) {
3463 __ Sub(base_register, base_register, memop_tmp);
3464 } else {
3465 __ Add(base_register, base_register, memop_tmp);
3466 }
3467 }
3468 }
3469 }
3470
3471
3472 (masm.*instruction)(cond, rd, memop);
3473
3474 {
3475 UseScratchRegisterScope temp_registers(&masm);
3476 Register nzcv_bits = temp_registers.Acquire();
3477 __ Mrs(nzcv_bits, APSR);
3478 // Only record the NZCV bits.
3479 __ And(nzcv_bits, nzcv_bits, NZCVFlag);
3480 __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr)));
3481 }
3482 __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
3483 __ Str(rm, MemOperand(result_ptr, offsetof(Inputs, rm)));
3484 {
3485 UseScratchRegisterScope temp_registers(&masm);
3486 Register memop_tmp = temp_registers.Acquire();
3487 Register base_register = memop.GetBaseRegister();
3488
3489 // Compute the address of the scratch buffer by from the base register. If
3490 // the instruction has updated the base register, we will be able to
3491 // record it.
3492 if (!memop.IsPostIndex()) {
3493 if (memop.IsImmediate()) {
3494 if (memop.GetSign().IsPlus()) {
3495 __ Mov(memop_tmp, memop.GetOffsetImmediate());
3496 __ Add(base_register, base_register, memop_tmp);
3497 } else {
3498 __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3499 __ Sub(base_register, base_register, memop_tmp);
3500 }
3501 } else if (memop.IsShiftedRegister()) {
3502 __ Mov(memop_tmp,
3503 Operand(memop.GetOffsetRegister(),
3504 memop.GetShift(),
3505 memop.GetShiftAmount()));
3506 if (memop.GetSign().IsPlus()) {
3507 __ Add(base_register, base_register, memop_tmp);
3508 } else {
3509 __ Sub(base_register, base_register, memop_tmp);
3510 }
3511 }
3512 }
3513
3514 // Record the value of the base register, as an offset from the scratch
3515 // buffer's address.
3516 __ Mov(memop_tmp, Operand::From(scratch_memory_buffers[i]));
3517 __ Sub(base_register, base_register, memop_tmp);
3518 __ Str(base_register, MemOperand(result_ptr, offsetof(Inputs, memop)));
3519
3520 // Record the 32 bit word from memory.
3521 __ Ldr(memop_tmp, MemOperand(memop_tmp));
3522 __ Str(memop_tmp, MemOperand(result_ptr, offsetof(Inputs, memop) + 4));
3523 }
3524
3525
3526 // Advance the result pointer.
3527 __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3528 // Loop back until `input_ptr` is lower than `input_base`.
3529 __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3530 __ Cmp(input_ptr, input_end);
3531 __ B(ne, &loop);
3532 }
3533
3534 END();
3535
3536 RUN();
3537
3538 if (Test::generate_test_trace()) {
3539 // Print the results.
3540 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3541 printf("const Inputs kOutputs_%s_%s[] = {\n",
3542 mnemonic,
3543 kTests[i].identifier);
3544 for (size_t j = 0; j < results[i]->output_size; j++) {
3545 printf(" { ");
3546 printf("0x%08" PRIx32, results[i]->outputs[j].apsr);
3547 printf(", ");
3548 printf("0x%08" PRIx32, results[i]->outputs[j].rd);
3549 printf(", ");
3550 printf("0x%08" PRIx32, results[i]->outputs[j].rm);
3551 printf(", ");
3552 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3553 results[i]->outputs[j].memop[0],
3554 results[i]->outputs[j].memop[1]);
3555 printf(" },\n");
3556 }
3557 printf("};\n");
3558 }
3559 printf("const TestResult kReference%s[] = {\n", mnemonic);
3560 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3561 printf(" {\n");
3562 printf(" ARRAY_SIZE(kOutputs_%s_%s),\n",
3563 mnemonic,
3564 kTests[i].identifier);
3565 printf(" kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
3566 printf(" },\n");
3567 }
3568 printf("};\n");
3569 } else if (kCheckSimulatorTestResults) {
3570 // Check the results.
3571 unsigned total_error_count = 0;
3572 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3573 bool instruction_has_errors = false;
3574 for (size_t j = 0; j < kTests[i].input_size; j++) {
3575 uint32_t apsr = results[i]->outputs[j].apsr;
3576 uint32_t rd = results[i]->outputs[j].rd;
3577 uint32_t rm = results[i]->outputs[j].rm;
3578 uint32_t memop[2] = {results[i]->outputs[j].memop[0],
3579 results[i]->outputs[j].memop[1]};
3580
3581 uint32_t apsr_input = kTests[i].inputs[j].apsr;
3582 uint32_t rd_input = kTests[i].inputs[j].rd;
3583 uint32_t rm_input = kTests[i].inputs[j].rm;
3584 uint32_t memop_input[2] = {kTests[i].inputs[j].memop[0],
3585 kTests[i].inputs[j].memop[1]};
3586
3587 uint32_t apsr_ref = reference[i].outputs[j].apsr;
3588 uint32_t rd_ref = reference[i].outputs[j].rd;
3589 uint32_t rm_ref = reference[i].outputs[j].rm;
3590 uint32_t memop_ref[2] = {results[i]->outputs[j].memop[0],
3591 results[i]->outputs[j].memop[1]};
3592
3593
3594 if (((apsr != apsr_ref) || (rd != rd_ref) || (rm != rm_ref) ||
3595 ((memop[0] != memop_ref[0]) && (memop[1] != memop_ref[1]))) &&
3596 (++total_error_count <= kErrorReportLimit)) {
3597 // Print the instruction once even if it triggered multiple failures.
3598 if (!instruction_has_errors) {
3599 printf("Error(s) when testing \"%s %s\":\n",
3600 mnemonic,
3601 kTests[i].operands_description);
3602 instruction_has_errors = true;
3603 }
3604 // Print subsequent errors.
3605 printf(" Input: ");
3606 printf("0x%08" PRIx32, apsr_input);
3607 printf(", ");
3608 printf("0x%08" PRIx32, rd_input);
3609 printf(", ");
3610 printf("0x%08" PRIx32, rm_input);
3611 printf(", ");
3612 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3613 memop_input[0],
3614 memop_input[1]);
3615 printf("\n");
3616 printf(" Expected: ");
3617 printf("0x%08" PRIx32, apsr_ref);
3618 printf(", ");
3619 printf("0x%08" PRIx32, rd_ref);
3620 printf(", ");
3621 printf("0x%08" PRIx32, rm_ref);
3622 printf(", ");
3623 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3624 memop_ref[0],
3625 memop_ref[1]);
3626 printf("\n");
3627 printf(" Found: ");
3628 printf("0x%08" PRIx32, apsr);
3629 printf(", ");
3630 printf("0x%08" PRIx32, rd);
3631 printf(", ");
3632 printf("0x%08" PRIx32, rm);
3633 printf(", ");
3634 printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}", memop[0], memop[1]);
3635 printf("\n\n");
3636 }
3637 }
3638 }
3639
3640 if (total_error_count > kErrorReportLimit) {
3641 printf("%u other errors follow.\n",
3642 total_error_count - kErrorReportLimit);
3643 }
3644 VIXL_CHECK(total_error_count == 0);
3645 } else {
3646 VIXL_WARNING("Assembled the code, but did not run anything.\n");
3647 }
3648
3649 for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3650 delete[] results[i]->outputs;
3651 delete results[i];
3652 delete[] scratch_memory_buffers[i];
3653 }
3654 }
3655
3656 // Instantiate tests for each instruction in the list.
3657 // TODO: Remove this limitation by having a sandboxing mechanism.
3658 #if defined(VIXL_HOST_POINTER_32)
3659 #define TEST(mnemonic) \
3660 void Test_##mnemonic() { \
3661 TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
3662 } \
3663 Test test_##mnemonic("AARCH32_SIMULATOR_COND_RD_MEMOP_RS_" #mnemonic "_A32", \
3664 &Test_##mnemonic);
3665 #else
3666 #define TEST(mnemonic) \
3667 void Test_##mnemonic() { \
3668 VIXL_WARNING("This test can only run on a 32-bit host.\n"); \
3669 USE(TestHelper); \
3670 } \
3671 Test test_##mnemonic("AARCH32_SIMULATOR_COND_RD_MEMOP_RS_" #mnemonic "_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