Home | History | Annotate | Download | only in config
      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 // Data type description shared by test case descriptions.
     28 
     29 {
     30   // List of operand types. They describe what can be passed to the assembler to
     31   // encode an instruction.
     32   //
     33   //   - name: Identifier for the operand. It allows test case descriptions to
     34   //           refer to it.
     35   //   - type: C++ type used by VIXL to represent this operand.
     36   //   - variants: List of variant this operand can take.
     37   //   - default: Which variant to use by default.
     38   "operands": [
     39     {
     40       "identifier": "Condition",
     41       "type": "Condition",
     42       "variants": [
     43         "eq",
     44         "ne",
     45         "cs",
     46         "cc",
     47         "mi",
     48         "pl",
     49         "vs",
     50         "vc",
     51         "hi",
     52         "ls",
     53         "ge",
     54         "lt",
     55         "gt",
     56         "le",
     57         "al"
     58       ],
     59       "default": "al"
     60     },
     61     {
     62       "identifier": "Always",
     63       "type": "Condition",
     64       "variants": [
     65         "al"
     66       ],
     67       "default": "al"
     68     },
     69     {
     70       "identifier": "NotAlways",
     71       "type": "Condition",
     72       "variants": [
     73         "eq",
     74         "ne",
     75         "cs",
     76         "cc",
     77         "mi",
     78         "pl",
     79         "vs",
     80         "vc",
     81         "hi",
     82         "ls",
     83         "ge",
     84         "lt",
     85         "gt",
     86         "le"
     87       ],
     88       "default": "eq"
     89     },
     90     {
     91       "identifier": "AllRegisters",
     92       "type": "Register",
     93       "variants": [
     94         "r0",
     95         "r1",
     96         "r2",
     97         "r3",
     98         "r4",
     99         "r5",
    100         "r6",
    101         "r7",
    102         "r8",
    103         "r9",
    104         "r10",
    105         "r11",
    106         "r12",
    107         "r13",
    108         "r14",
    109         "r15"
    110       ],
    111       "default": "r0"
    112     },
    113     {
    114       "identifier": "AllRegistersButPC",
    115       "type": "Register",
    116       "variants": [
    117         "r0",
    118         "r1",
    119         "r2",
    120         "r3",
    121         "r4",
    122         "r5",
    123         "r6",
    124         "r7",
    125         "r8",
    126         "r9",
    127         "r10",
    128         "r11",
    129         "r12",
    130         "r13",
    131         "r14"
    132       ],
    133       "default": "r0"
    134     },
    135     {
    136       "identifier": "LowRegisters",
    137       "type": "Register",
    138       "variants": [
    139         "r0",
    140         "r1",
    141         "r2",
    142         "r3",
    143         "r4",
    144         "r5",
    145         "r6",
    146         "r7"
    147       ],
    148       "default": "r0"
    149     },
    150     {
    151       "identifier": "RegisterPC",
    152       "type": "Register",
    153       "variants": [
    154         "pc"
    155       ],
    156       "default": "pc"
    157     },
    158     {
    159       "identifier": "RegisterSP",
    160       "type": "Register",
    161       "variants": [
    162         "sp"
    163       ],
    164       "default": "sp"
    165     },
    166     {
    167       "identifier": "A32ModifiedImmediate",
    168       "type": "uint32_t",
    169       "variants": [
    170         "0x00000000",
    171         "0x000000ff",
    172         "0xc000003f",
    173         "0xf000000f",
    174         "0xfc000003",
    175         "0xff000000",
    176         "0x3fc00000",
    177         "0x0ff00000",
    178         "0x03fc0000",
    179         "0x00ff0000",
    180         "0x003fc000",
    181         "0x000ff000",
    182         "0x0003fc00",
    183         "0x0000ff00",
    184         "0x00003fc0",
    185         "0x00000ff0",
    186         "0x000003fc",
    187         "0x000000ab",
    188         "0xc000002a",
    189         "0xb000000a",
    190         "0xac000002",
    191         "0xab000000",
    192         "0x2ac00000",
    193         "0x0ab00000",
    194         "0x02ac0000",
    195         "0x00ab0000",
    196         "0x002ac000",
    197         "0x000ab000",
    198         "0x0002ac00",
    199         "0x0000ab00",
    200         "0x00002ac0",
    201         "0x00000ab0",
    202         "0x000002ac"
    203       ],
    204       "default": "0x000000ab"
    205     },
    206     {
    207       "identifier": "T32ModifiedImmediate",
    208       "type": "uint32_t",
    209       "variants": [
    210         "0x000001fe",
    211         "0x000003fc",
    212         "0x000007f8",
    213         "0x00000ff0",
    214         "0x00001fe0",
    215         "0x00003fc0",
    216         "0x00007f80",
    217         "0x0000ff00",
    218         "0x0001fe00",
    219         "0x0003fc00",
    220         "0x0007f800",
    221         "0x000ff000",
    222         "0x001fe000",
    223         "0x003fc000",
    224         "0x007f8000",
    225         "0x00ff0000",
    226         "0x01fe0000",
    227         "0x03fc0000",
    228         "0x07f80000",
    229         "0x0ff00000",
    230         "0x1fe00000",
    231         "0x3fc00000",
    232         "0x7f800000",
    233         "0xff000000",
    234         "0x000000ff",
    235         "0x00ff00ff",
    236         "0xff00ff00",
    237         "0xffffffff",
    238         "0x00000156",
    239         "0x000002ac",
    240         "0x00000558",
    241         "0x00000ab0",
    242         "0x00001560",
    243         "0x00002ac0",
    244         "0x00005580",
    245         "0x0000ab00",
    246         "0x00015600",
    247         "0x0002ac00",
    248         "0x00055800",
    249         "0x000ab000",
    250         "0x00156000",
    251         "0x002ac000",
    252         "0x00558000",
    253         "0x00ab0000",
    254         "0x01560000",
    255         "0x02ac0000",
    256         "0x05580000",
    257         "0x0ab00000",
    258         "0x15600000",
    259         "0x2ac00000",
    260         "0x55800000",
    261         "0xab000000",
    262         "0x000000ab",
    263         "0x00ab00ab",
    264         "0xab00ab00",
    265         "0xabababab"
    266       ],
    267       "default": "0xabababab"
    268     },
    269     {
    270       "identifier": "Imm16",
    271       "type": "uint32_t",
    272       "variants": [
    273         "0x0000",
    274         "0x0001",
    275         "0x0002",
    276         "0x0020",
    277         "0x007d",
    278         "0x007e",
    279         "0x007f",
    280         "0x7ffd",
    281         "0x7ffe",
    282         "0x7fff",
    283         "0x3333",
    284         "0x5555",
    285         "0xaaaa",
    286         "0xcccc",
    287         "0x8000",
    288         "0x8001",
    289         "0x8002",
    290         "0x8003",
    291         "0xff80",
    292         "0xff81",
    293         "0xff82",
    294         "0xff83",
    295         "0xffe0",
    296         "0xfffd",
    297         "0xfffe",
    298         "0xffff"
    299       ],
    300       "default": "0x0"
    301     },
    302     {
    303       "identifier": "Imm8x4",
    304       "type": "uint32_t",
    305       "variants": [
    306         "0x0",
    307         "0x4",
    308         "0x8",
    309         "0xc",
    310         "0x10",
    311         "0x14",
    312         "0x18",
    313         "0x1c",
    314         "0x20",
    315         "0x24",
    316         "0x28",
    317         "0x2c",
    318         "0x30",
    319         "0x34",
    320         "0x38",
    321         "0x3c",
    322         "0x40",
    323         "0x44",
    324         "0x48",
    325         "0x4c",
    326         "0x50",
    327         "0x54",
    328         "0x58",
    329         "0x5c",
    330         "0x60",
    331         "0x64",
    332         "0x68",
    333         "0x6c",
    334         "0x70",
    335         "0x74",
    336         "0x78",
    337         "0x7c",
    338         "0x80",
    339         "0x84",
    340         "0x88",
    341         "0x8c",
    342         "0x90",
    343         "0x94",
    344         "0x98",
    345         "0x9c",
    346         "0xa0",
    347         "0xa4",
    348         "0xa8",
    349         "0xac",
    350         "0xb0",
    351         "0xb4",
    352         "0xb8",
    353         "0xbc",
    354         "0xc0",
    355         "0xc4",
    356         "0xc8",
    357         "0xcc",
    358         "0xd0",
    359         "0xd4",
    360         "0xd8",
    361         "0xdc",
    362         "0xe0",
    363         "0xe4",
    364         "0xe8",
    365         "0xec",
    366         "0xf0",
    367         "0xf4",
    368         "0xf8",
    369         "0xfc",
    370         "0x100",
    371         "0x104",
    372         "0x108",
    373         "0x10c",
    374         "0x110",
    375         "0x114",
    376         "0x118",
    377         "0x11c",
    378         "0x120",
    379         "0x124",
    380         "0x128",
    381         "0x12c",
    382         "0x130",
    383         "0x134",
    384         "0x138",
    385         "0x13c",
    386         "0x140",
    387         "0x144",
    388         "0x148",
    389         "0x14c",
    390         "0x150",
    391         "0x154",
    392         "0x158",
    393         "0x15c",
    394         "0x160",
    395         "0x164",
    396         "0x168",
    397         "0x16c",
    398         "0x170",
    399         "0x174",
    400         "0x178",
    401         "0x17c",
    402         "0x180",
    403         "0x184",
    404         "0x188",
    405         "0x18c",
    406         "0x190",
    407         "0x194",
    408         "0x198",
    409         "0x19c",
    410         "0x1a0",
    411         "0x1a4",
    412         "0x1a8",
    413         "0x1ac",
    414         "0x1b0",
    415         "0x1b4",
    416         "0x1b8",
    417         "0x1bc",
    418         "0x1c0",
    419         "0x1c4",
    420         "0x1c8",
    421         "0x1cc",
    422         "0x1d0",
    423         "0x1d4",
    424         "0x1d8",
    425         "0x1dc",
    426         "0x1e0",
    427         "0x1e4",
    428         "0x1e8",
    429         "0x1ec",
    430         "0x1f0",
    431         "0x1f4",
    432         "0x1f8",
    433         "0x1fc",
    434         "0x200",
    435         "0x204",
    436         "0x208",
    437         "0x20c",
    438         "0x210",
    439         "0x214",
    440         "0x218",
    441         "0x21c",
    442         "0x220",
    443         "0x224",
    444         "0x228",
    445         "0x22c",
    446         "0x230",
    447         "0x234",
    448         "0x238",
    449         "0x23c",
    450         "0x240",
    451         "0x244",
    452         "0x248",
    453         "0x24c",
    454         "0x250",
    455         "0x254",
    456         "0x258",
    457         "0x25c",
    458         "0x260",
    459         "0x264",
    460         "0x268",
    461         "0x26c",
    462         "0x270",
    463         "0x274",
    464         "0x278",
    465         "0x27c",
    466         "0x280",
    467         "0x284",
    468         "0x288",
    469         "0x28c",
    470         "0x290",
    471         "0x294",
    472         "0x298",
    473         "0x29c",
    474         "0x2a0",
    475         "0x2a4",
    476         "0x2a8",
    477         "0x2ac",
    478         "0x2b0",
    479         "0x2b4",
    480         "0x2b8",
    481         "0x2bc",
    482         "0x2c0",
    483         "0x2c4",
    484         "0x2c8",
    485         "0x2cc",
    486         "0x2d0",
    487         "0x2d4",
    488         "0x2d8",
    489         "0x2dc",
    490         "0x2e0",
    491         "0x2e4",
    492         "0x2e8",
    493         "0x2ec",
    494         "0x2f0",
    495         "0x2f4",
    496         "0x2f8",
    497         "0x2fc",
    498         "0x300",
    499         "0x304",
    500         "0x308",
    501         "0x30c",
    502         "0x310",
    503         "0x314",
    504         "0x318",
    505         "0x31c",
    506         "0x320",
    507         "0x324",
    508         "0x328",
    509         "0x32c",
    510         "0x330",
    511         "0x334",
    512         "0x338",
    513         "0x33c",
    514         "0x340",
    515         "0x344",
    516         "0x348",
    517         "0x34c",
    518         "0x350",
    519         "0x354",
    520         "0x358",
    521         "0x35c",
    522         "0x360",
    523         "0x364",
    524         "0x368",
    525         "0x36c",
    526         "0x370",
    527         "0x374",
    528         "0x378",
    529         "0x37c",
    530         "0x380",
    531         "0x384",
    532         "0x388",
    533         "0x38c",
    534         "0x390",
    535         "0x394",
    536         "0x398",
    537         "0x39c",
    538         "0x3a0",
    539         "0x3a4",
    540         "0x3a8",
    541         "0x3ac",
    542         "0x3b0",
    543         "0x3b4",
    544         "0x3b8",
    545         "0x3bc",
    546         "0x3c0",
    547         "0x3c4",
    548         "0x3c8",
    549         "0x3cc",
    550         "0x3d0",
    551         "0x3d4",
    552         "0x3d8",
    553         "0x3dc",
    554         "0x3e0",
    555         "0x3e4",
    556         "0x3e8",
    557         "0x3ec",
    558         "0x3f0",
    559         "0x3f4",
    560         "0x3f8",
    561         "0x3fc"
    562       ],
    563       "default": "0x3d4"
    564     },
    565     {
    566       "identifier": "Imm7x4",
    567       "type": "uint32_t",
    568       "variants": [
    569         "0x0",
    570         "0x4",
    571         "0x8",
    572         "0xc",
    573         "0x10",
    574         "0x14",
    575         "0x18",
    576         "0x1c",
    577         "0x20",
    578         "0x24",
    579         "0x28",
    580         "0x2c",
    581         "0x30",
    582         "0x34",
    583         "0x38",
    584         "0x3c",
    585         "0x40",
    586         "0x44",
    587         "0x48",
    588         "0x4c",
    589         "0x50",
    590         "0x54",
    591         "0x58",
    592         "0x5c",
    593         "0x60",
    594         "0x64",
    595         "0x68",
    596         "0x6c",
    597         "0x70",
    598         "0x74",
    599         "0x78",
    600         "0x7c",
    601         "0x80",
    602         "0x84",
    603         "0x88",
    604         "0x8c",
    605         "0x90",
    606         "0x94",
    607         "0x98",
    608         "0x9c",
    609         "0xa0",
    610         "0xa4",
    611         "0xa8",
    612         "0xac",
    613         "0xb0",
    614         "0xb4",
    615         "0xb8",
    616         "0xbc",
    617         "0xc0",
    618         "0xc4",
    619         "0xc8",
    620         "0xcc",
    621         "0xd0",
    622         "0xd4",
    623         "0xd8",
    624         "0xdc",
    625         "0xe0",
    626         "0xe4",
    627         "0xe8",
    628         "0xec",
    629         "0xf0",
    630         "0xf4",
    631         "0xf8",
    632         "0xfc",
    633         "0x100",
    634         "0x104",
    635         "0x108",
    636         "0x10c",
    637         "0x110",
    638         "0x114",
    639         "0x118",
    640         "0x11c",
    641         "0x120",
    642         "0x124",
    643         "0x128",
    644         "0x12c",
    645         "0x130",
    646         "0x134",
    647         "0x138",
    648         "0x13c",
    649         "0x140",
    650         "0x144",
    651         "0x148",
    652         "0x14c",
    653         "0x150",
    654         "0x154",
    655         "0x158",
    656         "0x15c",
    657         "0x160",
    658         "0x164",
    659         "0x168",
    660         "0x16c",
    661         "0x170",
    662         "0x174",
    663         "0x178",
    664         "0x17c",
    665         "0x180",
    666         "0x184",
    667         "0x188",
    668         "0x18c",
    669         "0x190",
    670         "0x194",
    671         "0x198",
    672         "0x19c",
    673         "0x1a0",
    674         "0x1a4",
    675         "0x1a8",
    676         "0x1ac",
    677         "0x1b0",
    678         "0x1b4",
    679         "0x1b8",
    680         "0x1bc",
    681         "0x1c0",
    682         "0x1c4",
    683         "0x1c8",
    684         "0x1cc",
    685         "0x1d0",
    686         "0x1d4",
    687         "0x1d8",
    688         "0x1dc",
    689         "0x1e0",
    690         "0x1e4",
    691         "0x1e8",
    692         "0x1ec",
    693         "0x1f0",
    694         "0x1f4",
    695         "0x1f8",
    696         "0x1fc"
    697       ],
    698       "default": "0x1d4"
    699     },
    700     {
    701       "identifier": "Shift",
    702       "type": "ShiftType",
    703       "variants": [
    704         "LSL",
    705         "LSR",
    706         "ASR",
    707         "ROR"
    708       ],
    709       "default": "LSL"
    710     },
    711     {
    712       "identifier": "Shift1To31",
    713       "type": "ShiftType",
    714       "variants": [
    715         "LSL",
    716         "ROR"
    717       ],
    718       "default": "LSL"
    719     },
    720     {
    721       "identifier": "Shift1To32",
    722       "type": "ShiftType",
    723       "variants": [
    724         "LSR",
    725         "ASR"
    726       ],
    727       "default": "LSR"
    728     },
    729     {
    730       "identifier": "ShiftROR",
    731       "type": "ShiftType",
    732       "variants": [
    733         "ROR"
    734       ],
    735       "default": "ROR"
    736     },
    737     {
    738       "identifier": "ShiftAmount1To31",
    739       "type": "uint32_t",
    740       "variants": [
    741         "1",
    742         "2",
    743         "3",
    744         "4",
    745         "5",
    746         "6",
    747         "7",
    748         "8",
    749         "9",
    750         "10",
    751         "11",
    752         "12",
    753         "13",
    754         "14",
    755         "15",
    756         "16",
    757         "17",
    758         "18",
    759         "19",
    760         "20",
    761         "21",
    762         "22",
    763         "23",
    764         "24",
    765         "25",
    766         "26",
    767         "27",
    768         "28",
    769         "29",
    770         "30",
    771         "31"
    772       ],
    773       "default": "1"
    774     },
    775     {
    776       "identifier": "ShiftAmount1To32",
    777       "type": "uint32_t",
    778       "variants": [
    779         "1",
    780         "2",
    781         "3",
    782         "4",
    783         "5",
    784         "6",
    785         "7",
    786         "8",
    787         "9",
    788         "10",
    789         "11",
    790         "12",
    791         "13",
    792         "14",
    793         "15",
    794         "16",
    795         "17",
    796         "18",
    797         "19",
    798         "20",
    799         "21",
    800         "22",
    801         "23",
    802         "24",
    803         "25",
    804         "26",
    805         "27",
    806         "28",
    807         "29",
    808         "30",
    809         "31",
    810         "32"
    811       ],
    812       "default": "1"
    813     },
    814     // Some instructions have a rotation amount restricted to "0",
    815     // "8", "16" and "24".
    816     {
    817       "identifier": "ShiftRotationAmountX8",
    818       "type": "uint32_t",
    819       "variants": [
    820         "0",
    821         "8",
    822         "16",
    823         "24"
    824       ],
    825       "default": "0"
    826     },
    827     {
    828       "identifier": "Sign",
    829       "type": "Sign",
    830       "variants": [
    831         "plus",
    832         "minus"
    833       ],
    834       "default": "plus"
    835     },
    836     {
    837       "identifier": "OffsetLowerThan256",
    838       "type": "int32_t",
    839       "variants": [
    840         "0",
    841         "1",
    842         "2",
    843         "3",
    844         "4",
    845         "5",
    846         "6",
    847         "7",
    848         "8",
    849         "9",
    850         "10",
    851         "11",
    852         "12",
    853         "13",
    854         "14",
    855         "15",
    856         "16",
    857         "17",
    858         "18",
    859         "19",
    860         "20",
    861         "21",
    862         "22",
    863         "23",
    864         "24",
    865         "25",
    866         "26",
    867         "27",
    868         "28",
    869         "29",
    870         "30",
    871         "31",
    872         "32",
    873         "33",
    874         "34",
    875         "35",
    876         "36",
    877         "37",
    878         "38",
    879         "39",
    880         "40",
    881         "41",
    882         "42",
    883         "43",
    884         "44",
    885         "45",
    886         "46",
    887         "47",
    888         "48",
    889         "49",
    890         "50",
    891         "51",
    892         "52",
    893         "53",
    894         "54",
    895         "55",
    896         "56",
    897         "57",
    898         "58",
    899         "59",
    900         "60",
    901         "61",
    902         "62",
    903         "63",
    904         "64",
    905         "65",
    906         "66",
    907         "67",
    908         "68",
    909         "69",
    910         "70",
    911         "71",
    912         "72",
    913         "73",
    914         "74",
    915         "75",
    916         "76",
    917         "77",
    918         "78",
    919         "79",
    920         "80",
    921         "81",
    922         "82",
    923         "83",
    924         "84",
    925         "85",
    926         "86",
    927         "87",
    928         "88",
    929         "89",
    930         "90",
    931         "91",
    932         "92",
    933         "93",
    934         "94",
    935         "95",
    936         "96",
    937         "97",
    938         "98",
    939         "99",
    940         "100",
    941         "101",
    942         "102",
    943         "103",
    944         "104",
    945         "105",
    946         "106",
    947         "107",
    948         "108",
    949         "109",
    950         "110",
    951         "111",
    952         "112",
    953         "113",
    954         "114",
    955         "115",
    956         "116",
    957         "117",
    958         "118",
    959         "119",
    960         "120",
    961         "121",
    962         "122",
    963         "123",
    964         "124",
    965         "125",
    966         "126",
    967         "127",
    968         "128",
    969         "129",
    970         "130",
    971         "131",
    972         "132",
    973         "133",
    974         "134",
    975         "135",
    976         "136",
    977         "137",
    978         "138",
    979         "139",
    980         "140",
    981         "141",
    982         "142",
    983         "143",
    984         "144",
    985         "145",
    986         "146",
    987         "147",
    988         "148",
    989         "149",
    990         "150",
    991         "151",
    992         "152",
    993         "153",
    994         "154",
    995         "155",
    996         "156",
    997         "157",
    998         "158",
    999         "159",
   1000         "160",
   1001         "161",
   1002         "162",
   1003         "163",
   1004         "164",
   1005         "165",
   1006         "166",
   1007         "167",
   1008         "168",
   1009         "169",
   1010         "170",
   1011         "171",
   1012         "172",
   1013         "173",
   1014         "174",
   1015         "175",
   1016         "176",
   1017         "177",
   1018         "178",
   1019         "179",
   1020         "180",
   1021         "181",
   1022         "182",
   1023         "183",
   1024         "184",
   1025         "185",
   1026         "186",
   1027         "187",
   1028         "188",
   1029         "189",
   1030         "190",
   1031         "191",
   1032         "192",
   1033         "193",
   1034         "194",
   1035         "195",
   1036         "196",
   1037         "197",
   1038         "198",
   1039         "199",
   1040         "200",
   1041         "201",
   1042         "202",
   1043         "203",
   1044         "204",
   1045         "205",
   1046         "206",
   1047         "207",
   1048         "208",
   1049         "209",
   1050         "210",
   1051         "211",
   1052         "212",
   1053         "213",
   1054         "214",
   1055         "215",
   1056         "216",
   1057         "217",
   1058         "218",
   1059         "219",
   1060         "220",
   1061         "221",
   1062         "222",
   1063         "223",
   1064         "224",
   1065         "225",
   1066         "226",
   1067         "227",
   1068         "228",
   1069         "229",
   1070         "230",
   1071         "231",
   1072         "232",
   1073         "233",
   1074         "234",
   1075         "235",
   1076         "236",
   1077         "237",
   1078         "238",
   1079         "239",
   1080         "240",
   1081         "241",
   1082         "242",
   1083         "243",
   1084         "244",
   1085         "245",
   1086         "246",
   1087         "247",
   1088         "248",
   1089         "249",
   1090         "250",
   1091         "251",
   1092         "252",
   1093         "253",
   1094         "254",
   1095         "255"
   1096       ],
   1097       "default": "0"
   1098     },
   1099     {
   1100       "identifier": "OffsetLowerThan4096",
   1101       "type": "int32_t",
   1102       // These variants are a random sample of 500 integers out of all integers
   1103       // from 1 to 4094 (included). We've added 0 and 4095 explicitely.
   1104       "variants": [
   1105         "0",
   1106         "4095",
   1107         "2",
   1108         "4",
   1109         "19",
   1110         "22",
   1111         "47",
   1112         "48",
   1113         "53",
   1114         "55",
   1115         "57",
   1116         "70",
   1117         "72",
   1118         "83",
   1119         "98",
   1120         "106",
   1121         "132",
   1122         "136",
   1123         "138",
   1124         "180",
   1125         "188",
   1126         "192",
   1127         "198",
   1128         "199",
   1129         "200",
   1130         "210",
   1131         "213",
   1132         "216",
   1133         "227",
   1134         "233",
   1135         "251",
   1136         "263",
   1137         "264",
   1138         "270",
   1139         "282",
   1140         "306",
   1141         "322",
   1142         "342",
   1143         "348",
   1144         "358",
   1145         "362",
   1146         "365",
   1147         "371",
   1148         "386",
   1149         "398",
   1150         "421",
   1151         "429",
   1152         "441",
   1153         "459",
   1154         "462",
   1155         "470",
   1156         "478",
   1157         "479",
   1158         "481",
   1159         "484",
   1160         "490",
   1161         "496",
   1162         "510",
   1163         "513",
   1164         "517",
   1165         "523",
   1166         "524",
   1167         "525",
   1168         "542",
   1169         "547",
   1170         "565",
   1171         "580",
   1172         "582",
   1173         "595",
   1174         "601",
   1175         "606",
   1176         "612",
   1177         "618",
   1178         "624",
   1179         "662",
   1180         "663",
   1181         "669",
   1182         "670",
   1183         "672",
   1184         "674",
   1185         "678",
   1186         "679",
   1187         "685",
   1188         "688",
   1189         "689",
   1190         "704",
   1191         "712",
   1192         "719",
   1193         "732",
   1194         "766",
   1195         "770",
   1196         "774",
   1197         "778",
   1198         "783",
   1199         "791",
   1200         "794",
   1201         "796",
   1202         "797",
   1203         "806",
   1204         "811",
   1205         "828",
   1206         "831",
   1207         "837",
   1208         "844",
   1209         "850",
   1210         "871",
   1211         "872",
   1212         "875",
   1213         "893",
   1214         "915",
   1215         "932",
   1216         "955",
   1217         "958",
   1218         "960",
   1219         "964",
   1220         "969",
   1221         "970",
   1222         "977",
   1223         "988",
   1224         "997",
   1225         "998",
   1226         "999",
   1227         "1009",
   1228         "1017",
   1229         "1027",
   1230         "1035",
   1231         "1043",
   1232         "1050",
   1233         "1066",
   1234         "1079",
   1235         "1097",
   1236         "1099",
   1237         "1116",
   1238         "1135",
   1239         "1159",
   1240         "1168",
   1241         "1171",
   1242         "1175",
   1243         "1186",
   1244         "1198",
   1245         "1231",
   1246         "1234",
   1247         "1241",
   1248         "1246",
   1249         "1261",
   1250         "1266",
   1251         "1274",
   1252         "1295",
   1253         "1309",
   1254         "1323",
   1255         "1348",
   1256         "1357",
   1257         "1359",
   1258         "1372",
   1259         "1374",
   1260         "1377",
   1261         "1389",
   1262         "1390",
   1263         "1394",
   1264         "1399",
   1265         "1407",
   1266         "1428",
   1267         "1437",
   1268         "1438",
   1269         "1445",
   1270         "1455",
   1271         "1458",
   1272         "1459",
   1273         "1472",
   1274         "1475",
   1275         "1479",
   1276         "1485",
   1277         "1498",
   1278         "1505",
   1279         "1506",
   1280         "1526",
   1281         "1527",
   1282         "1536",
   1283         "1537",
   1284         "1542",
   1285         "1551",
   1286         "1556",
   1287         "1567",
   1288         "1585",
   1289         "1601",
   1290         "1610",
   1291         "1635",
   1292         "1642",
   1293         "1651",
   1294         "1652",
   1295         "1655",
   1296         "1660",
   1297         "1665",
   1298         "1666",
   1299         "1677",
   1300         "1687",
   1301         "1695",
   1302         "1699",
   1303         "1712",
   1304         "1732",
   1305         "1736",
   1306         "1740",
   1307         "1750",
   1308         "1759",
   1309         "1769",
   1310         "1804",
   1311         "1808",
   1312         "1823",
   1313         "1824",
   1314         "1835",
   1315         "1845",
   1316         "1848",
   1317         "1859",
   1318         "1860",
   1319         "1867",
   1320         "1870",
   1321         "1872",
   1322         "1887",
   1323         "1892",
   1324         "1896",
   1325         "1899",
   1326         "1916",
   1327         "1922",
   1328         "1924",
   1329         "1934",
   1330         "1948",
   1331         "1961",
   1332         "1967",
   1333         "1975",
   1334         "1981",
   1335         "1991",
   1336         "1999",
   1337         "2011",
   1338         "2012",
   1339         "2016",
   1340         "2021",
   1341         "2023",
   1342         "2025",
   1343         "2026",
   1344         "2036",
   1345         "2038",
   1346         "2040",
   1347         "2044",
   1348         "2046",
   1349         "2047",
   1350         "2052",
   1351         "2069",
   1352         "2072",
   1353         "2086",
   1354         "2091",
   1355         "2098",
   1356         "2119",
   1357         "2124",
   1358         "2137",
   1359         "2139",
   1360         "2175",
   1361         "2180",
   1362         "2183",
   1363         "2202",
   1364         "2208",
   1365         "2217",
   1366         "2224",
   1367         "2233",
   1368         "2240",
   1369         "2245",
   1370         "2247",
   1371         "2254",
   1372         "2281",
   1373         "2290",
   1374         "2311",
   1375         "2314",
   1376         "2323",
   1377         "2326",
   1378         "2338",
   1379         "2345",
   1380         "2358",
   1381         "2359",
   1382         "2365",
   1383         "2366",
   1384         "2374",
   1385         "2381",
   1386         "2395",
   1387         "2402",
   1388         "2403",
   1389         "2427",
   1390         "2442",
   1391         "2451",
   1392         "2453",
   1393         "2454",
   1394         "2462",
   1395         "2464",
   1396         "2475",
   1397         "2483",
   1398         "2490",
   1399         "2507",
   1400         "2519",
   1401         "2523",
   1402         "2532",
   1403         "2535",
   1404         "2541",
   1405         "2545",
   1406         "2546",
   1407         "2559",
   1408         "2582",
   1409         "2588",
   1410         "2590",
   1411         "2591",
   1412         "2617",
   1413         "2619",
   1414         "2627",
   1415         "2628",
   1416         "2642",
   1417         "2650",
   1418         "2651",
   1419         "2662",
   1420         "2665",
   1421         "2669",
   1422         "2677",
   1423         "2689",
   1424         "2690",
   1425         "2695",
   1426         "2701",
   1427         "2703",
   1428         "2710",
   1429         "2718",
   1430         "2721",
   1431         "2726",
   1432         "2728",
   1433         "2749",
   1434         "2768",
   1435         "2775",
   1436         "2792",
   1437         "2794",
   1438         "2796",
   1439         "2797",
   1440         "2799",
   1441         "2800",
   1442         "2810",
   1443         "2813",
   1444         "2821",
   1445         "2839",
   1446         "2849",
   1447         "2864",
   1448         "2866",
   1449         "2892",
   1450         "2901",
   1451         "2906",
   1452         "2929",
   1453         "2933",
   1454         "2944",
   1455         "2945",
   1456         "2946",
   1457         "2948",
   1458         "2963",
   1459         "2976",
   1460         "2978",
   1461         "2982",
   1462         "2984",
   1463         "2994",
   1464         "2999",
   1465         "3002",
   1466         "3003",
   1467         "3007",
   1468         "3008",
   1469         "3015",
   1470         "3028",
   1471         "3034",
   1472         "3039",
   1473         "3041",
   1474         "3057",
   1475         "3063",
   1476         "3069",
   1477         "3071",
   1478         "3072",
   1479         "3076",
   1480         "3078",
   1481         "3079",
   1482         "3082",
   1483         "3088",
   1484         "3094",
   1485         "3099",
   1486         "3105",
   1487         "3109",
   1488         "3117",
   1489         "3136",
   1490         "3138",
   1491         "3139",
   1492         "3142",
   1493         "3157",
   1494         "3162",
   1495         "3170",
   1496         "3194",
   1497         "3195",
   1498         "3209",
   1499         "3221",
   1500         "3239",
   1501         "3254",
   1502         "3256",
   1503         "3266",
   1504         "3282",
   1505         "3287",
   1506         "3308",
   1507         "3313",
   1508         "3325",
   1509         "3343",
   1510         "3344",
   1511         "3366",
   1512         "3384",
   1513         "3391",
   1514         "3397",
   1515         "3399",
   1516         "3405",
   1517         "3413",
   1518         "3417",
   1519         "3425",
   1520         "3438",
   1521         "3439",
   1522         "3443",
   1523         "3449",
   1524         "3450",
   1525         "3472",
   1526         "3481",
   1527         "3487",
   1528         "3491",
   1529         "3504",
   1530         "3517",
   1531         "3522",
   1532         "3529",
   1533         "3541",
   1534         "3544",
   1535         "3548",
   1536         "3564",
   1537         "3566",
   1538         "3570",
   1539         "3572",
   1540         "3583",
   1541         "3585",
   1542         "3597",
   1543         "3603",
   1544         "3607",
   1545         "3608",
   1546         "3610",
   1547         "3625",
   1548         "3626",
   1549         "3633",
   1550         "3636",
   1551         "3638",
   1552         "3652",
   1553         "3659",
   1554         "3660",
   1555         "3662",
   1556         "3663",
   1557         "3685",
   1558         "3688",
   1559         "3696",
   1560         "3702",
   1561         "3714",
   1562         "3717",
   1563         "3728",
   1564         "3739",
   1565         "3743",
   1566         "3752",
   1567         "3765",
   1568         "3771",
   1569         "3772",
   1570         "3774",
   1571         "3787",
   1572         "3802",
   1573         "3811",
   1574         "3821",
   1575         "3856",
   1576         "3865",
   1577         "3867",
   1578         "3870",
   1579         "3871",
   1580         "3880",
   1581         "3899",
   1582         "3907",
   1583         "3914",
   1584         "3918",
   1585         "3921",
   1586         "3949",
   1587         "3952",
   1588         "3963",
   1589         "3975",
   1590         "3978",
   1591         "3986",
   1592         "3989",
   1593         "3994",
   1594         "4018",
   1595         "4037",
   1596         "4046",
   1597         "4056",
   1598         "4058",
   1599         "4065",
   1600         "4076",
   1601         "4079",
   1602         "4082",
   1603         "4090",
   1604         "4091",
   1605         "4092",
   1606         "4093"
   1607       ],
   1608       "default": "0"
   1609     },
   1610     {
   1611       "identifier": "AddressingMode",
   1612       "type": "AddrMode",
   1613       "variants": [
   1614         "Offset",
   1615         "PreIndex",
   1616         "PostIndex"
   1617       ],
   1618       "default": "Offset"
   1619     }
   1620   ],
   1621   // List of input types. They describe what can be fed to an instruction at
   1622   // runtime.
   1623   //
   1624   //   - name: Identifer for the input. It allows test case descriptions to refer
   1625   //           to it.
   1626   //   - type: Python type associated with this input, implemented as a subclass
   1627   //           of `test_generator.data_types.Inputs`. There should be a Python
   1628   //           class for every input type.
   1629   //   - values: List of possible values.
   1630   //   - default: Value to use by default.
   1631   "inputs": [
   1632     {
   1633       "identifier": "NZCV",
   1634       "type": "NZCV",
   1635       "values": [
   1636         "NFlag",
   1637         "ZFlag",
   1638         "CFlag",
   1639         "VFlag",
   1640         "NZFlag",
   1641         "NCFlag",
   1642         "NVFlag",
   1643         "ZCFlag",
   1644         "ZVFlag",
   1645         "CVFlag",
   1646         "NZCFlag",
   1647         "NZVFlag",
   1648         "NCVFlag",
   1649         "ZCVFlag",
   1650         "NZCVFlag"
   1651       ],
   1652       "default": "NoFlag"
   1653     },
   1654     // TODO: Consider having a seperate list for inputs for which we are only
   1655     // interested in recording the value after the instruction has executed.
   1656     // This applies to `Q` and `GE`.
   1657     {
   1658       "identifier": "Q",
   1659       "type": "Q",
   1660       "values": [
   1661         "NoFlag",
   1662         "QFlag"
   1663       ],
   1664       "default": "NoFlag"
   1665     },
   1666     {
   1667       "identifier": "GE",
   1668       "type": "GE",
   1669       "values": [
   1670         "NoFlag",
   1671         "GE01Flag",
   1672         "GE02Flag",
   1673         "GE03Flag",
   1674         "GE12Flag",
   1675         "GE13Flag",
   1676         "GE23Flag",
   1677         "GE012Flag",
   1678         "GE013Flag",
   1679         "GE023Flag",
   1680         "GE123Flag",
   1681         "GE0123Flag"
   1682       ],
   1683       "default": "NoFlag"
   1684     },
   1685     {
   1686       "identifier": "Register",
   1687       "type": "Register",
   1688       "values": [
   1689         "0x00000000",
   1690         "0x00000001",
   1691         "0x00000002",
   1692         "0x00000020",
   1693         "0x0000007d",
   1694         "0x0000007e",
   1695         "0x0000007f",
   1696         "0x00007ffd",
   1697         "0x00007ffe",
   1698         "0x00007fff",
   1699         "0x33333333",
   1700         "0x55555555",
   1701         "0x7ffffffd",
   1702         "0x7ffffffe",
   1703         "0x7fffffff",
   1704         "0x80000000",
   1705         "0x80000001",
   1706         "0xaaaaaaaa",
   1707         "0xcccccccc",
   1708         "0xffff8000",
   1709         "0xffff8001",
   1710         "0xffff8002",
   1711         "0xffff8003",
   1712         "0xffffff80",
   1713         "0xffffff81",
   1714         "0xffffff82",
   1715         "0xffffff83",
   1716         "0xffffffe0",
   1717         "0xfffffffd",
   1718         "0xfffffffe",
   1719         "0xffffffff"
   1720       ],
   1721       "default": "0xabababab"
   1722     },
   1723     {
   1724       "identifier": "RegisterOffsetLowerThan4096",
   1725       "type": "Register",
   1726       // These values are a random sample of 500 integers out of all integers
   1727       // from 1 to 4094 (included). We've added 0 and 4095 explicitely.
   1728       "values": [
   1729         "0",
   1730         "4095",
   1731         "2",
   1732         "4",
   1733         "19",
   1734         "22",
   1735         "47",
   1736         "48",
   1737         "53",
   1738         "55",
   1739         "57",
   1740         "70",
   1741         "72",
   1742         "83",
   1743         "98",
   1744         "106",
   1745         "132",
   1746         "136",
   1747         "138",
   1748         "180",
   1749         "188",
   1750         "192",
   1751         "198",
   1752         "199",
   1753         "200",
   1754         "210",
   1755         "213",
   1756         "216",
   1757         "227",
   1758         "233",
   1759         "251",
   1760         "263",
   1761         "264",
   1762         "270",
   1763         "282",
   1764         "306",
   1765         "322",
   1766         "342",
   1767         "348",
   1768         "358",
   1769         "362",
   1770         "365",
   1771         "371",
   1772         "386",
   1773         "398",
   1774         "421",
   1775         "429",
   1776         "441",
   1777         "459",
   1778         "462",
   1779         "470",
   1780         "478",
   1781         "479",
   1782         "481",
   1783         "484",
   1784         "490",
   1785         "496",
   1786         "510",
   1787         "513",
   1788         "517",
   1789         "523",
   1790         "524",
   1791         "525",
   1792         "542",
   1793         "547",
   1794         "565",
   1795         "580",
   1796         "582",
   1797         "595",
   1798         "601",
   1799         "606",
   1800         "612",
   1801         "618",
   1802         "624",
   1803         "662",
   1804         "663",
   1805         "669",
   1806         "670",
   1807         "672",
   1808         "674",
   1809         "678",
   1810         "679",
   1811         "685",
   1812         "688",
   1813         "689",
   1814         "704",
   1815         "712",
   1816         "719",
   1817         "732",
   1818         "766",
   1819         "770",
   1820         "774",
   1821         "778",
   1822         "783",
   1823         "791",
   1824         "794",
   1825         "796",
   1826         "797",
   1827         "806",
   1828         "811",
   1829         "828",
   1830         "831",
   1831         "837",
   1832         "844",
   1833         "850",
   1834         "871",
   1835         "872",
   1836         "875",
   1837         "893",
   1838         "915",
   1839         "932",
   1840         "955",
   1841         "958",
   1842         "960",
   1843         "964",
   1844         "969",
   1845         "970",
   1846         "977",
   1847         "988",
   1848         "997",
   1849         "998",
   1850         "999",
   1851         "1009",
   1852         "1017",
   1853         "1027",
   1854         "1035",
   1855         "1043",
   1856         "1050",
   1857         "1066",
   1858         "1079",
   1859         "1097",
   1860         "1099",
   1861         "1116",
   1862         "1135",
   1863         "1159",
   1864         "1168",
   1865         "1171",
   1866         "1175",
   1867         "1186",
   1868         "1198",
   1869         "1231",
   1870         "1234",
   1871         "1241",
   1872         "1246",
   1873         "1261",
   1874         "1266",
   1875         "1274",
   1876         "1295",
   1877         "1309",
   1878         "1323",
   1879         "1348",
   1880         "1357",
   1881         "1359",
   1882         "1372",
   1883         "1374",
   1884         "1377",
   1885         "1389",
   1886         "1390",
   1887         "1394",
   1888         "1399",
   1889         "1407",
   1890         "1428",
   1891         "1437",
   1892         "1438",
   1893         "1445",
   1894         "1455",
   1895         "1458",
   1896         "1459",
   1897         "1472",
   1898         "1475",
   1899         "1479",
   1900         "1485",
   1901         "1498",
   1902         "1505",
   1903         "1506",
   1904         "1526",
   1905         "1527",
   1906         "1536",
   1907         "1537",
   1908         "1542",
   1909         "1551",
   1910         "1556",
   1911         "1567",
   1912         "1585",
   1913         "1601",
   1914         "1610",
   1915         "1635",
   1916         "1642",
   1917         "1651",
   1918         "1652",
   1919         "1655",
   1920         "1660",
   1921         "1665",
   1922         "1666",
   1923         "1677",
   1924         "1687",
   1925         "1695",
   1926         "1699",
   1927         "1712",
   1928         "1732",
   1929         "1736",
   1930         "1740",
   1931         "1750",
   1932         "1759",
   1933         "1769",
   1934         "1804",
   1935         "1808",
   1936         "1823",
   1937         "1824",
   1938         "1835",
   1939         "1845",
   1940         "1848",
   1941         "1859",
   1942         "1860",
   1943         "1867",
   1944         "1870",
   1945         "1872",
   1946         "1887",
   1947         "1892",
   1948         "1896",
   1949         "1899",
   1950         "1916",
   1951         "1922",
   1952         "1924",
   1953         "1934",
   1954         "1948",
   1955         "1961",
   1956         "1967",
   1957         "1975",
   1958         "1981",
   1959         "1991",
   1960         "1999",
   1961         "2011",
   1962         "2012",
   1963         "2016",
   1964         "2021",
   1965         "2023",
   1966         "2025",
   1967         "2026",
   1968         "2036",
   1969         "2038",
   1970         "2040",
   1971         "2044",
   1972         "2046",
   1973         "2047",
   1974         "2052",
   1975         "2069",
   1976         "2072",
   1977         "2086",
   1978         "2091",
   1979         "2098",
   1980         "2119",
   1981         "2124",
   1982         "2137",
   1983         "2139",
   1984         "2175",
   1985         "2180",
   1986         "2183",
   1987         "2202",
   1988         "2208",
   1989         "2217",
   1990         "2224",
   1991         "2233",
   1992         "2240",
   1993         "2245",
   1994         "2247",
   1995         "2254",
   1996         "2281",
   1997         "2290",
   1998         "2311",
   1999         "2314",
   2000         "2323",
   2001         "2326",
   2002         "2338",
   2003         "2345",
   2004         "2358",
   2005         "2359",
   2006         "2365",
   2007         "2366",
   2008         "2374",
   2009         "2381",
   2010         "2395",
   2011         "2402",
   2012         "2403",
   2013         "2427",
   2014         "2442",
   2015         "2451",
   2016         "2453",
   2017         "2454",
   2018         "2462",
   2019         "2464",
   2020         "2475",
   2021         "2483",
   2022         "2490",
   2023         "2507",
   2024         "2519",
   2025         "2523",
   2026         "2532",
   2027         "2535",
   2028         "2541",
   2029         "2545",
   2030         "2546",
   2031         "2559",
   2032         "2582",
   2033         "2588",
   2034         "2590",
   2035         "2591",
   2036         "2617",
   2037         "2619",
   2038         "2627",
   2039         "2628",
   2040         "2642",
   2041         "2650",
   2042         "2651",
   2043         "2662",
   2044         "2665",
   2045         "2669",
   2046         "2677",
   2047         "2689",
   2048         "2690",
   2049         "2695",
   2050         "2701",
   2051         "2703",
   2052         "2710",
   2053         "2718",
   2054         "2721",
   2055         "2726",
   2056         "2728",
   2057         "2749",
   2058         "2768",
   2059         "2775",
   2060         "2792",
   2061         "2794",
   2062         "2796",
   2063         "2797",
   2064         "2799",
   2065         "2800",
   2066         "2810",
   2067         "2813",
   2068         "2821",
   2069         "2839",
   2070         "2849",
   2071         "2864",
   2072         "2866",
   2073         "2892",
   2074         "2901",
   2075         "2906",
   2076         "2929",
   2077         "2933",
   2078         "2944",
   2079         "2945",
   2080         "2946",
   2081         "2948",
   2082         "2963",
   2083         "2976",
   2084         "2978",
   2085         "2982",
   2086         "2984",
   2087         "2994",
   2088         "2999",
   2089         "3002",
   2090         "3003",
   2091         "3007",
   2092         "3008",
   2093         "3015",
   2094         "3028",
   2095         "3034",
   2096         "3039",
   2097         "3041",
   2098         "3057",
   2099         "3063",
   2100         "3069",
   2101         "3071",
   2102         "3072",
   2103         "3076",
   2104         "3078",
   2105         "3079",
   2106         "3082",
   2107         "3088",
   2108         "3094",
   2109         "3099",
   2110         "3105",
   2111         "3109",
   2112         "3117",
   2113         "3136",
   2114         "3138",
   2115         "3139",
   2116         "3142",
   2117         "3157",
   2118         "3162",
   2119         "3170",
   2120         "3194",
   2121         "3195",
   2122         "3209",
   2123         "3221",
   2124         "3239",
   2125         "3254",
   2126         "3256",
   2127         "3266",
   2128         "3282",
   2129         "3287",
   2130         "3308",
   2131         "3313",
   2132         "3325",
   2133         "3343",
   2134         "3344",
   2135         "3366",
   2136         "3384",
   2137         "3391",
   2138         "3397",
   2139         "3399",
   2140         "3405",
   2141         "3413",
   2142         "3417",
   2143         "3425",
   2144         "3438",
   2145         "3439",
   2146         "3443",
   2147         "3449",
   2148         "3450",
   2149         "3472",
   2150         "3481",
   2151         "3487",
   2152         "3491",
   2153         "3504",
   2154         "3517",
   2155         "3522",
   2156         "3529",
   2157         "3541",
   2158         "3544",
   2159         "3548",
   2160         "3564",
   2161         "3566",
   2162         "3570",
   2163         "3572",
   2164         "3583",
   2165         "3585",
   2166         "3597",
   2167         "3603",
   2168         "3607",
   2169         "3608",
   2170         "3610",
   2171         "3625",
   2172         "3626",
   2173         "3633",
   2174         "3636",
   2175         "3638",
   2176         "3652",
   2177         "3659",
   2178         "3660",
   2179         "3662",
   2180         "3663",
   2181         "3685",
   2182         "3688",
   2183         "3696",
   2184         "3702",
   2185         "3714",
   2186         "3717",
   2187         "3728",
   2188         "3739",
   2189         "3743",
   2190         "3752",
   2191         "3765",
   2192         "3771",
   2193         "3772",
   2194         "3774",
   2195         "3787",
   2196         "3802",
   2197         "3811",
   2198         "3821",
   2199         "3856",
   2200         "3865",
   2201         "3867",
   2202         "3870",
   2203         "3871",
   2204         "3880",
   2205         "3899",
   2206         "3907",
   2207         "3914",
   2208         "3918",
   2209         "3921",
   2210         "3949",
   2211         "3952",
   2212         "3963",
   2213         "3975",
   2214         "3978",
   2215         "3986",
   2216         "3989",
   2217         "3994",
   2218         "4018",
   2219         "4037",
   2220         "4046",
   2221         "4056",
   2222         "4058",
   2223         "4065",
   2224         "4076",
   2225         "4079",
   2226         "4082",
   2227         "4090",
   2228         "4091",
   2229         "4092",
   2230         "4093"
   2231       ],
   2232       "default": "0"
   2233     },
   2234     {
   2235       "identifier": "RegisterShift",
   2236       "type": "Register",
   2237       "values": [
   2238         "0",
   2239         "1",
   2240         "2",
   2241         "3",
   2242         "4",
   2243         "5",
   2244         "6",
   2245         "7",
   2246         "8",
   2247         "9",
   2248         "10",
   2249         "11",
   2250         "12",
   2251         "13",
   2252         "14",
   2253         "15",
   2254         "16",
   2255         "17",
   2256         "18",
   2257         "19",
   2258         "20",
   2259         "21",
   2260         "22",
   2261         "23",
   2262         "24",
   2263         "25",
   2264         "26",
   2265         "27",
   2266         "28",
   2267         "29",
   2268         "30",
   2269         "31",
   2270         "32"
   2271       ],
   2272       "default": "0"
   2273     },
   2274     {
   2275       "identifier": "MemOperand",
   2276       "type": "MemOperand",
   2277       // MemOperand inputs are represented by an offset and a 32 bit word placed
   2278       // in memory.
   2279       // The word will be placed into a scratch buffer and we will compute the
   2280       // address of the base register according to what the `MemOperand` does.
   2281       // The offset is used to record the value of the base register.
   2282       "values": [
   2283         "{0, 0x77777777}",
   2284         "{0, 0x55555555}",
   2285         "{0, 0x0badbeef}",
   2286         "{0, 0x0cabba9e}"
   2287       ],
   2288       "default": "{0, 0x77777777}"
   2289     }
   2290   ]
   2291 }
   2292