Home | History | Annotate | Download | only in aarch32
      1 // Copyright 2016, VIXL authors
      2 // All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions are met:
      6 //
      7 //   * Redistributions of source code must retain the above copyright notice,
      8 //     this list of conditions and the following disclaimer.
      9 //   * Redistributions in binary form must reproduce the above copyright notice,
     10 //     this list of conditions and the following disclaimer in the documentation
     11 //     and/or other materials provided with the distribution.
     12 //   * Neither the name of ARM Limited nor the names of its contributors may be
     13 //     used to endorse or promote products derived from this software without
     14 //     specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
     17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
     20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26 
     27 
     28 // -----------------------------------------------------------------------------
     29 // This file is auto generated from the
     30 // test/aarch32/config/template-assembler-aarch32.cc.in template file using
     31 // tools/generate_tests.py.
     32 //
     33 // PLEASE DO NOT EDIT.
     34 // -----------------------------------------------------------------------------
     35 
     36 
     37 #include "test-runner.h"
     38 
     39 #include "test-utils.h"
     40 #include "test-utils-aarch32.h"
     41 
     42 #include "aarch32/assembler-aarch32.h"
     43 #include "aarch32/macro-assembler-aarch32.h"
     44 
     45 #define BUF_SIZE (4096)
     46 
     47 namespace vixl {
     48 namespace aarch32 {
     49 
     50 // List of instruction mnemonics.
     51 #define FOREACH_INSTRUCTION(M) \
     52   M(cmn)                       \
     53   M(tst)
     54 
     55 
     56 // The following definitions are defined again in each generated test, therefore
     57 // we need to place them in an anomymous namespace. It expresses that they are
     58 // local to this file only, and the compiler is not allowed to share these types
     59 // across test files during template instantiation. Specifically, `Operands` has
     60 // various layouts across generated tests so it absolutely cannot be shared.
     61 
     62 #ifdef VIXL_INCLUDE_TARGET_T32
     63 namespace {
     64 
     65 // Values to be passed to the assembler to produce the instruction under test.
     66 struct Operands {
     67   Condition cond;
     68   Register rd;
     69   Register rn;
     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[] = {{{eq, r0, r0}, true, eq, "eq r0 r0", "eq_r0_r0"},
     96                            {{eq, r0, r1}, true, eq, "eq r0 r1", "eq_r0_r1"},
     97                            {{eq, r0, r2}, true, eq, "eq r0 r2", "eq_r0_r2"},
     98                            {{eq, r0, r3}, true, eq, "eq r0 r3", "eq_r0_r3"},
     99                            {{eq, r0, r4}, true, eq, "eq r0 r4", "eq_r0_r4"},
    100                            {{eq, r0, r5}, true, eq, "eq r0 r5", "eq_r0_r5"},
    101                            {{eq, r0, r6}, true, eq, "eq r0 r6", "eq_r0_r6"},
    102                            {{eq, r0, r7}, true, eq, "eq r0 r7", "eq_r0_r7"},
    103                            {{eq, r1, r0}, true, eq, "eq r1 r0", "eq_r1_r0"},
    104                            {{eq, r1, r1}, true, eq, "eq r1 r1", "eq_r1_r1"},
    105                            {{eq, r1, r2}, true, eq, "eq r1 r2", "eq_r1_r2"},
    106                            {{eq, r1, r3}, true, eq, "eq r1 r3", "eq_r1_r3"},
    107                            {{eq, r1, r4}, true, eq, "eq r1 r4", "eq_r1_r4"},
    108                            {{eq, r1, r5}, true, eq, "eq r1 r5", "eq_r1_r5"},
    109                            {{eq, r1, r6}, true, eq, "eq r1 r6", "eq_r1_r6"},
    110                            {{eq, r1, r7}, true, eq, "eq r1 r7", "eq_r1_r7"},
    111                            {{eq, r2, r0}, true, eq, "eq r2 r0", "eq_r2_r0"},
    112                            {{eq, r2, r1}, true, eq, "eq r2 r1", "eq_r2_r1"},
    113                            {{eq, r2, r2}, true, eq, "eq r2 r2", "eq_r2_r2"},
    114                            {{eq, r2, r3}, true, eq, "eq r2 r3", "eq_r2_r3"},
    115                            {{eq, r2, r4}, true, eq, "eq r2 r4", "eq_r2_r4"},
    116                            {{eq, r2, r5}, true, eq, "eq r2 r5", "eq_r2_r5"},
    117                            {{eq, r2, r6}, true, eq, "eq r2 r6", "eq_r2_r6"},
    118                            {{eq, r2, r7}, true, eq, "eq r2 r7", "eq_r2_r7"},
    119                            {{eq, r3, r0}, true, eq, "eq r3 r0", "eq_r3_r0"},
    120                            {{eq, r3, r1}, true, eq, "eq r3 r1", "eq_r3_r1"},
    121                            {{eq, r3, r2}, true, eq, "eq r3 r2", "eq_r3_r2"},
    122                            {{eq, r3, r3}, true, eq, "eq r3 r3", "eq_r3_r3"},
    123                            {{eq, r3, r4}, true, eq, "eq r3 r4", "eq_r3_r4"},
    124                            {{eq, r3, r5}, true, eq, "eq r3 r5", "eq_r3_r5"},
    125                            {{eq, r3, r6}, true, eq, "eq r3 r6", "eq_r3_r6"},
    126                            {{eq, r3, r7}, true, eq, "eq r3 r7", "eq_r3_r7"},
    127                            {{eq, r4, r0}, true, eq, "eq r4 r0", "eq_r4_r0"},
    128                            {{eq, r4, r1}, true, eq, "eq r4 r1", "eq_r4_r1"},
    129                            {{eq, r4, r2}, true, eq, "eq r4 r2", "eq_r4_r2"},
    130                            {{eq, r4, r3}, true, eq, "eq r4 r3", "eq_r4_r3"},
    131                            {{eq, r4, r4}, true, eq, "eq r4 r4", "eq_r4_r4"},
    132                            {{eq, r4, r5}, true, eq, "eq r4 r5", "eq_r4_r5"},
    133                            {{eq, r4, r6}, true, eq, "eq r4 r6", "eq_r4_r6"},
    134                            {{eq, r4, r7}, true, eq, "eq r4 r7", "eq_r4_r7"},
    135                            {{eq, r5, r0}, true, eq, "eq r5 r0", "eq_r5_r0"},
    136                            {{eq, r5, r1}, true, eq, "eq r5 r1", "eq_r5_r1"},
    137                            {{eq, r5, r2}, true, eq, "eq r5 r2", "eq_r5_r2"},
    138                            {{eq, r5, r3}, true, eq, "eq r5 r3", "eq_r5_r3"},
    139                            {{eq, r5, r4}, true, eq, "eq r5 r4", "eq_r5_r4"},
    140                            {{eq, r5, r5}, true, eq, "eq r5 r5", "eq_r5_r5"},
    141                            {{eq, r5, r6}, true, eq, "eq r5 r6", "eq_r5_r6"},
    142                            {{eq, r5, r7}, true, eq, "eq r5 r7", "eq_r5_r7"},
    143                            {{eq, r6, r0}, true, eq, "eq r6 r0", "eq_r6_r0"},
    144                            {{eq, r6, r1}, true, eq, "eq r6 r1", "eq_r6_r1"},
    145                            {{eq, r6, r2}, true, eq, "eq r6 r2", "eq_r6_r2"},
    146                            {{eq, r6, r3}, true, eq, "eq r6 r3", "eq_r6_r3"},
    147                            {{eq, r6, r4}, true, eq, "eq r6 r4", "eq_r6_r4"},
    148                            {{eq, r6, r5}, true, eq, "eq r6 r5", "eq_r6_r5"},
    149                            {{eq, r6, r6}, true, eq, "eq r6 r6", "eq_r6_r6"},
    150                            {{eq, r6, r7}, true, eq, "eq r6 r7", "eq_r6_r7"},
    151                            {{eq, r7, r0}, true, eq, "eq r7 r0", "eq_r7_r0"},
    152                            {{eq, r7, r1}, true, eq, "eq r7 r1", "eq_r7_r1"},
    153                            {{eq, r7, r2}, true, eq, "eq r7 r2", "eq_r7_r2"},
    154                            {{eq, r7, r3}, true, eq, "eq r7 r3", "eq_r7_r3"},
    155                            {{eq, r7, r4}, true, eq, "eq r7 r4", "eq_r7_r4"},
    156                            {{eq, r7, r5}, true, eq, "eq r7 r5", "eq_r7_r5"},
    157                            {{eq, r7, r6}, true, eq, "eq r7 r6", "eq_r7_r6"},
    158                            {{eq, r7, r7}, true, eq, "eq r7 r7", "eq_r7_r7"},
    159                            {{ne, r0, r0}, true, ne, "ne r0 r0", "ne_r0_r0"},
    160                            {{ne, r0, r1}, true, ne, "ne r0 r1", "ne_r0_r1"},
    161                            {{ne, r0, r2}, true, ne, "ne r0 r2", "ne_r0_r2"},
    162                            {{ne, r0, r3}, true, ne, "ne r0 r3", "ne_r0_r3"},
    163                            {{ne, r0, r4}, true, ne, "ne r0 r4", "ne_r0_r4"},
    164                            {{ne, r0, r5}, true, ne, "ne r0 r5", "ne_r0_r5"},
    165                            {{ne, r0, r6}, true, ne, "ne r0 r6", "ne_r0_r6"},
    166                            {{ne, r0, r7}, true, ne, "ne r0 r7", "ne_r0_r7"},
    167                            {{ne, r1, r0}, true, ne, "ne r1 r0", "ne_r1_r0"},
    168                            {{ne, r1, r1}, true, ne, "ne r1 r1", "ne_r1_r1"},
    169                            {{ne, r1, r2}, true, ne, "ne r1 r2", "ne_r1_r2"},
    170                            {{ne, r1, r3}, true, ne, "ne r1 r3", "ne_r1_r3"},
    171                            {{ne, r1, r4}, true, ne, "ne r1 r4", "ne_r1_r4"},
    172                            {{ne, r1, r5}, true, ne, "ne r1 r5", "ne_r1_r5"},
    173                            {{ne, r1, r6}, true, ne, "ne r1 r6", "ne_r1_r6"},
    174                            {{ne, r1, r7}, true, ne, "ne r1 r7", "ne_r1_r7"},
    175                            {{ne, r2, r0}, true, ne, "ne r2 r0", "ne_r2_r0"},
    176                            {{ne, r2, r1}, true, ne, "ne r2 r1", "ne_r2_r1"},
    177                            {{ne, r2, r2}, true, ne, "ne r2 r2", "ne_r2_r2"},
    178                            {{ne, r2, r3}, true, ne, "ne r2 r3", "ne_r2_r3"},
    179                            {{ne, r2, r4}, true, ne, "ne r2 r4", "ne_r2_r4"},
    180                            {{ne, r2, r5}, true, ne, "ne r2 r5", "ne_r2_r5"},
    181                            {{ne, r2, r6}, true, ne, "ne r2 r6", "ne_r2_r6"},
    182                            {{ne, r2, r7}, true, ne, "ne r2 r7", "ne_r2_r7"},
    183                            {{ne, r3, r0}, true, ne, "ne r3 r0", "ne_r3_r0"},
    184                            {{ne, r3, r1}, true, ne, "ne r3 r1", "ne_r3_r1"},
    185                            {{ne, r3, r2}, true, ne, "ne r3 r2", "ne_r3_r2"},
    186                            {{ne, r3, r3}, true, ne, "ne r3 r3", "ne_r3_r3"},
    187                            {{ne, r3, r4}, true, ne, "ne r3 r4", "ne_r3_r4"},
    188                            {{ne, r3, r5}, true, ne, "ne r3 r5", "ne_r3_r5"},
    189                            {{ne, r3, r6}, true, ne, "ne r3 r6", "ne_r3_r6"},
    190                            {{ne, r3, r7}, true, ne, "ne r3 r7", "ne_r3_r7"},
    191                            {{ne, r4, r0}, true, ne, "ne r4 r0", "ne_r4_r0"},
    192                            {{ne, r4, r1}, true, ne, "ne r4 r1", "ne_r4_r1"},
    193                            {{ne, r4, r2}, true, ne, "ne r4 r2", "ne_r4_r2"},
    194                            {{ne, r4, r3}, true, ne, "ne r4 r3", "ne_r4_r3"},
    195                            {{ne, r4, r4}, true, ne, "ne r4 r4", "ne_r4_r4"},
    196                            {{ne, r4, r5}, true, ne, "ne r4 r5", "ne_r4_r5"},
    197                            {{ne, r4, r6}, true, ne, "ne r4 r6", "ne_r4_r6"},
    198                            {{ne, r4, r7}, true, ne, "ne r4 r7", "ne_r4_r7"},
    199                            {{ne, r5, r0}, true, ne, "ne r5 r0", "ne_r5_r0"},
    200                            {{ne, r5, r1}, true, ne, "ne r5 r1", "ne_r5_r1"},
    201                            {{ne, r5, r2}, true, ne, "ne r5 r2", "ne_r5_r2"},
    202                            {{ne, r5, r3}, true, ne, "ne r5 r3", "ne_r5_r3"},
    203                            {{ne, r5, r4}, true, ne, "ne r5 r4", "ne_r5_r4"},
    204                            {{ne, r5, r5}, true, ne, "ne r5 r5", "ne_r5_r5"},
    205                            {{ne, r5, r6}, true, ne, "ne r5 r6", "ne_r5_r6"},
    206                            {{ne, r5, r7}, true, ne, "ne r5 r7", "ne_r5_r7"},
    207                            {{ne, r6, r0}, true, ne, "ne r6 r0", "ne_r6_r0"},
    208                            {{ne, r6, r1}, true, ne, "ne r6 r1", "ne_r6_r1"},
    209                            {{ne, r6, r2}, true, ne, "ne r6 r2", "ne_r6_r2"},
    210                            {{ne, r6, r3}, true, ne, "ne r6 r3", "ne_r6_r3"},
    211                            {{ne, r6, r4}, true, ne, "ne r6 r4", "ne_r6_r4"},
    212                            {{ne, r6, r5}, true, ne, "ne r6 r5", "ne_r6_r5"},
    213                            {{ne, r6, r6}, true, ne, "ne r6 r6", "ne_r6_r6"},
    214                            {{ne, r6, r7}, true, ne, "ne r6 r7", "ne_r6_r7"},
    215                            {{ne, r7, r0}, true, ne, "ne r7 r0", "ne_r7_r0"},
    216                            {{ne, r7, r1}, true, ne, "ne r7 r1", "ne_r7_r1"},
    217                            {{ne, r7, r2}, true, ne, "ne r7 r2", "ne_r7_r2"},
    218                            {{ne, r7, r3}, true, ne, "ne r7 r3", "ne_r7_r3"},
    219                            {{ne, r7, r4}, true, ne, "ne r7 r4", "ne_r7_r4"},
    220                            {{ne, r7, r5}, true, ne, "ne r7 r5", "ne_r7_r5"},
    221                            {{ne, r7, r6}, true, ne, "ne r7 r6", "ne_r7_r6"},
    222                            {{ne, r7, r7}, true, ne, "ne r7 r7", "ne_r7_r7"},
    223                            {{cs, r0, r0}, true, cs, "cs r0 r0", "cs_r0_r0"},
    224                            {{cs, r0, r1}, true, cs, "cs r0 r1", "cs_r0_r1"},
    225                            {{cs, r0, r2}, true, cs, "cs r0 r2", "cs_r0_r2"},
    226                            {{cs, r0, r3}, true, cs, "cs r0 r3", "cs_r0_r3"},
    227                            {{cs, r0, r4}, true, cs, "cs r0 r4", "cs_r0_r4"},
    228                            {{cs, r0, r5}, true, cs, "cs r0 r5", "cs_r0_r5"},
    229                            {{cs, r0, r6}, true, cs, "cs r0 r6", "cs_r0_r6"},
    230                            {{cs, r0, r7}, true, cs, "cs r0 r7", "cs_r0_r7"},
    231                            {{cs, r1, r0}, true, cs, "cs r1 r0", "cs_r1_r0"},
    232                            {{cs, r1, r1}, true, cs, "cs r1 r1", "cs_r1_r1"},
    233                            {{cs, r1, r2}, true, cs, "cs r1 r2", "cs_r1_r2"},
    234                            {{cs, r1, r3}, true, cs, "cs r1 r3", "cs_r1_r3"},
    235                            {{cs, r1, r4}, true, cs, "cs r1 r4", "cs_r1_r4"},
    236                            {{cs, r1, r5}, true, cs, "cs r1 r5", "cs_r1_r5"},
    237                            {{cs, r1, r6}, true, cs, "cs r1 r6", "cs_r1_r6"},
    238                            {{cs, r1, r7}, true, cs, "cs r1 r7", "cs_r1_r7"},
    239                            {{cs, r2, r0}, true, cs, "cs r2 r0", "cs_r2_r0"},
    240                            {{cs, r2, r1}, true, cs, "cs r2 r1", "cs_r2_r1"},
    241                            {{cs, r2, r2}, true, cs, "cs r2 r2", "cs_r2_r2"},
    242                            {{cs, r2, r3}, true, cs, "cs r2 r3", "cs_r2_r3"},
    243                            {{cs, r2, r4}, true, cs, "cs r2 r4", "cs_r2_r4"},
    244                            {{cs, r2, r5}, true, cs, "cs r2 r5", "cs_r2_r5"},
    245                            {{cs, r2, r6}, true, cs, "cs r2 r6", "cs_r2_r6"},
    246                            {{cs, r2, r7}, true, cs, "cs r2 r7", "cs_r2_r7"},
    247                            {{cs, r3, r0}, true, cs, "cs r3 r0", "cs_r3_r0"},
    248                            {{cs, r3, r1}, true, cs, "cs r3 r1", "cs_r3_r1"},
    249                            {{cs, r3, r2}, true, cs, "cs r3 r2", "cs_r3_r2"},
    250                            {{cs, r3, r3}, true, cs, "cs r3 r3", "cs_r3_r3"},
    251                            {{cs, r3, r4}, true, cs, "cs r3 r4", "cs_r3_r4"},
    252                            {{cs, r3, r5}, true, cs, "cs r3 r5", "cs_r3_r5"},
    253                            {{cs, r3, r6}, true, cs, "cs r3 r6", "cs_r3_r6"},
    254                            {{cs, r3, r7}, true, cs, "cs r3 r7", "cs_r3_r7"},
    255                            {{cs, r4, r0}, true, cs, "cs r4 r0", "cs_r4_r0"},
    256                            {{cs, r4, r1}, true, cs, "cs r4 r1", "cs_r4_r1"},
    257                            {{cs, r4, r2}, true, cs, "cs r4 r2", "cs_r4_r2"},
    258                            {{cs, r4, r3}, true, cs, "cs r4 r3", "cs_r4_r3"},
    259                            {{cs, r4, r4}, true, cs, "cs r4 r4", "cs_r4_r4"},
    260                            {{cs, r4, r5}, true, cs, "cs r4 r5", "cs_r4_r5"},
    261                            {{cs, r4, r6}, true, cs, "cs r4 r6", "cs_r4_r6"},
    262                            {{cs, r4, r7}, true, cs, "cs r4 r7", "cs_r4_r7"},
    263                            {{cs, r5, r0}, true, cs, "cs r5 r0", "cs_r5_r0"},
    264                            {{cs, r5, r1}, true, cs, "cs r5 r1", "cs_r5_r1"},
    265                            {{cs, r5, r2}, true, cs, "cs r5 r2", "cs_r5_r2"},
    266                            {{cs, r5, r3}, true, cs, "cs r5 r3", "cs_r5_r3"},
    267                            {{cs, r5, r4}, true, cs, "cs r5 r4", "cs_r5_r4"},
    268                            {{cs, r5, r5}, true, cs, "cs r5 r5", "cs_r5_r5"},
    269                            {{cs, r5, r6}, true, cs, "cs r5 r6", "cs_r5_r6"},
    270                            {{cs, r5, r7}, true, cs, "cs r5 r7", "cs_r5_r7"},
    271                            {{cs, r6, r0}, true, cs, "cs r6 r0", "cs_r6_r0"},
    272                            {{cs, r6, r1}, true, cs, "cs r6 r1", "cs_r6_r1"},
    273                            {{cs, r6, r2}, true, cs, "cs r6 r2", "cs_r6_r2"},
    274                            {{cs, r6, r3}, true, cs, "cs r6 r3", "cs_r6_r3"},
    275                            {{cs, r6, r4}, true, cs, "cs r6 r4", "cs_r6_r4"},
    276                            {{cs, r6, r5}, true, cs, "cs r6 r5", "cs_r6_r5"},
    277                            {{cs, r6, r6}, true, cs, "cs r6 r6", "cs_r6_r6"},
    278                            {{cs, r6, r7}, true, cs, "cs r6 r7", "cs_r6_r7"},
    279                            {{cs, r7, r0}, true, cs, "cs r7 r0", "cs_r7_r0"},
    280                            {{cs, r7, r1}, true, cs, "cs r7 r1", "cs_r7_r1"},
    281                            {{cs, r7, r2}, true, cs, "cs r7 r2", "cs_r7_r2"},
    282                            {{cs, r7, r3}, true, cs, "cs r7 r3", "cs_r7_r3"},
    283                            {{cs, r7, r4}, true, cs, "cs r7 r4", "cs_r7_r4"},
    284                            {{cs, r7, r5}, true, cs, "cs r7 r5", "cs_r7_r5"},
    285                            {{cs, r7, r6}, true, cs, "cs r7 r6", "cs_r7_r6"},
    286                            {{cs, r7, r7}, true, cs, "cs r7 r7", "cs_r7_r7"},
    287                            {{cc, r0, r0}, true, cc, "cc r0 r0", "cc_r0_r0"},
    288                            {{cc, r0, r1}, true, cc, "cc r0 r1", "cc_r0_r1"},
    289                            {{cc, r0, r2}, true, cc, "cc r0 r2", "cc_r0_r2"},
    290                            {{cc, r0, r3}, true, cc, "cc r0 r3", "cc_r0_r3"},
    291                            {{cc, r0, r4}, true, cc, "cc r0 r4", "cc_r0_r4"},
    292                            {{cc, r0, r5}, true, cc, "cc r0 r5", "cc_r0_r5"},
    293                            {{cc, r0, r6}, true, cc, "cc r0 r6", "cc_r0_r6"},
    294                            {{cc, r0, r7}, true, cc, "cc r0 r7", "cc_r0_r7"},
    295                            {{cc, r1, r0}, true, cc, "cc r1 r0", "cc_r1_r0"},
    296                            {{cc, r1, r1}, true, cc, "cc r1 r1", "cc_r1_r1"},
    297                            {{cc, r1, r2}, true, cc, "cc r1 r2", "cc_r1_r2"},
    298                            {{cc, r1, r3}, true, cc, "cc r1 r3", "cc_r1_r3"},
    299                            {{cc, r1, r4}, true, cc, "cc r1 r4", "cc_r1_r4"},
    300                            {{cc, r1, r5}, true, cc, "cc r1 r5", "cc_r1_r5"},
    301                            {{cc, r1, r6}, true, cc, "cc r1 r6", "cc_r1_r6"},
    302                            {{cc, r1, r7}, true, cc, "cc r1 r7", "cc_r1_r7"},
    303                            {{cc, r2, r0}, true, cc, "cc r2 r0", "cc_r2_r0"},
    304                            {{cc, r2, r1}, true, cc, "cc r2 r1", "cc_r2_r1"},
    305                            {{cc, r2, r2}, true, cc, "cc r2 r2", "cc_r2_r2"},
    306                            {{cc, r2, r3}, true, cc, "cc r2 r3", "cc_r2_r3"},
    307                            {{cc, r2, r4}, true, cc, "cc r2 r4", "cc_r2_r4"},
    308                            {{cc, r2, r5}, true, cc, "cc r2 r5", "cc_r2_r5"},
    309                            {{cc, r2, r6}, true, cc, "cc r2 r6", "cc_r2_r6"},
    310                            {{cc, r2, r7}, true, cc, "cc r2 r7", "cc_r2_r7"},
    311                            {{cc, r3, r0}, true, cc, "cc r3 r0", "cc_r3_r0"},
    312                            {{cc, r3, r1}, true, cc, "cc r3 r1", "cc_r3_r1"},
    313                            {{cc, r3, r2}, true, cc, "cc r3 r2", "cc_r3_r2"},
    314                            {{cc, r3, r3}, true, cc, "cc r3 r3", "cc_r3_r3"},
    315                            {{cc, r3, r4}, true, cc, "cc r3 r4", "cc_r3_r4"},
    316                            {{cc, r3, r5}, true, cc, "cc r3 r5", "cc_r3_r5"},
    317                            {{cc, r3, r6}, true, cc, "cc r3 r6", "cc_r3_r6"},
    318                            {{cc, r3, r7}, true, cc, "cc r3 r7", "cc_r3_r7"},
    319                            {{cc, r4, r0}, true, cc, "cc r4 r0", "cc_r4_r0"},
    320                            {{cc, r4, r1}, true, cc, "cc r4 r1", "cc_r4_r1"},
    321                            {{cc, r4, r2}, true, cc, "cc r4 r2", "cc_r4_r2"},
    322                            {{cc, r4, r3}, true, cc, "cc r4 r3", "cc_r4_r3"},
    323                            {{cc, r4, r4}, true, cc, "cc r4 r4", "cc_r4_r4"},
    324                            {{cc, r4, r5}, true, cc, "cc r4 r5", "cc_r4_r5"},
    325                            {{cc, r4, r6}, true, cc, "cc r4 r6", "cc_r4_r6"},
    326                            {{cc, r4, r7}, true, cc, "cc r4 r7", "cc_r4_r7"},
    327                            {{cc, r5, r0}, true, cc, "cc r5 r0", "cc_r5_r0"},
    328                            {{cc, r5, r1}, true, cc, "cc r5 r1", "cc_r5_r1"},
    329                            {{cc, r5, r2}, true, cc, "cc r5 r2", "cc_r5_r2"},
    330                            {{cc, r5, r3}, true, cc, "cc r5 r3", "cc_r5_r3"},
    331                            {{cc, r5, r4}, true, cc, "cc r5 r4", "cc_r5_r4"},
    332                            {{cc, r5, r5}, true, cc, "cc r5 r5", "cc_r5_r5"},
    333                            {{cc, r5, r6}, true, cc, "cc r5 r6", "cc_r5_r6"},
    334                            {{cc, r5, r7}, true, cc, "cc r5 r7", "cc_r5_r7"},
    335                            {{cc, r6, r0}, true, cc, "cc r6 r0", "cc_r6_r0"},
    336                            {{cc, r6, r1}, true, cc, "cc r6 r1", "cc_r6_r1"},
    337                            {{cc, r6, r2}, true, cc, "cc r6 r2", "cc_r6_r2"},
    338                            {{cc, r6, r3}, true, cc, "cc r6 r3", "cc_r6_r3"},
    339                            {{cc, r6, r4}, true, cc, "cc r6 r4", "cc_r6_r4"},
    340                            {{cc, r6, r5}, true, cc, "cc r6 r5", "cc_r6_r5"},
    341                            {{cc, r6, r6}, true, cc, "cc r6 r6", "cc_r6_r6"},
    342                            {{cc, r6, r7}, true, cc, "cc r6 r7", "cc_r6_r7"},
    343                            {{cc, r7, r0}, true, cc, "cc r7 r0", "cc_r7_r0"},
    344                            {{cc, r7, r1}, true, cc, "cc r7 r1", "cc_r7_r1"},
    345                            {{cc, r7, r2}, true, cc, "cc r7 r2", "cc_r7_r2"},
    346                            {{cc, r7, r3}, true, cc, "cc r7 r3", "cc_r7_r3"},
    347                            {{cc, r7, r4}, true, cc, "cc r7 r4", "cc_r7_r4"},
    348                            {{cc, r7, r5}, true, cc, "cc r7 r5", "cc_r7_r5"},
    349                            {{cc, r7, r6}, true, cc, "cc r7 r6", "cc_r7_r6"},
    350                            {{cc, r7, r7}, true, cc, "cc r7 r7", "cc_r7_r7"},
    351                            {{mi, r0, r0}, true, mi, "mi r0 r0", "mi_r0_r0"},
    352                            {{mi, r0, r1}, true, mi, "mi r0 r1", "mi_r0_r1"},
    353                            {{mi, r0, r2}, true, mi, "mi r0 r2", "mi_r0_r2"},
    354                            {{mi, r0, r3}, true, mi, "mi r0 r3", "mi_r0_r3"},
    355                            {{mi, r0, r4}, true, mi, "mi r0 r4", "mi_r0_r4"},
    356                            {{mi, r0, r5}, true, mi, "mi r0 r5", "mi_r0_r5"},
    357                            {{mi, r0, r6}, true, mi, "mi r0 r6", "mi_r0_r6"},
    358                            {{mi, r0, r7}, true, mi, "mi r0 r7", "mi_r0_r7"},
    359                            {{mi, r1, r0}, true, mi, "mi r1 r0", "mi_r1_r0"},
    360                            {{mi, r1, r1}, true, mi, "mi r1 r1", "mi_r1_r1"},
    361                            {{mi, r1, r2}, true, mi, "mi r1 r2", "mi_r1_r2"},
    362                            {{mi, r1, r3}, true, mi, "mi r1 r3", "mi_r1_r3"},
    363                            {{mi, r1, r4}, true, mi, "mi r1 r4", "mi_r1_r4"},
    364                            {{mi, r1, r5}, true, mi, "mi r1 r5", "mi_r1_r5"},
    365                            {{mi, r1, r6}, true, mi, "mi r1 r6", "mi_r1_r6"},
    366                            {{mi, r1, r7}, true, mi, "mi r1 r7", "mi_r1_r7"},
    367                            {{mi, r2, r0}, true, mi, "mi r2 r0", "mi_r2_r0"},
    368                            {{mi, r2, r1}, true, mi, "mi r2 r1", "mi_r2_r1"},
    369                            {{mi, r2, r2}, true, mi, "mi r2 r2", "mi_r2_r2"},
    370                            {{mi, r2, r3}, true, mi, "mi r2 r3", "mi_r2_r3"},
    371                            {{mi, r2, r4}, true, mi, "mi r2 r4", "mi_r2_r4"},
    372                            {{mi, r2, r5}, true, mi, "mi r2 r5", "mi_r2_r5"},
    373                            {{mi, r2, r6}, true, mi, "mi r2 r6", "mi_r2_r6"},
    374                            {{mi, r2, r7}, true, mi, "mi r2 r7", "mi_r2_r7"},
    375                            {{mi, r3, r0}, true, mi, "mi r3 r0", "mi_r3_r0"},
    376                            {{mi, r3, r1}, true, mi, "mi r3 r1", "mi_r3_r1"},
    377                            {{mi, r3, r2}, true, mi, "mi r3 r2", "mi_r3_r2"},
    378                            {{mi, r3, r3}, true, mi, "mi r3 r3", "mi_r3_r3"},
    379                            {{mi, r3, r4}, true, mi, "mi r3 r4", "mi_r3_r4"},
    380                            {{mi, r3, r5}, true, mi, "mi r3 r5", "mi_r3_r5"},
    381                            {{mi, r3, r6}, true, mi, "mi r3 r6", "mi_r3_r6"},
    382                            {{mi, r3, r7}, true, mi, "mi r3 r7", "mi_r3_r7"},
    383                            {{mi, r4, r0}, true, mi, "mi r4 r0", "mi_r4_r0"},
    384                            {{mi, r4, r1}, true, mi, "mi r4 r1", "mi_r4_r1"},
    385                            {{mi, r4, r2}, true, mi, "mi r4 r2", "mi_r4_r2"},
    386                            {{mi, r4, r3}, true, mi, "mi r4 r3", "mi_r4_r3"},
    387                            {{mi, r4, r4}, true, mi, "mi r4 r4", "mi_r4_r4"},
    388                            {{mi, r4, r5}, true, mi, "mi r4 r5", "mi_r4_r5"},
    389                            {{mi, r4, r6}, true, mi, "mi r4 r6", "mi_r4_r6"},
    390                            {{mi, r4, r7}, true, mi, "mi r4 r7", "mi_r4_r7"},
    391                            {{mi, r5, r0}, true, mi, "mi r5 r0", "mi_r5_r0"},
    392                            {{mi, r5, r1}, true, mi, "mi r5 r1", "mi_r5_r1"},
    393                            {{mi, r5, r2}, true, mi, "mi r5 r2", "mi_r5_r2"},
    394                            {{mi, r5, r3}, true, mi, "mi r5 r3", "mi_r5_r3"},
    395                            {{mi, r5, r4}, true, mi, "mi r5 r4", "mi_r5_r4"},
    396                            {{mi, r5, r5}, true, mi, "mi r5 r5", "mi_r5_r5"},
    397                            {{mi, r5, r6}, true, mi, "mi r5 r6", "mi_r5_r6"},
    398                            {{mi, r5, r7}, true, mi, "mi r5 r7", "mi_r5_r7"},
    399                            {{mi, r6, r0}, true, mi, "mi r6 r0", "mi_r6_r0"},
    400                            {{mi, r6, r1}, true, mi, "mi r6 r1", "mi_r6_r1"},
    401                            {{mi, r6, r2}, true, mi, "mi r6 r2", "mi_r6_r2"},
    402                            {{mi, r6, r3}, true, mi, "mi r6 r3", "mi_r6_r3"},
    403                            {{mi, r6, r4}, true, mi, "mi r6 r4", "mi_r6_r4"},
    404                            {{mi, r6, r5}, true, mi, "mi r6 r5", "mi_r6_r5"},
    405                            {{mi, r6, r6}, true, mi, "mi r6 r6", "mi_r6_r6"},
    406                            {{mi, r6, r7}, true, mi, "mi r6 r7", "mi_r6_r7"},
    407                            {{mi, r7, r0}, true, mi, "mi r7 r0", "mi_r7_r0"},
    408                            {{mi, r7, r1}, true, mi, "mi r7 r1", "mi_r7_r1"},
    409                            {{mi, r7, r2}, true, mi, "mi r7 r2", "mi_r7_r2"},
    410                            {{mi, r7, r3}, true, mi, "mi r7 r3", "mi_r7_r3"},
    411                            {{mi, r7, r4}, true, mi, "mi r7 r4", "mi_r7_r4"},
    412                            {{mi, r7, r5}, true, mi, "mi r7 r5", "mi_r7_r5"},
    413                            {{mi, r7, r6}, true, mi, "mi r7 r6", "mi_r7_r6"},
    414                            {{mi, r7, r7}, true, mi, "mi r7 r7", "mi_r7_r7"},
    415                            {{pl, r0, r0}, true, pl, "pl r0 r0", "pl_r0_r0"},
    416                            {{pl, r0, r1}, true, pl, "pl r0 r1", "pl_r0_r1"},
    417                            {{pl, r0, r2}, true, pl, "pl r0 r2", "pl_r0_r2"},
    418                            {{pl, r0, r3}, true, pl, "pl r0 r3", "pl_r0_r3"},
    419                            {{pl, r0, r4}, true, pl, "pl r0 r4", "pl_r0_r4"},
    420                            {{pl, r0, r5}, true, pl, "pl r0 r5", "pl_r0_r5"},
    421                            {{pl, r0, r6}, true, pl, "pl r0 r6", "pl_r0_r6"},
    422                            {{pl, r0, r7}, true, pl, "pl r0 r7", "pl_r0_r7"},
    423                            {{pl, r1, r0}, true, pl, "pl r1 r0", "pl_r1_r0"},
    424                            {{pl, r1, r1}, true, pl, "pl r1 r1", "pl_r1_r1"},
    425                            {{pl, r1, r2}, true, pl, "pl r1 r2", "pl_r1_r2"},
    426                            {{pl, r1, r3}, true, pl, "pl r1 r3", "pl_r1_r3"},
    427                            {{pl, r1, r4}, true, pl, "pl r1 r4", "pl_r1_r4"},
    428                            {{pl, r1, r5}, true, pl, "pl r1 r5", "pl_r1_r5"},
    429                            {{pl, r1, r6}, true, pl, "pl r1 r6", "pl_r1_r6"},
    430                            {{pl, r1, r7}, true, pl, "pl r1 r7", "pl_r1_r7"},
    431                            {{pl, r2, r0}, true, pl, "pl r2 r0", "pl_r2_r0"},
    432                            {{pl, r2, r1}, true, pl, "pl r2 r1", "pl_r2_r1"},
    433                            {{pl, r2, r2}, true, pl, "pl r2 r2", "pl_r2_r2"},
    434                            {{pl, r2, r3}, true, pl, "pl r2 r3", "pl_r2_r3"},
    435                            {{pl, r2, r4}, true, pl, "pl r2 r4", "pl_r2_r4"},
    436                            {{pl, r2, r5}, true, pl, "pl r2 r5", "pl_r2_r5"},
    437                            {{pl, r2, r6}, true, pl, "pl r2 r6", "pl_r2_r6"},
    438                            {{pl, r2, r7}, true, pl, "pl r2 r7", "pl_r2_r7"},
    439                            {{pl, r3, r0}, true, pl, "pl r3 r0", "pl_r3_r0"},
    440                            {{pl, r3, r1}, true, pl, "pl r3 r1", "pl_r3_r1"},
    441                            {{pl, r3, r2}, true, pl, "pl r3 r2", "pl_r3_r2"},
    442                            {{pl, r3, r3}, true, pl, "pl r3 r3", "pl_r3_r3"},
    443                            {{pl, r3, r4}, true, pl, "pl r3 r4", "pl_r3_r4"},
    444                            {{pl, r3, r5}, true, pl, "pl r3 r5", "pl_r3_r5"},
    445                            {{pl, r3, r6}, true, pl, "pl r3 r6", "pl_r3_r6"},
    446                            {{pl, r3, r7}, true, pl, "pl r3 r7", "pl_r3_r7"},
    447                            {{pl, r4, r0}, true, pl, "pl r4 r0", "pl_r4_r0"},
    448                            {{pl, r4, r1}, true, pl, "pl r4 r1", "pl_r4_r1"},
    449                            {{pl, r4, r2}, true, pl, "pl r4 r2", "pl_r4_r2"},
    450                            {{pl, r4, r3}, true, pl, "pl r4 r3", "pl_r4_r3"},
    451                            {{pl, r4, r4}, true, pl, "pl r4 r4", "pl_r4_r4"},
    452                            {{pl, r4, r5}, true, pl, "pl r4 r5", "pl_r4_r5"},
    453                            {{pl, r4, r6}, true, pl, "pl r4 r6", "pl_r4_r6"},
    454                            {{pl, r4, r7}, true, pl, "pl r4 r7", "pl_r4_r7"},
    455                            {{pl, r5, r0}, true, pl, "pl r5 r0", "pl_r5_r0"},
    456                            {{pl, r5, r1}, true, pl, "pl r5 r1", "pl_r5_r1"},
    457                            {{pl, r5, r2}, true, pl, "pl r5 r2", "pl_r5_r2"},
    458                            {{pl, r5, r3}, true, pl, "pl r5 r3", "pl_r5_r3"},
    459                            {{pl, r5, r4}, true, pl, "pl r5 r4", "pl_r5_r4"},
    460                            {{pl, r5, r5}, true, pl, "pl r5 r5", "pl_r5_r5"},
    461                            {{pl, r5, r6}, true, pl, "pl r5 r6", "pl_r5_r6"},
    462                            {{pl, r5, r7}, true, pl, "pl r5 r7", "pl_r5_r7"},
    463                            {{pl, r6, r0}, true, pl, "pl r6 r0", "pl_r6_r0"},
    464                            {{pl, r6, r1}, true, pl, "pl r6 r1", "pl_r6_r1"},
    465                            {{pl, r6, r2}, true, pl, "pl r6 r2", "pl_r6_r2"},
    466                            {{pl, r6, r3}, true, pl, "pl r6 r3", "pl_r6_r3"},
    467                            {{pl, r6, r4}, true, pl, "pl r6 r4", "pl_r6_r4"},
    468                            {{pl, r6, r5}, true, pl, "pl r6 r5", "pl_r6_r5"},
    469                            {{pl, r6, r6}, true, pl, "pl r6 r6", "pl_r6_r6"},
    470                            {{pl, r6, r7}, true, pl, "pl r6 r7", "pl_r6_r7"},
    471                            {{pl, r7, r0}, true, pl, "pl r7 r0", "pl_r7_r0"},
    472                            {{pl, r7, r1}, true, pl, "pl r7 r1", "pl_r7_r1"},
    473                            {{pl, r7, r2}, true, pl, "pl r7 r2", "pl_r7_r2"},
    474                            {{pl, r7, r3}, true, pl, "pl r7 r3", "pl_r7_r3"},
    475                            {{pl, r7, r4}, true, pl, "pl r7 r4", "pl_r7_r4"},
    476                            {{pl, r7, r5}, true, pl, "pl r7 r5", "pl_r7_r5"},
    477                            {{pl, r7, r6}, true, pl, "pl r7 r6", "pl_r7_r6"},
    478                            {{pl, r7, r7}, true, pl, "pl r7 r7", "pl_r7_r7"},
    479                            {{vs, r0, r0}, true, vs, "vs r0 r0", "vs_r0_r0"},
    480                            {{vs, r0, r1}, true, vs, "vs r0 r1", "vs_r0_r1"},
    481                            {{vs, r0, r2}, true, vs, "vs r0 r2", "vs_r0_r2"},
    482                            {{vs, r0, r3}, true, vs, "vs r0 r3", "vs_r0_r3"},
    483                            {{vs, r0, r4}, true, vs, "vs r0 r4", "vs_r0_r4"},
    484                            {{vs, r0, r5}, true, vs, "vs r0 r5", "vs_r0_r5"},
    485                            {{vs, r0, r6}, true, vs, "vs r0 r6", "vs_r0_r6"},
    486                            {{vs, r0, r7}, true, vs, "vs r0 r7", "vs_r0_r7"},
    487                            {{vs, r1, r0}, true, vs, "vs r1 r0", "vs_r1_r0"},
    488                            {{vs, r1, r1}, true, vs, "vs r1 r1", "vs_r1_r1"},
    489                            {{vs, r1, r2}, true, vs, "vs r1 r2", "vs_r1_r2"},
    490                            {{vs, r1, r3}, true, vs, "vs r1 r3", "vs_r1_r3"},
    491                            {{vs, r1, r4}, true, vs, "vs r1 r4", "vs_r1_r4"},
    492                            {{vs, r1, r5}, true, vs, "vs r1 r5", "vs_r1_r5"},
    493                            {{vs, r1, r6}, true, vs, "vs r1 r6", "vs_r1_r6"},
    494                            {{vs, r1, r7}, true, vs, "vs r1 r7", "vs_r1_r7"},
    495                            {{vs, r2, r0}, true, vs, "vs r2 r0", "vs_r2_r0"},
    496                            {{vs, r2, r1}, true, vs, "vs r2 r1", "vs_r2_r1"},
    497                            {{vs, r2, r2}, true, vs, "vs r2 r2", "vs_r2_r2"},
    498                            {{vs, r2, r3}, true, vs, "vs r2 r3", "vs_r2_r3"},
    499                            {{vs, r2, r4}, true, vs, "vs r2 r4", "vs_r2_r4"},
    500                            {{vs, r2, r5}, true, vs, "vs r2 r5", "vs_r2_r5"},
    501                            {{vs, r2, r6}, true, vs, "vs r2 r6", "vs_r2_r6"},
    502                            {{vs, r2, r7}, true, vs, "vs r2 r7", "vs_r2_r7"},
    503                            {{vs, r3, r0}, true, vs, "vs r3 r0", "vs_r3_r0"},
    504                            {{vs, r3, r1}, true, vs, "vs r3 r1", "vs_r3_r1"},
    505                            {{vs, r3, r2}, true, vs, "vs r3 r2", "vs_r3_r2"},
    506                            {{vs, r3, r3}, true, vs, "vs r3 r3", "vs_r3_r3"},
    507                            {{vs, r3, r4}, true, vs, "vs r3 r4", "vs_r3_r4"},
    508                            {{vs, r3, r5}, true, vs, "vs r3 r5", "vs_r3_r5"},
    509                            {{vs, r3, r6}, true, vs, "vs r3 r6", "vs_r3_r6"},
    510                            {{vs, r3, r7}, true, vs, "vs r3 r7", "vs_r3_r7"},
    511                            {{vs, r4, r0}, true, vs, "vs r4 r0", "vs_r4_r0"},
    512                            {{vs, r4, r1}, true, vs, "vs r4 r1", "vs_r4_r1"},
    513                            {{vs, r4, r2}, true, vs, "vs r4 r2", "vs_r4_r2"},
    514                            {{vs, r4, r3}, true, vs, "vs r4 r3", "vs_r4_r3"},
    515                            {{vs, r4, r4}, true, vs, "vs r4 r4", "vs_r4_r4"},
    516                            {{vs, r4, r5}, true, vs, "vs r4 r5", "vs_r4_r5"},
    517                            {{vs, r4, r6}, true, vs, "vs r4 r6", "vs_r4_r6"},
    518                            {{vs, r4, r7}, true, vs, "vs r4 r7", "vs_r4_r7"},
    519                            {{vs, r5, r0}, true, vs, "vs r5 r0", "vs_r5_r0"},
    520                            {{vs, r5, r1}, true, vs, "vs r5 r1", "vs_r5_r1"},
    521                            {{vs, r5, r2}, true, vs, "vs r5 r2", "vs_r5_r2"},
    522                            {{vs, r5, r3}, true, vs, "vs r5 r3", "vs_r5_r3"},
    523                            {{vs, r5, r4}, true, vs, "vs r5 r4", "vs_r5_r4"},
    524                            {{vs, r5, r5}, true, vs, "vs r5 r5", "vs_r5_r5"},
    525                            {{vs, r5, r6}, true, vs, "vs r5 r6", "vs_r5_r6"},
    526                            {{vs, r5, r7}, true, vs, "vs r5 r7", "vs_r5_r7"},
    527                            {{vs, r6, r0}, true, vs, "vs r6 r0", "vs_r6_r0"},
    528                            {{vs, r6, r1}, true, vs, "vs r6 r1", "vs_r6_r1"},
    529                            {{vs, r6, r2}, true, vs, "vs r6 r2", "vs_r6_r2"},
    530                            {{vs, r6, r3}, true, vs, "vs r6 r3", "vs_r6_r3"},
    531                            {{vs, r6, r4}, true, vs, "vs r6 r4", "vs_r6_r4"},
    532                            {{vs, r6, r5}, true, vs, "vs r6 r5", "vs_r6_r5"},
    533                            {{vs, r6, r6}, true, vs, "vs r6 r6", "vs_r6_r6"},
    534                            {{vs, r6, r7}, true, vs, "vs r6 r7", "vs_r6_r7"},
    535                            {{vs, r7, r0}, true, vs, "vs r7 r0", "vs_r7_r0"},
    536                            {{vs, r7, r1}, true, vs, "vs r7 r1", "vs_r7_r1"},
    537                            {{vs, r7, r2}, true, vs, "vs r7 r2", "vs_r7_r2"},
    538                            {{vs, r7, r3}, true, vs, "vs r7 r3", "vs_r7_r3"},
    539                            {{vs, r7, r4}, true, vs, "vs r7 r4", "vs_r7_r4"},
    540                            {{vs, r7, r5}, true, vs, "vs r7 r5", "vs_r7_r5"},
    541                            {{vs, r7, r6}, true, vs, "vs r7 r6", "vs_r7_r6"},
    542                            {{vs, r7, r7}, true, vs, "vs r7 r7", "vs_r7_r7"},
    543                            {{vc, r0, r0}, true, vc, "vc r0 r0", "vc_r0_r0"},
    544                            {{vc, r0, r1}, true, vc, "vc r0 r1", "vc_r0_r1"},
    545                            {{vc, r0, r2}, true, vc, "vc r0 r2", "vc_r0_r2"},
    546                            {{vc, r0, r3}, true, vc, "vc r0 r3", "vc_r0_r3"},
    547                            {{vc, r0, r4}, true, vc, "vc r0 r4", "vc_r0_r4"},
    548                            {{vc, r0, r5}, true, vc, "vc r0 r5", "vc_r0_r5"},
    549                            {{vc, r0, r6}, true, vc, "vc r0 r6", "vc_r0_r6"},
    550                            {{vc, r0, r7}, true, vc, "vc r0 r7", "vc_r0_r7"},
    551                            {{vc, r1, r0}, true, vc, "vc r1 r0", "vc_r1_r0"},
    552                            {{vc, r1, r1}, true, vc, "vc r1 r1", "vc_r1_r1"},
    553                            {{vc, r1, r2}, true, vc, "vc r1 r2", "vc_r1_r2"},
    554                            {{vc, r1, r3}, true, vc, "vc r1 r3", "vc_r1_r3"},
    555                            {{vc, r1, r4}, true, vc, "vc r1 r4", "vc_r1_r4"},
    556                            {{vc, r1, r5}, true, vc, "vc r1 r5", "vc_r1_r5"},
    557                            {{vc, r1, r6}, true, vc, "vc r1 r6", "vc_r1_r6"},
    558                            {{vc, r1, r7}, true, vc, "vc r1 r7", "vc_r1_r7"},
    559                            {{vc, r2, r0}, true, vc, "vc r2 r0", "vc_r2_r0"},
    560                            {{vc, r2, r1}, true, vc, "vc r2 r1", "vc_r2_r1"},
    561                            {{vc, r2, r2}, true, vc, "vc r2 r2", "vc_r2_r2"},
    562                            {{vc, r2, r3}, true, vc, "vc r2 r3", "vc_r2_r3"},
    563                            {{vc, r2, r4}, true, vc, "vc r2 r4", "vc_r2_r4"},
    564                            {{vc, r2, r5}, true, vc, "vc r2 r5", "vc_r2_r5"},
    565                            {{vc, r2, r6}, true, vc, "vc r2 r6", "vc_r2_r6"},
    566                            {{vc, r2, r7}, true, vc, "vc r2 r7", "vc_r2_r7"},
    567                            {{vc, r3, r0}, true, vc, "vc r3 r0", "vc_r3_r0"},
    568                            {{vc, r3, r1}, true, vc, "vc r3 r1", "vc_r3_r1"},
    569                            {{vc, r3, r2}, true, vc, "vc r3 r2", "vc_r3_r2"},
    570                            {{vc, r3, r3}, true, vc, "vc r3 r3", "vc_r3_r3"},
    571                            {{vc, r3, r4}, true, vc, "vc r3 r4", "vc_r3_r4"},
    572                            {{vc, r3, r5}, true, vc, "vc r3 r5", "vc_r3_r5"},
    573                            {{vc, r3, r6}, true, vc, "vc r3 r6", "vc_r3_r6"},
    574                            {{vc, r3, r7}, true, vc, "vc r3 r7", "vc_r3_r7"},
    575                            {{vc, r4, r0}, true, vc, "vc r4 r0", "vc_r4_r0"},
    576                            {{vc, r4, r1}, true, vc, "vc r4 r1", "vc_r4_r1"},
    577                            {{vc, r4, r2}, true, vc, "vc r4 r2", "vc_r4_r2"},
    578                            {{vc, r4, r3}, true, vc, "vc r4 r3", "vc_r4_r3"},
    579                            {{vc, r4, r4}, true, vc, "vc r4 r4", "vc_r4_r4"},
    580                            {{vc, r4, r5}, true, vc, "vc r4 r5", "vc_r4_r5"},
    581                            {{vc, r4, r6}, true, vc, "vc r4 r6", "vc_r4_r6"},
    582                            {{vc, r4, r7}, true, vc, "vc r4 r7", "vc_r4_r7"},
    583                            {{vc, r5, r0}, true, vc, "vc r5 r0", "vc_r5_r0"},
    584                            {{vc, r5, r1}, true, vc, "vc r5 r1", "vc_r5_r1"},
    585                            {{vc, r5, r2}, true, vc, "vc r5 r2", "vc_r5_r2"},
    586                            {{vc, r5, r3}, true, vc, "vc r5 r3", "vc_r5_r3"},
    587                            {{vc, r5, r4}, true, vc, "vc r5 r4", "vc_r5_r4"},
    588                            {{vc, r5, r5}, true, vc, "vc r5 r5", "vc_r5_r5"},
    589                            {{vc, r5, r6}, true, vc, "vc r5 r6", "vc_r5_r6"},
    590                            {{vc, r5, r7}, true, vc, "vc r5 r7", "vc_r5_r7"},
    591                            {{vc, r6, r0}, true, vc, "vc r6 r0", "vc_r6_r0"},
    592                            {{vc, r6, r1}, true, vc, "vc r6 r1", "vc_r6_r1"},
    593                            {{vc, r6, r2}, true, vc, "vc r6 r2", "vc_r6_r2"},
    594                            {{vc, r6, r3}, true, vc, "vc r6 r3", "vc_r6_r3"},
    595                            {{vc, r6, r4}, true, vc, "vc r6 r4", "vc_r6_r4"},
    596                            {{vc, r6, r5}, true, vc, "vc r6 r5", "vc_r6_r5"},
    597                            {{vc, r6, r6}, true, vc, "vc r6 r6", "vc_r6_r6"},
    598                            {{vc, r6, r7}, true, vc, "vc r6 r7", "vc_r6_r7"},
    599                            {{vc, r7, r0}, true, vc, "vc r7 r0", "vc_r7_r0"},
    600                            {{vc, r7, r1}, true, vc, "vc r7 r1", "vc_r7_r1"},
    601                            {{vc, r7, r2}, true, vc, "vc r7 r2", "vc_r7_r2"},
    602                            {{vc, r7, r3}, true, vc, "vc r7 r3", "vc_r7_r3"},
    603                            {{vc, r7, r4}, true, vc, "vc r7 r4", "vc_r7_r4"},
    604                            {{vc, r7, r5}, true, vc, "vc r7 r5", "vc_r7_r5"},
    605                            {{vc, r7, r6}, true, vc, "vc r7 r6", "vc_r7_r6"},
    606                            {{vc, r7, r7}, true, vc, "vc r7 r7", "vc_r7_r7"},
    607                            {{hi, r0, r0}, true, hi, "hi r0 r0", "hi_r0_r0"},
    608                            {{hi, r0, r1}, true, hi, "hi r0 r1", "hi_r0_r1"},
    609                            {{hi, r0, r2}, true, hi, "hi r0 r2", "hi_r0_r2"},
    610                            {{hi, r0, r3}, true, hi, "hi r0 r3", "hi_r0_r3"},
    611                            {{hi, r0, r4}, true, hi, "hi r0 r4", "hi_r0_r4"},
    612                            {{hi, r0, r5}, true, hi, "hi r0 r5", "hi_r0_r5"},
    613                            {{hi, r0, r6}, true, hi, "hi r0 r6", "hi_r0_r6"},
    614                            {{hi, r0, r7}, true, hi, "hi r0 r7", "hi_r0_r7"},
    615                            {{hi, r1, r0}, true, hi, "hi r1 r0", "hi_r1_r0"},
    616                            {{hi, r1, r1}, true, hi, "hi r1 r1", "hi_r1_r1"},
    617                            {{hi, r1, r2}, true, hi, "hi r1 r2", "hi_r1_r2"},
    618                            {{hi, r1, r3}, true, hi, "hi r1 r3", "hi_r1_r3"},
    619                            {{hi, r1, r4}, true, hi, "hi r1 r4", "hi_r1_r4"},
    620                            {{hi, r1, r5}, true, hi, "hi r1 r5", "hi_r1_r5"},
    621                            {{hi, r1, r6}, true, hi, "hi r1 r6", "hi_r1_r6"},
    622                            {{hi, r1, r7}, true, hi, "hi r1 r7", "hi_r1_r7"},
    623                            {{hi, r2, r0}, true, hi, "hi r2 r0", "hi_r2_r0"},
    624                            {{hi, r2, r1}, true, hi, "hi r2 r1", "hi_r2_r1"},
    625                            {{hi, r2, r2}, true, hi, "hi r2 r2", "hi_r2_r2"},
    626                            {{hi, r2, r3}, true, hi, "hi r2 r3", "hi_r2_r3"},
    627                            {{hi, r2, r4}, true, hi, "hi r2 r4", "hi_r2_r4"},
    628                            {{hi, r2, r5}, true, hi, "hi r2 r5", "hi_r2_r5"},
    629                            {{hi, r2, r6}, true, hi, "hi r2 r6", "hi_r2_r6"},
    630                            {{hi, r2, r7}, true, hi, "hi r2 r7", "hi_r2_r7"},
    631                            {{hi, r3, r0}, true, hi, "hi r3 r0", "hi_r3_r0"},
    632                            {{hi, r3, r1}, true, hi, "hi r3 r1", "hi_r3_r1"},
    633                            {{hi, r3, r2}, true, hi, "hi r3 r2", "hi_r3_r2"},
    634                            {{hi, r3, r3}, true, hi, "hi r3 r3", "hi_r3_r3"},
    635                            {{hi, r3, r4}, true, hi, "hi r3 r4", "hi_r3_r4"},
    636                            {{hi, r3, r5}, true, hi, "hi r3 r5", "hi_r3_r5"},
    637                            {{hi, r3, r6}, true, hi, "hi r3 r6", "hi_r3_r6"},
    638                            {{hi, r3, r7}, true, hi, "hi r3 r7", "hi_r3_r7"},
    639                            {{hi, r4, r0}, true, hi, "hi r4 r0", "hi_r4_r0"},
    640                            {{hi, r4, r1}, true, hi, "hi r4 r1", "hi_r4_r1"},
    641                            {{hi, r4, r2}, true, hi, "hi r4 r2", "hi_r4_r2"},
    642                            {{hi, r4, r3}, true, hi, "hi r4 r3", "hi_r4_r3"},
    643                            {{hi, r4, r4}, true, hi, "hi r4 r4", "hi_r4_r4"},
    644                            {{hi, r4, r5}, true, hi, "hi r4 r5", "hi_r4_r5"},
    645                            {{hi, r4, r6}, true, hi, "hi r4 r6", "hi_r4_r6"},
    646                            {{hi, r4, r7}, true, hi, "hi r4 r7", "hi_r4_r7"},
    647                            {{hi, r5, r0}, true, hi, "hi r5 r0", "hi_r5_r0"},
    648                            {{hi, r5, r1}, true, hi, "hi r5 r1", "hi_r5_r1"},
    649                            {{hi, r5, r2}, true, hi, "hi r5 r2", "hi_r5_r2"},
    650                            {{hi, r5, r3}, true, hi, "hi r5 r3", "hi_r5_r3"},
    651                            {{hi, r5, r4}, true, hi, "hi r5 r4", "hi_r5_r4"},
    652                            {{hi, r5, r5}, true, hi, "hi r5 r5", "hi_r5_r5"},
    653                            {{hi, r5, r6}, true, hi, "hi r5 r6", "hi_r5_r6"},
    654                            {{hi, r5, r7}, true, hi, "hi r5 r7", "hi_r5_r7"},
    655                            {{hi, r6, r0}, true, hi, "hi r6 r0", "hi_r6_r0"},
    656                            {{hi, r6, r1}, true, hi, "hi r6 r1", "hi_r6_r1"},
    657                            {{hi, r6, r2}, true, hi, "hi r6 r2", "hi_r6_r2"},
    658                            {{hi, r6, r3}, true, hi, "hi r6 r3", "hi_r6_r3"},
    659                            {{hi, r6, r4}, true, hi, "hi r6 r4", "hi_r6_r4"},
    660                            {{hi, r6, r5}, true, hi, "hi r6 r5", "hi_r6_r5"},
    661                            {{hi, r6, r6}, true, hi, "hi r6 r6", "hi_r6_r6"},
    662                            {{hi, r6, r7}, true, hi, "hi r6 r7", "hi_r6_r7"},
    663                            {{hi, r7, r0}, true, hi, "hi r7 r0", "hi_r7_r0"},
    664                            {{hi, r7, r1}, true, hi, "hi r7 r1", "hi_r7_r1"},
    665                            {{hi, r7, r2}, true, hi, "hi r7 r2", "hi_r7_r2"},
    666                            {{hi, r7, r3}, true, hi, "hi r7 r3", "hi_r7_r3"},
    667                            {{hi, r7, r4}, true, hi, "hi r7 r4", "hi_r7_r4"},
    668                            {{hi, r7, r5}, true, hi, "hi r7 r5", "hi_r7_r5"},
    669                            {{hi, r7, r6}, true, hi, "hi r7 r6", "hi_r7_r6"},
    670                            {{hi, r7, r7}, true, hi, "hi r7 r7", "hi_r7_r7"},
    671                            {{ls, r0, r0}, true, ls, "ls r0 r0", "ls_r0_r0"},
    672                            {{ls, r0, r1}, true, ls, "ls r0 r1", "ls_r0_r1"},
    673                            {{ls, r0, r2}, true, ls, "ls r0 r2", "ls_r0_r2"},
    674                            {{ls, r0, r3}, true, ls, "ls r0 r3", "ls_r0_r3"},
    675                            {{ls, r0, r4}, true, ls, "ls r0 r4", "ls_r0_r4"},
    676                            {{ls, r0, r5}, true, ls, "ls r0 r5", "ls_r0_r5"},
    677                            {{ls, r0, r6}, true, ls, "ls r0 r6", "ls_r0_r6"},
    678                            {{ls, r0, r7}, true, ls, "ls r0 r7", "ls_r0_r7"},
    679                            {{ls, r1, r0}, true, ls, "ls r1 r0", "ls_r1_r0"},
    680                            {{ls, r1, r1}, true, ls, "ls r1 r1", "ls_r1_r1"},
    681                            {{ls, r1, r2}, true, ls, "ls r1 r2", "ls_r1_r2"},
    682                            {{ls, r1, r3}, true, ls, "ls r1 r3", "ls_r1_r3"},
    683                            {{ls, r1, r4}, true, ls, "ls r1 r4", "ls_r1_r4"},
    684                            {{ls, r1, r5}, true, ls, "ls r1 r5", "ls_r1_r5"},
    685                            {{ls, r1, r6}, true, ls, "ls r1 r6", "ls_r1_r6"},
    686                            {{ls, r1, r7}, true, ls, "ls r1 r7", "ls_r1_r7"},
    687                            {{ls, r2, r0}, true, ls, "ls r2 r0", "ls_r2_r0"},
    688                            {{ls, r2, r1}, true, ls, "ls r2 r1", "ls_r2_r1"},
    689                            {{ls, r2, r2}, true, ls, "ls r2 r2", "ls_r2_r2"},
    690                            {{ls, r2, r3}, true, ls, "ls r2 r3", "ls_r2_r3"},
    691                            {{ls, r2, r4}, true, ls, "ls r2 r4", "ls_r2_r4"},
    692                            {{ls, r2, r5}, true, ls, "ls r2 r5", "ls_r2_r5"},
    693                            {{ls, r2, r6}, true, ls, "ls r2 r6", "ls_r2_r6"},
    694                            {{ls, r2, r7}, true, ls, "ls r2 r7", "ls_r2_r7"},
    695                            {{ls, r3, r0}, true, ls, "ls r3 r0", "ls_r3_r0"},
    696                            {{ls, r3, r1}, true, ls, "ls r3 r1", "ls_r3_r1"},
    697                            {{ls, r3, r2}, true, ls, "ls r3 r2", "ls_r3_r2"},
    698                            {{ls, r3, r3}, true, ls, "ls r3 r3", "ls_r3_r3"},
    699                            {{ls, r3, r4}, true, ls, "ls r3 r4", "ls_r3_r4"},
    700                            {{ls, r3, r5}, true, ls, "ls r3 r5", "ls_r3_r5"},
    701                            {{ls, r3, r6}, true, ls, "ls r3 r6", "ls_r3_r6"},
    702                            {{ls, r3, r7}, true, ls, "ls r3 r7", "ls_r3_r7"},
    703                            {{ls, r4, r0}, true, ls, "ls r4 r0", "ls_r4_r0"},
    704                            {{ls, r4, r1}, true, ls, "ls r4 r1", "ls_r4_r1"},
    705                            {{ls, r4, r2}, true, ls, "ls r4 r2", "ls_r4_r2"},
    706                            {{ls, r4, r3}, true, ls, "ls r4 r3", "ls_r4_r3"},
    707                            {{ls, r4, r4}, true, ls, "ls r4 r4", "ls_r4_r4"},
    708                            {{ls, r4, r5}, true, ls, "ls r4 r5", "ls_r4_r5"},
    709                            {{ls, r4, r6}, true, ls, "ls r4 r6", "ls_r4_r6"},
    710                            {{ls, r4, r7}, true, ls, "ls r4 r7", "ls_r4_r7"},
    711                            {{ls, r5, r0}, true, ls, "ls r5 r0", "ls_r5_r0"},
    712                            {{ls, r5, r1}, true, ls, "ls r5 r1", "ls_r5_r1"},
    713                            {{ls, r5, r2}, true, ls, "ls r5 r2", "ls_r5_r2"},
    714                            {{ls, r5, r3}, true, ls, "ls r5 r3", "ls_r5_r3"},
    715                            {{ls, r5, r4}, true, ls, "ls r5 r4", "ls_r5_r4"},
    716                            {{ls, r5, r5}, true, ls, "ls r5 r5", "ls_r5_r5"},
    717                            {{ls, r5, r6}, true, ls, "ls r5 r6", "ls_r5_r6"},
    718                            {{ls, r5, r7}, true, ls, "ls r5 r7", "ls_r5_r7"},
    719                            {{ls, r6, r0}, true, ls, "ls r6 r0", "ls_r6_r0"},
    720                            {{ls, r6, r1}, true, ls, "ls r6 r1", "ls_r6_r1"},
    721                            {{ls, r6, r2}, true, ls, "ls r6 r2", "ls_r6_r2"},
    722                            {{ls, r6, r3}, true, ls, "ls r6 r3", "ls_r6_r3"},
    723                            {{ls, r6, r4}, true, ls, "ls r6 r4", "ls_r6_r4"},
    724                            {{ls, r6, r5}, true, ls, "ls r6 r5", "ls_r6_r5"},
    725                            {{ls, r6, r6}, true, ls, "ls r6 r6", "ls_r6_r6"},
    726                            {{ls, r6, r7}, true, ls, "ls r6 r7", "ls_r6_r7"},
    727                            {{ls, r7, r0}, true, ls, "ls r7 r0", "ls_r7_r0"},
    728                            {{ls, r7, r1}, true, ls, "ls r7 r1", "ls_r7_r1"},
    729                            {{ls, r7, r2}, true, ls, "ls r7 r2", "ls_r7_r2"},
    730                            {{ls, r7, r3}, true, ls, "ls r7 r3", "ls_r7_r3"},
    731                            {{ls, r7, r4}, true, ls, "ls r7 r4", "ls_r7_r4"},
    732                            {{ls, r7, r5}, true, ls, "ls r7 r5", "ls_r7_r5"},
    733                            {{ls, r7, r6}, true, ls, "ls r7 r6", "ls_r7_r6"},
    734                            {{ls, r7, r7}, true, ls, "ls r7 r7", "ls_r7_r7"},
    735                            {{ge, r0, r0}, true, ge, "ge r0 r0", "ge_r0_r0"},
    736                            {{ge, r0, r1}, true, ge, "ge r0 r1", "ge_r0_r1"},
    737                            {{ge, r0, r2}, true, ge, "ge r0 r2", "ge_r0_r2"},
    738                            {{ge, r0, r3}, true, ge, "ge r0 r3", "ge_r0_r3"},
    739                            {{ge, r0, r4}, true, ge, "ge r0 r4", "ge_r0_r4"},
    740                            {{ge, r0, r5}, true, ge, "ge r0 r5", "ge_r0_r5"},
    741                            {{ge, r0, r6}, true, ge, "ge r0 r6", "ge_r0_r6"},
    742                            {{ge, r0, r7}, true, ge, "ge r0 r7", "ge_r0_r7"},
    743                            {{ge, r1, r0}, true, ge, "ge r1 r0", "ge_r1_r0"},
    744                            {{ge, r1, r1}, true, ge, "ge r1 r1", "ge_r1_r1"},
    745                            {{ge, r1, r2}, true, ge, "ge r1 r2", "ge_r1_r2"},
    746                            {{ge, r1, r3}, true, ge, "ge r1 r3", "ge_r1_r3"},
    747                            {{ge, r1, r4}, true, ge, "ge r1 r4", "ge_r1_r4"},
    748                            {{ge, r1, r5}, true, ge, "ge r1 r5", "ge_r1_r5"},
    749                            {{ge, r1, r6}, true, ge, "ge r1 r6", "ge_r1_r6"},
    750                            {{ge, r1, r7}, true, ge, "ge r1 r7", "ge_r1_r7"},
    751                            {{ge, r2, r0}, true, ge, "ge r2 r0", "ge_r2_r0"},
    752                            {{ge, r2, r1}, true, ge, "ge r2 r1", "ge_r2_r1"},
    753                            {{ge, r2, r2}, true, ge, "ge r2 r2", "ge_r2_r2"},
    754                            {{ge, r2, r3}, true, ge, "ge r2 r3", "ge_r2_r3"},
    755                            {{ge, r2, r4}, true, ge, "ge r2 r4", "ge_r2_r4"},
    756                            {{ge, r2, r5}, true, ge, "ge r2 r5", "ge_r2_r5"},
    757                            {{ge, r2, r6}, true, ge, "ge r2 r6", "ge_r2_r6"},
    758                            {{ge, r2, r7}, true, ge, "ge r2 r7", "ge_r2_r7"},
    759                            {{ge, r3, r0}, true, ge, "ge r3 r0", "ge_r3_r0"},
    760                            {{ge, r3, r1}, true, ge, "ge r3 r1", "ge_r3_r1"},
    761                            {{ge, r3, r2}, true, ge, "ge r3 r2", "ge_r3_r2"},
    762                            {{ge, r3, r3}, true, ge, "ge r3 r3", "ge_r3_r3"},
    763                            {{ge, r3, r4}, true, ge, "ge r3 r4", "ge_r3_r4"},
    764                            {{ge, r3, r5}, true, ge, "ge r3 r5", "ge_r3_r5"},
    765                            {{ge, r3, r6}, true, ge, "ge r3 r6", "ge_r3_r6"},
    766                            {{ge, r3, r7}, true, ge, "ge r3 r7", "ge_r3_r7"},
    767                            {{ge, r4, r0}, true, ge, "ge r4 r0", "ge_r4_r0"},
    768                            {{ge, r4, r1}, true, ge, "ge r4 r1", "ge_r4_r1"},
    769                            {{ge, r4, r2}, true, ge, "ge r4 r2", "ge_r4_r2"},
    770                            {{ge, r4, r3}, true, ge, "ge r4 r3", "ge_r4_r3"},
    771                            {{ge, r4, r4}, true, ge, "ge r4 r4", "ge_r4_r4"},
    772                            {{ge, r4, r5}, true, ge, "ge r4 r5", "ge_r4_r5"},
    773                            {{ge, r4, r6}, true, ge, "ge r4 r6", "ge_r4_r6"},
    774                            {{ge, r4, r7}, true, ge, "ge r4 r7", "ge_r4_r7"},
    775                            {{ge, r5, r0}, true, ge, "ge r5 r0", "ge_r5_r0"},
    776                            {{ge, r5, r1}, true, ge, "ge r5 r1", "ge_r5_r1"},
    777                            {{ge, r5, r2}, true, ge, "ge r5 r2", "ge_r5_r2"},
    778                            {{ge, r5, r3}, true, ge, "ge r5 r3", "ge_r5_r3"},
    779                            {{ge, r5, r4}, true, ge, "ge r5 r4", "ge_r5_r4"},
    780                            {{ge, r5, r5}, true, ge, "ge r5 r5", "ge_r5_r5"},
    781                            {{ge, r5, r6}, true, ge, "ge r5 r6", "ge_r5_r6"},
    782                            {{ge, r5, r7}, true, ge, "ge r5 r7", "ge_r5_r7"},
    783                            {{ge, r6, r0}, true, ge, "ge r6 r0", "ge_r6_r0"},
    784                            {{ge, r6, r1}, true, ge, "ge r6 r1", "ge_r6_r1"},
    785                            {{ge, r6, r2}, true, ge, "ge r6 r2", "ge_r6_r2"},
    786                            {{ge, r6, r3}, true, ge, "ge r6 r3", "ge_r6_r3"},
    787                            {{ge, r6, r4}, true, ge, "ge r6 r4", "ge_r6_r4"},
    788                            {{ge, r6, r5}, true, ge, "ge r6 r5", "ge_r6_r5"},
    789                            {{ge, r6, r6}, true, ge, "ge r6 r6", "ge_r6_r6"},
    790                            {{ge, r6, r7}, true, ge, "ge r6 r7", "ge_r6_r7"},
    791                            {{ge, r7, r0}, true, ge, "ge r7 r0", "ge_r7_r0"},
    792                            {{ge, r7, r1}, true, ge, "ge r7 r1", "ge_r7_r1"},
    793                            {{ge, r7, r2}, true, ge, "ge r7 r2", "ge_r7_r2"},
    794                            {{ge, r7, r3}, true, ge, "ge r7 r3", "ge_r7_r3"},
    795                            {{ge, r7, r4}, true, ge, "ge r7 r4", "ge_r7_r4"},
    796                            {{ge, r7, r5}, true, ge, "ge r7 r5", "ge_r7_r5"},
    797                            {{ge, r7, r6}, true, ge, "ge r7 r6", "ge_r7_r6"},
    798                            {{ge, r7, r7}, true, ge, "ge r7 r7", "ge_r7_r7"},
    799                            {{lt, r0, r0}, true, lt, "lt r0 r0", "lt_r0_r0"},
    800                            {{lt, r0, r1}, true, lt, "lt r0 r1", "lt_r0_r1"},
    801                            {{lt, r0, r2}, true, lt, "lt r0 r2", "lt_r0_r2"},
    802                            {{lt, r0, r3}, true, lt, "lt r0 r3", "lt_r0_r3"},
    803                            {{lt, r0, r4}, true, lt, "lt r0 r4", "lt_r0_r4"},
    804                            {{lt, r0, r5}, true, lt, "lt r0 r5", "lt_r0_r5"},
    805                            {{lt, r0, r6}, true, lt, "lt r0 r6", "lt_r0_r6"},
    806                            {{lt, r0, r7}, true, lt, "lt r0 r7", "lt_r0_r7"},
    807                            {{lt, r1, r0}, true, lt, "lt r1 r0", "lt_r1_r0"},
    808                            {{lt, r1, r1}, true, lt, "lt r1 r1", "lt_r1_r1"},
    809                            {{lt, r1, r2}, true, lt, "lt r1 r2", "lt_r1_r2"},
    810                            {{lt, r1, r3}, true, lt, "lt r1 r3", "lt_r1_r3"},
    811                            {{lt, r1, r4}, true, lt, "lt r1 r4", "lt_r1_r4"},
    812                            {{lt, r1, r5}, true, lt, "lt r1 r5", "lt_r1_r5"},
    813                            {{lt, r1, r6}, true, lt, "lt r1 r6", "lt_r1_r6"},
    814                            {{lt, r1, r7}, true, lt, "lt r1 r7", "lt_r1_r7"},
    815                            {{lt, r2, r0}, true, lt, "lt r2 r0", "lt_r2_r0"},
    816                            {{lt, r2, r1}, true, lt, "lt r2 r1", "lt_r2_r1"},
    817                            {{lt, r2, r2}, true, lt, "lt r2 r2", "lt_r2_r2"},
    818                            {{lt, r2, r3}, true, lt, "lt r2 r3", "lt_r2_r3"},
    819                            {{lt, r2, r4}, true, lt, "lt r2 r4", "lt_r2_r4"},
    820                            {{lt, r2, r5}, true, lt, "lt r2 r5", "lt_r2_r5"},
    821                            {{lt, r2, r6}, true, lt, "lt r2 r6", "lt_r2_r6"},
    822                            {{lt, r2, r7}, true, lt, "lt r2 r7", "lt_r2_r7"},
    823                            {{lt, r3, r0}, true, lt, "lt r3 r0", "lt_r3_r0"},
    824                            {{lt, r3, r1}, true, lt, "lt r3 r1", "lt_r3_r1"},
    825                            {{lt, r3, r2}, true, lt, "lt r3 r2", "lt_r3_r2"},
    826                            {{lt, r3, r3}, true, lt, "lt r3 r3", "lt_r3_r3"},
    827                            {{lt, r3, r4}, true, lt, "lt r3 r4", "lt_r3_r4"},
    828                            {{lt, r3, r5}, true, lt, "lt r3 r5", "lt_r3_r5"},
    829                            {{lt, r3, r6}, true, lt, "lt r3 r6", "lt_r3_r6"},
    830                            {{lt, r3, r7}, true, lt, "lt r3 r7", "lt_r3_r7"},
    831                            {{lt, r4, r0}, true, lt, "lt r4 r0", "lt_r4_r0"},
    832                            {{lt, r4, r1}, true, lt, "lt r4 r1", "lt_r4_r1"},
    833                            {{lt, r4, r2}, true, lt, "lt r4 r2", "lt_r4_r2"},
    834                            {{lt, r4, r3}, true, lt, "lt r4 r3", "lt_r4_r3"},
    835                            {{lt, r4, r4}, true, lt, "lt r4 r4", "lt_r4_r4"},
    836                            {{lt, r4, r5}, true, lt, "lt r4 r5", "lt_r4_r5"},
    837                            {{lt, r4, r6}, true, lt, "lt r4 r6", "lt_r4_r6"},
    838                            {{lt, r4, r7}, true, lt, "lt r4 r7", "lt_r4_r7"},
    839                            {{lt, r5, r0}, true, lt, "lt r5 r0", "lt_r5_r0"},
    840                            {{lt, r5, r1}, true, lt, "lt r5 r1", "lt_r5_r1"},
    841                            {{lt, r5, r2}, true, lt, "lt r5 r2", "lt_r5_r2"},
    842                            {{lt, r5, r3}, true, lt, "lt r5 r3", "lt_r5_r3"},
    843                            {{lt, r5, r4}, true, lt, "lt r5 r4", "lt_r5_r4"},
    844                            {{lt, r5, r5}, true, lt, "lt r5 r5", "lt_r5_r5"},
    845                            {{lt, r5, r6}, true, lt, "lt r5 r6", "lt_r5_r6"},
    846                            {{lt, r5, r7}, true, lt, "lt r5 r7", "lt_r5_r7"},
    847                            {{lt, r6, r0}, true, lt, "lt r6 r0", "lt_r6_r0"},
    848                            {{lt, r6, r1}, true, lt, "lt r6 r1", "lt_r6_r1"},
    849                            {{lt, r6, r2}, true, lt, "lt r6 r2", "lt_r6_r2"},
    850                            {{lt, r6, r3}, true, lt, "lt r6 r3", "lt_r6_r3"},
    851                            {{lt, r6, r4}, true, lt, "lt r6 r4", "lt_r6_r4"},
    852                            {{lt, r6, r5}, true, lt, "lt r6 r5", "lt_r6_r5"},
    853                            {{lt, r6, r6}, true, lt, "lt r6 r6", "lt_r6_r6"},
    854                            {{lt, r6, r7}, true, lt, "lt r6 r7", "lt_r6_r7"},
    855                            {{lt, r7, r0}, true, lt, "lt r7 r0", "lt_r7_r0"},
    856                            {{lt, r7, r1}, true, lt, "lt r7 r1", "lt_r7_r1"},
    857                            {{lt, r7, r2}, true, lt, "lt r7 r2", "lt_r7_r2"},
    858                            {{lt, r7, r3}, true, lt, "lt r7 r3", "lt_r7_r3"},
    859                            {{lt, r7, r4}, true, lt, "lt r7 r4", "lt_r7_r4"},
    860                            {{lt, r7, r5}, true, lt, "lt r7 r5", "lt_r7_r5"},
    861                            {{lt, r7, r6}, true, lt, "lt r7 r6", "lt_r7_r6"},
    862                            {{lt, r7, r7}, true, lt, "lt r7 r7", "lt_r7_r7"},
    863                            {{gt, r0, r0}, true, gt, "gt r0 r0", "gt_r0_r0"},
    864                            {{gt, r0, r1}, true, gt, "gt r0 r1", "gt_r0_r1"},
    865                            {{gt, r0, r2}, true, gt, "gt r0 r2", "gt_r0_r2"},
    866                            {{gt, r0, r3}, true, gt, "gt r0 r3", "gt_r0_r3"},
    867                            {{gt, r0, r4}, true, gt, "gt r0 r4", "gt_r0_r4"},
    868                            {{gt, r0, r5}, true, gt, "gt r0 r5", "gt_r0_r5"},
    869                            {{gt, r0, r6}, true, gt, "gt r0 r6", "gt_r0_r6"},
    870                            {{gt, r0, r7}, true, gt, "gt r0 r7", "gt_r0_r7"},
    871                            {{gt, r1, r0}, true, gt, "gt r1 r0", "gt_r1_r0"},
    872                            {{gt, r1, r1}, true, gt, "gt r1 r1", "gt_r1_r1"},
    873                            {{gt, r1, r2}, true, gt, "gt r1 r2", "gt_r1_r2"},
    874                            {{gt, r1, r3}, true, gt, "gt r1 r3", "gt_r1_r3"},
    875                            {{gt, r1, r4}, true, gt, "gt r1 r4", "gt_r1_r4"},
    876                            {{gt, r1, r5}, true, gt, "gt r1 r5", "gt_r1_r5"},
    877                            {{gt, r1, r6}, true, gt, "gt r1 r6", "gt_r1_r6"},
    878                            {{gt, r1, r7}, true, gt, "gt r1 r7", "gt_r1_r7"},
    879                            {{gt, r2, r0}, true, gt, "gt r2 r0", "gt_r2_r0"},
    880                            {{gt, r2, r1}, true, gt, "gt r2 r1", "gt_r2_r1"},
    881                            {{gt, r2, r2}, true, gt, "gt r2 r2", "gt_r2_r2"},
    882                            {{gt, r2, r3}, true, gt, "gt r2 r3", "gt_r2_r3"},
    883                            {{gt, r2, r4}, true, gt, "gt r2 r4", "gt_r2_r4"},
    884                            {{gt, r2, r5}, true, gt, "gt r2 r5", "gt_r2_r5"},
    885                            {{gt, r2, r6}, true, gt, "gt r2 r6", "gt_r2_r6"},
    886                            {{gt, r2, r7}, true, gt, "gt r2 r7", "gt_r2_r7"},
    887                            {{gt, r3, r0}, true, gt, "gt r3 r0", "gt_r3_r0"},
    888                            {{gt, r3, r1}, true, gt, "gt r3 r1", "gt_r3_r1"},
    889                            {{gt, r3, r2}, true, gt, "gt r3 r2", "gt_r3_r2"},
    890                            {{gt, r3, r3}, true, gt, "gt r3 r3", "gt_r3_r3"},
    891                            {{gt, r3, r4}, true, gt, "gt r3 r4", "gt_r3_r4"},
    892                            {{gt, r3, r5}, true, gt, "gt r3 r5", "gt_r3_r5"},
    893                            {{gt, r3, r6}, true, gt, "gt r3 r6", "gt_r3_r6"},
    894                            {{gt, r3, r7}, true, gt, "gt r3 r7", "gt_r3_r7"},
    895                            {{gt, r4, r0}, true, gt, "gt r4 r0", "gt_r4_r0"},
    896                            {{gt, r4, r1}, true, gt, "gt r4 r1", "gt_r4_r1"},
    897                            {{gt, r4, r2}, true, gt, "gt r4 r2", "gt_r4_r2"},
    898                            {{gt, r4, r3}, true, gt, "gt r4 r3", "gt_r4_r3"},
    899                            {{gt, r4, r4}, true, gt, "gt r4 r4", "gt_r4_r4"},
    900                            {{gt, r4, r5}, true, gt, "gt r4 r5", "gt_r4_r5"},
    901                            {{gt, r4, r6}, true, gt, "gt r4 r6", "gt_r4_r6"},
    902                            {{gt, r4, r7}, true, gt, "gt r4 r7", "gt_r4_r7"},
    903                            {{gt, r5, r0}, true, gt, "gt r5 r0", "gt_r5_r0"},
    904                            {{gt, r5, r1}, true, gt, "gt r5 r1", "gt_r5_r1"},
    905                            {{gt, r5, r2}, true, gt, "gt r5 r2", "gt_r5_r2"},
    906                            {{gt, r5, r3}, true, gt, "gt r5 r3", "gt_r5_r3"},
    907                            {{gt, r5, r4}, true, gt, "gt r5 r4", "gt_r5_r4"},
    908                            {{gt, r5, r5}, true, gt, "gt r5 r5", "gt_r5_r5"},
    909                            {{gt, r5, r6}, true, gt, "gt r5 r6", "gt_r5_r6"},
    910                            {{gt, r5, r7}, true, gt, "gt r5 r7", "gt_r5_r7"},
    911                            {{gt, r6, r0}, true, gt, "gt r6 r0", "gt_r6_r0"},
    912                            {{gt, r6, r1}, true, gt, "gt r6 r1", "gt_r6_r1"},
    913                            {{gt, r6, r2}, true, gt, "gt r6 r2", "gt_r6_r2"},
    914                            {{gt, r6, r3}, true, gt, "gt r6 r3", "gt_r6_r3"},
    915                            {{gt, r6, r4}, true, gt, "gt r6 r4", "gt_r6_r4"},
    916                            {{gt, r6, r5}, true, gt, "gt r6 r5", "gt_r6_r5"},
    917                            {{gt, r6, r6}, true, gt, "gt r6 r6", "gt_r6_r6"},
    918                            {{gt, r6, r7}, true, gt, "gt r6 r7", "gt_r6_r7"},
    919                            {{gt, r7, r0}, true, gt, "gt r7 r0", "gt_r7_r0"},
    920                            {{gt, r7, r1}, true, gt, "gt r7 r1", "gt_r7_r1"},
    921                            {{gt, r7, r2}, true, gt, "gt r7 r2", "gt_r7_r2"},
    922                            {{gt, r7, r3}, true, gt, "gt r7 r3", "gt_r7_r3"},
    923                            {{gt, r7, r4}, true, gt, "gt r7 r4", "gt_r7_r4"},
    924                            {{gt, r7, r5}, true, gt, "gt r7 r5", "gt_r7_r5"},
    925                            {{gt, r7, r6}, true, gt, "gt r7 r6", "gt_r7_r6"},
    926                            {{gt, r7, r7}, true, gt, "gt r7 r7", "gt_r7_r7"},
    927                            {{le, r0, r0}, true, le, "le r0 r0", "le_r0_r0"},
    928                            {{le, r0, r1}, true, le, "le r0 r1", "le_r0_r1"},
    929                            {{le, r0, r2}, true, le, "le r0 r2", "le_r0_r2"},
    930                            {{le, r0, r3}, true, le, "le r0 r3", "le_r0_r3"},
    931                            {{le, r0, r4}, true, le, "le r0 r4", "le_r0_r4"},
    932                            {{le, r0, r5}, true, le, "le r0 r5", "le_r0_r5"},
    933                            {{le, r0, r6}, true, le, "le r0 r6", "le_r0_r6"},
    934                            {{le, r0, r7}, true, le, "le r0 r7", "le_r0_r7"},
    935                            {{le, r1, r0}, true, le, "le r1 r0", "le_r1_r0"},
    936                            {{le, r1, r1}, true, le, "le r1 r1", "le_r1_r1"},
    937                            {{le, r1, r2}, true, le, "le r1 r2", "le_r1_r2"},
    938                            {{le, r1, r3}, true, le, "le r1 r3", "le_r1_r3"},
    939                            {{le, r1, r4}, true, le, "le r1 r4", "le_r1_r4"},
    940                            {{le, r1, r5}, true, le, "le r1 r5", "le_r1_r5"},
    941                            {{le, r1, r6}, true, le, "le r1 r6", "le_r1_r6"},
    942                            {{le, r1, r7}, true, le, "le r1 r7", "le_r1_r7"},
    943                            {{le, r2, r0}, true, le, "le r2 r0", "le_r2_r0"},
    944                            {{le, r2, r1}, true, le, "le r2 r1", "le_r2_r1"},
    945                            {{le, r2, r2}, true, le, "le r2 r2", "le_r2_r2"},
    946                            {{le, r2, r3}, true, le, "le r2 r3", "le_r2_r3"},
    947                            {{le, r2, r4}, true, le, "le r2 r4", "le_r2_r4"},
    948                            {{le, r2, r5}, true, le, "le r2 r5", "le_r2_r5"},
    949                            {{le, r2, r6}, true, le, "le r2 r6", "le_r2_r6"},
    950                            {{le, r2, r7}, true, le, "le r2 r7", "le_r2_r7"},
    951                            {{le, r3, r0}, true, le, "le r3 r0", "le_r3_r0"},
    952                            {{le, r3, r1}, true, le, "le r3 r1", "le_r3_r1"},
    953                            {{le, r3, r2}, true, le, "le r3 r2", "le_r3_r2"},
    954                            {{le, r3, r3}, true, le, "le r3 r3", "le_r3_r3"},
    955                            {{le, r3, r4}, true, le, "le r3 r4", "le_r3_r4"},
    956                            {{le, r3, r5}, true, le, "le r3 r5", "le_r3_r5"},
    957                            {{le, r3, r6}, true, le, "le r3 r6", "le_r3_r6"},
    958                            {{le, r3, r7}, true, le, "le r3 r7", "le_r3_r7"},
    959                            {{le, r4, r0}, true, le, "le r4 r0", "le_r4_r0"},
    960                            {{le, r4, r1}, true, le, "le r4 r1", "le_r4_r1"},
    961                            {{le, r4, r2}, true, le, "le r4 r2", "le_r4_r2"},
    962                            {{le, r4, r3}, true, le, "le r4 r3", "le_r4_r3"},
    963                            {{le, r4, r4}, true, le, "le r4 r4", "le_r4_r4"},
    964                            {{le, r4, r5}, true, le, "le r4 r5", "le_r4_r5"},
    965                            {{le, r4, r6}, true, le, "le r4 r6", "le_r4_r6"},
    966                            {{le, r4, r7}, true, le, "le r4 r7", "le_r4_r7"},
    967                            {{le, r5, r0}, true, le, "le r5 r0", "le_r5_r0"},
    968                            {{le, r5, r1}, true, le, "le r5 r1", "le_r5_r1"},
    969                            {{le, r5, r2}, true, le, "le r5 r2", "le_r5_r2"},
    970                            {{le, r5, r3}, true, le, "le r5 r3", "le_r5_r3"},
    971                            {{le, r5, r4}, true, le, "le r5 r4", "le_r5_r4"},
    972                            {{le, r5, r5}, true, le, "le r5 r5", "le_r5_r5"},
    973                            {{le, r5, r6}, true, le, "le r5 r6", "le_r5_r6"},
    974                            {{le, r5, r7}, true, le, "le r5 r7", "le_r5_r7"},
    975                            {{le, r6, r0}, true, le, "le r6 r0", "le_r6_r0"},
    976                            {{le, r6, r1}, true, le, "le r6 r1", "le_r6_r1"},
    977                            {{le, r6, r2}, true, le, "le r6 r2", "le_r6_r2"},
    978                            {{le, r6, r3}, true, le, "le r6 r3", "le_r6_r3"},
    979                            {{le, r6, r4}, true, le, "le r6 r4", "le_r6_r4"},
    980                            {{le, r6, r5}, true, le, "le r6 r5", "le_r6_r5"},
    981                            {{le, r6, r6}, true, le, "le r6 r6", "le_r6_r6"},
    982                            {{le, r6, r7}, true, le, "le r6 r7", "le_r6_r7"},
    983                            {{le, r7, r0}, true, le, "le r7 r0", "le_r7_r0"},
    984                            {{le, r7, r1}, true, le, "le r7 r1", "le_r7_r1"},
    985                            {{le, r7, r2}, true, le, "le r7 r2", "le_r7_r2"},
    986                            {{le, r7, r3}, true, le, "le r7 r3", "le_r7_r3"},
    987                            {{le, r7, r4}, true, le, "le r7 r4", "le_r7_r4"},
    988                            {{le, r7, r5}, true, le, "le r7 r5", "le_r7_r5"},
    989                            {{le, r7, r6}, true, le, "le r7 r6", "le_r7_r6"},
    990                            {{le, r7, r7}, true, le, "le r7 r7", "le_r7_r7"}};
    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-rd-operand-rn-low-registers-in-it-block-cmn-t32.h"
    995 #include "aarch32/traces/assembler-cond-rd-operand-rn-low-registers-in-it-block-tst-t32.h"
    996 
    997 
    998 // The maximum number of errors to report in detail for each test.
    999 const unsigned kErrorReportLimit = 8;
   1000 
   1001 typedef void (MacroAssembler::*Fn)(Condition cond,
   1002                                    Register rd,
   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     Operand op(rn);
   1019 
   1020     int32_t start = masm.GetCursorOffset();
   1021     {
   1022       // We never generate more that 4 bytes, as IT instructions are only
   1023       // allowed for narrow encodings.
   1024       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
   1025       if (kTests[i].in_it_block) {
   1026         masm.it(kTests[i].it_condition);
   1027       }
   1028       (masm.*instruction)(cond, rd, op);
   1029     }
   1030     int32_t end = masm.GetCursorOffset();
   1031 
   1032     const byte* result_ptr =
   1033         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
   1034     VIXL_ASSERT(start < end);
   1035     uint32_t result_size = end - start;
   1036 
   1037     if (Test::generate_test_trace()) {
   1038       // Print the result bytes.
   1039       printf("const byte kInstruction_%s_%s[] = {\n",
   1040              mnemonic,
   1041              kTests[i].identifier);
   1042       for (uint32_t j = 0; j < result_size; j++) {
   1043         if (j == 0) {
   1044           printf("  0x%02" PRIx8, result_ptr[j]);
   1045         } else {
   1046           printf(", 0x%02" PRIx8, result_ptr[j]);
   1047         }
   1048       }
   1049       // This comment is meant to be used by external tools to validate
   1050       // the encoding. We can parse the comment to figure out what
   1051       // instruction this corresponds to.
   1052       if (kTests[i].in_it_block) {
   1053         printf(" // It %s; %s %s\n};\n",
   1054                kTests[i].it_condition.GetName(),
   1055                mnemonic,
   1056                kTests[i].operands_description);
   1057       } else {
   1058         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
   1059       }
   1060     } else {
   1061       // Check we've emitted the exact same encoding as present in the
   1062       // trace file. Only print up to `kErrorReportLimit` errors.
   1063       if (((result_size != reference[i].size) ||
   1064            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
   1065             0)) &&
   1066           (++total_error_count <= kErrorReportLimit)) {
   1067         printf("Error when testing \"%s\" with operands \"%s\":\n",
   1068                mnemonic,
   1069                kTests[i].operands_description);
   1070         printf("  Expected: ");
   1071         for (uint32_t j = 0; j < reference[i].size; j++) {
   1072           if (j == 0) {
   1073             printf("0x%02" PRIx8, reference[i].encoding[j]);
   1074           } else {
   1075             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
   1076           }
   1077         }
   1078         printf("\n");
   1079         printf("  Found:    ");
   1080         for (uint32_t j = 0; j < result_size; j++) {
   1081           if (j == 0) {
   1082             printf("0x%02" PRIx8, result_ptr[j]);
   1083           } else {
   1084             printf(", 0x%02" PRIx8, result_ptr[j]);
   1085           }
   1086         }
   1087         printf("\n");
   1088       }
   1089     }
   1090   }
   1091 
   1092   masm.FinalizeCode();
   1093 
   1094   if (Test::generate_test_trace()) {
   1095     // Finalize the trace file by writing the final `TestResult` array
   1096     // which links all generated instruction encodings.
   1097     printf("const TestResult kReference%s[] = {\n", mnemonic);
   1098     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1099       printf("  {\n");
   1100       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
   1101              mnemonic,
   1102              kTests[i].identifier);
   1103       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
   1104       printf("  },\n");
   1105     }
   1106     printf("};\n");
   1107   } else {
   1108     if (total_error_count > kErrorReportLimit) {
   1109       printf("%u other errors follow.\n",
   1110              total_error_count - kErrorReportLimit);
   1111     }
   1112     // Crash if the test failed.
   1113     VIXL_CHECK(total_error_count == 0);
   1114   }
   1115 }
   1116 
   1117 // Instantiate tests for each instruction in the list.
   1118 #define TEST(mnemonic)                                                      \
   1119   void Test_##mnemonic() {                                                  \
   1120     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   1121   }                                                                         \
   1122   Test test_##mnemonic(                                                     \
   1123       "AARCH32_ASSEMBLER_COND_RD_OPERAND_RN_LOW_REGISTERS_IN_IT_"           \
   1124       "BLOCK_" #mnemonic "_T32",                                            \
   1125       &Test_##mnemonic);
   1126 FOREACH_INSTRUCTION(TEST)
   1127 #undef TEST
   1128 
   1129 }  // namespace
   1130 #endif
   1131 
   1132 }  // namespace aarch32
   1133 }  // namespace vixl
   1134