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