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(rsb)
     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   int32_t immediate;
     69 };
     70 
     71 // This structure contains all data needed to test one specific
     72 // instruction.
     73 struct TestData {
     74   // The `operands` field represents what to pass to the assembler to
     75   // produce the instruction.
     76   Operands operands;
     77   // True if we need to generate an IT instruction for this test to be valid.
     78   bool in_it_block;
     79   // The condition to give the IT instruction, this will be set to "al" by
     80   // default.
     81   Condition it_condition;
     82   // Description of the operands, used for error reporting.
     83   const char* operands_description;
     84   // Unique identifier, used for generating traces.
     85   const char* identifier;
     86 };
     87 
     88 struct TestResult {
     89   size_t size;
     90   const byte* encoding;
     91 };
     92 
     93 // Each element of this array produce one instruction encoding.
     94 const TestData kTests[] =
     95     {{{eq, r0, r0, 0}, true, eq, "eq r0 r0 0", "eq_r0_r0_0"},
     96      {{eq, r0, r1, 0}, true, eq, "eq r0 r1 0", "eq_r0_r1_0"},
     97      {{eq, r0, r2, 0}, true, eq, "eq r0 r2 0", "eq_r0_r2_0"},
     98      {{eq, r0, r3, 0}, true, eq, "eq r0 r3 0", "eq_r0_r3_0"},
     99      {{eq, r0, r4, 0}, true, eq, "eq r0 r4 0", "eq_r0_r4_0"},
    100      {{eq, r0, r5, 0}, true, eq, "eq r0 r5 0", "eq_r0_r5_0"},
    101      {{eq, r0, r6, 0}, true, eq, "eq r0 r6 0", "eq_r0_r6_0"},
    102      {{eq, r0, r7, 0}, true, eq, "eq r0 r7 0", "eq_r0_r7_0"},
    103      {{eq, r1, r0, 0}, true, eq, "eq r1 r0 0", "eq_r1_r0_0"},
    104      {{eq, r1, r1, 0}, true, eq, "eq r1 r1 0", "eq_r1_r1_0"},
    105      {{eq, r1, r2, 0}, true, eq, "eq r1 r2 0", "eq_r1_r2_0"},
    106      {{eq, r1, r3, 0}, true, eq, "eq r1 r3 0", "eq_r1_r3_0"},
    107      {{eq, r1, r4, 0}, true, eq, "eq r1 r4 0", "eq_r1_r4_0"},
    108      {{eq, r1, r5, 0}, true, eq, "eq r1 r5 0", "eq_r1_r5_0"},
    109      {{eq, r1, r6, 0}, true, eq, "eq r1 r6 0", "eq_r1_r6_0"},
    110      {{eq, r1, r7, 0}, true, eq, "eq r1 r7 0", "eq_r1_r7_0"},
    111      {{eq, r2, r0, 0}, true, eq, "eq r2 r0 0", "eq_r2_r0_0"},
    112      {{eq, r2, r1, 0}, true, eq, "eq r2 r1 0", "eq_r2_r1_0"},
    113      {{eq, r2, r2, 0}, true, eq, "eq r2 r2 0", "eq_r2_r2_0"},
    114      {{eq, r2, r3, 0}, true, eq, "eq r2 r3 0", "eq_r2_r3_0"},
    115      {{eq, r2, r4, 0}, true, eq, "eq r2 r4 0", "eq_r2_r4_0"},
    116      {{eq, r2, r5, 0}, true, eq, "eq r2 r5 0", "eq_r2_r5_0"},
    117      {{eq, r2, r6, 0}, true, eq, "eq r2 r6 0", "eq_r2_r6_0"},
    118      {{eq, r2, r7, 0}, true, eq, "eq r2 r7 0", "eq_r2_r7_0"},
    119      {{eq, r3, r0, 0}, true, eq, "eq r3 r0 0", "eq_r3_r0_0"},
    120      {{eq, r3, r1, 0}, true, eq, "eq r3 r1 0", "eq_r3_r1_0"},
    121      {{eq, r3, r2, 0}, true, eq, "eq r3 r2 0", "eq_r3_r2_0"},
    122      {{eq, r3, r3, 0}, true, eq, "eq r3 r3 0", "eq_r3_r3_0"},
    123      {{eq, r3, r4, 0}, true, eq, "eq r3 r4 0", "eq_r3_r4_0"},
    124      {{eq, r3, r5, 0}, true, eq, "eq r3 r5 0", "eq_r3_r5_0"},
    125      {{eq, r3, r6, 0}, true, eq, "eq r3 r6 0", "eq_r3_r6_0"},
    126      {{eq, r3, r7, 0}, true, eq, "eq r3 r7 0", "eq_r3_r7_0"},
    127      {{eq, r4, r0, 0}, true, eq, "eq r4 r0 0", "eq_r4_r0_0"},
    128      {{eq, r4, r1, 0}, true, eq, "eq r4 r1 0", "eq_r4_r1_0"},
    129      {{eq, r4, r2, 0}, true, eq, "eq r4 r2 0", "eq_r4_r2_0"},
    130      {{eq, r4, r3, 0}, true, eq, "eq r4 r3 0", "eq_r4_r3_0"},
    131      {{eq, r4, r4, 0}, true, eq, "eq r4 r4 0", "eq_r4_r4_0"},
    132      {{eq, r4, r5, 0}, true, eq, "eq r4 r5 0", "eq_r4_r5_0"},
    133      {{eq, r4, r6, 0}, true, eq, "eq r4 r6 0", "eq_r4_r6_0"},
    134      {{eq, r4, r7, 0}, true, eq, "eq r4 r7 0", "eq_r4_r7_0"},
    135      {{eq, r5, r0, 0}, true, eq, "eq r5 r0 0", "eq_r5_r0_0"},
    136      {{eq, r5, r1, 0}, true, eq, "eq r5 r1 0", "eq_r5_r1_0"},
    137      {{eq, r5, r2, 0}, true, eq, "eq r5 r2 0", "eq_r5_r2_0"},
    138      {{eq, r5, r3, 0}, true, eq, "eq r5 r3 0", "eq_r5_r3_0"},
    139      {{eq, r5, r4, 0}, true, eq, "eq r5 r4 0", "eq_r5_r4_0"},
    140      {{eq, r5, r5, 0}, true, eq, "eq r5 r5 0", "eq_r5_r5_0"},
    141      {{eq, r5, r6, 0}, true, eq, "eq r5 r6 0", "eq_r5_r6_0"},
    142      {{eq, r5, r7, 0}, true, eq, "eq r5 r7 0", "eq_r5_r7_0"},
    143      {{eq, r6, r0, 0}, true, eq, "eq r6 r0 0", "eq_r6_r0_0"},
    144      {{eq, r6, r1, 0}, true, eq, "eq r6 r1 0", "eq_r6_r1_0"},
    145      {{eq, r6, r2, 0}, true, eq, "eq r6 r2 0", "eq_r6_r2_0"},
    146      {{eq, r6, r3, 0}, true, eq, "eq r6 r3 0", "eq_r6_r3_0"},
    147      {{eq, r6, r4, 0}, true, eq, "eq r6 r4 0", "eq_r6_r4_0"},
    148      {{eq, r6, r5, 0}, true, eq, "eq r6 r5 0", "eq_r6_r5_0"},
    149      {{eq, r6, r6, 0}, true, eq, "eq r6 r6 0", "eq_r6_r6_0"},
    150      {{eq, r6, r7, 0}, true, eq, "eq r6 r7 0", "eq_r6_r7_0"},
    151      {{eq, r7, r0, 0}, true, eq, "eq r7 r0 0", "eq_r7_r0_0"},
    152      {{eq, r7, r1, 0}, true, eq, "eq r7 r1 0", "eq_r7_r1_0"},
    153      {{eq, r7, r2, 0}, true, eq, "eq r7 r2 0", "eq_r7_r2_0"},
    154      {{eq, r7, r3, 0}, true, eq, "eq r7 r3 0", "eq_r7_r3_0"},
    155      {{eq, r7, r4, 0}, true, eq, "eq r7 r4 0", "eq_r7_r4_0"},
    156      {{eq, r7, r5, 0}, true, eq, "eq r7 r5 0", "eq_r7_r5_0"},
    157      {{eq, r7, r6, 0}, true, eq, "eq r7 r6 0", "eq_r7_r6_0"},
    158      {{eq, r7, r7, 0}, true, eq, "eq r7 r7 0", "eq_r7_r7_0"},
    159      {{ne, r0, r0, 0}, true, ne, "ne r0 r0 0", "ne_r0_r0_0"},
    160      {{ne, r0, r1, 0}, true, ne, "ne r0 r1 0", "ne_r0_r1_0"},
    161      {{ne, r0, r2, 0}, true, ne, "ne r0 r2 0", "ne_r0_r2_0"},
    162      {{ne, r0, r3, 0}, true, ne, "ne r0 r3 0", "ne_r0_r3_0"},
    163      {{ne, r0, r4, 0}, true, ne, "ne r0 r4 0", "ne_r0_r4_0"},
    164      {{ne, r0, r5, 0}, true, ne, "ne r0 r5 0", "ne_r0_r5_0"},
    165      {{ne, r0, r6, 0}, true, ne, "ne r0 r6 0", "ne_r0_r6_0"},
    166      {{ne, r0, r7, 0}, true, ne, "ne r0 r7 0", "ne_r0_r7_0"},
    167      {{ne, r1, r0, 0}, true, ne, "ne r1 r0 0", "ne_r1_r0_0"},
    168      {{ne, r1, r1, 0}, true, ne, "ne r1 r1 0", "ne_r1_r1_0"},
    169      {{ne, r1, r2, 0}, true, ne, "ne r1 r2 0", "ne_r1_r2_0"},
    170      {{ne, r1, r3, 0}, true, ne, "ne r1 r3 0", "ne_r1_r3_0"},
    171      {{ne, r1, r4, 0}, true, ne, "ne r1 r4 0", "ne_r1_r4_0"},
    172      {{ne, r1, r5, 0}, true, ne, "ne r1 r5 0", "ne_r1_r5_0"},
    173      {{ne, r1, r6, 0}, true, ne, "ne r1 r6 0", "ne_r1_r6_0"},
    174      {{ne, r1, r7, 0}, true, ne, "ne r1 r7 0", "ne_r1_r7_0"},
    175      {{ne, r2, r0, 0}, true, ne, "ne r2 r0 0", "ne_r2_r0_0"},
    176      {{ne, r2, r1, 0}, true, ne, "ne r2 r1 0", "ne_r2_r1_0"},
    177      {{ne, r2, r2, 0}, true, ne, "ne r2 r2 0", "ne_r2_r2_0"},
    178      {{ne, r2, r3, 0}, true, ne, "ne r2 r3 0", "ne_r2_r3_0"},
    179      {{ne, r2, r4, 0}, true, ne, "ne r2 r4 0", "ne_r2_r4_0"},
    180      {{ne, r2, r5, 0}, true, ne, "ne r2 r5 0", "ne_r2_r5_0"},
    181      {{ne, r2, r6, 0}, true, ne, "ne r2 r6 0", "ne_r2_r6_0"},
    182      {{ne, r2, r7, 0}, true, ne, "ne r2 r7 0", "ne_r2_r7_0"},
    183      {{ne, r3, r0, 0}, true, ne, "ne r3 r0 0", "ne_r3_r0_0"},
    184      {{ne, r3, r1, 0}, true, ne, "ne r3 r1 0", "ne_r3_r1_0"},
    185      {{ne, r3, r2, 0}, true, ne, "ne r3 r2 0", "ne_r3_r2_0"},
    186      {{ne, r3, r3, 0}, true, ne, "ne r3 r3 0", "ne_r3_r3_0"},
    187      {{ne, r3, r4, 0}, true, ne, "ne r3 r4 0", "ne_r3_r4_0"},
    188      {{ne, r3, r5, 0}, true, ne, "ne r3 r5 0", "ne_r3_r5_0"},
    189      {{ne, r3, r6, 0}, true, ne, "ne r3 r6 0", "ne_r3_r6_0"},
    190      {{ne, r3, r7, 0}, true, ne, "ne r3 r7 0", "ne_r3_r7_0"},
    191      {{ne, r4, r0, 0}, true, ne, "ne r4 r0 0", "ne_r4_r0_0"},
    192      {{ne, r4, r1, 0}, true, ne, "ne r4 r1 0", "ne_r4_r1_0"},
    193      {{ne, r4, r2, 0}, true, ne, "ne r4 r2 0", "ne_r4_r2_0"},
    194      {{ne, r4, r3, 0}, true, ne, "ne r4 r3 0", "ne_r4_r3_0"},
    195      {{ne, r4, r4, 0}, true, ne, "ne r4 r4 0", "ne_r4_r4_0"},
    196      {{ne, r4, r5, 0}, true, ne, "ne r4 r5 0", "ne_r4_r5_0"},
    197      {{ne, r4, r6, 0}, true, ne, "ne r4 r6 0", "ne_r4_r6_0"},
    198      {{ne, r4, r7, 0}, true, ne, "ne r4 r7 0", "ne_r4_r7_0"},
    199      {{ne, r5, r0, 0}, true, ne, "ne r5 r0 0", "ne_r5_r0_0"},
    200      {{ne, r5, r1, 0}, true, ne, "ne r5 r1 0", "ne_r5_r1_0"},
    201      {{ne, r5, r2, 0}, true, ne, "ne r5 r2 0", "ne_r5_r2_0"},
    202      {{ne, r5, r3, 0}, true, ne, "ne r5 r3 0", "ne_r5_r3_0"},
    203      {{ne, r5, r4, 0}, true, ne, "ne r5 r4 0", "ne_r5_r4_0"},
    204      {{ne, r5, r5, 0}, true, ne, "ne r5 r5 0", "ne_r5_r5_0"},
    205      {{ne, r5, r6, 0}, true, ne, "ne r5 r6 0", "ne_r5_r6_0"},
    206      {{ne, r5, r7, 0}, true, ne, "ne r5 r7 0", "ne_r5_r7_0"},
    207      {{ne, r6, r0, 0}, true, ne, "ne r6 r0 0", "ne_r6_r0_0"},
    208      {{ne, r6, r1, 0}, true, ne, "ne r6 r1 0", "ne_r6_r1_0"},
    209      {{ne, r6, r2, 0}, true, ne, "ne r6 r2 0", "ne_r6_r2_0"},
    210      {{ne, r6, r3, 0}, true, ne, "ne r6 r3 0", "ne_r6_r3_0"},
    211      {{ne, r6, r4, 0}, true, ne, "ne r6 r4 0", "ne_r6_r4_0"},
    212      {{ne, r6, r5, 0}, true, ne, "ne r6 r5 0", "ne_r6_r5_0"},
    213      {{ne, r6, r6, 0}, true, ne, "ne r6 r6 0", "ne_r6_r6_0"},
    214      {{ne, r6, r7, 0}, true, ne, "ne r6 r7 0", "ne_r6_r7_0"},
    215      {{ne, r7, r0, 0}, true, ne, "ne r7 r0 0", "ne_r7_r0_0"},
    216      {{ne, r7, r1, 0}, true, ne, "ne r7 r1 0", "ne_r7_r1_0"},
    217      {{ne, r7, r2, 0}, true, ne, "ne r7 r2 0", "ne_r7_r2_0"},
    218      {{ne, r7, r3, 0}, true, ne, "ne r7 r3 0", "ne_r7_r3_0"},
    219      {{ne, r7, r4, 0}, true, ne, "ne r7 r4 0", "ne_r7_r4_0"},
    220      {{ne, r7, r5, 0}, true, ne, "ne r7 r5 0", "ne_r7_r5_0"},
    221      {{ne, r7, r6, 0}, true, ne, "ne r7 r6 0", "ne_r7_r6_0"},
    222      {{ne, r7, r7, 0}, true, ne, "ne r7 r7 0", "ne_r7_r7_0"},
    223      {{cs, r0, r0, 0}, true, cs, "cs r0 r0 0", "cs_r0_r0_0"},
    224      {{cs, r0, r1, 0}, true, cs, "cs r0 r1 0", "cs_r0_r1_0"},
    225      {{cs, r0, r2, 0}, true, cs, "cs r0 r2 0", "cs_r0_r2_0"},
    226      {{cs, r0, r3, 0}, true, cs, "cs r0 r3 0", "cs_r0_r3_0"},
    227      {{cs, r0, r4, 0}, true, cs, "cs r0 r4 0", "cs_r0_r4_0"},
    228      {{cs, r0, r5, 0}, true, cs, "cs r0 r5 0", "cs_r0_r5_0"},
    229      {{cs, r0, r6, 0}, true, cs, "cs r0 r6 0", "cs_r0_r6_0"},
    230      {{cs, r0, r7, 0}, true, cs, "cs r0 r7 0", "cs_r0_r7_0"},
    231      {{cs, r1, r0, 0}, true, cs, "cs r1 r0 0", "cs_r1_r0_0"},
    232      {{cs, r1, r1, 0}, true, cs, "cs r1 r1 0", "cs_r1_r1_0"},
    233      {{cs, r1, r2, 0}, true, cs, "cs r1 r2 0", "cs_r1_r2_0"},
    234      {{cs, r1, r3, 0}, true, cs, "cs r1 r3 0", "cs_r1_r3_0"},
    235      {{cs, r1, r4, 0}, true, cs, "cs r1 r4 0", "cs_r1_r4_0"},
    236      {{cs, r1, r5, 0}, true, cs, "cs r1 r5 0", "cs_r1_r5_0"},
    237      {{cs, r1, r6, 0}, true, cs, "cs r1 r6 0", "cs_r1_r6_0"},
    238      {{cs, r1, r7, 0}, true, cs, "cs r1 r7 0", "cs_r1_r7_0"},
    239      {{cs, r2, r0, 0}, true, cs, "cs r2 r0 0", "cs_r2_r0_0"},
    240      {{cs, r2, r1, 0}, true, cs, "cs r2 r1 0", "cs_r2_r1_0"},
    241      {{cs, r2, r2, 0}, true, cs, "cs r2 r2 0", "cs_r2_r2_0"},
    242      {{cs, r2, r3, 0}, true, cs, "cs r2 r3 0", "cs_r2_r3_0"},
    243      {{cs, r2, r4, 0}, true, cs, "cs r2 r4 0", "cs_r2_r4_0"},
    244      {{cs, r2, r5, 0}, true, cs, "cs r2 r5 0", "cs_r2_r5_0"},
    245      {{cs, r2, r6, 0}, true, cs, "cs r2 r6 0", "cs_r2_r6_0"},
    246      {{cs, r2, r7, 0}, true, cs, "cs r2 r7 0", "cs_r2_r7_0"},
    247      {{cs, r3, r0, 0}, true, cs, "cs r3 r0 0", "cs_r3_r0_0"},
    248      {{cs, r3, r1, 0}, true, cs, "cs r3 r1 0", "cs_r3_r1_0"},
    249      {{cs, r3, r2, 0}, true, cs, "cs r3 r2 0", "cs_r3_r2_0"},
    250      {{cs, r3, r3, 0}, true, cs, "cs r3 r3 0", "cs_r3_r3_0"},
    251      {{cs, r3, r4, 0}, true, cs, "cs r3 r4 0", "cs_r3_r4_0"},
    252      {{cs, r3, r5, 0}, true, cs, "cs r3 r5 0", "cs_r3_r5_0"},
    253      {{cs, r3, r6, 0}, true, cs, "cs r3 r6 0", "cs_r3_r6_0"},
    254      {{cs, r3, r7, 0}, true, cs, "cs r3 r7 0", "cs_r3_r7_0"},
    255      {{cs, r4, r0, 0}, true, cs, "cs r4 r0 0", "cs_r4_r0_0"},
    256      {{cs, r4, r1, 0}, true, cs, "cs r4 r1 0", "cs_r4_r1_0"},
    257      {{cs, r4, r2, 0}, true, cs, "cs r4 r2 0", "cs_r4_r2_0"},
    258      {{cs, r4, r3, 0}, true, cs, "cs r4 r3 0", "cs_r4_r3_0"},
    259      {{cs, r4, r4, 0}, true, cs, "cs r4 r4 0", "cs_r4_r4_0"},
    260      {{cs, r4, r5, 0}, true, cs, "cs r4 r5 0", "cs_r4_r5_0"},
    261      {{cs, r4, r6, 0}, true, cs, "cs r4 r6 0", "cs_r4_r6_0"},
    262      {{cs, r4, r7, 0}, true, cs, "cs r4 r7 0", "cs_r4_r7_0"},
    263      {{cs, r5, r0, 0}, true, cs, "cs r5 r0 0", "cs_r5_r0_0"},
    264      {{cs, r5, r1, 0}, true, cs, "cs r5 r1 0", "cs_r5_r1_0"},
    265      {{cs, r5, r2, 0}, true, cs, "cs r5 r2 0", "cs_r5_r2_0"},
    266      {{cs, r5, r3, 0}, true, cs, "cs r5 r3 0", "cs_r5_r3_0"},
    267      {{cs, r5, r4, 0}, true, cs, "cs r5 r4 0", "cs_r5_r4_0"},
    268      {{cs, r5, r5, 0}, true, cs, "cs r5 r5 0", "cs_r5_r5_0"},
    269      {{cs, r5, r6, 0}, true, cs, "cs r5 r6 0", "cs_r5_r6_0"},
    270      {{cs, r5, r7, 0}, true, cs, "cs r5 r7 0", "cs_r5_r7_0"},
    271      {{cs, r6, r0, 0}, true, cs, "cs r6 r0 0", "cs_r6_r0_0"},
    272      {{cs, r6, r1, 0}, true, cs, "cs r6 r1 0", "cs_r6_r1_0"},
    273      {{cs, r6, r2, 0}, true, cs, "cs r6 r2 0", "cs_r6_r2_0"},
    274      {{cs, r6, r3, 0}, true, cs, "cs r6 r3 0", "cs_r6_r3_0"},
    275      {{cs, r6, r4, 0}, true, cs, "cs r6 r4 0", "cs_r6_r4_0"},
    276      {{cs, r6, r5, 0}, true, cs, "cs r6 r5 0", "cs_r6_r5_0"},
    277      {{cs, r6, r6, 0}, true, cs, "cs r6 r6 0", "cs_r6_r6_0"},
    278      {{cs, r6, r7, 0}, true, cs, "cs r6 r7 0", "cs_r6_r7_0"},
    279      {{cs, r7, r0, 0}, true, cs, "cs r7 r0 0", "cs_r7_r0_0"},
    280      {{cs, r7, r1, 0}, true, cs, "cs r7 r1 0", "cs_r7_r1_0"},
    281      {{cs, r7, r2, 0}, true, cs, "cs r7 r2 0", "cs_r7_r2_0"},
    282      {{cs, r7, r3, 0}, true, cs, "cs r7 r3 0", "cs_r7_r3_0"},
    283      {{cs, r7, r4, 0}, true, cs, "cs r7 r4 0", "cs_r7_r4_0"},
    284      {{cs, r7, r5, 0}, true, cs, "cs r7 r5 0", "cs_r7_r5_0"},
    285      {{cs, r7, r6, 0}, true, cs, "cs r7 r6 0", "cs_r7_r6_0"},
    286      {{cs, r7, r7, 0}, true, cs, "cs r7 r7 0", "cs_r7_r7_0"},
    287      {{cc, r0, r0, 0}, true, cc, "cc r0 r0 0", "cc_r0_r0_0"},
    288      {{cc, r0, r1, 0}, true, cc, "cc r0 r1 0", "cc_r0_r1_0"},
    289      {{cc, r0, r2, 0}, true, cc, "cc r0 r2 0", "cc_r0_r2_0"},
    290      {{cc, r0, r3, 0}, true, cc, "cc r0 r3 0", "cc_r0_r3_0"},
    291      {{cc, r0, r4, 0}, true, cc, "cc r0 r4 0", "cc_r0_r4_0"},
    292      {{cc, r0, r5, 0}, true, cc, "cc r0 r5 0", "cc_r0_r5_0"},
    293      {{cc, r0, r6, 0}, true, cc, "cc r0 r6 0", "cc_r0_r6_0"},
    294      {{cc, r0, r7, 0}, true, cc, "cc r0 r7 0", "cc_r0_r7_0"},
    295      {{cc, r1, r0, 0}, true, cc, "cc r1 r0 0", "cc_r1_r0_0"},
    296      {{cc, r1, r1, 0}, true, cc, "cc r1 r1 0", "cc_r1_r1_0"},
    297      {{cc, r1, r2, 0}, true, cc, "cc r1 r2 0", "cc_r1_r2_0"},
    298      {{cc, r1, r3, 0}, true, cc, "cc r1 r3 0", "cc_r1_r3_0"},
    299      {{cc, r1, r4, 0}, true, cc, "cc r1 r4 0", "cc_r1_r4_0"},
    300      {{cc, r1, r5, 0}, true, cc, "cc r1 r5 0", "cc_r1_r5_0"},
    301      {{cc, r1, r6, 0}, true, cc, "cc r1 r6 0", "cc_r1_r6_0"},
    302      {{cc, r1, r7, 0}, true, cc, "cc r1 r7 0", "cc_r1_r7_0"},
    303      {{cc, r2, r0, 0}, true, cc, "cc r2 r0 0", "cc_r2_r0_0"},
    304      {{cc, r2, r1, 0}, true, cc, "cc r2 r1 0", "cc_r2_r1_0"},
    305      {{cc, r2, r2, 0}, true, cc, "cc r2 r2 0", "cc_r2_r2_0"},
    306      {{cc, r2, r3, 0}, true, cc, "cc r2 r3 0", "cc_r2_r3_0"},
    307      {{cc, r2, r4, 0}, true, cc, "cc r2 r4 0", "cc_r2_r4_0"},
    308      {{cc, r2, r5, 0}, true, cc, "cc r2 r5 0", "cc_r2_r5_0"},
    309      {{cc, r2, r6, 0}, true, cc, "cc r2 r6 0", "cc_r2_r6_0"},
    310      {{cc, r2, r7, 0}, true, cc, "cc r2 r7 0", "cc_r2_r7_0"},
    311      {{cc, r3, r0, 0}, true, cc, "cc r3 r0 0", "cc_r3_r0_0"},
    312      {{cc, r3, r1, 0}, true, cc, "cc r3 r1 0", "cc_r3_r1_0"},
    313      {{cc, r3, r2, 0}, true, cc, "cc r3 r2 0", "cc_r3_r2_0"},
    314      {{cc, r3, r3, 0}, true, cc, "cc r3 r3 0", "cc_r3_r3_0"},
    315      {{cc, r3, r4, 0}, true, cc, "cc r3 r4 0", "cc_r3_r4_0"},
    316      {{cc, r3, r5, 0}, true, cc, "cc r3 r5 0", "cc_r3_r5_0"},
    317      {{cc, r3, r6, 0}, true, cc, "cc r3 r6 0", "cc_r3_r6_0"},
    318      {{cc, r3, r7, 0}, true, cc, "cc r3 r7 0", "cc_r3_r7_0"},
    319      {{cc, r4, r0, 0}, true, cc, "cc r4 r0 0", "cc_r4_r0_0"},
    320      {{cc, r4, r1, 0}, true, cc, "cc r4 r1 0", "cc_r4_r1_0"},
    321      {{cc, r4, r2, 0}, true, cc, "cc r4 r2 0", "cc_r4_r2_0"},
    322      {{cc, r4, r3, 0}, true, cc, "cc r4 r3 0", "cc_r4_r3_0"},
    323      {{cc, r4, r4, 0}, true, cc, "cc r4 r4 0", "cc_r4_r4_0"},
    324      {{cc, r4, r5, 0}, true, cc, "cc r4 r5 0", "cc_r4_r5_0"},
    325      {{cc, r4, r6, 0}, true, cc, "cc r4 r6 0", "cc_r4_r6_0"},
    326      {{cc, r4, r7, 0}, true, cc, "cc r4 r7 0", "cc_r4_r7_0"},
    327      {{cc, r5, r0, 0}, true, cc, "cc r5 r0 0", "cc_r5_r0_0"},
    328      {{cc, r5, r1, 0}, true, cc, "cc r5 r1 0", "cc_r5_r1_0"},
    329      {{cc, r5, r2, 0}, true, cc, "cc r5 r2 0", "cc_r5_r2_0"},
    330      {{cc, r5, r3, 0}, true, cc, "cc r5 r3 0", "cc_r5_r3_0"},
    331      {{cc, r5, r4, 0}, true, cc, "cc r5 r4 0", "cc_r5_r4_0"},
    332      {{cc, r5, r5, 0}, true, cc, "cc r5 r5 0", "cc_r5_r5_0"},
    333      {{cc, r5, r6, 0}, true, cc, "cc r5 r6 0", "cc_r5_r6_0"},
    334      {{cc, r5, r7, 0}, true, cc, "cc r5 r7 0", "cc_r5_r7_0"},
    335      {{cc, r6, r0, 0}, true, cc, "cc r6 r0 0", "cc_r6_r0_0"},
    336      {{cc, r6, r1, 0}, true, cc, "cc r6 r1 0", "cc_r6_r1_0"},
    337      {{cc, r6, r2, 0}, true, cc, "cc r6 r2 0", "cc_r6_r2_0"},
    338      {{cc, r6, r3, 0}, true, cc, "cc r6 r3 0", "cc_r6_r3_0"},
    339      {{cc, r6, r4, 0}, true, cc, "cc r6 r4 0", "cc_r6_r4_0"},
    340      {{cc, r6, r5, 0}, true, cc, "cc r6 r5 0", "cc_r6_r5_0"},
    341      {{cc, r6, r6, 0}, true, cc, "cc r6 r6 0", "cc_r6_r6_0"},
    342      {{cc, r6, r7, 0}, true, cc, "cc r6 r7 0", "cc_r6_r7_0"},
    343      {{cc, r7, r0, 0}, true, cc, "cc r7 r0 0", "cc_r7_r0_0"},
    344      {{cc, r7, r1, 0}, true, cc, "cc r7 r1 0", "cc_r7_r1_0"},
    345      {{cc, r7, r2, 0}, true, cc, "cc r7 r2 0", "cc_r7_r2_0"},
    346      {{cc, r7, r3, 0}, true, cc, "cc r7 r3 0", "cc_r7_r3_0"},
    347      {{cc, r7, r4, 0}, true, cc, "cc r7 r4 0", "cc_r7_r4_0"},
    348      {{cc, r7, r5, 0}, true, cc, "cc r7 r5 0", "cc_r7_r5_0"},
    349      {{cc, r7, r6, 0}, true, cc, "cc r7 r6 0", "cc_r7_r6_0"},
    350      {{cc, r7, r7, 0}, true, cc, "cc r7 r7 0", "cc_r7_r7_0"},
    351      {{mi, r0, r0, 0}, true, mi, "mi r0 r0 0", "mi_r0_r0_0"},
    352      {{mi, r0, r1, 0}, true, mi, "mi r0 r1 0", "mi_r0_r1_0"},
    353      {{mi, r0, r2, 0}, true, mi, "mi r0 r2 0", "mi_r0_r2_0"},
    354      {{mi, r0, r3, 0}, true, mi, "mi r0 r3 0", "mi_r0_r3_0"},
    355      {{mi, r0, r4, 0}, true, mi, "mi r0 r4 0", "mi_r0_r4_0"},
    356      {{mi, r0, r5, 0}, true, mi, "mi r0 r5 0", "mi_r0_r5_0"},
    357      {{mi, r0, r6, 0}, true, mi, "mi r0 r6 0", "mi_r0_r6_0"},
    358      {{mi, r0, r7, 0}, true, mi, "mi r0 r7 0", "mi_r0_r7_0"},
    359      {{mi, r1, r0, 0}, true, mi, "mi r1 r0 0", "mi_r1_r0_0"},
    360      {{mi, r1, r1, 0}, true, mi, "mi r1 r1 0", "mi_r1_r1_0"},
    361      {{mi, r1, r2, 0}, true, mi, "mi r1 r2 0", "mi_r1_r2_0"},
    362      {{mi, r1, r3, 0}, true, mi, "mi r1 r3 0", "mi_r1_r3_0"},
    363      {{mi, r1, r4, 0}, true, mi, "mi r1 r4 0", "mi_r1_r4_0"},
    364      {{mi, r1, r5, 0}, true, mi, "mi r1 r5 0", "mi_r1_r5_0"},
    365      {{mi, r1, r6, 0}, true, mi, "mi r1 r6 0", "mi_r1_r6_0"},
    366      {{mi, r1, r7, 0}, true, mi, "mi r1 r7 0", "mi_r1_r7_0"},
    367      {{mi, r2, r0, 0}, true, mi, "mi r2 r0 0", "mi_r2_r0_0"},
    368      {{mi, r2, r1, 0}, true, mi, "mi r2 r1 0", "mi_r2_r1_0"},
    369      {{mi, r2, r2, 0}, true, mi, "mi r2 r2 0", "mi_r2_r2_0"},
    370      {{mi, r2, r3, 0}, true, mi, "mi r2 r3 0", "mi_r2_r3_0"},
    371      {{mi, r2, r4, 0}, true, mi, "mi r2 r4 0", "mi_r2_r4_0"},
    372      {{mi, r2, r5, 0}, true, mi, "mi r2 r5 0", "mi_r2_r5_0"},
    373      {{mi, r2, r6, 0}, true, mi, "mi r2 r6 0", "mi_r2_r6_0"},
    374      {{mi, r2, r7, 0}, true, mi, "mi r2 r7 0", "mi_r2_r7_0"},
    375      {{mi, r3, r0, 0}, true, mi, "mi r3 r0 0", "mi_r3_r0_0"},
    376      {{mi, r3, r1, 0}, true, mi, "mi r3 r1 0", "mi_r3_r1_0"},
    377      {{mi, r3, r2, 0}, true, mi, "mi r3 r2 0", "mi_r3_r2_0"},
    378      {{mi, r3, r3, 0}, true, mi, "mi r3 r3 0", "mi_r3_r3_0"},
    379      {{mi, r3, r4, 0}, true, mi, "mi r3 r4 0", "mi_r3_r4_0"},
    380      {{mi, r3, r5, 0}, true, mi, "mi r3 r5 0", "mi_r3_r5_0"},
    381      {{mi, r3, r6, 0}, true, mi, "mi r3 r6 0", "mi_r3_r6_0"},
    382      {{mi, r3, r7, 0}, true, mi, "mi r3 r7 0", "mi_r3_r7_0"},
    383      {{mi, r4, r0, 0}, true, mi, "mi r4 r0 0", "mi_r4_r0_0"},
    384      {{mi, r4, r1, 0}, true, mi, "mi r4 r1 0", "mi_r4_r1_0"},
    385      {{mi, r4, r2, 0}, true, mi, "mi r4 r2 0", "mi_r4_r2_0"},
    386      {{mi, r4, r3, 0}, true, mi, "mi r4 r3 0", "mi_r4_r3_0"},
    387      {{mi, r4, r4, 0}, true, mi, "mi r4 r4 0", "mi_r4_r4_0"},
    388      {{mi, r4, r5, 0}, true, mi, "mi r4 r5 0", "mi_r4_r5_0"},
    389      {{mi, r4, r6, 0}, true, mi, "mi r4 r6 0", "mi_r4_r6_0"},
    390      {{mi, r4, r7, 0}, true, mi, "mi r4 r7 0", "mi_r4_r7_0"},
    391      {{mi, r5, r0, 0}, true, mi, "mi r5 r0 0", "mi_r5_r0_0"},
    392      {{mi, r5, r1, 0}, true, mi, "mi r5 r1 0", "mi_r5_r1_0"},
    393      {{mi, r5, r2, 0}, true, mi, "mi r5 r2 0", "mi_r5_r2_0"},
    394      {{mi, r5, r3, 0}, true, mi, "mi r5 r3 0", "mi_r5_r3_0"},
    395      {{mi, r5, r4, 0}, true, mi, "mi r5 r4 0", "mi_r5_r4_0"},
    396      {{mi, r5, r5, 0}, true, mi, "mi r5 r5 0", "mi_r5_r5_0"},
    397      {{mi, r5, r6, 0}, true, mi, "mi r5 r6 0", "mi_r5_r6_0"},
    398      {{mi, r5, r7, 0}, true, mi, "mi r5 r7 0", "mi_r5_r7_0"},
    399      {{mi, r6, r0, 0}, true, mi, "mi r6 r0 0", "mi_r6_r0_0"},
    400      {{mi, r6, r1, 0}, true, mi, "mi r6 r1 0", "mi_r6_r1_0"},
    401      {{mi, r6, r2, 0}, true, mi, "mi r6 r2 0", "mi_r6_r2_0"},
    402      {{mi, r6, r3, 0}, true, mi, "mi r6 r3 0", "mi_r6_r3_0"},
    403      {{mi, r6, r4, 0}, true, mi, "mi r6 r4 0", "mi_r6_r4_0"},
    404      {{mi, r6, r5, 0}, true, mi, "mi r6 r5 0", "mi_r6_r5_0"},
    405      {{mi, r6, r6, 0}, true, mi, "mi r6 r6 0", "mi_r6_r6_0"},
    406      {{mi, r6, r7, 0}, true, mi, "mi r6 r7 0", "mi_r6_r7_0"},
    407      {{mi, r7, r0, 0}, true, mi, "mi r7 r0 0", "mi_r7_r0_0"},
    408      {{mi, r7, r1, 0}, true, mi, "mi r7 r1 0", "mi_r7_r1_0"},
    409      {{mi, r7, r2, 0}, true, mi, "mi r7 r2 0", "mi_r7_r2_0"},
    410      {{mi, r7, r3, 0}, true, mi, "mi r7 r3 0", "mi_r7_r3_0"},
    411      {{mi, r7, r4, 0}, true, mi, "mi r7 r4 0", "mi_r7_r4_0"},
    412      {{mi, r7, r5, 0}, true, mi, "mi r7 r5 0", "mi_r7_r5_0"},
    413      {{mi, r7, r6, 0}, true, mi, "mi r7 r6 0", "mi_r7_r6_0"},
    414      {{mi, r7, r7, 0}, true, mi, "mi r7 r7 0", "mi_r7_r7_0"},
    415      {{pl, r0, r0, 0}, true, pl, "pl r0 r0 0", "pl_r0_r0_0"},
    416      {{pl, r0, r1, 0}, true, pl, "pl r0 r1 0", "pl_r0_r1_0"},
    417      {{pl, r0, r2, 0}, true, pl, "pl r0 r2 0", "pl_r0_r2_0"},
    418      {{pl, r0, r3, 0}, true, pl, "pl r0 r3 0", "pl_r0_r3_0"},
    419      {{pl, r0, r4, 0}, true, pl, "pl r0 r4 0", "pl_r0_r4_0"},
    420      {{pl, r0, r5, 0}, true, pl, "pl r0 r5 0", "pl_r0_r5_0"},
    421      {{pl, r0, r6, 0}, true, pl, "pl r0 r6 0", "pl_r0_r6_0"},
    422      {{pl, r0, r7, 0}, true, pl, "pl r0 r7 0", "pl_r0_r7_0"},
    423      {{pl, r1, r0, 0}, true, pl, "pl r1 r0 0", "pl_r1_r0_0"},
    424      {{pl, r1, r1, 0}, true, pl, "pl r1 r1 0", "pl_r1_r1_0"},
    425      {{pl, r1, r2, 0}, true, pl, "pl r1 r2 0", "pl_r1_r2_0"},
    426      {{pl, r1, r3, 0}, true, pl, "pl r1 r3 0", "pl_r1_r3_0"},
    427      {{pl, r1, r4, 0}, true, pl, "pl r1 r4 0", "pl_r1_r4_0"},
    428      {{pl, r1, r5, 0}, true, pl, "pl r1 r5 0", "pl_r1_r5_0"},
    429      {{pl, r1, r6, 0}, true, pl, "pl r1 r6 0", "pl_r1_r6_0"},
    430      {{pl, r1, r7, 0}, true, pl, "pl r1 r7 0", "pl_r1_r7_0"},
    431      {{pl, r2, r0, 0}, true, pl, "pl r2 r0 0", "pl_r2_r0_0"},
    432      {{pl, r2, r1, 0}, true, pl, "pl r2 r1 0", "pl_r2_r1_0"},
    433      {{pl, r2, r2, 0}, true, pl, "pl r2 r2 0", "pl_r2_r2_0"},
    434      {{pl, r2, r3, 0}, true, pl, "pl r2 r3 0", "pl_r2_r3_0"},
    435      {{pl, r2, r4, 0}, true, pl, "pl r2 r4 0", "pl_r2_r4_0"},
    436      {{pl, r2, r5, 0}, true, pl, "pl r2 r5 0", "pl_r2_r5_0"},
    437      {{pl, r2, r6, 0}, true, pl, "pl r2 r6 0", "pl_r2_r6_0"},
    438      {{pl, r2, r7, 0}, true, pl, "pl r2 r7 0", "pl_r2_r7_0"},
    439      {{pl, r3, r0, 0}, true, pl, "pl r3 r0 0", "pl_r3_r0_0"},
    440      {{pl, r3, r1, 0}, true, pl, "pl r3 r1 0", "pl_r3_r1_0"},
    441      {{pl, r3, r2, 0}, true, pl, "pl r3 r2 0", "pl_r3_r2_0"},
    442      {{pl, r3, r3, 0}, true, pl, "pl r3 r3 0", "pl_r3_r3_0"},
    443      {{pl, r3, r4, 0}, true, pl, "pl r3 r4 0", "pl_r3_r4_0"},
    444      {{pl, r3, r5, 0}, true, pl, "pl r3 r5 0", "pl_r3_r5_0"},
    445      {{pl, r3, r6, 0}, true, pl, "pl r3 r6 0", "pl_r3_r6_0"},
    446      {{pl, r3, r7, 0}, true, pl, "pl r3 r7 0", "pl_r3_r7_0"},
    447      {{pl, r4, r0, 0}, true, pl, "pl r4 r0 0", "pl_r4_r0_0"},
    448      {{pl, r4, r1, 0}, true, pl, "pl r4 r1 0", "pl_r4_r1_0"},
    449      {{pl, r4, r2, 0}, true, pl, "pl r4 r2 0", "pl_r4_r2_0"},
    450      {{pl, r4, r3, 0}, true, pl, "pl r4 r3 0", "pl_r4_r3_0"},
    451      {{pl, r4, r4, 0}, true, pl, "pl r4 r4 0", "pl_r4_r4_0"},
    452      {{pl, r4, r5, 0}, true, pl, "pl r4 r5 0", "pl_r4_r5_0"},
    453      {{pl, r4, r6, 0}, true, pl, "pl r4 r6 0", "pl_r4_r6_0"},
    454      {{pl, r4, r7, 0}, true, pl, "pl r4 r7 0", "pl_r4_r7_0"},
    455      {{pl, r5, r0, 0}, true, pl, "pl r5 r0 0", "pl_r5_r0_0"},
    456      {{pl, r5, r1, 0}, true, pl, "pl r5 r1 0", "pl_r5_r1_0"},
    457      {{pl, r5, r2, 0}, true, pl, "pl r5 r2 0", "pl_r5_r2_0"},
    458      {{pl, r5, r3, 0}, true, pl, "pl r5 r3 0", "pl_r5_r3_0"},
    459      {{pl, r5, r4, 0}, true, pl, "pl r5 r4 0", "pl_r5_r4_0"},
    460      {{pl, r5, r5, 0}, true, pl, "pl r5 r5 0", "pl_r5_r5_0"},
    461      {{pl, r5, r6, 0}, true, pl, "pl r5 r6 0", "pl_r5_r6_0"},
    462      {{pl, r5, r7, 0}, true, pl, "pl r5 r7 0", "pl_r5_r7_0"},
    463      {{pl, r6, r0, 0}, true, pl, "pl r6 r0 0", "pl_r6_r0_0"},
    464      {{pl, r6, r1, 0}, true, pl, "pl r6 r1 0", "pl_r6_r1_0"},
    465      {{pl, r6, r2, 0}, true, pl, "pl r6 r2 0", "pl_r6_r2_0"},
    466      {{pl, r6, r3, 0}, true, pl, "pl r6 r3 0", "pl_r6_r3_0"},
    467      {{pl, r6, r4, 0}, true, pl, "pl r6 r4 0", "pl_r6_r4_0"},
    468      {{pl, r6, r5, 0}, true, pl, "pl r6 r5 0", "pl_r6_r5_0"},
    469      {{pl, r6, r6, 0}, true, pl, "pl r6 r6 0", "pl_r6_r6_0"},
    470      {{pl, r6, r7, 0}, true, pl, "pl r6 r7 0", "pl_r6_r7_0"},
    471      {{pl, r7, r0, 0}, true, pl, "pl r7 r0 0", "pl_r7_r0_0"},
    472      {{pl, r7, r1, 0}, true, pl, "pl r7 r1 0", "pl_r7_r1_0"},
    473      {{pl, r7, r2, 0}, true, pl, "pl r7 r2 0", "pl_r7_r2_0"},
    474      {{pl, r7, r3, 0}, true, pl, "pl r7 r3 0", "pl_r7_r3_0"},
    475      {{pl, r7, r4, 0}, true, pl, "pl r7 r4 0", "pl_r7_r4_0"},
    476      {{pl, r7, r5, 0}, true, pl, "pl r7 r5 0", "pl_r7_r5_0"},
    477      {{pl, r7, r6, 0}, true, pl, "pl r7 r6 0", "pl_r7_r6_0"},
    478      {{pl, r7, r7, 0}, true, pl, "pl r7 r7 0", "pl_r7_r7_0"},
    479      {{vs, r0, r0, 0}, true, vs, "vs r0 r0 0", "vs_r0_r0_0"},
    480      {{vs, r0, r1, 0}, true, vs, "vs r0 r1 0", "vs_r0_r1_0"},
    481      {{vs, r0, r2, 0}, true, vs, "vs r0 r2 0", "vs_r0_r2_0"},
    482      {{vs, r0, r3, 0}, true, vs, "vs r0 r3 0", "vs_r0_r3_0"},
    483      {{vs, r0, r4, 0}, true, vs, "vs r0 r4 0", "vs_r0_r4_0"},
    484      {{vs, r0, r5, 0}, true, vs, "vs r0 r5 0", "vs_r0_r5_0"},
    485      {{vs, r0, r6, 0}, true, vs, "vs r0 r6 0", "vs_r0_r6_0"},
    486      {{vs, r0, r7, 0}, true, vs, "vs r0 r7 0", "vs_r0_r7_0"},
    487      {{vs, r1, r0, 0}, true, vs, "vs r1 r0 0", "vs_r1_r0_0"},
    488      {{vs, r1, r1, 0}, true, vs, "vs r1 r1 0", "vs_r1_r1_0"},
    489      {{vs, r1, r2, 0}, true, vs, "vs r1 r2 0", "vs_r1_r2_0"},
    490      {{vs, r1, r3, 0}, true, vs, "vs r1 r3 0", "vs_r1_r3_0"},
    491      {{vs, r1, r4, 0}, true, vs, "vs r1 r4 0", "vs_r1_r4_0"},
    492      {{vs, r1, r5, 0}, true, vs, "vs r1 r5 0", "vs_r1_r5_0"},
    493      {{vs, r1, r6, 0}, true, vs, "vs r1 r6 0", "vs_r1_r6_0"},
    494      {{vs, r1, r7, 0}, true, vs, "vs r1 r7 0", "vs_r1_r7_0"},
    495      {{vs, r2, r0, 0}, true, vs, "vs r2 r0 0", "vs_r2_r0_0"},
    496      {{vs, r2, r1, 0}, true, vs, "vs r2 r1 0", "vs_r2_r1_0"},
    497      {{vs, r2, r2, 0}, true, vs, "vs r2 r2 0", "vs_r2_r2_0"},
    498      {{vs, r2, r3, 0}, true, vs, "vs r2 r3 0", "vs_r2_r3_0"},
    499      {{vs, r2, r4, 0}, true, vs, "vs r2 r4 0", "vs_r2_r4_0"},
    500      {{vs, r2, r5, 0}, true, vs, "vs r2 r5 0", "vs_r2_r5_0"},
    501      {{vs, r2, r6, 0}, true, vs, "vs r2 r6 0", "vs_r2_r6_0"},
    502      {{vs, r2, r7, 0}, true, vs, "vs r2 r7 0", "vs_r2_r7_0"},
    503      {{vs, r3, r0, 0}, true, vs, "vs r3 r0 0", "vs_r3_r0_0"},
    504      {{vs, r3, r1, 0}, true, vs, "vs r3 r1 0", "vs_r3_r1_0"},
    505      {{vs, r3, r2, 0}, true, vs, "vs r3 r2 0", "vs_r3_r2_0"},
    506      {{vs, r3, r3, 0}, true, vs, "vs r3 r3 0", "vs_r3_r3_0"},
    507      {{vs, r3, r4, 0}, true, vs, "vs r3 r4 0", "vs_r3_r4_0"},
    508      {{vs, r3, r5, 0}, true, vs, "vs r3 r5 0", "vs_r3_r5_0"},
    509      {{vs, r3, r6, 0}, true, vs, "vs r3 r6 0", "vs_r3_r6_0"},
    510      {{vs, r3, r7, 0}, true, vs, "vs r3 r7 0", "vs_r3_r7_0"},
    511      {{vs, r4, r0, 0}, true, vs, "vs r4 r0 0", "vs_r4_r0_0"},
    512      {{vs, r4, r1, 0}, true, vs, "vs r4 r1 0", "vs_r4_r1_0"},
    513      {{vs, r4, r2, 0}, true, vs, "vs r4 r2 0", "vs_r4_r2_0"},
    514      {{vs, r4, r3, 0}, true, vs, "vs r4 r3 0", "vs_r4_r3_0"},
    515      {{vs, r4, r4, 0}, true, vs, "vs r4 r4 0", "vs_r4_r4_0"},
    516      {{vs, r4, r5, 0}, true, vs, "vs r4 r5 0", "vs_r4_r5_0"},
    517      {{vs, r4, r6, 0}, true, vs, "vs r4 r6 0", "vs_r4_r6_0"},
    518      {{vs, r4, r7, 0}, true, vs, "vs r4 r7 0", "vs_r4_r7_0"},
    519      {{vs, r5, r0, 0}, true, vs, "vs r5 r0 0", "vs_r5_r0_0"},
    520      {{vs, r5, r1, 0}, true, vs, "vs r5 r1 0", "vs_r5_r1_0"},
    521      {{vs, r5, r2, 0}, true, vs, "vs r5 r2 0", "vs_r5_r2_0"},
    522      {{vs, r5, r3, 0}, true, vs, "vs r5 r3 0", "vs_r5_r3_0"},
    523      {{vs, r5, r4, 0}, true, vs, "vs r5 r4 0", "vs_r5_r4_0"},
    524      {{vs, r5, r5, 0}, true, vs, "vs r5 r5 0", "vs_r5_r5_0"},
    525      {{vs, r5, r6, 0}, true, vs, "vs r5 r6 0", "vs_r5_r6_0"},
    526      {{vs, r5, r7, 0}, true, vs, "vs r5 r7 0", "vs_r5_r7_0"},
    527      {{vs, r6, r0, 0}, true, vs, "vs r6 r0 0", "vs_r6_r0_0"},
    528      {{vs, r6, r1, 0}, true, vs, "vs r6 r1 0", "vs_r6_r1_0"},
    529      {{vs, r6, r2, 0}, true, vs, "vs r6 r2 0", "vs_r6_r2_0"},
    530      {{vs, r6, r3, 0}, true, vs, "vs r6 r3 0", "vs_r6_r3_0"},
    531      {{vs, r6, r4, 0}, true, vs, "vs r6 r4 0", "vs_r6_r4_0"},
    532      {{vs, r6, r5, 0}, true, vs, "vs r6 r5 0", "vs_r6_r5_0"},
    533      {{vs, r6, r6, 0}, true, vs, "vs r6 r6 0", "vs_r6_r6_0"},
    534      {{vs, r6, r7, 0}, true, vs, "vs r6 r7 0", "vs_r6_r7_0"},
    535      {{vs, r7, r0, 0}, true, vs, "vs r7 r0 0", "vs_r7_r0_0"},
    536      {{vs, r7, r1, 0}, true, vs, "vs r7 r1 0", "vs_r7_r1_0"},
    537      {{vs, r7, r2, 0}, true, vs, "vs r7 r2 0", "vs_r7_r2_0"},
    538      {{vs, r7, r3, 0}, true, vs, "vs r7 r3 0", "vs_r7_r3_0"},
    539      {{vs, r7, r4, 0}, true, vs, "vs r7 r4 0", "vs_r7_r4_0"},
    540      {{vs, r7, r5, 0}, true, vs, "vs r7 r5 0", "vs_r7_r5_0"},
    541      {{vs, r7, r6, 0}, true, vs, "vs r7 r6 0", "vs_r7_r6_0"},
    542      {{vs, r7, r7, 0}, true, vs, "vs r7 r7 0", "vs_r7_r7_0"},
    543      {{vc, r0, r0, 0}, true, vc, "vc r0 r0 0", "vc_r0_r0_0"},
    544      {{vc, r0, r1, 0}, true, vc, "vc r0 r1 0", "vc_r0_r1_0"},
    545      {{vc, r0, r2, 0}, true, vc, "vc r0 r2 0", "vc_r0_r2_0"},
    546      {{vc, r0, r3, 0}, true, vc, "vc r0 r3 0", "vc_r0_r3_0"},
    547      {{vc, r0, r4, 0}, true, vc, "vc r0 r4 0", "vc_r0_r4_0"},
    548      {{vc, r0, r5, 0}, true, vc, "vc r0 r5 0", "vc_r0_r5_0"},
    549      {{vc, r0, r6, 0}, true, vc, "vc r0 r6 0", "vc_r0_r6_0"},
    550      {{vc, r0, r7, 0}, true, vc, "vc r0 r7 0", "vc_r0_r7_0"},
    551      {{vc, r1, r0, 0}, true, vc, "vc r1 r0 0", "vc_r1_r0_0"},
    552      {{vc, r1, r1, 0}, true, vc, "vc r1 r1 0", "vc_r1_r1_0"},
    553      {{vc, r1, r2, 0}, true, vc, "vc r1 r2 0", "vc_r1_r2_0"},
    554      {{vc, r1, r3, 0}, true, vc, "vc r1 r3 0", "vc_r1_r3_0"},
    555      {{vc, r1, r4, 0}, true, vc, "vc r1 r4 0", "vc_r1_r4_0"},
    556      {{vc, r1, r5, 0}, true, vc, "vc r1 r5 0", "vc_r1_r5_0"},
    557      {{vc, r1, r6, 0}, true, vc, "vc r1 r6 0", "vc_r1_r6_0"},
    558      {{vc, r1, r7, 0}, true, vc, "vc r1 r7 0", "vc_r1_r7_0"},
    559      {{vc, r2, r0, 0}, true, vc, "vc r2 r0 0", "vc_r2_r0_0"},
    560      {{vc, r2, r1, 0}, true, vc, "vc r2 r1 0", "vc_r2_r1_0"},
    561      {{vc, r2, r2, 0}, true, vc, "vc r2 r2 0", "vc_r2_r2_0"},
    562      {{vc, r2, r3, 0}, true, vc, "vc r2 r3 0", "vc_r2_r3_0"},
    563      {{vc, r2, r4, 0}, true, vc, "vc r2 r4 0", "vc_r2_r4_0"},
    564      {{vc, r2, r5, 0}, true, vc, "vc r2 r5 0", "vc_r2_r5_0"},
    565      {{vc, r2, r6, 0}, true, vc, "vc r2 r6 0", "vc_r2_r6_0"},
    566      {{vc, r2, r7, 0}, true, vc, "vc r2 r7 0", "vc_r2_r7_0"},
    567      {{vc, r3, r0, 0}, true, vc, "vc r3 r0 0", "vc_r3_r0_0"},
    568      {{vc, r3, r1, 0}, true, vc, "vc r3 r1 0", "vc_r3_r1_0"},
    569      {{vc, r3, r2, 0}, true, vc, "vc r3 r2 0", "vc_r3_r2_0"},
    570      {{vc, r3, r3, 0}, true, vc, "vc r3 r3 0", "vc_r3_r3_0"},
    571      {{vc, r3, r4, 0}, true, vc, "vc r3 r4 0", "vc_r3_r4_0"},
    572      {{vc, r3, r5, 0}, true, vc, "vc r3 r5 0", "vc_r3_r5_0"},
    573      {{vc, r3, r6, 0}, true, vc, "vc r3 r6 0", "vc_r3_r6_0"},
    574      {{vc, r3, r7, 0}, true, vc, "vc r3 r7 0", "vc_r3_r7_0"},
    575      {{vc, r4, r0, 0}, true, vc, "vc r4 r0 0", "vc_r4_r0_0"},
    576      {{vc, r4, r1, 0}, true, vc, "vc r4 r1 0", "vc_r4_r1_0"},
    577      {{vc, r4, r2, 0}, true, vc, "vc r4 r2 0", "vc_r4_r2_0"},
    578      {{vc, r4, r3, 0}, true, vc, "vc r4 r3 0", "vc_r4_r3_0"},
    579      {{vc, r4, r4, 0}, true, vc, "vc r4 r4 0", "vc_r4_r4_0"},
    580      {{vc, r4, r5, 0}, true, vc, "vc r4 r5 0", "vc_r4_r5_0"},
    581      {{vc, r4, r6, 0}, true, vc, "vc r4 r6 0", "vc_r4_r6_0"},
    582      {{vc, r4, r7, 0}, true, vc, "vc r4 r7 0", "vc_r4_r7_0"},
    583      {{vc, r5, r0, 0}, true, vc, "vc r5 r0 0", "vc_r5_r0_0"},
    584      {{vc, r5, r1, 0}, true, vc, "vc r5 r1 0", "vc_r5_r1_0"},
    585      {{vc, r5, r2, 0}, true, vc, "vc r5 r2 0", "vc_r5_r2_0"},
    586      {{vc, r5, r3, 0}, true, vc, "vc r5 r3 0", "vc_r5_r3_0"},
    587      {{vc, r5, r4, 0}, true, vc, "vc r5 r4 0", "vc_r5_r4_0"},
    588      {{vc, r5, r5, 0}, true, vc, "vc r5 r5 0", "vc_r5_r5_0"},
    589      {{vc, r5, r6, 0}, true, vc, "vc r5 r6 0", "vc_r5_r6_0"},
    590      {{vc, r5, r7, 0}, true, vc, "vc r5 r7 0", "vc_r5_r7_0"},
    591      {{vc, r6, r0, 0}, true, vc, "vc r6 r0 0", "vc_r6_r0_0"},
    592      {{vc, r6, r1, 0}, true, vc, "vc r6 r1 0", "vc_r6_r1_0"},
    593      {{vc, r6, r2, 0}, true, vc, "vc r6 r2 0", "vc_r6_r2_0"},
    594      {{vc, r6, r3, 0}, true, vc, "vc r6 r3 0", "vc_r6_r3_0"},
    595      {{vc, r6, r4, 0}, true, vc, "vc r6 r4 0", "vc_r6_r4_0"},
    596      {{vc, r6, r5, 0}, true, vc, "vc r6 r5 0", "vc_r6_r5_0"},
    597      {{vc, r6, r6, 0}, true, vc, "vc r6 r6 0", "vc_r6_r6_0"},
    598      {{vc, r6, r7, 0}, true, vc, "vc r6 r7 0", "vc_r6_r7_0"},
    599      {{vc, r7, r0, 0}, true, vc, "vc r7 r0 0", "vc_r7_r0_0"},
    600      {{vc, r7, r1, 0}, true, vc, "vc r7 r1 0", "vc_r7_r1_0"},
    601      {{vc, r7, r2, 0}, true, vc, "vc r7 r2 0", "vc_r7_r2_0"},
    602      {{vc, r7, r3, 0}, true, vc, "vc r7 r3 0", "vc_r7_r3_0"},
    603      {{vc, r7, r4, 0}, true, vc, "vc r7 r4 0", "vc_r7_r4_0"},
    604      {{vc, r7, r5, 0}, true, vc, "vc r7 r5 0", "vc_r7_r5_0"},
    605      {{vc, r7, r6, 0}, true, vc, "vc r7 r6 0", "vc_r7_r6_0"},
    606      {{vc, r7, r7, 0}, true, vc, "vc r7 r7 0", "vc_r7_r7_0"},
    607      {{hi, r0, r0, 0}, true, hi, "hi r0 r0 0", "hi_r0_r0_0"},
    608      {{hi, r0, r1, 0}, true, hi, "hi r0 r1 0", "hi_r0_r1_0"},
    609      {{hi, r0, r2, 0}, true, hi, "hi r0 r2 0", "hi_r0_r2_0"},
    610      {{hi, r0, r3, 0}, true, hi, "hi r0 r3 0", "hi_r0_r3_0"},
    611      {{hi, r0, r4, 0}, true, hi, "hi r0 r4 0", "hi_r0_r4_0"},
    612      {{hi, r0, r5, 0}, true, hi, "hi r0 r5 0", "hi_r0_r5_0"},
    613      {{hi, r0, r6, 0}, true, hi, "hi r0 r6 0", "hi_r0_r6_0"},
    614      {{hi, r0, r7, 0}, true, hi, "hi r0 r7 0", "hi_r0_r7_0"},
    615      {{hi, r1, r0, 0}, true, hi, "hi r1 r0 0", "hi_r1_r0_0"},
    616      {{hi, r1, r1, 0}, true, hi, "hi r1 r1 0", "hi_r1_r1_0"},
    617      {{hi, r1, r2, 0}, true, hi, "hi r1 r2 0", "hi_r1_r2_0"},
    618      {{hi, r1, r3, 0}, true, hi, "hi r1 r3 0", "hi_r1_r3_0"},
    619      {{hi, r1, r4, 0}, true, hi, "hi r1 r4 0", "hi_r1_r4_0"},
    620      {{hi, r1, r5, 0}, true, hi, "hi r1 r5 0", "hi_r1_r5_0"},
    621      {{hi, r1, r6, 0}, true, hi, "hi r1 r6 0", "hi_r1_r6_0"},
    622      {{hi, r1, r7, 0}, true, hi, "hi r1 r7 0", "hi_r1_r7_0"},
    623      {{hi, r2, r0, 0}, true, hi, "hi r2 r0 0", "hi_r2_r0_0"},
    624      {{hi, r2, r1, 0}, true, hi, "hi r2 r1 0", "hi_r2_r1_0"},
    625      {{hi, r2, r2, 0}, true, hi, "hi r2 r2 0", "hi_r2_r2_0"},
    626      {{hi, r2, r3, 0}, true, hi, "hi r2 r3 0", "hi_r2_r3_0"},
    627      {{hi, r2, r4, 0}, true, hi, "hi r2 r4 0", "hi_r2_r4_0"},
    628      {{hi, r2, r5, 0}, true, hi, "hi r2 r5 0", "hi_r2_r5_0"},
    629      {{hi, r2, r6, 0}, true, hi, "hi r2 r6 0", "hi_r2_r6_0"},
    630      {{hi, r2, r7, 0}, true, hi, "hi r2 r7 0", "hi_r2_r7_0"},
    631      {{hi, r3, r0, 0}, true, hi, "hi r3 r0 0", "hi_r3_r0_0"},
    632      {{hi, r3, r1, 0}, true, hi, "hi r3 r1 0", "hi_r3_r1_0"},
    633      {{hi, r3, r2, 0}, true, hi, "hi r3 r2 0", "hi_r3_r2_0"},
    634      {{hi, r3, r3, 0}, true, hi, "hi r3 r3 0", "hi_r3_r3_0"},
    635      {{hi, r3, r4, 0}, true, hi, "hi r3 r4 0", "hi_r3_r4_0"},
    636      {{hi, r3, r5, 0}, true, hi, "hi r3 r5 0", "hi_r3_r5_0"},
    637      {{hi, r3, r6, 0}, true, hi, "hi r3 r6 0", "hi_r3_r6_0"},
    638      {{hi, r3, r7, 0}, true, hi, "hi r3 r7 0", "hi_r3_r7_0"},
    639      {{hi, r4, r0, 0}, true, hi, "hi r4 r0 0", "hi_r4_r0_0"},
    640      {{hi, r4, r1, 0}, true, hi, "hi r4 r1 0", "hi_r4_r1_0"},
    641      {{hi, r4, r2, 0}, true, hi, "hi r4 r2 0", "hi_r4_r2_0"},
    642      {{hi, r4, r3, 0}, true, hi, "hi r4 r3 0", "hi_r4_r3_0"},
    643      {{hi, r4, r4, 0}, true, hi, "hi r4 r4 0", "hi_r4_r4_0"},
    644      {{hi, r4, r5, 0}, true, hi, "hi r4 r5 0", "hi_r4_r5_0"},
    645      {{hi, r4, r6, 0}, true, hi, "hi r4 r6 0", "hi_r4_r6_0"},
    646      {{hi, r4, r7, 0}, true, hi, "hi r4 r7 0", "hi_r4_r7_0"},
    647      {{hi, r5, r0, 0}, true, hi, "hi r5 r0 0", "hi_r5_r0_0"},
    648      {{hi, r5, r1, 0}, true, hi, "hi r5 r1 0", "hi_r5_r1_0"},
    649      {{hi, r5, r2, 0}, true, hi, "hi r5 r2 0", "hi_r5_r2_0"},
    650      {{hi, r5, r3, 0}, true, hi, "hi r5 r3 0", "hi_r5_r3_0"},
    651      {{hi, r5, r4, 0}, true, hi, "hi r5 r4 0", "hi_r5_r4_0"},
    652      {{hi, r5, r5, 0}, true, hi, "hi r5 r5 0", "hi_r5_r5_0"},
    653      {{hi, r5, r6, 0}, true, hi, "hi r5 r6 0", "hi_r5_r6_0"},
    654      {{hi, r5, r7, 0}, true, hi, "hi r5 r7 0", "hi_r5_r7_0"},
    655      {{hi, r6, r0, 0}, true, hi, "hi r6 r0 0", "hi_r6_r0_0"},
    656      {{hi, r6, r1, 0}, true, hi, "hi r6 r1 0", "hi_r6_r1_0"},
    657      {{hi, r6, r2, 0}, true, hi, "hi r6 r2 0", "hi_r6_r2_0"},
    658      {{hi, r6, r3, 0}, true, hi, "hi r6 r3 0", "hi_r6_r3_0"},
    659      {{hi, r6, r4, 0}, true, hi, "hi r6 r4 0", "hi_r6_r4_0"},
    660      {{hi, r6, r5, 0}, true, hi, "hi r6 r5 0", "hi_r6_r5_0"},
    661      {{hi, r6, r6, 0}, true, hi, "hi r6 r6 0", "hi_r6_r6_0"},
    662      {{hi, r6, r7, 0}, true, hi, "hi r6 r7 0", "hi_r6_r7_0"},
    663      {{hi, r7, r0, 0}, true, hi, "hi r7 r0 0", "hi_r7_r0_0"},
    664      {{hi, r7, r1, 0}, true, hi, "hi r7 r1 0", "hi_r7_r1_0"},
    665      {{hi, r7, r2, 0}, true, hi, "hi r7 r2 0", "hi_r7_r2_0"},
    666      {{hi, r7, r3, 0}, true, hi, "hi r7 r3 0", "hi_r7_r3_0"},
    667      {{hi, r7, r4, 0}, true, hi, "hi r7 r4 0", "hi_r7_r4_0"},
    668      {{hi, r7, r5, 0}, true, hi, "hi r7 r5 0", "hi_r7_r5_0"},
    669      {{hi, r7, r6, 0}, true, hi, "hi r7 r6 0", "hi_r7_r6_0"},
    670      {{hi, r7, r7, 0}, true, hi, "hi r7 r7 0", "hi_r7_r7_0"},
    671      {{ls, r0, r0, 0}, true, ls, "ls r0 r0 0", "ls_r0_r0_0"},
    672      {{ls, r0, r1, 0}, true, ls, "ls r0 r1 0", "ls_r0_r1_0"},
    673      {{ls, r0, r2, 0}, true, ls, "ls r0 r2 0", "ls_r0_r2_0"},
    674      {{ls, r0, r3, 0}, true, ls, "ls r0 r3 0", "ls_r0_r3_0"},
    675      {{ls, r0, r4, 0}, true, ls, "ls r0 r4 0", "ls_r0_r4_0"},
    676      {{ls, r0, r5, 0}, true, ls, "ls r0 r5 0", "ls_r0_r5_0"},
    677      {{ls, r0, r6, 0}, true, ls, "ls r0 r6 0", "ls_r0_r6_0"},
    678      {{ls, r0, r7, 0}, true, ls, "ls r0 r7 0", "ls_r0_r7_0"},
    679      {{ls, r1, r0, 0}, true, ls, "ls r1 r0 0", "ls_r1_r0_0"},
    680      {{ls, r1, r1, 0}, true, ls, "ls r1 r1 0", "ls_r1_r1_0"},
    681      {{ls, r1, r2, 0}, true, ls, "ls r1 r2 0", "ls_r1_r2_0"},
    682      {{ls, r1, r3, 0}, true, ls, "ls r1 r3 0", "ls_r1_r3_0"},
    683      {{ls, r1, r4, 0}, true, ls, "ls r1 r4 0", "ls_r1_r4_0"},
    684      {{ls, r1, r5, 0}, true, ls, "ls r1 r5 0", "ls_r1_r5_0"},
    685      {{ls, r1, r6, 0}, true, ls, "ls r1 r6 0", "ls_r1_r6_0"},
    686      {{ls, r1, r7, 0}, true, ls, "ls r1 r7 0", "ls_r1_r7_0"},
    687      {{ls, r2, r0, 0}, true, ls, "ls r2 r0 0", "ls_r2_r0_0"},
    688      {{ls, r2, r1, 0}, true, ls, "ls r2 r1 0", "ls_r2_r1_0"},
    689      {{ls, r2, r2, 0}, true, ls, "ls r2 r2 0", "ls_r2_r2_0"},
    690      {{ls, r2, r3, 0}, true, ls, "ls r2 r3 0", "ls_r2_r3_0"},
    691      {{ls, r2, r4, 0}, true, ls, "ls r2 r4 0", "ls_r2_r4_0"},
    692      {{ls, r2, r5, 0}, true, ls, "ls r2 r5 0", "ls_r2_r5_0"},
    693      {{ls, r2, r6, 0}, true, ls, "ls r2 r6 0", "ls_r2_r6_0"},
    694      {{ls, r2, r7, 0}, true, ls, "ls r2 r7 0", "ls_r2_r7_0"},
    695      {{ls, r3, r0, 0}, true, ls, "ls r3 r0 0", "ls_r3_r0_0"},
    696      {{ls, r3, r1, 0}, true, ls, "ls r3 r1 0", "ls_r3_r1_0"},
    697      {{ls, r3, r2, 0}, true, ls, "ls r3 r2 0", "ls_r3_r2_0"},
    698      {{ls, r3, r3, 0}, true, ls, "ls r3 r3 0", "ls_r3_r3_0"},
    699      {{ls, r3, r4, 0}, true, ls, "ls r3 r4 0", "ls_r3_r4_0"},
    700      {{ls, r3, r5, 0}, true, ls, "ls r3 r5 0", "ls_r3_r5_0"},
    701      {{ls, r3, r6, 0}, true, ls, "ls r3 r6 0", "ls_r3_r6_0"},
    702      {{ls, r3, r7, 0}, true, ls, "ls r3 r7 0", "ls_r3_r7_0"},
    703      {{ls, r4, r0, 0}, true, ls, "ls r4 r0 0", "ls_r4_r0_0"},
    704      {{ls, r4, r1, 0}, true, ls, "ls r4 r1 0", "ls_r4_r1_0"},
    705      {{ls, r4, r2, 0}, true, ls, "ls r4 r2 0", "ls_r4_r2_0"},
    706      {{ls, r4, r3, 0}, true, ls, "ls r4 r3 0", "ls_r4_r3_0"},
    707      {{ls, r4, r4, 0}, true, ls, "ls r4 r4 0", "ls_r4_r4_0"},
    708      {{ls, r4, r5, 0}, true, ls, "ls r4 r5 0", "ls_r4_r5_0"},
    709      {{ls, r4, r6, 0}, true, ls, "ls r4 r6 0", "ls_r4_r6_0"},
    710      {{ls, r4, r7, 0}, true, ls, "ls r4 r7 0", "ls_r4_r7_0"},
    711      {{ls, r5, r0, 0}, true, ls, "ls r5 r0 0", "ls_r5_r0_0"},
    712      {{ls, r5, r1, 0}, true, ls, "ls r5 r1 0", "ls_r5_r1_0"},
    713      {{ls, r5, r2, 0}, true, ls, "ls r5 r2 0", "ls_r5_r2_0"},
    714      {{ls, r5, r3, 0}, true, ls, "ls r5 r3 0", "ls_r5_r3_0"},
    715      {{ls, r5, r4, 0}, true, ls, "ls r5 r4 0", "ls_r5_r4_0"},
    716      {{ls, r5, r5, 0}, true, ls, "ls r5 r5 0", "ls_r5_r5_0"},
    717      {{ls, r5, r6, 0}, true, ls, "ls r5 r6 0", "ls_r5_r6_0"},
    718      {{ls, r5, r7, 0}, true, ls, "ls r5 r7 0", "ls_r5_r7_0"},
    719      {{ls, r6, r0, 0}, true, ls, "ls r6 r0 0", "ls_r6_r0_0"},
    720      {{ls, r6, r1, 0}, true, ls, "ls r6 r1 0", "ls_r6_r1_0"},
    721      {{ls, r6, r2, 0}, true, ls, "ls r6 r2 0", "ls_r6_r2_0"},
    722      {{ls, r6, r3, 0}, true, ls, "ls r6 r3 0", "ls_r6_r3_0"},
    723      {{ls, r6, r4, 0}, true, ls, "ls r6 r4 0", "ls_r6_r4_0"},
    724      {{ls, r6, r5, 0}, true, ls, "ls r6 r5 0", "ls_r6_r5_0"},
    725      {{ls, r6, r6, 0}, true, ls, "ls r6 r6 0", "ls_r6_r6_0"},
    726      {{ls, r6, r7, 0}, true, ls, "ls r6 r7 0", "ls_r6_r7_0"},
    727      {{ls, r7, r0, 0}, true, ls, "ls r7 r0 0", "ls_r7_r0_0"},
    728      {{ls, r7, r1, 0}, true, ls, "ls r7 r1 0", "ls_r7_r1_0"},
    729      {{ls, r7, r2, 0}, true, ls, "ls r7 r2 0", "ls_r7_r2_0"},
    730      {{ls, r7, r3, 0}, true, ls, "ls r7 r3 0", "ls_r7_r3_0"},
    731      {{ls, r7, r4, 0}, true, ls, "ls r7 r4 0", "ls_r7_r4_0"},
    732      {{ls, r7, r5, 0}, true, ls, "ls r7 r5 0", "ls_r7_r5_0"},
    733      {{ls, r7, r6, 0}, true, ls, "ls r7 r6 0", "ls_r7_r6_0"},
    734      {{ls, r7, r7, 0}, true, ls, "ls r7 r7 0", "ls_r7_r7_0"},
    735      {{ge, r0, r0, 0}, true, ge, "ge r0 r0 0", "ge_r0_r0_0"},
    736      {{ge, r0, r1, 0}, true, ge, "ge r0 r1 0", "ge_r0_r1_0"},
    737      {{ge, r0, r2, 0}, true, ge, "ge r0 r2 0", "ge_r0_r2_0"},
    738      {{ge, r0, r3, 0}, true, ge, "ge r0 r3 0", "ge_r0_r3_0"},
    739      {{ge, r0, r4, 0}, true, ge, "ge r0 r4 0", "ge_r0_r4_0"},
    740      {{ge, r0, r5, 0}, true, ge, "ge r0 r5 0", "ge_r0_r5_0"},
    741      {{ge, r0, r6, 0}, true, ge, "ge r0 r6 0", "ge_r0_r6_0"},
    742      {{ge, r0, r7, 0}, true, ge, "ge r0 r7 0", "ge_r0_r7_0"},
    743      {{ge, r1, r0, 0}, true, ge, "ge r1 r0 0", "ge_r1_r0_0"},
    744      {{ge, r1, r1, 0}, true, ge, "ge r1 r1 0", "ge_r1_r1_0"},
    745      {{ge, r1, r2, 0}, true, ge, "ge r1 r2 0", "ge_r1_r2_0"},
    746      {{ge, r1, r3, 0}, true, ge, "ge r1 r3 0", "ge_r1_r3_0"},
    747      {{ge, r1, r4, 0}, true, ge, "ge r1 r4 0", "ge_r1_r4_0"},
    748      {{ge, r1, r5, 0}, true, ge, "ge r1 r5 0", "ge_r1_r5_0"},
    749      {{ge, r1, r6, 0}, true, ge, "ge r1 r6 0", "ge_r1_r6_0"},
    750      {{ge, r1, r7, 0}, true, ge, "ge r1 r7 0", "ge_r1_r7_0"},
    751      {{ge, r2, r0, 0}, true, ge, "ge r2 r0 0", "ge_r2_r0_0"},
    752      {{ge, r2, r1, 0}, true, ge, "ge r2 r1 0", "ge_r2_r1_0"},
    753      {{ge, r2, r2, 0}, true, ge, "ge r2 r2 0", "ge_r2_r2_0"},
    754      {{ge, r2, r3, 0}, true, ge, "ge r2 r3 0", "ge_r2_r3_0"},
    755      {{ge, r2, r4, 0}, true, ge, "ge r2 r4 0", "ge_r2_r4_0"},
    756      {{ge, r2, r5, 0}, true, ge, "ge r2 r5 0", "ge_r2_r5_0"},
    757      {{ge, r2, r6, 0}, true, ge, "ge r2 r6 0", "ge_r2_r6_0"},
    758      {{ge, r2, r7, 0}, true, ge, "ge r2 r7 0", "ge_r2_r7_0"},
    759      {{ge, r3, r0, 0}, true, ge, "ge r3 r0 0", "ge_r3_r0_0"},
    760      {{ge, r3, r1, 0}, true, ge, "ge r3 r1 0", "ge_r3_r1_0"},
    761      {{ge, r3, r2, 0}, true, ge, "ge r3 r2 0", "ge_r3_r2_0"},
    762      {{ge, r3, r3, 0}, true, ge, "ge r3 r3 0", "ge_r3_r3_0"},
    763      {{ge, r3, r4, 0}, true, ge, "ge r3 r4 0", "ge_r3_r4_0"},
    764      {{ge, r3, r5, 0}, true, ge, "ge r3 r5 0", "ge_r3_r5_0"},
    765      {{ge, r3, r6, 0}, true, ge, "ge r3 r6 0", "ge_r3_r6_0"},
    766      {{ge, r3, r7, 0}, true, ge, "ge r3 r7 0", "ge_r3_r7_0"},
    767      {{ge, r4, r0, 0}, true, ge, "ge r4 r0 0", "ge_r4_r0_0"},
    768      {{ge, r4, r1, 0}, true, ge, "ge r4 r1 0", "ge_r4_r1_0"},
    769      {{ge, r4, r2, 0}, true, ge, "ge r4 r2 0", "ge_r4_r2_0"},
    770      {{ge, r4, r3, 0}, true, ge, "ge r4 r3 0", "ge_r4_r3_0"},
    771      {{ge, r4, r4, 0}, true, ge, "ge r4 r4 0", "ge_r4_r4_0"},
    772      {{ge, r4, r5, 0}, true, ge, "ge r4 r5 0", "ge_r4_r5_0"},
    773      {{ge, r4, r6, 0}, true, ge, "ge r4 r6 0", "ge_r4_r6_0"},
    774      {{ge, r4, r7, 0}, true, ge, "ge r4 r7 0", "ge_r4_r7_0"},
    775      {{ge, r5, r0, 0}, true, ge, "ge r5 r0 0", "ge_r5_r0_0"},
    776      {{ge, r5, r1, 0}, true, ge, "ge r5 r1 0", "ge_r5_r1_0"},
    777      {{ge, r5, r2, 0}, true, ge, "ge r5 r2 0", "ge_r5_r2_0"},
    778      {{ge, r5, r3, 0}, true, ge, "ge r5 r3 0", "ge_r5_r3_0"},
    779      {{ge, r5, r4, 0}, true, ge, "ge r5 r4 0", "ge_r5_r4_0"},
    780      {{ge, r5, r5, 0}, true, ge, "ge r5 r5 0", "ge_r5_r5_0"},
    781      {{ge, r5, r6, 0}, true, ge, "ge r5 r6 0", "ge_r5_r6_0"},
    782      {{ge, r5, r7, 0}, true, ge, "ge r5 r7 0", "ge_r5_r7_0"},
    783      {{ge, r6, r0, 0}, true, ge, "ge r6 r0 0", "ge_r6_r0_0"},
    784      {{ge, r6, r1, 0}, true, ge, "ge r6 r1 0", "ge_r6_r1_0"},
    785      {{ge, r6, r2, 0}, true, ge, "ge r6 r2 0", "ge_r6_r2_0"},
    786      {{ge, r6, r3, 0}, true, ge, "ge r6 r3 0", "ge_r6_r3_0"},
    787      {{ge, r6, r4, 0}, true, ge, "ge r6 r4 0", "ge_r6_r4_0"},
    788      {{ge, r6, r5, 0}, true, ge, "ge r6 r5 0", "ge_r6_r5_0"},
    789      {{ge, r6, r6, 0}, true, ge, "ge r6 r6 0", "ge_r6_r6_0"},
    790      {{ge, r6, r7, 0}, true, ge, "ge r6 r7 0", "ge_r6_r7_0"},
    791      {{ge, r7, r0, 0}, true, ge, "ge r7 r0 0", "ge_r7_r0_0"},
    792      {{ge, r7, r1, 0}, true, ge, "ge r7 r1 0", "ge_r7_r1_0"},
    793      {{ge, r7, r2, 0}, true, ge, "ge r7 r2 0", "ge_r7_r2_0"},
    794      {{ge, r7, r3, 0}, true, ge, "ge r7 r3 0", "ge_r7_r3_0"},
    795      {{ge, r7, r4, 0}, true, ge, "ge r7 r4 0", "ge_r7_r4_0"},
    796      {{ge, r7, r5, 0}, true, ge, "ge r7 r5 0", "ge_r7_r5_0"},
    797      {{ge, r7, r6, 0}, true, ge, "ge r7 r6 0", "ge_r7_r6_0"},
    798      {{ge, r7, r7, 0}, true, ge, "ge r7 r7 0", "ge_r7_r7_0"},
    799      {{lt, r0, r0, 0}, true, lt, "lt r0 r0 0", "lt_r0_r0_0"},
    800      {{lt, r0, r1, 0}, true, lt, "lt r0 r1 0", "lt_r0_r1_0"},
    801      {{lt, r0, r2, 0}, true, lt, "lt r0 r2 0", "lt_r0_r2_0"},
    802      {{lt, r0, r3, 0}, true, lt, "lt r0 r3 0", "lt_r0_r3_0"},
    803      {{lt, r0, r4, 0}, true, lt, "lt r0 r4 0", "lt_r0_r4_0"},
    804      {{lt, r0, r5, 0}, true, lt, "lt r0 r5 0", "lt_r0_r5_0"},
    805      {{lt, r0, r6, 0}, true, lt, "lt r0 r6 0", "lt_r0_r6_0"},
    806      {{lt, r0, r7, 0}, true, lt, "lt r0 r7 0", "lt_r0_r7_0"},
    807      {{lt, r1, r0, 0}, true, lt, "lt r1 r0 0", "lt_r1_r0_0"},
    808      {{lt, r1, r1, 0}, true, lt, "lt r1 r1 0", "lt_r1_r1_0"},
    809      {{lt, r1, r2, 0}, true, lt, "lt r1 r2 0", "lt_r1_r2_0"},
    810      {{lt, r1, r3, 0}, true, lt, "lt r1 r3 0", "lt_r1_r3_0"},
    811      {{lt, r1, r4, 0}, true, lt, "lt r1 r4 0", "lt_r1_r4_0"},
    812      {{lt, r1, r5, 0}, true, lt, "lt r1 r5 0", "lt_r1_r5_0"},
    813      {{lt, r1, r6, 0}, true, lt, "lt r1 r6 0", "lt_r1_r6_0"},
    814      {{lt, r1, r7, 0}, true, lt, "lt r1 r7 0", "lt_r1_r7_0"},
    815      {{lt, r2, r0, 0}, true, lt, "lt r2 r0 0", "lt_r2_r0_0"},
    816      {{lt, r2, r1, 0}, true, lt, "lt r2 r1 0", "lt_r2_r1_0"},
    817      {{lt, r2, r2, 0}, true, lt, "lt r2 r2 0", "lt_r2_r2_0"},
    818      {{lt, r2, r3, 0}, true, lt, "lt r2 r3 0", "lt_r2_r3_0"},
    819      {{lt, r2, r4, 0}, true, lt, "lt r2 r4 0", "lt_r2_r4_0"},
    820      {{lt, r2, r5, 0}, true, lt, "lt r2 r5 0", "lt_r2_r5_0"},
    821      {{lt, r2, r6, 0}, true, lt, "lt r2 r6 0", "lt_r2_r6_0"},
    822      {{lt, r2, r7, 0}, true, lt, "lt r2 r7 0", "lt_r2_r7_0"},
    823      {{lt, r3, r0, 0}, true, lt, "lt r3 r0 0", "lt_r3_r0_0"},
    824      {{lt, r3, r1, 0}, true, lt, "lt r3 r1 0", "lt_r3_r1_0"},
    825      {{lt, r3, r2, 0}, true, lt, "lt r3 r2 0", "lt_r3_r2_0"},
    826      {{lt, r3, r3, 0}, true, lt, "lt r3 r3 0", "lt_r3_r3_0"},
    827      {{lt, r3, r4, 0}, true, lt, "lt r3 r4 0", "lt_r3_r4_0"},
    828      {{lt, r3, r5, 0}, true, lt, "lt r3 r5 0", "lt_r3_r5_0"},
    829      {{lt, r3, r6, 0}, true, lt, "lt r3 r6 0", "lt_r3_r6_0"},
    830      {{lt, r3, r7, 0}, true, lt, "lt r3 r7 0", "lt_r3_r7_0"},
    831      {{lt, r4, r0, 0}, true, lt, "lt r4 r0 0", "lt_r4_r0_0"},
    832      {{lt, r4, r1, 0}, true, lt, "lt r4 r1 0", "lt_r4_r1_0"},
    833      {{lt, r4, r2, 0}, true, lt, "lt r4 r2 0", "lt_r4_r2_0"},
    834      {{lt, r4, r3, 0}, true, lt, "lt r4 r3 0", "lt_r4_r3_0"},
    835      {{lt, r4, r4, 0}, true, lt, "lt r4 r4 0", "lt_r4_r4_0"},
    836      {{lt, r4, r5, 0}, true, lt, "lt r4 r5 0", "lt_r4_r5_0"},
    837      {{lt, r4, r6, 0}, true, lt, "lt r4 r6 0", "lt_r4_r6_0"},
    838      {{lt, r4, r7, 0}, true, lt, "lt r4 r7 0", "lt_r4_r7_0"},
    839      {{lt, r5, r0, 0}, true, lt, "lt r5 r0 0", "lt_r5_r0_0"},
    840      {{lt, r5, r1, 0}, true, lt, "lt r5 r1 0", "lt_r5_r1_0"},
    841      {{lt, r5, r2, 0}, true, lt, "lt r5 r2 0", "lt_r5_r2_0"},
    842      {{lt, r5, r3, 0}, true, lt, "lt r5 r3 0", "lt_r5_r3_0"},
    843      {{lt, r5, r4, 0}, true, lt, "lt r5 r4 0", "lt_r5_r4_0"},
    844      {{lt, r5, r5, 0}, true, lt, "lt r5 r5 0", "lt_r5_r5_0"},
    845      {{lt, r5, r6, 0}, true, lt, "lt r5 r6 0", "lt_r5_r6_0"},
    846      {{lt, r5, r7, 0}, true, lt, "lt r5 r7 0", "lt_r5_r7_0"},
    847      {{lt, r6, r0, 0}, true, lt, "lt r6 r0 0", "lt_r6_r0_0"},
    848      {{lt, r6, r1, 0}, true, lt, "lt r6 r1 0", "lt_r6_r1_0"},
    849      {{lt, r6, r2, 0}, true, lt, "lt r6 r2 0", "lt_r6_r2_0"},
    850      {{lt, r6, r3, 0}, true, lt, "lt r6 r3 0", "lt_r6_r3_0"},
    851      {{lt, r6, r4, 0}, true, lt, "lt r6 r4 0", "lt_r6_r4_0"},
    852      {{lt, r6, r5, 0}, true, lt, "lt r6 r5 0", "lt_r6_r5_0"},
    853      {{lt, r6, r6, 0}, true, lt, "lt r6 r6 0", "lt_r6_r6_0"},
    854      {{lt, r6, r7, 0}, true, lt, "lt r6 r7 0", "lt_r6_r7_0"},
    855      {{lt, r7, r0, 0}, true, lt, "lt r7 r0 0", "lt_r7_r0_0"},
    856      {{lt, r7, r1, 0}, true, lt, "lt r7 r1 0", "lt_r7_r1_0"},
    857      {{lt, r7, r2, 0}, true, lt, "lt r7 r2 0", "lt_r7_r2_0"},
    858      {{lt, r7, r3, 0}, true, lt, "lt r7 r3 0", "lt_r7_r3_0"},
    859      {{lt, r7, r4, 0}, true, lt, "lt r7 r4 0", "lt_r7_r4_0"},
    860      {{lt, r7, r5, 0}, true, lt, "lt r7 r5 0", "lt_r7_r5_0"},
    861      {{lt, r7, r6, 0}, true, lt, "lt r7 r6 0", "lt_r7_r6_0"},
    862      {{lt, r7, r7, 0}, true, lt, "lt r7 r7 0", "lt_r7_r7_0"},
    863      {{gt, r0, r0, 0}, true, gt, "gt r0 r0 0", "gt_r0_r0_0"},
    864      {{gt, r0, r1, 0}, true, gt, "gt r0 r1 0", "gt_r0_r1_0"},
    865      {{gt, r0, r2, 0}, true, gt, "gt r0 r2 0", "gt_r0_r2_0"},
    866      {{gt, r0, r3, 0}, true, gt, "gt r0 r3 0", "gt_r0_r3_0"},
    867      {{gt, r0, r4, 0}, true, gt, "gt r0 r4 0", "gt_r0_r4_0"},
    868      {{gt, r0, r5, 0}, true, gt, "gt r0 r5 0", "gt_r0_r5_0"},
    869      {{gt, r0, r6, 0}, true, gt, "gt r0 r6 0", "gt_r0_r6_0"},
    870      {{gt, r0, r7, 0}, true, gt, "gt r0 r7 0", "gt_r0_r7_0"},
    871      {{gt, r1, r0, 0}, true, gt, "gt r1 r0 0", "gt_r1_r0_0"},
    872      {{gt, r1, r1, 0}, true, gt, "gt r1 r1 0", "gt_r1_r1_0"},
    873      {{gt, r1, r2, 0}, true, gt, "gt r1 r2 0", "gt_r1_r2_0"},
    874      {{gt, r1, r3, 0}, true, gt, "gt r1 r3 0", "gt_r1_r3_0"},
    875      {{gt, r1, r4, 0}, true, gt, "gt r1 r4 0", "gt_r1_r4_0"},
    876      {{gt, r1, r5, 0}, true, gt, "gt r1 r5 0", "gt_r1_r5_0"},
    877      {{gt, r1, r6, 0}, true, gt, "gt r1 r6 0", "gt_r1_r6_0"},
    878      {{gt, r1, r7, 0}, true, gt, "gt r1 r7 0", "gt_r1_r7_0"},
    879      {{gt, r2, r0, 0}, true, gt, "gt r2 r0 0", "gt_r2_r0_0"},
    880      {{gt, r2, r1, 0}, true, gt, "gt r2 r1 0", "gt_r2_r1_0"},
    881      {{gt, r2, r2, 0}, true, gt, "gt r2 r2 0", "gt_r2_r2_0"},
    882      {{gt, r2, r3, 0}, true, gt, "gt r2 r3 0", "gt_r2_r3_0"},
    883      {{gt, r2, r4, 0}, true, gt, "gt r2 r4 0", "gt_r2_r4_0"},
    884      {{gt, r2, r5, 0}, true, gt, "gt r2 r5 0", "gt_r2_r5_0"},
    885      {{gt, r2, r6, 0}, true, gt, "gt r2 r6 0", "gt_r2_r6_0"},
    886      {{gt, r2, r7, 0}, true, gt, "gt r2 r7 0", "gt_r2_r7_0"},
    887      {{gt, r3, r0, 0}, true, gt, "gt r3 r0 0", "gt_r3_r0_0"},
    888      {{gt, r3, r1, 0}, true, gt, "gt r3 r1 0", "gt_r3_r1_0"},
    889      {{gt, r3, r2, 0}, true, gt, "gt r3 r2 0", "gt_r3_r2_0"},
    890      {{gt, r3, r3, 0}, true, gt, "gt r3 r3 0", "gt_r3_r3_0"},
    891      {{gt, r3, r4, 0}, true, gt, "gt r3 r4 0", "gt_r3_r4_0"},
    892      {{gt, r3, r5, 0}, true, gt, "gt r3 r5 0", "gt_r3_r5_0"},
    893      {{gt, r3, r6, 0}, true, gt, "gt r3 r6 0", "gt_r3_r6_0"},
    894      {{gt, r3, r7, 0}, true, gt, "gt r3 r7 0", "gt_r3_r7_0"},
    895      {{gt, r4, r0, 0}, true, gt, "gt r4 r0 0", "gt_r4_r0_0"},
    896      {{gt, r4, r1, 0}, true, gt, "gt r4 r1 0", "gt_r4_r1_0"},
    897      {{gt, r4, r2, 0}, true, gt, "gt r4 r2 0", "gt_r4_r2_0"},
    898      {{gt, r4, r3, 0}, true, gt, "gt r4 r3 0", "gt_r4_r3_0"},
    899      {{gt, r4, r4, 0}, true, gt, "gt r4 r4 0", "gt_r4_r4_0"},
    900      {{gt, r4, r5, 0}, true, gt, "gt r4 r5 0", "gt_r4_r5_0"},
    901      {{gt, r4, r6, 0}, true, gt, "gt r4 r6 0", "gt_r4_r6_0"},
    902      {{gt, r4, r7, 0}, true, gt, "gt r4 r7 0", "gt_r4_r7_0"},
    903      {{gt, r5, r0, 0}, true, gt, "gt r5 r0 0", "gt_r5_r0_0"},
    904      {{gt, r5, r1, 0}, true, gt, "gt r5 r1 0", "gt_r5_r1_0"},
    905      {{gt, r5, r2, 0}, true, gt, "gt r5 r2 0", "gt_r5_r2_0"},
    906      {{gt, r5, r3, 0}, true, gt, "gt r5 r3 0", "gt_r5_r3_0"},
    907      {{gt, r5, r4, 0}, true, gt, "gt r5 r4 0", "gt_r5_r4_0"},
    908      {{gt, r5, r5, 0}, true, gt, "gt r5 r5 0", "gt_r5_r5_0"},
    909      {{gt, r5, r6, 0}, true, gt, "gt r5 r6 0", "gt_r5_r6_0"},
    910      {{gt, r5, r7, 0}, true, gt, "gt r5 r7 0", "gt_r5_r7_0"},
    911      {{gt, r6, r0, 0}, true, gt, "gt r6 r0 0", "gt_r6_r0_0"},
    912      {{gt, r6, r1, 0}, true, gt, "gt r6 r1 0", "gt_r6_r1_0"},
    913      {{gt, r6, r2, 0}, true, gt, "gt r6 r2 0", "gt_r6_r2_0"},
    914      {{gt, r6, r3, 0}, true, gt, "gt r6 r3 0", "gt_r6_r3_0"},
    915      {{gt, r6, r4, 0}, true, gt, "gt r6 r4 0", "gt_r6_r4_0"},
    916      {{gt, r6, r5, 0}, true, gt, "gt r6 r5 0", "gt_r6_r5_0"},
    917      {{gt, r6, r6, 0}, true, gt, "gt r6 r6 0", "gt_r6_r6_0"},
    918      {{gt, r6, r7, 0}, true, gt, "gt r6 r7 0", "gt_r6_r7_0"},
    919      {{gt, r7, r0, 0}, true, gt, "gt r7 r0 0", "gt_r7_r0_0"},
    920      {{gt, r7, r1, 0}, true, gt, "gt r7 r1 0", "gt_r7_r1_0"},
    921      {{gt, r7, r2, 0}, true, gt, "gt r7 r2 0", "gt_r7_r2_0"},
    922      {{gt, r7, r3, 0}, true, gt, "gt r7 r3 0", "gt_r7_r3_0"},
    923      {{gt, r7, r4, 0}, true, gt, "gt r7 r4 0", "gt_r7_r4_0"},
    924      {{gt, r7, r5, 0}, true, gt, "gt r7 r5 0", "gt_r7_r5_0"},
    925      {{gt, r7, r6, 0}, true, gt, "gt r7 r6 0", "gt_r7_r6_0"},
    926      {{gt, r7, r7, 0}, true, gt, "gt r7 r7 0", "gt_r7_r7_0"},
    927      {{le, r0, r0, 0}, true, le, "le r0 r0 0", "le_r0_r0_0"},
    928      {{le, r0, r1, 0}, true, le, "le r0 r1 0", "le_r0_r1_0"},
    929      {{le, r0, r2, 0}, true, le, "le r0 r2 0", "le_r0_r2_0"},
    930      {{le, r0, r3, 0}, true, le, "le r0 r3 0", "le_r0_r3_0"},
    931      {{le, r0, r4, 0}, true, le, "le r0 r4 0", "le_r0_r4_0"},
    932      {{le, r0, r5, 0}, true, le, "le r0 r5 0", "le_r0_r5_0"},
    933      {{le, r0, r6, 0}, true, le, "le r0 r6 0", "le_r0_r6_0"},
    934      {{le, r0, r7, 0}, true, le, "le r0 r7 0", "le_r0_r7_0"},
    935      {{le, r1, r0, 0}, true, le, "le r1 r0 0", "le_r1_r0_0"},
    936      {{le, r1, r1, 0}, true, le, "le r1 r1 0", "le_r1_r1_0"},
    937      {{le, r1, r2, 0}, true, le, "le r1 r2 0", "le_r1_r2_0"},
    938      {{le, r1, r3, 0}, true, le, "le r1 r3 0", "le_r1_r3_0"},
    939      {{le, r1, r4, 0}, true, le, "le r1 r4 0", "le_r1_r4_0"},
    940      {{le, r1, r5, 0}, true, le, "le r1 r5 0", "le_r1_r5_0"},
    941      {{le, r1, r6, 0}, true, le, "le r1 r6 0", "le_r1_r6_0"},
    942      {{le, r1, r7, 0}, true, le, "le r1 r7 0", "le_r1_r7_0"},
    943      {{le, r2, r0, 0}, true, le, "le r2 r0 0", "le_r2_r0_0"},
    944      {{le, r2, r1, 0}, true, le, "le r2 r1 0", "le_r2_r1_0"},
    945      {{le, r2, r2, 0}, true, le, "le r2 r2 0", "le_r2_r2_0"},
    946      {{le, r2, r3, 0}, true, le, "le r2 r3 0", "le_r2_r3_0"},
    947      {{le, r2, r4, 0}, true, le, "le r2 r4 0", "le_r2_r4_0"},
    948      {{le, r2, r5, 0}, true, le, "le r2 r5 0", "le_r2_r5_0"},
    949      {{le, r2, r6, 0}, true, le, "le r2 r6 0", "le_r2_r6_0"},
    950      {{le, r2, r7, 0}, true, le, "le r2 r7 0", "le_r2_r7_0"},
    951      {{le, r3, r0, 0}, true, le, "le r3 r0 0", "le_r3_r0_0"},
    952      {{le, r3, r1, 0}, true, le, "le r3 r1 0", "le_r3_r1_0"},
    953      {{le, r3, r2, 0}, true, le, "le r3 r2 0", "le_r3_r2_0"},
    954      {{le, r3, r3, 0}, true, le, "le r3 r3 0", "le_r3_r3_0"},
    955      {{le, r3, r4, 0}, true, le, "le r3 r4 0", "le_r3_r4_0"},
    956      {{le, r3, r5, 0}, true, le, "le r3 r5 0", "le_r3_r5_0"},
    957      {{le, r3, r6, 0}, true, le, "le r3 r6 0", "le_r3_r6_0"},
    958      {{le, r3, r7, 0}, true, le, "le r3 r7 0", "le_r3_r7_0"},
    959      {{le, r4, r0, 0}, true, le, "le r4 r0 0", "le_r4_r0_0"},
    960      {{le, r4, r1, 0}, true, le, "le r4 r1 0", "le_r4_r1_0"},
    961      {{le, r4, r2, 0}, true, le, "le r4 r2 0", "le_r4_r2_0"},
    962      {{le, r4, r3, 0}, true, le, "le r4 r3 0", "le_r4_r3_0"},
    963      {{le, r4, r4, 0}, true, le, "le r4 r4 0", "le_r4_r4_0"},
    964      {{le, r4, r5, 0}, true, le, "le r4 r5 0", "le_r4_r5_0"},
    965      {{le, r4, r6, 0}, true, le, "le r4 r6 0", "le_r4_r6_0"},
    966      {{le, r4, r7, 0}, true, le, "le r4 r7 0", "le_r4_r7_0"},
    967      {{le, r5, r0, 0}, true, le, "le r5 r0 0", "le_r5_r0_0"},
    968      {{le, r5, r1, 0}, true, le, "le r5 r1 0", "le_r5_r1_0"},
    969      {{le, r5, r2, 0}, true, le, "le r5 r2 0", "le_r5_r2_0"},
    970      {{le, r5, r3, 0}, true, le, "le r5 r3 0", "le_r5_r3_0"},
    971      {{le, r5, r4, 0}, true, le, "le r5 r4 0", "le_r5_r4_0"},
    972      {{le, r5, r5, 0}, true, le, "le r5 r5 0", "le_r5_r5_0"},
    973      {{le, r5, r6, 0}, true, le, "le r5 r6 0", "le_r5_r6_0"},
    974      {{le, r5, r7, 0}, true, le, "le r5 r7 0", "le_r5_r7_0"},
    975      {{le, r6, r0, 0}, true, le, "le r6 r0 0", "le_r6_r0_0"},
    976      {{le, r6, r1, 0}, true, le, "le r6 r1 0", "le_r6_r1_0"},
    977      {{le, r6, r2, 0}, true, le, "le r6 r2 0", "le_r6_r2_0"},
    978      {{le, r6, r3, 0}, true, le, "le r6 r3 0", "le_r6_r3_0"},
    979      {{le, r6, r4, 0}, true, le, "le r6 r4 0", "le_r6_r4_0"},
    980      {{le, r6, r5, 0}, true, le, "le r6 r5 0", "le_r6_r5_0"},
    981      {{le, r6, r6, 0}, true, le, "le r6 r6 0", "le_r6_r6_0"},
    982      {{le, r6, r7, 0}, true, le, "le r6 r7 0", "le_r6_r7_0"},
    983      {{le, r7, r0, 0}, true, le, "le r7 r0 0", "le_r7_r0_0"},
    984      {{le, r7, r1, 0}, true, le, "le r7 r1 0", "le_r7_r1_0"},
    985      {{le, r7, r2, 0}, true, le, "le r7 r2 0", "le_r7_r2_0"},
    986      {{le, r7, r3, 0}, true, le, "le r7 r3 0", "le_r7_r3_0"},
    987      {{le, r7, r4, 0}, true, le, "le r7 r4 0", "le_r7_r4_0"},
    988      {{le, r7, r5, 0}, true, le, "le r7 r5 0", "le_r7_r5_0"},
    989      {{le, r7, r6, 0}, true, le, "le r7 r6 0", "le_r7_r6_0"},
    990      {{le, r7, r7, 0}, true, le, "le r7 r7 0", "le_r7_r7_0"}};
    991 
    992 // These headers each contain an array of `TestResult` with the reference output
    993 // values. The reference arrays are names `kReference{mnemonic}`.
    994 #include "aarch32/traces/assembler-cond-rdlow-rnlow-operand-immediate-zero-in-it-block-rsb-t32.h"
    995 
    996 
    997 // The maximum number of errors to report in detail for each test.
    998 const unsigned kErrorReportLimit = 8;
    999 
   1000 typedef void (MacroAssembler::*Fn)(Condition cond,
   1001                                    Register rd,
   1002                                    Register rn,
   1003                                    const Operand& op);
   1004 
   1005 void TestHelper(Fn instruction,
   1006                 const char* mnemonic,
   1007                 const TestResult reference[]) {
   1008   unsigned total_error_count = 0;
   1009   MacroAssembler masm(BUF_SIZE);
   1010 
   1011   masm.UseT32();
   1012 
   1013   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1014     // Values to pass to the macro-assembler.
   1015     Condition cond = kTests[i].operands.cond;
   1016     Register rd = kTests[i].operands.rd;
   1017     Register rn = kTests[i].operands.rn;
   1018     int32_t immediate = kTests[i].operands.immediate;
   1019     Operand op(immediate);
   1020 
   1021     int32_t start = masm.GetCursorOffset();
   1022     {
   1023       // We never generate more that 4 bytes, as IT instructions are only
   1024       // allowed for narrow encodings.
   1025       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
   1026       if (kTests[i].in_it_block) {
   1027         masm.it(kTests[i].it_condition);
   1028       }
   1029       (masm.*instruction)(cond, rd, rn, op);
   1030     }
   1031     int32_t end = masm.GetCursorOffset();
   1032 
   1033     const byte* result_ptr =
   1034         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
   1035     VIXL_ASSERT(start < end);
   1036     uint32_t result_size = end - start;
   1037 
   1038     if (Test::generate_test_trace()) {
   1039       // Print the result bytes.
   1040       printf("const byte kInstruction_%s_%s[] = {\n",
   1041              mnemonic,
   1042              kTests[i].identifier);
   1043       for (uint32_t j = 0; j < result_size; j++) {
   1044         if (j == 0) {
   1045           printf("  0x%02" PRIx8, result_ptr[j]);
   1046         } else {
   1047           printf(", 0x%02" PRIx8, result_ptr[j]);
   1048         }
   1049       }
   1050       // This comment is meant to be used by external tools to validate
   1051       // the encoding. We can parse the comment to figure out what
   1052       // instruction this corresponds to.
   1053       if (kTests[i].in_it_block) {
   1054         printf(" // It %s; %s %s\n};\n",
   1055                kTests[i].it_condition.GetName(),
   1056                mnemonic,
   1057                kTests[i].operands_description);
   1058       } else {
   1059         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
   1060       }
   1061     } else {
   1062       // Check we've emitted the exact same encoding as present in the
   1063       // trace file. Only print up to `kErrorReportLimit` errors.
   1064       if (((result_size != reference[i].size) ||
   1065            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
   1066             0)) &&
   1067           (++total_error_count <= kErrorReportLimit)) {
   1068         printf("Error when testing \"%s\" with operands \"%s\":\n",
   1069                mnemonic,
   1070                kTests[i].operands_description);
   1071         printf("  Expected: ");
   1072         for (uint32_t j = 0; j < reference[i].size; j++) {
   1073           if (j == 0) {
   1074             printf("0x%02" PRIx8, reference[i].encoding[j]);
   1075           } else {
   1076             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
   1077           }
   1078         }
   1079         printf("\n");
   1080         printf("  Found:    ");
   1081         for (uint32_t j = 0; j < result_size; j++) {
   1082           if (j == 0) {
   1083             printf("0x%02" PRIx8, result_ptr[j]);
   1084           } else {
   1085             printf(", 0x%02" PRIx8, result_ptr[j]);
   1086           }
   1087         }
   1088         printf("\n");
   1089       }
   1090     }
   1091   }
   1092 
   1093   masm.FinalizeCode();
   1094 
   1095   if (Test::generate_test_trace()) {
   1096     // Finalize the trace file by writing the final `TestResult` array
   1097     // which links all generated instruction encodings.
   1098     printf("const TestResult kReference%s[] = {\n", mnemonic);
   1099     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1100       printf("  {\n");
   1101       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
   1102              mnemonic,
   1103              kTests[i].identifier);
   1104       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
   1105       printf("  },\n");
   1106     }
   1107     printf("};\n");
   1108   } else {
   1109     if (total_error_count > kErrorReportLimit) {
   1110       printf("%u other errors follow.\n",
   1111              total_error_count - kErrorReportLimit);
   1112     }
   1113     // Crash if the test failed.
   1114     VIXL_CHECK(total_error_count == 0);
   1115   }
   1116 }
   1117 
   1118 // Instantiate tests for each instruction in the list.
   1119 #define TEST(mnemonic)                                                      \
   1120   void Test_##mnemonic() {                                                  \
   1121     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   1122   }                                                                         \
   1123   Test test_##mnemonic(                                                     \
   1124       "AARCH32_ASSEMBLER_COND_RDLOW_RNLOW_OPERAND_IMMEDIATE_ZERO_IN_IT_"    \
   1125       "BLOCK_" #mnemonic "_T32",                                            \
   1126       &Test_##mnemonic);
   1127 FOREACH_INSTRUCTION(TEST)
   1128 #undef TEST
   1129 
   1130 }  // namespace
   1131 #endif
   1132 
   1133 }  // namespace aarch32
   1134 }  // namespace vixl
   1135