• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/macro-assembler-aarch32.h"
44 #include "aarch32/disasm-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 #define TEARDOWN()
64 
65 #else  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32.
66 
67 #define SETUP()                                   \
68   MacroAssembler masm(BUF_SIZE);                  \
69   UseScratchRegisterScope harness_scratch(&masm); \
70   harness_scratch.ExcludeAll();
71 
72 #define START()              \
73   masm.GetBuffer()->Reset(); \
74   __ Push(r4);               \
75   __ Push(r5);               \
76   __ Push(r6);               \
77   __ Push(r7);               \
78   __ Push(r8);               \
79   __ Push(r9);               \
80   __ Push(r10);              \
81   __ Push(r11);              \
82   __ Push(lr);               \
83   harness_scratch.Include(ip);
84 
85 #define END()                  \
86   harness_scratch.Exclude(ip); \
87   __ Pop(lr);                  \
88   __ Pop(r11);                 \
89   __ Pop(r10);                 \
90   __ Pop(r9);                  \
91   __ Pop(r8);                  \
92   __ Pop(r7);                  \
93   __ Pop(r6);                  \
94   __ Pop(r5);                  \
95   __ Pop(r4);                  \
96   __ Bx(lr);                   \
97   __ FinalizeCode();
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 #define TEARDOWN() harness_scratch.Close();
110 
111 #endif  // ifdef VIXL_INCLUDE_SIMULATOR_AARCH32
112 
113 namespace vixl {
114 namespace aarch32 {
115 
116 // List of instruction encodings:
117 #define FOREACH_INSTRUCTION(M) \
118   M(Ldr)                       \
119   M(Ldrb)                      \
120   M(Str)                       \
121   M(Strb)
122 
123 
124 // The following definitions are defined again in each generated test, therefore
125 // we need to place them in an anomymous namespace. It expresses that they are
126 // local to this file only, and the compiler is not allowed to share these types
127 // across test files during template instantiation. Specifically, `Operands` and
128 // `Inputs` have various layouts across generated tests so they absolutely
129 // cannot be shared.
130 
131 #ifdef VIXL_INCLUDE_TARGET_A32
132 namespace {
133 
134 // Values to be passed to the assembler to produce the instruction under test.
135 struct Operands {
136   Condition cond;
137   Register rd;
138   Register rn;
139   Sign sign;
140   int32_t offset;
141   AddrMode addr_mode;
142 };
143 
144 // Input data to feed to the instruction.
145 struct Inputs {
146   uint32_t apsr;
147   uint32_t rd;
148   uint32_t memop[2];
149 };
150 
151 // This structure contains all input data needed to test one specific encoding.
152 // It used to generate a loop over an instruction.
153 struct TestLoopData {
154   // The `operands` fields represents the values to pass to the assembler to
155   // produce the instruction.
156   Operands operands;
157   // Description of the operands, used for error reporting.
158   const char* operands_description;
159   // Unique identifier, used for generating traces.
160   const char* identifier;
161   // Array of values to be fed to the instruction.
162   size_t input_size;
163   const Inputs* inputs;
164 };
165 
166 static const Inputs kCondition[] = {{NFlag, 0xabababab, {0, 0x77777777}},
167                                     {ZFlag, 0xabababab, {0, 0x77777777}},
168                                     {CFlag, 0xabababab, {0, 0x77777777}},
169                                     {VFlag, 0xabababab, {0, 0x77777777}},
170                                     {NZFlag, 0xabababab, {0, 0x77777777}},
171                                     {NCFlag, 0xabababab, {0, 0x77777777}},
172                                     {NVFlag, 0xabababab, {0, 0x77777777}},
173                                     {ZCFlag, 0xabababab, {0, 0x77777777}},
174                                     {ZVFlag, 0xabababab, {0, 0x77777777}},
175                                     {CVFlag, 0xabababab, {0, 0x77777777}},
176                                     {NZCFlag, 0xabababab, {0, 0x77777777}},
177                                     {NZVFlag, 0xabababab, {0, 0x77777777}},
178                                     {NCVFlag, 0xabababab, {0, 0x77777777}},
179                                     {ZCVFlag, 0xabababab, {0, 0x77777777}},
180                                     {NZCVFlag, 0xabababab, {0, 0x77777777}}};
181 
182 static const Inputs kPositiveOffset[] = {{NoFlag, 0x00000000, {0, 0x0badbeef}},
183                                          {NoFlag, 0x00000020, {0, 0x0badbeef}},
184                                          {NoFlag, 0x00000020, {0, 0x55555555}},
185                                          {NoFlag, 0x33333333, {0, 0x0badbeef}},
186                                          {NoFlag, 0x00000002, {0, 0x0cabba9e}},
187                                          {NoFlag, 0x7fffffff, {0, 0x0cabba9e}},
188                                          {NoFlag, 0xcccccccc, {0, 0x77777777}},
189                                          {NoFlag, 0x7ffffffd, {0, 0x55555555}},
190                                          {NoFlag, 0xffffff83, {0, 0x77777777}},
191                                          {NoFlag, 0xaaaaaaaa, {0, 0x77777777}}};
192 
193 static const Inputs kNegativeOffset[] = {{NoFlag, 0xcccccccc, {0, 0x0badbeef}},
194                                          {NoFlag, 0x0000007f, {0, 0x0cabba9e}},
195                                          {NoFlag, 0x00007ffe, {0, 0x55555555}},
196                                          {NoFlag, 0xffffffff, {0, 0x0cabba9e}},
197                                          {NoFlag, 0x00007ffd, {0, 0x77777777}},
198                                          {NoFlag, 0x0000007d, {0, 0x0badbeef}},
199                                          {NoFlag, 0xffff8001, {0, 0x0cabba9e}},
200                                          {NoFlag, 0xaaaaaaaa, {0, 0x55555555}},
201                                          {NoFlag, 0x55555555, {0, 0x0badbeef}},
202                                          {NoFlag, 0xffffff82, {0, 0x77777777}}};
203 
204 static const Inputs kPositivePostIndex[] =
205     {{NoFlag, 0xffff8003, {0, 0x77777777}},
206      {NoFlag, 0xfffffffd, {0, 0x55555555}},
207      {NoFlag, 0xffffff83, {0, 0x0cabba9e}},
208      {NoFlag, 0x7ffffffd, {0, 0x0badbeef}},
209      {NoFlag, 0xcccccccc, {0, 0x55555555}},
210      {NoFlag, 0x00007ffd, {0, 0x55555555}},
211      {NoFlag, 0x00007fff, {0, 0x0badbeef}},
212      {NoFlag, 0x00000020, {0, 0x77777777}},
213      {NoFlag, 0x80000000, {0, 0x0cabba9e}},
214      {NoFlag, 0x80000001, {0, 0x0badbeef}}};
215 
216 static const Inputs kNegativePostIndex[] =
217     {{NoFlag, 0x80000001, {0, 0x77777777}},
218      {NoFlag, 0x7ffffffe, {0, 0x0badbeef}},
219      {NoFlag, 0x0000007d, {0, 0x0badbeef}},
220      {NoFlag, 0x0000007d, {0, 0x77777777}},
221      {NoFlag, 0xcccccccc, {0, 0x77777777}},
222      {NoFlag, 0xffff8003, {0, 0x77777777}},
223      {NoFlag, 0x00000001, {0, 0x77777777}},
224      {NoFlag, 0xffff8003, {0, 0x0badbeef}},
225      {NoFlag, 0xffff8000, {0, 0x0badbeef}},
226      {NoFlag, 0xffffff80, {0, 0x0badbeef}}};
227 
228 static const Inputs kPositivePreIndex[] =
229     {{NoFlag, 0xffff8003, {0, 0x55555555}},
230      {NoFlag, 0x7ffffffd, {0, 0x55555555}},
231      {NoFlag, 0x33333333, {0, 0x77777777}},
232      {NoFlag, 0xcccccccc, {0, 0x0cabba9e}},
233      {NoFlag, 0xffffffff, {0, 0x0cabba9e}},
234      {NoFlag, 0x33333333, {0, 0x55555555}},
235      {NoFlag, 0xffffff82, {0, 0x77777777}},
236      {NoFlag, 0x55555555, {0, 0x0cabba9e}},
237      {NoFlag, 0xfffffffe, {0, 0x77777777}},
238      {NoFlag, 0x0000007e, {0, 0x0cabba9e}}};
239 
240 static const Inputs kNegativePreIndex[] =
241     {{NoFlag, 0x00007ffd, {0, 0x0badbeef}},
242      {NoFlag, 0xffffffff, {0, 0x77777777}},
243      {NoFlag, 0x00000002, {0, 0x0cabba9e}},
244      {NoFlag, 0xfffffffd, {0, 0x0cabba9e}},
245      {NoFlag, 0x7ffffffd, {0, 0x77777777}},
246      {NoFlag, 0xffffffff, {0, 0x55555555}},
247      {NoFlag, 0x00007ffe, {0, 0x77777777}},
248      {NoFlag, 0xffffff82, {0, 0x0cabba9e}},
249      {NoFlag, 0x0000007e, {0, 0x55555555}},
250      {NoFlag, 0x7ffffffe, {0, 0x77777777}}};
251 
252 
253 // A loop will be generated for each element of this array.
254 const TestLoopData kTests[] =
255     {{{eq, r0, r1, plus, 0, Offset},
256       "eq r0 r1 plus 0 Offset",
257       "Condition_eq_r0_r1_plus_0_Offset",
258       ARRAY_SIZE(kCondition),
259       kCondition},
260      {{ne, r0, r1, plus, 0, Offset},
261       "ne r0 r1 plus 0 Offset",
262       "Condition_ne_r0_r1_plus_0_Offset",
263       ARRAY_SIZE(kCondition),
264       kCondition},
265      {{cs, r0, r1, plus, 0, Offset},
266       "cs r0 r1 plus 0 Offset",
267       "Condition_cs_r0_r1_plus_0_Offset",
268       ARRAY_SIZE(kCondition),
269       kCondition},
270      {{cc, r0, r1, plus, 0, Offset},
271       "cc r0 r1 plus 0 Offset",
272       "Condition_cc_r0_r1_plus_0_Offset",
273       ARRAY_SIZE(kCondition),
274       kCondition},
275      {{mi, r0, r1, plus, 0, Offset},
276       "mi r0 r1 plus 0 Offset",
277       "Condition_mi_r0_r1_plus_0_Offset",
278       ARRAY_SIZE(kCondition),
279       kCondition},
280      {{pl, r0, r1, plus, 0, Offset},
281       "pl r0 r1 plus 0 Offset",
282       "Condition_pl_r0_r1_plus_0_Offset",
283       ARRAY_SIZE(kCondition),
284       kCondition},
285      {{vs, r0, r1, plus, 0, Offset},
286       "vs r0 r1 plus 0 Offset",
287       "Condition_vs_r0_r1_plus_0_Offset",
288       ARRAY_SIZE(kCondition),
289       kCondition},
290      {{vc, r0, r1, plus, 0, Offset},
291       "vc r0 r1 plus 0 Offset",
292       "Condition_vc_r0_r1_plus_0_Offset",
293       ARRAY_SIZE(kCondition),
294       kCondition},
295      {{hi, r0, r1, plus, 0, Offset},
296       "hi r0 r1 plus 0 Offset",
297       "Condition_hi_r0_r1_plus_0_Offset",
298       ARRAY_SIZE(kCondition),
299       kCondition},
300      {{ls, r0, r1, plus, 0, Offset},
301       "ls r0 r1 plus 0 Offset",
302       "Condition_ls_r0_r1_plus_0_Offset",
303       ARRAY_SIZE(kCondition),
304       kCondition},
305      {{ge, r0, r1, plus, 0, Offset},
306       "ge r0 r1 plus 0 Offset",
307       "Condition_ge_r0_r1_plus_0_Offset",
308       ARRAY_SIZE(kCondition),
309       kCondition},
310      {{lt, r0, r1, plus, 0, Offset},
311       "lt r0 r1 plus 0 Offset",
312       "Condition_lt_r0_r1_plus_0_Offset",
313       ARRAY_SIZE(kCondition),
314       kCondition},
315      {{gt, r0, r1, plus, 0, Offset},
316       "gt r0 r1 plus 0 Offset",
317       "Condition_gt_r0_r1_plus_0_Offset",
318       ARRAY_SIZE(kCondition),
319       kCondition},
320      {{le, r0, r1, plus, 0, Offset},
321       "le r0 r1 plus 0 Offset",
322       "Condition_le_r0_r1_plus_0_Offset",
323       ARRAY_SIZE(kCondition),
324       kCondition},
325      {{al, r0, r1, plus, 0, Offset},
326       "al r0 r1 plus 0 Offset",
327       "Condition_al_r0_r1_plus_0_Offset",
328       ARRAY_SIZE(kCondition),
329       kCondition},
330      {{al, r0, r6, plus, 2582, Offset},
331       "al r0 r6 plus 2582 Offset",
332       "PositiveOffset_al_r0_r6_plus_2582_Offset",
333       ARRAY_SIZE(kPositiveOffset),
334       kPositiveOffset},
335      {{al, r2, r5, plus, 0, Offset},
336       "al r2 r5 plus 0 Offset",
337       "PositiveOffset_al_r2_r5_plus_0_Offset",
338       ARRAY_SIZE(kPositiveOffset),
339       kPositiveOffset},
340      {{al, r2, r1, plus, 3989, Offset},
341       "al r2 r1 plus 3989 Offset",
342       "PositiveOffset_al_r2_r1_plus_3989_Offset",
343       ARRAY_SIZE(kPositiveOffset),
344       kPositiveOffset},
345      {{al, r6, r10, plus, 1892, Offset},
346       "al r6 r10 plus 1892 Offset",
347       "PositiveOffset_al_r6_r10_plus_1892_Offset",
348       ARRAY_SIZE(kPositiveOffset),
349       kPositiveOffset},
350      {{al, r1, r12, plus, 1677, Offset},
351       "al r1 r12 plus 1677 Offset",
352       "PositiveOffset_al_r1_r12_plus_1677_Offset",
353       ARRAY_SIZE(kPositiveOffset),
354       kPositiveOffset},
355      {{al, r9, r4, plus, 3015, Offset},
356       "al r9 r4 plus 3015 Offset",
357       "PositiveOffset_al_r9_r4_plus_3015_Offset",
358       ARRAY_SIZE(kPositiveOffset),
359       kPositiveOffset},
360      {{al, r11, r4, plus, 1231, Offset},
361       "al r11 r4 plus 1231 Offset",
362       "PositiveOffset_al_r11_r4_plus_1231_Offset",
363       ARRAY_SIZE(kPositiveOffset),
364       kPositiveOffset},
365      {{al, r7, r10, plus, 523, Offset},
366       "al r7 r10 plus 523 Offset",
367       "PositiveOffset_al_r7_r10_plus_523_Offset",
368       ARRAY_SIZE(kPositiveOffset),
369       kPositiveOffset},
370      {{al, r10, r9, plus, 1485, Offset},
371       "al r10 r9 plus 1485 Offset",
372       "PositiveOffset_al_r10_r9_plus_1485_Offset",
373       ARRAY_SIZE(kPositiveOffset),
374       kPositiveOffset},
375      {{al, r11, r0, plus, 1924, Offset},
376       "al r11 r0 plus 1924 Offset",
377       "PositiveOffset_al_r11_r0_plus_1924_Offset",
378       ARRAY_SIZE(kPositiveOffset),
379       kPositiveOffset},
380      {{al, r9, r2, plus, 670, Offset},
381       "al r9 r2 plus 670 Offset",
382       "PositiveOffset_al_r9_r2_plus_670_Offset",
383       ARRAY_SIZE(kPositiveOffset),
384       kPositiveOffset},
385      {{al, r2, r7, plus, 3417, Offset},
386       "al r2 r7 plus 3417 Offset",
387       "PositiveOffset_al_r2_r7_plus_3417_Offset",
388       ARRAY_SIZE(kPositiveOffset),
389       kPositiveOffset},
390      {{al, r1, r5, plus, 470, Offset},
391       "al r1 r5 plus 470 Offset",
392       "PositiveOffset_al_r1_r5_plus_470_Offset",
393       ARRAY_SIZE(kPositiveOffset),
394       kPositiveOffset},
395      {{al, r5, r11, plus, 1660, Offset},
396       "al r5 r11 plus 1660 Offset",
397       "PositiveOffset_al_r5_r11_plus_1660_Offset",
398       ARRAY_SIZE(kPositiveOffset),
399       kPositiveOffset},
400      {{al, r8, r6, plus, 3978, Offset},
401       "al r8 r6 plus 3978 Offset",
402       "PositiveOffset_al_r8_r6_plus_3978_Offset",
403       ARRAY_SIZE(kPositiveOffset),
404       kPositiveOffset},
405      {{al, r4, r3, plus, 3739, Offset},
406       "al r4 r3 plus 3739 Offset",
407       "PositiveOffset_al_r4_r3_plus_3739_Offset",
408       ARRAY_SIZE(kPositiveOffset),
409       kPositiveOffset},
410      {{al, r14, r4, plus, 3787, Offset},
411       "al r14 r4 plus 3787 Offset",
412       "PositiveOffset_al_r14_r4_plus_3787_Offset",
413       ARRAY_SIZE(kPositiveOffset),
414       kPositiveOffset},
415      {{al, r12, r0, plus, 732, Offset},
416       "al r12 r0 plus 732 Offset",
417       "PositiveOffset_al_r12_r0_plus_732_Offset",
418       ARRAY_SIZE(kPositiveOffset),
419       kPositiveOffset},
420      {{al, r10, r14, plus, 3625, Offset},
421       "al r10 r14 plus 3625 Offset",
422       "PositiveOffset_al_r10_r14_plus_3625_Offset",
423       ARRAY_SIZE(kPositiveOffset),
424       kPositiveOffset},
425      {{al, r3, r1, plus, 2451, Offset},
426       "al r3 r1 plus 2451 Offset",
427       "PositiveOffset_al_r3_r1_plus_2451_Offset",
428       ARRAY_SIZE(kPositiveOffset),
429       kPositiveOffset},
430      {{al, r0, r6, plus, 1241, Offset},
431       "al r0 r6 plus 1241 Offset",
432       "PositiveOffset_al_r0_r6_plus_1241_Offset",
433       ARRAY_SIZE(kPositiveOffset),
434       kPositiveOffset},
435      {{al, r5, r4, plus, 2040, Offset},
436       "al r5 r4 plus 2040 Offset",
437       "PositiveOffset_al_r5_r4_plus_2040_Offset",
438       ARRAY_SIZE(kPositiveOffset),
439       kPositiveOffset},
440      {{al, r9, r12, plus, 251, Offset},
441       "al r9 r12 plus 251 Offset",
442       "PositiveOffset_al_r9_r12_plus_251_Offset",
443       ARRAY_SIZE(kPositiveOffset),
444       kPositiveOffset},
445      {{al, r11, r14, plus, 3765, Offset},
446       "al r11 r14 plus 3765 Offset",
447       "PositiveOffset_al_r11_r14_plus_3765_Offset",
448       ARRAY_SIZE(kPositiveOffset),
449       kPositiveOffset},
450      {{al, r6, r0, plus, 3028, Offset},
451       "al r6 r0 plus 3028 Offset",
452       "PositiveOffset_al_r6_r0_plus_3028_Offset",
453       ARRAY_SIZE(kPositiveOffset),
454       kPositiveOffset},
455      {{al, r14, r7, plus, 1872, Offset},
456       "al r14 r7 plus 1872 Offset",
457       "PositiveOffset_al_r14_r7_plus_1872_Offset",
458       ARRAY_SIZE(kPositiveOffset),
459       kPositiveOffset},
460      {{al, r0, r11, plus, 3450, Offset},
461       "al r0 r11 plus 3450 Offset",
462       "PositiveOffset_al_r0_r11_plus_3450_Offset",
463       ARRAY_SIZE(kPositiveOffset),
464       kPositiveOffset},
465      {{al, r12, r7, plus, 3717, Offset},
466       "al r12 r7 plus 3717 Offset",
467       "PositiveOffset_al_r12_r7_plus_3717_Offset",
468       ARRAY_SIZE(kPositiveOffset),
469       kPositiveOffset},
470      {{al, r9, r3, plus, 2011, Offset},
471       "al r9 r3 plus 2011 Offset",
472       "PositiveOffset_al_r9_r3_plus_2011_Offset",
473       ARRAY_SIZE(kPositiveOffset),
474       kPositiveOffset},
475      {{al, r1, r6, plus, 1399, Offset},
476       "al r1 r6 plus 1399 Offset",
477       "PositiveOffset_al_r1_r6_plus_1399_Offset",
478       ARRAY_SIZE(kPositiveOffset),
479       kPositiveOffset},
480      {{al, r3, r6, plus, 2546, Offset},
481       "al r3 r6 plus 2546 Offset",
482       "PositiveOffset_al_r3_r6_plus_2546_Offset",
483       ARRAY_SIZE(kPositiveOffset),
484       kPositiveOffset},
485      {{al, r1, r2, plus, 850, Offset},
486       "al r1 r2 plus 850 Offset",
487       "PositiveOffset_al_r1_r2_plus_850_Offset",
488       ARRAY_SIZE(kPositiveOffset),
489       kPositiveOffset},
490      {{al, r4, r10, plus, 371, Offset},
491       "al r4 r10 plus 371 Offset",
492       "PositiveOffset_al_r4_r10_plus_371_Offset",
493       ARRAY_SIZE(kPositiveOffset),
494       kPositiveOffset},
495      {{al, r5, r10, plus, 2240, Offset},
496       "al r5 r10 plus 2240 Offset",
497       "PositiveOffset_al_r5_r10_plus_2240_Offset",
498       ARRAY_SIZE(kPositiveOffset),
499       kPositiveOffset},
500      {{al, r5, r9, plus, 712, Offset},
501       "al r5 r9 plus 712 Offset",
502       "PositiveOffset_al_r5_r9_plus_712_Offset",
503       ARRAY_SIZE(kPositiveOffset),
504       kPositiveOffset},
505      {{al, r14, r7, plus, 2025, Offset},
506       "al r14 r7 plus 2025 Offset",
507       "PositiveOffset_al_r14_r7_plus_2025_Offset",
508       ARRAY_SIZE(kPositiveOffset),
509       kPositiveOffset},
510      {{al, r0, r3, plus, 595, Offset},
511       "al r0 r3 plus 595 Offset",
512       "PositiveOffset_al_r0_r3_plus_595_Offset",
513       ARRAY_SIZE(kPositiveOffset),
514       kPositiveOffset},
515      {{al, r14, r3, plus, 1459, Offset},
516       "al r14 r3 plus 1459 Offset",
517       "PositiveOffset_al_r14_r3_plus_1459_Offset",
518       ARRAY_SIZE(kPositiveOffset),
519       kPositiveOffset},
520      {{al, r12, r7, plus, 582, Offset},
521       "al r12 r7 plus 582 Offset",
522       "PositiveOffset_al_r12_r7_plus_582_Offset",
523       ARRAY_SIZE(kPositiveOffset),
524       kPositiveOffset},
525      {{al, r7, r10, plus, 3282, Offset},
526       "al r7 r10 plus 3282 Offset",
527       "PositiveOffset_al_r7_r10_plus_3282_Offset",
528       ARRAY_SIZE(kPositiveOffset),
529       kPositiveOffset},
530      {{al, r14, r3, plus, 674, Offset},
531       "al r14 r3 plus 674 Offset",
532       "PositiveOffset_al_r14_r3_plus_674_Offset",
533       ARRAY_SIZE(kPositiveOffset),
534       kPositiveOffset},
535      {{al, r10, r1, plus, 72, Offset},
536       "al r10 r1 plus 72 Offset",
537       "PositiveOffset_al_r10_r1_plus_72_Offset",
538       ARRAY_SIZE(kPositiveOffset),
539       kPositiveOffset},
540      {{al, r1, r7, plus, 3702, Offset},
541       "al r1 r7 plus 3702 Offset",
542       "PositiveOffset_al_r1_r7_plus_3702_Offset",
543       ARRAY_SIZE(kPositiveOffset),
544       kPositiveOffset},
545      {{al, r3, r5, plus, 932, Offset},
546       "al r3 r5 plus 932 Offset",
547       "PositiveOffset_al_r3_r5_plus_932_Offset",
548       ARRAY_SIZE(kPositiveOffset),
549       kPositiveOffset},
550      {{al, r0, r9, plus, 233, Offset},
551       "al r0 r9 plus 233 Offset",
552       "PositiveOffset_al_r0_r9_plus_233_Offset",
553       ARRAY_SIZE(kPositiveOffset),
554       kPositiveOffset},
555      {{al, r0, r5, plus, 523, Offset},
556       "al r0 r5 plus 523 Offset",
557       "PositiveOffset_al_r0_r5_plus_523_Offset",
558       ARRAY_SIZE(kPositiveOffset),
559       kPositiveOffset},
560      {{al, r14, r9, plus, 844, Offset},
561       "al r14 r9 plus 844 Offset",
562       "PositiveOffset_al_r14_r9_plus_844_Offset",
563       ARRAY_SIZE(kPositiveOffset),
564       kPositiveOffset},
565      {{al, r6, r5, plus, 1459, Offset},
566       "al r6 r5 plus 1459 Offset",
567       "PositiveOffset_al_r6_r5_plus_1459_Offset",
568       ARRAY_SIZE(kPositiveOffset),
569       kPositiveOffset},
570      {{al, r10, r14, plus, 3384, Offset},
571       "al r10 r14 plus 3384 Offset",
572       "PositiveOffset_al_r10_r14_plus_3384_Offset",
573       ARRAY_SIZE(kPositiveOffset),
574       kPositiveOffset},
575      {{al, r4, r12, plus, 2345, Offset},
576       "al r4 r12 plus 2345 Offset",
577       "PositiveOffset_al_r4_r12_plus_2345_Offset",
578       ARRAY_SIZE(kPositiveOffset),
579       kPositiveOffset},
580      {{al, r11, r9, plus, 1642, Offset},
581       "al r11 r9 plus 1642 Offset",
582       "PositiveOffset_al_r11_r9_plus_1642_Offset",
583       ARRAY_SIZE(kPositiveOffset),
584       kPositiveOffset},
585      {{al, r3, r7, plus, 2901, Offset},
586       "al r3 r7 plus 2901 Offset",
587       "PositiveOffset_al_r3_r7_plus_2901_Offset",
588       ARRAY_SIZE(kPositiveOffset),
589       kPositiveOffset},
590      {{al, r4, r3, plus, 1934, Offset},
591       "al r4 r3 plus 1934 Offset",
592       "PositiveOffset_al_r4_r3_plus_1934_Offset",
593       ARRAY_SIZE(kPositiveOffset),
594       kPositiveOffset},
595      {{al, r8, r4, plus, 3952, Offset},
596       "al r8 r4 plus 3952 Offset",
597       "PositiveOffset_al_r8_r4_plus_3952_Offset",
598       ARRAY_SIZE(kPositiveOffset),
599       kPositiveOffset},
600      {{al, r5, r0, plus, 2710, Offset},
601       "al r5 r0 plus 2710 Offset",
602       "PositiveOffset_al_r5_r0_plus_2710_Offset",
603       ARRAY_SIZE(kPositiveOffset),
604       kPositiveOffset},
605      {{al, r12, r2, plus, 270, Offset},
606       "al r12 r2 plus 270 Offset",
607       "PositiveOffset_al_r12_r2_plus_270_Offset",
608       ARRAY_SIZE(kPositiveOffset),
609       kPositiveOffset},
610      {{al, r9, r2, plus, 132, Offset},
611       "al r9 r2 plus 132 Offset",
612       "PositiveOffset_al_r9_r2_plus_132_Offset",
613       ARRAY_SIZE(kPositiveOffset),
614       kPositiveOffset},
615      {{al, r11, r5, plus, 19, Offset},
616       "al r11 r5 plus 19 Offset",
617       "PositiveOffset_al_r11_r5_plus_19_Offset",
618       ARRAY_SIZE(kPositiveOffset),
619       kPositiveOffset},
620      {{al, r7, r14, plus, 1848, Offset},
621       "al r7 r14 plus 1848 Offset",
622       "PositiveOffset_al_r7_r14_plus_1848_Offset",
623       ARRAY_SIZE(kPositiveOffset),
624       kPositiveOffset},
625      {{al, r6, r10, plus, 977, Offset},
626       "al r6 r10 plus 977 Offset",
627       "PositiveOffset_al_r6_r10_plus_977_Offset",
628       ARRAY_SIZE(kPositiveOffset),
629       kPositiveOffset},
630      {{al, r10, r8, plus, 3239, Offset},
631       "al r10 r8 plus 3239 Offset",
632       "PositiveOffset_al_r10_r8_plus_3239_Offset",
633       ARRAY_SIZE(kPositiveOffset),
634       kPositiveOffset},
635      {{al, r7, r0, plus, 1295, Offset},
636       "al r7 r0 plus 1295 Offset",
637       "PositiveOffset_al_r7_r0_plus_1295_Offset",
638       ARRAY_SIZE(kPositiveOffset),
639       kPositiveOffset},
640      {{al, r9, r5, plus, 517, Offset},
641       "al r9 r5 plus 517 Offset",
642       "PositiveOffset_al_r9_r5_plus_517_Offset",
643       ARRAY_SIZE(kPositiveOffset),
644       kPositiveOffset},
645      {{al, r12, r8, plus, 3071, Offset},
646       "al r12 r8 plus 3071 Offset",
647       "PositiveOffset_al_r12_r8_plus_3071_Offset",
648       ARRAY_SIZE(kPositiveOffset),
649       kPositiveOffset},
650      {{al, r5, r6, plus, 3194, Offset},
651       "al r5 r6 plus 3194 Offset",
652       "PositiveOffset_al_r5_r6_plus_3194_Offset",
653       ARRAY_SIZE(kPositiveOffset),
654       kPositiveOffset},
655      {{al, r10, r2, plus, 198, Offset},
656       "al r10 r2 plus 198 Offset",
657       "PositiveOffset_al_r10_r2_plus_198_Offset",
658       ARRAY_SIZE(kPositiveOffset),
659       kPositiveOffset},
660      {{al, r8, r3, plus, 565, Offset},
661       "al r8 r3 plus 565 Offset",
662       "PositiveOffset_al_r8_r3_plus_565_Offset",
663       ARRAY_SIZE(kPositiveOffset),
664       kPositiveOffset},
665      {{al, r7, r0, plus, 3399, Offset},
666       "al r7 r0 plus 3399 Offset",
667       "PositiveOffset_al_r7_r0_plus_3399_Offset",
668       ARRAY_SIZE(kPositiveOffset),
669       kPositiveOffset},
670      {{al, r7, r1, plus, 1916, Offset},
671       "al r7 r1 plus 1916 Offset",
672       "PositiveOffset_al_r7_r1_plus_1916_Offset",
673       ARRAY_SIZE(kPositiveOffset),
674       kPositiveOffset},
675      {{al, r3, r9, plus, 263, Offset},
676       "al r3 r9 plus 263 Offset",
677       "PositiveOffset_al_r3_r9_plus_263_Offset",
678       ARRAY_SIZE(kPositiveOffset),
679       kPositiveOffset},
680      {{al, r3, r1, plus, 3772, Offset},
681       "al r3 r1 plus 3772 Offset",
682       "PositiveOffset_al_r3_r1_plus_3772_Offset",
683       ARRAY_SIZE(kPositiveOffset),
684       kPositiveOffset},
685      {{al, r9, r2, plus, 2906, Offset},
686       "al r9 r2 plus 2906 Offset",
687       "PositiveOffset_al_r9_r2_plus_2906_Offset",
688       ARRAY_SIZE(kPositiveOffset),
689       kPositiveOffset},
690      {{al, r12, r0, plus, 2451, Offset},
691       "al r12 r0 plus 2451 Offset",
692       "PositiveOffset_al_r12_r0_plus_2451_Offset",
693       ARRAY_SIZE(kPositiveOffset),
694       kPositiveOffset},
695      {{al, r8, r0, plus, 689, Offset},
696       "al r8 r0 plus 689 Offset",
697       "PositiveOffset_al_r8_r0_plus_689_Offset",
698       ARRAY_SIZE(kPositiveOffset),
699       kPositiveOffset},
700      {{al, r0, r9, plus, 3063, Offset},
701       "al r0 r9 plus 3063 Offset",
702       "PositiveOffset_al_r0_r9_plus_3063_Offset",
703       ARRAY_SIZE(kPositiveOffset),
704       kPositiveOffset},
705      {{al, r3, r4, plus, 932, Offset},
706       "al r3 r4 plus 932 Offset",
707       "PositiveOffset_al_r3_r4_plus_932_Offset",
708       ARRAY_SIZE(kPositiveOffset),
709       kPositiveOffset},
710      {{al, r12, r10, plus, 704, Offset},
711       "al r12 r10 plus 704 Offset",
712       "PositiveOffset_al_r12_r10_plus_704_Offset",
713       ARRAY_SIZE(kPositiveOffset),
714       kPositiveOffset},
715      {{al, r8, r4, plus, 2374, Offset},
716       "al r8 r4 plus 2374 Offset",
717       "PositiveOffset_al_r8_r4_plus_2374_Offset",
718       ARRAY_SIZE(kPositiveOffset),
719       kPositiveOffset},
720      {{al, r12, r9, plus, 2345, Offset},
721       "al r12 r9 plus 2345 Offset",
722       "PositiveOffset_al_r12_r9_plus_2345_Offset",
723       ARRAY_SIZE(kPositiveOffset),
724       kPositiveOffset},
725      {{al, r6, r1, plus, 2651, Offset},
726       "al r6 r1 plus 2651 Offset",
727       "PositiveOffset_al_r6_r1_plus_2651_Offset",
728       ARRAY_SIZE(kPositiveOffset),
729       kPositiveOffset},
730      {{al, r0, r3, plus, 998, Offset},
731       "al r0 r3 plus 998 Offset",
732       "PositiveOffset_al_r0_r3_plus_998_Offset",
733       ARRAY_SIZE(kPositiveOffset),
734       kPositiveOffset},
735      {{al, r8, r11, plus, 679, Offset},
736       "al r8 r11 plus 679 Offset",
737       "PositiveOffset_al_r8_r11_plus_679_Offset",
738       ARRAY_SIZE(kPositiveOffset),
739       kPositiveOffset},
740      {{al, r5, r1, plus, 2945, Offset},
741       "al r5 r1 plus 2945 Offset",
742       "PositiveOffset_al_r5_r1_plus_2945_Offset",
743       ARRAY_SIZE(kPositiveOffset),
744       kPositiveOffset},
745      {{al, r2, r9, plus, 3439, Offset},
746       "al r2 r9 plus 3439 Offset",
747       "PositiveOffset_al_r2_r9_plus_3439_Offset",
748       ARRAY_SIZE(kPositiveOffset),
749       kPositiveOffset},
750      {{al, r8, r10, plus, 3636, Offset},
751       "al r8 r10 plus 3636 Offset",
752       "PositiveOffset_al_r8_r10_plus_3636_Offset",
753       ARRAY_SIZE(kPositiveOffset),
754       kPositiveOffset},
755      {{al, r11, r12, plus, 3986, Offset},
756       "al r11 r12 plus 3986 Offset",
757       "PositiveOffset_al_r11_r12_plus_3986_Offset",
758       ARRAY_SIZE(kPositiveOffset),
759       kPositiveOffset},
760      {{al, r6, r8, plus, 2240, Offset},
761       "al r6 r8 plus 2240 Offset",
762       "PositiveOffset_al_r6_r8_plus_2240_Offset",
763       ARRAY_SIZE(kPositiveOffset),
764       kPositiveOffset},
765      {{al, r11, r8, plus, 1961, Offset},
766       "al r11 r8 plus 1961 Offset",
767       "PositiveOffset_al_r11_r8_plus_1961_Offset",
768       ARRAY_SIZE(kPositiveOffset),
769       kPositiveOffset},
770      {{al, r5, r6, plus, 1536, Offset},
771       "al r5 r6 plus 1536 Offset",
772       "PositiveOffset_al_r5_r6_plus_1536_Offset",
773       ARRAY_SIZE(kPositiveOffset),
774       kPositiveOffset},
775      {{al, r0, r12, plus, 1759, Offset},
776       "al r0 r12 plus 1759 Offset",
777       "PositiveOffset_al_r0_r12_plus_1759_Offset",
778       ARRAY_SIZE(kPositiveOffset),
779       kPositiveOffset},
780      {{al, r7, r1, plus, 1266, Offset},
781       "al r7 r1 plus 1266 Offset",
782       "PositiveOffset_al_r7_r1_plus_1266_Offset",
783       ARRAY_SIZE(kPositiveOffset),
784       kPositiveOffset},
785      {{al, r1, r4, plus, 1017, Offset},
786       "al r1 r4 plus 1017 Offset",
787       "PositiveOffset_al_r1_r4_plus_1017_Offset",
788       ARRAY_SIZE(kPositiveOffset),
789       kPositiveOffset},
790      {{al, r9, r3, plus, 2224, Offset},
791       "al r9 r3 plus 2224 Offset",
792       "PositiveOffset_al_r9_r3_plus_2224_Offset",
793       ARRAY_SIZE(kPositiveOffset),
794       kPositiveOffset},
795      {{al, r2, r9, plus, 3078, Offset},
796       "al r2 r9 plus 3078 Offset",
797       "PositiveOffset_al_r2_r9_plus_3078_Offset",
798       ARRAY_SIZE(kPositiveOffset),
799       kPositiveOffset},
800      {{al, r7, r2, plus, 2690, Offset},
801       "al r7 r2 plus 2690 Offset",
802       "PositiveOffset_al_r7_r2_plus_2690_Offset",
803       ARRAY_SIZE(kPositiveOffset),
804       kPositiveOffset},
805      {{al, r3, r0, plus, 3078, Offset},
806       "al r3 r0 plus 3078 Offset",
807       "PositiveOffset_al_r3_r0_plus_3078_Offset",
808       ARRAY_SIZE(kPositiveOffset),
809       kPositiveOffset},
810      {{al, r4, r12, plus, 1017, Offset},
811       "al r4 r12 plus 1017 Offset",
812       "PositiveOffset_al_r4_r12_plus_1017_Offset",
813       ARRAY_SIZE(kPositiveOffset),
814       kPositiveOffset},
815      {{al, r0, r5, plus, 3787, Offset},
816       "al r0 r5 plus 3787 Offset",
817       "PositiveOffset_al_r0_r5_plus_3787_Offset",
818       ARRAY_SIZE(kPositiveOffset),
819       kPositiveOffset},
820      {{al, r0, r10, plus, 342, Offset},
821       "al r0 r10 plus 342 Offset",
822       "PositiveOffset_al_r0_r10_plus_342_Offset",
823       ARRAY_SIZE(kPositiveOffset),
824       kPositiveOffset},
825      {{al, r1, r2, plus, 1097, Offset},
826       "al r1 r2 plus 1097 Offset",
827       "PositiveOffset_al_r1_r2_plus_1097_Offset",
828       ARRAY_SIZE(kPositiveOffset),
829       kPositiveOffset},
830      {{al, r11, r8, minus, 4065, Offset},
831       "al r11 r8 minus 4065 Offset",
832       "NegativeOffset_al_r11_r8_minus_4065_Offset",
833       ARRAY_SIZE(kNegativeOffset),
834       kNegativeOffset},
835      {{al, r4, r5, minus, 1459, Offset},
836       "al r4 r5 minus 1459 Offset",
837       "NegativeOffset_al_r4_r5_minus_1459_Offset",
838       ARRAY_SIZE(kNegativeOffset),
839       kNegativeOffset},
840      {{al, r5, r3, minus, 1867, Offset},
841       "al r5 r3 minus 1867 Offset",
842       "NegativeOffset_al_r5_r3_minus_1867_Offset",
843       ARRAY_SIZE(kNegativeOffset),
844       kNegativeOffset},
845      {{al, r11, r9, minus, 1537, Offset},
846       "al r11 r9 minus 1537 Offset",
847       "NegativeOffset_al_r11_r9_minus_1537_Offset",
848       ARRAY_SIZE(kNegativeOffset),
849       kNegativeOffset},
850      {{al, r4, r8, minus, 421, Offset},
851       "al r4 r8 minus 421 Offset",
852       "NegativeOffset_al_r4_r8_minus_421_Offset",
853       ARRAY_SIZE(kNegativeOffset),
854       kNegativeOffset},
855      {{al, r2, r12, minus, 3625, Offset},
856       "al r2 r12 minus 3625 Offset",
857       "NegativeOffset_al_r2_r12_minus_3625_Offset",
858       ARRAY_SIZE(kNegativeOffset),
859       kNegativeOffset},
860      {{al, r14, r1, minus, 1536, Offset},
861       "al r14 r1 minus 1536 Offset",
862       "NegativeOffset_al_r14_r1_minus_1536_Offset",
863       ARRAY_SIZE(kNegativeOffset),
864       kNegativeOffset},
865      {{al, r10, r12, minus, 3397, Offset},
866       "al r10 r12 minus 3397 Offset",
867       "NegativeOffset_al_r10_r12_minus_3397_Offset",
868       ARRAY_SIZE(kNegativeOffset),
869       kNegativeOffset},
870      {{al, r7, r2, minus, 3450, Offset},
871       "al r7 r2 minus 3450 Offset",
872       "NegativeOffset_al_r7_r2_minus_3450_Offset",
873       ARRAY_SIZE(kNegativeOffset),
874       kNegativeOffset},
875      {{al, r10, r14, minus, 1551, Offset},
876       "al r10 r14 minus 1551 Offset",
877       "NegativeOffset_al_r10_r14_minus_1551_Offset",
878       ARRAY_SIZE(kNegativeOffset),
879       kNegativeOffset},
880      {{al, r11, r5, minus, 3625, Offset},
881       "al r11 r5 minus 3625 Offset",
882       "NegativeOffset_al_r11_r5_minus_3625_Offset",
883       ARRAY_SIZE(kNegativeOffset),
884       kNegativeOffset},
885      {{al, r9, r11, minus, 3633, Offset},
886       "al r9 r11 minus 3633 Offset",
887       "NegativeOffset_al_r9_r11_minus_3633_Offset",
888       ARRAY_SIZE(kNegativeOffset),
889       kNegativeOffset},
890      {{al, r9, r6, minus, 2490, Offset},
891       "al r9 r6 minus 2490 Offset",
892       "NegativeOffset_al_r9_r6_minus_2490_Offset",
893       ARRAY_SIZE(kNegativeOffset),
894       kNegativeOffset},
895      {{al, r14, r12, minus, 3003, Offset},
896       "al r14 r12 minus 3003 Offset",
897       "NegativeOffset_al_r14_r12_minus_3003_Offset",
898       ARRAY_SIZE(kNegativeOffset),
899       kNegativeOffset},
900      {{al, r8, r10, minus, 1848, Offset},
901       "al r8 r10 minus 1848 Offset",
902       "NegativeOffset_al_r8_r10_minus_1848_Offset",
903       ARRAY_SIZE(kNegativeOffset),
904       kNegativeOffset},
905      {{al, r9, r6, minus, 342, Offset},
906       "al r9 r6 minus 342 Offset",
907       "NegativeOffset_al_r9_r6_minus_342_Offset",
908       ARRAY_SIZE(kNegativeOffset),
909       kNegativeOffset},
910      {{al, r5, r2, minus, 3254, Offset},
911       "al r5 r2 minus 3254 Offset",
912       "NegativeOffset_al_r5_r2_minus_3254_Offset",
913       ARRAY_SIZE(kNegativeOffset),
914       kNegativeOffset},
915      {{al, r0, r5, minus, 2233, Offset},
916       "al r0 r5 minus 2233 Offset",
917       "NegativeOffset_al_r0_r5_minus_2233_Offset",
918       ARRAY_SIZE(kNegativeOffset),
919       kNegativeOffset},
920      {{al, r2, r1, minus, 3608, Offset},
921       "al r2 r1 minus 3608 Offset",
922       "NegativeOffset_al_r2_r1_minus_3608_Offset",
923       ARRAY_SIZE(kNegativeOffset),
924       kNegativeOffset},
925      {{al, r7, r5, minus, 624, Offset},
926       "al r7 r5 minus 624 Offset",
927       "NegativeOffset_al_r7_r5_minus_624_Offset",
928       ARRAY_SIZE(kNegativeOffset),
929       kNegativeOffset},
930      {{al, r11, r5, minus, 3774, Offset},
931       "al r11 r5 minus 3774 Offset",
932       "NegativeOffset_al_r11_r5_minus_3774_Offset",
933       ARRAY_SIZE(kNegativeOffset),
934       kNegativeOffset},
935      {{al, r3, r6, minus, 2427, Offset},
936       "al r3 r6 minus 2427 Offset",
937       "NegativeOffset_al_r3_r6_minus_2427_Offset",
938       ARRAY_SIZE(kNegativeOffset),
939       kNegativeOffset},
940      {{al, r7, r8, minus, 322, Offset},
941       "al r7 r8 minus 322 Offset",
942       "NegativeOffset_al_r7_r8_minus_322_Offset",
943       ARRAY_SIZE(kNegativeOffset),
944       kNegativeOffset},
945      {{al, r5, r8, minus, 3626, Offset},
946       "al r5 r8 minus 3626 Offset",
947       "NegativeOffset_al_r5_r8_minus_3626_Offset",
948       ARRAY_SIZE(kNegativeOffset),
949       kNegativeOffset},
950      {{al, r3, r11, minus, 1867, Offset},
951       "al r3 r11 minus 1867 Offset",
952       "NegativeOffset_al_r3_r11_minus_1867_Offset",
953       ARRAY_SIZE(kNegativeOffset),
954       kNegativeOffset},
955      {{al, r14, r12, minus, 2864, Offset},
956       "al r14 r12 minus 2864 Offset",
957       "NegativeOffset_al_r14_r12_minus_2864_Offset",
958       ARRAY_SIZE(kNegativeOffset),
959       kNegativeOffset},
960      {{al, r5, r9, minus, 4018, Offset},
961       "al r5 r9 minus 4018 Offset",
962       "NegativeOffset_al_r5_r9_minus_4018_Offset",
963       ARRAY_SIZE(kNegativeOffset),
964       kNegativeOffset},
965      {{al, r3, r2, minus, 1231, Offset},
966       "al r3 r2 minus 1231 Offset",
967       "NegativeOffset_al_r3_r2_minus_1231_Offset",
968       ARRAY_SIZE(kNegativeOffset),
969       kNegativeOffset},
970      {{al, r2, r3, minus, 601, Offset},
971       "al r2 r3 minus 601 Offset",
972       "NegativeOffset_al_r2_r3_minus_601_Offset",
973       ARRAY_SIZE(kNegativeOffset),
974       kNegativeOffset},
975      {{al, r0, r2, minus, 263, Offset},
976       "al r0 r2 minus 263 Offset",
977       "NegativeOffset_al_r0_r2_minus_263_Offset",
978       ARRAY_SIZE(kNegativeOffset),
979       kNegativeOffset},
980      {{al, r5, r8, minus, 1234, Offset},
981       "al r5 r8 minus 1234 Offset",
982       "NegativeOffset_al_r5_r8_minus_1234_Offset",
983       ARRAY_SIZE(kNegativeOffset),
984       kNegativeOffset},
985      {{al, r3, r10, minus, 2311, Offset},
986       "al r3 r10 minus 2311 Offset",
987       "NegativeOffset_al_r3_r10_minus_2311_Offset",
988       ARRAY_SIZE(kNegativeOffset),
989       kNegativeOffset},
990      {{al, r5, r1, minus, 3714, Offset},
991       "al r5 r1 minus 3714 Offset",
992       "NegativeOffset_al_r5_r1_minus_3714_Offset",
993       ARRAY_SIZE(kNegativeOffset),
994       kNegativeOffset},
995      {{al, r5, r1, minus, 1479, Offset},
996       "al r5 r1 minus 1479 Offset",
997       "NegativeOffset_al_r5_r1_minus_1479_Offset",
998       ARRAY_SIZE(kNegativeOffset),
999       kNegativeOffset},
1000      {{al, r1, r12, minus, 213, Offset},
1001       "al r1 r12 minus 213 Offset",
1002       "NegativeOffset_al_r1_r12_minus_213_Offset",
1003       ARRAY_SIZE(kNegativeOffset),
1004       kNegativeOffset},
1005      {{al, r0, r9, minus, 3071, Offset},
1006       "al r0 r9 minus 3071 Offset",
1007       "NegativeOffset_al_r0_r9_minus_3071_Offset",
1008       ARRAY_SIZE(kNegativeOffset),
1009       kNegativeOffset},
1010      {{al, r9, r12, minus, 2, Offset},
1011       "al r9 r12 minus 2 Offset",
1012       "NegativeOffset_al_r9_r12_minus_2_Offset",
1013       ARRAY_SIZE(kNegativeOffset),
1014       kNegativeOffset},
1015      {{al, r11, r3, minus, 831, Offset},
1016       "al r11 r3 minus 831 Offset",
1017       "NegativeOffset_al_r11_r3_minus_831_Offset",
1018       ARRAY_SIZE(kNegativeOffset),
1019       kNegativeOffset},
1020      {{al, r11, r0, minus, 3443, Offset},
1021       "al r11 r0 minus 3443 Offset",
1022       "NegativeOffset_al_r11_r0_minus_3443_Offset",
1023       ARRAY_SIZE(kNegativeOffset),
1024       kNegativeOffset},
1025      {{al, r9, r7, minus, 3256, Offset},
1026       "al r9 r7 minus 3256 Offset",
1027       "NegativeOffset_al_r9_r7_minus_3256_Offset",
1028       ARRAY_SIZE(kNegativeOffset),
1029       kNegativeOffset},
1030      {{al, r8, r9, minus, 1372, Offset},
1031       "al r8 r9 minus 1372 Offset",
1032       "NegativeOffset_al_r8_r9_minus_1372_Offset",
1033       ARRAY_SIZE(kNegativeOffset),
1034       kNegativeOffset},
1035      {{al, r0, r7, minus, 1665, Offset},
1036       "al r0 r7 minus 1665 Offset",
1037       "NegativeOffset_al_r0_r7_minus_1665_Offset",
1038       ARRAY_SIZE(kNegativeOffset),
1039       kNegativeOffset},
1040      {{al, r7, r0, minus, 3325, Offset},
1041       "al r7 r0 minus 3325 Offset",
1042       "NegativeOffset_al_r7_r0_minus_3325_Offset",
1043       ARRAY_SIZE(kNegativeOffset),
1044       kNegativeOffset},
1045      {{al, r4, r5, minus, 132, Offset},
1046       "al r4 r5 minus 132 Offset",
1047       "NegativeOffset_al_r4_r5_minus_132_Offset",
1048       ARRAY_SIZE(kNegativeOffset),
1049       kNegativeOffset},
1050      {{al, r3, r10, minus, 828, Offset},
1051       "al r3 r10 minus 828 Offset",
1052       "NegativeOffset_al_r3_r10_minus_828_Offset",
1053       ARRAY_SIZE(kNegativeOffset),
1054       kNegativeOffset},
1055      {{al, r9, r12, minus, 3002, Offset},
1056       "al r9 r12 minus 3002 Offset",
1057       "NegativeOffset_al_r9_r12_minus_3002_Offset",
1058       ARRAY_SIZE(kNegativeOffset),
1059       kNegativeOffset},
1060      {{al, r7, r9, minus, 371, Offset},
1061       "al r7 r9 minus 371 Offset",
1062       "NegativeOffset_al_r7_r9_minus_371_Offset",
1063       ARRAY_SIZE(kNegativeOffset),
1064       kNegativeOffset},
1065      {{al, r5, r14, minus, 2326, Offset},
1066       "al r5 r14 minus 2326 Offset",
1067       "NegativeOffset_al_r5_r14_minus_2326_Offset",
1068       ARRAY_SIZE(kNegativeOffset),
1069       kNegativeOffset},
1070      {{al, r8, r7, minus, 811, Offset},
1071       "al r8 r7 minus 811 Offset",
1072       "NegativeOffset_al_r8_r7_minus_811_Offset",
1073       ARRAY_SIZE(kNegativeOffset),
1074       kNegativeOffset},
1075      {{al, r2, r11, minus, 2946, Offset},
1076       "al r2 r11 minus 2946 Offset",
1077       "NegativeOffset_al_r2_r11_minus_2946_Offset",
1078       ARRAY_SIZE(kNegativeOffset),
1079       kNegativeOffset},
1080      {{al, r11, r12, minus, 216, Offset},
1081       "al r11 r12 minus 216 Offset",
1082       "NegativeOffset_al_r11_r12_minus_216_Offset",
1083       ARRAY_SIZE(kNegativeOffset),
1084       kNegativeOffset},
1085      {{al, r4, r12, minus, 2651, Offset},
1086       "al r4 r12 minus 2651 Offset",
1087       "NegativeOffset_al_r4_r12_minus_2651_Offset",
1088       ARRAY_SIZE(kNegativeOffset),
1089       kNegativeOffset},
1090      {{al, r14, r5, minus, 2072, Offset},
1091       "al r14 r5 minus 2072 Offset",
1092       "NegativeOffset_al_r14_r5_minus_2072_Offset",
1093       ARRAY_SIZE(kNegativeOffset),
1094       kNegativeOffset},
1095      {{al, r12, r4, minus, 2690, Offset},
1096       "al r12 r4 minus 2690 Offset",
1097       "NegativeOffset_al_r12_r4_minus_2690_Offset",
1098       ARRAY_SIZE(kNegativeOffset),
1099       kNegativeOffset},
1100      {{al, r0, r9, minus, 3041, Offset},
1101       "al r0 r9 minus 3041 Offset",
1102       "NegativeOffset_al_r0_r9_minus_3041_Offset",
1103       ARRAY_SIZE(kNegativeOffset),
1104       kNegativeOffset},
1105      {{al, r8, r6, minus, 732, Offset},
1106       "al r8 r6 minus 732 Offset",
1107       "NegativeOffset_al_r8_r6_minus_732_Offset",
1108       ARRAY_SIZE(kNegativeOffset),
1109       kNegativeOffset},
1110      {{al, r7, r4, minus, 1567, Offset},
1111       "al r7 r4 minus 1567 Offset",
1112       "NegativeOffset_al_r7_r4_minus_1567_Offset",
1113       ARRAY_SIZE(kNegativeOffset),
1114       kNegativeOffset},
1115      {{al, r0, r9, minus, 2036, Offset},
1116       "al r0 r9 minus 2036 Offset",
1117       "NegativeOffset_al_r0_r9_minus_2036_Offset",
1118       ARRAY_SIZE(kNegativeOffset),
1119       kNegativeOffset},
1120      {{al, r7, r9, minus, 618, Offset},
1121       "al r7 r9 minus 618 Offset",
1122       "NegativeOffset_al_r7_r9_minus_618_Offset",
1123       ARRAY_SIZE(kNegativeOffset),
1124       kNegativeOffset},
1125      {{al, r4, r10, minus, 1437, Offset},
1126       "al r4 r10 minus 1437 Offset",
1127       "NegativeOffset_al_r4_r10_minus_1437_Offset",
1128       ARRAY_SIZE(kNegativeOffset),
1129       kNegativeOffset},
1130      {{al, r4, r9, minus, 3105, Offset},
1131       "al r4 r9 minus 3105 Offset",
1132       "NegativeOffset_al_r4_r9_minus_3105_Offset",
1133       ARRAY_SIZE(kNegativeOffset),
1134       kNegativeOffset},
1135      {{al, r5, r6, minus, 1116, Offset},
1136       "al r5 r6 minus 1116 Offset",
1137       "NegativeOffset_al_r5_r6_minus_1116_Offset",
1138       ARRAY_SIZE(kNegativeOffset),
1139       kNegativeOffset},
1140      {{al, r2, r0, minus, 2892, Offset},
1141       "al r2 r0 minus 2892 Offset",
1142       "NegativeOffset_al_r2_r0_minus_2892_Offset",
1143       ARRAY_SIZE(kNegativeOffset),
1144       kNegativeOffset},
1145      {{al, r1, r8, minus, 3069, Offset},
1146       "al r1 r8 minus 3069 Offset",
1147       "NegativeOffset_al_r1_r8_minus_3069_Offset",
1148       ARRAY_SIZE(kNegativeOffset),
1149       kNegativeOffset},
1150      {{al, r3, r2, minus, 1498, Offset},
1151       "al r3 r2 minus 1498 Offset",
1152       "NegativeOffset_al_r3_r2_minus_1498_Offset",
1153       ARRAY_SIZE(kNegativeOffset),
1154       kNegativeOffset},
1155      {{al, r5, r9, minus, 1999, Offset},
1156       "al r5 r9 minus 1999 Offset",
1157       "NegativeOffset_al_r5_r9_minus_1999_Offset",
1158       ARRAY_SIZE(kNegativeOffset),
1159       kNegativeOffset},
1160      {{al, r5, r6, minus, 2588, Offset},
1161       "al r5 r6 minus 2588 Offset",
1162       "NegativeOffset_al_r5_r6_minus_2588_Offset",
1163       ARRAY_SIZE(kNegativeOffset),
1164       kNegativeOffset},
1165      {{al, r5, r12, minus, 2792, Offset},
1166       "al r5 r12 minus 2792 Offset",
1167       "NegativeOffset_al_r5_r12_minus_2792_Offset",
1168       ARRAY_SIZE(kNegativeOffset),
1169       kNegativeOffset},
1170      {{al, r7, r10, minus, 251, Offset},
1171       "al r7 r10 minus 251 Offset",
1172       "NegativeOffset_al_r7_r10_minus_251_Offset",
1173       ARRAY_SIZE(kNegativeOffset),
1174       kNegativeOffset},
1175      {{al, r6, r8, minus, 3696, Offset},
1176       "al r6 r8 minus 3696 Offset",
1177       "NegativeOffset_al_r6_r8_minus_3696_Offset",
1178       ARRAY_SIZE(kNegativeOffset),
1179       kNegativeOffset},
1180      {{al, r7, r6, minus, 3856, Offset},
1181       "al r7 r6 minus 3856 Offset",
1182       "NegativeOffset_al_r7_r6_minus_3856_Offset",
1183       ARRAY_SIZE(kNegativeOffset),
1184       kNegativeOffset},
1185      {{al, r9, r6, minus, 233, Offset},
1186       "al r9 r6 minus 233 Offset",
1187       "NegativeOffset_al_r9_r6_minus_233_Offset",
1188       ARRAY_SIZE(kNegativeOffset),
1189       kNegativeOffset},
1190      {{al, r6, r5, minus, 3366, Offset},
1191       "al r6 r5 minus 3366 Offset",
1192       "NegativeOffset_al_r6_r5_minus_3366_Offset",
1193       ARRAY_SIZE(kNegativeOffset),
1194       kNegativeOffset},
1195      {{al, r8, r3, minus, 2359, Offset},
1196       "al r8 r3 minus 2359 Offset",
1197       "NegativeOffset_al_r8_r3_minus_2359_Offset",
1198       ARRAY_SIZE(kNegativeOffset),
1199       kNegativeOffset},
1200      {{al, r4, r9, minus, 2866, Offset},
1201       "al r4 r9 minus 2866 Offset",
1202       "NegativeOffset_al_r4_r9_minus_2866_Offset",
1203       ARRAY_SIZE(kNegativeOffset),
1204       kNegativeOffset},
1205      {{al, r6, r3, minus, 2381, Offset},
1206       "al r6 r3 minus 2381 Offset",
1207       "NegativeOffset_al_r6_r3_minus_2381_Offset",
1208       ARRAY_SIZE(kNegativeOffset),
1209       kNegativeOffset},
1210      {{al, r5, r3, minus, 3221, Offset},
1211       "al r5 r3 minus 3221 Offset",
1212       "NegativeOffset_al_r5_r3_minus_3221_Offset",
1213       ARRAY_SIZE(kNegativeOffset),
1214       kNegativeOffset},
1215      {{al, r10, r8, minus, 2036, Offset},
1216       "al r10 r8 minus 2036 Offset",
1217       "NegativeOffset_al_r10_r8_minus_2036_Offset",
1218       ARRAY_SIZE(kNegativeOffset),
1219       kNegativeOffset},
1220      {{al, r4, r0, minus, 2591, Offset},
1221       "al r4 r0 minus 2591 Offset",
1222       "NegativeOffset_al_r4_r0_minus_2591_Offset",
1223       ARRAY_SIZE(kNegativeOffset),
1224       kNegativeOffset},
1225      {{al, r4, r10, minus, 2040, Offset},
1226       "al r4 r10 minus 2040 Offset",
1227       "NegativeOffset_al_r4_r10_minus_2040_Offset",
1228       ARRAY_SIZE(kNegativeOffset),
1229       kNegativeOffset},
1230      {{al, r9, r7, minus, 2929, Offset},
1231       "al r9 r7 minus 2929 Offset",
1232       "NegativeOffset_al_r9_r7_minus_2929_Offset",
1233       ARRAY_SIZE(kNegativeOffset),
1234       kNegativeOffset},
1235      {{al, r1, r14, minus, 1867, Offset},
1236       "al r1 r14 minus 1867 Offset",
1237       "NegativeOffset_al_r1_r14_minus_1867_Offset",
1238       ARRAY_SIZE(kNegativeOffset),
1239       kNegativeOffset},
1240      {{al, r9, r0, minus, 2945, Offset},
1241       "al r9 r0 minus 2945 Offset",
1242       "NegativeOffset_al_r9_r0_minus_2945_Offset",
1243       ARRAY_SIZE(kNegativeOffset),
1244       kNegativeOffset},
1245      {{al, r14, r3, minus, 2403, Offset},
1246       "al r14 r3 minus 2403 Offset",
1247       "NegativeOffset_al_r14_r3_minus_2403_Offset",
1248       ARRAY_SIZE(kNegativeOffset),
1249       kNegativeOffset},
1250      {{al, r12, r8, minus, 1999, Offset},
1251       "al r12 r8 minus 1999 Offset",
1252       "NegativeOffset_al_r12_r8_minus_1999_Offset",
1253       ARRAY_SIZE(kNegativeOffset),
1254       kNegativeOffset},
1255      {{al, r9, r5, minus, 3994, Offset},
1256       "al r9 r5 minus 3994 Offset",
1257       "NegativeOffset_al_r9_r5_minus_3994_Offset",
1258       ARRAY_SIZE(kNegativeOffset),
1259       kNegativeOffset},
1260      {{al, r14, r3, minus, 2180, Offset},
1261       "al r14 r3 minus 2180 Offset",
1262       "NegativeOffset_al_r14_r3_minus_2180_Offset",
1263       ARRAY_SIZE(kNegativeOffset),
1264       kNegativeOffset},
1265      {{al, r1, r5, minus, 3914, Offset},
1266       "al r1 r5 minus 3914 Offset",
1267       "NegativeOffset_al_r1_r5_minus_3914_Offset",
1268       ARRAY_SIZE(kNegativeOffset),
1269       kNegativeOffset},
1270      {{al, r4, r10, minus, 3079, Offset},
1271       "al r4 r10 minus 3079 Offset",
1272       "NegativeOffset_al_r4_r10_minus_3079_Offset",
1273       ARRAY_SIZE(kNegativeOffset),
1274       kNegativeOffset},
1275      {{al, r8, r14, minus, 3266, Offset},
1276       "al r8 r14 minus 3266 Offset",
1277       "NegativeOffset_al_r8_r14_minus_3266_Offset",
1278       ARRAY_SIZE(kNegativeOffset),
1279       kNegativeOffset},
1280      {{al, r4, r11, minus, 1732, Offset},
1281       "al r4 r11 minus 1732 Offset",
1282       "NegativeOffset_al_r4_r11_minus_1732_Offset",
1283       ARRAY_SIZE(kNegativeOffset),
1284       kNegativeOffset},
1285      {{al, r11, r5, minus, 806, Offset},
1286       "al r11 r5 minus 806 Offset",
1287       "NegativeOffset_al_r11_r5_minus_806_Offset",
1288       ARRAY_SIZE(kNegativeOffset),
1289       kNegativeOffset},
1290      {{al, r9, r7, minus, 3039, Offset},
1291       "al r9 r7 minus 3039 Offset",
1292       "NegativeOffset_al_r9_r7_minus_3039_Offset",
1293       ARRAY_SIZE(kNegativeOffset),
1294       kNegativeOffset},
1295      {{al, r12, r9, minus, 2453, Offset},
1296       "al r12 r9 minus 2453 Offset",
1297       "NegativeOffset_al_r12_r9_minus_2453_Offset",
1298       ARRAY_SIZE(kNegativeOffset),
1299       kNegativeOffset},
1300      {{al, r0, r7, minus, 3626, Offset},
1301       "al r0 r7 minus 3626 Offset",
1302       "NegativeOffset_al_r0_r7_minus_3626_Offset",
1303       ARRAY_SIZE(kNegativeOffset),
1304       kNegativeOffset},
1305      {{al, r3, r11, minus, 1981, Offset},
1306       "al r3 r11 minus 1981 Offset",
1307       "NegativeOffset_al_r3_r11_minus_1981_Offset",
1308       ARRAY_SIZE(kNegativeOffset),
1309       kNegativeOffset},
1310      {{al, r2, r8, minus, 3082, Offset},
1311       "al r2 r8 minus 3082 Offset",
1312       "NegativeOffset_al_r2_r8_minus_3082_Offset",
1313       ARRAY_SIZE(kNegativeOffset),
1314       kNegativeOffset},
1315      {{al, r1, r11, minus, 3608, Offset},
1316       "al r1 r11 minus 3608 Offset",
1317       "NegativeOffset_al_r1_r11_minus_3608_Offset",
1318       ARRAY_SIZE(kNegativeOffset),
1319       kNegativeOffset},
1320      {{al, r5, r11, minus, 3391, Offset},
1321       "al r5 r11 minus 3391 Offset",
1322       "NegativeOffset_al_r5_r11_minus_3391_Offset",
1323       ARRAY_SIZE(kNegativeOffset),
1324       kNegativeOffset},
1325      {{al, r7, r12, minus, 872, Offset},
1326       "al r7 r12 minus 872 Offset",
1327       "NegativeOffset_al_r7_r12_minus_872_Offset",
1328       ARRAY_SIZE(kNegativeOffset),
1329       kNegativeOffset},
1330      {{al, r14, r11, plus, 1506, PostIndex},
1331       "al r14 r11 plus 1506 PostIndex",
1332       "PositivePostIndex_al_r14_r11_plus_1506_PostIndex",
1333       ARRAY_SIZE(kPositivePostIndex),
1334       kPositivePostIndex},
1335      {{al, r7, r14, plus, 3399, PostIndex},
1336       "al r7 r14 plus 3399 PostIndex",
1337       "PositivePostIndex_al_r7_r14_plus_3399_PostIndex",
1338       ARRAY_SIZE(kPositivePostIndex),
1339       kPositivePostIndex},
1340      {{al, r11, r6, plus, 2588, PostIndex},
1341       "al r11 r6 plus 2588 PostIndex",
1342       "PositivePostIndex_al_r11_r6_plus_2588_PostIndex",
1343       ARRAY_SIZE(kPositivePostIndex),
1344       kPositivePostIndex},
1345      {{al, r4, r9, plus, 2906, PostIndex},
1346       "al r4 r9 plus 2906 PostIndex",
1347       "PositivePostIndex_al_r4_r9_plus_2906_PostIndex",
1348       ARRAY_SIZE(kPositivePostIndex),
1349       kPositivePostIndex},
1350      {{al, r4, r8, plus, 1916, PostIndex},
1351       "al r4 r8 plus 1916 PostIndex",
1352       "PositivePostIndex_al_r4_r8_plus_1916_PostIndex",
1353       ARRAY_SIZE(kPositivePostIndex),
1354       kPositivePostIndex},
1355      {{al, r6, r0, plus, 1835, PostIndex},
1356       "al r6 r0 plus 1835 PostIndex",
1357       "PositivePostIndex_al_r6_r0_plus_1835_PostIndex",
1358       ARRAY_SIZE(kPositivePostIndex),
1359       kPositivePostIndex},
1360      {{al, r1, r14, plus, 2984, PostIndex},
1361       "al r1 r14 plus 2984 PostIndex",
1362       "PositivePostIndex_al_r1_r14_plus_2984_PostIndex",
1363       ARRAY_SIZE(kPositivePostIndex),
1364       kPositivePostIndex},
1365      {{al, r9, r12, plus, 3994, PostIndex},
1366       "al r9 r12 plus 3994 PostIndex",
1367       "PositivePostIndex_al_r9_r12_plus_3994_PostIndex",
1368       ARRAY_SIZE(kPositivePostIndex),
1369       kPositivePostIndex},
1370      {{al, r10, r5, plus, 766, PostIndex},
1371       "al r10 r5 plus 766 PostIndex",
1372       "PositivePostIndex_al_r10_r5_plus_766_PostIndex",
1373       ARRAY_SIZE(kPositivePostIndex),
1374       kPositivePostIndex},
1375      {{al, r5, r9, plus, 188, PostIndex},
1376       "al r5 r9 plus 188 PostIndex",
1377       "PositivePostIndex_al_r5_r9_plus_188_PostIndex",
1378       ARRAY_SIZE(kPositivePostIndex),
1379       kPositivePostIndex},
1380      {{al, r11, r14, plus, 479, PostIndex},
1381       "al r11 r14 plus 479 PostIndex",
1382       "PositivePostIndex_al_r11_r14_plus_479_PostIndex",
1383       ARRAY_SIZE(kPositivePostIndex),
1384       kPositivePostIndex},
1385      {{al, r6, r14, plus, 2797, PostIndex},
1386       "al r6 r14 plus 2797 PostIndex",
1387       "PositivePostIndex_al_r6_r14_plus_2797_PostIndex",
1388       ARRAY_SIZE(kPositivePostIndex),
1389       kPositivePostIndex},
1390      {{al, r5, r8, plus, 3170, PostIndex},
1391       "al r5 r8 plus 3170 PostIndex",
1392       "PositivePostIndex_al_r5_r8_plus_3170_PostIndex",
1393       ARRAY_SIZE(kPositivePostIndex),
1394       kPositivePostIndex},
1395      {{al, r0, r2, plus, 663, PostIndex},
1396       "al r0 r2 plus 663 PostIndex",
1397       "PositivePostIndex_al_r0_r2_plus_663_PostIndex",
1398       ARRAY_SIZE(kPositivePostIndex),
1399       kPositivePostIndex},
1400      {{al, r14, r0, plus, 1097, PostIndex},
1401       "al r14 r0 plus 1097 PostIndex",
1402       "PositivePostIndex_al_r14_r0_plus_1097_PostIndex",
1403       ARRAY_SIZE(kPositivePostIndex),
1404       kPositivePostIndex},
1405      {{al, r0, r7, plus, 3481, PostIndex},
1406       "al r0 r7 plus 3481 PostIndex",
1407       "PositivePostIndex_al_r0_r7_plus_3481_PostIndex",
1408       ARRAY_SIZE(kPositivePostIndex),
1409       kPositivePostIndex},
1410      {{al, r5, r2, plus, 2183, PostIndex},
1411       "al r5 r2 plus 2183 PostIndex",
1412       "PositivePostIndex_al_r5_r2_plus_2183_PostIndex",
1413       ARRAY_SIZE(kPositivePostIndex),
1414       kPositivePostIndex},
1415      {{al, r7, r4, plus, 1948, PostIndex},
1416       "al r7 r4 plus 1948 PostIndex",
1417       "PositivePostIndex_al_r7_r4_plus_1948_PostIndex",
1418       ARRAY_SIZE(kPositivePostIndex),
1419       kPositivePostIndex},
1420      {{al, r3, r12, plus, 2047, PostIndex},
1421       "al r3 r12 plus 2047 PostIndex",
1422       "PositivePostIndex_al_r3_r12_plus_2047_PostIndex",
1423       ARRAY_SIZE(kPositivePostIndex),
1424       kPositivePostIndex},
1425      {{al, r4, r0, plus, 2451, PostIndex},
1426       "al r4 r0 plus 2451 PostIndex",
1427       "PositivePostIndex_al_r4_r0_plus_2451_PostIndex",
1428       ARRAY_SIZE(kPositivePostIndex),
1429       kPositivePostIndex},
1430      {{al, r1, r4, plus, 3057, PostIndex},
1431       "al r1 r4 plus 3057 PostIndex",
1432       "PositivePostIndex_al_r1_r4_plus_3057_PostIndex",
1433       ARRAY_SIZE(kPositivePostIndex),
1434       kPositivePostIndex},
1435      {{al, r6, r9, plus, 3308, PostIndex},
1436       "al r6 r9 plus 3308 PostIndex",
1437       "PositivePostIndex_al_r6_r9_plus_3308_PostIndex",
1438       ARRAY_SIZE(kPositivePostIndex),
1439       kPositivePostIndex},
1440      {{al, r0, r14, plus, 2677, PostIndex},
1441       "al r0 r14 plus 2677 PostIndex",
1442       "PositivePostIndex_al_r0_r14_plus_2677_PostIndex",
1443       ARRAY_SIZE(kPositivePostIndex),
1444       kPositivePostIndex},
1445      {{al, r3, r1, plus, 1601, PostIndex},
1446       "al r3 r1 plus 1601 PostIndex",
1447       "PositivePostIndex_al_r3_r1_plus_1601_PostIndex",
1448       ARRAY_SIZE(kPositivePostIndex),
1449       kPositivePostIndex},
1450      {{al, r2, r1, plus, 662, PostIndex},
1451       "al r2 r1 plus 662 PostIndex",
1452       "PositivePostIndex_al_r2_r1_plus_662_PostIndex",
1453       ARRAY_SIZE(kPositivePostIndex),
1454       kPositivePostIndex},
1455      {{al, r3, r2, plus, 1485, PostIndex},
1456       "al r3 r2 plus 1485 PostIndex",
1457       "PositivePostIndex_al_r3_r2_plus_1485_PostIndex",
1458       ARRAY_SIZE(kPositivePostIndex),
1459       kPositivePostIndex},
1460      {{al, r7, r3, plus, 3413, PostIndex},
1461       "al r7 r3 plus 3413 PostIndex",
1462       "PositivePostIndex_al_r7_r3_plus_3413_PostIndex",
1463       ARRAY_SIZE(kPositivePostIndex),
1464       kPositivePostIndex},
1465      {{al, r9, r4, plus, 2175, PostIndex},
1466       "al r9 r4 plus 2175 PostIndex",
1467       "PositivePostIndex_al_r9_r4_plus_2175_PostIndex",
1468       ARRAY_SIZE(kPositivePostIndex),
1469       kPositivePostIndex},
1470      {{al, r1, r2, plus, 3517, PostIndex},
1471       "al r1 r2 plus 3517 PostIndex",
1472       "PositivePostIndex_al_r1_r2_plus_3517_PostIndex",
1473       ARRAY_SIZE(kPositivePostIndex),
1474       kPositivePostIndex},
1475      {{al, r8, r6, plus, 2535, PostIndex},
1476       "al r8 r6 plus 2535 PostIndex",
1477       "PositivePostIndex_al_r8_r6_plus_2535_PostIndex",
1478       ARRAY_SIZE(kPositivePostIndex),
1479       kPositivePostIndex},
1480      {{al, r12, r2, plus, 2982, PostIndex},
1481       "al r12 r2 plus 2982 PostIndex",
1482       "PositivePostIndex_al_r12_r2_plus_2982_PostIndex",
1483       ARRAY_SIZE(kPositivePostIndex),
1484       kPositivePostIndex},
1485      {{al, r0, r5, plus, 1867, PostIndex},
1486       "al r0 r5 plus 1867 PostIndex",
1487       "PositivePostIndex_al_r0_r5_plus_1867_PostIndex",
1488       ARRAY_SIZE(kPositivePostIndex),
1489       kPositivePostIndex},
1490      {{al, r11, r1, plus, 3209, PostIndex},
1491       "al r11 r1 plus 3209 PostIndex",
1492       "PositivePostIndex_al_r11_r1_plus_3209_PostIndex",
1493       ARRAY_SIZE(kPositivePostIndex),
1494       kPositivePostIndex},
1495      {{al, r6, r10, plus, 977, PostIndex},
1496       "al r6 r10 plus 977 PostIndex",
1497       "PositivePostIndex_al_r6_r10_plus_977_PostIndex",
1498       ARRAY_SIZE(kPositivePostIndex),
1499       kPositivePostIndex},
1500      {{al, r0, r5, plus, 3239, PostIndex},
1501       "al r0 r5 plus 3239 PostIndex",
1502       "PositivePostIndex_al_r0_r5_plus_3239_PostIndex",
1503       ARRAY_SIZE(kPositivePostIndex),
1504       kPositivePostIndex},
1505      {{al, r7, r0, plus, 1808, PostIndex},
1506       "al r7 r0 plus 1808 PostIndex",
1507       "PositivePostIndex_al_r7_r0_plus_1808_PostIndex",
1508       ARRAY_SIZE(kPositivePostIndex),
1509       kPositivePostIndex},
1510      {{al, r6, r7, plus, 3787, PostIndex},
1511       "al r6 r7 plus 3787 PostIndex",
1512       "PositivePostIndex_al_r6_r7_plus_3787_PostIndex",
1513       ARRAY_SIZE(kPositivePostIndex),
1514       kPositivePostIndex},
1515      {{al, r4, r7, plus, 678, PostIndex},
1516       "al r4 r7 plus 678 PostIndex",
1517       "PositivePostIndex_al_r4_r7_plus_678_PostIndex",
1518       ARRAY_SIZE(kPositivePostIndex),
1519       kPositivePostIndex},
1520      {{al, r7, r9, plus, 4090, PostIndex},
1521       "al r7 r9 plus 4090 PostIndex",
1522       "PositivePostIndex_al_r7_r9_plus_4090_PostIndex",
1523       ARRAY_SIZE(kPositivePostIndex),
1524       kPositivePostIndex},
1525      {{al, r0, r2, plus, 1438, PostIndex},
1526       "al r0 r2 plus 1438 PostIndex",
1527       "PositivePostIndex_al_r0_r2_plus_1438_PostIndex",
1528       ARRAY_SIZE(kPositivePostIndex),
1529       kPositivePostIndex},
1530      {{al, r2, r5, plus, 3195, PostIndex},
1531       "al r2 r5 plus 3195 PostIndex",
1532       "PositivePostIndex_al_r2_r5_plus_3195_PostIndex",
1533       ARRAY_SIZE(kPositivePostIndex),
1534       kPositivePostIndex},
1535      {{al, r8, r2, plus, 1922, PostIndex},
1536       "al r8 r2 plus 1922 PostIndex",
1537       "PositivePostIndex_al_r8_r2_plus_1922_PostIndex",
1538       ARRAY_SIZE(kPositivePostIndex),
1539       kPositivePostIndex},
1540      {{al, r8, r1, plus, 4095, PostIndex},
1541       "al r8 r1 plus 4095 PostIndex",
1542       "PositivePostIndex_al_r8_r1_plus_4095_PostIndex",
1543       ARRAY_SIZE(kPositivePostIndex),
1544       kPositivePostIndex},
1545      {{al, r1, r9, plus, 1261, PostIndex},
1546       "al r1 r9 plus 1261 PostIndex",
1547       "PositivePostIndex_al_r1_r9_plus_1261_PostIndex",
1548       ARRAY_SIZE(kPositivePostIndex),
1549       kPositivePostIndex},
1550      {{al, r12, r11, plus, 2718, PostIndex},
1551       "al r12 r11 plus 2718 PostIndex",
1552       "PositivePostIndex_al_r12_r11_plus_2718_PostIndex",
1553       ARRAY_SIZE(kPositivePostIndex),
1554       kPositivePostIndex},
1555      {{al, r9, r0, plus, 132, PostIndex},
1556       "al r9 r0 plus 132 PostIndex",
1557       "PositivePostIndex_al_r9_r0_plus_132_PostIndex",
1558       ARRAY_SIZE(kPositivePostIndex),
1559       kPositivePostIndex},
1560      {{al, r11, r5, plus, 1601, PostIndex},
1561       "al r11 r5 plus 1601 PostIndex",
1562       "PositivePostIndex_al_r11_r5_plus_1601_PostIndex",
1563       ARRAY_SIZE(kPositivePostIndex),
1564       kPositivePostIndex},
1565      {{al, r14, r4, plus, 19, PostIndex},
1566       "al r14 r4 plus 19 PostIndex",
1567       "PositivePostIndex_al_r14_r4_plus_19_PostIndex",
1568       ARRAY_SIZE(kPositivePostIndex),
1569       kPositivePostIndex},
1570      {{al, r6, r0, plus, 386, PostIndex},
1571       "al r6 r0 plus 386 PostIndex",
1572       "PositivePostIndex_al_r6_r0_plus_386_PostIndex",
1573       ARRAY_SIZE(kPositivePostIndex),
1574       kPositivePostIndex},
1575      {{al, r14, r2, plus, 672, PostIndex},
1576       "al r14 r2 plus 672 PostIndex",
1577       "PositivePostIndex_al_r14_r2_plus_672_PostIndex",
1578       ARRAY_SIZE(kPositivePostIndex),
1579       kPositivePostIndex},
1580      {{al, r1, r10, plus, 3626, PostIndex},
1581       "al r1 r10 plus 3626 PostIndex",
1582       "PositivePostIndex_al_r1_r10_plus_3626_PostIndex",
1583       ARRAY_SIZE(kPositivePostIndex),
1584       kPositivePostIndex},
1585      {{al, r9, r14, plus, 2813, PostIndex},
1586       "al r9 r14 plus 2813 PostIndex",
1587       "PositivePostIndex_al_r9_r14_plus_2813_PostIndex",
1588       ARRAY_SIZE(kPositivePostIndex),
1589       kPositivePostIndex},
1590      {{al, r9, r3, plus, 2091, PostIndex},
1591       "al r9 r3 plus 2091 PostIndex",
1592       "PositivePostIndex_al_r9_r3_plus_2091_PostIndex",
1593       ARRAY_SIZE(kPositivePostIndex),
1594       kPositivePostIndex},
1595      {{al, r5, r3, plus, 932, PostIndex},
1596       "al r5 r3 plus 932 PostIndex",
1597       "PositivePostIndex_al_r5_r3_plus_932_PostIndex",
1598       ARRAY_SIZE(kPositivePostIndex),
1599       kPositivePostIndex},
1600      {{al, r0, r8, plus, 970, PostIndex},
1601       "al r0 r8 plus 970 PostIndex",
1602       "PositivePostIndex_al_r0_r8_plus_970_PostIndex",
1603       ARRAY_SIZE(kPositivePostIndex),
1604       kPositivePostIndex},
1605      {{al, r0, r5, plus, 3610, PostIndex},
1606       "al r0 r5 plus 3610 PostIndex",
1607       "PositivePostIndex_al_r0_r5_plus_3610_PostIndex",
1608       ARRAY_SIZE(kPositivePostIndex),
1609       kPositivePostIndex},
1610      {{al, r1, r5, plus, 2180, PostIndex},
1611       "al r1 r5 plus 2180 PostIndex",
1612       "PositivePostIndex_al_r1_r5_plus_2180_PostIndex",
1613       ARRAY_SIZE(kPositivePostIndex),
1614       kPositivePostIndex},
1615      {{al, r9, r6, plus, 3397, PostIndex},
1616       "al r9 r6 plus 3397 PostIndex",
1617       "PositivePostIndex_al_r9_r6_plus_3397_PostIndex",
1618       ARRAY_SIZE(kPositivePostIndex),
1619       kPositivePostIndex},
1620      {{al, r14, r8, plus, 3063, PostIndex},
1621       "al r14 r8 plus 3063 PostIndex",
1622       "PositivePostIndex_al_r14_r8_plus_3063_PostIndex",
1623       ARRAY_SIZE(kPositivePostIndex),
1624       kPositivePostIndex},
1625      {{al, r10, r3, plus, 3028, PostIndex},
1626       "al r10 r3 plus 3028 PostIndex",
1627       "PositivePostIndex_al_r10_r3_plus_3028_PostIndex",
1628       ARRAY_SIZE(kPositivePostIndex),
1629       kPositivePostIndex},
1630      {{al, r7, r4, plus, 1099, PostIndex},
1631       "al r7 r4 plus 1099 PostIndex",
1632       "PositivePostIndex_al_r7_r4_plus_1099_PostIndex",
1633       ARRAY_SIZE(kPositivePostIndex),
1634       kPositivePostIndex},
1635      {{al, r2, r5, plus, 2175, PostIndex},
1636       "al r2 r5 plus 2175 PostIndex",
1637       "PositivePostIndex_al_r2_r5_plus_2175_PostIndex",
1638       ARRAY_SIZE(kPositivePostIndex),
1639       kPositivePostIndex},
1640      {{al, r8, r12, plus, 3221, PostIndex},
1641       "al r8 r12 plus 3221 PostIndex",
1642       "PositivePostIndex_al_r8_r12_plus_3221_PostIndex",
1643       ARRAY_SIZE(kPositivePostIndex),
1644       kPositivePostIndex},
1645      {{al, r4, r1, plus, 2475, PostIndex},
1646       "al r4 r1 plus 2475 PostIndex",
1647       "PositivePostIndex_al_r4_r1_plus_2475_PostIndex",
1648       ARRAY_SIZE(kPositivePostIndex),
1649       kPositivePostIndex},
1650      {{al, r9, r11, plus, 1009, PostIndex},
1651       "al r9 r11 plus 1009 PostIndex",
1652       "PositivePostIndex_al_r9_r11_plus_1009_PostIndex",
1653       ARRAY_SIZE(kPositivePostIndex),
1654       kPositivePostIndex},
1655      {{al, r9, r1, plus, 1526, PostIndex},
1656       "al r9 r1 plus 1526 PostIndex",
1657       "PositivePostIndex_al_r9_r1_plus_1526_PostIndex",
1658       ARRAY_SIZE(kPositivePostIndex),
1659       kPositivePostIndex},
1660      {{al, r2, r11, plus, 282, PostIndex},
1661       "al r2 r11 plus 282 PostIndex",
1662       "PositivePostIndex_al_r2_r11_plus_282_PostIndex",
1663       ARRAY_SIZE(kPositivePostIndex),
1664       kPositivePostIndex},
1665      {{al, r10, r11, plus, 3583, PostIndex},
1666       "al r10 r11 plus 3583 PostIndex",
1667       "PositivePostIndex_al_r10_r11_plus_3583_PostIndex",
1668       ARRAY_SIZE(kPositivePostIndex),
1669       kPositivePostIndex},
1670      {{al, r11, r6, plus, 3209, PostIndex},
1671       "al r11 r6 plus 3209 PostIndex",
1672       "PositivePostIndex_al_r11_r6_plus_3209_PostIndex",
1673       ARRAY_SIZE(kPositivePostIndex),
1674       kPositivePostIndex},
1675      {{al, r7, r8, plus, 1736, PostIndex},
1676       "al r7 r8 plus 1736 PostIndex",
1677       "PositivePostIndex_al_r7_r8_plus_1736_PostIndex",
1678       ARRAY_SIZE(kPositivePostIndex),
1679       kPositivePostIndex},
1680      {{al, r3, r8, plus, 1542, PostIndex},
1681       "al r3 r8 plus 1542 PostIndex",
1682       "PositivePostIndex_al_r3_r8_plus_1542_PostIndex",
1683       ARRAY_SIZE(kPositivePostIndex),
1684       kPositivePostIndex},
1685      {{al, r14, r4, plus, 180, PostIndex},
1686       "al r14 r4 plus 180 PostIndex",
1687       "PositivePostIndex_al_r14_r4_plus_180_PostIndex",
1688       ARRAY_SIZE(kPositivePostIndex),
1689       kPositivePostIndex},
1690      {{al, r1, r5, plus, 3076, PostIndex},
1691       "al r1 r5 plus 3076 PostIndex",
1692       "PositivePostIndex_al_r1_r5_plus_3076_PostIndex",
1693       ARRAY_SIZE(kPositivePostIndex),
1694       kPositivePostIndex},
1695      {{al, r8, r2, plus, 2541, PostIndex},
1696       "al r8 r2 plus 2541 PostIndex",
1697       "PositivePostIndex_al_r8_r2_plus_2541_PostIndex",
1698       ARRAY_SIZE(kPositivePostIndex),
1699       kPositivePostIndex},
1700      {{al, r4, r2, plus, 2946, PostIndex},
1701       "al r4 r2 plus 2946 PostIndex",
1702       "PositivePostIndex_al_r4_r2_plus_2946_PostIndex",
1703       ARRAY_SIZE(kPositivePostIndex),
1704       kPositivePostIndex},
1705      {{al, r1, r6, plus, 3743, PostIndex},
1706       "al r1 r6 plus 3743 PostIndex",
1707       "PositivePostIndex_al_r1_r6_plus_3743_PostIndex",
1708       ARRAY_SIZE(kPositivePostIndex),
1709       kPositivePostIndex},
1710      {{al, r2, r8, plus, 3907, PostIndex},
1711       "al r2 r8 plus 3907 PostIndex",
1712       "PositivePostIndex_al_r2_r8_plus_3907_PostIndex",
1713       ARRAY_SIZE(kPositivePostIndex),
1714       kPositivePostIndex},
1715      {{al, r3, r9, plus, 791, PostIndex},
1716       "al r3 r9 plus 791 PostIndex",
1717       "PositivePostIndex_al_r3_r9_plus_791_PostIndex",
1718       ARRAY_SIZE(kPositivePostIndex),
1719       kPositivePostIndex},
1720      {{al, r12, r5, plus, 3636, PostIndex},
1721       "al r12 r5 plus 3636 PostIndex",
1722       "PositivePostIndex_al_r12_r5_plus_3636_PostIndex",
1723       ARRAY_SIZE(kPositivePostIndex),
1724       kPositivePostIndex},
1725      {{al, r0, r12, plus, 2545, PostIndex},
1726       "al r0 r12 plus 2545 PostIndex",
1727       "PositivePostIndex_al_r0_r12_plus_2545_PostIndex",
1728       ARRAY_SIZE(kPositivePostIndex),
1729       kPositivePostIndex},
1730      {{al, r12, r5, plus, 3450, PostIndex},
1731       "al r12 r5 plus 3450 PostIndex",
1732       "PositivePostIndex_al_r12_r5_plus_3450_PostIndex",
1733       ARRAY_SIZE(kPositivePostIndex),
1734       kPositivePostIndex},
1735      {{al, r1, r5, plus, 1712, PostIndex},
1736       "al r1 r5 plus 1712 PostIndex",
1737       "PositivePostIndex_al_r1_r5_plus_1712_PostIndex",
1738       ARRAY_SIZE(kPositivePostIndex),
1739       kPositivePostIndex},
1740      {{al, r6, r11, plus, 2665, PostIndex},
1741       "al r6 r11 plus 2665 PostIndex",
1742       "PositivePostIndex_al_r6_r11_plus_2665_PostIndex",
1743       ARRAY_SIZE(kPositivePostIndex),
1744       kPositivePostIndex},
1745      {{al, r10, r8, plus, 3450, PostIndex},
1746       "al r10 r8 plus 3450 PostIndex",
1747       "PositivePostIndex_al_r10_r8_plus_3450_PostIndex",
1748       ARRAY_SIZE(kPositivePostIndex),
1749       kPositivePostIndex},
1750      {{al, r8, r9, plus, 386, PostIndex},
1751       "al r8 r9 plus 386 PostIndex",
1752       "PositivePostIndex_al_r8_r9_plus_386_PostIndex",
1753       ARRAY_SIZE(kPositivePostIndex),
1754       kPositivePostIndex},
1755      {{al, r12, r0, plus, 2462, PostIndex},
1756       "al r12 r0 plus 2462 PostIndex",
1757       "PositivePostIndex_al_r12_r0_plus_2462_PostIndex",
1758       ARRAY_SIZE(kPositivePostIndex),
1759       kPositivePostIndex},
1760      {{al, r4, r1, plus, 3313, PostIndex},
1761       "al r4 r1 plus 3313 PostIndex",
1762       "PositivePostIndex_al_r4_r1_plus_3313_PostIndex",
1763       ARRAY_SIZE(kPositivePostIndex),
1764       kPositivePostIndex},
1765      {{al, r5, r1, plus, 4093, PostIndex},
1766       "al r5 r1 plus 4093 PostIndex",
1767       "PositivePostIndex_al_r5_r1_plus_4093_PostIndex",
1768       ARRAY_SIZE(kPositivePostIndex),
1769       kPositivePostIndex},
1770      {{al, r5, r6, plus, 3287, PostIndex},
1771       "al r5 r6 plus 3287 PostIndex",
1772       "PositivePostIndex_al_r5_r6_plus_3287_PostIndex",
1773       ARRAY_SIZE(kPositivePostIndex),
1774       kPositivePostIndex},
1775      {{al, r2, r14, plus, 48, PostIndex},
1776       "al r2 r14 plus 48 PostIndex",
1777       "PositivePostIndex_al_r2_r14_plus_48_PostIndex",
1778       ARRAY_SIZE(kPositivePostIndex),
1779       kPositivePostIndex},
1780      {{al, r12, r0, plus, 484, PostIndex},
1781       "al r12 r0 plus 484 PostIndex",
1782       "PositivePostIndex_al_r12_r0_plus_484_PostIndex",
1783       ARRAY_SIZE(kPositivePostIndex),
1784       kPositivePostIndex},
1785      {{al, r10, r9, plus, 1505, PostIndex},
1786       "al r10 r9 plus 1505 PostIndex",
1787       "PositivePostIndex_al_r10_r9_plus_1505_PostIndex",
1788       ARRAY_SIZE(kPositivePostIndex),
1789       kPositivePostIndex},
1790      {{al, r12, r11, plus, 2464, PostIndex},
1791       "al r12 r11 plus 2464 PostIndex",
1792       "PositivePostIndex_al_r12_r11_plus_2464_PostIndex",
1793       ARRAY_SIZE(kPositivePostIndex),
1794       kPositivePostIndex},
1795      {{al, r0, r5, plus, 4076, PostIndex},
1796       "al r0 r5 plus 4076 PostIndex",
1797       "PositivePostIndex_al_r0_r5_plus_4076_PostIndex",
1798       ARRAY_SIZE(kPositivePostIndex),
1799       kPositivePostIndex},
1800      {{al, r8, r12, plus, 2326, PostIndex},
1801       "al r8 r12 plus 2326 PostIndex",
1802       "PositivePostIndex_al_r8_r12_plus_2326_PostIndex",
1803       ARRAY_SIZE(kPositivePostIndex),
1804       kPositivePostIndex},
1805      {{al, r9, r7, plus, 2025, PostIndex},
1806       "al r9 r7 plus 2025 PostIndex",
1807       "PositivePostIndex_al_r9_r7_plus_2025_PostIndex",
1808       ARRAY_SIZE(kPositivePostIndex),
1809       kPositivePostIndex},
1810      {{al, r14, r3, plus, 831, PostIndex},
1811       "al r14 r3 plus 831 PostIndex",
1812       "PositivePostIndex_al_r14_r3_plus_831_PostIndex",
1813       ARRAY_SIZE(kPositivePostIndex),
1814       kPositivePostIndex},
1815      {{al, r8, r2, plus, 136, PostIndex},
1816       "al r8 r2 plus 136 PostIndex",
1817       "PositivePostIndex_al_r8_r2_plus_136_PostIndex",
1818       ARRAY_SIZE(kPositivePostIndex),
1819       kPositivePostIndex},
1820      {{al, r11, r4, plus, 774, PostIndex},
1821       "al r11 r4 plus 774 PostIndex",
1822       "PositivePostIndex_al_r11_r4_plus_774_PostIndex",
1823       ARRAY_SIZE(kPositivePostIndex),
1824       kPositivePostIndex},
1825      {{al, r5, r10, plus, 2395, PostIndex},
1826       "al r5 r10 plus 2395 PostIndex",
1827       "PositivePostIndex_al_r5_r10_plus_2395_PostIndex",
1828       ARRAY_SIZE(kPositivePostIndex),
1829       kPositivePostIndex},
1830      {{al, r10, r1, minus, 2642, PostIndex},
1831       "al r10 r1 minus 2642 PostIndex",
1832       "NegativePostIndex_al_r10_r1_minus_2642_PostIndex",
1833       ARRAY_SIZE(kNegativePostIndex),
1834       kNegativePostIndex},
1835      {{al, r8, r6, minus, 4093, PostIndex},
1836       "al r8 r6 minus 4093 PostIndex",
1837       "NegativePostIndex_al_r8_r6_minus_4093_PostIndex",
1838       ARRAY_SIZE(kNegativePostIndex),
1839       kNegativePostIndex},
1840      {{al, r2, r11, minus, 3162, PostIndex},
1841       "al r2 r11 minus 3162 PostIndex",
1842       "NegativePostIndex_al_r2_r11_minus_3162_PostIndex",
1843       ARRAY_SIZE(kNegativePostIndex),
1844       kNegativePostIndex},
1845      {{al, r2, r8, minus, 2311, PostIndex},
1846       "al r2 r8 minus 2311 PostIndex",
1847       "NegativePostIndex_al_r2_r8_minus_2311_PostIndex",
1848       ARRAY_SIZE(kNegativePostIndex),
1849       kNegativePostIndex},
1850      {{al, r11, r5, minus, 806, PostIndex},
1851       "al r11 r5 minus 806 PostIndex",
1852       "NegativePostIndex_al_r11_r5_minus_806_PostIndex",
1853       ARRAY_SIZE(kNegativePostIndex),
1854       kNegativePostIndex},
1855      {{al, r14, r11, minus, 2628, PostIndex},
1856       "al r14 r11 minus 2628 PostIndex",
1857       "NegativePostIndex_al_r14_r11_minus_2628_PostIndex",
1858       ARRAY_SIZE(kNegativePostIndex),
1859       kNegativePostIndex},
1860      {{al, r0, r10, minus, 672, PostIndex},
1861       "al r0 r10 minus 672 PostIndex",
1862       "NegativePostIndex_al_r0_r10_minus_672_PostIndex",
1863       ARRAY_SIZE(kNegativePostIndex),
1864       kNegativePostIndex},
1865      {{al, r12, r4, minus, 2619, PostIndex},
1866       "al r12 r4 minus 2619 PostIndex",
1867       "NegativePostIndex_al_r12_r4_minus_2619_PostIndex",
1868       ARRAY_SIZE(kNegativePostIndex),
1869       kNegativePostIndex},
1870      {{al, r11, r8, minus, 1035, PostIndex},
1871       "al r11 r8 minus 1035 PostIndex",
1872       "NegativePostIndex_al_r11_r8_minus_1035_PostIndex",
1873       ARRAY_SIZE(kNegativePostIndex),
1874       kNegativePostIndex},
1875      {{al, r9, r7, minus, 3771, PostIndex},
1876       "al r9 r7 minus 3771 PostIndex",
1877       "NegativePostIndex_al_r9_r7_minus_3771_PostIndex",
1878       ARRAY_SIZE(kNegativePostIndex),
1879       kNegativePostIndex},
1880      {{al, r0, r10, minus, 1372, PostIndex},
1881       "al r0 r10 minus 1372 PostIndex",
1882       "NegativePostIndex_al_r0_r10_minus_1372_PostIndex",
1883       ARRAY_SIZE(kNegativePostIndex),
1884       kNegativePostIndex},
1885      {{al, r9, r4, minus, 4065, PostIndex},
1886       "al r9 r4 minus 4065 PostIndex",
1887       "NegativePostIndex_al_r9_r4_minus_4065_PostIndex",
1888       ARRAY_SIZE(kNegativePostIndex),
1889       kNegativePostIndex},
1890      {{al, r10, r5, minus, 3344, PostIndex},
1891       "al r10 r5 minus 3344 PostIndex",
1892       "NegativePostIndex_al_r10_r5_minus_3344_PostIndex",
1893       ARRAY_SIZE(kNegativePostIndex),
1894       kNegativePostIndex},
1895      {{al, r9, r11, minus, 2726, PostIndex},
1896       "al r9 r11 minus 2726 PostIndex",
1897       "NegativePostIndex_al_r9_r11_minus_2726_PostIndex",
1898       ARRAY_SIZE(kNegativePostIndex),
1899       kNegativePostIndex},
1900      {{al, r2, r11, minus, 3282, PostIndex},
1901       "al r2 r11 minus 3282 PostIndex",
1902       "NegativePostIndex_al_r2_r11_minus_3282_PostIndex",
1903       ARRAY_SIZE(kNegativePostIndex),
1904       kNegativePostIndex},
1905      {{al, r8, r0, minus, 1231, PostIndex},
1906       "al r8 r0 minus 1231 PostIndex",
1907       "NegativePostIndex_al_r8_r0_minus_1231_PostIndex",
1908       ARRAY_SIZE(kNegativePostIndex),
1909       kNegativePostIndex},
1910      {{al, r12, r8, minus, 2490, PostIndex},
1911       "al r12 r8 minus 2490 PostIndex",
1912       "NegativePostIndex_al_r12_r8_minus_2490_PostIndex",
1913       ARRAY_SIZE(kNegativePostIndex),
1914       kNegativePostIndex},
1915      {{al, r3, r14, minus, 2963, PostIndex},
1916       "al r3 r14 minus 2963 PostIndex",
1917       "NegativePostIndex_al_r3_r14_minus_2963_PostIndex",
1918       ARRAY_SIZE(kNegativePostIndex),
1919       kNegativePostIndex},
1920      {{al, r10, r5, minus, 3069, PostIndex},
1921       "al r10 r5 minus 3069 PostIndex",
1922       "NegativePostIndex_al_r10_r5_minus_3069_PostIndex",
1923       ARRAY_SIZE(kNegativePostIndex),
1924       kNegativePostIndex},
1925      {{al, r5, r6, minus, 3743, PostIndex},
1926       "al r5 r6 minus 3743 PostIndex",
1927       "NegativePostIndex_al_r5_r6_minus_3743_PostIndex",
1928       ARRAY_SIZE(kNegativePostIndex),
1929       kNegativePostIndex},
1930      {{al, r10, r0, minus, 1175, PostIndex},
1931       "al r10 r0 minus 1175 PostIndex",
1932       "NegativePostIndex_al_r10_r0_minus_1175_PostIndex",
1933       ARRAY_SIZE(kNegativePostIndex),
1934       kNegativePostIndex},
1935      {{al, r14, r0, minus, 479, PostIndex},
1936       "al r14 r0 minus 479 PostIndex",
1937       "NegativePostIndex_al_r14_r0_minus_479_PostIndex",
1938       ARRAY_SIZE(kNegativePostIndex),
1939       kNegativePostIndex},
1940      {{al, r2, r1, minus, 2464, PostIndex},
1941       "al r2 r1 minus 2464 PostIndex",
1942       "NegativePostIndex_al_r2_r1_minus_2464_PostIndex",
1943       ARRAY_SIZE(kNegativePostIndex),
1944       kNegativePostIndex},
1945      {{al, r7, r6, minus, 1171, PostIndex},
1946       "al r7 r6 minus 1171 PostIndex",
1947       "NegativePostIndex_al_r7_r6_minus_1171_PostIndex",
1948       ARRAY_SIZE(kNegativePostIndex),
1949       kNegativePostIndex},
1950      {{al, r14, r2, minus, 871, PostIndex},
1951       "al r14 r2 minus 871 PostIndex",
1952       "NegativePostIndex_al_r14_r2_minus_871_PostIndex",
1953       ARRAY_SIZE(kNegativePostIndex),
1954       kNegativePostIndex},
1955      {{al, r9, r10, minus, 1687, PostIndex},
1956       "al r9 r10 minus 1687 PostIndex",
1957       "NegativePostIndex_al_r9_r10_minus_1687_PostIndex",
1958       ARRAY_SIZE(kNegativePostIndex),
1959       kNegativePostIndex},
1960      {{al, r3, r1, minus, 1527, PostIndex},
1961       "al r3 r1 minus 1527 PostIndex",
1962       "NegativePostIndex_al_r3_r1_minus_1527_PostIndex",
1963       ARRAY_SIZE(kNegativePostIndex),
1964       kNegativePostIndex},
1965      {{al, r6, r7, minus, 2365, PostIndex},
1966       "al r6 r7 minus 2365 PostIndex",
1967       "NegativePostIndex_al_r6_r7_minus_2365_PostIndex",
1968       ARRAY_SIZE(kNegativePostIndex),
1969       kNegativePostIndex},
1970      {{al, r7, r12, minus, 2619, PostIndex},
1971       "al r7 r12 minus 2619 PostIndex",
1972       "NegativePostIndex_al_r7_r12_minus_2619_PostIndex",
1973       ARRAY_SIZE(kNegativePostIndex),
1974       kNegativePostIndex},
1975      {{al, r14, r7, minus, 1695, PostIndex},
1976       "al r14 r7 minus 1695 PostIndex",
1977       "NegativePostIndex_al_r14_r7_minus_1695_PostIndex",
1978       ARRAY_SIZE(kNegativePostIndex),
1979       kNegativePostIndex},
1980      {{al, r3, r8, minus, 3949, PostIndex},
1981       "al r3 r8 minus 3949 PostIndex",
1982       "NegativePostIndex_al_r3_r8_minus_3949_PostIndex",
1983       ARRAY_SIZE(kNegativePostIndex),
1984       kNegativePostIndex},
1985      {{al, r4, r8, minus, 1359, PostIndex},
1986       "al r4 r8 minus 1359 PostIndex",
1987       "NegativePostIndex_al_r4_r8_minus_1359_PostIndex",
1988       ARRAY_SIZE(kNegativePostIndex),
1989       kNegativePostIndex},
1990      {{al, r10, r6, minus, 3117, PostIndex},
1991       "al r10 r6 minus 3117 PostIndex",
1992       "NegativePostIndex_al_r10_r6_minus_3117_PostIndex",
1993       ARRAY_SIZE(kNegativePostIndex),
1994       kNegativePostIndex},
1995      {{al, r7, r12, minus, 831, PostIndex},
1996       "al r7 r12 minus 831 PostIndex",
1997       "NegativePostIndex_al_r7_r12_minus_831_PostIndex",
1998       ARRAY_SIZE(kNegativePostIndex),
1999       kNegativePostIndex},
2000      {{al, r0, r7, minus, 1537, PostIndex},
2001       "al r0 r7 minus 1537 PostIndex",
2002       "NegativePostIndex_al_r0_r7_minus_1537_PostIndex",
2003       ARRAY_SIZE(kNegativePostIndex),
2004       kNegativePostIndex},
2005      {{al, r1, r11, minus, 1948, PostIndex},
2006       "al r1 r11 minus 1948 PostIndex",
2007       "NegativePostIndex_al_r1_r11_minus_1948_PostIndex",
2008       ARRAY_SIZE(kNegativePostIndex),
2009       kNegativePostIndex},
2010      {{al, r8, r12, minus, 362, PostIndex},
2011       "al r8 r12 minus 362 PostIndex",
2012       "NegativePostIndex_al_r8_r12_minus_362_PostIndex",
2013       ARRAY_SIZE(kNegativePostIndex),
2014       kNegativePostIndex},
2015      {{al, r3, r0, minus, 3583, PostIndex},
2016       "al r3 r0 minus 3583 PostIndex",
2017       "NegativePostIndex_al_r3_r0_minus_3583_PostIndex",
2018       ARRAY_SIZE(kNegativePostIndex),
2019       kNegativePostIndex},
2020      {{al, r10, r3, minus, 2794, PostIndex},
2021       "al r10 r3 minus 2794 PostIndex",
2022       "NegativePostIndex_al_r10_r3_minus_2794_PostIndex",
2023       ARRAY_SIZE(kNegativePostIndex),
2024       kNegativePostIndex},
2025      {{al, r10, r3, minus, 53, PostIndex},
2026       "al r10 r3 minus 53 PostIndex",
2027       "NegativePostIndex_al_r10_r3_minus_53_PostIndex",
2028       ARRAY_SIZE(kNegativePostIndex),
2029       kNegativePostIndex},
2030      {{al, r9, r8, minus, 2026, PostIndex},
2031       "al r9 r8 minus 2026 PostIndex",
2032       "NegativePostIndex_al_r9_r8_minus_2026_PostIndex",
2033       ARRAY_SIZE(kNegativePostIndex),
2034       kNegativePostIndex},
2035      {{al, r14, r11, minus, 3472, PostIndex},
2036       "al r14 r11 minus 3472 PostIndex",
2037       "NegativePostIndex_al_r14_r11_minus_3472_PostIndex",
2038       ARRAY_SIZE(kNegativePostIndex),
2039       kNegativePostIndex},
2040      {{al, r5, r8, minus, 200, PostIndex},
2041       "al r5 r8 minus 200 PostIndex",
2042       "NegativePostIndex_al_r5_r8_minus_200_PostIndex",
2043       ARRAY_SIZE(kNegativePostIndex),
2044       kNegativePostIndex},
2045      {{al, r9, r11, minus, 398, PostIndex},
2046       "al r9 r11 minus 398 PostIndex",
2047       "NegativePostIndex_al_r9_r11_minus_398_PostIndex",
2048       ARRAY_SIZE(kNegativePostIndex),
2049       kNegativePostIndex},
2050      {{al, r7, r1, minus, 4091, PostIndex},
2051       "al r7 r1 minus 4091 PostIndex",
2052       "NegativePostIndex_al_r7_r1_minus_4091_PostIndex",
2053       ARRAY_SIZE(kNegativePostIndex),
2054       kNegativePostIndex},
2055      {{al, r9, r7, minus, 601, PostIndex},
2056       "al r9 r7 minus 601 PostIndex",
2057       "NegativePostIndex_al_r9_r7_minus_601_PostIndex",
2058       ARRAY_SIZE(kNegativePostIndex),
2059       kNegativePostIndex},
2060      {{al, r14, r0, minus, 2849, PostIndex},
2061       "al r14 r0 minus 2849 PostIndex",
2062       "NegativePostIndex_al_r14_r0_minus_2849_PostIndex",
2063       ARRAY_SIZE(kNegativePostIndex),
2064       kNegativePostIndex},
2065      {{al, r1, r3, minus, 1323, PostIndex},
2066       "al r1 r3 minus 1323 PostIndex",
2067       "NegativePostIndex_al_r1_r3_minus_1323_PostIndex",
2068       ARRAY_SIZE(kNegativePostIndex),
2069       kNegativePostIndex},
2070      {{al, r11, r9, minus, 969, PostIndex},
2071       "al r11 r9 minus 969 PostIndex",
2072       "NegativePostIndex_al_r11_r9_minus_969_PostIndex",
2073       ARRAY_SIZE(kNegativePostIndex),
2074       kNegativePostIndex},
2075      {{al, r1, r14, minus, 2628, PostIndex},
2076       "al r1 r14 minus 2628 PostIndex",
2077       "NegativePostIndex_al_r1_r14_minus_2628_PostIndex",
2078       ARRAY_SIZE(kNegativePostIndex),
2079       kNegativePostIndex},
2080      {{al, r10, r1, minus, 251, PostIndex},
2081       "al r10 r1 minus 251 PostIndex",
2082       "NegativePostIndex_al_r10_r1_minus_251_PostIndex",
2083       ARRAY_SIZE(kNegativePostIndex),
2084       kNegativePostIndex},
2085      {{al, r1, r2, minus, 1266, PostIndex},
2086       "al r1 r2 minus 1266 PostIndex",
2087       "NegativePostIndex_al_r1_r2_minus_1266_PostIndex",
2088       ARRAY_SIZE(kNegativePostIndex),
2089       kNegativePostIndex},
2090      {{al, r0, r7, minus, 2588, PostIndex},
2091       "al r0 r7 minus 2588 PostIndex",
2092       "NegativePostIndex_al_r0_r7_minus_2588_PostIndex",
2093       ARRAY_SIZE(kNegativePostIndex),
2094       kNegativePostIndex},
2095      {{al, r7, r10, minus, 2669, PostIndex},
2096       "al r7 r10 minus 2669 PostIndex",
2097       "NegativePostIndex_al_r7_r10_minus_2669_PostIndex",
2098       ARRAY_SIZE(kNegativePostIndex),
2099       kNegativePostIndex},
2100      {{al, r14, r11, minus, 2023, PostIndex},
2101       "al r14 r11 minus 2023 PostIndex",
2102       "NegativePostIndex_al_r14_r11_minus_2023_PostIndex",
2103       ARRAY_SIZE(kNegativePostIndex),
2104       kNegativePostIndex},
2105      {{al, r4, r1, minus, 3610, PostIndex},
2106       "al r4 r1 minus 3610 PostIndex",
2107       "NegativePostIndex_al_r4_r1_minus_3610_PostIndex",
2108       ARRAY_SIZE(kNegativePostIndex),
2109       kNegativePostIndex},
2110      {{al, r2, r9, minus, 624, PostIndex},
2111       "al r2 r9 minus 624 PostIndex",
2112       "NegativePostIndex_al_r2_r9_minus_624_PostIndex",
2113       ARRAY_SIZE(kNegativePostIndex),
2114       kNegativePostIndex},
2115      {{al, r12, r8, minus, 1610, PostIndex},
2116       "al r12 r8 minus 1610 PostIndex",
2117       "NegativePostIndex_al_r12_r8_minus_1610_PostIndex",
2118       ARRAY_SIZE(kNegativePostIndex),
2119       kNegativePostIndex},
2120      {{al, r4, r11, minus, 3136, PostIndex},
2121       "al r4 r11 minus 3136 PostIndex",
2122       "NegativePostIndex_al_r4_r11_minus_3136_PostIndex",
2123       ARRAY_SIZE(kNegativePostIndex),
2124       kNegativePostIndex},
2125      {{al, r2, r7, minus, 3949, PostIndex},
2126       "al r2 r7 minus 3949 PostIndex",
2127       "NegativePostIndex_al_r2_r7_minus_3949_PostIndex",
2128       ARRAY_SIZE(kNegativePostIndex),
2129       kNegativePostIndex},
2130      {{al, r7, r0, minus, 1635, PostIndex},
2131       "al r7 r0 minus 1635 PostIndex",
2132       "NegativePostIndex_al_r7_r0_minus_1635_PostIndex",
2133       ARRAY_SIZE(kNegativePostIndex),
2134       kNegativePostIndex},
2135      {{al, r4, r2, minus, 3008, PostIndex},
2136       "al r4 r2 minus 3008 PostIndex",
2137       "NegativePostIndex_al_r4_r2_minus_3008_PostIndex",
2138       ARRAY_SIZE(kNegativePostIndex),
2139       kNegativePostIndex},
2140      {{al, r6, r3, minus, 3566, PostIndex},
2141       "al r6 r3 minus 3566 PostIndex",
2142       "NegativePostIndex_al_r6_r3_minus_3566_PostIndex",
2143       ARRAY_SIZE(kNegativePostIndex),
2144       kNegativePostIndex},
2145      {{al, r12, r8, minus, 3774, PostIndex},
2146       "al r12 r8 minus 3774 PostIndex",
2147       "NegativePostIndex_al_r12_r8_minus_3774_PostIndex",
2148       ARRAY_SIZE(kNegativePostIndex),
2149       kNegativePostIndex},
2150      {{al, r14, r10, minus, 3978, PostIndex},
2151       "al r14 r10 minus 3978 PostIndex",
2152       "NegativePostIndex_al_r14_r10_minus_3978_PostIndex",
2153       ARRAY_SIZE(kNegativePostIndex),
2154       kNegativePostIndex},
2155      {{al, r2, r6, minus, 2358, PostIndex},
2156       "al r2 r6 minus 2358 PostIndex",
2157       "NegativePostIndex_al_r2_r6_minus_2358_PostIndex",
2158       ARRAY_SIZE(kNegativePostIndex),
2159       kNegativePostIndex},
2160      {{al, r14, r9, minus, 2650, PostIndex},
2161       "al r14 r9 minus 2650 PostIndex",
2162       "NegativePostIndex_al_r14_r9_minus_2650_PostIndex",
2163       ARRAY_SIZE(kNegativePostIndex),
2164       kNegativePostIndex},
2165      {{al, r4, r14, minus, 2365, PostIndex},
2166       "al r4 r14 minus 2365 PostIndex",
2167       "NegativePostIndex_al_r4_r14_minus_2365_PostIndex",
2168       ARRAY_SIZE(kNegativePostIndex),
2169       kNegativePostIndex},
2170      {{al, r14, r2, minus, 496, PostIndex},
2171       "al r14 r2 minus 496 PostIndex",
2172       "NegativePostIndex_al_r14_r2_minus_496_PostIndex",
2173       ARRAY_SIZE(kNegativePostIndex),
2174       kNegativePostIndex},
2175      {{al, r9, r0, minus, 2124, PostIndex},
2176       "al r9 r0 minus 2124 PostIndex",
2177       "NegativePostIndex_al_r9_r0_minus_2124_PostIndex",
2178       ARRAY_SIZE(kNegativePostIndex),
2179       kNegativePostIndex},
2180      {{al, r4, r2, minus, 3366, PostIndex},
2181       "al r4 r2 minus 3366 PostIndex",
2182       "NegativePostIndex_al_r4_r2_minus_3366_PostIndex",
2183       ARRAY_SIZE(kNegativePostIndex),
2184       kNegativePostIndex},
2185      {{al, r1, r2, minus, 2866, PostIndex},
2186       "al r1 r2 minus 2866 PostIndex",
2187       "NegativePostIndex_al_r1_r2_minus_2866_PostIndex",
2188       ARRAY_SIZE(kNegativePostIndex),
2189       kNegativePostIndex},
2190      {{al, r8, r4, minus, 3003, PostIndex},
2191       "al r8 r4 minus 3003 PostIndex",
2192       "NegativePostIndex_al_r8_r4_minus_3003_PostIndex",
2193       ARRAY_SIZE(kNegativePostIndex),
2194       kNegativePostIndex},
2195      {{al, r9, r3, minus, 1234, PostIndex},
2196       "al r9 r3 minus 1234 PostIndex",
2197       "NegativePostIndex_al_r9_r3_minus_1234_PostIndex",
2198       ARRAY_SIZE(kNegativePostIndex),
2199       kNegativePostIndex},
2200      {{al, r1, r8, minus, 2290, PostIndex},
2201       "al r1 r8 minus 2290 PostIndex",
2202       "NegativePostIndex_al_r1_r8_minus_2290_PostIndex",
2203       ARRAY_SIZE(kNegativePostIndex),
2204       kNegativePostIndex},
2205      {{al, r8, r2, minus, 3811, PostIndex},
2206       "al r8 r2 minus 3811 PostIndex",
2207       "NegativePostIndex_al_r8_r2_minus_3811_PostIndex",
2208       ARRAY_SIZE(kNegativePostIndex),
2209       kNegativePostIndex},
2210      {{al, r4, r9, minus, 429, PostIndex},
2211       "al r4 r9 minus 429 PostIndex",
2212       "NegativePostIndex_al_r4_r9_minus_429_PostIndex",
2213       ARRAY_SIZE(kNegativePostIndex),
2214       kNegativePostIndex},
2215      {{al, r6, r1, minus, 2025, PostIndex},
2216       "al r6 r1 minus 2025 PostIndex",
2217       "NegativePostIndex_al_r6_r1_minus_2025_PostIndex",
2218       ARRAY_SIZE(kNegativePostIndex),
2219       kNegativePostIndex},
2220      {{al, r11, r7, minus, 3517, PostIndex},
2221       "al r11 r7 minus 3517 PostIndex",
2222       "NegativePostIndex_al_r11_r7_minus_3517_PostIndex",
2223       ARRAY_SIZE(kNegativePostIndex),
2224       kNegativePostIndex},
2225      {{al, r7, r4, minus, 251, PostIndex},
2226       "al r7 r4 minus 251 PostIndex",
2227       "NegativePostIndex_al_r7_r4_minus_251_PostIndex",
2228       ARRAY_SIZE(kNegativePostIndex),
2229       kNegativePostIndex},
2230      {{al, r1, r12, minus, 1635, PostIndex},
2231       "al r1 r12 minus 1635 PostIndex",
2232       "NegativePostIndex_al_r1_r12_minus_1635_PostIndex",
2233       ARRAY_SIZE(kNegativePostIndex),
2234       kNegativePostIndex},
2235      {{al, r6, r7, minus, 3685, PostIndex},
2236       "al r6 r7 minus 3685 PostIndex",
2237       "NegativePostIndex_al_r6_r7_minus_3685_PostIndex",
2238       ARRAY_SIZE(kNegativePostIndex),
2239       kNegativePostIndex},
2240      {{al, r9, r11, minus, 1981, PostIndex},
2241       "al r9 r11 minus 1981 PostIndex",
2242       "NegativePostIndex_al_r9_r11_minus_1981_PostIndex",
2243       ARRAY_SIZE(kNegativePostIndex),
2244       kNegativePostIndex},
2245      {{al, r6, r2, minus, 180, PostIndex},
2246       "al r6 r2 minus 180 PostIndex",
2247       "NegativePostIndex_al_r6_r2_minus_180_PostIndex",
2248       ARRAY_SIZE(kNegativePostIndex),
2249       kNegativePostIndex},
2250      {{al, r12, r6, minus, 2490, PostIndex},
2251       "al r12 r6 minus 2490 PostIndex",
2252       "NegativePostIndex_al_r12_r6_minus_2490_PostIndex",
2253       ARRAY_SIZE(kNegativePostIndex),
2254       kNegativePostIndex},
2255      {{al, r1, r3, minus, 3994, PostIndex},
2256       "al r1 r3 minus 3994 PostIndex",
2257       "NegativePostIndex_al_r1_r3_minus_3994_PostIndex",
2258       ARRAY_SIZE(kNegativePostIndex),
2259       kNegativePostIndex},
2260      {{al, r3, r2, minus, 3094, PostIndex},
2261       "al r3 r2 minus 3094 PostIndex",
2262       "NegativePostIndex_al_r3_r2_minus_3094_PostIndex",
2263       ARRAY_SIZE(kNegativePostIndex),
2264       kNegativePostIndex},
2265      {{al, r2, r7, minus, 1377, PostIndex},
2266       "al r2 r7 minus 1377 PostIndex",
2267       "NegativePostIndex_al_r2_r7_minus_1377_PostIndex",
2268       ARRAY_SIZE(kNegativePostIndex),
2269       kNegativePostIndex},
2270      {{al, r12, r11, minus, 2098, PostIndex},
2271       "al r12 r11 minus 2098 PostIndex",
2272       "NegativePostIndex_al_r12_r11_minus_2098_PostIndex",
2273       ARRAY_SIZE(kNegativePostIndex),
2274       kNegativePostIndex},
2275      {{al, r0, r3, minus, 2462, PostIndex},
2276       "al r0 r3 minus 2462 PostIndex",
2277       "NegativePostIndex_al_r0_r3_minus_2462_PostIndex",
2278       ARRAY_SIZE(kNegativePostIndex),
2279       kNegativePostIndex},
2280      {{al, r6, r3, minus, 3659, PostIndex},
2281       "al r6 r3 minus 3659 PostIndex",
2282       "NegativePostIndex_al_r6_r3_minus_3659_PostIndex",
2283       ARRAY_SIZE(kNegativePostIndex),
2284       kNegativePostIndex},
2285      {{al, r5, r1, minus, 2139, PostIndex},
2286       "al r5 r1 minus 2139 PostIndex",
2287       "NegativePostIndex_al_r5_r1_minus_2139_PostIndex",
2288       ARRAY_SIZE(kNegativePostIndex),
2289       kNegativePostIndex},
2290      {{al, r11, r1, minus, 1934, PostIndex},
2291       "al r11 r1 minus 1934 PostIndex",
2292       "NegativePostIndex_al_r11_r1_minus_1934_PostIndex",
2293       ARRAY_SIZE(kNegativePostIndex),
2294       kNegativePostIndex},
2295      {{al, r8, r11, minus, 1961, PostIndex},
2296       "al r8 r11 minus 1961 PostIndex",
2297       "NegativePostIndex_al_r8_r11_minus_1961_PostIndex",
2298       ARRAY_SIZE(kNegativePostIndex),
2299       kNegativePostIndex},
2300      {{al, r3, r8, minus, 2535, PostIndex},
2301       "al r3 r8 minus 2535 PostIndex",
2302       "NegativePostIndex_al_r3_r8_minus_2535_PostIndex",
2303       ARRAY_SIZE(kNegativePostIndex),
2304       kNegativePostIndex},
2305      {{al, r12, r7, minus, 3688, PostIndex},
2306       "al r12 r7 minus 3688 PostIndex",
2307       "NegativePostIndex_al_r12_r7_minus_3688_PostIndex",
2308       ARRAY_SIZE(kNegativePostIndex),
2309       kNegativePostIndex},
2310      {{al, r8, r1, minus, 513, PostIndex},
2311       "al r8 r1 minus 513 PostIndex",
2312       "NegativePostIndex_al_r8_r1_minus_513_PostIndex",
2313       ARRAY_SIZE(kNegativePostIndex),
2314       kNegativePostIndex},
2315      {{al, r8, r2, minus, 213, PostIndex},
2316       "al r8 r2 minus 213 PostIndex",
2317       "NegativePostIndex_al_r8_r2_minus_213_PostIndex",
2318       ARRAY_SIZE(kNegativePostIndex),
2319       kNegativePostIndex},
2320      {{al, r2, r5, minus, 670, PostIndex},
2321       "al r2 r5 minus 670 PostIndex",
2322       "NegativePostIndex_al_r2_r5_minus_670_PostIndex",
2323       ARRAY_SIZE(kNegativePostIndex),
2324       kNegativePostIndex},
2325      {{al, r5, r6, minus, 3986, PostIndex},
2326       "al r5 r6 minus 3986 PostIndex",
2327       "NegativePostIndex_al_r5_r6_minus_3986_PostIndex",
2328       ARRAY_SIZE(kNegativePostIndex),
2329       kNegativePostIndex},
2330      {{al, r14, r12, plus, 2982, PreIndex},
2331       "al r14 r12 plus 2982 PreIndex",
2332       "PositivePreIndex_al_r14_r12_plus_2982_PreIndex",
2333       ARRAY_SIZE(kPositivePreIndex),
2334       kPositivePreIndex},
2335      {{al, r7, r11, plus, 1241, PreIndex},
2336       "al r7 r11 plus 1241 PreIndex",
2337       "PositivePreIndex_al_r7_r11_plus_1241_PreIndex",
2338       ARRAY_SIZE(kPositivePreIndex),
2339       kPositivePreIndex},
2340      {{al, r6, r5, plus, 2677, PreIndex},
2341       "al r6 r5 plus 2677 PreIndex",
2342       "PositivePreIndex_al_r6_r5_plus_2677_PreIndex",
2343       ARRAY_SIZE(kPositivePreIndex),
2344       kPositivePreIndex},
2345      {{al, r11, r12, plus, 2403, PreIndex},
2346       "al r11 r12 plus 2403 PreIndex",
2347       "PositivePreIndex_al_r11_r12_plus_2403_PreIndex",
2348       ARRAY_SIZE(kPositivePreIndex),
2349       kPositivePreIndex},
2350      {{al, r6, r5, plus, 1274, PreIndex},
2351       "al r6 r5 plus 1274 PreIndex",
2352       "PositivePreIndex_al_r6_r5_plus_1274_PreIndex",
2353       ARRAY_SIZE(kPositivePreIndex),
2354       kPositivePreIndex},
2355      {{al, r6, r7, plus, 2208, PreIndex},
2356       "al r6 r7 plus 2208 PreIndex",
2357       "PositivePreIndex_al_r6_r7_plus_2208_PreIndex",
2358       ARRAY_SIZE(kPositivePreIndex),
2359       kPositivePreIndex},
2360      {{al, r7, r10, plus, 3583, PreIndex},
2361       "al r7 r10 plus 3583 PreIndex",
2362       "PositivePreIndex_al_r7_r10_plus_3583_PreIndex",
2363       ARRAY_SIZE(kPositivePreIndex),
2364       kPositivePreIndex},
2365      {{al, r7, r5, plus, 3975, PreIndex},
2366       "al r7 r5 plus 3975 PreIndex",
2367       "PositivePreIndex_al_r7_r5_plus_3975_PreIndex",
2368       ARRAY_SIZE(kPositivePreIndex),
2369       kPositivePreIndex},
2370      {{al, r3, r9, plus, 2326, PreIndex},
2371       "al r3 r9 plus 2326 PreIndex",
2372       "PositivePreIndex_al_r3_r9_plus_2326_PreIndex",
2373       ARRAY_SIZE(kPositivePreIndex),
2374       kPositivePreIndex},
2375      {{al, r8, r7, plus, 2098, PreIndex},
2376       "al r8 r7 plus 2098 PreIndex",
2377       "PositivePreIndex_al_r8_r7_plus_2098_PreIndex",
2378       ARRAY_SIZE(kPositivePreIndex),
2379       kPositivePreIndex},
2380      {{al, r5, r11, plus, 3015, PreIndex},
2381       "al r5 r11 plus 3015 PreIndex",
2382       "PositivePreIndex_al_r5_r11_plus_3015_PreIndex",
2383       ARRAY_SIZE(kPositivePreIndex),
2384       kPositivePreIndex},
2385      {{al, r1, r12, plus, 719, PreIndex},
2386       "al r1 r12 plus 719 PreIndex",
2387       "PositivePreIndex_al_r1_r12_plus_719_PreIndex",
2388       ARRAY_SIZE(kPositivePreIndex),
2389       kPositivePreIndex},
2390      {{al, r14, r1, plus, 3413, PreIndex},
2391       "al r14 r1 plus 3413 PreIndex",
2392       "PositivePreIndex_al_r14_r1_plus_3413_PreIndex",
2393       ARRAY_SIZE(kPositivePreIndex),
2394       kPositivePreIndex},
2395      {{al, r10, r0, plus, 3949, PreIndex},
2396       "al r10 r0 plus 3949 PreIndex",
2397       "PositivePreIndex_al_r10_r0_plus_3949_PreIndex",
2398       ARRAY_SIZE(kPositivePreIndex),
2399       kPositivePreIndex},
2400      {{al, r12, r4, plus, 3088, PreIndex},
2401       "al r12 r4 plus 3088 PreIndex",
2402       "PositivePreIndex_al_r12_r4_plus_3088_PreIndex",
2403       ARRAY_SIZE(kPositivePreIndex),
2404       kPositivePreIndex},
2405      {{al, r6, r3, plus, 2690, PreIndex},
2406       "al r6 r3 plus 2690 PreIndex",
2407       "PositivePreIndex_al_r6_r3_plus_2690_PreIndex",
2408       ARRAY_SIZE(kPositivePreIndex),
2409       kPositivePreIndex},
2410      {{al, r9, r6, plus, 3384, PreIndex},
2411       "al r9 r6 plus 3384 PreIndex",
2412       "PositivePreIndex_al_r9_r6_plus_3384_PreIndex",
2413       ARRAY_SIZE(kPositivePreIndex),
2414       kPositivePreIndex},
2415      {{al, r2, r7, plus, 3636, PreIndex},
2416       "al r2 r7 plus 3636 PreIndex",
2417       "PositivePreIndex_al_r2_r7_plus_3636_PreIndex",
2418       ARRAY_SIZE(kPositivePreIndex),
2419       kPositivePreIndex},
2420      {{al, r10, r1, plus, 1390, PreIndex},
2421       "al r10 r1 plus 1390 PreIndex",
2422       "PositivePreIndex_al_r10_r1_plus_1390_PreIndex",
2423       ARRAY_SIZE(kPositivePreIndex),
2424       kPositivePreIndex},
2425      {{al, r2, r8, plus, 2546, PreIndex},
2426       "al r2 r8 plus 2546 PreIndex",
2427       "PositivePreIndex_al_r2_r8_plus_2546_PreIndex",
2428       ARRAY_SIZE(kPositivePreIndex),
2429       kPositivePreIndex},
2430      {{al, r2, r14, plus, 2619, PreIndex},
2431       "al r2 r14 plus 2619 PreIndex",
2432       "PositivePreIndex_al_r2_r14_plus_2619_PreIndex",
2433       ARRAY_SIZE(kPositivePreIndex),
2434       kPositivePreIndex},
2435      {{al, r0, r12, plus, 2591, PreIndex},
2436       "al r0 r12 plus 2591 PreIndex",
2437       "PositivePreIndex_al_r0_r12_plus_2591_PreIndex",
2438       ARRAY_SIZE(kPositivePreIndex),
2439       kPositivePreIndex},
2440      {{al, r11, r7, plus, 3287, PreIndex},
2441       "al r11 r7 plus 3287 PreIndex",
2442       "PositivePreIndex_al_r11_r7_plus_3287_PreIndex",
2443       ARRAY_SIZE(kPositivePreIndex),
2444       kPositivePreIndex},
2445      {{al, r12, r0, plus, 3638, PreIndex},
2446       "al r12 r0 plus 3638 PreIndex",
2447       "PositivePreIndex_al_r12_r0_plus_3638_PreIndex",
2448       ARRAY_SIZE(kPositivePreIndex),
2449       kPositivePreIndex},
2450      {{al, r4, r2, plus, 2944, PreIndex},
2451       "al r4 r2 plus 2944 PreIndex",
2452       "PositivePreIndex_al_r4_r2_plus_2944_PreIndex",
2453       ARRAY_SIZE(kPositivePreIndex),
2454       kPositivePreIndex},
2455      {{al, r12, r3, plus, 2290, PreIndex},
2456       "al r12 r3 plus 2290 PreIndex",
2457       "PositivePreIndex_al_r12_r3_plus_2290_PreIndex",
2458       ARRAY_SIZE(kPositivePreIndex),
2459       kPositivePreIndex},
2460      {{al, r9, r7, plus, 1567, PreIndex},
2461       "al r9 r7 plus 1567 PreIndex",
2462       "PositivePreIndex_al_r9_r7_plus_1567_PreIndex",
2463       ARRAY_SIZE(kPositivePreIndex),
2464       kPositivePreIndex},
2465      {{al, r2, r14, plus, 3994, PreIndex},
2466       "al r2 r14 plus 3994 PreIndex",
2467       "PositivePreIndex_al_r2_r14_plus_3994_PreIndex",
2468       ARRAY_SIZE(kPositivePreIndex),
2469       kPositivePreIndex},
2470      {{al, r9, r11, plus, 3504, PreIndex},
2471       "al r9 r11 plus 3504 PreIndex",
2472       "PositivePreIndex_al_r9_r11_plus_3504_PreIndex",
2473       ARRAY_SIZE(kPositivePreIndex),
2474       kPositivePreIndex},
2475      {{al, r8, r10, plus, 3564, PreIndex},
2476       "al r8 r10 plus 3564 PreIndex",
2477       "PositivePreIndex_al_r8_r10_plus_3564_PreIndex",
2478       ARRAY_SIZE(kPositivePreIndex),
2479       kPositivePreIndex},
2480      {{al, r11, r3, plus, 872, PreIndex},
2481       "al r11 r3 plus 872 PreIndex",
2482       "PositivePreIndex_al_r11_r3_plus_872_PreIndex",
2483       ARRAY_SIZE(kPositivePreIndex),
2484       kPositivePreIndex},
2485      {{al, r6, r7, plus, 3685, PreIndex},
2486       "al r6 r7 plus 3685 PreIndex",
2487       "PositivePreIndex_al_r6_r7_plus_3685_PreIndex",
2488       ARRAY_SIZE(kPositivePreIndex),
2489       kPositivePreIndex},
2490      {{al, r8, r0, plus, 2532, PreIndex},
2491       "al r8 r0 plus 2532 PreIndex",
2492       "PositivePreIndex_al_r8_r0_plus_2532_PreIndex",
2493       ARRAY_SIZE(kPositivePreIndex),
2494       kPositivePreIndex},
2495      {{al, r11, r4, plus, 57, PreIndex},
2496       "al r11 r4 plus 57 PreIndex",
2497       "PositivePreIndex_al_r11_r4_plus_57_PreIndex",
2498       ARRAY_SIZE(kPositivePreIndex),
2499       kPositivePreIndex},
2500      {{al, r12, r1, plus, 3343, PreIndex},
2501       "al r12 r1 plus 3343 PreIndex",
2502       "PositivePreIndex_al_r12_r1_plus_3343_PreIndex",
2503       ARRAY_SIZE(kPositivePreIndex),
2504       kPositivePreIndex},
2505      {{al, r11, r10, plus, 459, PreIndex},
2506       "al r11 r10 plus 459 PreIndex",
2507       "PositivePreIndex_al_r11_r10_plus_459_PreIndex",
2508       ARRAY_SIZE(kPositivePreIndex),
2509       kPositivePreIndex},
2510      {{al, r2, r6, plus, 3867, PreIndex},
2511       "al r2 r6 plus 3867 PreIndex",
2512       "PositivePreIndex_al_r2_r6_plus_3867_PreIndex",
2513       ARRAY_SIZE(kPositivePreIndex),
2514       kPositivePreIndex},
2515      {{al, r11, r12, plus, 1035, PreIndex},
2516       "al r11 r12 plus 1035 PreIndex",
2517       "PositivePreIndex_al_r11_r12_plus_1035_PreIndex",
2518       ARRAY_SIZE(kPositivePreIndex),
2519       kPositivePreIndex},
2520      {{al, r6, r10, plus, 3597, PreIndex},
2521       "al r6 r10 plus 3597 PreIndex",
2522       "PositivePreIndex_al_r6_r10_plus_3597_PreIndex",
2523       ARRAY_SIZE(kPositivePreIndex),
2524       kPositivePreIndex},
2525      {{al, r14, r2, plus, 2281, PreIndex},
2526       "al r14 r2 plus 2281 PreIndex",
2527       "PositivePreIndex_al_r14_r2_plus_2281_PreIndex",
2528       ARRAY_SIZE(kPositivePreIndex),
2529       kPositivePreIndex},
2530      {{al, r3, r10, plus, 2901, PreIndex},
2531       "al r3 r10 plus 2901 PreIndex",
2532       "PositivePreIndex_al_r3_r10_plus_2901_PreIndex",
2533       ARRAY_SIZE(kPositivePreIndex),
2534       kPositivePreIndex},
2535      {{al, r4, r14, plus, 2052, PreIndex},
2536       "al r4 r14 plus 2052 PreIndex",
2537       "PositivePreIndex_al_r4_r14_plus_2052_PreIndex",
2538       ARRAY_SIZE(kPositivePreIndex),
2539       kPositivePreIndex},
2540      {{al, r4, r6, plus, 4091, PreIndex},
2541       "al r4 r6 plus 4091 PreIndex",
2542       "PositivePreIndex_al_r4_r6_plus_4091_PreIndex",
2543       ARRAY_SIZE(kPositivePreIndex),
2544       kPositivePreIndex},
2545      {{al, r4, r12, plus, 871, PreIndex},
2546       "al r4 r12 plus 871 PreIndex",
2547       "PositivePreIndex_al_r4_r12_plus_871_PreIndex",
2548       ARRAY_SIZE(kPositivePreIndex),
2549       kPositivePreIndex},
2550      {{al, r9, r2, plus, 1860, PreIndex},
2551       "al r9 r2 plus 1860 PreIndex",
2552       "PositivePreIndex_al_r9_r2_plus_1860_PreIndex",
2553       ARRAY_SIZE(kPositivePreIndex),
2554       kPositivePreIndex},
2555      {{al, r11, r0, plus, 2345, PreIndex},
2556       "al r11 r0 plus 2345 PreIndex",
2557       "PositivePreIndex_al_r11_r0_plus_2345_PreIndex",
2558       ARRAY_SIZE(kPositivePreIndex),
2559       kPositivePreIndex},
2560      {{al, r4, r12, plus, 1601, PreIndex},
2561       "al r4 r12 plus 1601 PreIndex",
2562       "PositivePreIndex_al_r4_r12_plus_1601_PreIndex",
2563       ARRAY_SIZE(kPositivePreIndex),
2564       kPositivePreIndex},
2565      {{al, r7, r5, plus, 2240, PreIndex},
2566       "al r7 r5 plus 2240 PreIndex",
2567       "PositivePreIndex_al_r7_r5_plus_2240_PreIndex",
2568       ARRAY_SIZE(kPositivePreIndex),
2569       kPositivePreIndex},
2570      {{al, r10, r14, plus, 1542, PreIndex},
2571       "al r10 r14 plus 1542 PreIndex",
2572       "PositivePreIndex_al_r10_r14_plus_1542_PreIndex",
2573       ARRAY_SIZE(kPositivePreIndex),
2574       kPositivePreIndex},
2575      {{al, r8, r12, plus, 1246, PreIndex},
2576       "al r8 r12 plus 1246 PreIndex",
2577       "PositivePreIndex_al_r8_r12_plus_1246_PreIndex",
2578       ARRAY_SIZE(kPositivePreIndex),
2579       kPositivePreIndex},
2580      {{al, r0, r10, plus, 770, PreIndex},
2581       "al r0 r10 plus 770 PreIndex",
2582       "PositivePreIndex_al_r0_r10_plus_770_PreIndex",
2583       ARRAY_SIZE(kPositivePreIndex),
2584       kPositivePreIndex},
2585      {{al, r5, r8, plus, 3076, PreIndex},
2586       "al r5 r8 plus 3076 PreIndex",
2587       "PositivePreIndex_al_r5_r8_plus_3076_PreIndex",
2588       ARRAY_SIZE(kPositivePreIndex),
2589       kPositivePreIndex},
2590      {{al, r3, r10, plus, 3572, PreIndex},
2591       "al r3 r10 plus 3572 PreIndex",
2592       "PositivePreIndex_al_r3_r10_plus_3572_PreIndex",
2593       ARRAY_SIZE(kPositivePreIndex),
2594       kPositivePreIndex},
2595      {{al, r11, r8, plus, 2, PreIndex},
2596       "al r11 r8 plus 2 PreIndex",
2597       "PositivePreIndex_al_r11_r8_plus_2_PreIndex",
2598       ARRAY_SIZE(kPositivePreIndex),
2599       kPositivePreIndex},
2600      {{al, r12, r1, plus, 670, PreIndex},
2601       "al r12 r1 plus 670 PreIndex",
2602       "PositivePreIndex_al_r12_r1_plus_670_PreIndex",
2603       ARRAY_SIZE(kPositivePreIndex),
2604       kPositivePreIndex},
2605      {{al, r6, r4, plus, 251, PreIndex},
2606       "al r6 r4 plus 251 PreIndex",
2607       "PositivePreIndex_al_r6_r4_plus_251_PreIndex",
2608       ARRAY_SIZE(kPositivePreIndex),
2609       kPositivePreIndex},
2610      {{al, r10, r2, plus, 2532, PreIndex},
2611       "al r10 r2 plus 2532 PreIndex",
2612       "PositivePreIndex_al_r10_r2_plus_2532_PreIndex",
2613       ARRAY_SIZE(kPositivePreIndex),
2614       kPositivePreIndex},
2615      {{al, r4, r14, plus, 2906, PreIndex},
2616       "al r4 r14 plus 2906 PreIndex",
2617       "PositivePreIndex_al_r4_r14_plus_2906_PreIndex",
2618       ARRAY_SIZE(kPositivePreIndex),
2619       kPositivePreIndex},
2620      {{al, r3, r5, plus, 2864, PreIndex},
2621       "al r3 r5 plus 2864 PreIndex",
2622       "PositivePreIndex_al_r3_r5_plus_2864_PreIndex",
2623       ARRAY_SIZE(kPositivePreIndex),
2624       kPositivePreIndex},
2625      {{al, r9, r7, plus, 53, PreIndex},
2626       "al r9 r7 plus 53 PreIndex",
2627       "PositivePreIndex_al_r9_r7_plus_53_PreIndex",
2628       ARRAY_SIZE(kPositivePreIndex),
2629       kPositivePreIndex},
2630      {{al, r0, r12, plus, 2462, PreIndex},
2631       "al r0 r12 plus 2462 PreIndex",
2632       "PositivePreIndex_al_r0_r12_plus_2462_PreIndex",
2633       ARRAY_SIZE(kPositivePreIndex),
2634       kPositivePreIndex},
2635      {{al, r3, r1, plus, 2183, PreIndex},
2636       "al r3 r1 plus 2183 PreIndex",
2637       "PositivePreIndex_al_r3_r1_plus_2183_PreIndex",
2638       ARRAY_SIZE(kPositivePreIndex),
2639       kPositivePreIndex},
2640      {{al, r4, r14, plus, 3774, PreIndex},
2641       "al r4 r14 plus 3774 PreIndex",
2642       "PositivePreIndex_al_r4_r14_plus_3774_PreIndex",
2643       ARRAY_SIZE(kPositivePreIndex),
2644       kPositivePreIndex},
2645      {{al, r8, r0, plus, 3994, PreIndex},
2646       "al r8 r0 plus 3994 PreIndex",
2647       "PositivePreIndex_al_r8_r0_plus_3994_PreIndex",
2648       ARRAY_SIZE(kPositivePreIndex),
2649       kPositivePreIndex},
2650      {{al, r1, r5, plus, 3039, PreIndex},
2651       "al r1 r5 plus 3039 PreIndex",
2652       "PositivePreIndex_al_r1_r5_plus_3039_PreIndex",
2653       ARRAY_SIZE(kPositivePreIndex),
2654       kPositivePreIndex},
2655      {{al, r3, r12, plus, 3425, PreIndex},
2656       "al r3 r12 plus 3425 PreIndex",
2657       "PositivePreIndex_al_r3_r12_plus_3425_PreIndex",
2658       ARRAY_SIZE(kPositivePreIndex),
2659       kPositivePreIndex},
2660      {{al, r14, r9, plus, 4046, PreIndex},
2661       "al r14 r9 plus 4046 PreIndex",
2662       "PositivePreIndex_al_r14_r9_plus_4046_PreIndex",
2663       ARRAY_SIZE(kPositivePreIndex),
2664       kPositivePreIndex},
2665      {{al, r10, r11, plus, 2451, PreIndex},
2666       "al r10 r11 plus 2451 PreIndex",
2667       "PositivePreIndex_al_r10_r11_plus_2451_PreIndex",
2668       ARRAY_SIZE(kPositivePreIndex),
2669       kPositivePreIndex},
2670      {{al, r6, r9, plus, 3063, PreIndex},
2671       "al r6 r9 plus 3063 PreIndex",
2672       "PositivePreIndex_al_r6_r9_plus_3063_PreIndex",
2673       ARRAY_SIZE(kPositivePreIndex),
2674       kPositivePreIndex},
2675      {{al, r3, r1, plus, 3865, PreIndex},
2676       "al r3 r1 plus 3865 PreIndex",
2677       "PositivePreIndex_al_r3_r1_plus_3865_PreIndex",
2678       ARRAY_SIZE(kPositivePreIndex),
2679       kPositivePreIndex},
2680      {{al, r14, r4, plus, 1537, PreIndex},
2681       "al r14 r4 plus 1537 PreIndex",
2682       "PositivePreIndex_al_r14_r4_plus_1537_PreIndex",
2683       ARRAY_SIZE(kPositivePreIndex),
2684       kPositivePreIndex},
2685      {{al, r9, r6, plus, 3413, PreIndex},
2686       "al r9 r6 plus 3413 PreIndex",
2687       "PositivePreIndex_al_r9_r6_plus_3413_PreIndex",
2688       ARRAY_SIZE(kPositivePreIndex),
2689       kPositivePreIndex},
2690      {{al, r2, r1, plus, 2403, PreIndex},
2691       "al r2 r1 plus 2403 PreIndex",
2692       "PositivePreIndex_al_r2_r1_plus_2403_PreIndex",
2693       ARRAY_SIZE(kPositivePreIndex),
2694       kPositivePreIndex},
2695      {{al, r14, r4, plus, 2224, PreIndex},
2696       "al r14 r4 plus 2224 PreIndex",
2697       "PositivePreIndex_al_r14_r4_plus_2224_PreIndex",
2698       ARRAY_SIZE(kPositivePreIndex),
2699       kPositivePreIndex},
2700      {{al, r4, r5, plus, 3743, PreIndex},
2701       "al r4 r5 plus 3743 PreIndex",
2702       "PositivePreIndex_al_r4_r5_plus_3743_PreIndex",
2703       ARRAY_SIZE(kPositivePreIndex),
2704       kPositivePreIndex},
2705      {{al, r6, r1, plus, 1475, PreIndex},
2706       "al r6 r1 plus 1475 PreIndex",
2707       "PositivePreIndex_al_r6_r1_plus_1475_PreIndex",
2708       ARRAY_SIZE(kPositivePreIndex),
2709       kPositivePreIndex},
2710      {{al, r10, r8, plus, 132, PreIndex},
2711       "al r10 r8 plus 132 PreIndex",
2712       "PositivePreIndex_al_r10_r8_plus_132_PreIndex",
2713       ARRAY_SIZE(kPositivePreIndex),
2714       kPositivePreIndex},
2715      {{al, r6, r10, plus, 1459, PreIndex},
2716       "al r6 r10 plus 1459 PreIndex",
2717       "PositivePreIndex_al_r6_r10_plus_1459_PreIndex",
2718       ARRAY_SIZE(kPositivePreIndex),
2719       kPositivePreIndex},
2720      {{al, r12, r8, plus, 2254, PreIndex},
2721       "al r12 r8 plus 2254 PreIndex",
2722       "PositivePreIndex_al_r12_r8_plus_2254_PreIndex",
2723       ARRAY_SIZE(kPositivePreIndex),
2724       kPositivePreIndex},
2725      {{al, r4, r0, plus, 3079, PreIndex},
2726       "al r4 r0 plus 3079 PreIndex",
2727       "PositivePreIndex_al_r4_r0_plus_3079_PreIndex",
2728       ARRAY_SIZE(kPositivePreIndex),
2729       kPositivePreIndex},
2730      {{al, r9, r14, plus, 3717, PreIndex},
2731       "al r9 r14 plus 3717 PreIndex",
2732       "PositivePreIndex_al_r9_r14_plus_3717_PreIndex",
2733       ARRAY_SIZE(kPositivePreIndex),
2734       kPositivePreIndex},
2735      {{al, r2, r10, plus, 2490, PreIndex},
2736       "al r2 r10 plus 2490 PreIndex",
2737       "PositivePreIndex_al_r2_r10_plus_2490_PreIndex",
2738       ARRAY_SIZE(kPositivePreIndex),
2739       kPositivePreIndex},
2740      {{al, r2, r8, plus, 210, PreIndex},
2741       "al r2 r8 plus 210 PreIndex",
2742       "PositivePreIndex_al_r2_r8_plus_210_PreIndex",
2743       ARRAY_SIZE(kPositivePreIndex),
2744       kPositivePreIndex},
2745      {{al, r5, r2, plus, 2559, PreIndex},
2746       "al r5 r2 plus 2559 PreIndex",
2747       "PositivePreIndex_al_r5_r2_plus_2559_PreIndex",
2748       ARRAY_SIZE(kPositivePreIndex),
2749       kPositivePreIndex},
2750      {{al, r4, r11, plus, 2326, PreIndex},
2751       "al r4 r11 plus 2326 PreIndex",
2752       "PositivePreIndex_al_r4_r11_plus_2326_PreIndex",
2753       ARRAY_SIZE(kPositivePreIndex),
2754       kPositivePreIndex},
2755      {{al, r7, r1, plus, 4093, PreIndex},
2756       "al r7 r1 plus 4093 PreIndex",
2757       "PositivePreIndex_al_r7_r1_plus_4093_PreIndex",
2758       ARRAY_SIZE(kPositivePreIndex),
2759       kPositivePreIndex},
2760      {{al, r8, r1, plus, 663, PreIndex},
2761       "al r8 r1 plus 663 PreIndex",
2762       "PositivePreIndex_al_r8_r1_plus_663_PreIndex",
2763       ARRAY_SIZE(kPositivePreIndex),
2764       kPositivePreIndex},
2765      {{al, r9, r3, plus, 1551, PreIndex},
2766       "al r9 r3 plus 1551 PreIndex",
2767       "PositivePreIndex_al_r9_r3_plus_1551_PreIndex",
2768       ARRAY_SIZE(kPositivePreIndex),
2769       kPositivePreIndex},
2770      {{al, r3, r14, plus, 1556, PreIndex},
2771       "al r3 r14 plus 1556 PreIndex",
2772       "PositivePreIndex_al_r3_r14_plus_1556_PreIndex",
2773       ARRAY_SIZE(kPositivePreIndex),
2774       kPositivePreIndex},
2775      {{al, r6, r9, plus, 1359, PreIndex},
2776       "al r6 r9 plus 1359 PreIndex",
2777       "PositivePreIndex_al_r6_r9_plus_1359_PreIndex",
2778       ARRAY_SIZE(kPositivePreIndex),
2779       kPositivePreIndex},
2780      {{al, r2, r7, plus, 3438, PreIndex},
2781       "al r2 r7 plus 3438 PreIndex",
2782       "PositivePreIndex_al_r2_r7_plus_3438_PreIndex",
2783       ARRAY_SIZE(kPositivePreIndex),
2784       kPositivePreIndex},
2785      {{al, r7, r5, plus, 1526, PreIndex},
2786       "al r7 r5 plus 1526 PreIndex",
2787       "PositivePreIndex_al_r7_r5_plus_1526_PreIndex",
2788       ARRAY_SIZE(kPositivePreIndex),
2789       kPositivePreIndex},
2790      {{al, r12, r7, plus, 57, PreIndex},
2791       "al r12 r7 plus 57 PreIndex",
2792       "PositivePreIndex_al_r12_r7_plus_57_PreIndex",
2793       ARRAY_SIZE(kPositivePreIndex),
2794       kPositivePreIndex},
2795      {{al, r12, r0, plus, 3138, PreIndex},
2796       "al r12 r0 plus 3138 PreIndex",
2797       "PositivePreIndex_al_r12_r0_plus_3138_PreIndex",
2798       ARRAY_SIZE(kPositivePreIndex),
2799       kPositivePreIndex},
2800      {{al, r4, r11, plus, 672, PreIndex},
2801       "al r4 r11 plus 672 PreIndex",
2802       "PositivePreIndex_al_r4_r11_plus_672_PreIndex",
2803       ARRAY_SIZE(kPositivePreIndex),
2804       kPositivePreIndex},
2805      {{al, r10, r14, plus, 689, PreIndex},
2806       "al r10 r14 plus 689 PreIndex",
2807       "PositivePreIndex_al_r10_r14_plus_689_PreIndex",
2808       ARRAY_SIZE(kPositivePreIndex),
2809       kPositivePreIndex},
2810      {{al, r1, r8, plus, 3572, PreIndex},
2811       "al r1 r8 plus 3572 PreIndex",
2812       "PositivePreIndex_al_r1_r8_plus_3572_PreIndex",
2813       ARRAY_SIZE(kPositivePreIndex),
2814       kPositivePreIndex},
2815      {{al, r8, r6, plus, 3405, PreIndex},
2816       "al r8 r6 plus 3405 PreIndex",
2817       "PositivePreIndex_al_r8_r6_plus_3405_PreIndex",
2818       ARRAY_SIZE(kPositivePreIndex),
2819       kPositivePreIndex},
2820      {{al, r11, r0, plus, 1845, PreIndex},
2821       "al r11 r0 plus 1845 PreIndex",
2822       "PositivePreIndex_al_r11_r0_plus_1845_PreIndex",
2823       ARRAY_SIZE(kPositivePreIndex),
2824       kPositivePreIndex},
2825      {{al, r11, r3, plus, 791, PreIndex},
2826       "al r11 r3 plus 791 PreIndex",
2827       "PositivePreIndex_al_r11_r3_plus_791_PreIndex",
2828       ARRAY_SIZE(kPositivePreIndex),
2829       kPositivePreIndex},
2830      {{al, r4, r11, minus, 479, PreIndex},
2831       "al r4 r11 minus 479 PreIndex",
2832       "NegativePreIndex_al_r4_r11_minus_479_PreIndex",
2833       ARRAY_SIZE(kNegativePreIndex),
2834       kNegativePreIndex},
2835      {{al, r1, r10, minus, 3603, PreIndex},
2836       "al r1 r10 minus 3603 PreIndex",
2837       "NegativePreIndex_al_r1_r10_minus_3603_PreIndex",
2838       ARRAY_SIZE(kNegativePreIndex),
2839       kNegativePreIndex},
2840      {{al, r7, r9, minus, 704, PreIndex},
2841       "al r7 r9 minus 704 PreIndex",
2842       "NegativePreIndex_al_r7_r9_minus_704_PreIndex",
2843       ARRAY_SIZE(kNegativePreIndex),
2844       kNegativePreIndex},
2845      {{al, r5, r1, minus, 1017, PreIndex},
2846       "al r5 r1 minus 1017 PreIndex",
2847       "NegativePreIndex_al_r5_r1_minus_1017_PreIndex",
2848       ARRAY_SIZE(kNegativePreIndex),
2849       kNegativePreIndex},
2850      {{al, r3, r5, minus, 1712, PreIndex},
2851       "al r3 r5 minus 1712 PreIndex",
2852       "NegativePreIndex_al_r3_r5_minus_1712_PreIndex",
2853       ARRAY_SIZE(kNegativePreIndex),
2854       kNegativePreIndex},
2855      {{al, r8, r2, minus, 2046, PreIndex},
2856       "al r8 r2 minus 2046 PreIndex",
2857       "NegativePreIndex_al_r8_r2_minus_2046_PreIndex",
2858       ARRAY_SIZE(kNegativePreIndex),
2859       kNegativePreIndex},
2860      {{al, r14, r5, minus, 1999, PreIndex},
2861       "al r14 r5 minus 1999 PreIndex",
2862       "NegativePreIndex_al_r14_r5_minus_1999_PreIndex",
2863       ARRAY_SIZE(kNegativePreIndex),
2864       kNegativePreIndex},
2865      {{al, r5, r4, minus, 2849, PreIndex},
2866       "al r5 r4 minus 2849 PreIndex",
2867       "NegativePreIndex_al_r5_r4_minus_2849_PreIndex",
2868       ARRAY_SIZE(kNegativePreIndex),
2869       kNegativePreIndex},
2870      {{al, r9, r14, minus, 263, PreIndex},
2871       "al r9 r14 minus 263 PreIndex",
2872       "NegativePreIndex_al_r9_r14_minus_263_PreIndex",
2873       ARRAY_SIZE(kNegativePreIndex),
2874       kNegativePreIndex},
2875      {{al, r7, r1, minus, 517, PreIndex},
2876       "al r7 r1 minus 517 PreIndex",
2877       "NegativePreIndex_al_r7_r1_minus_517_PreIndex",
2878       ARRAY_SIZE(kNegativePreIndex),
2879       kNegativePreIndex},
2880      {{al, r14, r10, minus, 1961, PreIndex},
2881       "al r14 r10 minus 1961 PreIndex",
2882       "NegativePreIndex_al_r14_r10_minus_1961_PreIndex",
2883       ARRAY_SIZE(kNegativePreIndex),
2884       kNegativePreIndex},
2885      {{al, r7, r14, minus, 1295, PreIndex},
2886       "al r7 r14 minus 1295 PreIndex",
2887       "NegativePreIndex_al_r7_r14_minus_1295_PreIndex",
2888       ARRAY_SIZE(kNegativePreIndex),
2889       kNegativePreIndex},
2890      {{al, r1, r8, minus, 213, PreIndex},
2891       "al r1 r8 minus 213 PreIndex",
2892       "NegativePreIndex_al_r1_r8_minus_213_PreIndex",
2893       ARRAY_SIZE(kNegativePreIndex),
2894       kNegativePreIndex},
2895      {{al, r10, r9, minus, 2866, PreIndex},
2896       "al r10 r9 minus 2866 PreIndex",
2897       "NegativePreIndex_al_r10_r9_minus_2866_PreIndex",
2898       ARRAY_SIZE(kNegativePreIndex),
2899       kNegativePreIndex},
2900      {{al, r14, r6, minus, 1823, PreIndex},
2901       "al r14 r6 minus 1823 PreIndex",
2902       "NegativePreIndex_al_r14_r6_minus_1823_PreIndex",
2903       ARRAY_SIZE(kNegativePreIndex),
2904       kNegativePreIndex},
2905      {{al, r1, r14, minus, 2395, PreIndex},
2906       "al r1 r14 minus 2395 PreIndex",
2907       "NegativePreIndex_al_r1_r14_minus_2395_PreIndex",
2908       ARRAY_SIZE(kNegativePreIndex),
2909       kNegativePreIndex},
2910      {{al, r1, r6, minus, 2044, PreIndex},
2911       "al r1 r6 minus 2044 PreIndex",
2912       "NegativePreIndex_al_r1_r6_minus_2044_PreIndex",
2913       ARRAY_SIZE(kNegativePreIndex),
2914       kNegativePreIndex},
2915      {{al, r3, r5, minus, 3963, PreIndex},
2916       "al r3 r5 minus 3963 PreIndex",
2917       "NegativePreIndex_al_r3_r5_minus_3963_PreIndex",
2918       ARRAY_SIZE(kNegativePreIndex),
2919       kNegativePreIndex},
2920      {{al, r7, r8, minus, 3989, PreIndex},
2921       "al r7 r8 minus 3989 PreIndex",
2922       "NegativePreIndex_al_r7_r8_minus_3989_PreIndex",
2923       ARRAY_SIZE(kNegativePreIndex),
2924       kNegativePreIndex},
2925      {{al, r2, r0, minus, 3975, PreIndex},
2926       "al r2 r0 minus 3975 PreIndex",
2927       "NegativePreIndex_al_r2_r0_minus_3975_PreIndex",
2928       ARRAY_SIZE(kNegativePreIndex),
2929       kNegativePreIndex},
2930      {{al, r0, r10, minus, 481, PreIndex},
2931       "al r0 r10 minus 481 PreIndex",
2932       "NegativePreIndex_al_r0_r10_minus_481_PreIndex",
2933       ARRAY_SIZE(kNegativePreIndex),
2934       kNegativePreIndex},
2935      {{al, r1, r11, minus, 3696, PreIndex},
2936       "al r1 r11 minus 3696 PreIndex",
2937       "NegativePreIndex_al_r1_r11_minus_3696_PreIndex",
2938       ARRAY_SIZE(kNegativePreIndex),
2939       kNegativePreIndex},
2940      {{al, r12, r9, minus, 371, PreIndex},
2941       "al r12 r9 minus 371 PreIndex",
2942       "NegativePreIndex_al_r12_r9_minus_371_PreIndex",
2943       ARRAY_SIZE(kNegativePreIndex),
2944       kNegativePreIndex},
2945      {{al, r3, r9, minus, 2464, PreIndex},
2946       "al r3 r9 minus 2464 PreIndex",
2947       "NegativePreIndex_al_r3_r9_minus_2464_PreIndex",
2948       ARRAY_SIZE(kNegativePreIndex),
2949       kNegativePreIndex},
2950      {{al, r3, r0, minus, 1168, PreIndex},
2951       "al r3 r0 minus 1168 PreIndex",
2952       "NegativePreIndex_al_r3_r0_minus_1168_PreIndex",
2953       ARRAY_SIZE(kNegativePreIndex),
2954       kNegativePreIndex},
2955      {{al, r10, r0, minus, 1066, PreIndex},
2956       "al r10 r0 minus 1066 PreIndex",
2957       "NegativePreIndex_al_r10_r0_minus_1066_PreIndex",
2958       ARRAY_SIZE(kNegativePreIndex),
2959       kNegativePreIndex},
2960      {{al, r9, r1, minus, 1651, PreIndex},
2961       "al r9 r1 minus 1651 PreIndex",
2962       "NegativePreIndex_al_r9_r1_minus_1651_PreIndex",
2963       ARRAY_SIZE(kNegativePreIndex),
2964       kNegativePreIndex},
2965      {{al, r5, r0, minus, 3821, PreIndex},
2966       "al r5 r0 minus 3821 PreIndex",
2967       "NegativePreIndex_al_r5_r0_minus_3821_PreIndex",
2968       ARRAY_SIZE(kNegativePreIndex),
2969       kNegativePreIndex},
2970      {{al, r1, r6, minus, 2052, PreIndex},
2971       "al r1 r6 minus 2052 PreIndex",
2972       "NegativePreIndex_al_r1_r6_minus_2052_PreIndex",
2973       ARRAY_SIZE(kNegativePreIndex),
2974       kNegativePreIndex},
2975      {{al, r4, r12, minus, 490, PreIndex},
2976       "al r4 r12 minus 490 PreIndex",
2977       "NegativePreIndex_al_r4_r12_minus_490_PreIndex",
2978       ARRAY_SIZE(kNegativePreIndex),
2979       kNegativePreIndex},
2980      {{al, r5, r3, minus, 1922, PreIndex},
2981       "al r5 r3 minus 1922 PreIndex",
2982       "NegativePreIndex_al_r5_r3_minus_1922_PreIndex",
2983       ARRAY_SIZE(kNegativePreIndex),
2984       kNegativePreIndex},
2985      {{al, r14, r5, minus, 875, PreIndex},
2986       "al r14 r5 minus 875 PreIndex",
2987       "NegativePreIndex_al_r14_r5_minus_875_PreIndex",
2988       ARRAY_SIZE(kNegativePreIndex),
2989       kNegativePreIndex},
2990      {{al, r10, r2, minus, 2183, PreIndex},
2991       "al r10 r2 minus 2183 PreIndex",
2992       "NegativePreIndex_al_r10_r2_minus_2183_PreIndex",
2993       ARRAY_SIZE(kNegativePreIndex),
2994       kNegativePreIndex},
2995      {{al, r9, r4, minus, 1961, PreIndex},
2996       "al r9 r4 minus 1961 PreIndex",
2997       "NegativePreIndex_al_r9_r4_minus_1961_PreIndex",
2998       ARRAY_SIZE(kNegativePreIndex),
2999       kNegativePreIndex},
3000      {{al, r3, r5, minus, 3413, PreIndex},
3001       "al r3 r5 minus 3413 PreIndex",
3002       "NegativePreIndex_al_r3_r5_minus_3413_PreIndex",
3003       ARRAY_SIZE(kNegativePreIndex),
3004       kNegativePreIndex},
3005      {{al, r4, r14, minus, 2016, PreIndex},
3006       "al r4 r14 minus 2016 PreIndex",
3007       "NegativePreIndex_al_r4_r14_minus_2016_PreIndex",
3008       ARRAY_SIZE(kNegativePreIndex),
3009       kNegativePreIndex},
3010      {{al, r0, r3, minus, 484, PreIndex},
3011       "al r0 r3 minus 484 PreIndex",
3012       "NegativePreIndex_al_r0_r3_minus_484_PreIndex",
3013       ARRAY_SIZE(kNegativePreIndex),
3014       kNegativePreIndex},
3015      {{al, r11, r14, minus, 322, PreIndex},
3016       "al r11 r14 minus 322 PreIndex",
3017       "NegativePreIndex_al_r11_r14_minus_322_PreIndex",
3018       ARRAY_SIZE(kNegativePreIndex),
3019       kNegativePreIndex},
3020      {{al, r0, r5, minus, 2139, PreIndex},
3021       "al r0 r5 minus 2139 PreIndex",
3022       "NegativePreIndex_al_r0_r5_minus_2139_PreIndex",
3023       ARRAY_SIZE(kNegativePreIndex),
3024       kNegativePreIndex},
3025      {{al, r9, r14, minus, 2976, PreIndex},
3026       "al r9 r14 minus 2976 PreIndex",
3027       "NegativePreIndex_al_r9_r14_minus_2976_PreIndex",
3028       ARRAY_SIZE(kNegativePreIndex),
3029       kNegativePreIndex},
3030      {{al, r10, r0, minus, 2839, PreIndex},
3031       "al r10 r0 minus 2839 PreIndex",
3032       "NegativePreIndex_al_r10_r0_minus_2839_PreIndex",
3033       ARRAY_SIZE(kNegativePreIndex),
3034       kNegativePreIndex},
3035      {{al, r4, r2, minus, 2541, PreIndex},
3036       "al r4 r2 minus 2541 PreIndex",
3037       "NegativePreIndex_al_r4_r2_minus_2541_PreIndex",
3038       ARRAY_SIZE(kNegativePreIndex),
3039       kNegativePreIndex},
3040      {{al, r7, r0, minus, 3907, PreIndex},
3041       "al r7 r0 minus 3907 PreIndex",
3042       "NegativePreIndex_al_r7_r0_minus_3907_PreIndex",
3043       ARRAY_SIZE(kNegativePreIndex),
3044       kNegativePreIndex},
3045      {{al, r5, r14, minus, 3449, PreIndex},
3046       "al r5 r14 minus 3449 PreIndex",
3047       "NegativePreIndex_al_r5_r14_minus_3449_PreIndex",
3048       ARRAY_SIZE(kNegativePreIndex),
3049       kNegativePreIndex},
3050      {{al, r8, r14, minus, 2069, PreIndex},
3051       "al r8 r14 minus 2069 PreIndex",
3052       "NegativePreIndex_al_r8_r14_minus_2069_PreIndex",
3053       ARRAY_SIZE(kNegativePreIndex),
3054       kNegativePreIndex},
3055      {{al, r5, r6, minus, 3570, PreIndex},
3056       "al r5 r6 minus 3570 PreIndex",
3057       "NegativePreIndex_al_r5_r6_minus_3570_PreIndex",
3058       ARRAY_SIZE(kNegativePreIndex),
3059       kNegativePreIndex},
3060      {{al, r11, r4, minus, 811, PreIndex},
3061       "al r11 r4 minus 811 PreIndex",
3062       "NegativePreIndex_al_r11_r4_minus_811_PreIndex",
3063       ARRAY_SIZE(kNegativePreIndex),
3064       kNegativePreIndex},
3065      {{al, r5, r8, minus, 1867, PreIndex},
3066       "al r5 r8 minus 1867 PreIndex",
3067       "NegativePreIndex_al_r5_r8_minus_1867_PreIndex",
3068       ARRAY_SIZE(kNegativePreIndex),
3069       kNegativePreIndex},
3070      {{al, r8, r7, minus, 3978, PreIndex},
3071       "al r8 r7 minus 3978 PreIndex",
3072       "NegativePreIndex_al_r8_r7_minus_3978_PreIndex",
3073       ARRAY_SIZE(kNegativePreIndex),
3074       kNegativePreIndex},
3075      {{al, r6, r11, minus, 3438, PreIndex},
3076       "al r6 r11 minus 3438 PreIndex",
3077       "NegativePreIndex_al_r6_r11_minus_3438_PreIndex",
3078       ARRAY_SIZE(kNegativePreIndex),
3079       kNegativePreIndex},
3080      {{al, r9, r0, minus, 669, PreIndex},
3081       "al r9 r0 minus 669 PreIndex",
3082       "NegativePreIndex_al_r9_r0_minus_669_PreIndex",
3083       ARRAY_SIZE(kNegativePreIndex),
3084       kNegativePreIndex},
3085      {{al, r2, r7, minus, 1916, PreIndex},
3086       "al r2 r7 minus 1916 PreIndex",
3087       "NegativePreIndex_al_r2_r7_minus_1916_PreIndex",
3088       ARRAY_SIZE(kNegativePreIndex),
3089       kNegativePreIndex},
3090      {{al, r12, r6, minus, 3949, PreIndex},
3091       "al r12 r6 minus 3949 PreIndex",
3092       "NegativePreIndex_al_r12_r6_minus_3949_PreIndex",
3093       ARRAY_SIZE(kNegativePreIndex),
3094       kNegativePreIndex},
3095      {{al, r2, r14, minus, 496, PreIndex},
3096       "al r2 r14 minus 496 PreIndex",
3097       "NegativePreIndex_al_r2_r14_minus_496_PreIndex",
3098       ARRAY_SIZE(kNegativePreIndex),
3099       kNegativePreIndex},
3100      {{al, r2, r9, minus, 3914, PreIndex},
3101       "al r2 r9 minus 3914 PreIndex",
3102       "NegativePreIndex_al_r2_r9_minus_3914_PreIndex",
3103       ARRAY_SIZE(kNegativePreIndex),
3104       kNegativePreIndex},
3105      {{al, r11, r2, minus, 1377, PreIndex},
3106       "al r11 r2 minus 1377 PreIndex",
3107       "NegativePreIndex_al_r11_r2_minus_1377_PreIndex",
3108       ARRAY_SIZE(kNegativePreIndex),
3109       kNegativePreIndex},
3110      {{al, r8, r7, minus, 3007, PreIndex},
3111       "al r8 r7 minus 3007 PreIndex",
3112       "NegativePreIndex_al_r8_r7_minus_3007_PreIndex",
3113       ARRAY_SIZE(kNegativePreIndex),
3114       kNegativePreIndex},
3115      {{al, r9, r1, minus, 496, PreIndex},
3116       "al r9 r1 minus 496 PreIndex",
3117       "NegativePreIndex_al_r9_r1_minus_496_PreIndex",
3118       ARRAY_SIZE(kNegativePreIndex),
3119       kNegativePreIndex},
3120      {{al, r11, r7, minus, 138, PreIndex},
3121       "al r11 r7 minus 138 PreIndex",
3122       "NegativePreIndex_al_r11_r7_minus_138_PreIndex",
3123       ARRAY_SIZE(kNegativePreIndex),
3124       kNegativePreIndex},
3125      {{al, r0, r3, minus, 732, PreIndex},
3126       "al r0 r3 minus 732 PreIndex",
3127       "NegativePreIndex_al_r0_r3_minus_732_PreIndex",
3128       ARRAY_SIZE(kNegativePreIndex),
3129       kNegativePreIndex},
3130      {{al, r9, r14, minus, 1635, PreIndex},
3131       "al r9 r14 minus 1635 PreIndex",
3132       "NegativePreIndex_al_r9_r14_minus_1635_PreIndex",
3133       ARRAY_SIZE(kNegativePreIndex),
3134       kNegativePreIndex},
3135      {{al, r3, r0, minus, 2119, PreIndex},
3136       "al r3 r0 minus 2119 PreIndex",
3137       "NegativePreIndex_al_r3_r0_minus_2119_PreIndex",
3138       ARRAY_SIZE(kNegativePreIndex),
3139       kNegativePreIndex},
3140      {{al, r3, r14, minus, 1585, PreIndex},
3141       "al r3 r14 minus 1585 PreIndex",
3142       "NegativePreIndex_al_r3_r14_minus_1585_PreIndex",
3143       ARRAY_SIZE(kNegativePreIndex),
3144       kNegativePreIndex},
3145      {{al, r8, r11, minus, 831, PreIndex},
3146       "al r8 r11 minus 831 PreIndex",
3147       "NegativePreIndex_al_r8_r11_minus_831_PreIndex",
3148       ARRAY_SIZE(kNegativePreIndex),
3149       kNegativePreIndex},
3150      {{al, r11, r3, minus, 470, PreIndex},
3151       "al r11 r3 minus 470 PreIndex",
3152       "NegativePreIndex_al_r11_r3_minus_470_PreIndex",
3153       ARRAY_SIZE(kNegativePreIndex),
3154       kNegativePreIndex},
3155      {{al, r12, r6, minus, 47, PreIndex},
3156       "al r12 r6 minus 47 PreIndex",
3157       "NegativePreIndex_al_r12_r6_minus_47_PreIndex",
3158       ARRAY_SIZE(kNegativePreIndex),
3159       kNegativePreIndex},
3160      {{al, r1, r2, minus, 1542, PreIndex},
3161       "al r1 r2 minus 1542 PreIndex",
3162       "NegativePreIndex_al_r1_r2_minus_1542_PreIndex",
3163       ARRAY_SIZE(kNegativePreIndex),
3164       kNegativePreIndex},
3165      {{al, r11, r7, minus, 2442, PreIndex},
3166       "al r11 r7 minus 2442 PreIndex",
3167       "NegativePreIndex_al_r11_r7_minus_2442_PreIndex",
3168       ARRAY_SIZE(kNegativePreIndex),
3169       kNegativePreIndex},
3170      {{al, r7, r10, minus, 1896, PreIndex},
3171       "al r7 r10 minus 1896 PreIndex",
3172       "NegativePreIndex_al_r7_r10_minus_1896_PreIndex",
3173       ARRAY_SIZE(kNegativePreIndex),
3174       kNegativePreIndex},
3175      {{al, r14, r6, minus, 3504, PreIndex},
3176       "al r14 r6 minus 3504 PreIndex",
3177       "NegativePreIndex_al_r14_r6_minus_3504_PreIndex",
3178       ARRAY_SIZE(kNegativePreIndex),
3179       kNegativePreIndex},
3180      {{al, r11, r5, minus, 1872, PreIndex},
3181       "al r11 r5 minus 1872 PreIndex",
3182       "NegativePreIndex_al_r11_r5_minus_1872_PreIndex",
3183       ARRAY_SIZE(kNegativePreIndex),
3184       kNegativePreIndex},
3185      {{al, r14, r11, minus, 386, PreIndex},
3186       "al r14 r11 minus 386 PreIndex",
3187       "NegativePreIndex_al_r14_r11_minus_386_PreIndex",
3188       ARRAY_SIZE(kNegativePreIndex),
3189       kNegativePreIndex},
3190      {{al, r3, r12, minus, 2483, PreIndex},
3191       "al r3 r12 minus 2483 PreIndex",
3192       "NegativePreIndex_al_r3_r12_minus_2483_PreIndex",
3193       ARRAY_SIZE(kNegativePreIndex),
3194       kNegativePreIndex},
3195      {{al, r6, r2, minus, 2052, PreIndex},
3196       "al r6 r2 minus 2052 PreIndex",
3197       "NegativePreIndex_al_r6_r2_minus_2052_PreIndex",
3198       ARRAY_SIZE(kNegativePreIndex),
3199       kNegativePreIndex},
3200      {{al, r4, r10, minus, 1399, PreIndex},
3201       "al r4 r10 minus 1399 PreIndex",
3202       "NegativePreIndex_al_r4_r10_minus_1399_PreIndex",
3203       ARRAY_SIZE(kNegativePreIndex),
3204       kNegativePreIndex},
3205      {{al, r3, r5, minus, 1027, PreIndex},
3206       "al r3 r5 minus 1027 PreIndex",
3207       "NegativePreIndex_al_r3_r5_minus_1027_PreIndex",
3208       ARRAY_SIZE(kNegativePreIndex),
3209       kNegativePreIndex},
3210      {{al, r10, r14, minus, 2627, PreIndex},
3211       "al r10 r14 minus 2627 PreIndex",
3212       "NegativePreIndex_al_r10_r14_minus_2627_PreIndex",
3213       ARRAY_SIZE(kNegativePreIndex),
3214       kNegativePreIndex},
3215      {{al, r3, r9, minus, 2728, PreIndex},
3216       "al r3 r9 minus 2728 PreIndex",
3217       "NegativePreIndex_al_r3_r9_minus_2728_PreIndex",
3218       ARRAY_SIZE(kNegativePreIndex),
3219       kNegativePreIndex},
3220      {{al, r14, r8, minus, 2475, PreIndex},
3221       "al r14 r8 minus 2475 PreIndex",
3222       "NegativePreIndex_al_r14_r8_minus_2475_PreIndex",
3223       ARRAY_SIZE(kNegativePreIndex),
3224       kNegativePreIndex},
3225      {{al, r14, r5, minus, 510, PreIndex},
3226       "al r14 r5 minus 510 PreIndex",
3227       "NegativePreIndex_al_r14_r5_minus_510_PreIndex",
3228       ARRAY_SIZE(kNegativePreIndex),
3229       kNegativePreIndex},
3230      {{al, r14, r3, minus, 2311, PreIndex},
3231       "al r14 r3 minus 2311 PreIndex",
3232       "NegativePreIndex_al_r14_r3_minus_2311_PreIndex",
3233       ARRAY_SIZE(kNegativePreIndex),
3234       kNegativePreIndex},
3235      {{al, r7, r12, minus, 2792, PreIndex},
3236       "al r7 r12 minus 2792 PreIndex",
3237       "NegativePreIndex_al_r7_r12_minus_2792_PreIndex",
3238       ARRAY_SIZE(kNegativePreIndex),
3239       kNegativePreIndex},
3240      {{al, r4, r14, minus, 1655, PreIndex},
3241       "al r4 r14 minus 1655 PreIndex",
3242       "NegativePreIndex_al_r4_r14_minus_1655_PreIndex",
3243       ARRAY_SIZE(kNegativePreIndex),
3244       kNegativePreIndex},
3245      {{al, r10, r5, minus, 3282, PreIndex},
3246       "al r10 r5 minus 3282 PreIndex",
3247       "NegativePreIndex_al_r10_r5_minus_3282_PreIndex",
3248       ARRAY_SIZE(kNegativePreIndex),
3249       kNegativePreIndex},
3250      {{al, r11, r7, minus, 3472, PreIndex},
3251       "al r11 r7 minus 3472 PreIndex",
3252       "NegativePreIndex_al_r11_r7_minus_3472_PreIndex",
3253       ARRAY_SIZE(kNegativePreIndex),
3254       kNegativePreIndex},
3255      {{al, r14, r1, minus, 3266, PreIndex},
3256       "al r14 r1 minus 3266 PreIndex",
3257       "NegativePreIndex_al_r14_r1_minus_3266_PreIndex",
3258       ARRAY_SIZE(kNegativePreIndex),
3259       kNegativePreIndex},
3260      {{al, r5, r1, minus, 3256, PreIndex},
3261       "al r5 r1 minus 3256 PreIndex",
3262       "NegativePreIndex_al_r5_r1_minus_3256_PreIndex",
3263       ARRAY_SIZE(kNegativePreIndex),
3264       kNegativePreIndex},
3265      {{al, r7, r11, minus, 4, PreIndex},
3266       "al r7 r11 minus 4 PreIndex",
3267       "NegativePreIndex_al_r7_r11_minus_4_PreIndex",
3268       ARRAY_SIZE(kNegativePreIndex),
3269       kNegativePreIndex},
3270      {{al, r9, r3, minus, 1695, PreIndex},
3271       "al r9 r3 minus 1695 PreIndex",
3272       "NegativePreIndex_al_r9_r3_minus_1695_PreIndex",
3273       ARRAY_SIZE(kNegativePreIndex),
3274       kNegativePreIndex},
3275      {{al, r8, r1, minus, 2326, PreIndex},
3276       "al r8 r1 minus 2326 PreIndex",
3277       "NegativePreIndex_al_r8_r1_minus_2326_PreIndex",
3278       ARRAY_SIZE(kNegativePreIndex),
3279       kNegativePreIndex},
3280      {{al, r2, r14, minus, 1651, PreIndex},
3281       "al r2 r14 minus 1651 PreIndex",
3282       "NegativePreIndex_al_r2_r14_minus_1651_PreIndex",
3283       ARRAY_SIZE(kNegativePreIndex),
3284       kNegativePreIndex},
3285      {{al, r3, r1, minus, 955, PreIndex},
3286       "al r3 r1 minus 955 PreIndex",
3287       "NegativePreIndex_al_r3_r1_minus_955_PreIndex",
3288       ARRAY_SIZE(kNegativePreIndex),
3289       kNegativePreIndex},
3290      {{al, r0, r9, minus, 3443, PreIndex},
3291       "al r0 r9 minus 3443 PreIndex",
3292       "NegativePreIndex_al_r0_r9_minus_3443_PreIndex",
3293       ARRAY_SIZE(kNegativePreIndex),
3294       kNegativePreIndex},
3295      {{al, r14, r10, minus, 1017, PreIndex},
3296       "al r14 r10 minus 1017 PreIndex",
3297       "NegativePreIndex_al_r14_r10_minus_1017_PreIndex",
3298       ARRAY_SIZE(kNegativePreIndex),
3299       kNegativePreIndex},
3300      {{al, r4, r3, minus, 2703, PreIndex},
3301       "al r4 r3 minus 2703 PreIndex",
3302       "NegativePreIndex_al_r4_r3_minus_2703_PreIndex",
3303       ARRAY_SIZE(kNegativePreIndex),
3304       kNegativePreIndex},
3305      {{al, r8, r10, minus, 831, PreIndex},
3306       "al r8 r10 minus 831 PreIndex",
3307       "NegativePreIndex_al_r8_r10_minus_831_PreIndex",
3308       ARRAY_SIZE(kNegativePreIndex),
3309       kNegativePreIndex},
3310      {{al, r5, r6, minus, 3194, PreIndex},
3311       "al r5 r6 minus 3194 PreIndex",
3312       "NegativePreIndex_al_r5_r6_minus_3194_PreIndex",
3313       ARRAY_SIZE(kNegativePreIndex),
3314       kNegativePreIndex},
3315      {{al, r2, r3, minus, 3607, PreIndex},
3316       "al r2 r3 minus 3607 PreIndex",
3317       "NegativePreIndex_al_r2_r3_minus_3607_PreIndex",
3318       ARRAY_SIZE(kNegativePreIndex),
3319       kNegativePreIndex},
3320      {{al, r14, r7, minus, 2119, PreIndex},
3321       "al r14 r7 minus 2119 PreIndex",
3322       "NegativePreIndex_al_r14_r7_minus_2119_PreIndex",
3323       ARRAY_SIZE(kNegativePreIndex),
3324       kNegativePreIndex},
3325      {{al, r4, r3, minus, 2559, PreIndex},
3326       "al r4 r3 minus 2559 PreIndex",
3327       "NegativePreIndex_al_r4_r3_minus_2559_PreIndex",
3328       ARRAY_SIZE(kNegativePreIndex),
3329       kNegativePreIndex}};
3330 
3331 // We record all inputs to the instructions as outputs. This way, we also check
3332 // that what shouldn't change didn't change.
3333 struct TestResult {
3334   size_t output_size;
3335   const Inputs* outputs;
3336 };
3337 
3338 // These headers each contain an array of `TestResult` with the reference output
3339 // values. The reference arrays are names `kReference{mnemonic}`.
3340 #include "aarch32/traces/simulator-cond-rd-memop-immediate-8192-a32-ldr.h"
3341 #include "aarch32/traces/simulator-cond-rd-memop-immediate-8192-a32-ldrb.h"
3342 #include "aarch32/traces/simulator-cond-rd-memop-immediate-8192-a32-str.h"
3343 #include "aarch32/traces/simulator-cond-rd-memop-immediate-8192-a32-strb.h"
3344 
3345 
3346 // The maximum number of errors to report in detail for each test.
3347 const unsigned kErrorReportLimit = 8;
3348 
3349 typedef void (MacroAssembler::*Fn)(Condition cond,
3350                                    Register rd,
3351                                    const MemOperand& memop);
3352 
TestHelper(Fn instruction,const char * mnemonic,const TestResult reference[])3353 void TestHelper(Fn instruction,
3354                 const char* mnemonic,
3355                 const TestResult reference[]) {
3356   SETUP();
3357   masm.UseA32();
3358   START();
3359 
3360   // Data to compare to `reference`.
3361   TestResult* results[ARRAY_SIZE(kTests)];
3362 
3363   // Test cases for memory bound instructions may allocate a buffer and save its
3364   // address in this array.
3365   byte* scratch_memory_buffers[ARRAY_SIZE(kTests)];
3366 
3367   // Generate a loop for each element in `kTests`. Each loop tests one specific
3368   // instruction.
3369   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
3370     // Allocate results on the heap for this test.
3371     results[i] = new TestResult;
3372     results[i]->outputs = new Inputs[kTests[i].input_size];
3373     results[i]->output_size = kTests[i].input_size;
3374 
3375     size_t input_stride = sizeof(kTests[i].inputs[0]) * kTests[i].input_size;
3376     VIXL_ASSERT(IsUint32(input_stride));
3377 
3378     scratch_memory_buffers[i] = NULL;
3379 
3380     Label loop;
3381     UseScratchRegisterScope scratch_registers(&masm);
3382     // Include all registers from r0 ro r12.
3383     scratch_registers.Include(RegisterList(0x1fff));
3384 
3385     // Values to pass to the macro-assembler.
3386     Condition cond = kTests[i].operands.cond;
3387     Register rd = kTests[i].operands.rd;
3388     Register rn = kTests[i].operands.rn;
3389     Sign sign = kTests[i].operands.sign;
3390     int32_t offset = kTests[i].operands.offset;
3391     AddrMode addr_mode = kTests[i].operands.addr_mode;
3392     MemOperand memop(rn, sign, offset, addr_mode);
3393     scratch_registers.Exclude(rd);
3394     scratch_registers.Exclude(rn);
3395 
3396     // Allocate reserved registers for our own use.
3397     Register input_ptr = scratch_registers.Acquire();
3398     Register input_end = scratch_registers.Acquire();
3399     Register result_ptr = scratch_registers.Acquire();
3400 
3401     // Initialize `input_ptr` to the first element and `input_end` the address
3402     // after the array.
3403     __ Mov(input_ptr, Operand::From(kTests[i].inputs));
3404     __ Add(input_end, input_ptr, static_cast<uint32_t>(input_stride));
3405     __ Mov(result_ptr, Operand::From(results[i]->outputs));
3406     __ Bind(&loop);
3407 
3408     {
3409       UseScratchRegisterScope temp_registers(&masm);
3410       Register nzcv_bits = temp_registers.Acquire();
3411       Register saved_q_bit = temp_registers.Acquire();
3412       // Save the `Q` bit flag.
3413       __ Mrs(saved_q_bit, APSR);
3414       __ And(saved_q_bit, saved_q_bit, QFlag);
3415       // Set the `NZCV` and `Q` flags together.
3416       __ Ldr(nzcv_bits, MemOperand(input_ptr, offsetof(Inputs, apsr)));
3417       __ Orr(nzcv_bits, nzcv_bits, saved_q_bit);
3418       __ Msr(APSR_nzcvq, nzcv_bits);
3419     }
3420     __ Ldr(rd, MemOperand(input_ptr, offsetof(Inputs, rd)));
3421     // Allocate 4 bytes for the instruction to work with.
3422     scratch_memory_buffers[i] = new byte[4];
3423     {
3424       UseScratchRegisterScope temp_registers(&masm);
3425 
3426       Register memop_tmp = temp_registers.Acquire();
3427       Register base_register = memop.GetBaseRegister();
3428 
3429       // Write the expected data into the scratch buffer.
3430       __ Mov(base_register, Operand::From(scratch_memory_buffers[i]));
3431       __ Ldr(memop_tmp, MemOperand(input_ptr, offsetof(Inputs, memop) + 4));
3432       __ Str(memop_tmp, MemOperand(base_register));
3433 
3434       // Compute the address to put into the base register so that the
3435       // `MemOperand` points to the right location.
3436       // TODO: Support more kinds of `MemOperand`.
3437       if (!memop.IsPostIndex()) {
3438         if (memop.IsImmediate()) {
3439           if (memop.GetSign().IsPlus()) {
3440             __ Mov(memop_tmp, memop.GetOffsetImmediate());
3441             __ Sub(base_register, base_register, memop_tmp);
3442           } else {
3443             __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3444             __ Add(base_register, base_register, memop_tmp);
3445           }
3446         } else if (memop.IsShiftedRegister()) {
3447           __ Mov(memop_tmp,
3448                  Operand(memop.GetOffsetRegister(),
3449                          memop.GetShift(),
3450                          memop.GetShiftAmount()));
3451           if (memop.GetSign().IsPlus()) {
3452             __ Sub(base_register, base_register, memop_tmp);
3453           } else {
3454             __ Add(base_register, base_register, memop_tmp);
3455           }
3456         }
3457       }
3458     }
3459 
3460 
3461     (masm.*instruction)(cond, rd, memop);
3462 
3463     {
3464       UseScratchRegisterScope temp_registers(&masm);
3465       Register nzcv_bits = temp_registers.Acquire();
3466       __ Mrs(nzcv_bits, APSR);
3467       // Only record the NZCV bits.
3468       __ And(nzcv_bits, nzcv_bits, NZCVFlag);
3469       __ Str(nzcv_bits, MemOperand(result_ptr, offsetof(Inputs, apsr)));
3470     }
3471     __ Str(rd, MemOperand(result_ptr, offsetof(Inputs, rd)));
3472     {
3473       UseScratchRegisterScope temp_registers(&masm);
3474       Register memop_tmp = temp_registers.Acquire();
3475       Register base_register = memop.GetBaseRegister();
3476 
3477       // Compute the address of the scratch buffer by from the base register. If
3478       // the instruction has updated the base register, we will be able to
3479       // record it.
3480       if (!memop.IsPostIndex()) {
3481         if (memop.IsImmediate()) {
3482           if (memop.GetSign().IsPlus()) {
3483             __ Mov(memop_tmp, memop.GetOffsetImmediate());
3484             __ Add(base_register, base_register, memop_tmp);
3485           } else {
3486             __ Mov(memop_tmp, -memop.GetOffsetImmediate());
3487             __ Sub(base_register, base_register, memop_tmp);
3488           }
3489         } else if (memop.IsShiftedRegister()) {
3490           __ Mov(memop_tmp,
3491                  Operand(memop.GetOffsetRegister(),
3492                          memop.GetShift(),
3493                          memop.GetShiftAmount()));
3494           if (memop.GetSign().IsPlus()) {
3495             __ Add(base_register, base_register, memop_tmp);
3496           } else {
3497             __ Sub(base_register, base_register, memop_tmp);
3498           }
3499         }
3500       }
3501 
3502       // Record the value of the base register, as an offset from the scratch
3503       // buffer's address.
3504       __ Mov(memop_tmp, Operand::From(scratch_memory_buffers[i]));
3505       __ Sub(base_register, base_register, memop_tmp);
3506       __ Str(base_register, MemOperand(result_ptr, offsetof(Inputs, memop)));
3507 
3508       // Record the 32 bit word from memory.
3509       __ Ldr(memop_tmp, MemOperand(memop_tmp));
3510       __ Str(memop_tmp, MemOperand(result_ptr, offsetof(Inputs, memop) + 4));
3511     }
3512 
3513 
3514     // Advance the result pointer.
3515     __ Add(result_ptr, result_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3516     // Loop back until `input_ptr` is lower than `input_base`.
3517     __ Add(input_ptr, input_ptr, Operand::From(sizeof(kTests[i].inputs[0])));
3518     __ Cmp(input_ptr, input_end);
3519     __ B(ne, &loop);
3520   }
3521 
3522   END();
3523 
3524   RUN();
3525 
3526   if (Test::generate_test_trace()) {
3527     // Print the results.
3528     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3529       printf("const Inputs kOutputs_%s_%s[] = {\n",
3530              mnemonic,
3531              kTests[i].identifier);
3532       for (size_t j = 0; j < results[i]->output_size; j++) {
3533         printf("  { ");
3534         printf("0x%08" PRIx32, results[i]->outputs[j].apsr);
3535         printf(", ");
3536         printf("0x%08" PRIx32, results[i]->outputs[j].rd);
3537         printf(", ");
3538         printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3539                results[i]->outputs[j].memop[0],
3540                results[i]->outputs[j].memop[1]);
3541         printf(" },\n");
3542       }
3543       printf("};\n");
3544     }
3545     printf("const TestResult kReference%s[] = {\n", mnemonic);
3546     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3547       printf("  {\n");
3548       printf("    ARRAY_SIZE(kOutputs_%s_%s),\n",
3549              mnemonic,
3550              kTests[i].identifier);
3551       printf("    kOutputs_%s_%s,\n", mnemonic, kTests[i].identifier);
3552       printf("  },\n");
3553     }
3554     printf("};\n");
3555   } else if (kCheckSimulatorTestResults) {
3556     // Check the results.
3557     unsigned total_error_count = 0;
3558     for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3559       bool instruction_has_errors = false;
3560       for (size_t j = 0; j < kTests[i].input_size; j++) {
3561         uint32_t apsr = results[i]->outputs[j].apsr;
3562         uint32_t rd = results[i]->outputs[j].rd;
3563         uint32_t memop[2] = {results[i]->outputs[j].memop[0],
3564                              results[i]->outputs[j].memop[1]};
3565 
3566         uint32_t apsr_input = kTests[i].inputs[j].apsr;
3567         uint32_t rd_input = kTests[i].inputs[j].rd;
3568         uint32_t memop_input[2] = {kTests[i].inputs[j].memop[0],
3569                                    kTests[i].inputs[j].memop[1]};
3570 
3571         uint32_t apsr_ref = reference[i].outputs[j].apsr;
3572         uint32_t rd_ref = reference[i].outputs[j].rd;
3573         uint32_t memop_ref[2] = {results[i]->outputs[j].memop[0],
3574                                  results[i]->outputs[j].memop[1]};
3575 
3576 
3577         if (((apsr != apsr_ref) || (rd != rd_ref) ||
3578              ((memop[0] != memop_ref[0]) && (memop[1] != memop_ref[1]))) &&
3579             (++total_error_count <= kErrorReportLimit)) {
3580           // Print the instruction once even if it triggered multiple failures.
3581           if (!instruction_has_errors) {
3582             printf("Error(s) when testing \"%s %s\":\n",
3583                    mnemonic,
3584                    kTests[i].operands_description);
3585             instruction_has_errors = true;
3586           }
3587           // Print subsequent errors.
3588           printf("  Input:    ");
3589           printf("0x%08" PRIx32, apsr_input);
3590           printf(", ");
3591           printf("0x%08" PRIx32, rd_input);
3592           printf(", ");
3593           printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3594                  memop_input[0],
3595                  memop_input[1]);
3596           printf("\n");
3597           printf("  Expected: ");
3598           printf("0x%08" PRIx32, apsr_ref);
3599           printf(", ");
3600           printf("0x%08" PRIx32, rd_ref);
3601           printf(", ");
3602           printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}",
3603                  memop_ref[0],
3604                  memop_ref[1]);
3605           printf("\n");
3606           printf("  Found:    ");
3607           printf("0x%08" PRIx32, apsr);
3608           printf(", ");
3609           printf("0x%08" PRIx32, rd);
3610           printf(", ");
3611           printf("{0x%08" PRIx32 ", 0x%08" PRIx32 "}", memop[0], memop[1]);
3612           printf("\n\n");
3613         }
3614       }
3615     }
3616 
3617     if (total_error_count > kErrorReportLimit) {
3618       printf("%u other errors follow.\n",
3619              total_error_count - kErrorReportLimit);
3620     }
3621     VIXL_CHECK(total_error_count == 0);
3622   } else {
3623     VIXL_WARNING("Assembled the code, but did not run anything.\n");
3624   }
3625 
3626   for (size_t i = 0; i < ARRAY_SIZE(kTests); i++) {
3627     delete[] results[i]->outputs;
3628     delete results[i];
3629     delete[] scratch_memory_buffers[i];
3630   }
3631 
3632   TEARDOWN();
3633 }
3634 
3635 // Instantiate tests for each instruction in the list.
3636 // TODO: Remove this limitation by having a sandboxing mechanism.
3637 #if defined(VIXL_HOST_POINTER_32)
3638 #define TEST(mnemonic)                                                      \
3639   void Test_##mnemonic() {                                                  \
3640     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
3641   }                                                                         \
3642   Test test_##mnemonic(                                                     \
3643       "AARCH32_SIMULATOR_COND_RD_MEMOP_IMMEDIATE_8192_A32_" #mnemonic,      \
3644       &Test_##mnemonic);
3645 #else
3646 #define TEST(mnemonic)                                                 \
3647   void Test_##mnemonic() {                                             \
3648     VIXL_WARNING("This test can only run on a 32-bit host.\n");        \
3649     USE(TestHelper);                                                   \
3650   }                                                                    \
3651   Test test_##mnemonic(                                                \
3652       "AARCH32_SIMULATOR_COND_RD_MEMOP_IMMEDIATE_8192_A32_" #mnemonic, \
3653       &Test_##mnemonic);
3654 #endif
3655 
3656 FOREACH_INSTRUCTION(TEST)
3657 #undef TEST
3658 
3659 }  // namespace
3660 #endif
3661 
3662 }  // namespace aarch32
3663 }  // namespace vixl
3664