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-assembler-aarch32.cc.in template file using
     31 // tools/generate_tests.py.
     32 //
     33 // PLEASE DO NOT EDIT.
     34 // -----------------------------------------------------------------------------
     35 
     36 
     37 #include "test-runner.h"
     38 
     39 #include "test-utils.h"
     40 #include "test-utils-aarch32.h"
     41 
     42 #include "aarch32/assembler-aarch32.h"
     43 #include "aarch32/macro-assembler-aarch32.h"
     44 
     45 #define BUF_SIZE (4096)
     46 
     47 namespace vixl {
     48 namespace aarch32 {
     49 
     50 // List of instruction mnemonics.
     51 #define FOREACH_INSTRUCTION(M) \
     52   M(cmn)                       \
     53   M(cmp)                       \
     54   M(mov)                       \
     55   M(movs)                      \
     56   M(mvn)                       \
     57   M(mvns)                      \
     58   M(teq)                       \
     59   M(tst)
     60 
     61 
     62 // The following definitions are defined again in each generated test, therefore
     63 // we need to place them in an anomymous namespace. It expresses that they are
     64 // local to this file only, and the compiler is not allowed to share these types
     65 // across test files during template instantiation. Specifically, `Operands` has
     66 // various layouts across generated tests so it absolutely cannot be shared.
     67 
     68 #ifdef VIXL_INCLUDE_TARGET_A32
     69 namespace {
     70 
     71 // Values to be passed to the assembler to produce the instruction under test.
     72 struct Operands {
     73   Condition cond;
     74   Register rd;
     75   Register rn;
     76   ShiftType shift;
     77   Register rs;
     78 };
     79 
     80 // This structure contains all data needed to test one specific
     81 // instruction.
     82 struct TestData {
     83   // The `operands` field represents what to pass to the assembler to
     84   // produce the instruction.
     85   Operands operands;
     86   // True if we need to generate an IT instruction for this test to be valid.
     87   bool in_it_block;
     88   // The condition to give the IT instruction, this will be set to "al" by
     89   // default.
     90   Condition it_condition;
     91   // Description of the operands, used for error reporting.
     92   const char* operands_description;
     93   // Unique identifier, used for generating traces.
     94   const char* identifier;
     95 };
     96 
     97 struct TestResult {
     98   size_t size;
     99   const byte* encoding;
    100 };
    101 
    102 // Each element of this array produce one instruction encoding.
    103 const TestData kTests[] = {
    104     {{gt, r13, r11, LSL, r12},
    105      false,
    106      al,
    107      "gt r13 r11 LSL r12",
    108      "gt_r13_r11_LSL_r12"},
    109     {{gt, r12, r4, LSR, r6}, false, al, "gt r12 r4 LSR r6", "gt_r12_r4_LSR_r6"},
    110     {{ge, r11, r13, ROR, r2},
    111      false,
    112      al,
    113      "ge r11 r13 ROR r2",
    114      "ge_r11_r13_ROR_r2"},
    115     {{hi, r9, r8, ASR, r10}, false, al, "hi r9 r8 ASR r10", "hi_r9_r8_ASR_r10"},
    116     {{al, r9, r10, LSL, r4}, false, al, "al r9 r10 LSL r4", "al_r9_r10_LSL_r4"},
    117     {{gt, r4, r11, LSR, r4}, false, al, "gt r4 r11 LSR r4", "gt_r4_r11_LSR_r4"},
    118     {{vc, r4, r6, ASR, r11}, false, al, "vc r4 r6 ASR r11", "vc_r4_r6_ASR_r11"},
    119     {{mi, r9, r14, LSR, r9}, false, al, "mi r9 r14 LSR r9", "mi_r9_r14_LSR_r9"},
    120     {{ne, r5, r10, LSR, r8}, false, al, "ne r5 r10 LSR r8", "ne_r5_r10_LSR_r8"},
    121     {{eq, r3, r0, ROR, r11}, false, al, "eq r3 r0 ROR r11", "eq_r3_r0_ROR_r11"},
    122     {{gt, r9, r11, LSL, r12},
    123      false,
    124      al,
    125      "gt r9 r11 LSL r12",
    126      "gt_r9_r11_LSL_r12"},
    127     {{ge, r14, r6, ROR, r13},
    128      false,
    129      al,
    130      "ge r14 r6 ROR r13",
    131      "ge_r14_r6_ROR_r13"},
    132     {{vc, r14, r14, LSR, r11},
    133      false,
    134      al,
    135      "vc r14 r14 LSR r11",
    136      "vc_r14_r14_LSR_r11"},
    137     {{cc, r6, r3, LSL, r2}, false, al, "cc r6 r3 LSL r2", "cc_r6_r3_LSL_r2"},
    138     {{ge, r4, r6, ROR, r7}, false, al, "ge r4 r6 ROR r7", "ge_r4_r6_ROR_r7"},
    139     {{vs, r13, r3, LSR, r12},
    140      false,
    141      al,
    142      "vs r13 r3 LSR r12",
    143      "vs_r13_r3_LSR_r12"},
    144     {{ge, r8, r11, LSR, r13},
    145      false,
    146      al,
    147      "ge r8 r11 LSR r13",
    148      "ge_r8_r11_LSR_r13"},
    149     {{cc, r5, r0, LSR, r10}, false, al, "cc r5 r0 LSR r10", "cc_r5_r0_LSR_r10"},
    150     {{lt, r7, r12, ASR, r7}, false, al, "lt r7 r12 ASR r7", "lt_r7_r12_ASR_r7"},
    151     {{cc, r14, r1, LSR, r14},
    152      false,
    153      al,
    154      "cc r14 r1 LSR r14",
    155      "cc_r14_r1_LSR_r14"},
    156     {{vs, r10, r1, LSR, r1}, false, al, "vs r10 r1 LSR r1", "vs_r10_r1_LSR_r1"},
    157     {{lt, r5, r0, ASR, r2}, false, al, "lt r5 r0 ASR r2", "lt_r5_r0_ASR_r2"},
    158     {{ne, r6, r3, LSL, r2}, false, al, "ne r6 r3 LSL r2", "ne_r6_r3_LSL_r2"},
    159     {{vs, r5, r5, LSL, r13}, false, al, "vs r5 r5 LSL r13", "vs_r5_r5_LSL_r13"},
    160     {{hi, r9, r11, ROR, r13},
    161      false,
    162      al,
    163      "hi r9 r11 ROR r13",
    164      "hi_r9_r11_ROR_r13"},
    165     {{vs, r0, r2, LSL, r6}, false, al, "vs r0 r2 LSL r6", "vs_r0_r2_LSL_r6"},
    166     {{le, r7, r1, ASR, r0}, false, al, "le r7 r1 ASR r0", "le_r7_r1_ASR_r0"},
    167     {{ge, r2, r12, LSL, r10},
    168      false,
    169      al,
    170      "ge r2 r12 LSL r10",
    171      "ge_r2_r12_LSL_r10"},
    172     {{vc, r14, r1, ASR, r9}, false, al, "vc r14 r1 ASR r9", "vc_r14_r1_ASR_r9"},
    173     {{lt, r5, r1, ROR, r5}, false, al, "lt r5 r1 ROR r5", "lt_r5_r1_ROR_r5"},
    174     {{eq, r5, r12, ROR, r0}, false, al, "eq r5 r12 ROR r0", "eq_r5_r12_ROR_r0"},
    175     {{pl, r7, r7, ASR, r9}, false, al, "pl r7 r7 ASR r9", "pl_r7_r7_ASR_r9"},
    176     {{eq, r3, r10, LSR, r9}, false, al, "eq r3 r10 LSR r9", "eq_r3_r10_LSR_r9"},
    177     {{ge, r0, r5, LSR, r13}, false, al, "ge r0 r5 LSR r13", "ge_r0_r5_LSR_r13"},
    178     {{cc, r13, r1, ASR, r6}, false, al, "cc r13 r1 ASR r6", "cc_r13_r1_ASR_r6"},
    179     {{cs, r12, r3, ASR, r12},
    180      false,
    181      al,
    182      "cs r12 r3 ASR r12",
    183      "cs_r12_r3_ASR_r12"},
    184     {{al, r12, r10, ROR, r0},
    185      false,
    186      al,
    187      "al r12 r10 ROR r0",
    188      "al_r12_r10_ROR_r0"},
    189     {{al, r6, r13, LSL, r0}, false, al, "al r6 r13 LSL r0", "al_r6_r13_LSL_r0"},
    190     {{cc, r14, r14, ROR, r0},
    191      false,
    192      al,
    193      "cc r14 r14 ROR r0",
    194      "cc_r14_r14_ROR_r0"},
    195     {{ge, r2, r14, ROR, r9}, false, al, "ge r2 r14 ROR r9", "ge_r2_r14_ROR_r9"},
    196     {{hi, r5, r10, LSL, r8}, false, al, "hi r5 r10 LSL r8", "hi_r5_r10_LSL_r8"},
    197     {{ge, r13, r5, LSL, r7}, false, al, "ge r13 r5 LSL r7", "ge_r13_r5_LSL_r7"},
    198     {{cc, r12, r10, ASR, r4},
    199      false,
    200      al,
    201      "cc r12 r10 ASR r4",
    202      "cc_r12_r10_ASR_r4"},
    203     {{ls, r12, r3, LSL, r7}, false, al, "ls r12 r3 LSL r7", "ls_r12_r3_LSL_r7"},
    204     {{cs, r2, r9, ASR, r8}, false, al, "cs r2 r9 ASR r8", "cs_r2_r9_ASR_r8"},
    205     {{vs, r1, r5, LSR, r1}, false, al, "vs r1 r5 LSR r1", "vs_r1_r5_LSR_r1"},
    206     {{cs, r7, r14, ASR, r9}, false, al, "cs r7 r14 ASR r9", "cs_r7_r14_ASR_r9"},
    207     {{hi, r6, r10, ASR, r0}, false, al, "hi r6 r10 ASR r0", "hi_r6_r10_ASR_r0"},
    208     {{pl, r13, r8, ASR, r13},
    209      false,
    210      al,
    211      "pl r13 r8 ASR r13",
    212      "pl_r13_r8_ASR_r13"},
    213     {{vs, r1, r0, ROR, r2}, false, al, "vs r1 r0 ROR r2", "vs_r1_r0_ROR_r2"},
    214     {{lt, r14, r0, LSL, r10},
    215      false,
    216      al,
    217      "lt r14 r0 LSL r10",
    218      "lt_r14_r0_LSL_r10"},
    219     {{ls, r8, r12, ROR, r14},
    220      false,
    221      al,
    222      "ls r8 r12 ROR r14",
    223      "ls_r8_r12_ROR_r14"},
    224     {{al, r11, r2, LSL, r0}, false, al, "al r11 r2 LSL r0", "al_r11_r2_LSL_r0"},
    225     {{mi, r0, r8, LSR, r7}, false, al, "mi r0 r8 LSR r7", "mi_r0_r8_LSR_r7"},
    226     {{cc, r3, r5, LSL, r9}, false, al, "cc r3 r5 LSL r9", "cc_r3_r5_LSL_r9"},
    227     {{vc, r14, r4, ROR, r4}, false, al, "vc r14 r4 ROR r4", "vc_r14_r4_ROR_r4"},
    228     {{cs, r1, r8, LSR, r7}, false, al, "cs r1 r8 LSR r7", "cs_r1_r8_LSR_r7"},
    229     {{ls, r6, r5, ASR, r13}, false, al, "ls r6 r5 ASR r13", "ls_r6_r5_ASR_r13"},
    230     {{pl, r0, r12, LSR, r5}, false, al, "pl r0 r12 LSR r5", "pl_r0_r12_LSR_r5"},
    231     {{lt, r9, r7, ROR, r2}, false, al, "lt r9 r7 ROR r2", "lt_r9_r7_ROR_r2"},
    232     {{ne, r6, r13, ASR, r13},
    233      false,
    234      al,
    235      "ne r6 r13 ASR r13",
    236      "ne_r6_r13_ASR_r13"},
    237     {{cc, r9, r1, LSR, r5}, false, al, "cc r9 r1 LSR r5", "cc_r9_r1_LSR_r5"},
    238     {{ls, r8, r0, ROR, r10}, false, al, "ls r8 r0 ROR r10", "ls_r8_r0_ROR_r10"},
    239     {{mi, r9, r8, LSR, r2}, false, al, "mi r9 r8 LSR r2", "mi_r9_r8_LSR_r2"},
    240     {{pl, r10, r14, ROR, r8},
    241      false,
    242      al,
    243      "pl r10 r14 ROR r8",
    244      "pl_r10_r14_ROR_r8"},
    245     {{hi, r4, r6, ROR, r10}, false, al, "hi r4 r6 ROR r10", "hi_r4_r6_ROR_r10"},
    246     {{vc, r0, r8, ROR, r10}, false, al, "vc r0 r8 ROR r10", "vc_r0_r8_ROR_r10"},
    247     {{ne, r0, r4, LSR, r11}, false, al, "ne r0 r4 LSR r11", "ne_r0_r4_LSR_r11"},
    248     {{pl, r0, r13, ROR, r14},
    249      false,
    250      al,
    251      "pl r0 r13 ROR r14",
    252      "pl_r0_r13_ROR_r14"},
    253     {{ne, r5, r6, LSL, r5}, false, al, "ne r5 r6 LSL r5", "ne_r5_r6_LSL_r5"},
    254     {{ge, r8, r3, ROR, r14}, false, al, "ge r8 r3 ROR r14", "ge_r8_r3_ROR_r14"},
    255     {{ne, r8, r7, LSL, r10}, false, al, "ne r8 r7 LSL r10", "ne_r8_r7_LSL_r10"},
    256     {{eq, r13, r9, ROR, r13},
    257      false,
    258      al,
    259      "eq r13 r9 ROR r13",
    260      "eq_r13_r9_ROR_r13"},
    261     {{eq, r10, r8, ROR, r14},
    262      false,
    263      al,
    264      "eq r10 r8 ROR r14",
    265      "eq_r10_r8_ROR_r14"},
    266     {{mi, r1, r8, ROR, r9}, false, al, "mi r1 r8 ROR r9", "mi_r1_r8_ROR_r9"},
    267     {{le, r10, r8, ROR, r10},
    268      false,
    269      al,
    270      "le r10 r8 ROR r10",
    271      "le_r10_r8_ROR_r10"},
    272     {{le, r7, r2, LSR, r11}, false, al, "le r7 r2 LSR r11", "le_r7_r2_LSR_r11"},
    273     {{le, r11, r9, LSL, r11},
    274      false,
    275      al,
    276      "le r11 r9 LSL r11",
    277      "le_r11_r9_LSL_r11"},
    278     {{cc, r5, r5, LSR, r4}, false, al, "cc r5 r5 LSR r4", "cc_r5_r5_LSR_r4"},
    279     {{al, r9, r5, LSL, r8}, false, al, "al r9 r5 LSL r8", "al_r9_r5_LSL_r8"},
    280     {{cs, r7, r14, LSL, r8}, false, al, "cs r7 r14 LSL r8", "cs_r7_r14_LSL_r8"},
    281     {{vc, r9, r9, LSR, r7}, false, al, "vc r9 r9 LSR r7", "vc_r9_r9_LSR_r7"},
    282     {{al, r13, r9, LSL, r1}, false, al, "al r13 r9 LSL r1", "al_r13_r9_LSL_r1"},
    283     {{cc, r8, r4, LSR, r14}, false, al, "cc r8 r4 LSR r14", "cc_r8_r4_LSR_r14"},
    284     {{cc, r14, r3, LSL, r10},
    285      false,
    286      al,
    287      "cc r14 r3 LSL r10",
    288      "cc_r14_r3_LSL_r10"},
    289     {{ge, r8, r6, ROR, r14}, false, al, "ge r8 r6 ROR r14", "ge_r8_r6_ROR_r14"},
    290     {{le, r4, r5, ASR, r5}, false, al, "le r4 r5 ASR r5", "le_r4_r5_ASR_r5"},
    291     {{vc, r4, r8, LSR, r6}, false, al, "vc r4 r8 LSR r6", "vc_r4_r8_LSR_r6"},
    292     {{vc, r9, r8, ROR, r14}, false, al, "vc r9 r8 ROR r14", "vc_r9_r8_ROR_r14"},
    293     {{ne, r7, r5, LSL, r11}, false, al, "ne r7 r5 LSL r11", "ne_r7_r5_LSL_r11"},
    294     {{vs, r12, r12, ASR, r8},
    295      false,
    296      al,
    297      "vs r12 r12 ASR r8",
    298      "vs_r12_r12_ASR_r8"},
    299     {{pl, r2, r14, ASR, r7}, false, al, "pl r2 r14 ASR r7", "pl_r2_r14_ASR_r7"},
    300     {{cc, r7, r10, ASR, r9}, false, al, "cc r7 r10 ASR r9", "cc_r7_r10_ASR_r9"},
    301     {{ne, r7, r10, LSL, r11},
    302      false,
    303      al,
    304      "ne r7 r10 LSL r11",
    305      "ne_r7_r10_LSL_r11"},
    306     {{vs, r13, r14, ROR, r0},
    307      false,
    308      al,
    309      "vs r13 r14 ROR r0",
    310      "vs_r13_r14_ROR_r0"},
    311     {{gt, r4, r12, LSL, r6}, false, al, "gt r4 r12 LSL r6", "gt_r4_r12_LSL_r6"},
    312     {{ge, r14, r6, ROR, r11},
    313      false,
    314      al,
    315      "ge r14 r6 ROR r11",
    316      "ge_r14_r6_ROR_r11"},
    317     {{pl, r2, r14, ASR, r0}, false, al, "pl r2 r14 ASR r0", "pl_r2_r14_ASR_r0"},
    318     {{gt, r7, r6, LSL, r11}, false, al, "gt r7 r6 LSL r11", "gt_r7_r6_LSL_r11"},
    319     {{cc, r11, r9, LSL, r11},
    320      false,
    321      al,
    322      "cc r11 r9 LSL r11",
    323      "cc_r11_r9_LSL_r11"},
    324     {{ne, r1, r5, ROR, r8}, false, al, "ne r1 r5 ROR r8", "ne_r1_r5_ROR_r8"},
    325     {{cs, r6, r2, ROR, r6}, false, al, "cs r6 r2 ROR r6", "cs_r6_r2_ROR_r6"},
    326     {{vc, r1, r14, LSL, r11},
    327      false,
    328      al,
    329      "vc r1 r14 LSL r11",
    330      "vc_r1_r14_LSL_r11"},
    331     {{cc, r10, r13, LSL, r11},
    332      false,
    333      al,
    334      "cc r10 r13 LSL r11",
    335      "cc_r10_r13_LSL_r11"},
    336     {{mi, r12, r10, ROR, r5},
    337      false,
    338      al,
    339      "mi r12 r10 ROR r5",
    340      "mi_r12_r10_ROR_r5"},
    341     {{ls, r2, r11, LSL, r3}, false, al, "ls r2 r11 LSL r3", "ls_r2_r11_LSL_r3"},
    342     {{lt, r6, r13, LSL, r12},
    343      false,
    344      al,
    345      "lt r6 r13 LSL r12",
    346      "lt_r6_r13_LSL_r12"},
    347     {{eq, r2, r14, ASR, r5}, false, al, "eq r2 r14 ASR r5", "eq_r2_r14_ASR_r5"},
    348     {{eq, r0, r14, LSR, r5}, false, al, "eq r0 r14 LSR r5", "eq_r0_r14_LSR_r5"},
    349     {{ls, r7, r11, LSL, r1}, false, al, "ls r7 r11 LSL r1", "ls_r7_r11_LSL_r1"},
    350     {{vs, r14, r13, LSR, r14},
    351      false,
    352      al,
    353      "vs r14 r13 LSR r14",
    354      "vs_r14_r13_LSR_r14"},
    355     {{vs, r13, r10, ASR, r3},
    356      false,
    357      al,
    358      "vs r13 r10 ASR r3",
    359      "vs_r13_r10_ASR_r3"},
    360     {{gt, r5, r4, LSL, r2}, false, al, "gt r5 r4 LSL r2", "gt_r5_r4_LSL_r2"},
    361     {{hi, r5, r12, LSR, r10},
    362      false,
    363      al,
    364      "hi r5 r12 LSR r10",
    365      "hi_r5_r12_LSR_r10"},
    366     {{mi, r11, r7, ROR, r11},
    367      false,
    368      al,
    369      "mi r11 r7 ROR r11",
    370      "mi_r11_r7_ROR_r11"},
    371     {{ne, r10, r7, ROR, r9}, false, al, "ne r10 r7 ROR r9", "ne_r10_r7_ROR_r9"},
    372     {{ls, r8, r6, ASR, r10}, false, al, "ls r8 r6 ASR r10", "ls_r8_r6_ASR_r10"},
    373     {{vc, r7, r10, ROR, r9}, false, al, "vc r7 r10 ROR r9", "vc_r7_r10_ROR_r9"},
    374     {{mi, r8, r3, LSR, r3}, false, al, "mi r8 r3 LSR r3", "mi_r8_r3_LSR_r3"},
    375     {{lt, r8, r2, ROR, r12}, false, al, "lt r8 r2 ROR r12", "lt_r8_r2_ROR_r12"},
    376     {{le, r10, r14, LSL, r11},
    377      false,
    378      al,
    379      "le r10 r14 LSL r11",
    380      "le_r10_r14_LSL_r11"},
    381     {{pl, r6, r6, LSR, r5}, false, al, "pl r6 r6 LSR r5", "pl_r6_r6_LSR_r5"},
    382     {{cc, r8, r4, ROR, r2}, false, al, "cc r8 r4 ROR r2", "cc_r8_r4_ROR_r2"},
    383     {{al, r7, r6, ASR, r2}, false, al, "al r7 r6 ASR r2", "al_r7_r6_ASR_r2"},
    384     {{ne, r2, r13, ASR, r8}, false, al, "ne r2 r13 ASR r8", "ne_r2_r13_ASR_r8"},
    385     {{ne, r1, r5, ROR, r12}, false, al, "ne r1 r5 ROR r12", "ne_r1_r5_ROR_r12"},
    386     {{lt, r10, r6, ROR, r8}, false, al, "lt r10 r6 ROR r8", "lt_r10_r6_ROR_r8"},
    387     {{cs, r2, r7, LSL, r0}, false, al, "cs r2 r7 LSL r0", "cs_r2_r7_LSL_r0"},
    388     {{ne, r3, r2, ASR, r4}, false, al, "ne r3 r2 ASR r4", "ne_r3_r2_ASR_r4"},
    389     {{mi, r4, r1, LSR, r0}, false, al, "mi r4 r1 LSR r0", "mi_r4_r1_LSR_r0"},
    390     {{lt, r1, r6, LSL, r10}, false, al, "lt r1 r6 LSL r10", "lt_r1_r6_LSL_r10"},
    391     {{gt, r6, r9, LSL, r13}, false, al, "gt r6 r9 LSL r13", "gt_r6_r9_LSL_r13"},
    392     {{vc, r5, r2, LSL, r13}, false, al, "vc r5 r2 LSL r13", "vc_r5_r2_LSL_r13"},
    393     {{ne, r11, r8, ROR, r5}, false, al, "ne r11 r8 ROR r5", "ne_r11_r8_ROR_r5"},
    394     {{eq, r10, r2, ROR, r12},
    395      false,
    396      al,
    397      "eq r10 r2 ROR r12",
    398      "eq_r10_r2_ROR_r12"},
    399     {{ge, r0, r5, LSR, r12}, false, al, "ge r0 r5 LSR r12", "ge_r0_r5_LSR_r12"},
    400     {{vs, r5, r13, ROR, r9}, false, al, "vs r5 r13 ROR r9", "vs_r5_r13_ROR_r9"},
    401     {{gt, r0, r6, ASR, r9}, false, al, "gt r0 r6 ASR r9", "gt_r0_r6_ASR_r9"},
    402     {{hi, r6, r0, LSR, r9}, false, al, "hi r6 r0 LSR r9", "hi_r6_r0_LSR_r9"},
    403     {{lt, r7, r4, ASR, r9}, false, al, "lt r7 r4 ASR r9", "lt_r7_r4_ASR_r9"},
    404     {{ge, r5, r0, ROR, r2}, false, al, "ge r5 r0 ROR r2", "ge_r5_r0_ROR_r2"},
    405     {{ls, r10, r11, ROR, r7},
    406      false,
    407      al,
    408      "ls r10 r11 ROR r7",
    409      "ls_r10_r11_ROR_r7"},
    410     {{cs, r7, r1, ASR, r13}, false, al, "cs r7 r1 ASR r13", "cs_r7_r1_ASR_r13"},
    411     {{pl, r3, r9, ASR, r11}, false, al, "pl r3 r9 ASR r11", "pl_r3_r9_ASR_r11"},
    412     {{ne, r13, r5, LSR, r2}, false, al, "ne r13 r5 LSR r2", "ne_r13_r5_LSR_r2"},
    413     {{vc, r5, r8, ASR, r6}, false, al, "vc r5 r8 ASR r6", "vc_r5_r8_ASR_r6"},
    414     {{ge, r8, r11, ROR, r13},
    415      false,
    416      al,
    417      "ge r8 r11 ROR r13",
    418      "ge_r8_r11_ROR_r13"},
    419     {{lt, r0, r10, LSR, r5}, false, al, "lt r0 r10 LSR r5", "lt_r0_r10_LSR_r5"},
    420     {{vc, r8, r1, ASR, r11}, false, al, "vc r8 r1 ASR r11", "vc_r8_r1_ASR_r11"},
    421     {{pl, r11, r9, ASR, r9}, false, al, "pl r11 r9 ASR r9", "pl_r11_r9_ASR_r9"},
    422     {{ls, r3, r1, LSL, r11}, false, al, "ls r3 r1 LSL r11", "ls_r3_r1_LSL_r11"},
    423     {{hi, r8, r12, ASR, r7}, false, al, "hi r8 r12 ASR r7", "hi_r8_r12_ASR_r7"},
    424     {{ne, r10, r12, LSR, r9},
    425      false,
    426      al,
    427      "ne r10 r12 LSR r9",
    428      "ne_r10_r12_LSR_r9"},
    429     {{ge, r12, r4, ASR, r14},
    430      false,
    431      al,
    432      "ge r12 r4 ASR r14",
    433      "ge_r12_r4_ASR_r14"},
    434     {{mi, r6, r2, ROR, r1}, false, al, "mi r6 r2 ROR r1", "mi_r6_r2_ROR_r1"},
    435     {{ls, r13, r13, LSL, r0},
    436      false,
    437      al,
    438      "ls r13 r13 LSL r0",
    439      "ls_r13_r13_LSL_r0"},
    440     {{eq, r8, r10, LSR, r0}, false, al, "eq r8 r10 LSR r0", "eq_r8_r10_LSR_r0"},
    441     {{gt, r5, r0, ROR, r14}, false, al, "gt r5 r0 ROR r14", "gt_r5_r0_ROR_r14"},
    442     {{vs, r3, r4, ROR, r3}, false, al, "vs r3 r4 ROR r3", "vs_r3_r4_ROR_r3"},
    443     {{lt, r5, r13, LSL, r6}, false, al, "lt r5 r13 LSL r6", "lt_r5_r13_LSL_r6"},
    444     {{cc, r5, r1, ASR, r13}, false, al, "cc r5 r1 ASR r13", "cc_r5_r1_ASR_r13"},
    445     {{lt, r11, r3, ROR, r7}, false, al, "lt r11 r3 ROR r7", "lt_r11_r3_ROR_r7"},
    446     {{cs, r12, r2, LSR, r4}, false, al, "cs r12 r2 LSR r4", "cs_r12_r2_LSR_r4"},
    447     {{vc, r3, r12, LSL, r4}, false, al, "vc r3 r12 LSL r4", "vc_r3_r12_LSL_r4"},
    448     {{hi, r14, r9, LSL, r5}, false, al, "hi r14 r9 LSL r5", "hi_r14_r9_LSL_r5"},
    449     {{ls, r10, r4, LSR, r5}, false, al, "ls r10 r4 LSR r5", "ls_r10_r4_LSR_r5"},
    450     {{ne, r11, r14, ROR, r14},
    451      false,
    452      al,
    453      "ne r11 r14 ROR r14",
    454      "ne_r11_r14_ROR_r14"},
    455     {{vc, r11, r12, ASR, r7},
    456      false,
    457      al,
    458      "vc r11 r12 ASR r7",
    459      "vc_r11_r12_ASR_r7"},
    460     {{cc, r7, r0, LSR, r3}, false, al, "cc r7 r0 LSR r3", "cc_r7_r0_LSR_r3"},
    461     {{cs, r1, r8, LSR, r3}, false, al, "cs r1 r8 LSR r3", "cs_r1_r8_LSR_r3"},
    462     {{mi, r7, r6, LSL, r13}, false, al, "mi r7 r6 LSL r13", "mi_r7_r6_LSL_r13"},
    463     {{hi, r10, r3, ROR, r7}, false, al, "hi r10 r3 ROR r7", "hi_r10_r3_ROR_r7"},
    464     {{vs, r2, r11, LSR, r13},
    465      false,
    466      al,
    467      "vs r2 r11 LSR r13",
    468      "vs_r2_r11_LSR_r13"},
    469     {{eq, r12, r14, LSL, r2},
    470      false,
    471      al,
    472      "eq r12 r14 LSL r2",
    473      "eq_r12_r14_LSL_r2"},
    474     {{vs, r14, r13, LSL, r6},
    475      false,
    476      al,
    477      "vs r14 r13 LSL r6",
    478      "vs_r14_r13_LSL_r6"},
    479     {{cs, r1, r0, LSL, r10}, false, al, "cs r1 r0 LSL r10", "cs_r1_r0_LSL_r10"},
    480     {{ge, r2, r14, LSR, r10},
    481      false,
    482      al,
    483      "ge r2 r14 LSR r10",
    484      "ge_r2_r14_LSR_r10"},
    485     {{mi, r14, r10, ROR, r0},
    486      false,
    487      al,
    488      "mi r14 r10 ROR r0",
    489      "mi_r14_r10_ROR_r0"},
    490     {{eq, r8, r4, ROR, r4}, false, al, "eq r8 r4 ROR r4", "eq_r8_r4_ROR_r4"},
    491     {{gt, r4, r9, LSR, r3}, false, al, "gt r4 r9 LSR r3", "gt_r4_r9_LSR_r3"},
    492     {{ls, r13, r0, ASR, r5}, false, al, "ls r13 r0 ASR r5", "ls_r13_r0_ASR_r5"},
    493     {{ge, r3, r13, ASR, r12},
    494      false,
    495      al,
    496      "ge r3 r13 ASR r12",
    497      "ge_r3_r13_ASR_r12"},
    498     {{vc, r9, r7, LSR, r12}, false, al, "vc r9 r7 LSR r12", "vc_r9_r7_LSR_r12"},
    499     {{al, r1, r0, LSL, r8}, false, al, "al r1 r0 LSL r8", "al_r1_r0_LSL_r8"},
    500     {{ls, r11, r7, ROR, r5}, false, al, "ls r11 r7 ROR r5", "ls_r11_r7_ROR_r5"},
    501     {{vs, r11, r8, LSR, r13},
    502      false,
    503      al,
    504      "vs r11 r8 LSR r13",
    505      "vs_r11_r8_LSR_r13"},
    506     {{le, r6, r5, LSR, r3}, false, al, "le r6 r5 LSR r3", "le_r6_r5_LSR_r3"},
    507     {{cs, r4, r1, LSL, r7}, false, al, "cs r4 r1 LSL r7", "cs_r4_r1_LSL_r7"},
    508     {{lt, r4, r9, LSL, r2}, false, al, "lt r4 r9 LSL r2", "lt_r4_r9_LSL_r2"},
    509     {{mi, r12, r1, LSR, r10},
    510      false,
    511      al,
    512      "mi r12 r1 LSR r10",
    513      "mi_r12_r1_LSR_r10"},
    514     {{al, r14, r2, LSR, r3}, false, al, "al r14 r2 LSR r3", "al_r14_r2_LSR_r3"},
    515     {{al, r11, r9, LSL, r4}, false, al, "al r11 r9 LSL r4", "al_r11_r9_LSL_r4"},
    516     {{hi, r4, r4, ROR, r3}, false, al, "hi r4 r4 ROR r3", "hi_r4_r4_ROR_r3"},
    517     {{al, r3, r5, ROR, r6}, false, al, "al r3 r5 ROR r6", "al_r3_r5_ROR_r6"},
    518     {{al, r8, r4, LSR, r7}, false, al, "al r8 r4 LSR r7", "al_r8_r4_LSR_r7"},
    519     {{vs, r7, r5, LSL, r6}, false, al, "vs r7 r5 LSL r6", "vs_r7_r5_LSL_r6"},
    520     {{ls, r6, r2, LSL, r8}, false, al, "ls r6 r2 LSL r8", "ls_r6_r2_LSL_r8"},
    521     {{pl, r4, r12, LSL, r6}, false, al, "pl r4 r12 LSL r6", "pl_r4_r12_LSL_r6"},
    522     {{ge, r8, r12, LSR, r4}, false, al, "ge r8 r12 LSR r4", "ge_r8_r12_LSR_r4"},
    523     {{le, r11, r1, ROR, r9}, false, al, "le r11 r1 ROR r9", "le_r11_r1_ROR_r9"},
    524     {{hi, r1, r13, LSR, r9}, false, al, "hi r1 r13 LSR r9", "hi_r1_r13_LSR_r9"},
    525     {{cc, r3, r0, LSR, r1}, false, al, "cc r3 r0 LSR r1", "cc_r3_r0_LSR_r1"},
    526     {{ge, r10, r11, ROR, r0},
    527      false,
    528      al,
    529      "ge r10 r11 ROR r0",
    530      "ge_r10_r11_ROR_r0"},
    531     {{pl, r6, r5, ROR, r3}, false, al, "pl r6 r5 ROR r3", "pl_r6_r5_ROR_r3"},
    532     {{cs, r10, r1, LSR, r12},
    533      false,
    534      al,
    535      "cs r10 r1 LSR r12",
    536      "cs_r10_r1_LSR_r12"},
    537     {{ne, r10, r4, LSR, r1}, false, al, "ne r10 r4 LSR r1", "ne_r10_r4_LSR_r1"},
    538     {{vs, r5, r1, LSL, r7}, false, al, "vs r5 r1 LSL r7", "vs_r5_r1_LSL_r7"},
    539     {{ge, r10, r2, LSL, r4}, false, al, "ge r10 r2 LSL r4", "ge_r10_r2_LSL_r4"},
    540     {{vc, r3, r1, ASR, r2}, false, al, "vc r3 r1 ASR r2", "vc_r3_r1_ASR_r2"},
    541     {{ls, r2, r3, ASR, r14}, false, al, "ls r2 r3 ASR r14", "ls_r2_r3_ASR_r14"},
    542     {{vs, r1, r1, LSL, r7}, false, al, "vs r1 r1 LSL r7", "vs_r1_r1_LSL_r7"},
    543     {{gt, r2, r1, LSL, r14}, false, al, "gt r2 r1 LSL r14", "gt_r2_r1_LSL_r14"},
    544     {{al, r11, r12, ROR, r7},
    545      false,
    546      al,
    547      "al r11 r12 ROR r7",
    548      "al_r11_r12_ROR_r7"},
    549     {{eq, r2, r12, LSL, r10},
    550      false,
    551      al,
    552      "eq r2 r12 LSL r10",
    553      "eq_r2_r12_LSL_r10"},
    554     {{ls, r7, r2, LSR, r7}, false, al, "ls r7 r2 LSR r7", "ls_r7_r2_LSR_r7"},
    555     {{ne, r9, r5, ROR, r12}, false, al, "ne r9 r5 ROR r12", "ne_r9_r5_ROR_r12"},
    556     {{ge, r13, r8, LSR, r12},
    557      false,
    558      al,
    559      "ge r13 r8 LSR r12",
    560      "ge_r13_r8_LSR_r12"},
    561     {{ls, r12, r11, ROR, r9},
    562      false,
    563      al,
    564      "ls r12 r11 ROR r9",
    565      "ls_r12_r11_ROR_r9"},
    566     {{cc, r13, r5, LSL, r8}, false, al, "cc r13 r5 LSL r8", "cc_r13_r5_LSL_r8"},
    567     {{ne, r7, r12, LSL, r7}, false, al, "ne r7 r12 LSL r7", "ne_r7_r12_LSL_r7"},
    568     {{ge, r6, r13, ROR, r2}, false, al, "ge r6 r13 ROR r2", "ge_r6_r13_ROR_r2"},
    569     {{ne, r8, r7, ROR, r6}, false, al, "ne r8 r7 ROR r6", "ne_r8_r7_ROR_r6"},
    570     {{cc, r7, r10, ROR, r0}, false, al, "cc r7 r10 ROR r0", "cc_r7_r10_ROR_r0"},
    571     {{le, r5, r5, ASR, r5}, false, al, "le r5 r5 ASR r5", "le_r5_r5_ASR_r5"},
    572     {{hi, r14, r7, ROR, r0}, false, al, "hi r14 r7 ROR r0", "hi_r14_r7_ROR_r0"},
    573     {{vs, r9, r3, LSL, r11}, false, al, "vs r9 r3 LSL r11", "vs_r9_r3_LSL_r11"},
    574     {{ls, r0, r5, LSL, r11}, false, al, "ls r0 r5 LSL r11", "ls_r0_r5_LSL_r11"},
    575     {{ne, r12, r3, LSL, r14},
    576      false,
    577      al,
    578      "ne r12 r3 LSL r14",
    579      "ne_r12_r3_LSL_r14"},
    580     {{lt, r12, r12, ROR, r4},
    581      false,
    582      al,
    583      "lt r12 r12 ROR r4",
    584      "lt_r12_r12_ROR_r4"},
    585     {{gt, r13, r10, LSR, r3},
    586      false,
    587      al,
    588      "gt r13 r10 LSR r3",
    589      "gt_r13_r10_LSR_r3"},
    590     {{ls, r11, r2, ASR, r10},
    591      false,
    592      al,
    593      "ls r11 r2 ASR r10",
    594      "ls_r11_r2_ASR_r10"},
    595     {{vc, r7, r8, ASR, r13}, false, al, "vc r7 r8 ASR r13", "vc_r7_r8_ASR_r13"},
    596     {{eq, r8, r3, LSR, r13}, false, al, "eq r8 r3 LSR r13", "eq_r8_r3_LSR_r13"},
    597     {{mi, r10, r6, LSL, r8}, false, al, "mi r10 r6 LSL r8", "mi_r10_r6_LSL_r8"},
    598     {{le, r11, r11, LSR, r1},
    599      false,
    600      al,
    601      "le r11 r11 LSR r1",
    602      "le_r11_r11_LSR_r1"},
    603     {{vc, r11, r2, ROR, r13},
    604      false,
    605      al,
    606      "vc r11 r2 ROR r13",
    607      "vc_r11_r2_ROR_r13"},
    608     {{vs, r8, r9, ASR, r2}, false, al, "vs r8 r9 ASR r2", "vs_r8_r9_ASR_r2"},
    609     {{pl, r11, r11, ASR, r13},
    610      false,
    611      al,
    612      "pl r11 r11 ASR r13",
    613      "pl_r11_r11_ASR_r13"},
    614     {{mi, r14, r1, LSL, r7}, false, al, "mi r14 r1 LSL r7", "mi_r14_r1_LSL_r7"},
    615     {{mi, r7, r7, LSR, r6}, false, al, "mi r7 r7 LSR r6", "mi_r7_r7_LSR_r6"},
    616     {{eq, r5, r13, LSR, r8}, false, al, "eq r5 r13 LSR r8", "eq_r5_r13_LSR_r8"},
    617     {{cs, r8, r7, ASR, r0}, false, al, "cs r8 r7 ASR r0", "cs_r8_r7_ASR_r0"},
    618     {{pl, r8, r4, LSL, r5}, false, al, "pl r8 r4 LSL r5", "pl_r8_r4_LSL_r5"},
    619     {{pl, r1, r6, ROR, r2}, false, al, "pl r1 r6 ROR r2", "pl_r1_r6_ROR_r2"},
    620     {{cc, r13, r14, ASR, r0},
    621      false,
    622      al,
    623      "cc r13 r14 ASR r0",
    624      "cc_r13_r14_ASR_r0"},
    625     {{al, r3, r12, LSL, r3}, false, al, "al r3 r12 LSL r3", "al_r3_r12_LSL_r3"},
    626     {{vs, r12, r10, LSL, r14},
    627      false,
    628      al,
    629      "vs r12 r10 LSL r14",
    630      "vs_r12_r10_LSL_r14"},
    631     {{lt, r8, r3, ASR, r0}, false, al, "lt r8 r3 ASR r0", "lt_r8_r3_ASR_r0"},
    632     {{pl, r0, r13, LSL, r2}, false, al, "pl r0 r13 LSL r2", "pl_r0_r13_LSL_r2"},
    633     {{gt, r8, r2, LSL, r4}, false, al, "gt r8 r2 LSL r4", "gt_r8_r2_LSL_r4"},
    634     {{mi, r13, r0, LSL, r8}, false, al, "mi r13 r0 LSL r8", "mi_r13_r0_LSL_r8"},
    635     {{eq, r1, r10, LSL, r14},
    636      false,
    637      al,
    638      "eq r1 r10 LSL r14",
    639      "eq_r1_r10_LSL_r14"},
    640     {{hi, r8, r11, ASR, r10},
    641      false,
    642      al,
    643      "hi r8 r11 ASR r10",
    644      "hi_r8_r11_ASR_r10"},
    645     {{ne, r11, r9, ASR, r0}, false, al, "ne r11 r9 ASR r0", "ne_r11_r9_ASR_r0"},
    646     {{cc, r0, r13, ROR, r5}, false, al, "cc r0 r13 ROR r5", "cc_r0_r13_ROR_r5"},
    647     {{ge, r13, r7, ROR, r5}, false, al, "ge r13 r7 ROR r5", "ge_r13_r7_ROR_r5"},
    648     {{eq, r4, r5, LSL, r2}, false, al, "eq r4 r5 LSL r2", "eq_r4_r5_LSL_r2"},
    649     {{ge, r5, r12, ASR, r3}, false, al, "ge r5 r12 ASR r3", "ge_r5_r12_ASR_r3"},
    650     {{ge, r9, r7, ROR, r6}, false, al, "ge r9 r7 ROR r6", "ge_r9_r7_ROR_r6"},
    651     {{cc, r2, r2, LSR, r0}, false, al, "cc r2 r2 LSR r0", "cc_r2_r2_LSR_r0"},
    652     {{cs, r9, r7, ASR, r11}, false, al, "cs r9 r7 ASR r11", "cs_r9_r7_ASR_r11"},
    653     {{al, r10, r6, ASR, r10},
    654      false,
    655      al,
    656      "al r10 r6 ASR r10",
    657      "al_r10_r6_ASR_r10"},
    658     {{ls, r13, r10, LSL, r10},
    659      false,
    660      al,
    661      "ls r13 r10 LSL r10",
    662      "ls_r13_r10_LSL_r10"},
    663     {{ne, r14, r13, ASR, r8},
    664      false,
    665      al,
    666      "ne r14 r13 ASR r8",
    667      "ne_r14_r13_ASR_r8"},
    668     {{lt, r12, r3, ROR, r10},
    669      false,
    670      al,
    671      "lt r12 r3 ROR r10",
    672      "lt_r12_r3_ROR_r10"},
    673     {{al, r12, r8, ROR, r8}, false, al, "al r12 r8 ROR r8", "al_r12_r8_ROR_r8"},
    674     {{ls, r5, r8, ASR, r8}, false, al, "ls r5 r8 ASR r8", "ls_r5_r8_ASR_r8"},
    675     {{mi, r13, r11, LSR, r2},
    676      false,
    677      al,
    678      "mi r13 r11 LSR r2",
    679      "mi_r13_r11_LSR_r2"},
    680     {{le, r7, r10, ROR, r1}, false, al, "le r7 r10 ROR r1", "le_r7_r10_ROR_r1"},
    681     {{ne, r5, r2, LSL, r11}, false, al, "ne r5 r2 LSL r11", "ne_r5_r2_LSL_r11"},
    682     {{ne, r14, r7, LSL, r10},
    683      false,
    684      al,
    685      "ne r14 r7 LSL r10",
    686      "ne_r14_r7_LSL_r10"},
    687     {{al, r0, r1, LSR, r14}, false, al, "al r0 r1 LSR r14", "al_r0_r1_LSR_r14"},
    688     {{mi, r5, r9, LSR, r11}, false, al, "mi r5 r9 LSR r11", "mi_r5_r9_LSR_r11"},
    689     {{eq, r8, r3, LSR, r11}, false, al, "eq r8 r3 LSR r11", "eq_r8_r3_LSR_r11"},
    690     {{eq, r4, r14, LSR, r11},
    691      false,
    692      al,
    693      "eq r4 r14 LSR r11",
    694      "eq_r4_r14_LSR_r11"},
    695     {{le, r0, r7, LSL, r11}, false, al, "le r0 r7 LSL r11", "le_r0_r7_LSL_r11"},
    696     {{le, r2, r2, LSL, r10}, false, al, "le r2 r2 LSL r10", "le_r2_r2_LSL_r10"},
    697     {{le, r3, r5, ROR, r0}, false, al, "le r3 r5 ROR r0", "le_r3_r5_ROR_r0"},
    698     {{mi, r8, r10, LSL, r10},
    699      false,
    700      al,
    701      "mi r8 r10 LSL r10",
    702      "mi_r8_r10_LSL_r10"},
    703     {{ls, r11, r7, ROR, r8}, false, al, "ls r11 r7 ROR r8", "ls_r11_r7_ROR_r8"},
    704     {{hi, r14, r11, LSR, r7},
    705      false,
    706      al,
    707      "hi r14 r11 LSR r7",
    708      "hi_r14_r11_LSR_r7"},
    709     {{mi, r10, r2, LSR, r1}, false, al, "mi r10 r2 LSR r1", "mi_r10_r2_LSR_r1"},
    710     {{le, r3, r14, ASR, r10},
    711      false,
    712      al,
    713      "le r3 r14 ASR r10",
    714      "le_r3_r14_ASR_r10"},
    715     {{vs, r3, r11, ROR, r2}, false, al, "vs r3 r11 ROR r2", "vs_r3_r11_ROR_r2"},
    716     {{lt, r2, r8, ASR, r2}, false, al, "lt r2 r8 ASR r2", "lt_r2_r8_ASR_r2"},
    717     {{pl, r7, r4, ROR, r6}, false, al, "pl r7 r4 ROR r6", "pl_r7_r4_ROR_r6"},
    718     {{al, r7, r12, ASR, r12},
    719      false,
    720      al,
    721      "al r7 r12 ASR r12",
    722      "al_r7_r12_ASR_r12"},
    723     {{ge, r8, r9, ROR, r0}, false, al, "ge r8 r9 ROR r0", "ge_r8_r9_ROR_r0"},
    724     {{mi, r9, r5, LSL, r7}, false, al, "mi r9 r5 LSL r7", "mi_r9_r5_LSL_r7"},
    725     {{cs, r4, r13, LSL, r9}, false, al, "cs r4 r13 LSL r9", "cs_r4_r13_LSL_r9"},
    726     {{eq, r5, r3, LSR, r1}, false, al, "eq r5 r3 LSR r1", "eq_r5_r3_LSR_r1"},
    727     {{lt, r6, r14, LSR, r5}, false, al, "lt r6 r14 LSR r5", "lt_r6_r14_LSR_r5"},
    728     {{eq, r11, r9, LSL, r11},
    729      false,
    730      al,
    731      "eq r11 r9 LSL r11",
    732      "eq_r11_r9_LSL_r11"},
    733     {{cs, r4, r0, ROR, r0}, false, al, "cs r4 r0 ROR r0", "cs_r4_r0_ROR_r0"},
    734     {{pl, r11, r13, LSL, r4},
    735      false,
    736      al,
    737      "pl r11 r13 LSL r4",
    738      "pl_r11_r13_LSL_r4"},
    739     {{al, r1, r2, LSR, r7}, false, al, "al r1 r2 LSR r7", "al_r1_r2_LSR_r7"},
    740     {{mi, r7, r2, ROR, r2}, false, al, "mi r7 r2 ROR r2", "mi_r7_r2_ROR_r2"},
    741     {{ls, r2, r10, LSL, r10},
    742      false,
    743      al,
    744      "ls r2 r10 LSL r10",
    745      "ls_r2_r10_LSL_r10"},
    746     {{cs, r11, r8, LSL, r3}, false, al, "cs r11 r8 LSL r3", "cs_r11_r8_LSL_r3"},
    747     {{cc, r11, r5, ROR, r1}, false, al, "cc r11 r5 ROR r1", "cc_r11_r5_ROR_r1"},
    748     {{le, r11, r0, ASR, r12},
    749      false,
    750      al,
    751      "le r11 r0 ASR r12",
    752      "le_r11_r0_ASR_r12"},
    753     {{pl, r5, r8, LSL, r6}, false, al, "pl r5 r8 LSL r6", "pl_r5_r8_LSL_r6"},
    754     {{ls, r9, r13, LSL, r10},
    755      false,
    756      al,
    757      "ls r9 r13 LSL r10",
    758      "ls_r9_r13_LSL_r10"},
    759     {{ge, r14, r5, LSL, r10},
    760      false,
    761      al,
    762      "ge r14 r5 LSL r10",
    763      "ge_r14_r5_LSL_r10"},
    764     {{vs, r8, r10, ASR, r2}, false, al, "vs r8 r10 ASR r2", "vs_r8_r10_ASR_r2"},
    765     {{vs, r11, r11, LSR, r4},
    766      false,
    767      al,
    768      "vs r11 r11 LSR r4",
    769      "vs_r11_r11_LSR_r4"},
    770     {{ls, r7, r0, ASR, r7}, false, al, "ls r7 r0 ASR r7", "ls_r7_r0_ASR_r7"},
    771     {{cc, r10, r5, ASR, r13},
    772      false,
    773      al,
    774      "cc r10 r5 ASR r13",
    775      "cc_r10_r5_ASR_r13"},
    776     {{hi, r12, r13, ROR, r5},
    777      false,
    778      al,
    779      "hi r12 r13 ROR r5",
    780      "hi_r12_r13_ROR_r5"},
    781     {{le, r12, r14, LSR, r5},
    782      false,
    783      al,
    784      "le r12 r14 LSR r5",
    785      "le_r12_r14_LSR_r5"},
    786     {{le, r0, r0, LSL, r14}, false, al, "le r0 r0 LSL r14", "le_r0_r0_LSL_r14"},
    787     {{ge, r3, r7, ROR, r14}, false, al, "ge r3 r7 ROR r14", "ge_r3_r7_ROR_r14"},
    788     {{eq, r3, r1, LSL, r8}, false, al, "eq r3 r1 LSL r8", "eq_r3_r1_LSL_r8"},
    789     {{lt, r7, r1, LSR, r11}, false, al, "lt r7 r1 LSR r11", "lt_r7_r1_LSR_r11"},
    790     {{ls, r0, r10, ROR, r11},
    791      false,
    792      al,
    793      "ls r0 r10 ROR r11",
    794      "ls_r0_r10_ROR_r11"},
    795     {{le, r0, r1, LSL, r8}, false, al, "le r0 r1 LSL r8", "le_r0_r1_LSL_r8"},
    796     {{mi, r13, r3, LSR, r8}, false, al, "mi r13 r3 LSR r8", "mi_r13_r3_LSR_r8"},
    797     {{ls, r9, r6, LSR, r0}, false, al, "ls r9 r6 LSR r0", "ls_r9_r6_LSR_r0"},
    798     {{mi, r11, r6, LSR, r3}, false, al, "mi r11 r6 LSR r3", "mi_r11_r6_LSR_r3"},
    799     {{lt, r11, r6, LSL, r14},
    800      false,
    801      al,
    802      "lt r11 r6 LSL r14",
    803      "lt_r11_r6_LSL_r14"},
    804     {{pl, r4, r14, ROR, r5}, false, al, "pl r4 r14 ROR r5", "pl_r4_r14_ROR_r5"},
    805     {{eq, r7, r6, LSR, r6}, false, al, "eq r7 r6 LSR r6", "eq_r7_r6_LSR_r6"},
    806     {{hi, r11, r7, ASR, r8}, false, al, "hi r11 r7 ASR r8", "hi_r11_r7_ASR_r8"},
    807     {{al, r7, r14, ASR, r14},
    808      false,
    809      al,
    810      "al r7 r14 ASR r14",
    811      "al_r7_r14_ASR_r14"},
    812     {{cc, r3, r1, ASR, r10}, false, al, "cc r3 r1 ASR r10", "cc_r3_r1_ASR_r10"},
    813     {{pl, r9, r3, ROR, r2}, false, al, "pl r9 r3 ROR r2", "pl_r9_r3_ROR_r2"},
    814     {{vc, r6, r9, LSR, r14}, false, al, "vc r6 r9 LSR r14", "vc_r6_r9_LSR_r14"},
    815     {{le, r3, r14, ASR, r7}, false, al, "le r3 r14 ASR r7", "le_r3_r14_ASR_r7"},
    816     {{le, r12, r14, ROR, r14},
    817      false,
    818      al,
    819      "le r12 r14 ROR r14",
    820      "le_r12_r14_ROR_r14"},
    821     {{pl, r7, r11, ASR, r9}, false, al, "pl r7 r11 ASR r9", "pl_r7_r11_ASR_r9"},
    822     {{le, r1, r12, ASR, r4}, false, al, "le r1 r12 ASR r4", "le_r1_r12_ASR_r4"},
    823     {{eq, r7, r12, ASR, r6}, false, al, "eq r7 r12 ASR r6", "eq_r7_r12_ASR_r6"},
    824     {{mi, r12, r12, ROR, r14},
    825      false,
    826      al,
    827      "mi r12 r12 ROR r14",
    828      "mi_r12_r12_ROR_r14"},
    829     {{pl, r1, r3, ROR, r3}, false, al, "pl r1 r3 ROR r3", "pl_r1_r3_ROR_r3"},
    830     {{hi, r1, r12, ASR, r2}, false, al, "hi r1 r12 ASR r2", "hi_r1_r12_ASR_r2"},
    831     {{ls, r7, r5, LSR, r14}, false, al, "ls r7 r5 LSR r14", "ls_r7_r5_LSR_r14"},
    832     {{al, r6, r6, LSR, r2}, false, al, "al r6 r6 LSR r2", "al_r6_r6_LSR_r2"},
    833     {{al, r8, r3, ROR, r13}, false, al, "al r8 r3 ROR r13", "al_r8_r3_ROR_r13"},
    834     {{ls, r12, r14, LSL, r11},
    835      false,
    836      al,
    837      "ls r12 r14 LSL r11",
    838      "ls_r12_r14_LSL_r11"},
    839     {{ne, r9, r9, ROR, r1}, false, al, "ne r9 r9 ROR r1", "ne_r9_r9_ROR_r1"},
    840     {{hi, r9, r13, ROR, r1}, false, al, "hi r9 r13 ROR r1", "hi_r9_r13_ROR_r1"},
    841     {{vc, r10, r13, ASR, r13},
    842      false,
    843      al,
    844      "vc r10 r13 ASR r13",
    845      "vc_r10_r13_ASR_r13"},
    846     {{al, r13, r13, ROR, r7},
    847      false,
    848      al,
    849      "al r13 r13 ROR r7",
    850      "al_r13_r13_ROR_r7"},
    851     {{ls, r0, r14, LSL, r10},
    852      false,
    853      al,
    854      "ls r0 r14 LSL r10",
    855      "ls_r0_r14_LSL_r10"},
    856     {{vc, r9, r14, ROR, r11},
    857      false,
    858      al,
    859      "vc r9 r14 ROR r11",
    860      "vc_r9_r14_ROR_r11"},
    861     {{vc, r10, r3, LSR, r14},
    862      false,
    863      al,
    864      "vc r10 r3 LSR r14",
    865      "vc_r10_r3_LSR_r14"},
    866     {{cc, r11, r14, LSR, r3},
    867      false,
    868      al,
    869      "cc r11 r14 LSR r3",
    870      "cc_r11_r14_LSR_r3"},
    871     {{ge, r1, r2, LSL, r1}, false, al, "ge r1 r2 LSL r1", "ge_r1_r2_LSL_r1"},
    872     {{al, r10, r8, LSR, r5}, false, al, "al r10 r8 LSR r5", "al_r10_r8_LSR_r5"},
    873     {{vs, r2, r5, ASR, r8}, false, al, "vs r2 r5 ASR r8", "vs_r2_r5_ASR_r8"},
    874     {{cs, r10, r5, LSL, r11},
    875      false,
    876      al,
    877      "cs r10 r5 LSL r11",
    878      "cs_r10_r5_LSL_r11"},
    879     {{gt, r9, r0, LSR, r6}, false, al, "gt r9 r0 LSR r6", "gt_r9_r0_LSR_r6"},
    880     {{le, r8, r2, ROR, r0}, false, al, "le r8 r2 ROR r0", "le_r8_r2_ROR_r0"},
    881     {{cc, r0, r9, ASR, r4}, false, al, "cc r0 r9 ASR r4", "cc_r0_r9_ASR_r4"},
    882     {{pl, r7, r4, ASR, r4}, false, al, "pl r7 r4 ASR r4", "pl_r7_r4_ASR_r4"},
    883     {{cs, r6, r5, ASR, r6}, false, al, "cs r6 r5 ASR r6", "cs_r6_r5_ASR_r6"},
    884     {{al, r14, r6, LSL, r2}, false, al, "al r14 r6 LSL r2", "al_r14_r6_LSL_r2"},
    885     {{pl, r11, r14, ASR, r4},
    886      false,
    887      al,
    888      "pl r11 r14 ASR r4",
    889      "pl_r11_r14_ASR_r4"},
    890     {{pl, r4, r9, LSL, r10}, false, al, "pl r4 r9 LSL r10", "pl_r4_r9_LSL_r10"},
    891     {{le, r7, r1, ROR, r8}, false, al, "le r7 r1 ROR r8", "le_r7_r1_ROR_r8"},
    892     {{al, r3, r1, LSR, r10}, false, al, "al r3 r1 LSR r10", "al_r3_r1_LSR_r10"},
    893     {{ge, r8, r14, LSL, r11},
    894      false,
    895      al,
    896      "ge r8 r14 LSL r11",
    897      "ge_r8_r14_LSL_r11"},
    898     {{le, r11, r5, LSL, r2}, false, al, "le r11 r5 LSL r2", "le_r11_r5_LSL_r2"},
    899     {{le, r13, r2, ROR, r0}, false, al, "le r13 r2 ROR r0", "le_r13_r2_ROR_r0"},
    900     {{eq, r4, r13, ASR, r10},
    901      false,
    902      al,
    903      "eq r4 r13 ASR r10",
    904      "eq_r4_r13_ASR_r10"},
    905     {{lt, r14, r5, ASR, r14},
    906      false,
    907      al,
    908      "lt r14 r5 ASR r14",
    909      "lt_r14_r5_ASR_r14"},
    910     {{gt, r2, r6, ASR, r12}, false, al, "gt r2 r6 ASR r12", "gt_r2_r6_ASR_r12"},
    911     {{gt, r9, r1, ASR, r8}, false, al, "gt r9 r1 ASR r8", "gt_r9_r1_ASR_r8"},
    912     {{vs, r11, r6, LSL, r13},
    913      false,
    914      al,
    915      "vs r11 r6 LSL r13",
    916      "vs_r11_r6_LSL_r13"},
    917     {{ge, r2, r13, LSL, r3}, false, al, "ge r2 r13 LSL r3", "ge_r2_r13_LSL_r3"},
    918     {{hi, r4, r1, ROR, r14}, false, al, "hi r4 r1 ROR r14", "hi_r4_r1_ROR_r14"},
    919     {{gt, r8, r13, LSL, r2}, false, al, "gt r8 r13 LSL r2", "gt_r8_r13_LSL_r2"},
    920     {{pl, r13, r1, LSR, r3}, false, al, "pl r13 r1 LSR r3", "pl_r13_r1_LSR_r3"},
    921     {{cc, r13, r6, LSL, r10},
    922      false,
    923      al,
    924      "cc r13 r6 LSL r10",
    925      "cc_r13_r6_LSL_r10"},
    926     {{ls, r10, r1, LSR, r1}, false, al, "ls r10 r1 LSR r1", "ls_r10_r1_LSR_r1"},
    927     {{hi, r12, r2, LSR, r12},
    928      false,
    929      al,
    930      "hi r12 r2 LSR r12",
    931      "hi_r12_r2_LSR_r12"},
    932     {{ge, r1, r1, ROR, r12}, false, al, "ge r1 r1 ROR r12", "ge_r1_r1_ROR_r12"},
    933     {{vc, r12, r0, LSL, r10},
    934      false,
    935      al,
    936      "vc r12 r0 LSL r10",
    937      "vc_r12_r0_LSL_r10"},
    938     {{eq, r5, r8, ROR, r7}, false, al, "eq r5 r8 ROR r7", "eq_r5_r8_ROR_r7"},
    939     {{cc, r5, r1, LSR, r1}, false, al, "cc r5 r1 LSR r1", "cc_r5_r1_LSR_r1"},
    940     {{pl, r7, r14, ASR, r4}, false, al, "pl r7 r14 ASR r4", "pl_r7_r14_ASR_r4"},
    941     {{ge, r0, r5, LSR, r4}, false, al, "ge r0 r5 LSR r4", "ge_r0_r5_LSR_r4"},
    942     {{ge, r3, r10, LSL, r11},
    943      false,
    944      al,
    945      "ge r3 r10 LSL r11",
    946      "ge_r3_r10_LSL_r11"},
    947     {{cs, r13, r11, LSL, r9},
    948      false,
    949      al,
    950      "cs r13 r11 LSL r9",
    951      "cs_r13_r11_LSL_r9"},
    952     {{hi, r11, r14, LSL, r10},
    953      false,
    954      al,
    955      "hi r11 r14 LSL r10",
    956      "hi_r11_r14_LSL_r10"},
    957     {{mi, r7, r5, ROR, r7}, false, al, "mi r7 r5 ROR r7", "mi_r7_r5_ROR_r7"},
    958     {{ls, r1, r10, ROR, r13},
    959      false,
    960      al,
    961      "ls r1 r10 ROR r13",
    962      "ls_r1_r10_ROR_r13"},
    963     {{mi, r10, r10, LSR, r12},
    964      false,
    965      al,
    966      "mi r10 r10 LSR r12",
    967      "mi_r10_r10_LSR_r12"},
    968     {{le, r14, r7, LSR, r11},
    969      false,
    970      al,
    971      "le r14 r7 LSR r11",
    972      "le_r14_r7_LSR_r11"},
    973     {{al, r3, r12, LSR, r14},
    974      false,
    975      al,
    976      "al r3 r12 LSR r14",
    977      "al_r3_r12_LSR_r14"},
    978     {{vs, r1, r3, ROR, r1}, false, al, "vs r1 r3 ROR r1", "vs_r1_r3_ROR_r1"},
    979     {{ge, r4, r10, LSL, r13},
    980      false,
    981      al,
    982      "ge r4 r10 LSL r13",
    983      "ge_r4_r10_LSL_r13"},
    984     {{cs, r4, r3, LSL, r13}, false, al, "cs r4 r3 LSL r13", "cs_r4_r3_LSL_r13"},
    985     {{ge, r9, r5, ASR, r11}, false, al, "ge r9 r5 ASR r11", "ge_r9_r5_ASR_r11"},
    986     {{pl, r12, r4, ROR, r14},
    987      false,
    988      al,
    989      "pl r12 r4 ROR r14",
    990      "pl_r12_r4_ROR_r14"},
    991     {{mi, r11, r5, LSR, r3}, false, al, "mi r11 r5 LSR r3", "mi_r11_r5_LSR_r3"},
    992     {{mi, r13, r5, LSR, r4}, false, al, "mi r13 r5 LSR r4", "mi_r13_r5_LSR_r4"},
    993     {{ls, r13, r0, ASR, r14},
    994      false,
    995      al,
    996      "ls r13 r0 ASR r14",
    997      "ls_r13_r0_ASR_r14"},
    998     {{cc, r1, r9, ROR, r8}, false, al, "cc r1 r9 ROR r8", "cc_r1_r9_ROR_r8"},
    999     {{mi, r2, r9, LSL, r7}, false, al, "mi r2 r9 LSL r7", "mi_r2_r9_LSL_r7"},
   1000     {{gt, r12, r13, LSR, r1},
   1001      false,
   1002      al,
   1003      "gt r12 r13 LSR r1",
   1004      "gt_r12_r13_LSR_r1"},
   1005     {{le, r6, r3, LSL, r9}, false, al, "le r6 r3 LSL r9", "le_r6_r3_LSL_r9"},
   1006     {{hi, r11, r2, LSR, r6}, false, al, "hi r11 r2 LSR r6", "hi_r11_r2_LSR_r6"},
   1007     {{vc, r2, r7, ROR, r10}, false, al, "vc r2 r7 ROR r10", "vc_r2_r7_ROR_r10"},
   1008     {{ge, r1, r1, ASR, r9}, false, al, "ge r1 r1 ASR r9", "ge_r1_r1_ASR_r9"},
   1009     {{le, r8, r14, ROR, r2}, false, al, "le r8 r14 ROR r2", "le_r8_r14_ROR_r2"},
   1010     {{cs, r5, r4, LSR, r12}, false, al, "cs r5 r4 LSR r12", "cs_r5_r4_LSR_r12"},
   1011     {{ne, r6, r7, ASR, r10}, false, al, "ne r6 r7 ASR r10", "ne_r6_r7_ASR_r10"},
   1012     {{lt, r8, r3, LSL, r7}, false, al, "lt r8 r3 LSL r7", "lt_r8_r3_LSL_r7"},
   1013     {{ls, r6, r2, LSL, r6}, false, al, "ls r6 r2 LSL r6", "ls_r6_r2_LSL_r6"},
   1014     {{hi, r6, r3, ROR, r1}, false, al, "hi r6 r3 ROR r1", "hi_r6_r3_ROR_r1"},
   1015     {{le, r10, r9, LSL, r14},
   1016      false,
   1017      al,
   1018      "le r10 r9 LSL r14",
   1019      "le_r10_r9_LSL_r14"},
   1020     {{le, r5, r6, ROR, r11}, false, al, "le r5 r6 ROR r11", "le_r5_r6_ROR_r11"},
   1021     {{ne, r7, r12, ASR, r7}, false, al, "ne r7 r12 ASR r7", "ne_r7_r12_ASR_r7"},
   1022     {{gt, r11, r5, ASR, r1}, false, al, "gt r11 r5 ASR r1", "gt_r11_r5_ASR_r1"},
   1023     {{al, r9, r4, ROR, r10}, false, al, "al r9 r4 ROR r10", "al_r9_r4_ROR_r10"},
   1024     {{vc, r5, r9, ROR, r12}, false, al, "vc r5 r9 ROR r12", "vc_r5_r9_ROR_r12"},
   1025     {{hi, r1, r0, LSR, r3}, false, al, "hi r1 r0 LSR r3", "hi_r1_r0_LSR_r3"},
   1026     {{mi, r2, r12, ROR, r8}, false, al, "mi r2 r12 ROR r8", "mi_r2_r12_ROR_r8"},
   1027     {{eq, r14, r9, ROR, r10},
   1028      false,
   1029      al,
   1030      "eq r14 r9 ROR r10",
   1031      "eq_r14_r9_ROR_r10"},
   1032     {{le, r8, r13, LSL, r1}, false, al, "le r8 r13 LSL r1", "le_r8_r13_LSL_r1"},
   1033     {{ne, r13, r4, ROR, r4}, false, al, "ne r13 r4 ROR r4", "ne_r13_r4_ROR_r4"},
   1034     {{ge, r4, r13, ROR, r14},
   1035      false,
   1036      al,
   1037      "ge r4 r13 ROR r14",
   1038      "ge_r4_r13_ROR_r14"},
   1039     {{vc, r10, r10, LSL, r1},
   1040      false,
   1041      al,
   1042      "vc r10 r10 LSL r1",
   1043      "vc_r10_r10_LSL_r1"},
   1044     {{gt, r10, r2, ROR, r10},
   1045      false,
   1046      al,
   1047      "gt r10 r2 ROR r10",
   1048      "gt_r10_r2_ROR_r10"},
   1049     {{eq, r3, r10, ROR, r12},
   1050      false,
   1051      al,
   1052      "eq r3 r10 ROR r12",
   1053      "eq_r3_r10_ROR_r12"},
   1054     {{pl, r8, r8, ASR, r14}, false, al, "pl r8 r8 ASR r14", "pl_r8_r8_ASR_r14"},
   1055     {{hi, r6, r11, LSR, r0}, false, al, "hi r6 r11 LSR r0", "hi_r6_r11_LSR_r0"},
   1056     {{pl, r2, r13, LSR, r13},
   1057      false,
   1058      al,
   1059      "pl r2 r13 LSR r13",
   1060      "pl_r2_r13_LSR_r13"},
   1061     {{cs, r3, r1, ASR, r4}, false, al, "cs r3 r1 ASR r4", "cs_r3_r1_ASR_r4"},
   1062     {{ge, r13, r8, ROR, r5}, false, al, "ge r13 r8 ROR r5", "ge_r13_r8_ROR_r5"},
   1063     {{ne, r3, r9, ASR, r10}, false, al, "ne r3 r9 ASR r10", "ne_r3_r9_ASR_r10"},
   1064     {{cc, r6, r12, ASR, r9}, false, al, "cc r6 r12 ASR r9", "cc_r6_r12_ASR_r9"},
   1065     {{cc, r10, r8, LSR, r10},
   1066      false,
   1067      al,
   1068      "cc r10 r8 LSR r10",
   1069      "cc_r10_r8_LSR_r10"},
   1070     {{vc, r7, r0, ASR, r7}, false, al, "vc r7 r0 ASR r7", "vc_r7_r0_ASR_r7"},
   1071     {{lt, r2, r5, LSL, r2}, false, al, "lt r2 r5 LSL r2", "lt_r2_r5_LSL_r2"},
   1072     {{gt, r13, r1, ASR, r8}, false, al, "gt r13 r1 ASR r8", "gt_r13_r1_ASR_r8"},
   1073     {{hi, r11, r14, LSR, r0},
   1074      false,
   1075      al,
   1076      "hi r11 r14 LSR r0",
   1077      "hi_r11_r14_LSR_r0"},
   1078     {{ls, r3, r2, LSL, r2}, false, al, "ls r3 r2 LSL r2", "ls_r3_r2_LSL_r2"},
   1079     {{mi, r5, r2, ROR, r13}, false, al, "mi r5 r2 ROR r13", "mi_r5_r2_ROR_r13"},
   1080     {{ne, r14, r2, ASR, r0}, false, al, "ne r14 r2 ASR r0", "ne_r14_r2_ASR_r0"},
   1081     {{pl, r4, r8, LSL, r2}, false, al, "pl r4 r8 LSL r2", "pl_r4_r8_LSL_r2"},
   1082     {{ge, r8, r10, LSR, r13},
   1083      false,
   1084      al,
   1085      "ge r8 r10 LSR r13",
   1086      "ge_r8_r10_LSR_r13"},
   1087     {{mi, r14, r14, ASR, r12},
   1088      false,
   1089      al,
   1090      "mi r14 r14 ASR r12",
   1091      "mi_r14_r14_ASR_r12"},
   1092     {{ge, r3, r1, LSL, r9}, false, al, "ge r3 r1 LSL r9", "ge_r3_r1_LSL_r9"},
   1093     {{mi, r12, r4, ASR, r6}, false, al, "mi r12 r4 ASR r6", "mi_r12_r4_ASR_r6"},
   1094     {{le, r1, r4, LSL, r6}, false, al, "le r1 r4 LSL r6", "le_r1_r4_LSL_r6"},
   1095     {{ge, r14, r9, ROR, r7}, false, al, "ge r14 r9 ROR r7", "ge_r14_r9_ROR_r7"},
   1096     {{gt, r6, r14, LSL, r7}, false, al, "gt r6 r14 LSL r7", "gt_r6_r14_LSL_r7"},
   1097     {{vc, r12, r7, ASR, r3}, false, al, "vc r12 r7 ASR r3", "vc_r12_r7_ASR_r3"},
   1098     {{ne, r7, r5, ROR, r0}, false, al, "ne r7 r5 ROR r0", "ne_r7_r5_ROR_r0"},
   1099     {{ne, r13, r2, ROR, r12},
   1100      false,
   1101      al,
   1102      "ne r13 r2 ROR r12",
   1103      "ne_r13_r2_ROR_r12"},
   1104     {{cc, r9, r2, ASR, r10}, false, al, "cc r9 r2 ASR r10", "cc_r9_r2_ASR_r10"},
   1105     {{ls, r7, r6, LSR, r5}, false, al, "ls r7 r6 LSR r5", "ls_r7_r6_LSR_r5"},
   1106     {{gt, r14, r1, ASR, r12},
   1107      false,
   1108      al,
   1109      "gt r14 r1 ASR r12",
   1110      "gt_r14_r1_ASR_r12"},
   1111     {{vs, r11, r4, ROR, r4}, false, al, "vs r11 r4 ROR r4", "vs_r11_r4_ROR_r4"},
   1112     {{le, r13, r13, ROR, r14},
   1113      false,
   1114      al,
   1115      "le r13 r13 ROR r14",
   1116      "le_r13_r13_ROR_r14"},
   1117     {{eq, r12, r3, LSR, r2}, false, al, "eq r12 r3 LSR r2", "eq_r12_r3_LSR_r2"},
   1118     {{vs, r9, r14, LSL, r1}, false, al, "vs r9 r14 LSL r1", "vs_r9_r14_LSL_r1"},
   1119     {{le, r8, r9, LSL, r9}, false, al, "le r8 r9 LSL r9", "le_r8_r9_LSL_r9"},
   1120     {{ne, r2, r13, ROR, r12},
   1121      false,
   1122      al,
   1123      "ne r2 r13 ROR r12",
   1124      "ne_r2_r13_ROR_r12"},
   1125     {{eq, r0, r14, ROR, r14},
   1126      false,
   1127      al,
   1128      "eq r0 r14 ROR r14",
   1129      "eq_r0_r14_ROR_r14"},
   1130     {{cc, r8, r0, ROR, r9}, false, al, "cc r8 r0 ROR r9", "cc_r8_r0_ROR_r9"},
   1131     {{gt, r11, r0, LSR, r9}, false, al, "gt r11 r0 LSR r9", "gt_r11_r0_LSR_r9"},
   1132     {{vc, r1, r8, LSL, r4}, false, al, "vc r1 r8 LSL r4", "vc_r1_r8_LSL_r4"},
   1133     {{ne, r4, r4, ROR, r3}, false, al, "ne r4 r4 ROR r3", "ne_r4_r4_ROR_r3"},
   1134     {{cs, r12, r6, LSR, r0}, false, al, "cs r12 r6 LSR r0", "cs_r12_r6_LSR_r0"},
   1135     {{pl, r8, r14, ROR, r7}, false, al, "pl r8 r14 ROR r7", "pl_r8_r14_ROR_r7"},
   1136     {{hi, r7, r11, LSR, r14},
   1137      false,
   1138      al,
   1139      "hi r7 r11 LSR r14",
   1140      "hi_r7_r11_LSR_r14"},
   1141     {{vs, r1, r9, ASR, r14}, false, al, "vs r1 r9 ASR r14", "vs_r1_r9_ASR_r14"},
   1142     {{ge, r11, r4, LSR, r14},
   1143      false,
   1144      al,
   1145      "ge r11 r4 LSR r14",
   1146      "ge_r11_r4_LSR_r14"},
   1147     {{gt, r9, r13, LSL, r0}, false, al, "gt r9 r13 LSL r0", "gt_r9_r13_LSL_r0"},
   1148     {{cc, r11, r1, LSR, r7}, false, al, "cc r11 r1 LSR r7", "cc_r11_r1_LSR_r7"},
   1149     {{al, r14, r7, ROR, r12},
   1150      false,
   1151      al,
   1152      "al r14 r7 ROR r12",
   1153      "al_r14_r7_ROR_r12"},
   1154     {{vc, r11, r5, ROR, r1}, false, al, "vc r11 r5 ROR r1", "vc_r11_r5_ROR_r1"},
   1155     {{eq, r14, r9, ROR, r2}, false, al, "eq r14 r9 ROR r2", "eq_r14_r9_ROR_r2"},
   1156     {{eq, r6, r10, LSR, r8}, false, al, "eq r6 r10 LSR r8", "eq_r6_r10_LSR_r8"},
   1157     {{cc, r5, r7, LSL, r10}, false, al, "cc r5 r7 LSL r10", "cc_r5_r7_LSL_r10"},
   1158     {{vc, r0, r6, ROR, r5}, false, al, "vc r0 r6 ROR r5", "vc_r0_r6_ROR_r5"},
   1159     {{ls, r3, r2, ASR, r5}, false, al, "ls r3 r2 ASR r5", "ls_r3_r2_ASR_r5"},
   1160     {{eq, r0, r5, LSL, r13}, false, al, "eq r0 r5 LSL r13", "eq_r0_r5_LSL_r13"},
   1161     {{hi, r3, r2, ASR, r2}, false, al, "hi r3 r2 ASR r2", "hi_r3_r2_ASR_r2"},
   1162     {{vs, r6, r1, ASR, r1}, false, al, "vs r6 r1 ASR r1", "vs_r6_r1_ASR_r1"},
   1163     {{al, r7, r6, ASR, r11}, false, al, "al r7 r6 ASR r11", "al_r7_r6_ASR_r11"},
   1164     {{al, r0, r7, LSR, r6}, false, al, "al r0 r7 LSR r6", "al_r0_r7_LSR_r6"},
   1165     {{vc, r6, r11, LSL, r13},
   1166      false,
   1167      al,
   1168      "vc r6 r11 LSL r13",
   1169      "vc_r6_r11_LSL_r13"},
   1170     {{mi, r11, r0, LSR, r11},
   1171      false,
   1172      al,
   1173      "mi r11 r0 LSR r11",
   1174      "mi_r11_r0_LSR_r11"},
   1175     {{ne, r10, r10, ROR, r7},
   1176      false,
   1177      al,
   1178      "ne r10 r10 ROR r7",
   1179      "ne_r10_r10_ROR_r7"},
   1180     {{eq, r9, r10, ROR, r8}, false, al, "eq r9 r10 ROR r8", "eq_r9_r10_ROR_r8"},
   1181     {{vc, r0, r11, ROR, r6}, false, al, "vc r0 r11 ROR r6", "vc_r0_r11_ROR_r6"},
   1182     {{eq, r3, r2, LSR, r10}, false, al, "eq r3 r2 LSR r10", "eq_r3_r2_LSR_r10"},
   1183     {{gt, r13, r4, LSR, r7}, false, al, "gt r13 r4 LSR r7", "gt_r13_r4_LSR_r7"},
   1184     {{lt, r1, r12, LSR, r11},
   1185      false,
   1186      al,
   1187      "lt r1 r12 LSR r11",
   1188      "lt_r1_r12_LSR_r11"},
   1189     {{cs, r12, r7, LSR, r4}, false, al, "cs r12 r7 LSR r4", "cs_r12_r7_LSR_r4"},
   1190     {{cc, r1, r13, ASR, r13},
   1191      false,
   1192      al,
   1193      "cc r1 r13 ASR r13",
   1194      "cc_r1_r13_ASR_r13"},
   1195     {{mi, r4, r9, LSL, r0}, false, al, "mi r4 r9 LSL r0", "mi_r4_r9_LSL_r0"},
   1196     {{gt, r14, r7, ROR, r0}, false, al, "gt r14 r7 ROR r0", "gt_r14_r7_ROR_r0"},
   1197     {{gt, r1, r0, ASR, r6}, false, al, "gt r1 r0 ASR r6", "gt_r1_r0_ASR_r6"},
   1198     {{ne, r14, r10, ASR, r10},
   1199      false,
   1200      al,
   1201      "ne r14 r10 ASR r10",
   1202      "ne_r14_r10_ASR_r10"},
   1203     {{pl, r14, r9, LSR, r8}, false, al, "pl r14 r9 LSR r8", "pl_r14_r9_LSR_r8"},
   1204     {{vs, r3, r7, LSL, r6}, false, al, "vs r3 r7 LSL r6", "vs_r3_r7_LSL_r6"},
   1205     {{lt, r12, r0, LSL, r3}, false, al, "lt r12 r0 LSL r3", "lt_r12_r0_LSL_r3"},
   1206     {{hi, r5, r11, ROR, r13},
   1207      false,
   1208      al,
   1209      "hi r5 r11 ROR r13",
   1210      "hi_r5_r11_ROR_r13"},
   1211     {{vc, r5, r2, LSR, r2}, false, al, "vc r5 r2 LSR r2", "vc_r5_r2_LSR_r2"},
   1212     {{le, r13, r8, ROR, r0}, false, al, "le r13 r8 ROR r0", "le_r13_r8_ROR_r0"},
   1213     {{cc, r13, r9, LSL, r10},
   1214      false,
   1215      al,
   1216      "cc r13 r9 LSL r10",
   1217      "cc_r13_r9_LSL_r10"},
   1218     {{ne, r0, r3, ASR, r9}, false, al, "ne r0 r3 ASR r9", "ne_r0_r3_ASR_r9"},
   1219     {{mi, r0, r8, ASR, r10}, false, al, "mi r0 r8 ASR r10", "mi_r0_r8_ASR_r10"},
   1220     {{cc, r4, r4, ASR, r4}, false, al, "cc r4 r4 ASR r4", "cc_r4_r4_ASR_r4"},
   1221     {{vc, r5, r10, LSL, r11},
   1222      false,
   1223      al,
   1224      "vc r5 r10 LSL r11",
   1225      "vc_r5_r10_LSL_r11"},
   1226     {{gt, r11, r10, ROR, r2},
   1227      false,
   1228      al,
   1229      "gt r11 r10 ROR r2",
   1230      "gt_r11_r10_ROR_r2"},
   1231     {{ne, r5, r5, LSR, r11}, false, al, "ne r5 r5 LSR r11", "ne_r5_r5_LSR_r11"},
   1232     {{ne, r6, r11, LSR, r13},
   1233      false,
   1234      al,
   1235      "ne r6 r11 LSR r13",
   1236      "ne_r6_r11_LSR_r13"},
   1237     {{lt, r3, r1, ROR, r1}, false, al, "lt r3 r1 ROR r1", "lt_r3_r1_ROR_r1"},
   1238     {{cc, r1, r14, ASR, r12},
   1239      false,
   1240      al,
   1241      "cc r1 r14 ASR r12",
   1242      "cc_r1_r14_ASR_r12"},
   1243     {{mi, r2, r10, ROR, r10},
   1244      false,
   1245      al,
   1246      "mi r2 r10 ROR r10",
   1247      "mi_r2_r10_ROR_r10"},
   1248     {{eq, r5, r8, ROR, r10}, false, al, "eq r5 r8 ROR r10", "eq_r5_r8_ROR_r10"},
   1249     {{al, r3, r9, LSL, r2}, false, al, "al r3 r9 LSL r2", "al_r3_r9_LSL_r2"},
   1250     {{cs, r1, r14, LSR, r7}, false, al, "cs r1 r14 LSR r7", "cs_r1_r14_LSR_r7"},
   1251     {{cc, r14, r9, ROR, r1}, false, al, "cc r14 r9 ROR r1", "cc_r14_r9_ROR_r1"},
   1252     {{al, r3, r8, ROR, r10}, false, al, "al r3 r8 ROR r10", "al_r3_r8_ROR_r10"},
   1253     {{vs, r2, r10, ASR, r5}, false, al, "vs r2 r10 ASR r5", "vs_r2_r10_ASR_r5"},
   1254     {{al, r7, r8, ROR, r11}, false, al, "al r7 r8 ROR r11", "al_r7_r8_ROR_r11"},
   1255     {{cc, r11, r12, ASR, r13},
   1256      false,
   1257      al,
   1258      "cc r11 r12 ASR r13",
   1259      "cc_r11_r12_ASR_r13"},
   1260     {{cs, r2, r7, LSR, r12}, false, al, "cs r2 r7 LSR r12", "cs_r2_r7_LSR_r12"},
   1261     {{vs, r7, r4, ROR, r14}, false, al, "vs r7 r4 ROR r14", "vs_r7_r4_ROR_r14"},
   1262     {{ne, r12, r1, ROR, r3}, false, al, "ne r12 r1 ROR r3", "ne_r12_r1_ROR_r3"},
   1263     {{ne, r5, r11, LSL, r2}, false, al, "ne r5 r11 LSL r2", "ne_r5_r11_LSL_r2"},
   1264     {{cc, r5, r12, ASR, r13},
   1265      false,
   1266      al,
   1267      "cc r5 r12 ASR r13",
   1268      "cc_r5_r12_ASR_r13"},
   1269     {{gt, r8, r0, LSL, r14}, false, al, "gt r8 r0 LSL r14", "gt_r8_r0_LSL_r14"},
   1270     {{cc, r5, r4, LSR, r12}, false, al, "cc r5 r4 LSR r12", "cc_r5_r4_LSR_r12"},
   1271     {{ge, r6, r7, LSR, r14}, false, al, "ge r6 r7 LSR r14", "ge_r6_r7_LSR_r14"},
   1272     {{vs, r2, r0, LSL, r13}, false, al, "vs r2 r0 LSL r13", "vs_r2_r0_LSL_r13"},
   1273     {{gt, r7, r8, LSL, r0}, false, al, "gt r7 r8 LSL r0", "gt_r7_r8_LSL_r0"},
   1274     {{ne, r3, r11, ROR, r8}, false, al, "ne r3 r11 ROR r8", "ne_r3_r11_ROR_r8"},
   1275     {{ne, r0, r8, LSR, r4}, false, al, "ne r0 r8 LSR r4", "ne_r0_r8_LSR_r4"},
   1276     {{eq, r1, r14, ASR, r13},
   1277      false,
   1278      al,
   1279      "eq r1 r14 ASR r13",
   1280      "eq_r1_r14_ASR_r13"},
   1281     {{pl, r13, r10, LSL, r4},
   1282      false,
   1283      al,
   1284      "pl r13 r10 LSL r4",
   1285      "pl_r13_r10_LSL_r4"},
   1286     {{mi, r12, r14, LSL, r11},
   1287      false,
   1288      al,
   1289      "mi r12 r14 LSL r11",
   1290      "mi_r12_r14_LSL_r11"},
   1291     {{vc, r6, r4, LSL, r7}, false, al, "vc r6 r4 LSL r7", "vc_r6_r4_LSL_r7"},
   1292     {{ge, r7, r8, LSR, r0}, false, al, "ge r7 r8 LSR r0", "ge_r7_r8_LSR_r0"},
   1293     {{ls, r2, r12, LSR, r6}, false, al, "ls r2 r12 LSR r6", "ls_r2_r12_LSR_r6"},
   1294     {{lt, r0, r13, LSL, r1}, false, al, "lt r0 r13 LSL r1", "lt_r0_r13_LSL_r1"},
   1295     {{vs, r5, r7, LSR, r0}, false, al, "vs r5 r7 LSR r0", "vs_r5_r7_LSR_r0"},
   1296     {{ne, r10, r8, ROR, r4}, false, al, "ne r10 r8 ROR r4", "ne_r10_r8_ROR_r4"},
   1297     {{vc, r4, r1, LSL, r7}, false, al, "vc r4 r1 LSL r7", "vc_r4_r1_LSL_r7"},
   1298     {{mi, r14, r1, ROR, r10},
   1299      false,
   1300      al,
   1301      "mi r14 r1 ROR r10",
   1302      "mi_r14_r1_ROR_r10"},
   1303     {{le, r4, r5, LSL, r12}, false, al, "le r4 r5 LSL r12", "le_r4_r5_LSL_r12"},
   1304     {{cs, r9, r3, ROR, r10}, false, al, "cs r9 r3 ROR r10", "cs_r9_r3_ROR_r10"},
   1305     {{al, r5, r9, ROR, r7}, false, al, "al r5 r9 ROR r7", "al_r5_r9_ROR_r7"},
   1306     {{cs, r14, r14, ROR, r1},
   1307      false,
   1308      al,
   1309      "cs r14 r14 ROR r1",
   1310      "cs_r14_r14_ROR_r1"},
   1311     {{vc, r5, r11, LSR, r1}, false, al, "vc r5 r11 LSR r1", "vc_r5_r11_LSR_r1"},
   1312     {{hi, r12, r7, ASR, r3}, false, al, "hi r12 r7 ASR r3", "hi_r12_r7_ASR_r3"},
   1313     {{gt, r13, r3, LSL, r10},
   1314      false,
   1315      al,
   1316      "gt r13 r3 LSL r10",
   1317      "gt_r13_r3_LSL_r10"},
   1318     {{pl, r12, r14, ASR, r14},
   1319      false,
   1320      al,
   1321      "pl r12 r14 ASR r14",
   1322      "pl_r12_r14_ASR_r14"},
   1323     {{al, r3, r1, ROR, r6}, false, al, "al r3 r1 ROR r6", "al_r3_r1_ROR_r6"},
   1324     {{le, r13, r2, ROR, r9}, false, al, "le r13 r2 ROR r9", "le_r13_r2_ROR_r9"},
   1325     {{cs, r12, r4, LSL, r9}, false, al, "cs r12 r4 LSL r9", "cs_r12_r4_LSL_r9"},
   1326     {{gt, r4, r7, ASR, r14}, false, al, "gt r4 r7 ASR r14", "gt_r4_r7_ASR_r14"},
   1327     {{vc, r13, r1, ROR, r10},
   1328      false,
   1329      al,
   1330      "vc r13 r1 ROR r10",
   1331      "vc_r13_r1_ROR_r10"},
   1332     {{ls, r10, r12, LSR, r1},
   1333      false,
   1334      al,
   1335      "ls r10 r12 LSR r1",
   1336      "ls_r10_r12_LSR_r1"},
   1337     {{hi, r8, r0, LSL, r0}, false, al, "hi r8 r0 LSL r0", "hi_r8_r0_LSL_r0"},
   1338     {{al, r4, r9, LSL, r0}, false, al, "al r4 r9 LSL r0", "al_r4_r9_LSL_r0"},
   1339     {{eq, r12, r10, LSL, r14},
   1340      false,
   1341      al,
   1342      "eq r12 r10 LSL r14",
   1343      "eq_r12_r10_LSL_r14"},
   1344     {{le, r4, r9, LSL, r12}, false, al, "le r4 r9 LSL r12", "le_r4_r9_LSL_r12"},
   1345     {{cc, r1, r6, ASR, r14}, false, al, "cc r1 r6 ASR r14", "cc_r1_r6_ASR_r14"},
   1346     {{pl, r3, r7, ASR, r2}, false, al, "pl r3 r7 ASR r2", "pl_r3_r7_ASR_r2"},
   1347     {{eq, r14, r9, ROR, r0}, false, al, "eq r14 r9 ROR r0", "eq_r14_r9_ROR_r0"},
   1348     {{hi, r8, r6, LSR, r5}, false, al, "hi r8 r6 LSR r5", "hi_r8_r6_LSR_r5"},
   1349     {{hi, r10, r1, LSL, r0}, false, al, "hi r10 r1 LSL r0", "hi_r10_r1_LSL_r0"},
   1350     {{ls, r0, r13, LSR, r0}, false, al, "ls r0 r13 LSR r0", "ls_r0_r13_LSR_r0"},
   1351     {{vs, r10, r7, ROR, r7}, false, al, "vs r10 r7 ROR r7", "vs_r10_r7_ROR_r7"},
   1352     {{eq, r1, r3, LSR, r6}, false, al, "eq r1 r3 LSR r6", "eq_r1_r3_LSR_r6"},
   1353     {{eq, r8, r6, ASR, r0}, false, al, "eq r8 r6 ASR r0", "eq_r8_r6_ASR_r0"},
   1354     {{eq, r2, r5, LSR, r10}, false, al, "eq r2 r5 LSR r10", "eq_r2_r5_LSR_r10"},
   1355     {{al, r0, r4, LSL, r13}, false, al, "al r0 r4 LSL r13", "al_r0_r4_LSL_r13"},
   1356     {{ge, r0, r12, ROR, r2}, false, al, "ge r0 r12 ROR r2", "ge_r0_r12_ROR_r2"},
   1357     {{le, r0, r13, ROR, r4}, false, al, "le r0 r13 ROR r4", "le_r0_r13_ROR_r4"},
   1358     {{ge, r3, r11, ASR, r6}, false, al, "ge r3 r11 ASR r6", "ge_r3_r11_ASR_r6"},
   1359     {{ne, r7, r11, ROR, r0}, false, al, "ne r7 r11 ROR r0", "ne_r7_r11_ROR_r0"},
   1360     {{hi, r14, r5, ASR, r0}, false, al, "hi r14 r5 ASR r0", "hi_r14_r5_ASR_r0"},
   1361     {{cs, r12, r9, LSL, r2}, false, al, "cs r12 r9 LSL r2", "cs_r12_r9_LSL_r2"},
   1362     {{cs, r12, r8, ASR, r10},
   1363      false,
   1364      al,
   1365      "cs r12 r8 ASR r10",
   1366      "cs_r12_r8_ASR_r10"},
   1367     {{cc, r0, r2, LSR, r13}, false, al, "cc r0 r2 LSR r13", "cc_r0_r2_LSR_r13"},
   1368     {{cc, r5, r0, LSR, r4}, false, al, "cc r5 r0 LSR r4", "cc_r5_r0_LSR_r4"},
   1369     {{ne, r10, r14, ROR, r3},
   1370      false,
   1371      al,
   1372      "ne r10 r14 ROR r3",
   1373      "ne_r10_r14_ROR_r3"},
   1374     {{hi, r5, r1, LSL, r10}, false, al, "hi r5 r1 LSL r10", "hi_r5_r1_LSL_r10"},
   1375     {{lt, r14, r12, LSR, r13},
   1376      false,
   1377      al,
   1378      "lt r14 r12 LSR r13",
   1379      "lt_r14_r12_LSR_r13"},
   1380     {{hi, r14, r9, LSR, r5}, false, al, "hi r14 r9 LSR r5", "hi_r14_r9_LSR_r5"},
   1381     {{cc, r4, r4, LSR, r3}, false, al, "cc r4 r4 LSR r3", "cc_r4_r4_LSR_r3"},
   1382     {{hi, r9, r4, ROR, r13}, false, al, "hi r9 r4 ROR r13", "hi_r9_r4_ROR_r13"},
   1383     {{cc, r7, r6, ASR, r0}, false, al, "cc r7 r6 ASR r0", "cc_r7_r6_ASR_r0"},
   1384     {{ne, r6, r12, ROR, r8}, false, al, "ne r6 r12 ROR r8", "ne_r6_r12_ROR_r8"},
   1385     {{cc, r4, r1, LSL, r9}, false, al, "cc r4 r1 LSL r9", "cc_r4_r1_LSL_r9"},
   1386     {{ls, r6, r10, LSR, r9}, false, al, "ls r6 r10 LSR r9", "ls_r6_r10_LSR_r9"},
   1387     {{ge, r13, r6, ASR, r4}, false, al, "ge r13 r6 ASR r4", "ge_r13_r6_ASR_r4"},
   1388     {{pl, r0, r6, ROR, r12}, false, al, "pl r0 r6 ROR r12", "pl_r0_r6_ROR_r12"},
   1389     {{eq, r13, r2, LSL, r6}, false, al, "eq r13 r2 LSL r6", "eq_r13_r2_LSL_r6"},
   1390     {{vc, r5, r14, LSR, r2}, false, al, "vc r5 r14 LSR r2", "vc_r5_r14_LSR_r2"},
   1391     {{ls, r3, r7, LSL, r14}, false, al, "ls r3 r7 LSL r14", "ls_r3_r7_LSL_r14"},
   1392     {{le, r13, r7, ROR, r1}, false, al, "le r13 r7 ROR r1", "le_r13_r7_ROR_r1"},
   1393     {{ge, r6, r1, ROR, r2}, false, al, "ge r6 r1 ROR r2", "ge_r6_r1_ROR_r2"},
   1394     {{le, r5, r13, LSL, r8}, false, al, "le r5 r13 LSL r8", "le_r5_r13_LSL_r8"},
   1395     {{eq, r13, r14, ROR, r6},
   1396      false,
   1397      al,
   1398      "eq r13 r14 ROR r6",
   1399      "eq_r13_r14_ROR_r6"},
   1400     {{vs, r10, r9, ASR, r2}, false, al, "vs r10 r9 ASR r2", "vs_r10_r9_ASR_r2"},
   1401     {{ls, r7, r10, LSL, r10},
   1402      false,
   1403      al,
   1404      "ls r7 r10 LSL r10",
   1405      "ls_r7_r10_LSL_r10"},
   1406     {{mi, r0, r8, LSL, r13}, false, al, "mi r0 r8 LSL r13", "mi_r0_r8_LSL_r13"},
   1407     {{cc, r6, r5, ROR, r6}, false, al, "cc r6 r5 ROR r6", "cc_r6_r5_ROR_r6"},
   1408     {{cc, r5, r14, ASR, r9}, false, al, "cc r5 r14 ASR r9", "cc_r5_r14_ASR_r9"},
   1409     {{ge, r8, r3, ROR, r4}, false, al, "ge r8 r3 ROR r4", "ge_r8_r3_ROR_r4"},
   1410     {{ge, r4, r3, ROR, r0}, false, al, "ge r4 r3 ROR r0", "ge_r4_r3_ROR_r0"},
   1411     {{lt, r12, r13, ROR, r5},
   1412      false,
   1413      al,
   1414      "lt r12 r13 ROR r5",
   1415      "lt_r12_r13_ROR_r5"},
   1416     {{cs, r14, r14, LSL, r8},
   1417      false,
   1418      al,
   1419      "cs r14 r14 LSL r8",
   1420      "cs_r14_r14_LSL_r8"},
   1421     {{mi, r6, r3, ASR, r12}, false, al, "mi r6 r3 ASR r12", "mi_r6_r3_ASR_r12"},
   1422     {{gt, r2, r1, ASR, r3}, false, al, "gt r2 r1 ASR r3", "gt_r2_r1_ASR_r3"},
   1423     {{vc, r14, r14, LSL, r11},
   1424      false,
   1425      al,
   1426      "vc r14 r14 LSL r11",
   1427      "vc_r14_r14_LSL_r11"},
   1428     {{pl, r12, r14, ASR, r5},
   1429      false,
   1430      al,
   1431      "pl r12 r14 ASR r5",
   1432      "pl_r12_r14_ASR_r5"},
   1433     {{cs, r7, r12, LSL, r14},
   1434      false,
   1435      al,
   1436      "cs r7 r12 LSL r14",
   1437      "cs_r7_r12_LSL_r14"},
   1438     {{eq, r3, r1, LSR, r3}, false, al, "eq r3 r1 LSR r3", "eq_r3_r1_LSR_r3"},
   1439     {{cs, r6, r7, ASR, r12}, false, al, "cs r6 r7 ASR r12", "cs_r6_r7_ASR_r12"},
   1440     {{le, r6, r4, ROR, r4}, false, al, "le r6 r4 ROR r4", "le_r6_r4_ROR_r4"},
   1441     {{hi, r1, r6, LSR, r4}, false, al, "hi r1 r6 LSR r4", "hi_r1_r6_LSR_r4"},
   1442     {{mi, r6, r3, ASR, r4}, false, al, "mi r6 r3 ASR r4", "mi_r6_r3_ASR_r4"},
   1443     {{vs, r9, r10, ASR, r12},
   1444      false,
   1445      al,
   1446      "vs r9 r10 ASR r12",
   1447      "vs_r9_r10_ASR_r12"},
   1448     {{cc, r9, r10, LSL, r1}, false, al, "cc r9 r10 LSL r1", "cc_r9_r10_LSL_r1"},
   1449     {{ls, r12, r9, ASR, r4}, false, al, "ls r12 r9 ASR r4", "ls_r12_r9_ASR_r4"},
   1450     {{vc, r10, r7, ASR, r12},
   1451      false,
   1452      al,
   1453      "vc r10 r7 ASR r12",
   1454      "vc_r10_r7_ASR_r12"},
   1455     {{cs, r8, r1, LSR, r5}, false, al, "cs r8 r1 LSR r5", "cs_r8_r1_LSR_r5"},
   1456     {{eq, r10, r10, ASR, r4},
   1457      false,
   1458      al,
   1459      "eq r10 r10 ASR r4",
   1460      "eq_r10_r10_ASR_r4"},
   1461     {{ls, r7, r7, LSL, r5}, false, al, "ls r7 r7 LSL r5", "ls_r7_r7_LSL_r5"},
   1462     {{vs, r8, r11, ROR, r12},
   1463      false,
   1464      al,
   1465      "vs r8 r11 ROR r12",
   1466      "vs_r8_r11_ROR_r12"},
   1467     {{vs, r7, r6, ASR, r4}, false, al, "vs r7 r6 ASR r4", "vs_r7_r6_ASR_r4"},
   1468     {{ge, r5, r3, LSL, r6}, false, al, "ge r5 r3 LSL r6", "ge_r5_r3_LSL_r6"},
   1469     {{vc, r5, r5, LSL, r12}, false, al, "vc r5 r5 LSL r12", "vc_r5_r5_LSL_r12"},
   1470     {{le, r0, r13, LSL, r12},
   1471      false,
   1472      al,
   1473      "le r0 r13 LSL r12",
   1474      "le_r0_r13_LSL_r12"},
   1475     {{ls, r4, r0, ASR, r11}, false, al, "ls r4 r0 ASR r11", "ls_r4_r0_ASR_r11"},
   1476     {{ge, r3, r7, ASR, r5}, false, al, "ge r3 r7 ASR r5", "ge_r3_r7_ASR_r5"},
   1477     {{ge, r11, r4, ROR, r11},
   1478      false,
   1479      al,
   1480      "ge r11 r4 ROR r11",
   1481      "ge_r11_r4_ROR_r11"},
   1482     {{al, r6, r7, ROR, r7}, false, al, "al r6 r7 ROR r7", "al_r6_r7_ROR_r7"},
   1483     {{gt, r4, r4, LSR, r6}, false, al, "gt r4 r4 LSR r6", "gt_r4_r4_LSR_r6"},
   1484     {{pl, r14, r2, LSR, r1}, false, al, "pl r14 r2 LSR r1", "pl_r14_r2_LSR_r1"},
   1485     {{le, r10, r9, ROR, r9}, false, al, "le r10 r9 ROR r9", "le_r10_r9_ROR_r9"},
   1486     {{ne, r5, r3, ASR, r2}, false, al, "ne r5 r3 ASR r2", "ne_r5_r3_ASR_r2"},
   1487     {{lt, r12, r4, LSL, r11},
   1488      false,
   1489      al,
   1490      "lt r12 r4 LSL r11",
   1491      "lt_r12_r4_LSL_r11"},
   1492     {{mi, r1, r1, LSR, r13}, false, al, "mi r1 r1 LSR r13", "mi_r1_r1_LSR_r13"},
   1493     {{hi, r7, r4, ROR, r9}, false, al, "hi r7 r4 ROR r9", "hi_r7_r4_ROR_r9"},
   1494     {{lt, r8, r14, LSR, r10},
   1495      false,
   1496      al,
   1497      "lt r8 r14 LSR r10",
   1498      "lt_r8_r14_LSR_r10"},
   1499     {{ge, r7, r5, ROR, r11}, false, al, "ge r7 r5 ROR r11", "ge_r7_r5_ROR_r11"},
   1500     {{ls, r12, r14, LSL, r7},
   1501      false,
   1502      al,
   1503      "ls r12 r14 LSL r7",
   1504      "ls_r12_r14_LSL_r7"},
   1505     {{hi, r14, r0, LSL, r3}, false, al, "hi r14 r0 LSL r3", "hi_r14_r0_LSL_r3"},
   1506     {{ge, r8, r10, ROR, r2}, false, al, "ge r8 r10 ROR r2", "ge_r8_r10_ROR_r2"},
   1507     {{hi, r6, r3, LSR, r0}, false, al, "hi r6 r3 LSR r0", "hi_r6_r3_LSR_r0"},
   1508     {{ls, r4, r1, ROR, r3}, false, al, "ls r4 r1 ROR r3", "ls_r4_r1_ROR_r3"},
   1509     {{ls, r9, r13, ASR, r1}, false, al, "ls r9 r13 ASR r1", "ls_r9_r13_ASR_r1"},
   1510     {{lt, r10, r1, LSR, r5}, false, al, "lt r10 r1 LSR r5", "lt_r10_r1_LSR_r5"},
   1511     {{vc, r10, r13, ASR, r3},
   1512      false,
   1513      al,
   1514      "vc r10 r13 ASR r3",
   1515      "vc_r10_r13_ASR_r3"},
   1516     {{gt, r1, r0, LSR, r9}, false, al, "gt r1 r0 LSR r9", "gt_r1_r0_LSR_r9"},
   1517     {{vs, r13, r11, LSL, r14},
   1518      false,
   1519      al,
   1520      "vs r13 r11 LSL r14",
   1521      "vs_r13_r11_LSL_r14"},
   1522     {{eq, r4, r7, LSL, r9}, false, al, "eq r4 r7 LSL r9", "eq_r4_r7_LSL_r9"},
   1523     {{lt, r14, r9, LSL, r13},
   1524      false,
   1525      al,
   1526      "lt r14 r9 LSL r13",
   1527      "lt_r14_r9_LSL_r13"},
   1528     {{le, r8, r8, ASR, r0}, false, al, "le r8 r8 ASR r0", "le_r8_r8_ASR_r0"},
   1529     {{vs, r14, r9, LSR, r3}, false, al, "vs r14 r9 LSR r3", "vs_r14_r9_LSR_r3"},
   1530     {{al, r10, r6, ROR, r13},
   1531      false,
   1532      al,
   1533      "al r10 r6 ROR r13",
   1534      "al_r10_r6_ROR_r13"},
   1535     {{vs, r5, r2, ROR, r7}, false, al, "vs r5 r2 ROR r7", "vs_r5_r2_ROR_r7"},
   1536     {{vs, r14, r12, ROR, r14},
   1537      false,
   1538      al,
   1539      "vs r14 r12 ROR r14",
   1540      "vs_r14_r12_ROR_r14"},
   1541     {{lt, r11, r2, ASR, r0}, false, al, "lt r11 r2 ASR r0", "lt_r11_r2_ASR_r0"},
   1542     {{vc, r3, r2, LSL, r9}, false, al, "vc r3 r2 LSL r9", "vc_r3_r2_LSL_r9"},
   1543     {{hi, r14, r4, LSL, r2}, false, al, "hi r14 r4 LSL r2", "hi_r14_r4_LSL_r2"},
   1544     {{gt, r8, r9, ASR, r0}, false, al, "gt r8 r9 ASR r0", "gt_r8_r9_ASR_r0"},
   1545     {{gt, r4, r4, LSL, r11}, false, al, "gt r4 r4 LSL r11", "gt_r4_r4_LSL_r11"},
   1546     {{cc, r5, r14, LSL, r9}, false, al, "cc r5 r14 LSL r9", "cc_r5_r14_LSL_r9"},
   1547     {{lt, r10, r10, ASR, r5},
   1548      false,
   1549      al,
   1550      "lt r10 r10 ASR r5",
   1551      "lt_r10_r10_ASR_r5"},
   1552     {{eq, r1, r12, LSR, r7}, false, al, "eq r1 r12 LSR r7", "eq_r1_r12_LSR_r7"},
   1553     {{eq, r11, r9, ROR, r7}, false, al, "eq r11 r9 ROR r7", "eq_r11_r9_ROR_r7"},
   1554     {{gt, r5, r7, ASR, r6}, false, al, "gt r5 r7 ASR r6", "gt_r5_r7_ASR_r6"},
   1555     {{cc, r7, r2, LSL, r13}, false, al, "cc r7 r2 LSL r13", "cc_r7_r2_LSL_r13"},
   1556     {{cs, r12, r12, LSL, r4},
   1557      false,
   1558      al,
   1559      "cs r12 r12 LSL r4",
   1560      "cs_r12_r12_LSL_r4"},
   1561     {{ls, r4, r4, ROR, r7}, false, al, "ls r4 r4 ROR r7", "ls_r4_r4_ROR_r7"},
   1562     {{al, r13, r8, ASR, r10},
   1563      false,
   1564      al,
   1565      "al r13 r8 ASR r10",
   1566      "al_r13_r8_ASR_r10"},
   1567     {{cs, r1, r0, ASR, r1}, false, al, "cs r1 r0 ASR r1", "cs_r1_r0_ASR_r1"},
   1568     {{ne, r6, r7, LSL, r0}, false, al, "ne r6 r7 LSL r0", "ne_r6_r7_LSL_r0"},
   1569     {{cc, r5, r13, LSR, r9}, false, al, "cc r5 r13 LSR r9", "cc_r5_r13_LSR_r9"},
   1570     {{cc, r9, r6, LSL, r14}, false, al, "cc r9 r6 LSL r14", "cc_r9_r6_LSL_r14"},
   1571     {{al, r12, r13, ASR, r2},
   1572      false,
   1573      al,
   1574      "al r12 r13 ASR r2",
   1575      "al_r12_r13_ASR_r2"},
   1576     {{gt, r0, r6, LSR, r6}, false, al, "gt r0 r6 LSR r6", "gt_r0_r6_LSR_r6"},
   1577     {{al, r6, r10, ROR, r10},
   1578      false,
   1579      al,
   1580      "al r6 r10 ROR r10",
   1581      "al_r6_r10_ROR_r10"},
   1582     {{lt, r4, r13, LSL, r6}, false, al, "lt r4 r13 LSL r6", "lt_r4_r13_LSL_r6"},
   1583     {{hi, r12, r0, LSL, r10},
   1584      false,
   1585      al,
   1586      "hi r12 r0 LSL r10",
   1587      "hi_r12_r0_LSL_r10"},
   1588     {{ge, r5, r9, ROR, r11}, false, al, "ge r5 r9 ROR r11", "ge_r5_r9_ROR_r11"},
   1589     {{ge, r4, r5, ASR, r10}, false, al, "ge r4 r5 ASR r10", "ge_r4_r5_ASR_r10"},
   1590     {{al, r0, r5, LSL, r11}, false, al, "al r0 r5 LSL r11", "al_r0_r5_LSL_r11"},
   1591     {{mi, r6, r3, LSR, r8}, false, al, "mi r6 r3 LSR r8", "mi_r6_r3_LSR_r8"},
   1592     {{gt, r2, r6, LSR, r6}, false, al, "gt r2 r6 LSR r6", "gt_r2_r6_LSR_r6"},
   1593     {{le, r7, r3, ROR, r10}, false, al, "le r7 r3 ROR r10", "le_r7_r3_ROR_r10"},
   1594     {{vs, r8, r5, LSR, r13}, false, al, "vs r8 r5 LSR r13", "vs_r8_r5_LSR_r13"},
   1595     {{al, r10, r7, ASR, r14},
   1596      false,
   1597      al,
   1598      "al r10 r7 ASR r14",
   1599      "al_r10_r7_ASR_r14"},
   1600     {{lt, r10, r11, LSL, r5},
   1601      false,
   1602      al,
   1603      "lt r10 r11 LSL r5",
   1604      "lt_r10_r11_LSL_r5"},
   1605     {{lt, r11, r3, LSR, r4}, false, al, "lt r11 r3 LSR r4", "lt_r11_r3_LSR_r4"},
   1606     {{vc, r11, r10, LSR, r8},
   1607      false,
   1608      al,
   1609      "vc r11 r10 LSR r8",
   1610      "vc_r11_r10_LSR_r8"},
   1611     {{cs, r11, r5, LSL, r9}, false, al, "cs r11 r5 LSL r9", "cs_r11_r5_LSL_r9"},
   1612     {{cs, r6, r5, LSR, r7}, false, al, "cs r6 r5 LSR r7", "cs_r6_r5_LSR_r7"},
   1613     {{lt, r7, r7, ASR, r1}, false, al, "lt r7 r7 ASR r1", "lt_r7_r7_ASR_r1"},
   1614     {{cc, r7, r4, ROR, r7}, false, al, "cc r7 r4 ROR r7", "cc_r7_r4_ROR_r7"},
   1615     {{ls, r8, r12, LSR, r9}, false, al, "ls r8 r12 LSR r9", "ls_r8_r12_LSR_r9"},
   1616     {{le, r5, r13, ROR, r11},
   1617      false,
   1618      al,
   1619      "le r5 r13 ROR r11",
   1620      "le_r5_r13_ROR_r11"},
   1621     {{eq, r4, r5, ROR, r12}, false, al, "eq r4 r5 ROR r12", "eq_r4_r5_ROR_r12"},
   1622     {{ls, r0, r0, LSL, r1}, false, al, "ls r0 r0 LSL r1", "ls_r0_r0_LSL_r1"},
   1623     {{ge, r7, r2, ROR, r9}, false, al, "ge r7 r2 ROR r9", "ge_r7_r2_ROR_r9"},
   1624     {{cc, r5, r6, LSR, r12}, false, al, "cc r5 r6 LSR r12", "cc_r5_r6_LSR_r12"},
   1625     {{cs, r7, r4, ASR, r10}, false, al, "cs r7 r4 ASR r10", "cs_r7_r4_ASR_r10"},
   1626     {{al, r5, r4, ROR, r14}, false, al, "al r5 r4 ROR r14", "al_r5_r4_ROR_r14"},
   1627     {{eq, r7, r3, ROR, r12}, false, al, "eq r7 r3 ROR r12", "eq_r7_r3_ROR_r12"},
   1628     {{cc, r9, r4, LSL, r14}, false, al, "cc r9 r4 LSL r14", "cc_r9_r4_LSL_r14"},
   1629     {{le, r5, r2, ASR, r13}, false, al, "le r5 r2 ASR r13", "le_r5_r2_ASR_r13"},
   1630     {{eq, r14, r12, ROR, r4},
   1631      false,
   1632      al,
   1633      "eq r14 r12 ROR r4",
   1634      "eq_r14_r12_ROR_r4"},
   1635     {{eq, r5, r2, ASR, r8}, false, al, "eq r5 r2 ASR r8", "eq_r5_r2_ASR_r8"},
   1636     {{gt, r12, r5, LSR, r7}, false, al, "gt r12 r5 LSR r7", "gt_r12_r5_LSR_r7"},
   1637     {{cc, r11, r14, ROR, r1},
   1638      false,
   1639      al,
   1640      "cc r11 r14 ROR r1",
   1641      "cc_r11_r14_ROR_r1"},
   1642     {{ge, r0, r11, LSL, r9}, false, al, "ge r0 r11 LSL r9", "ge_r0_r11_LSL_r9"},
   1643     {{ls, r4, r4, ROR, r0}, false, al, "ls r4 r4 ROR r0", "ls_r4_r4_ROR_r0"},
   1644     {{cs, r7, r9, ROR, r10}, false, al, "cs r7 r9 ROR r10", "cs_r7_r9_ROR_r10"},
   1645     {{le, r9, r4, LSR, r5}, false, al, "le r9 r4 LSR r5", "le_r9_r4_LSR_r5"},
   1646     {{ls, r1, r4, LSL, r10}, false, al, "ls r1 r4 LSL r10", "ls_r1_r4_LSL_r10"},
   1647     {{lt, r9, r13, LSL, r2}, false, al, "lt r9 r13 LSL r2", "lt_r9_r13_LSL_r2"},
   1648     {{vs, r13, r6, ROR, r13},
   1649      false,
   1650      al,
   1651      "vs r13 r6 ROR r13",
   1652      "vs_r13_r6_ROR_r13"},
   1653     {{cs, r4, r0, LSL, r9}, false, al, "cs r4 r0 LSL r9", "cs_r4_r0_LSL_r9"},
   1654     {{le, r8, r13, LSR, r14},
   1655      false,
   1656      al,
   1657      "le r8 r13 LSR r14",
   1658      "le_r8_r13_LSR_r14"},
   1659     {{al, r9, r7, LSL, r10}, false, al, "al r9 r7 LSL r10", "al_r9_r7_LSL_r10"},
   1660     {{mi, r6, r8, LSL, r2}, false, al, "mi r6 r8 LSL r2", "mi_r6_r8_LSL_r2"},
   1661     {{ne, r6, r5, ASR, r5}, false, al, "ne r6 r5 ASR r5", "ne_r6_r5_ASR_r5"},
   1662     {{ls, r1, r8, LSR, r12}, false, al, "ls r1 r8 LSR r12", "ls_r1_r8_LSR_r12"},
   1663     {{cs, r9, r7, LSL, r10}, false, al, "cs r9 r7 LSL r10", "cs_r9_r7_LSL_r10"},
   1664     {{cc, r3, r0, ROR, r2}, false, al, "cc r3 r0 ROR r2", "cc_r3_r0_ROR_r2"},
   1665     {{vc, r5, r6, ASR, r11}, false, al, "vc r5 r6 ASR r11", "vc_r5_r6_ASR_r11"},
   1666     {{le, r11, r9, ROR, r10},
   1667      false,
   1668      al,
   1669      "le r11 r9 ROR r10",
   1670      "le_r11_r9_ROR_r10"},
   1671     {{gt, r4, r10, ROR, r13},
   1672      false,
   1673      al,
   1674      "gt r4 r10 ROR r13",
   1675      "gt_r4_r10_ROR_r13"},
   1676     {{lt, r13, r14, LSL, r11},
   1677      false,
   1678      al,
   1679      "lt r13 r14 LSL r11",
   1680      "lt_r13_r14_LSL_r11"},
   1681     {{ls, r10, r8, LSL, r11},
   1682      false,
   1683      al,
   1684      "ls r10 r8 LSL r11",
   1685      "ls_r10_r8_LSL_r11"},
   1686     {{gt, r7, r9, ROR, r12}, false, al, "gt r7 r9 ROR r12", "gt_r7_r9_ROR_r12"},
   1687     {{le, r11, r8, LSR, r0}, false, al, "le r11 r8 LSR r0", "le_r11_r8_LSR_r0"},
   1688     {{vs, r3, r1, LSR, r3}, false, al, "vs r3 r1 LSR r3", "vs_r3_r1_LSR_r3"},
   1689     {{cs, r14, r13, ROR, r5},
   1690      false,
   1691      al,
   1692      "cs r14 r13 ROR r5",
   1693      "cs_r14_r13_ROR_r5"},
   1694     {{pl, r1, r0, LSL, r6}, false, al, "pl r1 r0 LSL r6", "pl_r1_r0_LSL_r6"},
   1695     {{hi, r13, r8, ROR, r12},
   1696      false,
   1697      al,
   1698      "hi r13 r8 ROR r12",
   1699      "hi_r13_r8_ROR_r12"},
   1700     {{vc, r6, r7, LSR, r0}, false, al, "vc r6 r7 LSR r0", "vc_r6_r7_LSR_r0"},
   1701     {{gt, r4, r10, LSL, r4}, false, al, "gt r4 r10 LSL r4", "gt_r4_r10_LSL_r4"},
   1702     {{ge, r4, r12, LSR, r7}, false, al, "ge r4 r12 LSR r7", "ge_r4_r12_LSR_r7"},
   1703     {{pl, r1, r8, LSR, r3}, false, al, "pl r1 r8 LSR r3", "pl_r1_r8_LSR_r3"},
   1704     {{hi, r0, r0, ASR, r7}, false, al, "hi r0 r0 ASR r7", "hi_r0_r0_ASR_r7"},
   1705     {{cs, r0, r7, ROR, r12}, false, al, "cs r0 r7 ROR r12", "cs_r0_r7_ROR_r12"},
   1706     {{eq, r10, r9, LSR, r0}, false, al, "eq r10 r9 LSR r0", "eq_r10_r9_LSR_r0"},
   1707     {{cc, r5, r10, ROR, r10},
   1708      false,
   1709      al,
   1710      "cc r5 r10 ROR r10",
   1711      "cc_r5_r10_ROR_r10"},
   1712     {{cs, r0, r14, ROR, r8}, false, al, "cs r0 r14 ROR r8", "cs_r0_r14_ROR_r8"},
   1713     {{eq, r14, r11, LSR, r5},
   1714      false,
   1715      al,
   1716      "eq r14 r11 LSR r5",
   1717      "eq_r14_r11_LSR_r5"},
   1718     {{le, r14, r4, LSR, r12},
   1719      false,
   1720      al,
   1721      "le r14 r4 LSR r12",
   1722      "le_r14_r4_LSR_r12"},
   1723     {{lt, r10, r8, LSL, r10},
   1724      false,
   1725      al,
   1726      "lt r10 r8 LSL r10",
   1727      "lt_r10_r8_LSL_r10"},
   1728     {{le, r13, r4, LSR, r0}, false, al, "le r13 r4 LSR r0", "le_r13_r4_LSR_r0"},
   1729     {{vc, r9, r9, LSL, r14}, false, al, "vc r9 r9 LSL r14", "vc_r9_r9_LSL_r14"},
   1730     {{vs, r1, r2, LSR, r7}, false, al, "vs r1 r2 LSR r7", "vs_r1_r2_LSR_r7"},
   1731     {{al, r14, r4, ROR, r4}, false, al, "al r14 r4 ROR r4", "al_r14_r4_ROR_r4"},
   1732     {{vs, r10, r6, ROR, r10},
   1733      false,
   1734      al,
   1735      "vs r10 r6 ROR r10",
   1736      "vs_r10_r6_ROR_r10"},
   1737     {{cc, r11, r13, LSL, r11},
   1738      false,
   1739      al,
   1740      "cc r11 r13 LSL r11",
   1741      "cc_r11_r13_LSL_r11"},
   1742     {{lt, r4, r9, ROR, r2}, false, al, "lt r4 r9 ROR r2", "lt_r4_r9_ROR_r2"},
   1743     {{gt, r4, r12, ASR, r8}, false, al, "gt r4 r12 ASR r8", "gt_r4_r12_ASR_r8"},
   1744     {{hi, r3, r6, LSR, r14}, false, al, "hi r3 r6 LSR r14", "hi_r3_r6_LSR_r14"},
   1745     {{vs, r11, r6, LSL, r5}, false, al, "vs r11 r6 LSL r5", "vs_r11_r6_LSL_r5"},
   1746     {{ne, r14, r12, LSR, r9},
   1747      false,
   1748      al,
   1749      "ne r14 r12 LSR r9",
   1750      "ne_r14_r12_LSR_r9"},
   1751     {{cc, r12, r5, ROR, r0}, false, al, "cc r12 r5 ROR r0", "cc_r12_r5_ROR_r0"},
   1752     {{al, r11, r1, ASR, r14},
   1753      false,
   1754      al,
   1755      "al r11 r1 ASR r14",
   1756      "al_r11_r1_ASR_r14"},
   1757     {{ge, r9, r1, LSR, r12}, false, al, "ge r9 r1 LSR r12", "ge_r9_r1_LSR_r12"},
   1758     {{pl, r12, r1, LSR, r11},
   1759      false,
   1760      al,
   1761      "pl r12 r1 LSR r11",
   1762      "pl_r12_r1_LSR_r11"},
   1763     {{pl, r0, r1, ROR, r4}, false, al, "pl r0 r1 ROR r4", "pl_r0_r1_ROR_r4"},
   1764     {{mi, r10, r12, ROR, r10},
   1765      false,
   1766      al,
   1767      "mi r10 r12 ROR r10",
   1768      "mi_r10_r12_ROR_r10"},
   1769     {{cs, r4, r5, ASR, r0}, false, al, "cs r4 r5 ASR r0", "cs_r4_r5_ASR_r0"},
   1770     {{lt, r6, r3, ASR, r11}, false, al, "lt r6 r3 ASR r11", "lt_r6_r3_ASR_r11"},
   1771     {{cs, r5, r13, ASR, r6}, false, al, "cs r5 r13 ASR r6", "cs_r5_r13_ASR_r6"},
   1772     {{vs, r10, r3, LSR, r10},
   1773      false,
   1774      al,
   1775      "vs r10 r3 LSR r10",
   1776      "vs_r10_r3_LSR_r10"},
   1777     {{vc, r5, r12, LSR, r8}, false, al, "vc r5 r12 LSR r8", "vc_r5_r12_LSR_r8"},
   1778     {{al, r3, r10, ROR, r8}, false, al, "al r3 r10 ROR r8", "al_r3_r10_ROR_r8"},
   1779     {{vc, r11, r4, ASR, r0}, false, al, "vc r11 r4 ASR r0", "vc_r11_r4_ASR_r0"},
   1780     {{ge, r10, r1, LSL, r11},
   1781      false,
   1782      al,
   1783      "ge r10 r1 LSL r11",
   1784      "ge_r10_r1_LSL_r11"},
   1785     {{eq, r1, r3, LSR, r8}, false, al, "eq r1 r3 LSR r8", "eq_r1_r3_LSR_r8"},
   1786     {{vc, r14, r4, LSL, r9}, false, al, "vc r14 r4 LSL r9", "vc_r14_r4_LSL_r9"},
   1787     {{gt, r2, r0, ROR, r3}, false, al, "gt r2 r0 ROR r3", "gt_r2_r0_ROR_r3"},
   1788     {{mi, r10, r3, LSR, r4}, false, al, "mi r10 r3 LSR r4", "mi_r10_r3_LSR_r4"},
   1789     {{vs, r7, r9, ROR, r13}, false, al, "vs r7 r9 ROR r13", "vs_r7_r9_ROR_r13"},
   1790     {{eq, r4, r3, LSR, r1}, false, al, "eq r4 r3 LSR r1", "eq_r4_r3_LSR_r1"},
   1791     {{mi, r7, r0, LSL, r0}, false, al, "mi r7 r0 LSL r0", "mi_r7_r0_LSL_r0"},
   1792     {{ls, r11, r6, LSR, r11},
   1793      false,
   1794      al,
   1795      "ls r11 r6 LSR r11",
   1796      "ls_r11_r6_LSR_r11"},
   1797     {{al, r8, r4, LSL, r12}, false, al, "al r8 r4 LSL r12", "al_r8_r4_LSL_r12"},
   1798     {{pl, r7, r13, LSR, r8}, false, al, "pl r7 r13 LSR r8", "pl_r7_r13_LSR_r8"},
   1799     {{eq, r4, r4, LSR, r13}, false, al, "eq r4 r4 LSR r13", "eq_r4_r4_LSR_r13"},
   1800     {{eq, r3, r4, ROR, r6}, false, al, "eq r3 r4 ROR r6", "eq_r3_r4_ROR_r6"},
   1801     {{ne, r8, r11, LSR, r14},
   1802      false,
   1803      al,
   1804      "ne r8 r11 LSR r14",
   1805      "ne_r8_r11_LSR_r14"},
   1806     {{ge, r12, r7, LSL, r1}, false, al, "ge r12 r7 LSL r1", "ge_r12_r7_LSL_r1"},
   1807     {{gt, r12, r7, LSL, r14},
   1808      false,
   1809      al,
   1810      "gt r12 r7 LSL r14",
   1811      "gt_r12_r7_LSL_r14"},
   1812     {{ne, r14, r13, LSR, r2},
   1813      false,
   1814      al,
   1815      "ne r14 r13 LSR r2",
   1816      "ne_r14_r13_LSR_r2"},
   1817     {{ne, r14, r2, LSR, r14},
   1818      false,
   1819      al,
   1820      "ne r14 r2 LSR r14",
   1821      "ne_r14_r2_LSR_r14"},
   1822     {{vs, r14, r5, ROR, r1}, false, al, "vs r14 r5 ROR r1", "vs_r14_r5_ROR_r1"},
   1823     {{ne, r2, r6, ROR, r4}, false, al, "ne r2 r6 ROR r4", "ne_r2_r6_ROR_r4"},
   1824     {{lt, r4, r11, ROR, r13},
   1825      false,
   1826      al,
   1827      "lt r4 r11 ROR r13",
   1828      "lt_r4_r11_ROR_r13"},
   1829     {{pl, r9, r3, ASR, r2}, false, al, "pl r9 r3 ASR r2", "pl_r9_r3_ASR_r2"},
   1830     {{cs, r5, r5, LSR, r2}, false, al, "cs r5 r5 LSR r2", "cs_r5_r5_LSR_r2"},
   1831     {{cc, r3, r1, ASR, r5}, false, al, "cc r3 r1 ASR r5", "cc_r3_r1_ASR_r5"},
   1832     {{ne, r0, r10, LSL, r1}, false, al, "ne r0 r10 LSL r1", "ne_r0_r10_LSL_r1"},
   1833     {{pl, r5, r9, LSR, r0}, false, al, "pl r5 r9 LSR r0", "pl_r5_r9_LSR_r0"},
   1834     {{gt, r11, r7, LSL, r11},
   1835      false,
   1836      al,
   1837      "gt r11 r7 LSL r11",
   1838      "gt_r11_r7_LSL_r11"},
   1839     {{al, r5, r13, LSR, r0}, false, al, "al r5 r13 LSR r0", "al_r5_r13_LSR_r0"},
   1840     {{al, r0, r6, ROR, r9}, false, al, "al r0 r6 ROR r9", "al_r0_r6_ROR_r9"},
   1841     {{cc, r1, r1, LSR, r11}, false, al, "cc r1 r1 LSR r11", "cc_r1_r1_LSR_r11"},
   1842     {{cs, r5, r5, ASR, r3}, false, al, "cs r5 r5 ASR r3", "cs_r5_r5_ASR_r3"},
   1843     {{lt, r4, r5, ASR, r3}, false, al, "lt r4 r5 ASR r3", "lt_r4_r5_ASR_r3"},
   1844     {{mi, r2, r5, LSL, r5}, false, al, "mi r2 r5 LSL r5", "mi_r2_r5_LSL_r5"},
   1845     {{al, r5, r3, ASR, r1}, false, al, "al r5 r3 ASR r1", "al_r5_r3_ASR_r1"},
   1846     {{gt, r8, r2, LSR, r3}, false, al, "gt r8 r2 LSR r3", "gt_r8_r2_LSR_r3"},
   1847     {{ne, r5, r0, ASR, r3}, false, al, "ne r5 r0 ASR r3", "ne_r5_r0_ASR_r3"},
   1848     {{ge, r12, r14, LSR, r6},
   1849      false,
   1850      al,
   1851      "ge r12 r14 LSR r6",
   1852      "ge_r12_r14_LSR_r6"},
   1853     {{al, r13, r7, ASR, r10},
   1854      false,
   1855      al,
   1856      "al r13 r7 ASR r10",
   1857      "al_r13_r7_ASR_r10"},
   1858     {{vs, r5, r12, ASR, r3}, false, al, "vs r5 r12 ASR r3", "vs_r5_r12_ASR_r3"},
   1859     {{vc, r10, r10, ROR, r8},
   1860      false,
   1861      al,
   1862      "vc r10 r10 ROR r8",
   1863      "vc_r10_r10_ROR_r8"},
   1864     {{vc, r4, r4, ASR, r4}, false, al, "vc r4 r4 ASR r4", "vc_r4_r4_ASR_r4"},
   1865     {{hi, r1, r1, LSR, r3}, false, al, "hi r1 r1 LSR r3", "hi_r1_r1_LSR_r3"},
   1866     {{ge, r14, r8, LSR, r8}, false, al, "ge r14 r8 LSR r8", "ge_r14_r8_LSR_r8"},
   1867     {{le, r5, r5, LSL, r1}, false, al, "le r5 r5 LSL r1", "le_r5_r5_LSL_r1"},
   1868     {{vc, r2, r8, LSL, r8}, false, al, "vc r2 r8 LSL r8", "vc_r2_r8_LSL_r8"},
   1869     {{hi, r0, r6, LSL, r5}, false, al, "hi r0 r6 LSL r5", "hi_r0_r6_LSL_r5"},
   1870     {{le, r8, r7, LSR, r3}, false, al, "le r8 r7 LSR r3", "le_r8_r7_LSR_r3"},
   1871     {{cc, r10, r4, LSR, r4}, false, al, "cc r10 r4 LSR r4", "cc_r10_r4_LSR_r4"},
   1872     {{cc, r5, r9, LSL, r7}, false, al, "cc r5 r9 LSL r7", "cc_r5_r9_LSL_r7"},
   1873     {{lt, r1, r14, ROR, r13},
   1874      false,
   1875      al,
   1876      "lt r1 r14 ROR r13",
   1877      "lt_r1_r14_ROR_r13"},
   1878     {{mi, r9, r9, ROR, r10}, false, al, "mi r9 r9 ROR r10", "mi_r9_r9_ROR_r10"},
   1879     {{cc, r0, r5, ROR, r7}, false, al, "cc r0 r5 ROR r7", "cc_r0_r5_ROR_r7"},
   1880     {{vs, r6, r5, LSR, r10}, false, al, "vs r6 r5 LSR r10", "vs_r6_r5_LSR_r10"},
   1881     {{pl, r14, r13, ASR, r4},
   1882      false,
   1883      al,
   1884      "pl r14 r13 ASR r4",
   1885      "pl_r14_r13_ASR_r4"},
   1886     {{ne, r7, r9, LSL, r11}, false, al, "ne r7 r9 LSL r11", "ne_r7_r9_LSL_r11"},
   1887     {{ne, r13, r3, ROR, r9}, false, al, "ne r13 r3 ROR r9", "ne_r13_r3_ROR_r9"},
   1888     {{mi, r6, r13, ROR, r5}, false, al, "mi r6 r13 ROR r5", "mi_r6_r13_ROR_r5"},
   1889     {{vc, r10, r0, ASR, r6}, false, al, "vc r10 r0 ASR r6", "vc_r10_r0_ASR_r6"},
   1890     {{ge, r5, r4, LSR, r12}, false, al, "ge r5 r4 LSR r12", "ge_r5_r4_LSR_r12"},
   1891     {{vc, r10, r3, LSR, r8}, false, al, "vc r10 r3 LSR r8", "vc_r10_r3_LSR_r8"},
   1892     {{hi, r8, r1, LSR, r7}, false, al, "hi r8 r1 LSR r7", "hi_r8_r1_LSR_r7"},
   1893     {{al, r3, r6, ASR, r11}, false, al, "al r3 r6 ASR r11", "al_r3_r6_ASR_r11"},
   1894     {{cc, r1, r5, ASR, r0}, false, al, "cc r1 r5 ASR r0", "cc_r1_r5_ASR_r0"},
   1895     {{mi, r11, r3, LSR, r8}, false, al, "mi r11 r3 LSR r8", "mi_r11_r3_LSR_r8"},
   1896     {{gt, r4, r8, ASR, r12}, false, al, "gt r4 r8 ASR r12", "gt_r4_r8_ASR_r12"},
   1897     {{hi, r0, r8, ROR, r10}, false, al, "hi r0 r8 ROR r10", "hi_r0_r8_ROR_r10"},
   1898     {{gt, r14, r8, LSR, r9}, false, al, "gt r14 r8 LSR r9", "gt_r14_r8_LSR_r9"},
   1899     {{pl, r14, r13, LSR, r9},
   1900      false,
   1901      al,
   1902      "pl r14 r13 LSR r9",
   1903      "pl_r14_r13_LSR_r9"},
   1904     {{cs, r11, r0, LSR, r8}, false, al, "cs r11 r0 LSR r8", "cs_r11_r0_LSR_r8"},
   1905     {{cs, r10, r3, LSR, r4}, false, al, "cs r10 r3 LSR r4", "cs_r10_r3_LSR_r4"},
   1906     {{ge, r9, r0, ASR, r3}, false, al, "ge r9 r0 ASR r3", "ge_r9_r0_ASR_r3"},
   1907     {{eq, r12, r14, LSL, r9},
   1908      false,
   1909      al,
   1910      "eq r12 r14 LSL r9",
   1911      "eq_r12_r14_LSL_r9"},
   1912     {{eq, r2, r11, ASR, r8}, false, al, "eq r2 r11 ASR r8", "eq_r2_r11_ASR_r8"},
   1913     {{le, r9, r12, ASR, r4}, false, al, "le r9 r12 ASR r4", "le_r9_r12_ASR_r4"},
   1914     {{lt, r6, r12, LSL, r0}, false, al, "lt r6 r12 LSL r0", "lt_r6_r12_LSL_r0"},
   1915     {{vc, r14, r4, ROR, r6}, false, al, "vc r14 r4 ROR r6", "vc_r14_r4_ROR_r6"},
   1916     {{hi, r6, r1, LSL, r8}, false, al, "hi r6 r1 LSL r8", "hi_r6_r1_LSL_r8"},
   1917     {{le, r10, r12, ROR, r14},
   1918      false,
   1919      al,
   1920      "le r10 r12 ROR r14",
   1921      "le_r10_r12_ROR_r14"},
   1922     {{ls, r9, r1, ROR, r5}, false, al, "ls r9 r1 ROR r5", "ls_r9_r1_ROR_r5"},
   1923     {{mi, r3, r5, LSL, r9}, false, al, "mi r3 r5 LSL r9", "mi_r3_r5_LSL_r9"},
   1924     {{hi, r5, r4, LSR, r10}, false, al, "hi r5 r4 LSR r10", "hi_r5_r4_LSR_r10"},
   1925     {{ge, r2, r5, LSR, r9}, false, al, "ge r2 r5 LSR r9", "ge_r2_r5_LSR_r9"},
   1926     {{ge, r11, r14, LSL, r9},
   1927      false,
   1928      al,
   1929      "ge r11 r14 LSL r9",
   1930      "ge_r11_r14_LSL_r9"},
   1931     {{vc, r7, r2, LSR, r6}, false, al, "vc r7 r2 LSR r6", "vc_r7_r2_LSR_r6"},
   1932     {{ls, r12, r1, ASR, r6}, false, al, "ls r12 r1 ASR r6", "ls_r12_r1_ASR_r6"},
   1933     {{cs, r3, r2, ROR, r4}, false, al, "cs r3 r2 ROR r4", "cs_r3_r2_ROR_r4"},
   1934     {{lt, r13, r14, ROR, r7},
   1935      false,
   1936      al,
   1937      "lt r13 r14 ROR r7",
   1938      "lt_r13_r14_ROR_r7"},
   1939     {{le, r13, r9, LSR, r2}, false, al, "le r13 r9 LSR r2", "le_r13_r9_LSR_r2"},
   1940     {{ls, r0, r4, LSL, r8}, false, al, "ls r0 r4 LSL r8", "ls_r0_r4_LSL_r8"},
   1941     {{pl, r14, r5, ROR, r5}, false, al, "pl r14 r5 ROR r5", "pl_r14_r5_ROR_r5"},
   1942     {{le, r7, r8, ASR, r13}, false, al, "le r7 r8 ASR r13", "le_r7_r8_ASR_r13"},
   1943     {{vc, r4, r5, ASR, r5}, false, al, "vc r4 r5 ASR r5", "vc_r4_r5_ASR_r5"},
   1944     {{gt, r14, r2, ROR, r3}, false, al, "gt r14 r2 ROR r3", "gt_r14_r2_ROR_r3"},
   1945     {{eq, r13, r12, LSL, r5},
   1946      false,
   1947      al,
   1948      "eq r13 r12 LSL r5",
   1949      "eq_r13_r12_LSL_r5"},
   1950     {{pl, r5, r12, LSR, r2}, false, al, "pl r5 r12 LSR r2", "pl_r5_r12_LSR_r2"},
   1951     {{cc, r4, r13, ROR, r14},
   1952      false,
   1953      al,
   1954      "cc r4 r13 ROR r14",
   1955      "cc_r4_r13_ROR_r14"},
   1956     {{ne, r10, r9, LSL, r9}, false, al, "ne r10 r9 LSL r9", "ne_r10_r9_LSL_r9"},
   1957     {{eq, r1, r1, ROR, r14}, false, al, "eq r1 r1 ROR r14", "eq_r1_r1_ROR_r14"},
   1958     {{eq, r13, r0, LSL, r13},
   1959      false,
   1960      al,
   1961      "eq r13 r0 LSL r13",
   1962      "eq_r13_r0_LSL_r13"},
   1963     {{vc, r0, r11, ASR, r3}, false, al, "vc r0 r11 ASR r3", "vc_r0_r11_ASR_r3"},
   1964     {{vc, r1, r4, LSR, r3}, false, al, "vc r1 r4 LSR r3", "vc_r1_r4_LSR_r3"},
   1965     {{cc, r8, r3, ASR, r12}, false, al, "cc r8 r3 ASR r12", "cc_r8_r3_ASR_r12"},
   1966     {{vs, r3, r10, LSL, r4}, false, al, "vs r3 r10 LSL r4", "vs_r3_r10_LSL_r4"},
   1967     {{gt, r10, r9, ASR, r10},
   1968      false,
   1969      al,
   1970      "gt r10 r9 ASR r10",
   1971      "gt_r10_r9_ASR_r10"},
   1972     {{cc, r10, r2, LSL, r10},
   1973      false,
   1974      al,
   1975      "cc r10 r2 LSL r10",
   1976      "cc_r10_r2_LSL_r10"},
   1977     {{cs, r0, r2, LSL, r1}, false, al, "cs r0 r2 LSL r1", "cs_r0_r2_LSL_r1"},
   1978     {{hi, r14, r14, ASR, r13},
   1979      false,
   1980      al,
   1981      "hi r14 r14 ASR r13",
   1982      "hi_r14_r14_ASR_r13"},
   1983     {{mi, r4, r3, LSL, r1}, false, al, "mi r4 r3 LSL r1", "mi_r4_r3_LSL_r1"},
   1984     {{gt, r5, r14, ROR, r2}, false, al, "gt r5 r14 ROR r2", "gt_r5_r14_ROR_r2"},
   1985     {{cc, r10, r13, ASR, r12},
   1986      false,
   1987      al,
   1988      "cc r10 r13 ASR r12",
   1989      "cc_r10_r13_ASR_r12"},
   1990     {{cs, r2, r4, LSL, r12}, false, al, "cs r2 r4 LSL r12", "cs_r2_r4_LSL_r12"},
   1991     {{vs, r4, r2, ROR, r11}, false, al, "vs r4 r2 ROR r11", "vs_r4_r2_ROR_r11"},
   1992     {{cs, r1, r13, LSR, r7}, false, al, "cs r1 r13 LSR r7", "cs_r1_r13_LSR_r7"},
   1993     {{al, r3, r6, ASR, r5}, false, al, "al r3 r6 ASR r5", "al_r3_r6_ASR_r5"},
   1994     {{ge, r12, r4, LSL, r2}, false, al, "ge r12 r4 LSL r2", "ge_r12_r4_LSL_r2"},
   1995     {{cc, r8, r13, ROR, r5}, false, al, "cc r8 r13 ROR r5", "cc_r8_r13_ROR_r5"},
   1996     {{vc, r0, r10, LSL, r7}, false, al, "vc r0 r10 LSL r7", "vc_r0_r10_LSL_r7"},
   1997     {{ge, r13, r0, LSL, r4}, false, al, "ge r13 r0 LSL r4", "ge_r13_r0_LSL_r4"},
   1998     {{cc, r14, r12, LSL, r10},
   1999      false,
   2000      al,
   2001      "cc r14 r12 LSL r10",
   2002      "cc_r14_r12_LSL_r10"},
   2003     {{mi, r9, r9, ASR, r9}, false, al, "mi r9 r9 ASR r9", "mi_r9_r9_ASR_r9"},
   2004     {{al, r1, r13, ROR, r14},
   2005      false,
   2006      al,
   2007      "al r1 r13 ROR r14",
   2008      "al_r1_r13_ROR_r14"},
   2009     {{ls, r5, r10, ROR, r1}, false, al, "ls r5 r10 ROR r1", "ls_r5_r10_ROR_r1"},
   2010     {{mi, r7, r9, LSL, r7}, false, al, "mi r7 r9 LSL r7", "mi_r7_r9_LSL_r7"},
   2011     {{ne, r11, r13, LSR, r5},
   2012      false,
   2013      al,
   2014      "ne r11 r13 LSR r5",
   2015      "ne_r11_r13_LSR_r5"},
   2016     {{mi, r1, r6, ROR, r9}, false, al, "mi r1 r6 ROR r9", "mi_r1_r6_ROR_r9"},
   2017     {{le, r1, r2, LSR, r2}, false, al, "le r1 r2 LSR r2", "le_r1_r2_LSR_r2"},
   2018     {{vc, r12, r9, LSR, r6}, false, al, "vc r12 r9 LSR r6", "vc_r12_r9_LSR_r6"},
   2019     {{cc, r11, r2, ROR, r9}, false, al, "cc r11 r2 ROR r9", "cc_r11_r2_ROR_r9"},
   2020     {{mi, r6, r11, LSL, r10},
   2021      false,
   2022      al,
   2023      "mi r6 r11 LSL r10",
   2024      "mi_r6_r11_LSL_r10"},
   2025     {{cc, r6, r1, ROR, r6}, false, al, "cc r6 r1 ROR r6", "cc_r6_r1_ROR_r6"},
   2026     {{gt, r1, r13, LSL, r10},
   2027      false,
   2028      al,
   2029      "gt r1 r13 LSL r10",
   2030      "gt_r1_r13_LSL_r10"},
   2031     {{eq, r10, r12, ROR, r11},
   2032      false,
   2033      al,
   2034      "eq r10 r12 ROR r11",
   2035      "eq_r10_r12_ROR_r11"},
   2036     {{cs, r5, r7, LSL, r5}, false, al, "cs r5 r7 LSL r5", "cs_r5_r7_LSL_r5"},
   2037     {{cs, r2, r14, ROR, r6}, false, al, "cs r2 r14 ROR r6", "cs_r2_r14_ROR_r6"},
   2038     {{cc, r4, r6, ASR, r7}, false, al, "cc r4 r6 ASR r7", "cc_r4_r6_ASR_r7"},
   2039     {{mi, r5, r3, ASR, r8}, false, al, "mi r5 r3 ASR r8", "mi_r5_r3_ASR_r8"},
   2040     {{vs, r5, r0, LSR, r4}, false, al, "vs r5 r0 LSR r4", "vs_r5_r0_LSR_r4"},
   2041     {{ge, r4, r7, ASR, r5}, false, al, "ge r4 r7 ASR r5", "ge_r4_r7_ASR_r5"},
   2042     {{lt, r4, r9, ASR, r7}, false, al, "lt r4 r9 ASR r7", "lt_r4_r9_ASR_r7"},
   2043     {{cs, r3, r13, ASR, r6}, false, al, "cs r3 r13 ASR r6", "cs_r3_r13_ASR_r6"},
   2044     {{vs, r3, r7, LSR, r2}, false, al, "vs r3 r7 LSR r2", "vs_r3_r7_LSR_r2"},
   2045     {{pl, r0, r3, ASR, r7}, false, al, "pl r0 r3 ASR r7", "pl_r0_r3_ASR_r7"},
   2046     {{lt, r7, r10, LSL, r0}, false, al, "lt r7 r10 LSL r0", "lt_r7_r10_LSL_r0"},
   2047     {{pl, r5, r1, LSR, r4}, false, al, "pl r5 r1 LSR r4", "pl_r5_r1_LSR_r4"},
   2048     {{gt, r10, r7, LSL, r10},
   2049      false,
   2050      al,
   2051      "gt r10 r7 LSL r10",
   2052      "gt_r10_r7_LSL_r10"},
   2053     {{ls, r14, r6, ROR, r0}, false, al, "ls r14 r6 ROR r0", "ls_r14_r6_ROR_r0"},
   2054     {{le, r1, r5, ROR, r11}, false, al, "le r1 r5 ROR r11", "le_r1_r5_ROR_r11"},
   2055     {{ls, r6, r14, LSL, r8}, false, al, "ls r6 r14 LSL r8", "ls_r6_r14_LSL_r8"},
   2056     {{mi, r12, r11, LSL, r5},
   2057      false,
   2058      al,
   2059      "mi r12 r11 LSL r5",
   2060      "mi_r12_r11_LSL_r5"},
   2061     {{le, r13, r5, ASR, r3}, false, al, "le r13 r5 ASR r3", "le_r13_r5_ASR_r3"},
   2062     {{ls, r14, r10, ROR, r14},
   2063      false,
   2064      al,
   2065      "ls r14 r10 ROR r14",
   2066      "ls_r14_r10_ROR_r14"},
   2067     {{eq, r5, r12, ASR, r5}, false, al, "eq r5 r12 ASR r5", "eq_r5_r12_ASR_r5"},
   2068     {{gt, r14, r4, ASR, r14},
   2069      false,
   2070      al,
   2071      "gt r14 r4 ASR r14",
   2072      "gt_r14_r4_ASR_r14"},
   2073     {{ls, r0, r5, ASR, r13}, false, al, "ls r0 r5 ASR r13", "ls_r0_r5_ASR_r13"},
   2074     {{pl, r6, r4, LSR, r1}, false, al, "pl r6 r4 LSR r1", "pl_r6_r4_LSR_r1"},
   2075     {{pl, r7, r11, ROR, r3}, false, al, "pl r7 r11 ROR r3", "pl_r7_r11_ROR_r3"},
   2076     {{lt, r11, r9, ASR, r13},
   2077      false,
   2078      al,
   2079      "lt r11 r9 ASR r13",
   2080      "lt_r11_r9_ASR_r13"},
   2081     {{cc, r3, r9, ASR, r4}, false, al, "cc r3 r9 ASR r4", "cc_r3_r9_ASR_r4"},
   2082     {{eq, r2, r1, ASR, r7}, false, al, "eq r2 r1 ASR r7", "eq_r2_r1_ASR_r7"},
   2083     {{le, r8, r10, ASR, r9}, false, al, "le r8 r10 ASR r9", "le_r8_r10_ASR_r9"},
   2084     {{hi, r14, r2, LSL, r6}, false, al, "hi r14 r2 LSL r6", "hi_r14_r2_LSL_r6"},
   2085     {{mi, r12, r4, LSR, r8}, false, al, "mi r12 r4 LSR r8", "mi_r12_r4_LSR_r8"},
   2086     {{pl, r4, r1, ROR, r2}, false, al, "pl r4 r1 ROR r2", "pl_r4_r1_ROR_r2"},
   2087     {{hi, r5, r9, ROR, r7}, false, al, "hi r5 r9 ROR r7", "hi_r5_r9_ROR_r7"},
   2088     {{le, r4, r2, LSR, r1}, false, al, "le r4 r2 LSR r1", "le_r4_r2_LSR_r1"},
   2089     {{al, r8, r1, ROR, r9}, false, al, "al r8 r1 ROR r9", "al_r8_r1_ROR_r9"},
   2090     {{mi, r3, r6, ASR, r6}, false, al, "mi r3 r6 ASR r6", "mi_r3_r6_ASR_r6"},
   2091     {{ls, r1, r12, LSR, r9}, false, al, "ls r1 r12 LSR r9", "ls_r1_r12_LSR_r9"},
   2092     {{le, r13, r5, LSR, r13},
   2093      false,
   2094      al,
   2095      "le r13 r5 LSR r13",
   2096      "le_r13_r5_LSR_r13"},
   2097     {{ne, r3, r12, ROR, r7}, false, al, "ne r3 r12 ROR r7", "ne_r3_r12_ROR_r7"},
   2098     {{mi, r0, r9, LSR, r5}, false, al, "mi r0 r9 LSR r5", "mi_r0_r9_LSR_r5"},
   2099     {{al, r4, r4, ROR, r3}, false, al, "al r4 r4 ROR r3", "al_r4_r4_ROR_r3"},
   2100     {{cc, r1, r1, ASR, r3}, false, al, "cc r1 r1 ASR r3", "cc_r1_r1_ASR_r3"},
   2101     {{lt, r12, r0, LSL, r10},
   2102      false,
   2103      al,
   2104      "lt r12 r0 LSL r10",
   2105      "lt_r12_r0_LSL_r10"},
   2106     {{ge, r1, r10, LSL, r4}, false, al, "ge r1 r10 LSL r4", "ge_r1_r10_LSL_r4"},
   2107     {{hi, r2, r7, LSL, r4}, false, al, "hi r2 r7 LSL r4", "hi_r2_r7_LSL_r4"},
   2108     {{le, r1, r6, ASR, r13}, false, al, "le r1 r6 ASR r13", "le_r1_r6_ASR_r13"},
   2109     {{eq, r0, r2, ROR, r8}, false, al, "eq r0 r2 ROR r8", "eq_r0_r2_ROR_r8"},
   2110     {{vc, r6, r0, LSL, r8}, false, al, "vc r6 r0 LSL r8", "vc_r6_r0_LSL_r8"},
   2111     {{hi, r11, r7, LSL, r5}, false, al, "hi r11 r7 LSL r5", "hi_r11_r7_LSL_r5"},
   2112     {{ne, r0, r1, ASR, r2}, false, al, "ne r0 r1 ASR r2", "ne_r0_r1_ASR_r2"},
   2113     {{gt, r7, r10, ROR, r8}, false, al, "gt r7 r10 ROR r8", "gt_r7_r10_ROR_r8"},
   2114     {{vc, r5, r2, ASR, r8}, false, al, "vc r5 r2 ASR r8", "vc_r5_r2_ASR_r8"},
   2115     {{ls, r4, r9, LSL, r14}, false, al, "ls r4 r9 LSL r14", "ls_r4_r9_LSL_r14"},
   2116     {{vs, r4, r4, LSR, r5}, false, al, "vs r4 r4 LSR r5", "vs_r4_r4_LSR_r5"},
   2117     {{hi, r4, r14, LSL, r13},
   2118      false,
   2119      al,
   2120      "hi r4 r14 LSL r13",
   2121      "hi_r4_r14_LSL_r13"},
   2122     {{cc, r8, r11, ROR, r13},
   2123      false,
   2124      al,
   2125      "cc r8 r11 ROR r13",
   2126      "cc_r8_r11_ROR_r13"},
   2127     {{ls, r2, r2, LSR, r14}, false, al, "ls r2 r2 LSR r14", "ls_r2_r2_LSR_r14"},
   2128     {{lt, r1, r4, ROR, r12}, false, al, "lt r1 r4 ROR r12", "lt_r1_r4_ROR_r12"},
   2129     {{mi, r2, r6, ROR, r14}, false, al, "mi r2 r6 ROR r14", "mi_r2_r6_ROR_r14"},
   2130     {{hi, r7, r2, ASR, r9}, false, al, "hi r7 r2 ASR r9", "hi_r7_r2_ASR_r9"},
   2131     {{le, r10, r14, ROR, r13},
   2132      false,
   2133      al,
   2134      "le r10 r14 ROR r13",
   2135      "le_r10_r14_ROR_r13"},
   2136     {{vc, r7, r14, ASR, r11},
   2137      false,
   2138      al,
   2139      "vc r7 r14 ASR r11",
   2140      "vc_r7_r14_ASR_r11"},
   2141     {{mi, r4, r5, ASR, r6}, false, al, "mi r4 r5 ASR r6", "mi_r4_r5_ASR_r6"},
   2142     {{al, r11, r14, ROR, r9},
   2143      false,
   2144      al,
   2145      "al r11 r14 ROR r9",
   2146      "al_r11_r14_ROR_r9"},
   2147     {{vc, r0, r10, ASR, r13},
   2148      false,
   2149      al,
   2150      "vc r0 r10 ASR r13",
   2151      "vc_r0_r10_ASR_r13"},
   2152     {{al, r10, r2, ROR, r13},
   2153      false,
   2154      al,
   2155      "al r10 r2 ROR r13",
   2156      "al_r10_r2_ROR_r13"},
   2157     {{hi, r9, r2, LSR, r9}, false, al, "hi r9 r2 LSR r9", "hi_r9_r2_LSR_r9"},
   2158     {{gt, r2, r0, ASR, r10}, false, al, "gt r2 r0 ASR r10", "gt_r2_r0_ASR_r10"},
   2159     {{hi, r4, r12, ASR, r13},
   2160      false,
   2161      al,
   2162      "hi r4 r12 ASR r13",
   2163      "hi_r4_r12_ASR_r13"},
   2164     {{vc, r10, r14, ASR, r0},
   2165      false,
   2166      al,
   2167      "vc r10 r14 ASR r0",
   2168      "vc_r10_r14_ASR_r0"},
   2169     {{ne, r13, r9, ASR, r4}, false, al, "ne r13 r9 ASR r4", "ne_r13_r9_ASR_r4"},
   2170     {{eq, r5, r8, ROR, r5}, false, al, "eq r5 r8 ROR r5", "eq_r5_r8_ROR_r5"},
   2171     {{lt, r0, r13, ROR, r3}, false, al, "lt r0 r13 ROR r3", "lt_r0_r13_ROR_r3"},
   2172     {{hi, r0, r1, LSL, r1}, false, al, "hi r0 r1 LSL r1", "hi_r0_r1_LSL_r1"},
   2173     {{pl, r13, r6, ASR, r10},
   2174      false,
   2175      al,
   2176      "pl r13 r6 ASR r10",
   2177      "pl_r13_r6_ASR_r10"},
   2178     {{hi, r0, r4, LSR, r2}, false, al, "hi r0 r4 LSR r2", "hi_r0_r4_LSR_r2"},
   2179     {{eq, r5, r3, ASR, r8}, false, al, "eq r5 r3 ASR r8", "eq_r5_r3_ASR_r8"},
   2180     {{al, r1, r5, LSR, r4}, false, al, "al r1 r5 LSR r4", "al_r1_r5_LSR_r4"},
   2181     {{eq, r8, r5, LSR, r14}, false, al, "eq r8 r5 LSR r14", "eq_r8_r5_LSR_r14"},
   2182     {{ne, r12, r13, ROR, r0},
   2183      false,
   2184      al,
   2185      "ne r12 r13 ROR r0",
   2186      "ne_r12_r13_ROR_r0"},
   2187     {{pl, r0, r2, ROR, r11}, false, al, "pl r0 r2 ROR r11", "pl_r0_r2_ROR_r11"},
   2188     {{cs, r10, r6, ROR, r9}, false, al, "cs r10 r6 ROR r9", "cs_r10_r6_ROR_r9"},
   2189     {{eq, r10, r4, ASR, r14},
   2190      false,
   2191      al,
   2192      "eq r10 r4 ASR r14",
   2193      "eq_r10_r4_ASR_r14"},
   2194     {{ls, r9, r4, LSR, r14}, false, al, "ls r9 r4 LSR r14", "ls_r9_r4_LSR_r14"},
   2195     {{cs, r14, r2, ROR, r5}, false, al, "cs r14 r2 ROR r5", "cs_r14_r2_ROR_r5"},
   2196     {{vc, r9, r9, LSL, r7}, false, al, "vc r9 r9 LSL r7", "vc_r9_r9_LSL_r7"},
   2197     {{mi, r7, r0, LSL, r4}, false, al, "mi r7 r0 LSL r4", "mi_r7_r0_LSL_r4"},
   2198     {{cc, r2, r10, ASR, r7}, false, al, "cc r2 r10 ASR r7", "cc_r2_r10_ASR_r7"},
   2199     {{cs, r5, r10, LSR, r9},
   2200      false,
   2201      al,
   2202      "cs r5 r10 LSR r9",
   2203      "cs_r5_r10_LSR_"
   2204      "r9"}};
   2205 
   2206 // These headers each contain an array of `TestResult` with the reference output
   2207 // values. The reference arrays are names `kReference{mnemonic}`.
   2208 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-cmn.h"
   2209 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-cmp.h"
   2210 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-mov.h"
   2211 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-movs.h"
   2212 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-mvn.h"
   2213 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-mvns.h"
   2214 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-teq.h"
   2215 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-a32-tst.h"
   2216 
   2217 
   2218 // The maximum number of errors to report in detail for each test.
   2219 const unsigned kErrorReportLimit = 8;
   2220 
   2221 typedef void (MacroAssembler::*Fn)(Condition cond,
   2222                                    Register rd,
   2223                                    const Operand& op);
   2224 
   2225 void TestHelper(Fn instruction,
   2226                 const char* mnemonic,
   2227                 const TestResult reference[]) {
   2228   unsigned total_error_count = 0;
   2229   MacroAssembler masm(BUF_SIZE);
   2230 
   2231   masm.UseA32();
   2232 
   2233   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   2234     // Values to pass to the macro-assembler.
   2235     Condition cond = kTests[i].operands.cond;
   2236     Register rd = kTests[i].operands.rd;
   2237     Register rn = kTests[i].operands.rn;
   2238     ShiftType shift = kTests[i].operands.shift;
   2239     Register rs = kTests[i].operands.rs;
   2240     Operand op(rn, shift, rs);
   2241 
   2242     int32_t start = masm.GetCursorOffset();
   2243     {
   2244       // We never generate more that 4 bytes, as IT instructions are only
   2245       // allowed for narrow encodings.
   2246       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
   2247       if (kTests[i].in_it_block) {
   2248         masm.it(kTests[i].it_condition);
   2249       }
   2250       (masm.*instruction)(cond, rd, op);
   2251     }
   2252     int32_t end = masm.GetCursorOffset();
   2253 
   2254     const byte* result_ptr =
   2255         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
   2256     VIXL_ASSERT(start < end);
   2257     uint32_t result_size = end - start;
   2258 
   2259     if (Test::generate_test_trace()) {
   2260       // Print the result bytes.
   2261       printf("const byte kInstruction_%s_%s[] = {\n",
   2262              mnemonic,
   2263              kTests[i].identifier);
   2264       for (uint32_t j = 0; j < result_size; j++) {
   2265         if (j == 0) {
   2266           printf("  0x%02" PRIx8, result_ptr[j]);
   2267         } else {
   2268           printf(", 0x%02" PRIx8, result_ptr[j]);
   2269         }
   2270       }
   2271       // This comment is meant to be used by external tools to validate
   2272       // the encoding. We can parse the comment to figure out what
   2273       // instruction this corresponds to.
   2274       if (kTests[i].in_it_block) {
   2275         printf(" // It %s; %s %s\n};\n",
   2276                kTests[i].it_condition.GetName(),
   2277                mnemonic,
   2278                kTests[i].operands_description);
   2279       } else {
   2280         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
   2281       }
   2282     } else {
   2283       // Check we've emitted the exact same encoding as present in the
   2284       // trace file. Only print up to `kErrorReportLimit` errors.
   2285       if (((result_size != reference[i].size) ||
   2286            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
   2287             0)) &&
   2288           (++total_error_count <= kErrorReportLimit)) {
   2289         printf("Error when testing \"%s\" with operands \"%s\":\n",
   2290                mnemonic,
   2291                kTests[i].operands_description);
   2292         printf("  Expected: ");
   2293         for (uint32_t j = 0; j < reference[i].size; j++) {
   2294           if (j == 0) {
   2295             printf("0x%02" PRIx8, reference[i].encoding[j]);
   2296           } else {
   2297             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
   2298           }
   2299         }
   2300         printf("\n");
   2301         printf("  Found:    ");
   2302         for (uint32_t j = 0; j < result_size; j++) {
   2303           if (j == 0) {
   2304             printf("0x%02" PRIx8, result_ptr[j]);
   2305           } else {
   2306             printf(", 0x%02" PRIx8, result_ptr[j]);
   2307           }
   2308         }
   2309         printf("\n");
   2310       }
   2311     }
   2312   }
   2313 
   2314   masm.FinalizeCode();
   2315 
   2316   if (Test::generate_test_trace()) {
   2317     // Finalize the trace file by writing the final `TestResult` array
   2318     // which links all generated instruction encodings.
   2319     printf("const TestResult kReference%s[] = {\n", mnemonic);
   2320     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   2321       printf("  {\n");
   2322       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
   2323              mnemonic,
   2324              kTests[i].identifier);
   2325       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
   2326       printf("  },\n");
   2327     }
   2328     printf("};\n");
   2329   } else {
   2330     if (total_error_count > kErrorReportLimit) {
   2331       printf("%u other errors follow.\n",
   2332              total_error_count - kErrorReportLimit);
   2333     }
   2334     // Crash if the test failed.
   2335     VIXL_CHECK(total_error_count == 0);
   2336   }
   2337 }
   2338 
   2339 // Instantiate tests for each instruction in the list.
   2340 #define TEST(mnemonic)                                                      \
   2341   void Test_##mnemonic() {                                                  \
   2342     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   2343   }                                                                         \
   2344   Test test_##mnemonic(                                                     \
   2345       "AARCH32_ASSEMBLER_COND_RD_OPERAND_RN_SHIFT_RS_A32_" #mnemonic,       \
   2346       &Test_##mnemonic);
   2347 FOREACH_INSTRUCTION(TEST)
   2348 #undef TEST
   2349 
   2350 }  // namespace
   2351 #endif
   2352 
   2353 }  // namespace aarch32
   2354 }  // namespace vixl
   2355