Home | History | Annotate | Download | only in aarch32
      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 
   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