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) M(mov)
     52 
     53 
     54 // The following definitions are defined again in each generated test, therefore
     55 // we need to place them in an anomymous namespace. It expresses that they are
     56 // local to this file only, and the compiler is not allowed to share these types
     57 // across test files during template instantiation. Specifically, `Operands` has
     58 // various layouts across generated tests so it absolutely cannot be shared.
     59 
     60 #ifdef VIXL_INCLUDE_TARGET_T32
     61 namespace {
     62 
     63 // Values to be passed to the assembler to produce the instruction under test.
     64 struct Operands {
     65   Condition cond;
     66   Register rd;
     67   Register rn;
     68   ShiftType shift;
     69   Register rs;
     70 };
     71 
     72 // This structure contains all data needed to test one specific
     73 // instruction.
     74 struct TestData {
     75   // The `operands` field represents what to pass to the assembler to
     76   // produce the instruction.
     77   Operands operands;
     78   // True if we need to generate an IT instruction for this test to be valid.
     79   bool in_it_block;
     80   // The condition to give the IT instruction, this will be set to "al" by
     81   // default.
     82   Condition it_condition;
     83   // Description of the operands, used for error reporting.
     84   const char* operands_description;
     85   // Unique identifier, used for generating traces.
     86   const char* identifier;
     87 };
     88 
     89 struct TestResult {
     90   size_t size;
     91   const byte* encoding;
     92 };
     93 
     94 // Each element of this array produce one instruction encoding.
     95 const TestData kTests[] =
     96     {{{ge, r1, r1, LSL, r6}, true, ge, "ge r1 r1 LSL r6", "ge_r1_r1_LSL_r6"},
     97      {{cs, r7, r7, LSL, r2}, true, cs, "cs r7 r7 LSL r2", "cs_r7_r7_LSL_r2"},
     98      {{gt, r1, r1, LSL, r0}, true, gt, "gt r1 r1 LSL r0", "gt_r1_r1_LSL_r0"},
     99      {{pl, r3, r3, ROR, r3}, true, pl, "pl r3 r3 ROR r3", "pl_r3_r3_ROR_r3"},
    100      {{vc, r4, r4, ROR, r1}, true, vc, "vc r4 r4 ROR r1", "vc_r4_r4_ROR_r1"},
    101      {{vs, r2, r2, LSL, r0}, true, vs, "vs r2 r2 LSL r0", "vs_r2_r2_LSL_r0"},
    102      {{vc, r4, r4, LSR, r4}, true, vc, "vc r4 r4 LSR r4", "vc_r4_r4_LSR_r4"},
    103      {{le, r6, r6, ASR, r6}, true, le, "le r6 r6 ASR r6", "le_r6_r6_ASR_r6"},
    104      {{hi, r6, r6, ROR, r5}, true, hi, "hi r6 r6 ROR r5", "hi_r6_r6_ROR_r5"},
    105      {{le, r3, r3, ASR, r6}, true, le, "le r3 r3 ASR r6", "le_r3_r3_ASR_r6"},
    106      {{le, r7, r7, LSL, r0}, true, le, "le r7 r7 LSL r0", "le_r7_r7_LSL_r0"},
    107      {{pl, r3, r3, ASR, r2}, true, pl, "pl r3 r3 ASR r2", "pl_r3_r3_ASR_r2"},
    108      {{mi, r4, r4, LSL, r5}, true, mi, "mi r4 r4 LSL r5", "mi_r4_r4_LSL_r5"},
    109      {{le, r5, r5, LSR, r6}, true, le, "le r5 r5 LSR r6", "le_r5_r5_LSR_r6"},
    110      {{cs, r0, r0, ASR, r6}, true, cs, "cs r0 r0 ASR r6", "cs_r0_r0_ASR_r6"},
    111      {{vs, r2, r2, LSL, r1}, true, vs, "vs r2 r2 LSL r1", "vs_r2_r2_LSL_r1"},
    112      {{hi, r5, r5, LSL, r6}, true, hi, "hi r5 r5 LSL r6", "hi_r5_r5_LSL_r6"},
    113      {{ls, r6, r6, LSL, r3}, true, ls, "ls r6 r6 LSL r3", "ls_r6_r6_LSL_r3"},
    114      {{pl, r2, r2, ASR, r7}, true, pl, "pl r2 r2 ASR r7", "pl_r2_r2_ASR_r7"},
    115      {{ls, r0, r0, LSR, r2}, true, ls, "ls r0 r0 LSR r2", "ls_r0_r0_LSR_r2"},
    116      {{eq, r5, r5, ROR, r2}, true, eq, "eq r5 r5 ROR r2", "eq_r5_r5_ROR_r2"},
    117      {{eq, r5, r5, LSR, r1}, true, eq, "eq r5 r5 LSR r1", "eq_r5_r5_LSR_r1"},
    118      {{ge, r4, r4, ASR, r1}, true, ge, "ge r4 r4 ASR r1", "ge_r4_r4_ASR_r1"},
    119      {{ls, r6, r6, LSR, r0}, true, ls, "ls r6 r6 LSR r0", "ls_r6_r6_LSR_r0"},
    120      {{ls, r0, r0, ASR, r2}, true, ls, "ls r0 r0 ASR r2", "ls_r0_r0_ASR_r2"},
    121      {{cc, r1, r1, LSL, r6}, true, cc, "cc r1 r1 LSL r6", "cc_r1_r1_LSL_r6"},
    122      {{ge, r6, r6, ROR, r3}, true, ge, "ge r6 r6 ROR r3", "ge_r6_r6_ROR_r3"},
    123      {{cs, r7, r7, ASR, r3}, true, cs, "cs r7 r7 ASR r3", "cs_r7_r7_ASR_r3"},
    124      {{ne, r3, r3, ROR, r4}, true, ne, "ne r3 r3 ROR r4", "ne_r3_r3_ROR_r4"},
    125      {{hi, r1, r1, ASR, r6}, true, hi, "hi r1 r1 ASR r6", "hi_r1_r1_ASR_r6"},
    126      {{ls, r7, r7, LSL, r4}, true, ls, "ls r7 r7 LSL r4", "ls_r7_r7_LSL_r4"},
    127      {{ge, r4, r4, LSL, r0}, true, ge, "ge r4 r4 LSL r0", "ge_r4_r4_LSL_r0"},
    128      {{vs, r4, r4, LSR, r4}, true, vs, "vs r4 r4 LSR r4", "vs_r4_r4_LSR_r4"},
    129      {{cc, r0, r0, LSR, r0}, true, cc, "cc r0 r0 LSR r0", "cc_r0_r0_LSR_r0"},
    130      {{mi, r5, r5, LSL, r5}, true, mi, "mi r5 r5 LSL r5", "mi_r5_r5_LSL_r5"},
    131      {{ls, r1, r1, LSR, r0}, true, ls, "ls r1 r1 LSR r0", "ls_r1_r1_LSR_r0"},
    132      {{ge, r1, r1, ASR, r7}, true, ge, "ge r1 r1 ASR r7", "ge_r1_r1_ASR_r7"},
    133      {{eq, r4, r4, ROR, r4}, true, eq, "eq r4 r4 ROR r4", "eq_r4_r4_ROR_r4"},
    134      {{vc, r5, r5, ROR, r3}, true, vc, "vc r5 r5 ROR r3", "vc_r5_r5_ROR_r3"},
    135      {{ls, r3, r3, LSL, r2}, true, ls, "ls r3 r3 LSL r2", "ls_r3_r3_LSL_r2"},
    136      {{ls, r6, r6, ASR, r3}, true, ls, "ls r6 r6 ASR r3", "ls_r6_r6_ASR_r3"},
    137      {{lt, r4, r4, ROR, r3}, true, lt, "lt r4 r4 ROR r3", "lt_r4_r4_ROR_r3"},
    138      {{vc, r6, r6, ASR, r7}, true, vc, "vc r6 r6 ASR r7", "vc_r6_r6_ASR_r7"},
    139      {{ls, r1, r1, LSR, r3}, true, ls, "ls r1 r1 LSR r3", "ls_r1_r1_LSR_r3"},
    140      {{ne, r6, r6, ROR, r6}, true, ne, "ne r6 r6 ROR r6", "ne_r6_r6_ROR_r6"},
    141      {{cc, r3, r3, LSL, r7}, true, cc, "cc r3 r3 LSL r7", "cc_r3_r3_LSL_r7"},
    142      {{hi, r3, r3, LSR, r0}, true, hi, "hi r3 r3 LSR r0", "hi_r3_r3_LSR_r0"},
    143      {{gt, r5, r5, ROR, r0}, true, gt, "gt r5 r5 ROR r0", "gt_r5_r5_ROR_r0"},
    144      {{cc, r3, r3, LSL, r0}, true, cc, "cc r3 r3 LSL r0", "cc_r3_r3_LSL_r0"},
    145      {{le, r1, r1, LSL, r0}, true, le, "le r1 r1 LSL r0", "le_r1_r1_LSL_r0"},
    146      {{vs, r5, r5, ASR, r2}, true, vs, "vs r5 r5 ASR r2", "vs_r5_r5_ASR_r2"},
    147      {{mi, r2, r2, ASR, r6}, true, mi, "mi r2 r2 ASR r6", "mi_r2_r2_ASR_r6"},
    148      {{ls, r7, r7, LSR, r5}, true, ls, "ls r7 r7 LSR r5", "ls_r7_r7_LSR_r5"},
    149      {{lt, r0, r0, LSR, r0}, true, lt, "lt r0 r0 LSR r0", "lt_r0_r0_LSR_r0"},
    150      {{mi, r6, r6, ROR, r1}, true, mi, "mi r6 r6 ROR r1", "mi_r6_r6_ROR_r1"},
    151      {{cs, r1, r1, ASR, r3}, true, cs, "cs r1 r1 ASR r3", "cs_r1_r1_ASR_r3"},
    152      {{le, r0, r0, ROR, r3}, true, le, "le r0 r0 ROR r3", "le_r0_r0_ROR_r3"},
    153      {{mi, r7, r7, LSR, r5}, true, mi, "mi r7 r7 LSR r5", "mi_r7_r7_LSR_r5"},
    154      {{mi, r0, r0, LSL, r7}, true, mi, "mi r0 r0 LSL r7", "mi_r0_r0_LSL_r7"},
    155      {{vc, r3, r3, LSR, r7}, true, vc, "vc r3 r3 LSR r7", "vc_r3_r3_LSR_r7"},
    156      {{ge, r3, r3, ROR, r7}, true, ge, "ge r3 r3 ROR r7", "ge_r3_r3_ROR_r7"},
    157      {{vc, r1, r1, LSL, r7}, true, vc, "vc r1 r1 LSL r7", "vc_r1_r1_LSL_r7"},
    158      {{hi, r3, r3, LSL, r3}, true, hi, "hi r3 r3 LSL r3", "hi_r3_r3_LSL_r3"},
    159      {{eq, r1, r1, ASR, r5}, true, eq, "eq r1 r1 ASR r5", "eq_r1_r1_ASR_r5"},
    160      {{lt, r5, r5, LSR, r4}, true, lt, "lt r5 r5 LSR r4", "lt_r5_r5_LSR_r4"},
    161      {{gt, r1, r1, ASR, r4}, true, gt, "gt r1 r1 ASR r4", "gt_r1_r1_ASR_r4"},
    162      {{ge, r4, r4, ROR, r1}, true, ge, "ge r4 r4 ROR r1", "ge_r4_r4_ROR_r1"},
    163      {{vs, r5, r5, LSL, r0}, true, vs, "vs r5 r5 LSL r0", "vs_r5_r5_LSL_r0"},
    164      {{eq, r0, r0, ASR, r4}, true, eq, "eq r0 r0 ASR r4", "eq_r0_r0_ASR_r4"},
    165      {{ge, r3, r3, LSL, r4}, true, ge, "ge r3 r3 LSL r4", "ge_r3_r3_LSL_r4"},
    166      {{pl, r3, r3, ASR, r6}, true, pl, "pl r3 r3 ASR r6", "pl_r3_r3_ASR_r6"},
    167      {{cc, r2, r2, LSL, r3}, true, cc, "cc r2 r2 LSL r3", "cc_r2_r2_LSL_r3"},
    168      {{pl, r3, r3, ASR, r1}, true, pl, "pl r3 r3 ASR r1", "pl_r3_r3_ASR_r1"},
    169      {{vc, r2, r2, LSR, r7}, true, vc, "vc r2 r2 LSR r7", "vc_r2_r2_LSR_r7"},
    170      {{ge, r1, r1, ASR, r2}, true, ge, "ge r1 r1 ASR r2", "ge_r1_r1_ASR_r2"},
    171      {{ge, r7, r7, LSR, r4}, true, ge, "ge r7 r7 LSR r4", "ge_r7_r7_LSR_r4"},
    172      {{ls, r5, r5, LSR, r3}, true, ls, "ls r5 r5 LSR r3", "ls_r5_r5_LSR_r3"},
    173      {{eq, r4, r4, LSR, r5}, true, eq, "eq r4 r4 LSR r5", "eq_r4_r4_LSR_r5"},
    174      {{ne, r7, r7, ROR, r6}, true, ne, "ne r7 r7 ROR r6", "ne_r7_r7_ROR_r6"},
    175      {{mi, r5, r5, LSL, r7}, true, mi, "mi r5 r5 LSL r7", "mi_r5_r5_LSL_r7"},
    176      {{cs, r7, r7, ROR, r4}, true, cs, "cs r7 r7 ROR r4", "cs_r7_r7_ROR_r4"},
    177      {{mi, r1, r1, ASR, r6}, true, mi, "mi r1 r1 ASR r6", "mi_r1_r1_ASR_r6"},
    178      {{pl, r6, r6, ASR, r0}, true, pl, "pl r6 r6 ASR r0", "pl_r6_r6_ASR_r0"},
    179      {{cs, r3, r3, ASR, r2}, true, cs, "cs r3 r3 ASR r2", "cs_r3_r3_ASR_r2"},
    180      {{eq, r2, r2, LSL, r1}, true, eq, "eq r2 r2 LSL r1", "eq_r2_r2_LSL_r1"},
    181      {{lt, r6, r6, LSR, r5}, true, lt, "lt r6 r6 LSR r5", "lt_r6_r6_LSR_r5"},
    182      {{cc, r0, r0, ASR, r5}, true, cc, "cc r0 r0 ASR r5", "cc_r0_r0_ASR_r5"},
    183      {{cs, r1, r1, LSL, r7}, true, cs, "cs r1 r1 LSL r7", "cs_r1_r1_LSL_r7"},
    184      {{ge, r0, r0, LSR, r0}, true, ge, "ge r0 r0 LSR r0", "ge_r0_r0_LSR_r0"},
    185      {{cc, r4, r4, ROR, r7}, true, cc, "cc r4 r4 ROR r7", "cc_r4_r4_ROR_r7"},
    186      {{cs, r5, r5, ASR, r4}, true, cs, "cs r5 r5 ASR r4", "cs_r5_r5_ASR_r4"},
    187      {{vc, r6, r6, LSL, r0}, true, vc, "vc r6 r6 LSL r0", "vc_r6_r6_LSL_r0"},
    188      {{gt, r5, r5, LSL, r4}, true, gt, "gt r5 r5 LSL r4", "gt_r5_r5_LSL_r4"},
    189      {{hi, r2, r2, ROR, r3}, true, hi, "hi r2 r2 ROR r3", "hi_r2_r2_ROR_r3"},
    190      {{cc, r4, r4, ROR, r3}, true, cc, "cc r4 r4 ROR r3", "cc_r4_r4_ROR_r3"},
    191      {{hi, r0, r0, ROR, r4}, true, hi, "hi r0 r0 ROR r4", "hi_r0_r0_ROR_r4"},
    192      {{vs, r1, r1, ROR, r3}, true, vs, "vs r1 r1 ROR r3", "vs_r1_r1_ROR_r3"},
    193      {{gt, r4, r4, ROR, r5}, true, gt, "gt r4 r4 ROR r5", "gt_r4_r4_ROR_r5"},
    194      {{lt, r1, r1, LSR, r2}, true, lt, "lt r1 r1 LSR r2", "lt_r1_r1_LSR_r2"},
    195      {{lt, r4, r4, LSL, r4}, true, lt, "lt r4 r4 LSL r4", "lt_r4_r4_LSL_r4"},
    196      {{mi, r3, r3, LSL, r2}, true, mi, "mi r3 r3 LSL r2", "mi_r3_r3_LSL_r2"},
    197      {{cs, r6, r6, ROR, r7}, true, cs, "cs r6 r6 ROR r7", "cs_r6_r6_ROR_r7"},
    198      {{vc, r5, r5, LSR, r3}, true, vc, "vc r5 r5 LSR r3", "vc_r5_r5_LSR_r3"},
    199      {{vc, r4, r4, LSL, r4}, true, vc, "vc r4 r4 LSL r4", "vc_r4_r4_LSL_r4"},
    200      {{pl, r0, r0, LSL, r2}, true, pl, "pl r0 r0 LSL r2", "pl_r0_r0_LSL_r2"},
    201      {{ne, r3, r3, LSL, r5}, true, ne, "ne r3 r3 LSL r5", "ne_r3_r3_LSL_r5"},
    202      {{mi, r7, r7, ROR, r5}, true, mi, "mi r7 r7 ROR r5", "mi_r7_r7_ROR_r5"},
    203      {{ls, r4, r4, LSL, r4}, true, ls, "ls r4 r4 LSL r4", "ls_r4_r4_LSL_r4"},
    204      {{hi, r0, r0, ASR, r1}, true, hi, "hi r0 r0 ASR r1", "hi_r0_r0_ASR_r1"},
    205      {{vs, r5, r5, ROR, r0}, true, vs, "vs r5 r5 ROR r0", "vs_r5_r5_ROR_r0"},
    206      {{hi, r1, r1, ROR, r4}, true, hi, "hi r1 r1 ROR r4", "hi_r1_r1_ROR_r4"},
    207      {{vs, r7, r7, ROR, r2}, true, vs, "vs r7 r7 ROR r2", "vs_r7_r7_ROR_r2"},
    208      {{gt, r5, r5, ROR, r2}, true, gt, "gt r5 r5 ROR r2", "gt_r5_r5_ROR_r2"},
    209      {{ge, r0, r0, LSR, r7}, true, ge, "ge r0 r0 LSR r7", "ge_r0_r0_LSR_r7"},
    210      {{cs, r7, r7, LSR, r0}, true, cs, "cs r7 r7 LSR r0", "cs_r7_r7_LSR_r0"},
    211      {{ge, r1, r1, LSL, r3}, true, ge, "ge r1 r1 LSL r3", "ge_r1_r1_LSL_r3"},
    212      {{lt, r5, r5, LSL, r5}, true, lt, "lt r5 r5 LSL r5", "lt_r5_r5_LSL_r5"},
    213      {{ls, r3, r3, ROR, r0}, true, ls, "ls r3 r3 ROR r0", "ls_r3_r3_ROR_r0"},
    214      {{cs, r0, r0, LSL, r7}, true, cs, "cs r0 r0 LSL r7", "cs_r0_r0_LSL_r7"},
    215      {{pl, r7, r7, ASR, r0}, true, pl, "pl r7 r7 ASR r0", "pl_r7_r7_ASR_r0"},
    216      {{vs, r2, r2, LSL, r3}, true, vs, "vs r2 r2 LSL r3", "vs_r2_r2_LSL_r3"},
    217      {{ne, r0, r0, ROR, r1}, true, ne, "ne r0 r0 ROR r1", "ne_r0_r0_ROR_r1"},
    218      {{vs, r2, r2, ASR, r2}, true, vs, "vs r2 r2 ASR r2", "vs_r2_r2_ASR_r2"},
    219      {{pl, r6, r6, LSR, r3}, true, pl, "pl r6 r6 LSR r3", "pl_r6_r6_LSR_r3"},
    220      {{gt, r3, r3, ROR, r0}, true, gt, "gt r3 r3 ROR r0", "gt_r3_r3_ROR_r0"},
    221      {{vc, r3, r3, LSL, r7}, true, vc, "vc r3 r3 LSL r7", "vc_r3_r3_LSL_r7"},
    222      {{ge, r6, r6, LSL, r6}, true, ge, "ge r6 r6 LSL r6", "ge_r6_r6_LSL_r6"},
    223      {{ls, r2, r2, LSL, r3}, true, ls, "ls r2 r2 LSL r3", "ls_r2_r2_LSL_r3"},
    224      {{vc, r4, r4, ROR, r5}, true, vc, "vc r4 r4 ROR r5", "vc_r4_r4_ROR_r5"},
    225      {{hi, r7, r7, LSL, r1}, true, hi, "hi r7 r7 LSL r1", "hi_r7_r7_LSL_r1"},
    226      {{cs, r1, r1, ROR, r2}, true, cs, "cs r1 r1 ROR r2", "cs_r1_r1_ROR_r2"},
    227      {{vs, r1, r1, ROR, r7}, true, vs, "vs r1 r1 ROR r7", "vs_r1_r1_ROR_r7"},
    228      {{lt, r3, r3, ASR, r2}, true, lt, "lt r3 r3 ASR r2", "lt_r3_r3_ASR_r2"},
    229      {{ne, r0, r0, LSR, r7}, true, ne, "ne r0 r0 LSR r7", "ne_r0_r0_LSR_r7"},
    230      {{vs, r6, r6, ROR, r1}, true, vs, "vs r6 r6 ROR r1", "vs_r6_r6_ROR_r1"},
    231      {{hi, r3, r3, ROR, r1}, true, hi, "hi r3 r3 ROR r1", "hi_r3_r3_ROR_r1"},
    232      {{ls, r1, r1, ASR, r0}, true, ls, "ls r1 r1 ASR r0", "ls_r1_r1_ASR_r0"},
    233      {{cs, r1, r1, LSL, r0}, true, cs, "cs r1 r1 LSL r0", "cs_r1_r1_LSL_r0"},
    234      {{cc, r7, r7, ROR, r6}, true, cc, "cc r7 r7 ROR r6", "cc_r7_r7_ROR_r6"},
    235      {{mi, r2, r2, LSL, r5}, true, mi, "mi r2 r2 LSL r5", "mi_r2_r2_LSL_r5"},
    236      {{gt, r6, r6, LSL, r5}, true, gt, "gt r6 r6 LSL r5", "gt_r6_r6_LSL_r5"},
    237      {{gt, r4, r4, LSL, r5}, true, gt, "gt r4 r4 LSL r5", "gt_r4_r4_LSL_r5"},
    238      {{vc, r3, r3, LSL, r4}, true, vc, "vc r3 r3 LSL r4", "vc_r3_r3_LSL_r4"},
    239      {{gt, r7, r7, LSR, r2}, true, gt, "gt r7 r7 LSR r2", "gt_r7_r7_LSR_r2"},
    240      {{le, r5, r5, ROR, r2}, true, le, "le r5 r5 ROR r2", "le_r5_r5_ROR_r2"},
    241      {{vs, r6, r6, LSL, r3}, true, vs, "vs r6 r6 LSL r3", "vs_r6_r6_LSL_r3"},
    242      {{gt, r1, r1, LSL, r6}, true, gt, "gt r1 r1 LSL r6", "gt_r1_r1_LSL_r6"},
    243      {{cc, r0, r0, LSR, r5}, true, cc, "cc r0 r0 LSR r5", "cc_r0_r0_LSR_r5"},
    244      {{eq, r4, r4, LSR, r3}, true, eq, "eq r4 r4 LSR r3", "eq_r4_r4_LSR_r3"},
    245      {{hi, r6, r6, LSR, r6}, true, hi, "hi r6 r6 LSR r6", "hi_r6_r6_LSR_r6"},
    246      {{hi, r5, r5, LSR, r4}, true, hi, "hi r5 r5 LSR r4", "hi_r5_r5_LSR_r4"},
    247      {{vs, r6, r6, ASR, r0}, true, vs, "vs r6 r6 ASR r0", "vs_r6_r6_ASR_r0"},
    248      {{hi, r6, r6, LSL, r6}, true, hi, "hi r6 r6 LSL r6", "hi_r6_r6_LSL_r6"},
    249      {{eq, r6, r6, ROR, r1}, true, eq, "eq r6 r6 ROR r1", "eq_r6_r6_ROR_r1"},
    250      {{ne, r1, r1, LSL, r5}, true, ne, "ne r1 r1 LSL r5", "ne_r1_r1_LSL_r5"},
    251      {{lt, r0, r0, ASR, r4}, true, lt, "lt r0 r0 ASR r4", "lt_r0_r0_ASR_r4"},
    252      {{le, r2, r2, LSL, r0}, true, le, "le r2 r2 LSL r0", "le_r2_r2_LSL_r0"},
    253      {{ls, r4, r4, ASR, r2}, true, ls, "ls r4 r4 ASR r2", "ls_r4_r4_ASR_r2"},
    254      {{pl, r4, r4, ASR, r2}, true, pl, "pl r4 r4 ASR r2", "pl_r4_r4_ASR_r2"},
    255      {{lt, r6, r6, ROR, r3}, true, lt, "lt r6 r6 ROR r3", "lt_r6_r6_ROR_r3"},
    256      {{ne, r4, r4, ROR, r5}, true, ne, "ne r4 r4 ROR r5", "ne_r4_r4_ROR_r5"},
    257      {{cc, r7, r7, LSL, r7}, true, cc, "cc r7 r7 LSL r7", "cc_r7_r7_LSL_r7"},
    258      {{le, r7, r7, LSR, r6}, true, le, "le r7 r7 LSR r6", "le_r7_r7_LSR_r6"},
    259      {{vc, r4, r4, LSL, r7}, true, vc, "vc r4 r4 LSL r7", "vc_r4_r4_LSL_r7"},
    260      {{vs, r1, r1, LSL, r3}, true, vs, "vs r1 r1 LSL r3", "vs_r1_r1_LSL_r3"},
    261      {{eq, r3, r3, LSL, r2}, true, eq, "eq r3 r3 LSL r2", "eq_r3_r3_LSL_r2"},
    262      {{ls, r7, r7, LSL, r3}, true, ls, "ls r7 r7 LSL r3", "ls_r7_r7_LSL_r3"},
    263      {{lt, r2, r2, ROR, r3}, true, lt, "lt r2 r2 ROR r3", "lt_r2_r2_ROR_r3"},
    264      {{lt, r2, r2, LSR, r2}, true, lt, "lt r2 r2 LSR r2", "lt_r2_r2_LSR_r2"},
    265      {{eq, r0, r0, LSL, r5}, true, eq, "eq r0 r0 LSL r5", "eq_r0_r0_LSL_r5"},
    266      {{vc, r2, r2, LSR, r1}, true, vc, "vc r2 r2 LSR r1", "vc_r2_r2_LSR_r1"},
    267      {{ge, r6, r6, ROR, r2}, true, ge, "ge r6 r6 ROR r2", "ge_r6_r6_ROR_r2"},
    268      {{ls, r1, r1, LSL, r4}, true, ls, "ls r1 r1 LSL r4", "ls_r1_r1_LSL_r4"},
    269      {{le, r6, r6, ROR, r2}, true, le, "le r6 r6 ROR r2", "le_r6_r6_ROR_r2"},
    270      {{vc, r6, r6, LSL, r5}, true, vc, "vc r6 r6 LSL r5", "vc_r6_r6_LSL_r5"},
    271      {{le, r0, r0, LSL, r5}, true, le, "le r0 r0 LSL r5", "le_r0_r0_LSL_r5"},
    272      {{vc, r3, r3, LSR, r1}, true, vc, "vc r3 r3 LSR r1", "vc_r3_r3_LSR_r1"},
    273      {{ge, r2, r2, LSR, r0}, true, ge, "ge r2 r2 LSR r0", "ge_r2_r2_LSR_r0"},
    274      {{vc, r4, r4, LSR, r0}, true, vc, "vc r4 r4 LSR r0", "vc_r4_r4_LSR_r0"},
    275      {{pl, r7, r7, LSR, r0}, true, pl, "pl r7 r7 LSR r0", "pl_r7_r7_LSR_r0"},
    276      {{vs, r7, r7, ROR, r4}, true, vs, "vs r7 r7 ROR r4", "vs_r7_r7_ROR_r4"},
    277      {{cs, r6, r6, ASR, r5}, true, cs, "cs r6 r6 ASR r5", "cs_r6_r6_ASR_r5"},
    278      {{ls, r6, r6, ROR, r4}, true, ls, "ls r6 r6 ROR r4", "ls_r6_r6_ROR_r4"},
    279      {{pl, r2, r2, LSR, r4}, true, pl, "pl r2 r2 LSR r4", "pl_r2_r2_LSR_r4"},
    280      {{lt, r4, r4, ASR, r0}, true, lt, "lt r4 r4 ASR r0", "lt_r4_r4_ASR_r0"},
    281      {{vc, r0, r0, LSL, r6}, true, vc, "vc r0 r0 LSL r6", "vc_r0_r0_LSL_r6"},
    282      {{lt, r7, r7, LSL, r6}, true, lt, "lt r7 r7 LSL r6", "lt_r7_r7_LSL_r6"},
    283      {{gt, r2, r2, LSL, r2}, true, gt, "gt r2 r2 LSL r2", "gt_r2_r2_LSL_r2"},
    284      {{vc, r2, r2, ROR, r7}, true, vc, "vc r2 r2 ROR r7", "vc_r2_r2_ROR_r7"},
    285      {{cc, r5, r5, ASR, r6}, true, cc, "cc r5 r5 ASR r6", "cc_r5_r5_ASR_r6"},
    286      {{cc, r0, r0, LSL, r0}, true, cc, "cc r0 r0 LSL r0", "cc_r0_r0_LSL_r0"},
    287      {{vc, r4, r4, ROR, r6}, true, vc, "vc r4 r4 ROR r6", "vc_r4_r4_ROR_r6"},
    288      {{gt, r6, r6, LSR, r3}, true, gt, "gt r6 r6 LSR r3", "gt_r6_r6_LSR_r3"},
    289      {{ne, r5, r5, LSR, r1}, true, ne, "ne r5 r5 LSR r1", "ne_r5_r5_LSR_r1"},
    290      {{ne, r3, r3, ROR, r3}, true, ne, "ne r3 r3 ROR r3", "ne_r3_r3_ROR_r3"},
    291      {{ge, r3, r3, LSL, r2}, true, ge, "ge r3 r3 LSL r2", "ge_r3_r3_LSL_r2"},
    292      {{pl, r3, r3, LSL, r2}, true, pl, "pl r3 r3 LSL r2", "pl_r3_r3_LSL_r2"},
    293      {{eq, r7, r7, LSL, r2}, true, eq, "eq r7 r7 LSL r2", "eq_r7_r7_LSL_r2"},
    294      {{pl, r6, r6, LSL, r7}, true, pl, "pl r6 r6 LSL r7", "pl_r6_r6_LSL_r7"},
    295      {{ls, r2, r2, LSL, r0}, true, ls, "ls r2 r2 LSL r0", "ls_r2_r2_LSL_r0"},
    296      {{cs, r7, r7, LSL, r1}, true, cs, "cs r7 r7 LSL r1", "cs_r7_r7_LSL_r1"},
    297      {{mi, r7, r7, LSR, r4}, true, mi, "mi r7 r7 LSR r4", "mi_r7_r7_LSR_r4"},
    298      {{gt, r7, r7, ROR, r4}, true, gt, "gt r7 r7 ROR r4", "gt_r7_r7_ROR_r4"},
    299      {{pl, r7, r7, LSL, r3}, true, pl, "pl r7 r7 LSL r3", "pl_r7_r7_LSL_r3"},
    300      {{cc, r7, r7, ASR, r3}, true, cc, "cc r7 r7 ASR r3", "cc_r7_r7_ASR_r3"},
    301      {{hi, r6, r6, ASR, r0}, true, hi, "hi r6 r6 ASR r0", "hi_r6_r6_ASR_r0"},
    302      {{ge, r0, r0, ROR, r5}, true, ge, "ge r0 r0 ROR r5", "ge_r0_r0_ROR_r5"},
    303      {{ne, r3, r3, LSR, r1}, true, ne, "ne r3 r3 LSR r1", "ne_r3_r3_LSR_r1"},
    304      {{le, r0, r0, ROR, r1}, true, le, "le r0 r0 ROR r1", "le_r0_r0_ROR_r1"},
    305      {{cc, r6, r6, LSL, r0}, true, cc, "cc r6 r6 LSL r0", "cc_r6_r6_LSL_r0"},
    306      {{eq, r4, r4, LSL, r5}, true, eq, "eq r4 r4 LSL r5", "eq_r4_r4_LSL_r5"},
    307      {{le, r3, r3, ASR, r7}, true, le, "le r3 r3 ASR r7", "le_r3_r3_ASR_r7"},
    308      {{pl, r6, r6, ROR, r6}, true, pl, "pl r6 r6 ROR r6", "pl_r6_r6_ROR_r6"},
    309      {{gt, r6, r6, LSR, r4}, true, gt, "gt r6 r6 LSR r4", "gt_r6_r6_LSR_r4"},
    310      {{hi, r2, r2, LSL, r0}, true, hi, "hi r2 r2 LSL r0", "hi_r2_r2_LSL_r0"},
    311      {{eq, r1, r1, LSR, r7}, true, eq, "eq r1 r1 LSR r7", "eq_r1_r1_LSR_r7"},
    312      {{eq, r1, r1, LSR, r1}, true, eq, "eq r1 r1 LSR r1", "eq_r1_r1_LSR_r1"},
    313      {{vs, r5, r5, ASR, r5}, true, vs, "vs r5 r5 ASR r5", "vs_r5_r5_ASR_r5"},
    314      {{gt, r0, r0, LSR, r0}, true, gt, "gt r0 r0 LSR r0", "gt_r0_r0_LSR_r0"},
    315      {{hi, r7, r7, ROR, r2}, true, hi, "hi r7 r7 ROR r2", "hi_r7_r7_ROR_r2"},
    316      {{vc, r0, r0, ROR, r7}, true, vc, "vc r0 r0 ROR r7", "vc_r0_r0_ROR_r7"},
    317      {{eq, r2, r2, ASR, r2}, true, eq, "eq r2 r2 ASR r2", "eq_r2_r2_ASR_r2"},
    318      {{vc, r0, r0, LSR, r3}, true, vc, "vc r0 r0 LSR r3", "vc_r0_r0_LSR_r3"},
    319      {{le, r7, r7, ASR, r2}, true, le, "le r7 r7 ASR r2", "le_r7_r7_ASR_r2"},
    320      {{ls, r4, r4, ASR, r6}, true, ls, "ls r4 r4 ASR r6", "ls_r4_r4_ASR_r6"},
    321      {{pl, r1, r1, ROR, r5}, true, pl, "pl r1 r1 ROR r5", "pl_r1_r1_ROR_r5"},
    322      {{le, r4, r4, ASR, r2}, true, le, "le r4 r4 ASR r2", "le_r4_r4_ASR_r2"},
    323      {{mi, r7, r7, LSL, r6}, true, mi, "mi r7 r7 LSL r6", "mi_r7_r7_LSL_r6"},
    324      {{cc, r0, r0, ROR, r6}, true, cc, "cc r0 r0 ROR r6", "cc_r0_r0_ROR_r6"},
    325      {{le, r6, r6, LSL, r7}, true, le, "le r6 r6 LSL r7", "le_r6_r6_LSL_r7"},
    326      {{hi, r0, r0, ASR, r0}, true, hi, "hi r0 r0 ASR r0", "hi_r0_r0_ASR_r0"},
    327      {{cs, r7, r7, ASR, r5}, true, cs, "cs r7 r7 ASR r5", "cs_r7_r7_ASR_r5"},
    328      {{eq, r2, r2, ASR, r7}, true, eq, "eq r2 r2 ASR r7", "eq_r2_r2_ASR_r7"},
    329      {{eq, r5, r5, LSL, r0}, true, eq, "eq r5 r5 LSL r0", "eq_r5_r5_LSL_r0"},
    330      {{hi, r5, r5, ASR, r6}, true, hi, "hi r5 r5 ASR r6", "hi_r5_r5_ASR_r6"},
    331      {{ne, r3, r3, ASR, r7}, true, ne, "ne r3 r3 ASR r7", "ne_r3_r3_ASR_r7"},
    332      {{vs, r6, r6, ROR, r7}, true, vs, "vs r6 r6 ROR r7", "vs_r6_r6_ROR_r7"},
    333      {{le, r0, r0, LSL, r1}, true, le, "le r0 r0 LSL r1", "le_r0_r0_LSL_r1"},
    334      {{le, r7, r7, ROR, r1}, true, le, "le r7 r7 ROR r1", "le_r7_r7_ROR_r1"},
    335      {{ne, r6, r6, LSL, r0}, true, ne, "ne r6 r6 LSL r0", "ne_r6_r6_LSL_r0"},
    336      {{hi, r2, r2, LSL, r7}, true, hi, "hi r2 r2 LSL r7", "hi_r2_r2_LSL_r7"},
    337      {{lt, r0, r0, ASR, r0}, true, lt, "lt r0 r0 ASR r0", "lt_r0_r0_ASR_r0"},
    338      {{cc, r2, r2, ROR, r6}, true, cc, "cc r2 r2 ROR r6", "cc_r2_r2_ROR_r6"},
    339      {{pl, r5, r5, LSR, r2}, true, pl, "pl r5 r5 LSR r2", "pl_r5_r5_LSR_r2"},
    340      {{lt, r0, r0, ROR, r4}, true, lt, "lt r0 r0 ROR r4", "lt_r0_r0_ROR_r4"},
    341      {{ls, r6, r6, ASR, r1}, true, ls, "ls r6 r6 ASR r1", "ls_r6_r6_ASR_r1"},
    342      {{ne, r3, r3, LSR, r7}, true, ne, "ne r3 r3 LSR r7", "ne_r3_r3_LSR_r7"},
    343      {{vs, r0, r0, ROR, r4}, true, vs, "vs r0 r0 ROR r4", "vs_r0_r0_ROR_r4"},
    344      {{ge, r5, r5, ASR, r7}, true, ge, "ge r5 r5 ASR r7", "ge_r5_r5_ASR_r7"},
    345      {{pl, r5, r5, ROR, r2}, true, pl, "pl r5 r5 ROR r2", "pl_r5_r5_ROR_r2"},
    346      {{le, r1, r1, ROR, r5}, true, le, "le r1 r1 ROR r5", "le_r1_r1_ROR_r5"},
    347      {{ls, r4, r4, LSR, r1}, true, ls, "ls r4 r4 LSR r1", "ls_r4_r4_LSR_r1"},
    348      {{vc, r0, r0, LSL, r3}, true, vc, "vc r0 r0 LSL r3", "vc_r0_r0_LSL_r3"},
    349      {{vc, r0, r0, ASR, r3}, true, vc, "vc r0 r0 ASR r3", "vc_r0_r0_ASR_r3"},
    350      {{pl, r7, r7, ASR, r1}, true, pl, "pl r7 r7 ASR r1", "pl_r7_r7_ASR_r1"},
    351      {{cc, r0, r0, LSL, r1}, true, cc, "cc r0 r0 LSL r1", "cc_r0_r0_LSL_r1"},
    352      {{hi, r1, r1, LSL, r0}, true, hi, "hi r1 r1 LSL r0", "hi_r1_r1_LSL_r0"},
    353      {{gt, r6, r6, LSL, r2}, true, gt, "gt r6 r6 LSL r2", "gt_r6_r6_LSL_r2"},
    354      {{vc, r2, r2, LSR, r6}, true, vc, "vc r2 r2 LSR r6", "vc_r2_r2_LSR_r6"},
    355      {{vc, r5, r5, LSL, r5}, true, vc, "vc r5 r5 LSL r5", "vc_r5_r5_LSL_r5"},
    356      {{vc, r4, r4, LSR, r1}, true, vc, "vc r4 r4 LSR r1", "vc_r4_r4_LSR_r1"},
    357      {{lt, r4, r4, LSL, r6}, true, lt, "lt r4 r4 LSL r6", "lt_r4_r4_LSL_r6"},
    358      {{gt, r6, r6, ASR, r1}, true, gt, "gt r6 r6 ASR r1", "gt_r6_r6_ASR_r1"},
    359      {{hi, r1, r1, ASR, r1}, true, hi, "hi r1 r1 ASR r1", "hi_r1_r1_ASR_r1"},
    360      {{gt, r6, r6, ROR, r4}, true, gt, "gt r6 r6 ROR r4", "gt_r6_r6_ROR_r4"},
    361      {{gt, r3, r3, LSL, r3}, true, gt, "gt r3 r3 LSL r3", "gt_r3_r3_LSL_r3"},
    362      {{vs, r3, r3, ROR, r0}, true, vs, "vs r3 r3 ROR r0", "vs_r3_r3_ROR_r0"},
    363      {{lt, r4, r4, ROR, r1}, true, lt, "lt r4 r4 ROR r1", "lt_r4_r4_ROR_r1"},
    364      {{gt, r7, r7, LSL, r5}, true, gt, "gt r7 r7 LSL r5", "gt_r7_r7_LSL_r5"},
    365      {{hi, r0, r0, ASR, r5}, true, hi, "hi r0 r0 ASR r5", "hi_r0_r0_ASR_r5"},
    366      {{vc, r4, r4, ROR, r4}, true, vc, "vc r4 r4 ROR r4", "vc_r4_r4_ROR_r4"},
    367      {{gt, r5, r5, ASR, r0}, true, gt, "gt r5 r5 ASR r0", "gt_r5_r5_ASR_r0"},
    368      {{gt, r4, r4, LSR, r0}, true, gt, "gt r4 r4 LSR r0", "gt_r4_r4_LSR_r0"},
    369      {{gt, r3, r3, ASR, r3}, true, gt, "gt r3 r3 ASR r3", "gt_r3_r3_ASR_r3"},
    370      {{lt, r5, r5, ROR, r3}, true, lt, "lt r5 r5 ROR r3", "lt_r5_r5_ROR_r3"},
    371      {{cc, r7, r7, LSL, r1}, true, cc, "cc r7 r7 LSL r1", "cc_r7_r7_LSL_r1"},
    372      {{vc, r1, r1, LSR, r2}, true, vc, "vc r1 r1 LSR r2", "vc_r1_r1_LSR_r2"},
    373      {{pl, r3, r3, ASR, r5}, true, pl, "pl r3 r3 ASR r5", "pl_r3_r3_ASR_r5"},
    374      {{ls, r3, r3, LSL, r0}, true, ls, "ls r3 r3 LSL r0", "ls_r3_r3_LSL_r0"},
    375      {{vs, r5, r5, ROR, r4}, true, vs, "vs r5 r5 ROR r4", "vs_r5_r5_ROR_r4"},
    376      {{hi, r2, r2, LSL, r6}, true, hi, "hi r2 r2 LSL r6", "hi_r2_r2_LSL_r6"},
    377      {{cc, r5, r5, ROR, r0}, true, cc, "cc r5 r5 ROR r0", "cc_r5_r5_ROR_r0"},
    378      {{cs, r2, r2, ASR, r5}, true, cs, "cs r2 r2 ASR r5", "cs_r2_r2_ASR_r5"},
    379      {{ge, r1, r1, ROR, r3}, true, ge, "ge r1 r1 ROR r3", "ge_r1_r1_ROR_r3"},
    380      {{ne, r0, r0, ROR, r3}, true, ne, "ne r0 r0 ROR r3", "ne_r0_r0_ROR_r3"},
    381      {{cs, r7, r7, ASR, r6}, true, cs, "cs r7 r7 ASR r6", "cs_r7_r7_ASR_r6"},
    382      {{mi, r1, r1, LSR, r0}, true, mi, "mi r1 r1 LSR r0", "mi_r1_r1_LSR_r0"},
    383      {{mi, r5, r5, LSL, r1}, true, mi, "mi r5 r5 LSL r1", "mi_r5_r5_LSL_r1"},
    384      {{mi, r4, r4, LSR, r3}, true, mi, "mi r4 r4 LSR r3", "mi_r4_r4_LSR_r3"},
    385      {{pl, r3, r3, ASR, r7}, true, pl, "pl r3 r3 ASR r7", "pl_r3_r3_ASR_r7"},
    386      {{ls, r2, r2, ASR, r2}, true, ls, "ls r2 r2 ASR r2", "ls_r2_r2_ASR_r2"},
    387      {{eq, r7, r7, LSL, r3}, true, eq, "eq r7 r7 LSL r3", "eq_r7_r7_LSL_r3"},
    388      {{gt, r4, r4, LSL, r2}, true, gt, "gt r4 r4 LSL r2", "gt_r4_r4_LSL_r2"},
    389      {{ne, r6, r6, LSL, r6}, true, ne, "ne r6 r6 LSL r6", "ne_r6_r6_LSL_r6"},
    390      {{eq, r7, r7, LSL, r0}, true, eq, "eq r7 r7 LSL r0", "eq_r7_r7_LSL_r0"},
    391      {{le, r7, r7, LSL, r7}, true, le, "le r7 r7 LSL r7", "le_r7_r7_LSL_r7"},
    392      {{eq, r0, r0, ROR, r1}, true, eq, "eq r0 r0 ROR r1", "eq_r0_r0_ROR_r1"},
    393      {{hi, r2, r2, LSR, r6}, true, hi, "hi r2 r2 LSR r6", "hi_r2_r2_LSR_r6"},
    394      {{vs, r6, r6, LSL, r5}, true, vs, "vs r6 r6 LSL r5", "vs_r6_r6_LSL_r5"},
    395      {{gt, r5, r5, ASR, r1}, true, gt, "gt r5 r5 ASR r1", "gt_r5_r5_ASR_r1"},
    396      {{ne, r4, r4, ASR, r3}, true, ne, "ne r4 r4 ASR r3", "ne_r4_r4_ASR_r3"},
    397      {{lt, r6, r6, LSL, r3}, true, lt, "lt r6 r6 LSL r3", "lt_r6_r6_LSL_r3"},
    398      {{ls, r3, r3, ASR, r3}, true, ls, "ls r3 r3 ASR r3", "ls_r3_r3_ASR_r3"},
    399      {{le, r4, r4, LSL, r1}, true, le, "le r4 r4 LSL r1", "le_r4_r4_LSL_r1"},
    400      {{gt, r7, r7, LSL, r6}, true, gt, "gt r7 r7 LSL r6", "gt_r7_r7_LSL_r6"},
    401      {{vc, r2, r2, ROR, r1}, true, vc, "vc r2 r2 ROR r1", "vc_r2_r2_ROR_r1"},
    402      {{ne, r1, r1, ROR, r1}, true, ne, "ne r1 r1 ROR r1", "ne_r1_r1_ROR_r1"},
    403      {{cc, r3, r3, ASR, r0}, true, cc, "cc r3 r3 ASR r0", "cc_r3_r3_ASR_r0"},
    404      {{lt, r4, r4, LSR, r0}, true, lt, "lt r4 r4 LSR r0", "lt_r4_r4_LSR_r0"},
    405      {{cc, r3, r3, LSR, r7}, true, cc, "cc r3 r3 LSR r7", "cc_r3_r3_LSR_r7"},
    406      {{eq, r0, r0, LSR, r5}, true, eq, "eq r0 r0 LSR r5", "eq_r0_r0_LSR_r5"},
    407      {{lt, r5, r5, ROR, r5}, true, lt, "lt r5 r5 ROR r5", "lt_r5_r5_ROR_r5"},
    408      {{vc, r0, r0, LSL, r7}, true, vc, "vc r0 r0 LSL r7", "vc_r0_r0_LSL_r7"},
    409      {{cs, r7, r7, LSR, r5}, true, cs, "cs r7 r7 LSR r5", "cs_r7_r7_LSR_r5"},
    410      {{lt, r4, r4, ROR, r0}, true, lt, "lt r4 r4 ROR r0", "lt_r4_r4_ROR_r0"},
    411      {{vc, r4, r4, ROR, r3}, true, vc, "vc r4 r4 ROR r3", "vc_r4_r4_ROR_r3"},
    412      {{le, r6, r6, LSL, r6}, true, le, "le r6 r6 LSL r6", "le_r6_r6_LSL_r6"},
    413      {{cc, r4, r4, LSR, r7}, true, cc, "cc r4 r4 LSR r7", "cc_r4_r4_LSR_r7"},
    414      {{pl, r7, r7, ROR, r2}, true, pl, "pl r7 r7 ROR r2", "pl_r7_r7_ROR_r2"},
    415      {{hi, r0, r0, LSL, r6}, true, hi, "hi r0 r0 LSL r6", "hi_r0_r0_LSL_r6"},
    416      {{gt, r1, r1, LSR, r4}, true, gt, "gt r1 r1 LSR r4", "gt_r1_r1_LSR_r4"},
    417      {{vs, r2, r2, LSR, r1}, true, vs, "vs r2 r2 LSR r1", "vs_r2_r2_LSR_r1"},
    418      {{cc, r3, r3, ROR, r0}, true, cc, "cc r3 r3 ROR r0", "cc_r3_r3_ROR_r0"},
    419      {{ge, r6, r6, LSR, r5}, true, ge, "ge r6 r6 LSR r5", "ge_r6_r6_LSR_r5"},
    420      {{ne, r2, r2, ASR, r2}, true, ne, "ne r2 r2 ASR r2", "ne_r2_r2_ASR_r2"},
    421      {{lt, r5, r5, LSR, r7}, true, lt, "lt r5 r5 LSR r7", "lt_r5_r5_LSR_r7"},
    422      {{vs, r3, r3, LSL, r4}, true, vs, "vs r3 r3 LSL r4", "vs_r3_r3_LSL_r4"},
    423      {{lt, r7, r7, LSR, r5}, true, lt, "lt r7 r7 LSR r5", "lt_r7_r7_LSR_r5"},
    424      {{vc, r2, r2, LSL, r5}, true, vc, "vc r2 r2 LSL r5", "vc_r2_r2_LSL_r5"},
    425      {{le, r6, r6, ASR, r7}, true, le, "le r6 r6 ASR r7", "le_r6_r6_ASR_r7"},
    426      {{ne, r1, r1, LSL, r6}, true, ne, "ne r1 r1 LSL r6", "ne_r1_r1_LSL_r6"},
    427      {{le, r6, r6, ASR, r1}, true, le, "le r6 r6 ASR r1", "le_r6_r6_ASR_r1"},
    428      {{ls, r1, r1, ROR, r7}, true, ls, "ls r1 r1 ROR r7", "ls_r1_r1_ROR_r7"},
    429      {{pl, r0, r0, LSL, r0}, true, pl, "pl r0 r0 LSL r0", "pl_r0_r0_LSL_r0"},
    430      {{pl, r4, r4, ROR, r1}, true, pl, "pl r4 r4 ROR r1", "pl_r4_r4_ROR_r1"},
    431      {{ne, r7, r7, ASR, r3}, true, ne, "ne r7 r7 ASR r3", "ne_r7_r7_ASR_r3"},
    432      {{hi, r6, r6, LSR, r7}, true, hi, "hi r6 r6 LSR r7", "hi_r6_r6_LSR_r7"},
    433      {{eq, r5, r5, LSL, r4}, true, eq, "eq r5 r5 LSL r4", "eq_r5_r5_LSL_r4"},
    434      {{hi, r7, r7, LSR, r4}, true, hi, "hi r7 r7 LSR r4", "hi_r7_r7_LSR_r4"},
    435      {{ls, r3, r3, ASR, r0}, true, ls, "ls r3 r3 ASR r0", "ls_r3_r3_ASR_r0"},
    436      {{mi, r2, r2, ASR, r0}, true, mi, "mi r2 r2 ASR r0", "mi_r2_r2_ASR_r0"},
    437      {{gt, r7, r7, ROR, r3}, true, gt, "gt r7 r7 ROR r3", "gt_r7_r7_ROR_r3"},
    438      {{ge, r1, r1, ASR, r5}, true, ge, "ge r1 r1 ASR r5", "ge_r1_r1_ASR_r5"},
    439      {{vc, r3, r3, LSR, r3}, true, vc, "vc r3 r3 LSR r3", "vc_r3_r3_LSR_r3"},
    440      {{gt, r6, r6, LSR, r2}, true, gt, "gt r6 r6 LSR r2", "gt_r6_r6_LSR_r2"},
    441      {{vc, r6, r6, LSL, r2}, true, vc, "vc r6 r6 LSL r2", "vc_r6_r6_LSL_r2"},
    442      {{le, r7, r7, ASR, r1}, true, le, "le r7 r7 ASR r1", "le_r7_r7_ASR_r1"},
    443      {{pl, r1, r1, LSR, r7}, true, pl, "pl r1 r1 LSR r7", "pl_r1_r1_LSR_r7"},
    444      {{mi, r1, r1, ROR, r5}, true, mi, "mi r1 r1 ROR r5", "mi_r1_r1_ROR_r5"},
    445      {{eq, r6, r6, ASR, r1}, true, eq, "eq r6 r6 ASR r1", "eq_r6_r6_ASR_r1"},
    446      {{vs, r4, r4, LSR, r6}, true, vs, "vs r4 r4 LSR r6", "vs_r4_r4_LSR_r6"},
    447      {{ls, r0, r0, ASR, r0}, true, ls, "ls r0 r0 ASR r0", "ls_r0_r0_ASR_r0"},
    448      {{cc, r0, r0, LSL, r2}, true, cc, "cc r0 r0 LSL r2", "cc_r0_r0_LSL_r2"},
    449      {{cc, r3, r3, ROR, r7}, true, cc, "cc r3 r3 ROR r7", "cc_r3_r3_ROR_r7"},
    450      {{ge, r2, r2, ROR, r7}, true, ge, "ge r2 r2 ROR r7", "ge_r2_r2_ROR_r7"},
    451      {{mi, r7, r7, LSL, r4}, true, mi, "mi r7 r7 LSL r4", "mi_r7_r7_LSL_r4"},
    452      {{le, r4, r4, LSR, r5}, true, le, "le r4 r4 LSR r5", "le_r4_r4_LSR_r5"},
    453      {{cc, r5, r5, ASR, r3}, true, cc, "cc r5 r5 ASR r3", "cc_r5_r5_ASR_r3"},
    454      {{ls, r0, r0, ASR, r6}, true, ls, "ls r0 r0 ASR r6", "ls_r0_r0_ASR_r6"},
    455      {{ge, r4, r4, LSL, r1}, true, ge, "ge r4 r4 LSL r1", "ge_r4_r4_LSL_r1"},
    456      {{pl, r1, r1, LSL, r5}, true, pl, "pl r1 r1 LSL r5", "pl_r1_r1_LSL_r5"},
    457      {{ne, r2, r2, ASR, r5}, true, ne, "ne r2 r2 ASR r5", "ne_r2_r2_ASR_r5"},
    458      {{eq, r4, r4, ROR, r3}, true, eq, "eq r4 r4 ROR r3", "eq_r4_r4_ROR_r3"},
    459      {{mi, r2, r2, LSL, r3}, true, mi, "mi r2 r2 LSL r3", "mi_r2_r2_LSL_r3"},
    460      {{lt, r2, r2, ROR, r4}, true, lt, "lt r2 r2 ROR r4", "lt_r2_r2_ROR_r4"},
    461      {{ge, r7, r7, LSR, r2}, true, ge, "ge r7 r7 LSR r2", "ge_r7_r7_LSR_r2"},
    462      {{gt, r4, r4, ASR, r5}, true, gt, "gt r4 r4 ASR r5", "gt_r4_r4_ASR_r5"},
    463      {{le, r2, r2, LSL, r2}, true, le, "le r2 r2 LSL r2", "le_r2_r2_LSL_r2"},
    464      {{eq, r3, r3, LSR, r5}, true, eq, "eq r3 r3 LSR r5", "eq_r3_r3_LSR_r5"},
    465      {{ge, r7, r7, ASR, r1}, true, ge, "ge r7 r7 ASR r1", "ge_r7_r7_ASR_r1"},
    466      {{vc, r1, r1, LSL, r2}, true, vc, "vc r1 r1 LSL r2", "vc_r1_r1_LSL_r2"},
    467      {{cs, r2, r2, ASR, r3}, true, cs, "cs r2 r2 ASR r3", "cs_r2_r2_ASR_r3"},
    468      {{ge, r6, r6, LSL, r7}, true, ge, "ge r6 r6 LSL r7", "ge_r6_r6_LSL_r7"},
    469      {{hi, r5, r5, LSL, r0}, true, hi, "hi r5 r5 LSL r0", "hi_r5_r5_LSL_r0"},
    470      {{eq, r4, r4, LSR, r1}, true, eq, "eq r4 r4 LSR r1", "eq_r4_r4_LSR_r1"},
    471      {{gt, r5, r5, LSL, r1}, true, gt, "gt r5 r5 LSL r1", "gt_r5_r5_LSL_r1"},
    472      {{vs, r5, r5, LSL, r7}, true, vs, "vs r5 r5 LSL r7", "vs_r5_r5_LSL_r7"},
    473      {{ge, r7, r7, LSL, r2}, true, ge, "ge r7 r7 LSL r2", "ge_r7_r7_LSL_r2"},
    474      {{hi, r0, r0, ASR, r7}, true, hi, "hi r0 r0 ASR r7", "hi_r0_r0_ASR_r7"},
    475      {{cs, r3, r3, LSL, r3}, true, cs, "cs r3 r3 LSL r3", "cs_r3_r3_LSL_r3"},
    476      {{lt, r2, r2, LSL, r6}, true, lt, "lt r2 r2 LSL r6", "lt_r2_r2_LSL_r6"},
    477      {{pl, r1, r1, ASR, r4}, true, pl, "pl r1 r1 ASR r4", "pl_r1_r1_ASR_r4"},
    478      {{vc, r1, r1, ASR, r5}, true, vc, "vc r1 r1 ASR r5", "vc_r1_r1_ASR_r5"},
    479      {{lt, r4, r4, ROR, r5}, true, lt, "lt r4 r4 ROR r5", "lt_r4_r4_ROR_r5"},
    480      {{cc, r0, r0, ASR, r3}, true, cc, "cc r0 r0 ASR r3", "cc_r0_r0_ASR_r3"},
    481      {{vs, r4, r4, LSL, r5}, true, vs, "vs r4 r4 LSL r5", "vs_r4_r4_LSL_r5"},
    482      {{vs, r0, r0, LSL, r3}, true, vs, "vs r0 r0 LSL r3", "vs_r0_r0_LSL_r3"},
    483      {{hi, r1, r1, ROR, r7}, true, hi, "hi r1 r1 ROR r7", "hi_r1_r1_ROR_r7"},
    484      {{hi, r1, r1, LSL, r5}, true, hi, "hi r1 r1 LSL r5", "hi_r1_r1_LSL_r5"},
    485      {{le, r0, r0, LSR, r7}, true, le, "le r0 r0 LSR r7", "le_r0_r0_LSR_r7"},
    486      {{ls, r2, r2, ASR, r3}, true, ls, "ls r2 r2 ASR r3", "ls_r2_r2_ASR_r3"},
    487      {{mi, r3, r3, LSL, r3}, true, mi, "mi r3 r3 LSL r3", "mi_r3_r3_LSL_r3"},
    488      {{ne, r6, r6, ASR, r1}, true, ne, "ne r6 r6 ASR r1", "ne_r6_r6_ASR_r1"},
    489      {{le, r6, r6, LSL, r5}, true, le, "le r6 r6 LSL r5", "le_r6_r6_LSL_r5"},
    490      {{gt, r5, r5, LSR, r6}, true, gt, "gt r5 r5 LSR r6", "gt_r5_r5_LSR_r6"},
    491      {{vs, r5, r5, ASR, r1}, true, vs, "vs r5 r5 ASR r1", "vs_r5_r5_ASR_r1"},
    492      {{ne, r3, r3, LSL, r1}, true, ne, "ne r3 r3 LSL r1", "ne_r3_r3_LSL_r1"},
    493      {{lt, r2, r2, LSL, r4}, true, lt, "lt r2 r2 LSL r4", "lt_r2_r2_LSL_r4"},
    494      {{eq, r1, r1, ROR, r1}, true, eq, "eq r1 r1 ROR r1", "eq_r1_r1_ROR_r1"},
    495      {{cs, r1, r1, LSL, r6}, true, cs, "cs r1 r1 LSL r6", "cs_r1_r1_LSL_r6"},
    496      {{hi, r7, r7, ASR, r2}, true, hi, "hi r7 r7 ASR r2", "hi_r7_r7_ASR_r2"},
    497      {{mi, r4, r4, LSL, r3}, true, mi, "mi r4 r4 LSL r3", "mi_r4_r4_LSL_r3"},
    498      {{eq, r3, r3, LSL, r4}, true, eq, "eq r3 r3 LSL r4", "eq_r3_r3_LSL_r4"},
    499      {{ne, r6, r6, LSL, r3}, true, ne, "ne r6 r6 LSL r3", "ne_r6_r6_LSL_r3"},
    500      {{vs, r4, r4, LSR, r0}, true, vs, "vs r4 r4 LSR r0", "vs_r4_r4_LSR_r0"},
    501      {{eq, r6, r6, ASR, r4}, true, eq, "eq r6 r6 ASR r4", "eq_r6_r6_ASR_r4"},
    502      {{pl, r0, r0, ASR, r1}, true, pl, "pl r0 r0 ASR r1", "pl_r0_r0_ASR_r1"},
    503      {{cs, r7, r7, LSR, r3}, true, cs, "cs r7 r7 LSR r3", "cs_r7_r7_LSR_r3"},
    504      {{le, r2, r2, LSR, r2}, true, le, "le r2 r2 LSR r2", "le_r2_r2_LSR_r2"},
    505      {{ge, r3, r3, LSR, r5}, true, ge, "ge r3 r3 LSR r5", "ge_r3_r3_LSR_r5"},
    506      {{ls, r0, r0, ASR, r4}, true, ls, "ls r0 r0 ASR r4", "ls_r0_r0_ASR_r4"},
    507      {{lt, r6, r6, LSR, r1}, true, lt, "lt r6 r6 LSR r1", "lt_r6_r6_LSR_r1"},
    508      {{vc, r0, r0, ASR, r5}, true, vc, "vc r0 r0 ASR r5", "vc_r0_r0_ASR_r5"},
    509      {{lt, r2, r2, LSR, r0}, true, lt, "lt r2 r2 LSR r0", "lt_r2_r2_LSR_r0"},
    510      {{pl, r5, r5, ASR, r0}, true, pl, "pl r5 r5 ASR r0", "pl_r5_r5_ASR_r0"},
    511      {{pl, r1, r1, ROR, r6}, true, pl, "pl r1 r1 ROR r6", "pl_r1_r1_ROR_r6"},
    512      {{hi, r4, r4, ASR, r7}, true, hi, "hi r4 r4 ASR r7", "hi_r4_r4_ASR_r7"},
    513      {{le, r6, r6, ROR, r3}, true, le, "le r6 r6 ROR r3", "le_r6_r6_ROR_r3"},
    514      {{cc, r1, r1, LSL, r3}, true, cc, "cc r1 r1 LSL r3", "cc_r1_r1_LSL_r3"},
    515      {{vc, r1, r1, ROR, r1}, true, vc, "vc r1 r1 ROR r1", "vc_r1_r1_ROR_r1"},
    516      {{vc, r0, r0, ROR, r4}, true, vc, "vc r0 r0 ROR r4", "vc_r0_r0_ROR_r4"},
    517      {{ls, r3, r3, LSL, r5}, true, ls, "ls r3 r3 LSL r5", "ls_r3_r3_LSL_r5"},
    518      {{ls, r5, r5, ROR, r2}, true, ls, "ls r5 r5 ROR r2", "ls_r5_r5_ROR_r2"},
    519      {{lt, r0, r0, ROR, r5}, true, lt, "lt r0 r0 ROR r5", "lt_r0_r0_ROR_r5"},
    520      {{le, r7, r7, ROR, r4}, true, le, "le r7 r7 ROR r4", "le_r7_r7_ROR_r4"},
    521      {{eq, r1, r1, ROR, r0}, true, eq, "eq r1 r1 ROR r0", "eq_r1_r1_ROR_r0"},
    522      {{gt, r3, r3, LSL, r7}, true, gt, "gt r3 r3 LSL r7", "gt_r3_r3_LSL_r7"},
    523      {{vc, r0, r0, ASR, r6}, true, vc, "vc r0 r0 ASR r6", "vc_r0_r0_ASR_r6"},
    524      {{ge, r7, r7, LSL, r5}, true, ge, "ge r7 r7 LSL r5", "ge_r7_r7_LSL_r5"},
    525      {{pl, r5, r5, LSL, r4}, true, pl, "pl r5 r5 LSL r4", "pl_r5_r5_LSL_r4"},
    526      {{pl, r0, r0, ROR, r6}, true, pl, "pl r0 r0 ROR r6", "pl_r0_r0_ROR_r6"},
    527      {{hi, r1, r1, ROR, r1}, true, hi, "hi r1 r1 ROR r1", "hi_r1_r1_ROR_r1"},
    528      {{lt, r1, r1, ASR, r2}, true, lt, "lt r1 r1 ASR r2", "lt_r1_r1_ASR_r2"},
    529      {{cs, r4, r4, LSR, r6}, true, cs, "cs r4 r4 LSR r6", "cs_r4_r4_LSR_r6"},
    530      {{hi, r1, r1, ASR, r0}, true, hi, "hi r1 r1 ASR r0", "hi_r1_r1_ASR_r0"},
    531      {{le, r7, r7, ROR, r5}, true, le, "le r7 r7 ROR r5", "le_r7_r7_ROR_r5"},
    532      {{cs, r6, r6, LSL, r0}, true, cs, "cs r6 r6 LSL r0", "cs_r6_r6_LSL_r0"},
    533      {{hi, r3, r3, ROR, r3}, true, hi, "hi r3 r3 ROR r3", "hi_r3_r3_ROR_r3"},
    534      {{vs, r6, r6, LSR, r0}, true, vs, "vs r6 r6 LSR r0", "vs_r6_r6_LSR_r0"},
    535      {{ls, r5, r5, LSR, r6}, true, ls, "ls r5 r5 LSR r6", "ls_r5_r5_LSR_r6"},
    536      {{vs, r1, r1, ROR, r0}, true, vs, "vs r1 r1 ROR r0", "vs_r1_r1_ROR_r0"},
    537      {{ge, r3, r3, ASR, r4}, true, ge, "ge r3 r3 ASR r4", "ge_r3_r3_ASR_r4"},
    538      {{ne, r5, r5, ROR, r7}, true, ne, "ne r5 r5 ROR r7", "ne_r5_r5_ROR_r7"},
    539      {{ls, r5, r5, LSL, r2}, true, ls, "ls r5 r5 LSL r2", "ls_r5_r5_LSL_r2"},
    540      {{mi, r4, r4, ROR, r1}, true, mi, "mi r4 r4 ROR r1", "mi_r4_r4_ROR_r1"},
    541      {{cs, r6, r6, LSR, r6}, true, cs, "cs r6 r6 LSR r6", "cs_r6_r6_LSR_r6"},
    542      {{cs, r1, r1, ROR, r1}, true, cs, "cs r1 r1 ROR r1", "cs_r1_r1_ROR_r1"},
    543      {{ls, r5, r5, ROR, r3}, true, ls, "ls r5 r5 ROR r3", "ls_r5_r5_ROR_r3"},
    544      {{vs, r7, r7, LSR, r3}, true, vs, "vs r7 r7 LSR r3", "vs_r7_r7_LSR_r3"},
    545      {{le, r0, r0, ROR, r2}, true, le, "le r0 r0 ROR r2", "le_r0_r0_ROR_r2"},
    546      {{vc, r5, r5, LSR, r5}, true, vc, "vc r5 r5 LSR r5", "vc_r5_r5_LSR_r5"},
    547      {{vc, r4, r4, LSL, r3}, true, vc, "vc r4 r4 LSL r3", "vc_r4_r4_LSL_r3"},
    548      {{vc, r2, r2, LSR, r4}, true, vc, "vc r2 r2 LSR r4", "vc_r2_r2_LSR_r4"},
    549      {{ge, r5, r5, ROR, r2}, true, ge, "ge r5 r5 ROR r2", "ge_r5_r5_ROR_r2"},
    550      {{cc, r6, r6, ASR, r7}, true, cc, "cc r6 r6 ASR r7", "cc_r6_r6_ASR_r7"},
    551      {{hi, r6, r6, ASR, r5}, true, hi, "hi r6 r6 ASR r5", "hi_r6_r6_ASR_r5"},
    552      {{vs, r0, r0, LSR, r1}, true, vs, "vs r0 r0 LSR r1", "vs_r0_r0_LSR_r1"},
    553      {{ls, r4, r4, LSL, r0}, true, ls, "ls r4 r4 LSL r0", "ls_r4_r4_LSL_r0"},
    554      {{mi, r6, r6, ASR, r4}, true, mi, "mi r6 r6 ASR r4", "mi_r6_r6_ASR_r4"},
    555      {{le, r6, r6, LSL, r4}, true, le, "le r6 r6 LSL r4", "le_r6_r6_LSL_r4"},
    556      {{cs, r6, r6, ASR, r6}, true, cs, "cs r6 r6 ASR r6", "cs_r6_r6_ASR_r6"},
    557      {{mi, r6, r6, ROR, r7}, true, mi, "mi r6 r6 ROR r7", "mi_r6_r6_ROR_r7"},
    558      {{hi, r5, r5, LSL, r4}, true, hi, "hi r5 r5 LSL r4", "hi_r5_r5_LSL_r4"},
    559      {{hi, r6, r6, LSL, r7}, true, hi, "hi r6 r6 LSL r7", "hi_r6_r6_LSL_r7"},
    560      {{cc, r6, r6, ROR, r5}, true, cc, "cc r6 r6 ROR r5", "cc_r6_r6_ROR_r5"},
    561      {{ge, r0, r0, ASR, r2}, true, ge, "ge r0 r0 ASR r2", "ge_r0_r0_ASR_r2"},
    562      {{eq, r1, r1, LSR, r6}, true, eq, "eq r1 r1 LSR r6", "eq_r1_r1_LSR_r6"},
    563      {{le, r1, r1, LSR, r7}, true, le, "le r1 r1 LSR r7", "le_r1_r1_LSR_r7"},
    564      {{ls, r4, r4, LSR, r5}, true, ls, "ls r4 r4 LSR r5", "ls_r4_r4_LSR_r5"},
    565      {{hi, r6, r6, LSR, r4}, true, hi, "hi r6 r6 LSR r4", "hi_r6_r6_LSR_r4"},
    566      {{cc, r1, r1, ROR, r6}, true, cc, "cc r1 r1 ROR r6", "cc_r1_r1_ROR_r6"},
    567      {{mi, r3, r3, ROR, r4}, true, mi, "mi r3 r3 ROR r4", "mi_r3_r3_ROR_r4"},
    568      {{vc, r2, r2, LSL, r4}, true, vc, "vc r2 r2 LSL r4", "vc_r2_r2_LSL_r4"},
    569      {{hi, r3, r3, LSL, r0}, true, hi, "hi r3 r3 LSL r0", "hi_r3_r3_LSL_r0"},
    570      {{vc, r6, r6, ASR, r1}, true, vc, "vc r6 r6 ASR r1", "vc_r6_r6_ASR_r1"},
    571      {{pl, r6, r6, LSR, r1}, true, pl, "pl r6 r6 LSR r1", "pl_r6_r6_LSR_r1"},
    572      {{hi, r1, r1, ASR, r4}, true, hi, "hi r1 r1 ASR r4", "hi_r1_r1_ASR_r4"},
    573      {{ne, r3, r3, ASR, r0}, true, ne, "ne r3 r3 ASR r0", "ne_r3_r3_ASR_r0"},
    574      {{gt, r4, r4, ROR, r2}, true, gt, "gt r4 r4 ROR r2", "gt_r4_r4_ROR_r2"},
    575      {{ls, r7, r7, ASR, r2}, true, ls, "ls r7 r7 ASR r2", "ls_r7_r7_ASR_r2"},
    576      {{lt, r2, r2, LSL, r3}, true, lt, "lt r2 r2 LSL r3", "lt_r2_r2_LSL_r3"},
    577      {{pl, r4, r4, LSL, r7}, true, pl, "pl r4 r4 LSL r7", "pl_r4_r4_LSL_r7"},
    578      {{ge, r0, r0, ASR, r0}, true, ge, "ge r0 r0 ASR r0", "ge_r0_r0_ASR_r0"},
    579      {{gt, r4, r4, ASR, r4}, true, gt, "gt r4 r4 ASR r4", "gt_r4_r4_ASR_r4"},
    580      {{eq, r7, r7, ROR, r3}, true, eq, "eq r7 r7 ROR r3", "eq_r7_r7_ROR_r3"},
    581      {{ne, r2, r2, LSL, r0}, true, ne, "ne r2 r2 LSL r0", "ne_r2_r2_LSL_r0"},
    582      {{ge, r1, r1, LSR, r3}, true, ge, "ge r1 r1 LSR r3", "ge_r1_r1_LSR_r3"},
    583      {{ge, r4, r4, ROR, r5}, true, ge, "ge r4 r4 ROR r5", "ge_r4_r4_ROR_r5"},
    584      {{ne, r6, r6, LSR, r6}, true, ne, "ne r6 r6 LSR r6", "ne_r6_r6_LSR_r6"},
    585      {{le, r1, r1, ASR, r0}, true, le, "le r1 r1 ASR r0", "le_r1_r1_ASR_r0"},
    586      {{ge, r6, r6, LSR, r6}, true, ge, "ge r6 r6 LSR r6", "ge_r6_r6_LSR_r6"},
    587      {{pl, r5, r5, ROR, r6}, true, pl, "pl r5 r5 ROR r6", "pl_r5_r5_ROR_r6"},
    588      {{lt, r2, r2, LSL, r2}, true, lt, "lt r2 r2 LSL r2", "lt_r2_r2_LSL_r2"},
    589      {{hi, r7, r7, LSL, r0}, true, hi, "hi r7 r7 LSL r0", "hi_r7_r7_LSL_r0"},
    590      {{lt, r6, r6, ASR, r4}, true, lt, "lt r6 r6 ASR r4", "lt_r6_r6_ASR_r4"},
    591      {{ge, r3, r3, LSR, r6}, true, ge, "ge r3 r3 LSR r6", "ge_r3_r3_LSR_r6"},
    592      {{eq, r4, r4, ASR, r0}, true, eq, "eq r4 r4 ASR r0", "eq_r4_r4_ASR_r0"},
    593      {{ne, r7, r7, ROR, r0}, true, ne, "ne r7 r7 ROR r0", "ne_r7_r7_ROR_r0"},
    594      {{pl, r5, r5, LSR, r1}, true, pl, "pl r5 r5 LSR r1", "pl_r5_r5_LSR_r1"},
    595      {{pl, r3, r3, ROR, r2}, true, pl, "pl r3 r3 ROR r2", "pl_r3_r3_ROR_r2"},
    596      {{vc, r1, r1, ASR, r0}, true, vc, "vc r1 r1 ASR r0", "vc_r1_r1_ASR_r0"},
    597      {{eq, r0, r0, ASR, r6}, true, eq, "eq r0 r0 ASR r6", "eq_r0_r0_ASR_r6"},
    598      {{le, r3, r3, ROR, r4}, true, le, "le r3 r3 ROR r4", "le_r3_r3_ROR_r4"},
    599      {{lt, r7, r7, LSR, r2}, true, lt, "lt r7 r7 LSR r2", "lt_r7_r7_LSR_r2"},
    600      {{ls, r5, r5, ASR, r1}, true, ls, "ls r5 r5 ASR r1", "ls_r5_r5_ASR_r1"},
    601      {{cc, r6, r6, ROR, r6}, true, cc, "cc r6 r6 ROR r6", "cc_r6_r6_ROR_r6"},
    602      {{vs, r1, r1, ROR, r2}, true, vs, "vs r1 r1 ROR r2", "vs_r1_r1_ROR_r2"},
    603      {{mi, r5, r5, LSL, r6}, true, mi, "mi r5 r5 LSL r6", "mi_r5_r5_LSL_r6"},
    604      {{le, r1, r1, ROR, r1}, true, le, "le r1 r1 ROR r1", "le_r1_r1_ROR_r1"},
    605      {{vs, r2, r2, LSL, r4}, true, vs, "vs r2 r2 LSL r4", "vs_r2_r2_LSL_r4"},
    606      {{mi, r7, r7, LSR, r1}, true, mi, "mi r7 r7 LSR r1", "mi_r7_r7_LSR_r1"},
    607      {{vc, r5, r5, ASR, r3}, true, vc, "vc r5 r5 ASR r3", "vc_r5_r5_ASR_r3"},
    608      {{pl, r6, r6, ASR, r6}, true, pl, "pl r6 r6 ASR r6", "pl_r6_r6_ASR_r6"},
    609      {{pl, r6, r6, ROR, r5}, true, pl, "pl r6 r6 ROR r5", "pl_r6_r6_ROR_r5"},
    610      {{cs, r6, r6, LSL, r4}, true, cs, "cs r6 r6 LSL r4", "cs_r6_r6_LSL_r4"},
    611      {{mi, r5, r5, LSR, r3}, true, mi, "mi r5 r5 LSR r3", "mi_r5_r5_LSR_r3"},
    612      {{lt, r5, r5, ROR, r0}, true, lt, "lt r5 r5 ROR r0", "lt_r5_r5_ROR_r0"},
    613      {{gt, r0, r0, LSR, r1}, true, gt, "gt r0 r0 LSR r1", "gt_r0_r0_LSR_r1"},
    614      {{cs, r7, r7, LSL, r6}, true, cs, "cs r7 r7 LSL r6", "cs_r7_r7_LSL_r6"},
    615      {{cs, r5, r5, LSL, r1}, true, cs, "cs r5 r5 LSL r1", "cs_r5_r5_LSL_r1"},
    616      {{ge, r5, r5, ROR, r4}, true, ge, "ge r5 r5 ROR r4", "ge_r5_r5_ROR_r4"},
    617      {{le, r2, r2, LSR, r5}, true, le, "le r2 r2 LSR r5", "le_r2_r2_LSR_r5"},
    618      {{lt, r1, r1, LSL, r1}, true, lt, "lt r1 r1 LSL r1", "lt_r1_r1_LSL_r1"},
    619      {{hi, r7, r7, LSR, r6}, true, hi, "hi r7 r7 LSR r6", "hi_r7_r7_LSR_r6"},
    620      {{cs, r5, r5, LSR, r3}, true, cs, "cs r5 r5 LSR r3", "cs_r5_r5_LSR_r3"},
    621      {{cc, r2, r2, ROR, r7}, true, cc, "cc r2 r2 ROR r7", "cc_r2_r2_ROR_r7"},
    622      {{gt, r1, r1, ASR, r3}, true, gt, "gt r1 r1 ASR r3", "gt_r1_r1_ASR_r3"},
    623      {{le, r2, r2, ASR, r2}, true, le, "le r2 r2 ASR r2", "le_r2_r2_ASR_r2"},
    624      {{pl, r0, r0, ASR, r2}, true, pl, "pl r0 r0 ASR r2", "pl_r0_r0_ASR_r2"},
    625      {{ls, r2, r2, LSR, r0}, true, ls, "ls r2 r2 LSR r0", "ls_r2_r2_LSR_r0"},
    626      {{mi, r6, r6, LSR, r2}, true, mi, "mi r6 r6 LSR r2", "mi_r6_r6_LSR_r2"},
    627      {{vs, r0, r0, ASR, r5}, true, vs, "vs r0 r0 ASR r5", "vs_r0_r0_ASR_r5"},
    628      {{lt, r4, r4, LSL, r2}, true, lt, "lt r4 r4 LSL r2", "lt_r4_r4_LSL_r2"},
    629      {{le, r3, r3, LSR, r7}, true, le, "le r3 r3 LSR r7", "le_r3_r3_LSR_r7"},
    630      {{vs, r1, r1, ROR, r1}, true, vs, "vs r1 r1 ROR r1", "vs_r1_r1_ROR_r1"},
    631      {{gt, r5, r5, ASR, r3}, true, gt, "gt r5 r5 ASR r3", "gt_r5_r5_ASR_r3"},
    632      {{le, r2, r2, ROR, r5}, true, le, "le r2 r2 ROR r5", "le_r2_r2_ROR_r5"},
    633      {{le, r2, r2, ASR, r4}, true, le, "le r2 r2 ASR r4", "le_r2_r2_ASR_r4"},
    634      {{ls, r1, r1, LSL, r6}, true, ls, "ls r1 r1 LSL r6", "ls_r1_r1_LSL_r6"},
    635      {{cc, r6, r6, LSR, r3}, true, cc, "cc r6 r6 LSR r3", "cc_r6_r6_LSR_r3"},
    636      {{ne, r5, r5, LSL, r0}, true, ne, "ne r5 r5 LSL r0", "ne_r5_r5_LSL_r0"},
    637      {{mi, r1, r1, LSL, r2}, true, mi, "mi r1 r1 LSL r2", "mi_r1_r1_LSL_r2"},
    638      {{ne, r2, r2, ASR, r3}, true, ne, "ne r2 r2 ASR r3", "ne_r2_r2_ASR_r3"},
    639      {{hi, r1, r1, ROR, r3}, true, hi, "hi r1 r1 ROR r3", "hi_r1_r1_ROR_r3"},
    640      {{lt, r7, r7, ROR, r0}, true, lt, "lt r7 r7 ROR r0", "lt_r7_r7_ROR_r0"},
    641      {{pl, r4, r4, LSL, r6}, true, pl, "pl r4 r4 LSL r6", "pl_r4_r4_LSL_r6"},
    642      {{mi, r0, r0, ASR, r4}, true, mi, "mi r0 r0 ASR r4", "mi_r0_r0_ASR_r4"},
    643      {{cc, r1, r1, ROR, r1}, true, cc, "cc r1 r1 ROR r1", "cc_r1_r1_ROR_r1"},
    644      {{vc, r1, r1, LSL, r3}, true, vc, "vc r1 r1 LSL r3", "vc_r1_r1_LSL_r3"},
    645      {{pl, r1, r1, ROR, r2}, true, pl, "pl r1 r1 ROR r2", "pl_r1_r1_ROR_r2"},
    646      {{mi, r3, r3, ASR, r1}, true, mi, "mi r3 r3 ASR r1", "mi_r3_r3_ASR_r1"},
    647      {{vs, r5, r5, ROR, r2}, true, vs, "vs r5 r5 ROR r2", "vs_r5_r5_ROR_r2"},
    648      {{mi, r0, r0, ROR, r2}, true, mi, "mi r0 r0 ROR r2", "mi_r0_r0_ROR_r2"},
    649      {{ne, r7, r7, LSR, r1}, true, ne, "ne r7 r7 LSR r1", "ne_r7_r7_LSR_r1"},
    650      {{ne, r0, r0, LSL, r2}, true, ne, "ne r0 r0 LSL r2", "ne_r0_r0_LSL_r2"},
    651      {{gt, r5, r5, ROR, r4}, true, gt, "gt r5 r5 ROR r4", "gt_r5_r5_ROR_r4"},
    652      {{ls, r4, r4, ROR, r2}, true, ls, "ls r4 r4 ROR r2", "ls_r4_r4_ROR_r2"},
    653      {{gt, r5, r5, LSL, r0}, true, gt, "gt r5 r5 LSL r0", "gt_r5_r5_LSL_r0"},
    654      {{pl, r0, r0, LSL, r7}, true, pl, "pl r0 r0 LSL r7", "pl_r0_r0_LSL_r7"},
    655      {{vc, r3, r3, ROR, r2}, true, vc, "vc r3 r3 ROR r2", "vc_r3_r3_ROR_r2"},
    656      {{vs, r4, r4, LSL, r0}, true, vs, "vs r4 r4 LSL r0", "vs_r4_r4_LSL_r0"},
    657      {{vc, r6, r6, ROR, r0}, true, vc, "vc r6 r6 ROR r0", "vc_r6_r6_ROR_r0"},
    658      {{cc, r7, r7, LSR, r4}, true, cc, "cc r7 r7 LSR r4", "cc_r7_r7_LSR_r4"},
    659      {{cs, r0, r0, ASR, r7}, true, cs, "cs r0 r0 ASR r7", "cs_r0_r0_ASR_r7"},
    660      {{lt, r3, r3, ASR, r5}, true, lt, "lt r3 r3 ASR r5", "lt_r3_r3_ASR_r5"},
    661      {{cs, r6, r6, ROR, r4}, true, cs, "cs r6 r6 ROR r4", "cs_r6_r6_ROR_r4"},
    662      {{vs, r7, r7, ASR, r2}, true, vs, "vs r7 r7 ASR r2", "vs_r7_r7_ASR_r2"},
    663      {{ls, r4, r4, LSL, r2}, true, ls, "ls r4 r4 LSL r2", "ls_r4_r4_LSL_r2"},
    664      {{cc, r6, r6, LSL, r4}, true, cc, "cc r6 r6 LSL r4", "cc_r6_r6_LSL_r4"},
    665      {{ne, r7, r7, LSR, r3}, true, ne, "ne r7 r7 LSR r3", "ne_r7_r7_LSR_r3"},
    666      {{lt, r1, r1, LSR, r0}, true, lt, "lt r1 r1 LSR r0", "lt_r1_r1_LSR_r0"},
    667      {{ne, r6, r6, LSR, r1}, true, ne, "ne r6 r6 LSR r1", "ne_r6_r6_LSR_r1"},
    668      {{mi, r4, r4, ROR, r4}, true, mi, "mi r4 r4 ROR r4", "mi_r4_r4_ROR_r4"},
    669      {{eq, r4, r4, ASR, r1}, true, eq, "eq r4 r4 ASR r1", "eq_r4_r4_ASR_r1"},
    670      {{vc, r0, r0, LSL, r4}, true, vc, "vc r0 r0 LSL r4", "vc_r0_r0_LSL_r4"},
    671      {{ls, r3, r3, ROR, r6}, true, ls, "ls r3 r3 ROR r6", "ls_r3_r3_ROR_r6"},
    672      {{pl, r3, r3, LSL, r1}, true, pl, "pl r3 r3 LSL r1", "pl_r3_r3_LSL_r1"},
    673      {{mi, r4, r4, ASR, r6}, true, mi, "mi r4 r4 ASR r6", "mi_r4_r4_ASR_r6"},
    674      {{ne, r5, r5, ROR, r1}, true, ne, "ne r5 r5 ROR r1", "ne_r5_r5_ROR_r1"},
    675      {{le, r4, r4, ASR, r5}, true, le, "le r4 r4 ASR r5", "le_r4_r4_ASR_r5"},
    676      {{gt, r0, r0, ASR, r1}, true, gt, "gt r0 r0 ASR r1", "gt_r0_r0_ASR_r1"},
    677      {{cc, r3, r3, LSR, r0}, true, cc, "cc r3 r3 LSR r0", "cc_r3_r3_LSR_r0"},
    678      {{ge, r1, r1, LSL, r5}, true, ge, "ge r1 r1 LSL r5", "ge_r1_r1_LSL_r5"},
    679      {{gt, r4, r4, LSR, r4}, true, gt, "gt r4 r4 LSR r4", "gt_r4_r4_LSR_r4"},
    680      {{mi, r6, r6, ROR, r4}, true, mi, "mi r6 r6 ROR r4", "mi_r6_r6_ROR_r4"},
    681      {{pl, r4, r4, LSR, r7}, true, pl, "pl r4 r4 LSR r7", "pl_r4_r4_LSR_r7"},
    682      {{hi, r7, r7, ASR, r6}, true, hi, "hi r7 r7 ASR r6", "hi_r7_r7_ASR_r6"},
    683      {{vc, r1, r1, ROR, r4}, true, vc, "vc r1 r1 ROR r4", "vc_r1_r1_ROR_r4"},
    684      {{le, r4, r4, LSR, r7}, true, le, "le r4 r4 LSR r7", "le_r4_r4_LSR_r7"},
    685      {{le, r2, r2, ASR, r6}, true, le, "le r2 r2 ASR r6", "le_r2_r2_ASR_r6"},
    686      {{le, r4, r4, LSL, r2}, true, le, "le r4 r4 LSL r2", "le_r4_r4_LSL_r2"},
    687      {{eq, r7, r7, ASR, r4}, true, eq, "eq r7 r7 ASR r4", "eq_r7_r7_ASR_r4"},
    688      {{ls, r2, r2, LSL, r6}, true, ls, "ls r2 r2 LSL r6", "ls_r2_r2_LSL_r6"},
    689      {{pl, r3, r3, LSL, r6}, true, pl, "pl r3 r3 LSL r6", "pl_r3_r3_LSL_r6"},
    690      {{cc, r7, r7, LSR, r5}, true, cc, "cc r7 r7 LSR r5", "cc_r7_r7_LSR_r5"},
    691      {{cc, r1, r1, LSL, r7}, true, cc, "cc r1 r1 LSL r7", "cc_r1_r1_LSL_r7"},
    692      {{gt, r5, r5, LSR, r4}, true, gt, "gt r5 r5 LSR r4", "gt_r5_r5_LSR_r4"},
    693      {{ne, r2, r2, LSL, r4}, true, ne, "ne r2 r2 LSL r4", "ne_r2_r2_LSL_r4"},
    694      {{ge, r2, r2, ASR, r7}, true, ge, "ge r2 r2 ASR r7", "ge_r2_r2_ASR_r7"},
    695      {{gt, r2, r2, ROR, r7}, true, gt, "gt r2 r2 ROR r7", "gt_r2_r2_ROR_r7"},
    696      {{gt, r6, r6, ROR, r5}, true, gt, "gt r6 r6 ROR r5", "gt_r6_r6_ROR_r5"},
    697      {{lt, r4, r4, ASR, r3}, true, lt, "lt r4 r4 ASR r3", "lt_r4_r4_ASR_r3"},
    698      {{vc, r1, r1, LSR, r7}, true, vc, "vc r1 r1 LSR r7", "vc_r1_r1_LSR_r7"},
    699      {{ne, r2, r2, LSR, r7}, true, ne, "ne r2 r2 LSR r7", "ne_r2_r2_LSR_r7"},
    700      {{ls, r0, r0, LSR, r5}, true, ls, "ls r0 r0 LSR r5", "ls_r0_r0_LSR_r5"},
    701      {{cs, r3, r3, ASR, r1}, true, cs, "cs r3 r3 ASR r1", "cs_r3_r3_ASR_r1"},
    702      {{gt, r2, r2, ROR, r1}, true, gt, "gt r2 r2 ROR r1", "gt_r2_r2_ROR_r1"},
    703      {{eq, r0, r0, LSL, r3}, true, eq, "eq r0 r0 LSL r3", "eq_r0_r0_LSL_r3"},
    704      {{ls, r5, r5, ASR, r5}, true, ls, "ls r5 r5 ASR r5", "ls_r5_r5_ASR_r5"},
    705      {{cs, r5, r5, ROR, r5}, true, cs, "cs r5 r5 ROR r5", "cs_r5_r5_ROR_r5"},
    706      {{gt, r3, r3, ROR, r7}, true, gt, "gt r3 r3 ROR r7", "gt_r3_r3_ROR_r7"},
    707      {{vc, r3, r3, LSL, r6}, true, vc, "vc r3 r3 LSL r6", "vc_r3_r3_LSL_r6"},
    708      {{ge, r3, r3, LSR, r1}, true, ge, "ge r3 r3 LSR r1", "ge_r3_r3_LSR_r1"},
    709      {{cc, r2, r2, ROR, r3}, true, cc, "cc r2 r2 ROR r3", "cc_r2_r2_ROR_r3"},
    710      {{mi, r5, r5, ROR, r7}, true, mi, "mi r5 r5 ROR r7", "mi_r5_r5_ROR_r7"},
    711      {{eq, r6, r6, ASR, r3}, true, eq, "eq r6 r6 ASR r3", "eq_r6_r6_ASR_r3"},
    712      {{ne, r2, r2, LSL, r1}, true, ne, "ne r2 r2 LSL r1", "ne_r2_r2_LSL_r1"},
    713      {{mi, r5, r5, ROR, r6}, true, mi, "mi r5 r5 ROR r6", "mi_r5_r5_ROR_r6"},
    714      {{vc, r2, r2, ROR, r2}, true, vc, "vc r2 r2 ROR r2", "vc_r2_r2_ROR_r2"},
    715      {{pl, r7, r7, LSR, r1}, true, pl, "pl r7 r7 LSR r1", "pl_r7_r7_LSR_r1"},
    716      {{eq, r7, r7, ROR, r4}, true, eq, "eq r7 r7 ROR r4", "eq_r7_r7_ROR_r4"},
    717      {{eq, r1, r1, ASR, r4}, true, eq, "eq r1 r1 ASR r4", "eq_r1_r1_ASR_r4"},
    718      {{mi, r5, r5, LSL, r2}, true, mi, "mi r5 r5 LSL r2", "mi_r5_r5_LSL_r2"},
    719      {{pl, r0, r0, LSL, r4}, true, pl, "pl r0 r0 LSL r4", "pl_r0_r0_LSL_r4"},
    720      {{hi, r4, r4, LSR, r2}, true, hi, "hi r4 r4 LSR r2", "hi_r4_r4_LSR_r2"},
    721      {{lt, r5, r5, LSL, r6}, true, lt, "lt r5 r5 LSL r6", "lt_r5_r5_LSL_r6"},
    722      {{lt, r6, r6, ASR, r5}, true, lt, "lt r6 r6 ASR r5", "lt_r6_r6_ASR_r5"},
    723      {{eq, r1, r1, ASR, r0}, true, eq, "eq r1 r1 ASR r0", "eq_r1_r1_ASR_r0"},
    724      {{mi, r6, r6, ASR, r3}, true, mi, "mi r6 r6 ASR r3", "mi_r6_r6_ASR_r3"},
    725      {{lt, r0, r0, LSR, r4}, true, lt, "lt r0 r0 LSR r4", "lt_r0_r0_LSR_r4"},
    726      {{lt, r5, r5, ROR, r4}, true, lt, "lt r5 r5 ROR r4", "lt_r5_r5_ROR_r4"},
    727      {{ne, r1, r1, ASR, r7}, true, ne, "ne r1 r1 ASR r7", "ne_r1_r1_ASR_r7"},
    728      {{gt, r3, r3, LSL, r4}, true, gt, "gt r3 r3 LSL r4", "gt_r3_r3_LSL_r4"},
    729      {{le, r3, r3, ROR, r6}, true, le, "le r3 r3 ROR r6", "le_r3_r3_ROR_r6"},
    730      {{ne, r5, r5, ASR, r7}, true, ne, "ne r5 r5 ASR r7", "ne_r5_r5_ASR_r7"},
    731      {{hi, r5, r5, ROR, r6}, true, hi, "hi r5 r5 ROR r6", "hi_r5_r5_ROR_r6"},
    732      {{vs, r3, r3, LSR, r2}, true, vs, "vs r3 r3 LSR r2", "vs_r3_r3_LSR_r2"},
    733      {{ls, r1, r1, LSR, r1}, true, ls, "ls r1 r1 LSR r1", "ls_r1_r1_LSR_r1"},
    734      {{ls, r4, r4, LSR, r2}, true, ls, "ls r4 r4 LSR r2", "ls_r4_r4_LSR_r2"},
    735      {{gt, r7, r7, LSL, r1}, true, gt, "gt r7 r7 LSL r1", "gt_r7_r7_LSL_r1"},
    736      {{ge, r0, r0, ROR, r3}, true, ge, "ge r0 r0 ROR r3", "ge_r0_r0_ROR_r3"},
    737      {{gt, r7, r7, ASR, r4}, true, gt, "gt r7 r7 ASR r4", "gt_r7_r7_ASR_r4"},
    738      {{ne, r0, r0, LSL, r7}, true, ne, "ne r0 r0 LSL r7", "ne_r0_r0_LSL_r7"},
    739      {{ge, r2, r2, ROR, r1}, true, ge, "ge r2 r2 ROR r1", "ge_r2_r2_ROR_r1"},
    740      {{ge, r5, r5, LSR, r3}, true, ge, "ge r5 r5 LSR r3", "ge_r5_r5_LSR_r3"},
    741      {{ls, r2, r2, ASR, r0}, true, ls, "ls r2 r2 ASR r0", "ls_r2_r2_ASR_r0"},
    742      {{le, r5, r5, ASR, r7}, true, le, "le r5 r5 ASR r7", "le_r5_r5_ASR_r7"},
    743      {{le, r0, r0, LSR, r6}, true, le, "le r0 r0 LSR r6", "le_r0_r0_LSR_r6"},
    744      {{ne, r6, r6, ROR, r1}, true, ne, "ne r6 r6 ROR r1", "ne_r6_r6_ROR_r1"},
    745      {{vs, r2, r2, ASR, r0}, true, vs, "vs r2 r2 ASR r0", "vs_r2_r2_ASR_r0"},
    746      {{mi, r0, r0, LSR, r1}, true, mi, "mi r0 r0 LSR r1", "mi_r0_r0_LSR_r1"},
    747      {{cs, r1, r1, LSL, r5}, true, cs, "cs r1 r1 LSL r5", "cs_r1_r1_LSL_r5"},
    748      {{vc, r3, r3, ROR, r7}, true, vc, "vc r3 r3 ROR r7", "vc_r3_r3_ROR_r7"},
    749      {{gt, r6, r6, ASR, r0}, true, gt, "gt r6 r6 ASR r0", "gt_r6_r6_ASR_r0"},
    750      {{le, r2, r2, LSR, r3}, true, le, "le r2 r2 LSR r3", "le_r2_r2_LSR_r3"},
    751      {{lt, r4, r4, LSR, r3}, true, lt, "lt r4 r4 LSR r3", "lt_r4_r4_LSR_r3"},
    752      {{gt, r1, r1, ROR, r6}, true, gt, "gt r1 r1 ROR r6", "gt_r1_r1_ROR_r6"},
    753      {{ls, r6, r6, LSR, r4}, true, ls, "ls r6 r6 LSR r4", "ls_r6_r6_LSR_r4"},
    754      {{vc, r5, r5, ROR, r0}, true, vc, "vc r5 r5 ROR r0", "vc_r5_r5_ROR_r0"},
    755      {{ge, r2, r2, LSR, r2}, true, ge, "ge r2 r2 LSR r2", "ge_r2_r2_LSR_r2"},
    756      {{ls, r0, r0, LSR, r3}, true, ls, "ls r0 r0 LSR r3", "ls_r0_r0_LSR_r3"},
    757      {{gt, r6, r6, ASR, r6}, true, gt, "gt r6 r6 ASR r6", "gt_r6_r6_ASR_r6"},
    758      {{ne, r0, r0, LSL, r3}, true, ne, "ne r0 r0 LSL r3", "ne_r0_r0_LSL_r3"},
    759      {{mi, r0, r0, ASR, r1}, true, mi, "mi r0 r0 ASR r1", "mi_r0_r0_ASR_r1"},
    760      {{ge, r6, r6, ASR, r6}, true, ge, "ge r6 r6 ASR r6", "ge_r6_r6_ASR_r6"},
    761      {{pl, r2, r2, ASR, r2}, true, pl, "pl r2 r2 ASR r2", "pl_r2_r2_ASR_r2"},
    762      {{eq, r5, r5, LSL, r2}, true, eq, "eq r5 r5 LSL r2", "eq_r5_r5_LSL_r2"},
    763      {{vc, r2, r2, LSL, r3}, true, vc, "vc r2 r2 LSL r3", "vc_r2_r2_LSL_r3"},
    764      {{ls, r1, r1, LSL, r2}, true, ls, "ls r1 r1 LSL r2", "ls_r1_r1_LSL_r2"},
    765      {{vc, r3, r3, LSR, r0}, true, vc, "vc r3 r3 LSR r0", "vc_r3_r3_LSR_r0"},
    766      {{vc, r4, r4, ASR, r5}, true, vc, "vc r4 r4 ASR r5", "vc_r4_r4_ASR_r5"},
    767      {{ls, r2, r2, ASR, r1}, true, ls, "ls r2 r2 ASR r1", "ls_r2_r2_ASR_r1"},
    768      {{ls, r3, r3, LSL, r6}, true, ls, "ls r3 r3 LSL r6", "ls_r3_r3_LSL_r6"},
    769      {{vs, r6, r6, ROR, r5}, true, vs, "vs r6 r6 ROR r5", "vs_r6_r6_ROR_r5"},
    770      {{eq, r2, r2, LSR, r6}, true, eq, "eq r2 r2 LSR r6", "eq_r2_r2_LSR_r6"},
    771      {{hi, r3, r3, LSR, r5}, true, hi, "hi r3 r3 LSR r5", "hi_r3_r3_LSR_r5"},
    772      {{eq, r2, r2, ASR, r6}, true, eq, "eq r2 r2 ASR r6", "eq_r2_r2_ASR_r6"},
    773      {{mi, r2, r2, ASR, r4}, true, mi, "mi r2 r2 ASR r4", "mi_r2_r2_ASR_r4"},
    774      {{le, r6, r6, ROR, r6}, true, le, "le r6 r6 ROR r6", "le_r6_r6_ROR_r6"},
    775      {{eq, r0, r0, ROR, r7}, true, eq, "eq r0 r0 ROR r7", "eq_r0_r0_ROR_r7"},
    776      {{vs, r4, r4, LSL, r2}, true, vs, "vs r4 r4 LSL r2", "vs_r4_r4_LSL_r2"},
    777      {{vc, r2, r2, LSR, r5}, true, vc, "vc r2 r2 LSR r5", "vc_r2_r2_LSR_r5"},
    778      {{cc, r0, r0, ROR, r1}, true, cc, "cc r0 r0 ROR r1", "cc_r0_r0_ROR_r1"},
    779      {{lt, r5, r5, ASR, r0}, true, lt, "lt r5 r5 ASR r0", "lt_r5_r5_ASR_r0"},
    780      {{mi, r0, r0, LSL, r5}, true, mi, "mi r0 r0 LSL r5", "mi_r0_r0_LSL_r5"},
    781      {{eq, r6, r6, LSR, r1}, true, eq, "eq r6 r6 LSR r1", "eq_r6_r6_LSR_r1"},
    782      {{gt, r3, r3, ROR, r3}, true, gt, "gt r3 r3 ROR r3", "gt_r3_r3_ROR_r3"},
    783      {{gt, r6, r6, LSR, r7}, true, gt, "gt r6 r6 LSR r7", "gt_r6_r6_LSR_r7"},
    784      {{ne, r3, r3, LSL, r7}, true, ne, "ne r3 r3 LSL r7", "ne_r3_r3_LSL_r7"},
    785      {{cs, r2, r2, ASR, r4}, true, cs, "cs r2 r2 ASR r4", "cs_r2_r2_ASR_r4"},
    786      {{ge, r6, r6, ASR, r7}, true, ge, "ge r6 r6 ASR r7", "ge_r6_r6_ASR_r7"},
    787      {{hi, r7, r7, ASR, r0}, true, hi, "hi r7 r7 ASR r0", "hi_r7_r7_ASR_r0"},
    788      {{le, r2, r2, ASR, r1}, true, le, "le r2 r2 ASR r1", "le_r2_r2_ASR_r1"},
    789      {{vs, r6, r6, LSR, r5}, true, vs, "vs r6 r6 LSR r5", "vs_r6_r6_LSR_r5"},
    790      {{cs, r3, r3, ROR, r5}, true, cs, "cs r3 r3 ROR r5", "cs_r3_r3_ROR_r5"},
    791      {{le, r7, r7, LSR, r3}, true, le, "le r7 r7 LSR r3", "le_r7_r7_LSR_r3"},
    792      {{vc, r2, r2, ASR, r0}, true, vc, "vc r2 r2 ASR r0", "vc_r2_r2_ASR_r0"},
    793      {{ne, r7, r7, LSL, r3}, true, ne, "ne r7 r7 LSL r3", "ne_r7_r7_LSL_r3"},
    794      {{vs, r6, r6, ASR, r1}, true, vs, "vs r6 r6 ASR r1", "vs_r6_r6_ASR_r1"},
    795      {{cs, r4, r4, LSL, r0}, true, cs, "cs r4 r4 LSL r0", "cs_r4_r4_LSL_r0"},
    796      {{hi, r3, r3, ASR, r7}, true, hi, "hi r3 r3 ASR r7", "hi_r3_r3_ASR_r7"},
    797      {{eq, r5, r5, ASR, r2}, true, eq, "eq r5 r5 ASR r2", "eq_r5_r5_ASR_r2"},
    798      {{ge, r0, r0, ASR, r1}, true, ge, "ge r0 r0 ASR r1", "ge_r0_r0_ASR_r1"},
    799      {{cs, r1, r1, LSR, r0}, true, cs, "cs r1 r1 LSR r0", "cs_r1_r1_LSR_r0"},
    800      {{ne, r7, r7, LSL, r1}, true, ne, "ne r7 r7 LSL r1", "ne_r7_r7_LSL_r1"},
    801      {{cc, r1, r1, LSR, r0}, true, cc, "cc r1 r1 LSR r0", "cc_r1_r1_LSR_r0"},
    802      {{cs, r0, r0, LSL, r3}, true, cs, "cs r0 r0 LSL r3", "cs_r0_r0_LSL_r3"},
    803      {{hi, r3, r3, ASR, r6}, true, hi, "hi r3 r3 ASR r6", "hi_r3_r3_ASR_r6"},
    804      {{cs, r4, r4, ROR, r1}, true, cs, "cs r4 r4 ROR r1", "cs_r4_r4_ROR_r1"},
    805      {{eq, r0, r0, LSL, r6}, true, eq, "eq r0 r0 LSL r6", "eq_r0_r0_LSL_r6"},
    806      {{vc, r3, r3, ROR, r3}, true, vc, "vc r3 r3 ROR r3", "vc_r3_r3_ROR_r3"},
    807      {{le, r0, r0, ASR, r0}, true, le, "le r0 r0 ASR r0", "le_r0_r0_ASR_r0"},
    808      {{vs, r4, r4, LSR, r5}, true, vs, "vs r4 r4 LSR r5", "vs_r4_r4_LSR_r5"},
    809      {{ne, r4, r4, ROR, r2}, true, ne, "ne r4 r4 ROR r2", "ne_r4_r4_ROR_r2"},
    810      {{gt, r5, r5, ASR, r6}, true, gt, "gt r5 r5 ASR r6", "gt_r5_r5_ASR_r6"},
    811      {{hi, r7, r7, LSR, r0}, true, hi, "hi r7 r7 LSR r0", "hi_r7_r7_LSR_r0"},
    812      {{vc, r1, r1, ROR, r3}, true, vc, "vc r1 r1 ROR r3", "vc_r1_r1_ROR_r3"},
    813      {{pl, r0, r0, ASR, r4}, true, pl, "pl r0 r0 ASR r4", "pl_r0_r0_ASR_r4"},
    814      {{mi, r1, r1, LSL, r3}, true, mi, "mi r1 r1 LSL r3", "mi_r1_r1_LSL_r3"},
    815      {{pl, r2, r2, ASR, r0}, true, pl, "pl r2 r2 ASR r0", "pl_r2_r2_ASR_r0"},
    816      {{mi, r2, r2, ROR, r5}, true, mi, "mi r2 r2 ROR r5", "mi_r2_r2_ROR_r5"},
    817      {{vs, r1, r1, ROR, r4}, true, vs, "vs r1 r1 ROR r4", "vs_r1_r1_ROR_r4"},
    818      {{hi, r6, r6, ROR, r0}, true, hi, "hi r6 r6 ROR r0", "hi_r6_r6_ROR_r0"},
    819      {{cc, r7, r7, ASR, r7}, true, cc, "cc r7 r7 ASR r7", "cc_r7_r7_ASR_r7"},
    820      {{ls, r3, r3, ROR, r4}, true, ls, "ls r3 r3 ROR r4", "ls_r3_r3_ROR_r4"},
    821      {{hi, r0, r0, LSL, r0}, true, hi, "hi r0 r0 LSL r0", "hi_r0_r0_LSL_r0"},
    822      {{hi, r3, r3, LSL, r6}, true, hi, "hi r3 r3 LSL r6", "hi_r3_r3_LSL_r6"},
    823      {{le, r6, r6, ROR, r5}, true, le, "le r6 r6 ROR r5", "le_r6_r6_ROR_r5"},
    824      {{vs, r5, r5, ASR, r7}, true, vs, "vs r5 r5 ASR r7", "vs_r5_r5_ASR_r7"},
    825      {{pl, r5, r5, ROR, r5}, true, pl, "pl r5 r5 ROR r5", "pl_r5_r5_ROR_r5"},
    826      {{vc, r0, r0, LSR, r6}, true, vc, "vc r0 r0 LSR r6", "vc_r0_r0_LSR_r6"},
    827      {{ne, r2, r2, LSR, r3}, true, ne, "ne r2 r2 LSR r3", "ne_r2_r2_LSR_r3"},
    828      {{ls, r7, r7, ROR, r1}, true, ls, "ls r7 r7 ROR r1", "ls_r7_r7_ROR_r1"},
    829      {{ls, r2, r2, ROR, r3}, true, ls, "ls r2 r2 ROR r3", "ls_r2_r2_ROR_r3"},
    830      {{gt, r4, r4, LSR, r7}, true, gt, "gt r4 r4 LSR r7", "gt_r4_r4_LSR_r7"},
    831      {{hi, r4, r4, ASR, r4}, true, hi, "hi r4 r4 ASR r4", "hi_r4_r4_ASR_r4"},
    832      {{hi, r6, r6, ROR, r3}, true, hi, "hi r6 r6 ROR r3", "hi_r6_r6_ROR_r3"},
    833      {{vs, r5, r5, LSL, r3}, true, vs, "vs r5 r5 LSL r3", "vs_r5_r5_LSL_r3"},
    834      {{cs, r0, r0, LSR, r3}, true, cs, "cs r0 r0 LSR r3", "cs_r0_r0_LSR_r3"},
    835      {{cc, r4, r4, LSL, r7}, true, cc, "cc r4 r4 LSL r7", "cc_r4_r4_LSL_r7"},
    836      {{eq, r4, r4, ROR, r1}, true, eq, "eq r4 r4 ROR r1", "eq_r4_r4_ROR_r1"},
    837      {{vs, r7, r7, ASR, r3}, true, vs, "vs r7 r7 ASR r3", "vs_r7_r7_ASR_r3"},
    838      {{le, r5, r5, LSR, r7}, true, le, "le r5 r5 LSR r7", "le_r5_r5_LSR_r7"},
    839      {{lt, r7, r7, LSL, r1}, true, lt, "lt r7 r7 LSL r1", "lt_r7_r7_LSL_r1"},
    840      {{gt, r6, r6, ROR, r2}, true, gt, "gt r6 r6 ROR r2", "gt_r6_r6_ROR_r2"},
    841      {{vc, r0, r0, ASR, r0}, true, vc, "vc r0 r0 ASR r0", "vc_r0_r0_ASR_r0"},
    842      {{ls, r4, r4, LSR, r4}, true, ls, "ls r4 r4 LSR r4", "ls_r4_r4_LSR_r4"},
    843      {{hi, r4, r4, LSL, r5}, true, hi, "hi r4 r4 LSL r5", "hi_r4_r4_LSL_r5"},
    844      {{hi, r6, r6, LSR, r0}, true, hi, "hi r6 r6 LSR r0", "hi_r6_r6_LSR_r0"},
    845      {{ge, r3, r3, ASR, r0}, true, ge, "ge r3 r3 ASR r0", "ge_r3_r3_ASR_r0"},
    846      {{vs, r7, r7, ASR, r7}, true, vs, "vs r7 r7 ASR r7", "vs_r7_r7_ASR_r7"},
    847      {{hi, r1, r1, LSL, r3}, true, hi, "hi r1 r1 LSL r3", "hi_r1_r1_LSL_r3"},
    848      {{ls, r4, r4, ASR, r3}, true, ls, "ls r4 r4 ASR r3", "ls_r4_r4_ASR_r3"},
    849      {{eq, r7, r7, ASR, r6}, true, eq, "eq r7 r7 ASR r6", "eq_r7_r7_ASR_r6"},
    850      {{cc, r1, r1, ASR, r7}, true, cc, "cc r1 r1 ASR r7", "cc_r1_r1_ASR_r7"},
    851      {{hi, r4, r4, ROR, r1}, true, hi, "hi r4 r4 ROR r1", "hi_r4_r4_ROR_r1"},
    852      {{gt, r0, r0, ROR, r0}, true, gt, "gt r0 r0 ROR r0", "gt_r0_r0_ROR_r0"},
    853      {{hi, r0, r0, LSR, r3}, true, hi, "hi r0 r0 LSR r3", "hi_r0_r0_LSR_r3"},
    854      {{cc, r0, r0, LSL, r3}, true, cc, "cc r0 r0 LSL r3", "cc_r0_r0_LSL_r3"},
    855      {{ls, r6, r6, LSL, r6}, true, ls, "ls r6 r6 LSL r6", "ls_r6_r6_LSL_r6"},
    856      {{cs, r2, r2, LSR, r5}, true, cs, "cs r2 r2 LSR r5", "cs_r2_r2_LSR_r5"},
    857      {{le, r5, r5, LSL, r3}, true, le, "le r5 r5 LSL r3", "le_r5_r5_LSL_r3"},
    858      {{ge, r1, r1, LSR, r7}, true, ge, "ge r1 r1 LSR r7", "ge_r1_r1_LSR_r7"},
    859      {{cs, r4, r4, ASR, r7}, true, cs, "cs r4 r4 ASR r7", "cs_r4_r4_ASR_r7"},
    860      {{lt, r1, r1, ASR, r7}, true, lt, "lt r1 r1 ASR r7", "lt_r1_r1_ASR_r7"},
    861      {{mi, r4, r4, LSR, r5}, true, mi, "mi r4 r4 LSR r5", "mi_r4_r4_LSR_r5"},
    862      {{cc, r6, r6, ROR, r0}, true, cc, "cc r6 r6 ROR r0", "cc_r6_r6_ROR_r0"},
    863      {{mi, r4, r4, LSR, r1}, true, mi, "mi r4 r4 LSR r1", "mi_r4_r4_LSR_r1"},
    864      {{gt, r1, r1, ROR, r5}, true, gt, "gt r1 r1 ROR r5", "gt_r1_r1_ROR_r5"},
    865      {{vs, r2, r2, LSR, r2}, true, vs, "vs r2 r2 LSR r2", "vs_r2_r2_LSR_r2"},
    866      {{cs, r3, r3, LSL, r4}, true, cs, "cs r3 r3 LSL r4", "cs_r3_r3_LSL_r4"},
    867      {{le, r5, r5, ASR, r5}, true, le, "le r5 r5 ASR r5", "le_r5_r5_ASR_r5"},
    868      {{vs, r1, r1, LSR, r0}, true, vs, "vs r1 r1 LSR r0", "vs_r1_r1_LSR_r0"},
    869      {{le, r7, r7, LSL, r5}, true, le, "le r7 r7 LSL r5", "le_r7_r7_LSL_r5"},
    870      {{ne, r6, r6, LSR, r4}, true, ne, "ne r6 r6 LSR r4", "ne_r6_r6_LSR_r4"},
    871      {{le, r0, r0, ASR, r4}, true, le, "le r0 r0 ASR r4", "le_r0_r0_ASR_r4"},
    872      {{ls, r4, r4, ASR, r1}, true, ls, "ls r4 r4 ASR r1", "ls_r4_r4_ASR_r1"},
    873      {{gt, r1, r1, ASR, r6}, true, gt, "gt r1 r1 ASR r6", "gt_r1_r1_ASR_r6"},
    874      {{cs, r6, r6, LSL, r2}, true, cs, "cs r6 r6 LSL r2", "cs_r6_r6_LSL_r2"},
    875      {{cc, r2, r2, ROR, r0}, true, cc, "cc r2 r2 ROR r0", "cc_r2_r2_ROR_r0"},
    876      {{cc, r7, r7, ASR, r1}, true, cc, "cc r7 r7 ASR r1", "cc_r7_r7_ASR_r1"},
    877      {{ls, r6, r6, ASR, r0}, true, ls, "ls r6 r6 ASR r0", "ls_r6_r6_ASR_r0"},
    878      {{ls, r1, r1, LSL, r5}, true, ls, "ls r1 r1 LSL r5", "ls_r1_r1_LSL_r5"},
    879      {{le, r0, r0, LSR, r5}, true, le, "le r0 r0 LSR r5", "le_r0_r0_LSR_r5"},
    880      {{vs, r3, r3, LSR, r5}, true, vs, "vs r3 r3 LSR r5", "vs_r3_r3_LSR_r5"},
    881      {{vs, r3, r3, LSL, r1}, true, vs, "vs r3 r3 LSL r1", "vs_r3_r3_LSL_r1"},
    882      {{cc, r3, r3, ROR, r3}, true, cc, "cc r3 r3 ROR r3", "cc_r3_r3_ROR_r3"},
    883      {{le, r4, r4, ASR, r4}, true, le, "le r4 r4 ASR r4", "le_r4_r4_ASR_r4"},
    884      {{vs, r4, r4, ASR, r1}, true, vs, "vs r4 r4 ASR r1", "vs_r4_r4_ASR_r1"},
    885      {{pl, r2, r2, LSR, r0}, true, pl, "pl r2 r2 LSR r0", "pl_r2_r2_LSR_r0"},
    886      {{vs, r1, r1, LSL, r0}, true, vs, "vs r1 r1 LSL r0", "vs_r1_r1_LSL_r0"},
    887      {{cs, r6, r6, ASR, r7}, true, cs, "cs r6 r6 ASR r7", "cs_r6_r6_ASR_r7"},
    888      {{cs, r3, r3, ROR, r2}, true, cs, "cs r3 r3 ROR r2", "cs_r3_r3_ROR_r2"},
    889      {{mi, r4, r4, ROR, r7}, true, mi, "mi r4 r4 ROR r7", "mi_r4_r4_ROR_r7"},
    890      {{eq, r5, r5, ROR, r0}, true, eq, "eq r5 r5 ROR r0", "eq_r5_r5_ROR_r0"},
    891      {{cs, r3, r3, ROR, r0}, true, cs, "cs r3 r3 ROR r0", "cs_r3_r3_ROR_r0"},
    892      {{mi, r6, r6, LSR, r4}, true, mi, "mi r6 r6 LSR r4", "mi_r6_r6_LSR_r4"},
    893      {{hi, r2, r2, LSL, r4}, true, hi, "hi r2 r2 LSL r4", "hi_r2_r2_LSL_r4"},
    894      {{ge, r7, r7, LSR, r3}, true, ge, "ge r7 r7 LSR r3", "ge_r7_r7_LSR_r3"},
    895      {{mi, r0, r0, LSR, r6}, true, mi, "mi r0 r0 LSR r6", "mi_r0_r0_LSR_r6"},
    896      {{ne, r0, r0, ASR, r1}, true, ne, "ne r0 r0 ASR r1", "ne_r0_r0_ASR_r1"},
    897      {{ls, r0, r0, ROR, r3}, true, ls, "ls r0 r0 ROR r3", "ls_r0_r0_ROR_r3"},
    898      {{le, r1, r1, LSR, r4}, true, le, "le r1 r1 LSR r4", "le_r1_r1_LSR_r4"},
    899      {{ls, r3, r3, ROR, r5}, true, ls, "ls r3 r3 ROR r5", "ls_r3_r3_ROR_r5"},
    900      {{lt, r6, r6, ASR, r6}, true, lt, "lt r6 r6 ASR r6", "lt_r6_r6_ASR_r6"},
    901      {{cs, r5, r5, ASR, r3}, true, cs, "cs r5 r5 ASR r3", "cs_r5_r5_ASR_r3"},
    902      {{ls, r0, r0, LSR, r0}, true, ls, "ls r0 r0 LSR r0", "ls_r0_r0_LSR_r0"},
    903      {{ls, r5, r5, ASR, r4}, true, ls, "ls r5 r5 ASR r4", "ls_r5_r5_ASR_r4"},
    904      {{gt, r2, r2, ROR, r3}, true, gt, "gt r2 r2 ROR r3", "gt_r2_r2_ROR_r3"},
    905      {{hi, r4, r4, ASR, r3}, true, hi, "hi r4 r4 ASR r3", "hi_r4_r4_ASR_r3"},
    906      {{lt, r2, r2, ROR, r0}, true, lt, "lt r2 r2 ROR r0", "lt_r2_r2_ROR_r0"},
    907      {{ge, r0, r0, LSR, r3}, true, ge, "ge r0 r0 LSR r3", "ge_r0_r0_LSR_r3"},
    908      {{pl, r1, r1, ROR, r7}, true, pl, "pl r1 r1 ROR r7", "pl_r1_r1_ROR_r7"},
    909      {{gt, r0, r0, ROR, r5}, true, gt, "gt r0 r0 ROR r5", "gt_r0_r0_ROR_r5"},
    910      {{ls, r5, r5, LSR, r5}, true, ls, "ls r5 r5 LSR r5", "ls_r5_r5_LSR_r5"},
    911      {{cs, r3, r3, LSL, r5}, true, cs, "cs r3 r3 LSL r5", "cs_r3_r3_LSL_r5"},
    912      {{cs, r1, r1, LSL, r2}, true, cs, "cs r1 r1 LSL r2", "cs_r1_r1_LSL_r2"},
    913      {{ge, r5, r5, LSL, r3}, true, ge, "ge r5 r5 LSL r3", "ge_r5_r5_LSL_r3"},
    914      {{ls, r6, r6, ASR, r2}, true, ls, "ls r6 r6 ASR r2", "ls_r6_r6_ASR_r2"},
    915      {{pl, r7, r7, LSR, r7}, true, pl, "pl r7 r7 LSR r7", "pl_r7_r7_LSR_r7"},
    916      {{gt, r7, r7, LSR, r3}, true, gt, "gt r7 r7 LSR r3", "gt_r7_r7_LSR_r3"},
    917      {{ne, r5, r5, LSR, r5}, true, ne, "ne r5 r5 LSR r5", "ne_r5_r5_LSR_r5"},
    918      {{ne, r3, r3, ASR, r6}, true, ne, "ne r3 r3 ASR r6", "ne_r3_r3_ASR_r6"},
    919      {{eq, r3, r3, ASR, r6}, true, eq, "eq r3 r3 ASR r6", "eq_r3_r3_ASR_r6"},
    920      {{pl, r1, r1, ROR, r1}, true, pl, "pl r1 r1 ROR r1", "pl_r1_r1_ROR_r1"},
    921      {{lt, r7, r7, ROR, r6}, true, lt, "lt r7 r7 ROR r6", "lt_r7_r7_ROR_r6"},
    922      {{pl, r4, r4, ROR, r5}, true, pl, "pl r4 r4 ROR r5", "pl_r4_r4_ROR_r5"},
    923      {{ls, r7, r7, ASR, r0}, true, ls, "ls r7 r7 ASR r0", "ls_r7_r7_ASR_r0"},
    924      {{cs, r1, r1, ROR, r4}, true, cs, "cs r1 r1 ROR r4", "cs_r1_r1_ROR_r4"},
    925      {{eq, r0, r0, LSL, r1}, true, eq, "eq r0 r0 LSL r1", "eq_r0_r0_LSL_r1"},
    926      {{ls, r7, r7, ASR, r1}, true, ls, "ls r7 r7 ASR r1", "ls_r7_r7_ASR_r1"},
    927      {{le, r2, r2, LSL, r6}, true, le, "le r2 r2 LSL r6", "le_r2_r2_LSL_r6"},
    928      {{pl, r3, r3, ROR, r7}, true, pl, "pl r3 r3 ROR r7", "pl_r3_r3_ROR_r7"},
    929      {{lt, r7, r7, LSL, r0}, true, lt, "lt r7 r7 LSL r0", "lt_r7_r7_LSL_r0"},
    930      {{cc, r1, r1, LSL, r0}, true, cc, "cc r1 r1 LSL r0", "cc_r1_r1_LSL_r0"},
    931      {{mi, r0, r0, LSR, r3}, true, mi, "mi r0 r0 LSR r3", "mi_r0_r0_LSR_r3"},
    932      {{ls, r0, r0, LSL, r3}, true, ls, "ls r0 r0 LSL r3", "ls_r0_r0_LSL_r3"},
    933      {{lt, r4, r4, LSR, r6}, true, lt, "lt r4 r4 LSR r6", "lt_r4_r4_LSR_r6"},
    934      {{eq, r2, r2, ASR, r5}, true, eq, "eq r2 r2 ASR r5", "eq_r2_r2_ASR_r5"},
    935      {{ls, r6, r6, ROR, r0}, true, ls, "ls r6 r6 ROR r0", "ls_r6_r6_ROR_r0"},
    936      {{vc, r1, r1, ASR, r1}, true, vc, "vc r1 r1 ASR r1", "vc_r1_r1_ASR_r1"},
    937      {{pl, r0, r0, LSL, r6}, true, pl, "pl r0 r0 LSL r6", "pl_r0_r0_LSL_r6"},
    938      {{hi, r4, r4, LSL, r1}, true, hi, "hi r4 r4 LSL r1", "hi_r4_r4_LSL_r1"},
    939      {{vc, r7, r7, LSL, r2}, true, vc, "vc r7 r7 LSL r2", "vc_r7_r7_LSL_r2"},
    940      {{eq, r1, r1, LSR, r4}, true, eq, "eq r1 r1 LSR r4", "eq_r1_r1_LSR_r4"},
    941      {{hi, r2, r2, ASR, r0}, true, hi, "hi r2 r2 ASR r0", "hi_r2_r2_ASR_r0"},
    942      {{pl, r2, r2, LSL, r0}, true, pl, "pl r2 r2 LSL r0", "pl_r2_r2_LSL_r0"},
    943      {{lt, r2, r2, ASR, r3}, true, lt, "lt r2 r2 ASR r3", "lt_r2_r2_ASR_r3"},
    944      {{pl, r5, r5, ASR, r5}, true, pl, "pl r5 r5 ASR r5", "pl_r5_r5_ASR_r5"},
    945      {{le, r7, r7, LSL, r4}, true, le, "le r7 r7 LSL r4", "le_r7_r7_LSL_r4"},
    946      {{eq, r4, r4, ROR, r5}, true, eq, "eq r4 r4 ROR r5", "eq_r4_r4_ROR_r5"},
    947      {{vc, r4, r4, LSR, r2}, true, vc, "vc r4 r4 LSR r2", "vc_r4_r4_LSR_r2"},
    948      {{ne, r3, r3, ROR, r7}, true, ne, "ne r3 r3 ROR r7", "ne_r3_r3_ROR_r7"},
    949      {{gt, r3, r3, ROR, r4}, true, gt, "gt r3 r3 ROR r4", "gt_r3_r3_ROR_r4"},
    950      {{cs, r1, r1, ASR, r4}, true, cs, "cs r1 r1 ASR r4", "cs_r1_r1_ASR_r4"},
    951      {{cs, r4, r4, LSL, r3}, true, cs, "cs r4 r4 LSL r3", "cs_r4_r4_LSL_r3"},
    952      {{lt, r6, r6, ASR, r1}, true, lt, "lt r6 r6 ASR r1", "lt_r6_r6_ASR_r1"},
    953      {{hi, r3, r3, LSL, r5}, true, hi, "hi r3 r3 LSL r5", "hi_r3_r3_LSL_r5"},
    954      {{mi, r6, r6, ASR, r6}, true, mi, "mi r6 r6 ASR r6", "mi_r6_r6_ASR_r6"},
    955      {{le, r4, r4, LSR, r3}, true, le, "le r4 r4 LSR r3", "le_r4_r4_LSR_r3"},
    956      {{lt, r2, r2, LSL, r1}, true, lt, "lt r2 r2 LSL r1", "lt_r2_r2_LSL_r1"},
    957      {{ne, r5, r5, LSR, r2}, true, ne, "ne r5 r5 LSR r2", "ne_r5_r5_LSR_r2"},
    958      {{mi, r3, r3, ASR, r2}, true, mi, "mi r3 r3 ASR r2", "mi_r3_r3_ASR_r2"},
    959      {{ge, r0, r0, LSR, r2}, true, ge, "ge r0 r0 LSR r2", "ge_r0_r0_LSR_r2"},
    960      {{ls, r6, r6, LSR, r3}, true, ls, "ls r6 r6 LSR r3", "ls_r6_r6_LSR_r3"},
    961      {{cc, r2, r2, LSR, r0}, true, cc, "cc r2 r2 LSR r0", "cc_r2_r2_LSR_r0"},
    962      {{vs, r7, r7, LSL, r7}, true, vs, "vs r7 r7 LSL r7", "vs_r7_r7_LSL_r7"},
    963      {{vc, r7, r7, ASR, r7}, true, vc, "vc r7 r7 ASR r7", "vc_r7_r7_ASR_r7"},
    964      {{eq, r6, r6, LSR, r0}, true, eq, "eq r6 r6 LSR r0", "eq_r6_r6_LSR_r0"},
    965      {{vc, r6, r6, ASR, r3}, true, vc, "vc r6 r6 ASR r3", "vc_r6_r6_ASR_r3"},
    966      {{gt, r4, r4, ROR, r4}, true, gt, "gt r4 r4 ROR r4", "gt_r4_r4_ROR_r4"},
    967      {{ls, r5, r5, LSL, r4}, true, ls, "ls r5 r5 LSL r4", "ls_r5_r5_LSL_r4"},
    968      {{ge, r1, r1, ROR, r1}, true, ge, "ge r1 r1 ROR r1", "ge_r1_r1_ROR_r1"},
    969      {{cc, r5, r5, ASR, r0}, true, cc, "cc r5 r5 ASR r0", "cc_r5_r5_ASR_r0"},
    970      {{gt, r2, r2, LSL, r3}, true, gt, "gt r2 r2 LSL r3", "gt_r2_r2_LSL_r3"},
    971      {{ls, r0, r0, LSL, r5}, true, ls, "ls r0 r0 LSL r5", "ls_r0_r0_LSL_r5"},
    972      {{lt, r3, r3, LSL, r4}, true, lt, "lt r3 r3 LSL r4", "lt_r3_r3_LSL_r4"},
    973      {{eq, r6, r6, LSR, r3}, true, eq, "eq r6 r6 LSR r3", "eq_r6_r6_LSR_r3"},
    974      {{ne, r1, r1, ROR, r2}, true, ne, "ne r1 r1 ROR r2", "ne_r1_r1_ROR_r2"},
    975      {{vc, r2, r2, ROR, r0}, true, vc, "vc r2 r2 ROR r0", "vc_r2_r2_ROR_r0"},
    976      {{ls, r0, r0, LSR, r7}, true, ls, "ls r0 r0 LSR r7", "ls_r0_r0_LSR_r7"},
    977      {{mi, r3, r3, LSR, r2}, true, mi, "mi r3 r3 LSR r2", "mi_r3_r3_LSR_r2"},
    978      {{hi, r1, r1, LSL, r4}, true, hi, "hi r1 r1 LSL r4", "hi_r1_r1_LSL_r4"},
    979      {{cc, r1, r1, ROR, r3}, true, cc, "cc r1 r1 ROR r3", "cc_r1_r1_ROR_r3"},
    980      {{eq, r4, r4, ROR, r0}, true, eq, "eq r4 r4 ROR r0", "eq_r4_r4_ROR_r0"},
    981      {{vc, r6, r6, ASR, r2}, true, vc, "vc r6 r6 ASR r2", "vc_r6_r6_ASR_r2"},
    982      {{ls, r4, r4, LSR, r7}, true, ls, "ls r4 r4 LSR r7", "ls_r4_r4_LSR_r7"},
    983      {{vc, r1, r1, LSR, r1}, true, vc, "vc r1 r1 LSR r1", "vc_r1_r1_LSR_r1"},
    984      {{mi, r4, r4, ROR, r2}, true, mi, "mi r4 r4 ROR r2", "mi_r4_r4_ROR_r2"},
    985      {{ge, r7, r7, ROR, r5}, true, ge, "ge r7 r7 ROR r5", "ge_r7_r7_ROR_r5"},
    986      {{mi, r5, r5, LSR, r1}, true, mi, "mi r5 r5 LSR r1", "mi_r5_r5_LSR_r1"},
    987      {{cc, r3, r3, ASR, r6}, true, cc, "cc r3 r3 ASR r6", "cc_r3_r3_ASR_r6"},
    988      {{vc, r6, r6, ROR, r5}, true, vc, "vc r6 r6 ROR r5", "vc_r6_r6_ROR_r5"},
    989      {{mi, r7, r7, LSL, r0}, true, mi, "mi r7 r7 LSL r0", "mi_r7_r7_LSL_r0"},
    990      {{mi, r5, r5, LSR, r4}, true, mi, "mi r5 r5 LSR r4", "mi_r5_r5_LSR_r4"},
    991      {{lt, r6, r6, LSL, r5}, true, lt, "lt r6 r6 LSL r5", "lt_r6_r6_LSL_r5"},
    992      {{ne, r0, r0, ASR, r6}, true, ne, "ne r0 r0 ASR r6", "ne_r0_r0_ASR_r6"},
    993      {{le, r2, r2, ROR, r6}, true, le, "le r2 r2 ROR r6", "le_r2_r2_ROR_r6"},
    994      {{cc, r7, r7, LSL, r3}, true, cc, "cc r7 r7 LSL r3", "cc_r7_r7_LSL_r3"},
    995      {{cc, r6, r6, ASR, r6}, true, cc, "cc r6 r6 ASR r6", "cc_r6_r6_ASR_r6"},
    996      {{le, r2, r2, ASR, r3}, true, le, "le r2 r2 ASR r3", "le_r2_r2_ASR_r3"},
    997      {{ne, r6, r6, LSL, r2}, true, ne, "ne r6 r6 LSL r2", "ne_r6_r6_LSL_r2"},
    998      {{pl, r5, r5, LSL, r0}, true, pl, "pl r5 r5 LSL r0", "pl_r5_r5_LSL_r0"},
    999      {{vs, r1, r1, ASR, r3}, true, vs, "vs r1 r1 ASR r3", "vs_r1_r1_ASR_r3"},
   1000      {{le, r7, r7, LSR, r1}, true, le, "le r7 r7 LSR r1", "le_r7_r7_LSR_r1"},
   1001      {{ge, r3, r3, ROR, r4}, true, ge, "ge r3 r3 ROR r4", "ge_r3_r3_ROR_r4"},
   1002      {{le, r1, r1, LSL, r4}, true, le, "le r1 r1 LSL r4", "le_r1_r1_LSL_r4"},
   1003      {{ge, r2, r2, LSL, r6}, true, ge, "ge r2 r2 LSL r6", "ge_r2_r2_LSL_r6"},
   1004      {{cs, r3, r3, ROR, r3}, true, cs, "cs r3 r3 ROR r3", "cs_r3_r3_ROR_r3"},
   1005      {{vs, r0, r0, ROR, r1}, true, vs, "vs r0 r0 ROR r1", "vs_r0_r0_ROR_r1"},
   1006      {{gt, r3, r3, LSR, r3}, true, gt, "gt r3 r3 LSR r3", "gt_r3_r3_LSR_r3"},
   1007      {{pl, r2, r2, ASR, r4}, true, pl, "pl r2 r2 ASR r4", "pl_r2_r2_ASR_r4"},
   1008      {{vs, r0, r0, ROR, r3}, true, vs, "vs r0 r0 ROR r3", "vs_r0_r0_ROR_r3"},
   1009      {{mi, r7, r7, ASR, r0}, true, mi, "mi r7 r7 ASR r0", "mi_r7_r7_ASR_r0"},
   1010      {{le, r6, r6, LSR, r2}, true, le, "le r6 r6 LSR r2", "le_r6_r6_LSR_r2"},
   1011      {{ne, r4, r4, ROR, r6}, true, ne, "ne r4 r4 ROR r6", "ne_r4_r4_ROR_r6"},
   1012      {{gt, r5, r5, ASR, r4}, true, gt, "gt r5 r5 ASR r4", "gt_r5_r5_ASR_r4"},
   1013      {{ne, r1, r1, LSL, r2}, true, ne, "ne r1 r1 LSL r2", "ne_r1_r1_LSL_r2"},
   1014      {{cs, r7, r7, ASR, r7}, true, cs, "cs r7 r7 ASR r7", "cs_r7_r7_ASR_r7"},
   1015      {{ls, r2, r2, ROR, r2}, true, ls, "ls r2 r2 ROR r2", "ls_r2_r2_ROR_r2"},
   1016      {{le, r3, r3, ASR, r5}, true, le, "le r3 r3 ASR r5", "le_r3_r3_ASR_r5"},
   1017      {{lt, r5, r5, LSL, r4}, true, lt, "lt r5 r5 LSL r4", "lt_r5_r5_LSL_r4"},
   1018      {{le, r0, r0, LSL, r2}, true, le, "le r0 r0 LSL r2", "le_r0_r0_LSL_r2"},
   1019      {{pl, r3, r3, LSL, r5}, true, pl, "pl r3 r3 LSL r5", "pl_r3_r3_LSL_r5"},
   1020      {{ge, r0, r0, ASR, r5}, true, ge, "ge r0 r0 ASR r5", "ge_r0_r0_ASR_r5"},
   1021      {{ls, r3, r3, ASR, r6}, true, ls, "ls r3 r3 ASR r6", "ls_r3_r3_ASR_r6"},
   1022      {{cs, r4, r4, LSL, r5}, true, cs, "cs r4 r4 LSL r5", "cs_r4_r4_LSL_r5"},
   1023      {{cc, r4, r4, LSL, r1}, true, cc, "cc r4 r4 LSL r1", "cc_r4_r4_LSL_r1"},
   1024      {{cs, r6, r6, LSL, r7}, true, cs, "cs r6 r6 LSL r7", "cs_r6_r6_LSL_r7"},
   1025      {{ne, r4, r4, LSL, r6}, true, ne, "ne r4 r4 LSL r6", "ne_r4_r4_LSL_r6"},
   1026      {{cs, r7, r7, ASR, r1}, true, cs, "cs r7 r7 ASR r1", "cs_r7_r7_ASR_r1"},
   1027      {{cc, r2, r2, ASR, r1}, true, cc, "cc r2 r2 ASR r1", "cc_r2_r2_ASR_r1"},
   1028      {{ne, r6, r6, ASR, r2}, true, ne, "ne r6 r6 ASR r2", "ne_r6_r6_ASR_r2"},
   1029      {{mi, r6, r6, LSL, r3}, true, mi, "mi r6 r6 LSL r3", "mi_r6_r6_LSL_r3"},
   1030      {{lt, r6, r6, ASR, r0}, true, lt, "lt r6 r6 ASR r0", "lt_r6_r6_ASR_r0"},
   1031      {{mi, r1, r1, LSL, r0}, true, mi, "mi r1 r1 LSL r0", "mi_r1_r1_LSL_r0"},
   1032      {{pl, r1, r1, LSL, r0}, true, pl, "pl r1 r1 LSL r0", "pl_r1_r1_LSL_r0"},
   1033      {{gt, r0, r0, LSL, r5}, true, gt, "gt r0 r0 LSL r5", "gt_r0_r0_LSL_r5"},
   1034      {{gt, r4, r4, ASR, r3}, true, gt, "gt r4 r4 ASR r3", "gt_r4_r4_ASR_r3"},
   1035      {{pl, r1, r1, LSR, r2}, true, pl, "pl r1 r1 LSR r2", "pl_r1_r1_LSR_r2"},
   1036      {{vc, r1, r1, ROR, r6}, true, vc, "vc r1 r1 ROR r6", "vc_r1_r1_ROR_r6"},
   1037      {{ge, r4, r4, ROR, r0}, true, ge, "ge r4 r4 ROR r0", "ge_r4_r4_ROR_r0"},
   1038      {{le, r1, r1, LSR, r0}, true, le, "le r1 r1 LSR r0", "le_r1_r1_LSR_r0"},
   1039      {{cs, r5, r5, LSL, r2}, true, cs, "cs r5 r5 LSL r2", "cs_r5_r5_LSL_r2"},
   1040      {{ge, r5, r5, ROR, r1}, true, ge, "ge r5 r5 ROR r1", "ge_r5_r5_ROR_r1"},
   1041      {{mi, r3, r3, ROR, r7}, true, mi, "mi r3 r3 ROR r7", "mi_r3_r3_ROR_r7"},
   1042      {{ls, r3, r3, ASR, r2}, true, ls, "ls r3 r3 ASR r2", "ls_r3_r3_ASR_r2"},
   1043      {{le, r1, r1, LSL, r3}, true, le, "le r1 r1 LSL r3", "le_r1_r1_LSL_r3"},
   1044      {{ls, r2, r2, ASR, r4}, true, ls, "ls r2 r2 ASR r4", "ls_r2_r2_ASR_r4"},
   1045      {{lt, r5, r5, ASR, r2}, true, lt, "lt r5 r5 ASR r2", "lt_r5_r5_ASR_r2"},
   1046      {{cs, r0, r0, ASR, r0}, true, cs, "cs r0 r0 ASR r0", "cs_r0_r0_ASR_r0"},
   1047      {{cs, r2, r2, ROR, r1}, true, cs, "cs r2 r2 ROR r1", "cs_r2_r2_ROR_r1"},
   1048      {{hi, r2, r2, ROR, r1}, true, hi, "hi r2 r2 ROR r1", "hi_r2_r2_ROR_r1"},
   1049      {{ge, r0, r0, ASR, r4}, true, ge, "ge r0 r0 ASR r4", "ge_r0_r0_ASR_r4"},
   1050      {{le, r7, r7, LSR, r5}, true, le, "le r7 r7 LSR r5", "le_r7_r7_LSR_r5"},
   1051      {{eq, r2, r2, ROR, r3}, true, eq, "eq r2 r2 ROR r3", "eq_r2_r2_ROR_r3"},
   1052      {{hi, r2, r2, LSL, r1}, true, hi, "hi r2 r2 LSL r1", "hi_r2_r2_LSL_r1"},
   1053      {{hi, r4, r4, LSR, r0}, true, hi, "hi r4 r4 LSR r0", "hi_r4_r4_LSR_r0"},
   1054      {{gt, r6, r6, ASR, r5}, true, gt, "gt r6 r6 ASR r5", "gt_r6_r6_ASR_r5"},
   1055      {{pl, r0, r0, ASR, r7}, true, pl, "pl r0 r0 ASR r7", "pl_r0_r0_ASR_r7"},
   1056      {{cc, r3, r3, LSL, r2}, true, cc, "cc r3 r3 LSL r2", "cc_r3_r3_LSL_r2"},
   1057      {{mi, r0, r0, ASR, r7}, true, mi, "mi r0 r0 ASR r7", "mi_r0_r0_ASR_r7"},
   1058      {{eq, r4, r4, LSR, r7}, true, eq, "eq r4 r4 LSR r7", "eq_r4_r4_LSR_r7"},
   1059      {{vs, r0, r0, ASR, r1}, true, vs, "vs r0 r0 ASR r1", "vs_r0_r0_ASR_r1"},
   1060      {{ge, r1, r1, LSR, r2}, true, ge, "ge r1 r1 LSR r2", "ge_r1_r1_LSR_r2"},
   1061      {{ge, r4, r4, LSR, r4}, true, ge, "ge r4 r4 LSR r4", "ge_r4_r4_LSR_r4"},
   1062      {{le, r3, r3, LSL, r6}, true, le, "le r3 r3 LSL r6", "le_r3_r3_LSL_r6"},
   1063      {{pl, r6, r6, ASR, r4}, true, pl, "pl r6 r6 ASR r4", "pl_r6_r6_ASR_r4"},
   1064      {{ne, r3, r3, LSR, r6}, true, ne, "ne r3 r3 LSR r6", "ne_r3_r3_LSR_r6"},
   1065      {{gt, r3, r3, LSR, r6}, true, gt, "gt r3 r3 LSR r6", "gt_r3_r3_LSR_r6"},
   1066      {{lt, r1, r1, LSL, r3}, true, lt, "lt r1 r1 LSL r3", "lt_r1_r1_LSL_r3"},
   1067      {{ne, r1, r1, LSR, r7}, true, ne, "ne r1 r1 LSR r7", "ne_r1_r1_LSR_r7"},
   1068      {{ne, r1, r1, ROR, r4}, true, ne, "ne r1 r1 ROR r4", "ne_r1_r1_ROR_r4"},
   1069      {{le, r7, r7, LSR, r7}, true, le, "le r7 r7 LSR r7", "le_r7_r7_LSR_r7"},
   1070      {{lt, r1, r1, ASR, r5}, true, lt, "lt r1 r1 ASR r5", "lt_r1_r1_ASR_r5"},
   1071      {{ls, r6, r6, LSR, r6}, true, ls, "ls r6 r6 LSR r6", "ls_r6_r6_LSR_r6"},
   1072      {{gt, r2, r2, LSL, r5}, true, gt, "gt r2 r2 LSL r5", "gt_r2_r2_LSL_r5"},
   1073      {{gt, r1, r1, LSL, r4}, true, gt, "gt r1 r1 LSL r4", "gt_r1_r1_LSL_r4"},
   1074      {{gt, r0, r0, LSL, r0}, true, gt, "gt r0 r0 LSL r0", "gt_r0_r0_LSL_r0"},
   1075      {{lt, r0, r0, ASR, r7}, true, lt, "lt r0 r0 ASR r7", "lt_r0_r0_ASR_r7"},
   1076      {{ge, r0, r0, LSL, r5}, true, ge, "ge r0 r0 LSL r5", "ge_r0_r0_LSL_r5"},
   1077      {{eq, r2, r2, LSR, r7}, true, eq, "eq r2 r2 LSR r7", "eq_r2_r2_LSR_r7"},
   1078      {{pl, r2, r2, LSL, r4}, true, pl, "pl r2 r2 LSL r4", "pl_r2_r2_LSL_r4"},
   1079      {{gt, r7, r7, LSR, r7}, true, gt, "gt r7 r7 LSR r7", "gt_r7_r7_LSR_r7"},
   1080      {{lt, r5, r5, ROR, r6}, true, lt, "lt r5 r5 ROR r6", "lt_r5_r5_ROR_r6"},
   1081      {{vc, r0, r0, LSL, r5}, true, vc, "vc r0 r0 LSL r5", "vc_r0_r0_LSL_r5"},
   1082      {{cc, r2, r2, LSR, r3}, true, cc, "cc r2 r2 LSR r3", "cc_r2_r2_LSR_r3"},
   1083      {{ne, r6, r6, LSR, r2}, true, ne, "ne r6 r6 LSR r2", "ne_r6_r6_LSR_r2"},
   1084      {{mi, r6, r6, LSR, r7}, true, mi, "mi r6 r6 LSR r7", "mi_r6_r6_LSR_r7"},
   1085      {{gt, r2, r2, LSR, r4}, true, gt, "gt r2 r2 LSR r4", "gt_r2_r2_LSR_r4"},
   1086      {{pl, r6, r6, ASR, r5}, true, pl, "pl r6 r6 ASR r5", "pl_r6_r6_ASR_r5"},
   1087      {{ge, r6, r6, ASR, r5}, true, ge, "ge r6 r6 ASR r5", "ge_r6_r6_ASR_r5"},
   1088      {{pl, r0, r0, LSR, r1}, true, pl, "pl r0 r0 LSR r1", "pl_r0_r0_LSR_r1"},
   1089      {{ls, r3, r3, ROR, r3}, true, ls, "ls r3 r3 ROR r3", "ls_r3_r3_ROR_r3"},
   1090      {{gt, r7, r7, LSL, r3}, true, gt, "gt r7 r7 LSL r3", "gt_r7_r7_LSL_r3"},
   1091      {{mi, r2, r2, LSR, r6}, true, mi, "mi r2 r2 LSR r6", "mi_r2_r2_LSR_r6"},
   1092      {{ge, r0, r0, ROR, r4}, true, ge, "ge r0 r0 ROR r4", "ge_r0_r0_ROR_r4"},
   1093      {{le, r5, r5, ROR, r6}, true, le, "le r5 r5 ROR r6", "le_r5_r5_ROR_r6"},
   1094      {{mi, r1, r1, LSL, r1}, true, mi, "mi r1 r1 LSL r1", "mi_r1_r1_LSL_r1"},
   1095      {{cc, r4, r4, LSL, r5}, true, cc, "cc r4 r4 LSL r5", "cc_r4_r4_LSL_r5"}};
   1096 
   1097 // These headers each contain an array of `TestResult` with the reference output
   1098 // values. The reference arrays are names `kReference{mnemonic}`.
   1099 #include "aarch32/traces/assembler-cond-rd-operand-rn-shift-rs-t32-in-it-block-mov.h"
   1100 
   1101 
   1102 // The maximum number of errors to report in detail for each test.
   1103 const unsigned kErrorReportLimit = 8;
   1104 
   1105 typedef void (MacroAssembler::*Fn)(Condition cond,
   1106                                    Register rd,
   1107                                    const Operand& op);
   1108 
   1109 void TestHelper(Fn instruction,
   1110                 const char* mnemonic,
   1111                 const TestResult reference[]) {
   1112   unsigned total_error_count = 0;
   1113   MacroAssembler masm(BUF_SIZE);
   1114 
   1115   masm.UseT32();
   1116 
   1117   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1118     // Values to pass to the macro-assembler.
   1119     Condition cond = kTests[i].operands.cond;
   1120     Register rd = kTests[i].operands.rd;
   1121     Register rn = kTests[i].operands.rn;
   1122     ShiftType shift = kTests[i].operands.shift;
   1123     Register rs = kTests[i].operands.rs;
   1124     Operand op(rn, shift, rs);
   1125 
   1126     int32_t start = masm.GetCursorOffset();
   1127     {
   1128       // We never generate more that 4 bytes, as IT instructions are only
   1129       // allowed for narrow encodings.
   1130       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
   1131       if (kTests[i].in_it_block) {
   1132         masm.it(kTests[i].it_condition);
   1133       }
   1134       (masm.*instruction)(cond, rd, op);
   1135     }
   1136     int32_t end = masm.GetCursorOffset();
   1137 
   1138     const byte* result_ptr =
   1139         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
   1140     VIXL_ASSERT(start < end);
   1141     uint32_t result_size = end - start;
   1142 
   1143     if (Test::generate_test_trace()) {
   1144       // Print the result bytes.
   1145       printf("const byte kInstruction_%s_%s[] = {\n",
   1146              mnemonic,
   1147              kTests[i].identifier);
   1148       for (uint32_t j = 0; j < result_size; j++) {
   1149         if (j == 0) {
   1150           printf("  0x%02" PRIx8, result_ptr[j]);
   1151         } else {
   1152           printf(", 0x%02" PRIx8, result_ptr[j]);
   1153         }
   1154       }
   1155       // This comment is meant to be used by external tools to validate
   1156       // the encoding. We can parse the comment to figure out what
   1157       // instruction this corresponds to.
   1158       if (kTests[i].in_it_block) {
   1159         printf(" // It %s; %s %s\n};\n",
   1160                kTests[i].it_condition.GetName(),
   1161                mnemonic,
   1162                kTests[i].operands_description);
   1163       } else {
   1164         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
   1165       }
   1166     } else {
   1167       // Check we've emitted the exact same encoding as present in the
   1168       // trace file. Only print up to `kErrorReportLimit` errors.
   1169       if (((result_size != reference[i].size) ||
   1170            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
   1171             0)) &&
   1172           (++total_error_count <= kErrorReportLimit)) {
   1173         printf("Error when testing \"%s\" with operands \"%s\":\n",
   1174                mnemonic,
   1175                kTests[i].operands_description);
   1176         printf("  Expected: ");
   1177         for (uint32_t j = 0; j < reference[i].size; j++) {
   1178           if (j == 0) {
   1179             printf("0x%02" PRIx8, reference[i].encoding[j]);
   1180           } else {
   1181             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
   1182           }
   1183         }
   1184         printf("\n");
   1185         printf("  Found:    ");
   1186         for (uint32_t j = 0; j < result_size; j++) {
   1187           if (j == 0) {
   1188             printf("0x%02" PRIx8, result_ptr[j]);
   1189           } else {
   1190             printf(", 0x%02" PRIx8, result_ptr[j]);
   1191           }
   1192         }
   1193         printf("\n");
   1194       }
   1195     }
   1196   }
   1197 
   1198   masm.FinalizeCode();
   1199 
   1200   if (Test::generate_test_trace()) {
   1201     // Finalize the trace file by writing the final `TestResult` array
   1202     // which links all generated instruction encodings.
   1203     printf("const TestResult kReference%s[] = {\n", mnemonic);
   1204     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1205       printf("  {\n");
   1206       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
   1207              mnemonic,
   1208              kTests[i].identifier);
   1209       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
   1210       printf("  },\n");
   1211     }
   1212     printf("};\n");
   1213   } else {
   1214     if (total_error_count > kErrorReportLimit) {
   1215       printf("%u other errors follow.\n",
   1216              total_error_count - kErrorReportLimit);
   1217     }
   1218     // Crash if the test failed.
   1219     VIXL_CHECK(total_error_count == 0);
   1220   }
   1221 }
   1222 
   1223 // Instantiate tests for each instruction in the list.
   1224 #define TEST(mnemonic)                                                      \
   1225   void Test_##mnemonic() {                                                  \
   1226     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   1227   }                                                                         \
   1228   Test test_##mnemonic(                                                     \
   1229       "AARCH32_ASSEMBLER_COND_RD_OPERAND_RN_SHIFT_RS_T32_IN_IT_"            \
   1230       "BLOCK_" #mnemonic,                                                   \
   1231       &Test_##mnemonic);
   1232 FOREACH_INSTRUCTION(TEST)
   1233 #undef TEST
   1234 
   1235 }  // namespace
   1236 #endif
   1237 
   1238 }  // namespace aarch32
   1239 }  // namespace vixl
   1240