Home | History | Annotate | Download | only in aarch32
      1 // Copyright 2016, VIXL authors
      2 // All rights reserved.
      3 //
      4 // Redistribution and use in source and binary forms, with or without
      5 // modification, are permitted provided that the following conditions are met:
      6 //
      7 //   * Redistributions of source code must retain the above copyright notice,
      8 //     this list of conditions and the following disclaimer.
      9 //   * Redistributions in binary form must reproduce the above copyright notice,
     10 //     this list of conditions and the following disclaimer in the documentation
     11 //     and/or other materials provided with the distribution.
     12 //   * Neither the name of ARM Limited nor the names of its contributors may be
     13 //     used to endorse or promote products derived from this software without
     14 //     specific prior written permission.
     15 //
     16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
     17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
     20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
     24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26 
     27 
     28 // -----------------------------------------------------------------------------
     29 // This file is auto generated from the
     30 // test/aarch32/config/template-assembler-aarch32.cc.in template file using
     31 // tools/generate_tests.py.
     32 //
     33 // PLEASE DO NOT EDIT.
     34 // -----------------------------------------------------------------------------
     35 
     36 
     37 #include "test-runner.h"
     38 
     39 #include "test-utils.h"
     40 #include "test-utils-aarch32.h"
     41 
     42 #include "aarch32/assembler-aarch32.h"
     43 #include "aarch32/macro-assembler-aarch32.h"
     44 
     45 #define BUF_SIZE (4096)
     46 
     47 namespace vixl {
     48 namespace aarch32 {
     49 
     50 // List of instruction mnemonics.
     51 #define FOREACH_INSTRUCTION(M) \
     52   M(cmn)                       \
     53   M(cmp)                       \
     54   M(teq)                       \
     55   M(tst)
     56 
     57 
     58 // The following definitions are defined again in each generated test, therefore
     59 // we need to place them in an anomymous namespace. It expresses that they are
     60 // local to this file only, and the compiler is not allowed to share these types
     61 // across test files during template instantiation. Specifically, `Operands` has
     62 // various layouts across generated tests so it absolutely cannot be shared.
     63 
     64 #ifdef VIXL_INCLUDE_TARGET_A32
     65 namespace {
     66 
     67 // Values to be passed to the assembler to produce the instruction under test.
     68 struct Operands {
     69   Condition cond;
     70   Register rd;
     71   uint32_t immediate;
     72 };
     73 
     74 // This structure contains all data needed to test one specific
     75 // instruction.
     76 struct TestData {
     77   // The `operands` field represents what to pass to the assembler to
     78   // produce the instruction.
     79   Operands operands;
     80   // True if we need to generate an IT instruction for this test to be valid.
     81   bool in_it_block;
     82   // The condition to give the IT instruction, this will be set to "al" by
     83   // default.
     84   Condition it_condition;
     85   // Description of the operands, used for error reporting.
     86   const char* operands_description;
     87   // Unique identifier, used for generating traces.
     88   const char* identifier;
     89 };
     90 
     91 struct TestResult {
     92   size_t size;
     93   const byte* encoding;
     94 };
     95 
     96 // Each element of this array produce one instruction encoding.
     97 const TestData kTests[] =
     98     {{{ls, r10, 0x00ab0000},
     99       false,
    100       al,
    101       "ls r10 0x00ab0000",
    102       "ls_r10_"
    103       "0x00ab0000"},
    104      {{ls, r13, 0xf000000f},
    105       false,
    106       al,
    107       "ls r13 0xf000000f",
    108       "ls_r13_"
    109       "0xf000000f"},
    110      {{pl, r4, 0x00003fc0}, false, al, "pl r4 0x00003fc0", "pl_r4_0x00003fc0"},
    111      {{ne, r15, 0x00ab0000},
    112       false,
    113       al,
    114       "ne r15 0x00ab0000",
    115       "ne_r15_"
    116       "0x00ab0000"},
    117      {{lt, r14, 0x002ac000},
    118       false,
    119       al,
    120       "lt r14 0x002ac000",
    121       "lt_r14_"
    122       "0x002ac000"},
    123      {{eq, r15, 0x000000ab},
    124       false,
    125       al,
    126       "eq r15 0x000000ab",
    127       "eq_r15_"
    128       "0x000000ab"},
    129      {{al, r6, 0x002ac000}, false, al, "al r6 0x002ac000", "al_r6_0x002ac000"},
    130      {{pl, r2, 0x0002ac00}, false, al, "pl r2 0x0002ac00", "pl_r2_0x0002ac00"},
    131      {{mi, r8, 0x00000000}, false, al, "mi r8 0x00000000", "mi_r8_0x00000000"},
    132      {{pl, r13, 0x02ac0000},
    133       false,
    134       al,
    135       "pl r13 0x02ac0000",
    136       "pl_r13_"
    137       "0x02ac0000"},
    138      {{ge, r9, 0xac000002}, false, al, "ge r9 0xac000002", "ge_r9_0xac000002"},
    139      {{ne, r3, 0x000003fc}, false, al, "ne r3 0x000003fc", "ne_r3_0x000003fc"},
    140      {{pl, r10, 0xf000000f},
    141       false,
    142       al,
    143       "pl r10 0xf000000f",
    144       "pl_r10_"
    145       "0xf000000f"},
    146      {{cc, r0, 0x00003fc0}, false, al, "cc r0 0x00003fc0", "cc_r0_0x00003fc0"},
    147      {{gt, r6, 0x002ac000}, false, al, "gt r6 0x002ac000", "gt_r6_0x002ac000"},
    148      {{cs, r1, 0x00ff0000}, false, al, "cs r1 0x00ff0000", "cs_r1_0x00ff0000"},
    149      {{lt, r8, 0x000002ac}, false, al, "lt r8 0x000002ac", "lt_r8_0x000002ac"},
    150      {{vc, r4, 0x2ac00000}, false, al, "vc r4 0x2ac00000", "vc_r4_0x2ac00000"},
    151      {{al, r11, 0x00003fc0},
    152       false,
    153       al,
    154       "al r11 0x00003fc0",
    155       "al_r11_"
    156       "0x00003fc0"},
    157      {{lt, r9, 0x000000ab}, false, al, "lt r9 0x000000ab", "lt_r9_0x000000ab"},
    158      {{le, r15, 0x0000ff00},
    159       false,
    160       al,
    161       "le r15 0x0000ff00",
    162       "le_r15_"
    163       "0x0000ff00"},
    164      {{vc, r9, 0xff000000}, false, al, "vc r9 0xff000000", "vc_r9_0xff000000"},
    165      {{ge, r0, 0x0ff00000}, false, al, "ge r0 0x0ff00000", "ge_r0_0x0ff00000"},
    166      {{vc, r1, 0x00ff0000}, false, al, "vc r1 0x00ff0000", "vc_r1_0x00ff0000"},
    167      {{vs, r12, 0x00000ff0},
    168       false,
    169       al,
    170       "vs r12 0x00000ff0",
    171       "vs_r12_"
    172       "0x00000ff0"},
    173      {{pl, r13, 0x003fc000},
    174       false,
    175       al,
    176       "pl r13 0x003fc000",
    177       "pl_r13_"
    178       "0x003fc000"},
    179      {{eq, r4, 0xff000000}, false, al, "eq r4 0xff000000", "eq_r4_0xff000000"},
    180      {{eq, r12, 0xac000002},
    181       false,
    182       al,
    183       "eq r12 0xac000002",
    184       "eq_r12_"
    185       "0xac000002"},
    186      {{al, r11, 0x000000ab},
    187       false,
    188       al,
    189       "al r11 0x000000ab",
    190       "al_r11_"
    191       "0x000000ab"},
    192      {{ge, r10, 0x00ff0000},
    193       false,
    194       al,
    195       "ge r10 0x00ff0000",
    196       "ge_r10_"
    197       "0x00ff0000"},
    198      {{vs, r7, 0x0002ac00}, false, al, "vs r7 0x0002ac00", "vs_r7_0x0002ac00"},
    199      {{le, r7, 0x002ac000}, false, al, "le r7 0x002ac000", "le_r7_0x002ac000"},
    200      {{vc, r9, 0x000003fc}, false, al, "vc r9 0x000003fc", "vc_r9_0x000003fc"},
    201      {{vs, r14, 0x002ac000},
    202       false,
    203       al,
    204       "vs r14 0x002ac000",
    205       "vs_r14_"
    206       "0x002ac000"},
    207      {{vs, r1, 0x000003fc}, false, al, "vs r1 0x000003fc", "vs_r1_0x000003fc"},
    208      {{le, r13, 0x3fc00000},
    209       false,
    210       al,
    211       "le r13 0x3fc00000",
    212       "le_r13_"
    213       "0x3fc00000"},
    214      {{ne, r9, 0x0002ac00}, false, al, "ne r9 0x0002ac00", "ne_r9_0x0002ac00"},
    215      {{al, r0, 0x00ab0000}, false, al, "al r0 0x00ab0000", "al_r0_0x00ab0000"},
    216      {{hi, r5, 0xff000000}, false, al, "hi r5 0xff000000", "hi_r5_0xff000000"},
    217      {{hi, r14, 0x000000ab},
    218       false,
    219       al,
    220       "hi r14 0x000000ab",
    221       "hi_r14_"
    222       "0x000000ab"},
    223      {{hi, r14, 0x000003fc},
    224       false,
    225       al,
    226       "hi r14 0x000003fc",
    227       "hi_r14_"
    228       "0x000003fc"},
    229      {{mi, r14, 0x03fc0000},
    230       false,
    231       al,
    232       "mi r14 0x03fc0000",
    233       "mi_r14_"
    234       "0x03fc0000"},
    235      {{mi, r8, 0x000000ff}, false, al, "mi r8 0x000000ff", "mi_r8_0x000000ff"},
    236      {{gt, r6, 0x000ab000}, false, al, "gt r6 0x000ab000", "gt_r6_0x000ab000"},
    237      {{mi, r12, 0x0ff00000},
    238       false,
    239       al,
    240       "mi r12 0x0ff00000",
    241       "mi_r12_"
    242       "0x0ff00000"},
    243      {{vs, r3, 0xff000000}, false, al, "vs r3 0xff000000", "vs_r3_0xff000000"},
    244      {{vc, r7, 0x00ab0000}, false, al, "vc r7 0x00ab0000", "vc_r7_0x00ab0000"},
    245      {{hi, r6, 0x03fc0000}, false, al, "hi r6 0x03fc0000", "hi_r6_0x03fc0000"},
    246      {{ls, r5, 0x00ab0000}, false, al, "ls r5 0x00ab0000", "ls_r5_0x00ab0000"},
    247      {{ls, r4, 0x000002ac}, false, al, "ls r4 0x000002ac", "ls_r4_0x000002ac"},
    248      {{le, r13, 0x03fc0000},
    249       false,
    250       al,
    251       "le r13 0x03fc0000",
    252       "le_r13_"
    253       "0x03fc0000"},
    254      {{le, r15, 0x002ac000},
    255       false,
    256       al,
    257       "le r15 0x002ac000",
    258       "le_r15_"
    259       "0x002ac000"},
    260      {{pl, r6, 0xff000000}, false, al, "pl r6 0xff000000", "pl_r6_0xff000000"},
    261      {{gt, r7, 0x00000ab0}, false, al, "gt r7 0x00000ab0", "gt_r7_0x00000ab0"},
    262      {{hi, r3, 0x2ac00000}, false, al, "hi r3 0x2ac00000", "hi_r3_0x2ac00000"},
    263      {{gt, r15, 0x00000000},
    264       false,
    265       al,
    266       "gt r15 0x00000000",
    267       "gt_r15_"
    268       "0x00000000"},
    269      {{gt, r1, 0x002ac000}, false, al, "gt r1 0x002ac000", "gt_r1_0x002ac000"},
    270      {{hi, r2, 0x0000ff00}, false, al, "hi r2 0x0000ff00", "hi_r2_0x0000ff00"},
    271      {{pl, r10, 0x03fc0000},
    272       false,
    273       al,
    274       "pl r10 0x03fc0000",
    275       "pl_r10_"
    276       "0x03fc0000"},
    277      {{gt, r10, 0xb000000a},
    278       false,
    279       al,
    280       "gt r10 0xb000000a",
    281       "gt_r10_"
    282       "0xb000000a"},
    283      {{ge, r10, 0x002ac000},
    284       false,
    285       al,
    286       "ge r10 0x002ac000",
    287       "ge_r10_"
    288       "0x002ac000"},
    289      {{al, r4, 0x0ab00000}, false, al, "al r4 0x0ab00000", "al_r4_0x0ab00000"},
    290      {{ne, r12, 0x00000000},
    291       false,
    292       al,
    293       "ne r12 0x00000000",
    294       "ne_r12_"
    295       "0x00000000"},
    296      {{cs, r5, 0x00003fc0}, false, al, "cs r5 0x00003fc0", "cs_r5_0x00003fc0"},
    297      {{cc, r6, 0x000000ff}, false, al, "cc r6 0x000000ff", "cc_r6_0x000000ff"},
    298      {{hi, r14, 0x03fc0000},
    299       false,
    300       al,
    301       "hi r14 0x03fc0000",
    302       "hi_r14_"
    303       "0x03fc0000"},
    304      {{hi, r3, 0xab000000}, false, al, "hi r3 0xab000000", "hi_r3_0xab000000"},
    305      {{lt, r2, 0x000ff000}, false, al, "lt r2 0x000ff000", "lt_r2_0x000ff000"},
    306      {{gt, r3, 0x00ff0000}, false, al, "gt r3 0x00ff0000", "gt_r3_0x00ff0000"},
    307      {{le, r14, 0x0ab00000},
    308       false,
    309       al,
    310       "le r14 0x0ab00000",
    311       "le_r14_"
    312       "0x0ab00000"},
    313      {{cc, r13, 0x03fc0000},
    314       false,
    315       al,
    316       "cc r13 0x03fc0000",
    317       "cc_r13_"
    318       "0x03fc0000"},
    319      {{gt, r6, 0xb000000a}, false, al, "gt r6 0xb000000a", "gt_r6_0xb000000a"},
    320      {{pl, r3, 0x2ac00000}, false, al, "pl r3 0x2ac00000", "pl_r3_0x2ac00000"},
    321      {{mi, r15, 0x000000ff},
    322       false,
    323       al,
    324       "mi r15 0x000000ff",
    325       "mi_r15_"
    326       "0x000000ff"},
    327      {{gt, r4, 0x00000ff0}, false, al, "gt r4 0x00000ff0", "gt_r4_0x00000ff0"},
    328      {{ne, r4, 0x000003fc}, false, al, "ne r4 0x000003fc", "ne_r4_0x000003fc"},
    329      {{ne, r5, 0x00ff0000}, false, al, "ne r5 0x00ff0000", "ne_r5_0x00ff0000"},
    330      {{ge, r7, 0x000003fc}, false, al, "ge r7 0x000003fc", "ge_r7_0x000003fc"},
    331      {{vs, r5, 0x00000000}, false, al, "vs r5 0x00000000", "vs_r5_0x00000000"},
    332      {{vs, r6, 0x2ac00000}, false, al, "vs r6 0x2ac00000", "vs_r6_0x2ac00000"},
    333      {{mi, r1, 0x3fc00000}, false, al, "mi r1 0x3fc00000", "mi_r1_0x3fc00000"},
    334      {{gt, r8, 0xc000002a}, false, al, "gt r8 0xc000002a", "gt_r8_0xc000002a"},
    335      {{pl, r10, 0x000000ab},
    336       false,
    337       al,
    338       "pl r10 0x000000ab",
    339       "pl_r10_"
    340       "0x000000ab"},
    341      {{mi, r6, 0xab000000}, false, al, "mi r6 0xab000000", "mi_r6_0xab000000"},
    342      {{ls, r12, 0x3fc00000},
    343       false,
    344       al,
    345       "ls r12 0x3fc00000",
    346       "ls_r12_"
    347       "0x3fc00000"},
    348      {{vs, r13, 0x03fc0000},
    349       false,
    350       al,
    351       "vs r13 0x03fc0000",
    352       "vs_r13_"
    353       "0x03fc0000"},
    354      {{eq, r8, 0x00000ab0}, false, al, "eq r8 0x00000ab0", "eq_r8_0x00000ab0"},
    355      {{gt, r6, 0x000000ff}, false, al, "gt r6 0x000000ff", "gt_r6_0x000000ff"},
    356      {{vs, r5, 0x000ab000}, false, al, "vs r5 0x000ab000", "vs_r5_0x000ab000"},
    357      {{mi, r1, 0x2ac00000}, false, al, "mi r1 0x2ac00000", "mi_r1_0x2ac00000"},
    358      {{vs, r6, 0x00003fc0}, false, al, "vs r6 0x00003fc0", "vs_r6_0x00003fc0"},
    359      {{gt, r6, 0x000002ac}, false, al, "gt r6 0x000002ac", "gt_r6_0x000002ac"},
    360      {{eq, r2, 0x00000000}, false, al, "eq r2 0x00000000", "eq_r2_0x00000000"},
    361      {{eq, r10, 0xc000003f},
    362       false,
    363       al,
    364       "eq r10 0xc000003f",
    365       "eq_r10_"
    366       "0xc000003f"},
    367      {{mi, r7, 0x00ab0000}, false, al, "mi r7 0x00ab0000", "mi_r7_0x00ab0000"},
    368      {{cc, r7, 0x2ac00000}, false, al, "cc r7 0x2ac00000", "cc_r7_0x2ac00000"},
    369      {{pl, r4, 0x00ab0000}, false, al, "pl r4 0x00ab0000", "pl_r4_0x00ab0000"},
    370      {{ne, r15, 0x00000ff0},
    371       false,
    372       al,
    373       "ne r15 0x00000ff0",
    374       "ne_r15_"
    375       "0x00000ff0"},
    376      {{al, r6, 0x02ac0000}, false, al, "al r6 0x02ac0000", "al_r6_0x02ac0000"},
    377      {{pl, r6, 0x000002ac}, false, al, "pl r6 0x000002ac", "pl_r6_0x000002ac"},
    378      {{ne, r14, 0x00ff0000},
    379       false,
    380       al,
    381       "ne r14 0x00ff0000",
    382       "ne_r14_"
    383       "0x00ff0000"},
    384      {{ne, r5, 0x0003fc00}, false, al, "ne r5 0x0003fc00", "ne_r5_0x0003fc00"},
    385      {{pl, r6, 0x00000ab0}, false, al, "pl r6 0x00000ab0", "pl_r6_0x00000ab0"},
    386      {{eq, r10, 0x00002ac0},
    387       false,
    388       al,
    389       "eq r10 0x00002ac0",
    390       "eq_r10_"
    391       "0x00002ac0"},
    392      {{mi, r4, 0x00000ab0}, false, al, "mi r4 0x00000ab0", "mi_r4_0x00000ab0"},
    393      {{vc, r5, 0x000ab000}, false, al, "vc r5 0x000ab000", "vc_r5_0x000ab000"},
    394      {{ge, r0, 0x02ac0000}, false, al, "ge r0 0x02ac0000", "ge_r0_0x02ac0000"},
    395      {{pl, r5, 0x000002ac}, false, al, "pl r5 0x000002ac", "pl_r5_0x000002ac"},
    396      {{ge, r13, 0x00000ab0},
    397       false,
    398       al,
    399       "ge r13 0x00000ab0",
    400       "ge_r13_"
    401       "0x00000ab0"},
    402      {{eq, r2, 0x03fc0000}, false, al, "eq r2 0x03fc0000", "eq_r2_0x03fc0000"},
    403      {{lt, r11, 0x00000ab0},
    404       false,
    405       al,
    406       "lt r11 0x00000ab0",
    407       "lt_r11_"
    408       "0x00000ab0"},
    409      {{ge, r6, 0x00000000}, false, al, "ge r6 0x00000000", "ge_r6_0x00000000"},
    410      {{gt, r2, 0xac000002}, false, al, "gt r2 0xac000002", "gt_r2_0xac000002"},
    411      {{le, r15, 0x000000ab},
    412       false,
    413       al,
    414       "le r15 0x000000ab",
    415       "le_r15_"
    416       "0x000000ab"},
    417      {{cc, r4, 0x00000ff0}, false, al, "cc r4 0x00000ff0", "cc_r4_0x00000ff0"},
    418      {{pl, r10, 0x02ac0000},
    419       false,
    420       al,
    421       "pl r10 0x02ac0000",
    422       "pl_r10_"
    423       "0x02ac0000"},
    424      {{gt, r9, 0x00000000}, false, al, "gt r9 0x00000000", "gt_r9_0x00000000"},
    425      {{vs, r8, 0x000000ff}, false, al, "vs r8 0x000000ff", "vs_r8_0x000000ff"},
    426      {{gt, r14, 0x0002ac00},
    427       false,
    428       al,
    429       "gt r14 0x0002ac00",
    430       "gt_r14_"
    431       "0x0002ac00"},
    432      {{vs, r14, 0x00002ac0},
    433       false,
    434       al,
    435       "vs r14 0x00002ac0",
    436       "vs_r14_"
    437       "0x00002ac0"},
    438      {{ge, r12, 0x00000000},
    439       false,
    440       al,
    441       "ge r12 0x00000000",
    442       "ge_r12_"
    443       "0x00000000"},
    444      {{vc, r8, 0xf000000f}, false, al, "vc r8 0xf000000f", "vc_r8_0xf000000f"},
    445      {{cs, r6, 0x00003fc0}, false, al, "cs r6 0x00003fc0", "cs_r6_0x00003fc0"},
    446      {{le, r4, 0x000003fc}, false, al, "le r4 0x000003fc", "le_r4_0x000003fc"},
    447      {{cs, r5, 0x000ff000}, false, al, "cs r5 0x000ff000", "cs_r5_0x000ff000"},
    448      {{eq, r2, 0x0000ff00}, false, al, "eq r2 0x0000ff00", "eq_r2_0x0000ff00"},
    449      {{pl, r10, 0x0ab00000},
    450       false,
    451       al,
    452       "pl r10 0x0ab00000",
    453       "pl_r10_"
    454       "0x0ab00000"},
    455      {{le, r11, 0xac000002},
    456       false,
    457       al,
    458       "le r11 0xac000002",
    459       "le_r11_"
    460       "0xac000002"},
    461      {{vs, r15, 0x00003fc0},
    462       false,
    463       al,
    464       "vs r15 0x00003fc0",
    465       "vs_r15_"
    466       "0x00003fc0"},
    467      {{lt, r2, 0x0002ac00}, false, al, "lt r2 0x0002ac00", "lt_r2_0x0002ac00"},
    468      {{eq, r1, 0x00ab0000}, false, al, "eq r1 0x00ab0000", "eq_r1_0x00ab0000"},
    469      {{cc, r7, 0x03fc0000}, false, al, "cc r7 0x03fc0000", "cc_r7_0x03fc0000"},
    470      {{mi, r6, 0x00000ab0}, false, al, "mi r6 0x00000ab0", "mi_r6_0x00000ab0"},
    471      {{eq, r4, 0x00000ab0}, false, al, "eq r4 0x00000ab0", "eq_r4_0x00000ab0"},
    472      {{ls, r3, 0x0003fc00}, false, al, "ls r3 0x0003fc00", "ls_r3_0x0003fc00"},
    473      {{mi, r6, 0x000ab000}, false, al, "mi r6 0x000ab000", "mi_r6_0x000ab000"},
    474      {{ne, r12, 0x003fc000},
    475       false,
    476       al,
    477       "ne r12 0x003fc000",
    478       "ne_r12_"
    479       "0x003fc000"},
    480      {{eq, r11, 0x00ff0000},
    481       false,
    482       al,
    483       "eq r11 0x00ff0000",
    484       "eq_r11_"
    485       "0x00ff0000"},
    486      {{cs, r13, 0x00ab0000},
    487       false,
    488       al,
    489       "cs r13 0x00ab0000",
    490       "cs_r13_"
    491       "0x00ab0000"},
    492      {{eq, r5, 0x000003fc}, false, al, "eq r5 0x000003fc", "eq_r5_0x000003fc"},
    493      {{vs, r6, 0x0003fc00}, false, al, "vs r6 0x0003fc00", "vs_r6_0x0003fc00"},
    494      {{pl, r8, 0x0ff00000}, false, al, "pl r8 0x0ff00000", "pl_r8_0x0ff00000"},
    495      {{pl, r11, 0x0000ab00},
    496       false,
    497       al,
    498       "pl r11 0x0000ab00",
    499       "pl_r11_"
    500       "0x0000ab00"},
    501      {{le, r2, 0xac000002}, false, al, "le r2 0xac000002", "le_r2_0xac000002"},
    502      {{vc, r10, 0x000ff000},
    503       false,
    504       al,
    505       "vc r10 0x000ff000",
    506       "vc_r10_"
    507       "0x000ff000"},
    508      {{le, r4, 0x00000ff0}, false, al, "le r4 0x00000ff0", "le_r4_0x00000ff0"},
    509      {{gt, r12, 0x00000ff0},
    510       false,
    511       al,
    512       "gt r12 0x00000ff0",
    513       "gt_r12_"
    514       "0x00000ff0"},
    515      {{le, r5, 0x0002ac00}, false, al, "le r5 0x0002ac00", "le_r5_0x0002ac00"},
    516      {{le, r0, 0xac000002}, false, al, "le r0 0xac000002", "le_r0_0xac000002"},
    517      {{vs, r11, 0x0ff00000},
    518       false,
    519       al,
    520       "vs r11 0x0ff00000",
    521       "vs_r11_"
    522       "0x0ff00000"},
    523      {{ls, r0, 0x000ab000}, false, al, "ls r0 0x000ab000", "ls_r0_0x000ab000"},
    524      {{ls, r2, 0xf000000f}, false, al, "ls r2 0xf000000f", "ls_r2_0xf000000f"},
    525      {{cs, r3, 0x0ff00000}, false, al, "cs r3 0x0ff00000", "cs_r3_0x0ff00000"},
    526      {{hi, r8, 0x0ff00000}, false, al, "hi r8 0x0ff00000", "hi_r8_0x0ff00000"},
    527      {{gt, r3, 0x00002ac0}, false, al, "gt r3 0x00002ac0", "gt_r3_0x00002ac0"},
    528      {{al, r15, 0xab000000},
    529       false,
    530       al,
    531       "al r15 0xab000000",
    532       "al_r15_"
    533       "0xab000000"},
    534      {{eq, r13, 0x000000ab},
    535       false,
    536       al,
    537       "eq r13 0x000000ab",
    538       "eq_r13_"
    539       "0x000000ab"},
    540      {{al, r2, 0xc000002a}, false, al, "al r2 0xc000002a", "al_r2_0xc000002a"},
    541      {{eq, r13, 0x03fc0000},
    542       false,
    543       al,
    544       "eq r13 0x03fc0000",
    545       "eq_r13_"
    546       "0x03fc0000"},
    547      {{eq, r3, 0x00000ff0}, false, al, "eq r3 0x00000ff0", "eq_r3_0x00000ff0"},
    548      {{hi, r12, 0x00002ac0},
    549       false,
    550       al,
    551       "hi r12 0x00002ac0",
    552       "hi_r12_"
    553       "0x00002ac0"},
    554      {{mi, r2, 0x0ff00000}, false, al, "mi r2 0x0ff00000", "mi_r2_0x0ff00000"},
    555      {{ne, r9, 0x003fc000}, false, al, "ne r9 0x003fc000", "ne_r9_0x003fc000"},
    556      {{eq, r14, 0x03fc0000},
    557       false,
    558       al,
    559       "eq r14 0x03fc0000",
    560       "eq_r14_"
    561       "0x03fc0000"},
    562      {{cc, r0, 0x002ac000}, false, al, "cc r0 0x002ac000", "cc_r0_0x002ac000"},
    563      {{vc, r14, 0x00000ab0},
    564       false,
    565       al,
    566       "vc r14 0x00000ab0",
    567       "vc_r14_"
    568       "0x00000ab0"},
    569      {{mi, r15, 0xf000000f},
    570       false,
    571       al,
    572       "mi r15 0xf000000f",
    573       "mi_r15_"
    574       "0xf000000f"},
    575      {{ge, r9, 0x000003fc}, false, al, "ge r9 0x000003fc", "ge_r9_0x000003fc"},
    576      {{vs, r13, 0xac000002},
    577       false,
    578       al,
    579       "vs r13 0xac000002",
    580       "vs_r13_"
    581       "0xac000002"},
    582      {{vs, r1, 0x3fc00000}, false, al, "vs r1 0x3fc00000", "vs_r1_0x3fc00000"},
    583      {{eq, r12, 0x00003fc0},
    584       false,
    585       al,
    586       "eq r12 0x00003fc0",
    587       "eq_r12_"
    588       "0x00003fc0"},
    589      {{mi, r6, 0xff000000}, false, al, "mi r6 0xff000000", "mi_r6_0xff000000"},
    590      {{ne, r5, 0x000003fc}, false, al, "ne r5 0x000003fc", "ne_r5_0x000003fc"},
    591      {{lt, r8, 0x0ff00000}, false, al, "lt r8 0x0ff00000", "lt_r8_0x0ff00000"},
    592      {{hi, r7, 0x3fc00000}, false, al, "hi r7 0x3fc00000", "hi_r7_0x3fc00000"},
    593      {{ge, r10, 0xac000002},
    594       false,
    595       al,
    596       "ge r10 0xac000002",
    597       "ge_r10_"
    598       "0xac000002"},
    599      {{vs, r2, 0x0000ff00}, false, al, "vs r2 0x0000ff00", "vs_r2_0x0000ff00"},
    600      {{al, r6, 0x000000ab}, false, al, "al r6 0x000000ab", "al_r6_0x000000ab"},
    601      {{ge, r7, 0x00ff0000}, false, al, "ge r7 0x00ff0000", "ge_r7_0x00ff0000"},
    602      {{ne, r0, 0x000ff000}, false, al, "ne r0 0x000ff000", "ne_r0_0x000ff000"},
    603      {{mi, r6, 0x000000ab}, false, al, "mi r6 0x000000ab", "mi_r6_0x000000ab"},
    604      {{hi, r1, 0xf000000f}, false, al, "hi r1 0xf000000f", "hi_r1_0xf000000f"},
    605      {{mi, r6, 0x2ac00000}, false, al, "mi r6 0x2ac00000", "mi_r6_0x2ac00000"},
    606      {{vc, r11, 0x000000ff},
    607       false,
    608       al,
    609       "vc r11 0x000000ff",
    610       "vc_r11_"
    611       "0x000000ff"},
    612      {{ls, r14, 0x02ac0000},
    613       false,
    614       al,
    615       "ls r14 0x02ac0000",
    616       "ls_r14_"
    617       "0x02ac0000"},
    618      {{ge, r5, 0x003fc000}, false, al, "ge r5 0x003fc000", "ge_r5_0x003fc000"},
    619      {{ls, r12, 0x0000ab00},
    620       false,
    621       al,
    622       "ls r12 0x0000ab00",
    623       "ls_r12_"
    624       "0x0000ab00"},
    625      {{cc, r15, 0x00000ab0},
    626       false,
    627       al,
    628       "cc r15 0x00000ab0",
    629       "cc_r15_"
    630       "0x00000ab0"},
    631      {{vc, r12, 0x0000ab00},
    632       false,
    633       al,
    634       "vc r12 0x0000ab00",
    635       "vc_r12_"
    636       "0x0000ab00"},
    637      {{vs, r2, 0xc000002a}, false, al, "vs r2 0xc000002a", "vs_r2_0xc000002a"},
    638      {{lt, r7, 0x0ab00000}, false, al, "lt r7 0x0ab00000", "lt_r7_0x0ab00000"},
    639      {{ls, r6, 0x00000ff0}, false, al, "ls r6 0x00000ff0", "ls_r6_0x00000ff0"},
    640      {{vc, r10, 0x000000ff},
    641       false,
    642       al,
    643       "vc r10 0x000000ff",
    644       "vc_r10_"
    645       "0x000000ff"},
    646      {{ls, r4, 0x0000ab00}, false, al, "ls r4 0x0000ab00", "ls_r4_0x0000ab00"},
    647      {{mi, r10, 0x003fc000},
    648       false,
    649       al,
    650       "mi r10 0x003fc000",
    651       "mi_r10_"
    652       "0x003fc000"},
    653      {{ls, r1, 0x000002ac}, false, al, "ls r1 0x000002ac", "ls_r1_0x000002ac"},
    654      {{ge, r7, 0xb000000a}, false, al, "ge r7 0xb000000a", "ge_r7_0xb000000a"},
    655      {{gt, r4, 0xf000000f}, false, al, "gt r4 0xf000000f", "gt_r4_0xf000000f"},
    656      {{vc, r8, 0x002ac000}, false, al, "vc r8 0x002ac000", "vc_r8_0x002ac000"},
    657      {{eq, r5, 0x0ab00000}, false, al, "eq r5 0x0ab00000", "eq_r5_0x0ab00000"},
    658      {{gt, r2, 0xf000000f}, false, al, "gt r2 0xf000000f", "gt_r2_0xf000000f"},
    659      {{gt, r6, 0xff000000}, false, al, "gt r6 0xff000000", "gt_r6_0xff000000"},
    660      {{ls, r8, 0x0ab00000}, false, al, "ls r8 0x0ab00000", "ls_r8_0x0ab00000"},
    661      {{vc, r0, 0xb000000a}, false, al, "vc r0 0xb000000a", "vc_r0_0xb000000a"},
    662      {{lt, r6, 0x03fc0000}, false, al, "lt r6 0x03fc0000", "lt_r6_0x03fc0000"},
    663      {{ge, r10, 0x0000ab00},
    664       false,
    665       al,
    666       "ge r10 0x0000ab00",
    667       "ge_r10_"
    668       "0x0000ab00"},
    669      {{hi, r4, 0x000ab000}, false, al, "hi r4 0x000ab000", "hi_r4_0x000ab000"},
    670      {{hi, r11, 0x3fc00000},
    671       false,
    672       al,
    673       "hi r11 0x3fc00000",
    674       "hi_r11_"
    675       "0x3fc00000"},
    676      {{vs, r12, 0xc000003f},
    677       false,
    678       al,
    679       "vs r12 0xc000003f",
    680       "vs_r12_"
    681       "0xc000003f"},
    682      {{gt, r12, 0xb000000a},
    683       false,
    684       al,
    685       "gt r12 0xb000000a",
    686       "gt_r12_"
    687       "0xb000000a"},
    688      {{eq, r11, 0x2ac00000},
    689       false,
    690       al,
    691       "eq r11 0x2ac00000",
    692       "eq_r11_"
    693       "0x2ac00000"},
    694      {{hi, r0, 0xc000003f}, false, al, "hi r0 0xc000003f", "hi_r0_0xc000003f"},
    695      {{cs, r12, 0xac000002},
    696       false,
    697       al,
    698       "cs r12 0xac000002",
    699       "cs_r12_"
    700       "0xac000002"},
    701      {{hi, r9, 0x3fc00000}, false, al, "hi r9 0x3fc00000", "hi_r9_0x3fc00000"},
    702      {{vs, r2, 0x00002ac0}, false, al, "vs r2 0x00002ac0", "vs_r2_0x00002ac0"},
    703      {{al, r12, 0xb000000a},
    704       false,
    705       al,
    706       "al r12 0xb000000a",
    707       "al_r12_"
    708       "0xb000000a"},
    709      {{gt, r12, 0x3fc00000},
    710       false,
    711       al,
    712       "gt r12 0x3fc00000",
    713       "gt_r12_"
    714       "0x3fc00000"},
    715      {{gt, r6, 0xf000000f}, false, al, "gt r6 0xf000000f", "gt_r6_0xf000000f"},
    716      {{vc, r14, 0x000000ff},
    717       false,
    718       al,
    719       "vc r14 0x000000ff",
    720       "vc_r14_"
    721       "0x000000ff"},
    722      {{pl, r7, 0x0002ac00}, false, al, "pl r7 0x0002ac00", "pl_r7_0x0002ac00"},
    723      {{ge, r1, 0x03fc0000}, false, al, "ge r1 0x03fc0000", "ge_r1_0x03fc0000"},
    724      {{hi, r10, 0x0002ac00},
    725       false,
    726       al,
    727       "hi r10 0x0002ac00",
    728       "hi_r10_"
    729       "0x0002ac00"},
    730      {{gt, r4, 0x002ac000}, false, al, "gt r4 0x002ac000", "gt_r4_0x002ac000"},
    731      {{vc, r5, 0x000000ff}, false, al, "vc r5 0x000000ff", "vc_r5_0x000000ff"},
    732      {{pl, r15, 0x0000ab00},
    733       false,
    734       al,
    735       "pl r15 0x0000ab00",
    736       "pl_r15_"
    737       "0x0000ab00"},
    738      {{cc, r4, 0x00ab0000}, false, al, "cc r4 0x00ab0000", "cc_r4_0x00ab0000"},
    739      {{pl, r11, 0xff000000},
    740       false,
    741       al,
    742       "pl r11 0xff000000",
    743       "pl_r11_"
    744       "0xff000000"},
    745      {{pl, r2, 0xf000000f}, false, al, "pl r2 0xf000000f", "pl_r2_0xf000000f"},
    746      {{cc, r8, 0xb000000a}, false, al, "cc r8 0xb000000a", "cc_r8_0xb000000a"},
    747      {{al, r13, 0x000000ff},
    748       false,
    749       al,
    750       "al r13 0x000000ff",
    751       "al_r13_"
    752       "0x000000ff"},
    753      {{mi, r6, 0x000003fc}, false, al, "mi r6 0x000003fc", "mi_r6_0x000003fc"},
    754      {{vs, r13, 0x02ac0000},
    755       false,
    756       al,
    757       "vs r13 0x02ac0000",
    758       "vs_r13_"
    759       "0x02ac0000"},
    760      {{mi, r4, 0x00ff0000}, false, al, "mi r4 0x00ff0000", "mi_r4_0x00ff0000"},
    761      {{cs, r3, 0x000003fc}, false, al, "cs r3 0x000003fc", "cs_r3_0x000003fc"},
    762      {{pl, r13, 0xab000000},
    763       false,
    764       al,
    765       "pl r13 0xab000000",
    766       "pl_r13_"
    767       "0xab000000"},
    768      {{ls, r9, 0x002ac000}, false, al, "ls r9 0x002ac000", "ls_r9_0x002ac000"},
    769      {{eq, r1, 0xc000002a}, false, al, "eq r1 0xc000002a", "eq_r1_0xc000002a"},
    770      {{lt, r12, 0x00000000},
    771       false,
    772       al,
    773       "lt r12 0x00000000",
    774       "lt_r12_"
    775       "0x00000000"},
    776      {{ge, r14, 0xff000000},
    777       false,
    778       al,
    779       "ge r14 0xff000000",
    780       "ge_r14_"
    781       "0xff000000"},
    782      {{lt, r9, 0x002ac000}, false, al, "lt r9 0x002ac000", "lt_r9_0x002ac000"},
    783      {{lt, r10, 0x00000ff0},
    784       false,
    785       al,
    786       "lt r10 0x00000ff0",
    787       "lt_r10_"
    788       "0x00000ff0"},
    789      {{vs, r5, 0x000000ff}, false, al, "vs r5 0x000000ff", "vs_r5_0x000000ff"},
    790      {{cc, r12, 0x03fc0000},
    791       false,
    792       al,
    793       "cc r12 0x03fc0000",
    794       "cc_r12_"
    795       "0x03fc0000"},
    796      {{ne, r4, 0x00000000}, false, al, "ne r4 0x00000000", "ne_r4_0x00000000"},
    797      {{mi, r13, 0xff000000},
    798       false,
    799       al,
    800       "mi r13 0xff000000",
    801       "mi_r13_"
    802       "0xff000000"},
    803      {{ne, r7, 0x00000ff0}, false, al, "ne r7 0x00000ff0", "ne_r7_0x00000ff0"},
    804      {{vs, r2, 0xc000003f}, false, al, "vs r2 0xc000003f", "vs_r2_0xc000003f"},
    805      {{al, r5, 0x00ff0000}, false, al, "al r5 0x00ff0000", "al_r5_0x00ff0000"},
    806      {{hi, r15, 0x00000ff0},
    807       false,
    808       al,
    809       "hi r15 0x00000ff0",
    810       "hi_r15_"
    811       "0x00000ff0"},
    812      {{ls, r8, 0x00003fc0}, false, al, "ls r8 0x00003fc0", "ls_r8_0x00003fc0"},
    813      {{vs, r0, 0xff000000}, false, al, "vs r0 0xff000000", "vs_r0_0xff000000"},
    814      {{vs, r6, 0x000000ab}, false, al, "vs r6 0x000000ab", "vs_r6_0x000000ab"},
    815      {{cs, r9, 0x00ab0000}, false, al, "cs r9 0x00ab0000", "cs_r9_0x00ab0000"},
    816      {{hi, r1, 0x0002ac00}, false, al, "hi r1 0x0002ac00", "hi_r1_0x0002ac00"},
    817      {{hi, r15, 0x2ac00000},
    818       false,
    819       al,
    820       "hi r15 0x2ac00000",
    821       "hi_r15_"
    822       "0x2ac00000"},
    823      {{hi, r6, 0x0002ac00}, false, al, "hi r6 0x0002ac00", "hi_r6_0x0002ac00"},
    824      {{ge, r4, 0xc000003f}, false, al, "ge r4 0xc000003f", "ge_r4_0xc000003f"},
    825      {{ls, r10, 0x0000ff00},
    826       false,
    827       al,
    828       "ls r10 0x0000ff00",
    829       "ls_r10_"
    830       "0x0000ff00"},
    831      {{ne, r11, 0x000003fc},
    832       false,
    833       al,
    834       "ne r11 0x000003fc",
    835       "ne_r11_"
    836       "0x000003fc"},
    837      {{ls, r3, 0x0002ac00}, false, al, "ls r3 0x0002ac00", "ls_r3_0x0002ac00"},
    838      {{al, r12, 0x000003fc},
    839       false,
    840       al,
    841       "al r12 0x000003fc",
    842       "al_r12_"
    843       "0x000003fc"},
    844      {{le, r7, 0xf000000f}, false, al, "le r7 0xf000000f", "le_r7_0xf000000f"},
    845      {{al, r11, 0x00000ab0},
    846       false,
    847       al,
    848       "al r11 0x00000ab0",
    849       "al_r11_"
    850       "0x00000ab0"},
    851      {{cs, r13, 0x02ac0000},
    852       false,
    853       al,
    854       "cs r13 0x02ac0000",
    855       "cs_r13_"
    856       "0x02ac0000"},
    857      {{hi, r1, 0x00000ff0}, false, al, "hi r1 0x00000ff0", "hi_r1_0x00000ff0"},
    858      {{le, r11, 0x3fc00000},
    859       false,
    860       al,
    861       "le r11 0x3fc00000",
    862       "le_r11_"
    863       "0x3fc00000"},
    864      {{hi, r9, 0x000003fc}, false, al, "hi r9 0x000003fc", "hi_r9_0x000003fc"},
    865      {{mi, r13, 0x000002ac},
    866       false,
    867       al,
    868       "mi r13 0x000002ac",
    869       "mi_r13_"
    870       "0x000002ac"},
    871      {{lt, r12, 0x000003fc},
    872       false,
    873       al,
    874       "lt r12 0x000003fc",
    875       "lt_r12_"
    876       "0x000003fc"},
    877      {{lt, r14, 0x00000ab0},
    878       false,
    879       al,
    880       "lt r14 0x00000ab0",
    881       "lt_r14_"
    882       "0x00000ab0"},
    883      {{gt, r1, 0x3fc00000}, false, al, "gt r1 0x3fc00000", "gt_r1_0x3fc00000"},
    884      {{cc, r14, 0xb000000a},
    885       false,
    886       al,
    887       "cc r14 0xb000000a",
    888       "cc_r14_"
    889       "0xb000000a"},
    890      {{ge, r0, 0x000002ac}, false, al, "ge r0 0x000002ac", "ge_r0_0x000002ac"},
    891      {{eq, r12, 0x000003fc},
    892       false,
    893       al,
    894       "eq r12 0x000003fc",
    895       "eq_r12_"
    896       "0x000003fc"},
    897      {{vc, r13, 0x0ab00000},
    898       false,
    899       al,
    900       "vc r13 0x0ab00000",
    901       "vc_r13_"
    902       "0x0ab00000"},
    903      {{pl, r10, 0x0003fc00},
    904       false,
    905       al,
    906       "pl r10 0x0003fc00",
    907       "pl_r10_"
    908       "0x0003fc00"},
    909      {{le, r7, 0x0000ff00}, false, al, "le r7 0x0000ff00", "le_r7_0x0000ff00"},
    910      {{eq, r5, 0x0003fc00}, false, al, "eq r5 0x0003fc00", "eq_r5_0x0003fc00"},
    911      {{pl, r1, 0xfc000003}, false, al, "pl r1 0xfc000003", "pl_r1_0xfc000003"},
    912      {{gt, r15, 0x000ff000},
    913       false,
    914       al,
    915       "gt r15 0x000ff000",
    916       "gt_r15_"
    917       "0x000ff000"},
    918      {{mi, r2, 0xb000000a}, false, al, "mi r2 0xb000000a", "mi_r2_0xb000000a"},
    919      {{cs, r8, 0x0000ff00}, false, al, "cs r8 0x0000ff00", "cs_r8_0x0000ff00"},
    920      {{vs, r8, 0x00002ac0}, false, al, "vs r8 0x00002ac0", "vs_r8_0x00002ac0"},
    921      {{cs, r5, 0x00ab0000}, false, al, "cs r5 0x00ab0000", "cs_r5_0x00ab0000"},
    922      {{pl, r3, 0x00ab0000}, false, al, "pl r3 0x00ab0000", "pl_r3_0x00ab0000"},
    923      {{hi, r5, 0x02ac0000}, false, al, "hi r5 0x02ac0000", "hi_r5_0x02ac0000"},
    924      {{cc, r9, 0x000002ac}, false, al, "cc r9 0x000002ac", "cc_r9_0x000002ac"},
    925      {{ls, r13, 0x0000ab00},
    926       false,
    927       al,
    928       "ls r13 0x0000ab00",
    929       "ls_r13_"
    930       "0x0000ab00"},
    931      {{pl, r11, 0x00000ab0},
    932       false,
    933       al,
    934       "pl r11 0x00000ab0",
    935       "pl_r11_"
    936       "0x00000ab0"},
    937      {{ge, r14, 0x3fc00000},
    938       false,
    939       al,
    940       "ge r14 0x3fc00000",
    941       "ge_r14_"
    942       "0x3fc00000"},
    943      {{al, r14, 0x0000ab00},
    944       false,
    945       al,
    946       "al r14 0x0000ab00",
    947       "al_r14_"
    948       "0x0000ab00"},
    949      {{lt, r6, 0xac000002}, false, al, "lt r6 0xac000002", "lt_r6_0xac000002"},
    950      {{vc, r3, 0x000ff000}, false, al, "vc r3 0x000ff000", "vc_r3_0x000ff000"},
    951      {{ne, r8, 0xfc000003}, false, al, "ne r8 0xfc000003", "ne_r8_0xfc000003"},
    952      {{cs, r6, 0x000ab000}, false, al, "cs r6 0x000ab000", "cs_r6_0x000ab000"},
    953      {{hi, r15, 0x0002ac00},
    954       false,
    955       al,
    956       "hi r15 0x0002ac00",
    957       "hi_r15_"
    958       "0x0002ac00"},
    959      {{pl, r6, 0x00000ff0}, false, al, "pl r6 0x00000ff0", "pl_r6_0x00000ff0"},
    960      {{hi, r15, 0x03fc0000},
    961       false,
    962       al,
    963       "hi r15 0x03fc0000",
    964       "hi_r15_"
    965       "0x03fc0000"},
    966      {{cc, r6, 0x0003fc00}, false, al, "cc r6 0x0003fc00", "cc_r6_0x0003fc00"},
    967      {{eq, r12, 0x000002ac},
    968       false,
    969       al,
    970       "eq r12 0x000002ac",
    971       "eq_r12_"
    972       "0x000002ac"},
    973      {{ls, r11, 0x02ac0000},
    974       false,
    975       al,
    976       "ls r11 0x02ac0000",
    977       "ls_r11_"
    978       "0x02ac0000"},
    979      {{ge, r13, 0x00ff0000},
    980       false,
    981       al,
    982       "ge r13 0x00ff0000",
    983       "ge_r13_"
    984       "0x00ff0000"},
    985      {{lt, r4, 0x0003fc00}, false, al, "lt r4 0x0003fc00", "lt_r4_0x0003fc00"},
    986      {{mi, r0, 0x0000ab00}, false, al, "mi r0 0x0000ab00", "mi_r0_0x0000ab00"},
    987      {{lt, r4, 0x000000ab}, false, al, "lt r4 0x000000ab", "lt_r4_0x000000ab"},
    988      {{ls, r2, 0xc000003f}, false, al, "ls r2 0xc000003f", "ls_r2_0xc000003f"},
    989      {{pl, r1, 0x000000ab}, false, al, "pl r1 0x000000ab", "pl_r1_0x000000ab"},
    990      {{ne, r10, 0x0000ff00},
    991       false,
    992       al,
    993       "ne r10 0x0000ff00",
    994       "ne_r10_"
    995       "0x0000ff00"},
    996      {{vc, r15, 0x00000ab0},
    997       false,
    998       al,
    999       "vc r15 0x00000ab0",
   1000       "vc_r15_"
   1001       "0x00000ab0"},
   1002      {{eq, r6, 0x02ac0000}, false, al, "eq r6 0x02ac0000", "eq_r6_0x02ac0000"},
   1003      {{cc, r11, 0x00000000},
   1004       false,
   1005       al,
   1006       "cc r11 0x00000000",
   1007       "cc_r11_"
   1008       "0x00000000"},
   1009      {{mi, r7, 0x002ac000}, false, al, "mi r7 0x002ac000", "mi_r7_0x002ac000"},
   1010      {{hi, r14, 0xab000000},
   1011       false,
   1012       al,
   1013       "hi r14 0xab000000",
   1014       "hi_r14_"
   1015       "0xab000000"},
   1016      {{vc, r6, 0x0000ff00}, false, al, "vc r6 0x0000ff00", "vc_r6_0x0000ff00"},
   1017      {{al, r5, 0x000002ac}, false, al, "al r5 0x000002ac", "al_r5_0x000002ac"},
   1018      {{cc, r12, 0x0002ac00},
   1019       false,
   1020       al,
   1021       "cc r12 0x0002ac00",
   1022       "cc_r12_"
   1023       "0x0002ac00"},
   1024      {{cc, r10, 0x000000ab},
   1025       false,
   1026       al,
   1027       "cc r10 0x000000ab",
   1028       "cc_r10_"
   1029       "0x000000ab"},
   1030      {{gt, r5, 0x000002ac}, false, al, "gt r5 0x000002ac", "gt_r5_0x000002ac"},
   1031      {{vc, r3, 0x00000000}, false, al, "vc r3 0x00000000", "vc_r3_0x00000000"},
   1032      {{gt, r12, 0xac000002},
   1033       false,
   1034       al,
   1035       "gt r12 0xac000002",
   1036       "gt_r12_"
   1037       "0xac000002"},
   1038      {{al, r10, 0x00ab0000},
   1039       false,
   1040       al,
   1041       "al r10 0x00ab0000",
   1042       "al_r10_"
   1043       "0x00ab0000"},
   1044      {{mi, r5, 0x000ff000}, false, al, "mi r5 0x000ff000", "mi_r5_0x000ff000"},
   1045      {{pl, r1, 0x00000ff0}, false, al, "pl r1 0x00000ff0", "pl_r1_0x00000ff0"},
   1046      {{lt, r7, 0xf000000f}, false, al, "lt r7 0xf000000f", "lt_r7_0xf000000f"},
   1047      {{ge, r14, 0x002ac000},
   1048       false,
   1049       al,
   1050       "ge r14 0x002ac000",
   1051       "ge_r14_"
   1052       "0x002ac000"},
   1053      {{cc, r0, 0xac000002}, false, al, "cc r0 0xac000002", "cc_r0_0xac000002"},
   1054      {{cs, r2, 0x00000ab0}, false, al, "cs r2 0x00000ab0", "cs_r2_0x00000ab0"},
   1055      {{vs, r0, 0x00002ac0}, false, al, "vs r0 0x00002ac0", "vs_r0_0x00002ac0"},
   1056      {{le, r10, 0x000ab000},
   1057       false,
   1058       al,
   1059       "le r10 0x000ab000",
   1060       "le_r10_"
   1061       "0x000ab000"},
   1062      {{ge, r9, 0x0003fc00}, false, al, "ge r9 0x0003fc00", "ge_r9_0x0003fc00"},
   1063      {{lt, r1, 0x00003fc0}, false, al, "lt r1 0x00003fc0", "lt_r1_0x00003fc0"},
   1064      {{ge, r5, 0x000000ff}, false, al, "ge r5 0x000000ff", "ge_r5_0x000000ff"},
   1065      {{le, r11, 0x2ac00000},
   1066       false,
   1067       al,
   1068       "le r11 0x2ac00000",
   1069       "le_r11_"
   1070       "0x2ac00000"},
   1071      {{le, r9, 0x002ac000}, false, al, "le r9 0x002ac000", "le_r9_0x002ac000"},
   1072      {{hi, r12, 0xf000000f},
   1073       false,
   1074       al,
   1075       "hi r12 0xf000000f",
   1076       "hi_r12_"
   1077       "0xf000000f"},
   1078      {{lt, r3, 0x02ac0000}, false, al, "lt r3 0x02ac0000", "lt_r3_0x02ac0000"},
   1079      {{al, r13, 0x2ac00000},
   1080       false,
   1081       al,
   1082       "al r13 0x2ac00000",
   1083       "al_r13_"
   1084       "0x2ac00000"},
   1085      {{vs, r12, 0x00000ab0},
   1086       false,
   1087       al,
   1088       "vs r12 0x00000ab0",
   1089       "vs_r12_"
   1090       "0x00000ab0"},
   1091      {{gt, r3, 0x3fc00000}, false, al, "gt r3 0x3fc00000", "gt_r3_0x3fc00000"},
   1092      {{gt, r0, 0x2ac00000}, false, al, "gt r0 0x2ac00000", "gt_r0_0x2ac00000"},
   1093      {{eq, r15, 0x000002ac},
   1094       false,
   1095       al,
   1096       "eq r15 0x000002ac",
   1097       "eq_r15_"
   1098       "0x000002ac"},
   1099      {{gt, r1, 0x000ab000}, false, al, "gt r1 0x000ab000", "gt_r1_0x000ab000"},
   1100      {{gt, r2, 0x2ac00000}, false, al, "gt r2 0x2ac00000", "gt_r2_0x2ac00000"},
   1101      {{mi, r15, 0x00ab0000},
   1102       false,
   1103       al,
   1104       "mi r15 0x00ab0000",
   1105       "mi_r15_"
   1106       "0x00ab0000"},
   1107      {{mi, r1, 0x000ab000}, false, al, "mi r1 0x000ab000", "mi_r1_0x000ab000"},
   1108      {{ge, r12, 0x0ab00000},
   1109       false,
   1110       al,
   1111       "ge r12 0x0ab00000",
   1112       "ge_r12_"
   1113       "0x0ab00000"},
   1114      {{gt, r5, 0x000000ab}, false, al, "gt r5 0x000000ab", "gt_r5_0x000000ab"},
   1115      {{gt, r4, 0x00000000}, false, al, "gt r4 0x00000000", "gt_r4_0x00000000"},
   1116      {{al, r13, 0xc000003f},
   1117       false,
   1118       al,
   1119       "al r13 0xc000003f",
   1120       "al_r13_"
   1121       "0xc000003f"},
   1122      {{ls, r7, 0xff000000}, false, al, "ls r7 0xff000000", "ls_r7_0xff000000"},
   1123      {{vs, r0, 0x00000ff0}, false, al, "vs r0 0x00000ff0", "vs_r0_0x00000ff0"},
   1124      {{hi, r9, 0x02ac0000}, false, al, "hi r9 0x02ac0000", "hi_r9_0x02ac0000"},
   1125      {{cs, r1, 0xc000002a}, false, al, "cs r1 0xc000002a", "cs_r1_0xc000002a"},
   1126      {{hi, r8, 0xf000000f}, false, al, "hi r8 0xf000000f", "hi_r8_0xf000000f"},
   1127      {{gt, r1, 0xb000000a}, false, al, "gt r1 0xb000000a", "gt_r1_0xb000000a"},
   1128      {{gt, r2, 0x0002ac00}, false, al, "gt r2 0x0002ac00", "gt_r2_0x0002ac00"},
   1129      {{vs, r5, 0x000000ab}, false, al, "vs r5 0x000000ab", "vs_r5_0x000000ab"},
   1130      {{cc, r12, 0x000ff000},
   1131       false,
   1132       al,
   1133       "cc r12 0x000ff000",
   1134       "cc_r12_"
   1135       "0x000ff000"},
   1136      {{ge, r0, 0x00003fc0}, false, al, "ge r0 0x00003fc0", "ge_r0_0x00003fc0"},
   1137      {{ls, r12, 0x00ab0000},
   1138       false,
   1139       al,
   1140       "ls r12 0x00ab0000",
   1141       "ls_r12_"
   1142       "0x00ab0000"},
   1143      {{vs, r4, 0x000003fc}, false, al, "vs r4 0x000003fc", "vs_r4_0x000003fc"},
   1144      {{ls, r4, 0x00003fc0}, false, al, "ls r4 0x00003fc0", "ls_r4_0x00003fc0"},
   1145      {{eq, r9, 0xb000000a}, false, al, "eq r9 0xb000000a", "eq_r9_0xb000000a"},
   1146      {{cs, r9, 0x2ac00000}, false, al, "cs r9 0x2ac00000", "cs_r9_0x2ac00000"},
   1147      {{vs, r12, 0x0000ff00},
   1148       false,
   1149       al,
   1150       "vs r12 0x0000ff00",
   1151       "vs_r12_"
   1152       "0x0000ff00"},
   1153      {{vc, r1, 0x0000ff00}, false, al, "vc r1 0x0000ff00", "vc_r1_0x0000ff00"},
   1154      {{hi, r12, 0xff000000},
   1155       false,
   1156       al,
   1157       "hi r12 0xff000000",
   1158       "hi_r12_"
   1159       "0xff000000"},
   1160      {{cs, r12, 0x0002ac00},
   1161       false,
   1162       al,
   1163       "cs r12 0x0002ac00",
   1164       "cs_r12_"
   1165       "0x0002ac00"},
   1166      {{mi, r11, 0x03fc0000},
   1167       false,
   1168       al,
   1169       "mi r11 0x03fc0000",
   1170       "mi_r11_"
   1171       "0x03fc0000"},
   1172      {{eq, r2, 0x000ff000}, false, al, "eq r2 0x000ff000", "eq_r2_0x000ff000"},
   1173      {{al, r6, 0x00000ff0}, false, al, "al r6 0x00000ff0", "al_r6_0x00000ff0"},
   1174      {{cs, r7, 0x000003fc}, false, al, "cs r7 0x000003fc", "cs_r7_0x000003fc"},
   1175      {{pl, r11, 0xb000000a},
   1176       false,
   1177       al,
   1178       "pl r11 0xb000000a",
   1179       "pl_r11_"
   1180       "0xb000000a"},
   1181      {{ne, r15, 0x000ff000},
   1182       false,
   1183       al,
   1184       "ne r15 0x000ff000",
   1185       "ne_r15_"
   1186       "0x000ff000"},
   1187      {{mi, r14, 0x00ab0000},
   1188       false,
   1189       al,
   1190       "mi r14 0x00ab0000",
   1191       "mi_r14_"
   1192       "0x00ab0000"},
   1193      {{hi, r4, 0x0000ff00}, false, al, "hi r4 0x0000ff00", "hi_r4_0x0000ff00"},
   1194      {{ge, r1, 0x000002ac}, false, al, "ge r1 0x000002ac", "ge_r1_0x000002ac"},
   1195      {{gt, r7, 0xb000000a}, false, al, "gt r7 0xb000000a", "gt_r7_0xb000000a"},
   1196      {{gt, r2, 0x00000000}, false, al, "gt r2 0x00000000", "gt_r2_0x00000000"},
   1197      {{cc, r2, 0xb000000a}, false, al, "cc r2 0xb000000a", "cc_r2_0xb000000a"},
   1198      {{vs, r14, 0x000ab000},
   1199       false,
   1200       al,
   1201       "vs r14 0x000ab000",
   1202       "vs_r14_"
   1203       "0x000ab000"},
   1204      {{lt, r5, 0x000002ac}, false, al, "lt r5 0x000002ac", "lt_r5_0x000002ac"},
   1205      {{cc, r13, 0x0000ff00},
   1206       false,
   1207       al,
   1208       "cc r13 0x0000ff00",
   1209       "cc_r13_"
   1210       "0x0000ff00"},
   1211      {{hi, r15, 0x000002ac},
   1212       false,
   1213       al,
   1214       "hi r15 0x000002ac",
   1215       "hi_r15_"
   1216       "0x000002ac"},
   1217      {{ge, r1, 0x00ff0000}, false, al, "ge r1 0x00ff0000", "ge_r1_0x00ff0000"},
   1218      {{lt, r15, 0x00002ac0},
   1219       false,
   1220       al,
   1221       "lt r15 0x00002ac0",
   1222       "lt_r15_"
   1223       "0x00002ac0"},
   1224      {{lt, r8, 0x000ff000}, false, al, "lt r8 0x000ff000", "lt_r8_0x000ff000"},
   1225      {{hi, r10, 0xc000002a},
   1226       false,
   1227       al,
   1228       "hi r10 0xc000002a",
   1229       "hi_r10_"
   1230       "0xc000002a"},
   1231      {{eq, r12, 0x000ab000},
   1232       false,
   1233       al,
   1234       "eq r12 0x000ab000",
   1235       "eq_r12_"
   1236       "0x000ab000"},
   1237      {{vs, r11, 0x00002ac0},
   1238       false,
   1239       al,
   1240       "vs r11 0x00002ac0",
   1241       "vs_r11_"
   1242       "0x00002ac0"},
   1243      {{hi, r10, 0x000003fc},
   1244       false,
   1245       al,
   1246       "hi r10 0x000003fc",
   1247       "hi_r10_"
   1248       "0x000003fc"},
   1249      {{cc, r8, 0x000003fc}, false, al, "cc r8 0x000003fc", "cc_r8_0x000003fc"},
   1250      {{vc, r11, 0x00000ab0},
   1251       false,
   1252       al,
   1253       "vc r11 0x00000ab0",
   1254       "vc_r11_"
   1255       "0x00000ab0"},
   1256      {{le, r3, 0xac000002}, false, al, "le r3 0xac000002", "le_r3_0xac000002"},
   1257      {{cc, r11, 0xc000002a},
   1258       false,
   1259       al,
   1260       "cc r11 0xc000002a",
   1261       "cc_r11_"
   1262       "0xc000002a"},
   1263      {{lt, r6, 0xab000000}, false, al, "lt r6 0xab000000", "lt_r6_0xab000000"},
   1264      {{hi, r1, 0x00003fc0}, false, al, "hi r1 0x00003fc0", "hi_r1_0x00003fc0"},
   1265      {{vc, r3, 0x00002ac0}, false, al, "vc r3 0x00002ac0", "vc_r3_0x00002ac0"},
   1266      {{vc, r6, 0x00000ab0}, false, al, "vc r6 0x00000ab0", "vc_r6_0x00000ab0"},
   1267      {{ls, r6, 0x03fc0000}, false, al, "ls r6 0x03fc0000", "ls_r6_0x03fc0000"},
   1268      {{hi, r11, 0x0ab00000},
   1269       false,
   1270       al,
   1271       "hi r11 0x0ab00000",
   1272       "hi_r11_"
   1273       "0x0ab00000"},
   1274      {{lt, r12, 0x0002ac00},
   1275       false,
   1276       al,
   1277       "lt r12 0x0002ac00",
   1278       "lt_r12_"
   1279       "0x0002ac00"},
   1280      {{al, r8, 0xab000000}, false, al, "al r8 0xab000000", "al_r8_0xab000000"},
   1281      {{vs, r2, 0x00000ab0}, false, al, "vs r2 0x00000ab0", "vs_r2_0x00000ab0"},
   1282      {{hi, r14, 0x02ac0000},
   1283       false,
   1284       al,
   1285       "hi r14 0x02ac0000",
   1286       "hi_r14_"
   1287       "0x02ac0000"},
   1288      {{cs, r3, 0x00000ff0}, false, al, "cs r3 0x00000ff0", "cs_r3_0x00000ff0"},
   1289      {{cc, r9, 0xb000000a}, false, al, "cc r9 0xb000000a", "cc_r9_0xb000000a"},
   1290      {{vc, r9, 0x00000ff0}, false, al, "vc r9 0x00000ff0", "vc_r9_0x00000ff0"},
   1291      {{ne, r9, 0xab000000}, false, al, "ne r9 0xab000000", "ne_r9_0xab000000"},
   1292      {{cc, r10, 0xb000000a},
   1293       false,
   1294       al,
   1295       "cc r10 0xb000000a",
   1296       "cc_r10_"
   1297       "0xb000000a"},
   1298      {{ls, r11, 0xb000000a},
   1299       false,
   1300       al,
   1301       "ls r11 0xb000000a",
   1302       "ls_r11_"
   1303       "0xb000000a"},
   1304      {{lt, r11, 0x00ff0000},
   1305       false,
   1306       al,
   1307       "lt r11 0x00ff0000",
   1308       "lt_r11_"
   1309       "0x00ff0000"},
   1310      {{lt, r3, 0x000003fc}, false, al, "lt r3 0x000003fc", "lt_r3_0x000003fc"},
   1311      {{gt, r14, 0x00002ac0},
   1312       false,
   1313       al,
   1314       "gt r14 0x00002ac0",
   1315       "gt_r14_"
   1316       "0x00002ac0"},
   1317      {{ls, r8, 0xc000003f}, false, al, "ls r8 0xc000003f", "ls_r8_0xc000003f"},
   1318      {{al, r11, 0x000ab000},
   1319       false,
   1320       al,
   1321       "al r11 0x000ab000",
   1322       "al_r11_"
   1323       "0x000ab000"},
   1324      {{lt, r7, 0x000ab000}, false, al, "lt r7 0x000ab000", "lt_r7_0x000ab000"},
   1325      {{vs, r14, 0xff000000},
   1326       false,
   1327       al,
   1328       "vs r14 0xff000000",
   1329       "vs_r14_"
   1330       "0xff000000"},
   1331      {{vc, r2, 0xab000000}, false, al, "vc r2 0xab000000", "vc_r2_0xab000000"},
   1332      {{ne, r3, 0x00000ff0}, false, al, "ne r3 0x00000ff0", "ne_r3_0x00000ff0"},
   1333      {{ne, r15, 0x02ac0000},
   1334       false,
   1335       al,
   1336       "ne r15 0x02ac0000",
   1337       "ne_r15_"
   1338       "0x02ac0000"},
   1339      {{gt, r3, 0x000ff000}, false, al, "gt r3 0x000ff000", "gt_r3_0x000ff000"},
   1340      {{pl, r1, 0x2ac00000}, false, al, "pl r1 0x2ac00000", "pl_r1_0x2ac00000"},
   1341      {{mi, r1, 0x00002ac0}, false, al, "mi r1 0x00002ac0", "mi_r1_0x00002ac0"},
   1342      {{vc, r6, 0xac000002}, false, al, "vc r6 0xac000002", "vc_r6_0xac000002"},
   1343      {{vs, r2, 0x0ff00000}, false, al, "vs r2 0x0ff00000", "vs_r2_0x0ff00000"},
   1344      {{ge, r2, 0x000003fc}, false, al, "ge r2 0x000003fc", "ge_r2_0x000003fc"},
   1345      {{cs, r15, 0x0000ff00},
   1346       false,
   1347       al,
   1348       "cs r15 0x0000ff00",
   1349       "cs_r15_"
   1350       "0x0000ff00"},
   1351      {{lt, r3, 0x000002ac}, false, al, "lt r3 0x000002ac", "lt_r3_0x000002ac"},
   1352      {{cs, r6, 0xff000000}, false, al, "cs r6 0xff000000", "cs_r6_0xff000000"},
   1353      {{ge, r14, 0x000000ff},
   1354       false,
   1355       al,
   1356       "ge r14 0x000000ff",
   1357       "ge_r14_"
   1358       "0x000000ff"},
   1359      {{gt, r7, 0x03fc0000}, false, al, "gt r7 0x03fc0000", "gt_r7_0x03fc0000"},
   1360      {{ne, r8, 0x000ff000}, false, al, "ne r8 0x000ff000", "ne_r8_0x000ff000"},
   1361      {{gt, r14, 0xc000002a},
   1362       false,
   1363       al,
   1364       "gt r14 0xc000002a",
   1365       "gt_r14_"
   1366       "0xc000002a"},
   1367      {{hi, r12, 0x0000ff00},
   1368       false,
   1369       al,
   1370       "hi r12 0x0000ff00",
   1371       "hi_r12_"
   1372       "0x0000ff00"},
   1373      {{le, r15, 0x00003fc0},
   1374       false,
   1375       al,
   1376       "le r15 0x00003fc0",
   1377       "le_r15_"
   1378       "0x00003fc0"},
   1379      {{eq, r13, 0x000ab000},
   1380       false,
   1381       al,
   1382       "eq r13 0x000ab000",
   1383       "eq_r13_"
   1384       "0x000ab000"},
   1385      {{vc, r7, 0x000ab000}, false, al, "vc r7 0x000ab000", "vc_r7_0x000ab000"},
   1386      {{gt, r7, 0xf000000f}, false, al, "gt r7 0xf000000f", "gt_r7_0xf000000f"},
   1387      {{cc, r6, 0xac000002}, false, al, "cc r6 0xac000002", "cc_r6_0xac000002"},
   1388      {{cs, r14, 0x000000ff},
   1389       false,
   1390       al,
   1391       "cs r14 0x000000ff",
   1392       "cs_r14_"
   1393       "0x000000ff"},
   1394      {{ne, r2, 0x0003fc00}, false, al, "ne r2 0x0003fc00", "ne_r2_0x0003fc00"},
   1395      {{vs, r1, 0x002ac000}, false, al, "vs r1 0x002ac000", "vs_r1_0x002ac000"},
   1396      {{eq, r8, 0x002ac000}, false, al, "eq r8 0x002ac000", "eq_r8_0x002ac000"},
   1397      {{lt, r8, 0x0000ff00}, false, al, "lt r8 0x0000ff00", "lt_r8_0x0000ff00"},
   1398      {{vs, r9, 0xc000003f}, false, al, "vs r9 0xc000003f", "vs_r9_0xc000003f"},
   1399      {{mi, r11, 0xff000000},
   1400       false,
   1401       al,
   1402       "mi r11 0xff000000",
   1403       "mi_r11_"
   1404       "0xff000000"},
   1405      {{cs, r12, 0x03fc0000},
   1406       false,
   1407       al,
   1408       "cs r12 0x03fc0000",
   1409       "cs_r12_"
   1410       "0x03fc0000"},
   1411      {{lt, r5, 0xc000002a}, false, al, "lt r5 0xc000002a", "lt_r5_0xc000002a"},
   1412      {{vc, r6, 0x000000ab}, false, al, "vc r6 0x000000ab", "vc_r6_0x000000ab"},
   1413      {{ls, r10, 0x0ab00000},
   1414       false,
   1415       al,
   1416       "ls r10 0x0ab00000",
   1417       "ls_r10_"
   1418       "0x0ab00000"},
   1419      {{al, r11, 0x00ff0000},
   1420       false,
   1421       al,
   1422       "al r11 0x00ff0000",
   1423       "al_r11_"
   1424       "0x00ff0000"},
   1425      {{hi, r13, 0x00000ab0},
   1426       false,
   1427       al,
   1428       "hi r13 0x00000ab0",
   1429       "hi_r13_"
   1430       "0x00000ab0"},
   1431      {{ls, r0, 0xab000000}, false, al, "ls r0 0xab000000", "ls_r0_0xab000000"},
   1432      {{le, r5, 0xab000000}, false, al, "le r5 0xab000000", "le_r5_0xab000000"},
   1433      {{vs, r4, 0x00ff0000}, false, al, "vs r4 0x00ff0000", "vs_r4_0x00ff0000"},
   1434      {{al, r10, 0x03fc0000},
   1435       false,
   1436       al,
   1437       "al r10 0x03fc0000",
   1438       "al_r10_"
   1439       "0x03fc0000"},
   1440      {{al, r8, 0x000003fc}, false, al, "al r8 0x000003fc", "al_r8_0x000003fc"},
   1441      {{vs, r11, 0xab000000},
   1442       false,
   1443       al,
   1444       "vs r11 0xab000000",
   1445       "vs_r11_"
   1446       "0xab000000"},
   1447      {{eq, r2, 0x00000ff0}, false, al, "eq r2 0x00000ff0", "eq_r2_0x00000ff0"},
   1448      {{vc, r4, 0x00000ff0}, false, al, "vc r4 0x00000ff0", "vc_r4_0x00000ff0"},
   1449      {{vc, r9, 0x00002ac0}, false, al, "vc r9 0x00002ac0", "vc_r9_0x00002ac0"},
   1450      {{cc, r11, 0x00ff0000},
   1451       false,
   1452       al,
   1453       "cc r11 0x00ff0000",
   1454       "cc_r11_"
   1455       "0x00ff0000"},
   1456      {{cc, r13, 0x00ff0000},
   1457       false,
   1458       al,
   1459       "cc r13 0x00ff0000",
   1460       "cc_r13_"
   1461       "0x00ff0000"},
   1462      {{pl, r0, 0x00000ab0}, false, al, "pl r0 0x00000ab0", "pl_r0_0x00000ab0"},
   1463      {{al, r2, 0x02ac0000}, false, al, "al r2 0x02ac0000", "al_r2_0x02ac0000"},
   1464      {{hi, r11, 0xc000002a},
   1465       false,
   1466       al,
   1467       "hi r11 0xc000002a",
   1468       "hi_r11_"
   1469       "0xc000002a"},
   1470      {{ne, r3, 0xf000000f}, false, al, "ne r3 0xf000000f", "ne_r3_0xf000000f"},
   1471      {{cc, r15, 0x0ab00000},
   1472       false,
   1473       al,
   1474       "cc r15 0x0ab00000",
   1475       "cc_r15_"
   1476       "0x0ab00000"},
   1477      {{ge, r12, 0x00ff0000},
   1478       false,
   1479       al,
   1480       "ge r12 0x00ff0000",
   1481       "ge_r12_"
   1482       "0x00ff0000"},
   1483      {{le, r12, 0x002ac000},
   1484       false,
   1485       al,
   1486       "le r12 0x002ac000",
   1487       "le_r12_"
   1488       "0x002ac000"},
   1489      {{mi, r12, 0xc000003f},
   1490       false,
   1491       al,
   1492       "mi r12 0xc000003f",
   1493       "mi_r12_"
   1494       "0xc000003f"},
   1495      {{lt, r0, 0xfc000003}, false, al, "lt r0 0xfc000003", "lt_r0_0xfc000003"},
   1496      {{vc, r15, 0x000ab000},
   1497       false,
   1498       al,
   1499       "vc r15 0x000ab000",
   1500       "vc_r15_"
   1501       "0x000ab000"},
   1502      {{pl, r5, 0x3fc00000}, false, al, "pl r5 0x3fc00000", "pl_r5_0x3fc00000"},
   1503      {{vs, r15, 0x00ab0000},
   1504       false,
   1505       al,
   1506       "vs r15 0x00ab0000",
   1507       "vs_r15_"
   1508       "0x00ab0000"},
   1509      {{hi, r3, 0x00ff0000}, false, al, "hi r3 0x00ff0000", "hi_r3_0x00ff0000"},
   1510      {{lt, r8, 0x000000ff}, false, al, "lt r8 0x000000ff", "lt_r8_0x000000ff"},
   1511      {{le, r2, 0x000000ff}, false, al, "le r2 0x000000ff", "le_r2_0x000000ff"},
   1512      {{vs, r0, 0x0002ac00}, false, al, "vs r0 0x0002ac00", "vs_r0_0x0002ac00"},
   1513      {{vs, r2, 0xff000000}, false, al, "vs r2 0xff000000", "vs_r2_0xff000000"},
   1514      {{pl, r6, 0xab000000}, false, al, "pl r6 0xab000000", "pl_r6_0xab000000"},
   1515      {{ls, r4, 0x3fc00000}, false, al, "ls r4 0x3fc00000", "ls_r4_0x3fc00000"},
   1516      {{ls, r3, 0x000ab000}, false, al, "ls r3 0x000ab000", "ls_r3_0x000ab000"},
   1517      {{eq, r11, 0x000ab000},
   1518       false,
   1519       al,
   1520       "eq r11 0x000ab000",
   1521       "eq_r11_"
   1522       "0x000ab000"},
   1523      {{vc, r6, 0x03fc0000}, false, al, "vc r6 0x03fc0000", "vc_r6_0x03fc0000"},
   1524      {{mi, r14, 0x0000ab00},
   1525       false,
   1526       al,
   1527       "mi r14 0x0000ab00",
   1528       "mi_r14_"
   1529       "0x0000ab00"},
   1530      {{pl, r8, 0xab000000}, false, al, "pl r8 0xab000000", "pl_r8_0xab000000"},
   1531      {{pl, r8, 0xc000003f}, false, al, "pl r8 0xc000003f", "pl_r8_0xc000003f"},
   1532      {{eq, r14, 0x003fc000},
   1533       false,
   1534       al,
   1535       "eq r14 0x003fc000",
   1536       "eq_r14_"
   1537       "0x003fc000"},
   1538      {{vs, r9, 0x00ff0000}, false, al, "vs r9 0x00ff0000", "vs_r9_0x00ff0000"},
   1539      {{vs, r1, 0x00002ac0}, false, al, "vs r1 0x00002ac0", "vs_r1_0x00002ac0"},
   1540      {{le, r1, 0x00ff0000}, false, al, "le r1 0x00ff0000", "le_r1_0x00ff0000"},
   1541      {{lt, r7, 0x000ff000}, false, al, "lt r7 0x000ff000", "lt_r7_0x000ff000"},
   1542      {{mi, r6, 0x002ac000}, false, al, "mi r6 0x002ac000", "mi_r6_0x002ac000"},
   1543      {{vc, r11, 0xc000003f},
   1544       false,
   1545       al,
   1546       "vc r11 0xc000003f",
   1547       "vc_r11_"
   1548       "0xc000003f"},
   1549      {{lt, r4, 0x00000000}, false, al, "lt r4 0x00000000", "lt_r4_0x00000000"},
   1550      {{pl, r0, 0xac000002}, false, al, "pl r0 0xac000002", "pl_r0_0xac000002"},
   1551      {{ls, r10, 0xc000003f},
   1552       false,
   1553       al,
   1554       "ls r10 0xc000003f",
   1555       "ls_r10_"
   1556       "0xc000003f"},
   1557      {{cc, r15, 0xc000002a},
   1558       false,
   1559       al,
   1560       "cc r15 0xc000002a",
   1561       "cc_r15_0xc000002a"}};
   1562 
   1563 // These headers each contain an array of `TestResult` with the reference output
   1564 // values. The reference arrays are names `kReference{mnemonic}`.
   1565 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-cmn.h"
   1566 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-cmp.h"
   1567 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-teq.h"
   1568 #include "aarch32/traces/assembler-cond-rd-operand-const-a32-can-use-pc-tst.h"
   1569 
   1570 
   1571 // The maximum number of errors to report in detail for each test.
   1572 const unsigned kErrorReportLimit = 8;
   1573 
   1574 typedef void (MacroAssembler::*Fn)(Condition cond,
   1575                                    Register rd,
   1576                                    const Operand& op);
   1577 
   1578 void TestHelper(Fn instruction,
   1579                 const char* mnemonic,
   1580                 const TestResult reference[]) {
   1581   unsigned total_error_count = 0;
   1582   MacroAssembler masm(BUF_SIZE);
   1583 
   1584   masm.UseA32();
   1585 
   1586   for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1587     // Values to pass to the macro-assembler.
   1588     Condition cond = kTests[i].operands.cond;
   1589     Register rd = kTests[i].operands.rd;
   1590     uint32_t immediate = kTests[i].operands.immediate;
   1591     Operand op(immediate);
   1592 
   1593     int32_t start = masm.GetCursorOffset();
   1594     {
   1595       // We never generate more that 4 bytes, as IT instructions are only
   1596       // allowed for narrow encodings.
   1597       ExactAssemblyScope scope(&masm, 4, ExactAssemblyScope::kMaximumSize);
   1598       if (kTests[i].in_it_block) {
   1599         masm.it(kTests[i].it_condition);
   1600       }
   1601       (masm.*instruction)(cond, rd, op);
   1602     }
   1603     int32_t end = masm.GetCursorOffset();
   1604 
   1605     const byte* result_ptr =
   1606         masm.GetBuffer()->GetOffsetAddress<const byte*>(start);
   1607     VIXL_ASSERT(start < end);
   1608     uint32_t result_size = end - start;
   1609 
   1610     if (Test::generate_test_trace()) {
   1611       // Print the result bytes.
   1612       printf("const byte kInstruction_%s_%s[] = {\n",
   1613              mnemonic,
   1614              kTests[i].identifier);
   1615       for (uint32_t j = 0; j < result_size; j++) {
   1616         if (j == 0) {
   1617           printf("  0x%02" PRIx8, result_ptr[j]);
   1618         } else {
   1619           printf(", 0x%02" PRIx8, result_ptr[j]);
   1620         }
   1621       }
   1622       // This comment is meant to be used by external tools to validate
   1623       // the encoding. We can parse the comment to figure out what
   1624       // instruction this corresponds to.
   1625       if (kTests[i].in_it_block) {
   1626         printf(" // It %s; %s %s\n};\n",
   1627                kTests[i].it_condition.GetName(),
   1628                mnemonic,
   1629                kTests[i].operands_description);
   1630       } else {
   1631         printf(" // %s %s\n};\n", mnemonic, kTests[i].operands_description);
   1632       }
   1633     } else {
   1634       // Check we've emitted the exact same encoding as present in the
   1635       // trace file. Only print up to `kErrorReportLimit` errors.
   1636       if (((result_size != reference[i].size) ||
   1637            (memcmp(result_ptr, reference[i].encoding, reference[i].size) !=
   1638             0)) &&
   1639           (++total_error_count <= kErrorReportLimit)) {
   1640         printf("Error when testing \"%s\" with operands \"%s\":\n",
   1641                mnemonic,
   1642                kTests[i].operands_description);
   1643         printf("  Expected: ");
   1644         for (uint32_t j = 0; j < reference[i].size; j++) {
   1645           if (j == 0) {
   1646             printf("0x%02" PRIx8, reference[i].encoding[j]);
   1647           } else {
   1648             printf(", 0x%02" PRIx8, reference[i].encoding[j]);
   1649           }
   1650         }
   1651         printf("\n");
   1652         printf("  Found:    ");
   1653         for (uint32_t j = 0; j < result_size; j++) {
   1654           if (j == 0) {
   1655             printf("0x%02" PRIx8, result_ptr[j]);
   1656           } else {
   1657             printf(", 0x%02" PRIx8, result_ptr[j]);
   1658           }
   1659         }
   1660         printf("\n");
   1661       }
   1662     }
   1663   }
   1664 
   1665   masm.FinalizeCode();
   1666 
   1667   if (Test::generate_test_trace()) {
   1668     // Finalize the trace file by writing the final `TestResult` array
   1669     // which links all generated instruction encodings.
   1670     printf("const TestResult kReference%s[] = {\n", mnemonic);
   1671     for (unsigned i = 0; i < ARRAY_SIZE(kTests); i++) {
   1672       printf("  {\n");
   1673       printf("    ARRAY_SIZE(kInstruction_%s_%s),\n",
   1674              mnemonic,
   1675              kTests[i].identifier);
   1676       printf("    kInstruction_%s_%s,\n", mnemonic, kTests[i].identifier);
   1677       printf("  },\n");
   1678     }
   1679     printf("};\n");
   1680   } else {
   1681     if (total_error_count > kErrorReportLimit) {
   1682       printf("%u other errors follow.\n",
   1683              total_error_count - kErrorReportLimit);
   1684     }
   1685     // Crash if the test failed.
   1686     VIXL_CHECK(total_error_count == 0);
   1687   }
   1688 }
   1689 
   1690 // Instantiate tests for each instruction in the list.
   1691 #define TEST(mnemonic)                                                      \
   1692   void Test_##mnemonic() {                                                  \
   1693     TestHelper(&MacroAssembler::mnemonic, #mnemonic, kReference##mnemonic); \
   1694   }                                                                         \
   1695   Test test_##mnemonic(                                                     \
   1696       "AARCH32_ASSEMBLER_COND_RD_OPERAND_CONST_A32_CAN_USE_PC_" #mnemonic,  \
   1697       &Test_##mnemonic);
   1698 FOREACH_INSTRUCTION(TEST)
   1699 #undef TEST
   1700 
   1701 }  // namespace
   1702 #endif
   1703 
   1704 }  // namespace aarch32
   1705 }  // namespace vixl
   1706