Home | History | Annotate | Line # | Download | only in opcodes
epiphany-desc.c revision 1.1.1.6
      1  1.1.1.5  christos /* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
      2      1.1  christos /* CPU data for epiphany.
      3      1.1  christos 
      4      1.1  christos THIS FILE IS MACHINE GENERATED WITH CGEN.
      5      1.1  christos 
      6  1.1.1.6  christos Copyright (C) 1996-2020 Free Software Foundation, Inc.
      7      1.1  christos 
      8      1.1  christos This file is part of the GNU Binutils and/or GDB, the GNU debugger.
      9      1.1  christos 
     10      1.1  christos    This file is free software; you can redistribute it and/or modify
     11      1.1  christos    it under the terms of the GNU General Public License as published by
     12      1.1  christos    the Free Software Foundation; either version 3, or (at your option)
     13      1.1  christos    any later version.
     14      1.1  christos 
     15      1.1  christos    It is distributed in the hope that it will be useful, but WITHOUT
     16      1.1  christos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     17      1.1  christos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     18      1.1  christos    License for more details.
     19      1.1  christos 
     20      1.1  christos    You should have received a copy of the GNU General Public License along
     21      1.1  christos    with this program; if not, write to the Free Software Foundation, Inc.,
     22      1.1  christos    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     23      1.1  christos 
     24      1.1  christos */
     25      1.1  christos 
     26      1.1  christos #include "sysdep.h"
     27      1.1  christos #include <stdio.h>
     28      1.1  christos #include <stdarg.h>
     29      1.1  christos #include "ansidecl.h"
     30      1.1  christos #include "bfd.h"
     31      1.1  christos #include "symcat.h"
     32      1.1  christos #include "epiphany-desc.h"
     33      1.1  christos #include "epiphany-opc.h"
     34      1.1  christos #include "opintl.h"
     35      1.1  christos #include "libiberty.h"
     36      1.1  christos #include "xregex.h"
     37      1.1  christos 
     38      1.1  christos /* Attributes.  */
     39      1.1  christos 
     40      1.1  christos static const CGEN_ATTR_ENTRY bool_attr[] =
     41      1.1  christos {
     42      1.1  christos   { "#f", 0 },
     43      1.1  christos   { "#t", 1 },
     44      1.1  christos   { 0, 0 }
     45      1.1  christos };
     46      1.1  christos 
     47      1.1  christos static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
     48      1.1  christos {
     49      1.1  christos   { "base", MACH_BASE },
     50      1.1  christos   { "epiphany32", MACH_EPIPHANY32 },
     51      1.1  christos   { "max", MACH_MAX },
     52      1.1  christos   { 0, 0 }
     53      1.1  christos };
     54      1.1  christos 
     55      1.1  christos static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
     56      1.1  christos {
     57      1.1  christos   { "epiphany", ISA_EPIPHANY },
     58      1.1  christos   { "max", ISA_MAX },
     59      1.1  christos   { 0, 0 }
     60      1.1  christos };
     61      1.1  christos 
     62      1.1  christos const CGEN_ATTR_TABLE epiphany_cgen_ifield_attr_table[] =
     63      1.1  christos {
     64      1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
     65      1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
     66      1.1  christos   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
     67      1.1  christos   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
     68      1.1  christos   { "RESERVED", &bool_attr[0], &bool_attr[0] },
     69      1.1  christos   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
     70      1.1  christos   { "SIGNED", &bool_attr[0], &bool_attr[0] },
     71      1.1  christos   { "RELOC", &bool_attr[0], &bool_attr[0] },
     72      1.1  christos   { 0, 0, 0 }
     73      1.1  christos };
     74      1.1  christos 
     75      1.1  christos const CGEN_ATTR_TABLE epiphany_cgen_hardware_attr_table[] =
     76      1.1  christos {
     77      1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
     78      1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
     79      1.1  christos   { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
     80      1.1  christos   { "PC", &bool_attr[0], &bool_attr[0] },
     81      1.1  christos   { "PROFILE", &bool_attr[0], &bool_attr[0] },
     82      1.1  christos   { 0, 0, 0 }
     83      1.1  christos };
     84      1.1  christos 
     85      1.1  christos const CGEN_ATTR_TABLE epiphany_cgen_operand_attr_table[] =
     86      1.1  christos {
     87      1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
     88      1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
     89      1.1  christos   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
     90      1.1  christos   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
     91      1.1  christos   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
     92      1.1  christos   { "SIGNED", &bool_attr[0], &bool_attr[0] },
     93      1.1  christos   { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
     94      1.1  christos   { "RELAX", &bool_attr[0], &bool_attr[0] },
     95      1.1  christos   { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
     96      1.1  christos   { "RELOC", &bool_attr[0], &bool_attr[0] },
     97      1.1  christos   { 0, 0, 0 }
     98      1.1  christos };
     99      1.1  christos 
    100      1.1  christos const CGEN_ATTR_TABLE epiphany_cgen_insn_attr_table[] =
    101      1.1  christos {
    102      1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
    103      1.1  christos   { "ALIAS", &bool_attr[0], &bool_attr[0] },
    104      1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
    105      1.1  christos   { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
    106      1.1  christos   { "COND-CTI", &bool_attr[0], &bool_attr[0] },
    107      1.1  christos   { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
    108      1.1  christos   { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
    109      1.1  christos   { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
    110      1.1  christos   { "RELAXED", &bool_attr[0], &bool_attr[0] },
    111      1.1  christos   { "NO-DIS", &bool_attr[0], &bool_attr[0] },
    112      1.1  christos   { "PBB", &bool_attr[0], &bool_attr[0] },
    113      1.1  christos   { "SHORT-INSN", &bool_attr[0], &bool_attr[0] },
    114      1.1  christos   { "IMM3", &bool_attr[0], &bool_attr[0] },
    115      1.1  christos   { "IMM8", &bool_attr[0], &bool_attr[0] },
    116      1.1  christos   { 0, 0, 0 }
    117      1.1  christos };
    118      1.1  christos 
    119      1.1  christos /* Instruction set variants.  */
    120      1.1  christos 
    121      1.1  christos static const CGEN_ISA epiphany_cgen_isa_table[] = {
    122      1.1  christos   { "epiphany", 32, 32, 16, 32 },
    123      1.1  christos   { 0, 0, 0, 0, 0 }
    124      1.1  christos };
    125      1.1  christos 
    126      1.1  christos /* Machine variants.  */
    127      1.1  christos 
    128      1.1  christos static const CGEN_MACH epiphany_cgen_mach_table[] = {
    129      1.1  christos   { "epiphany32", "epiphany32", MACH_EPIPHANY32, 0 },
    130      1.1  christos   { 0, 0, 0, 0 }
    131      1.1  christos };
    132      1.1  christos 
    133      1.1  christos static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_gr_names_entries[] =
    134      1.1  christos {
    135      1.1  christos   { "fp", 11, {0, {{{0, 0}}}}, 0, 0 },
    136      1.1  christos   { "sp", 13, {0, {{{0, 0}}}}, 0, 0 },
    137      1.1  christos   { "lr", 14, {0, {{{0, 0}}}}, 0, 0 },
    138      1.1  christos   { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
    139      1.1  christos   { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
    140      1.1  christos   { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
    141      1.1  christos   { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
    142      1.1  christos   { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
    143      1.1  christos   { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
    144      1.1  christos   { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
    145      1.1  christos   { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
    146      1.1  christos   { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
    147      1.1  christos   { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
    148      1.1  christos   { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
    149      1.1  christos   { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
    150      1.1  christos   { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
    151      1.1  christos   { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
    152      1.1  christos   { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
    153      1.1  christos   { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
    154      1.1  christos   { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
    155      1.1  christos   { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
    156      1.1  christos   { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
    157      1.1  christos   { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
    158      1.1  christos   { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
    159      1.1  christos   { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
    160      1.1  christos   { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
    161      1.1  christos   { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
    162      1.1  christos   { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
    163      1.1  christos   { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
    164      1.1  christos   { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
    165      1.1  christos   { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
    166      1.1  christos   { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
    167      1.1  christos   { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
    168      1.1  christos   { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
    169      1.1  christos   { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
    170      1.1  christos   { "r32", 32, {0, {{{0, 0}}}}, 0, 0 },
    171      1.1  christos   { "r33", 33, {0, {{{0, 0}}}}, 0, 0 },
    172      1.1  christos   { "r34", 34, {0, {{{0, 0}}}}, 0, 0 },
    173      1.1  christos   { "r35", 35, {0, {{{0, 0}}}}, 0, 0 },
    174      1.1  christos   { "r36", 36, {0, {{{0, 0}}}}, 0, 0 },
    175      1.1  christos   { "r37", 37, {0, {{{0, 0}}}}, 0, 0 },
    176      1.1  christos   { "r38", 38, {0, {{{0, 0}}}}, 0, 0 },
    177      1.1  christos   { "r39", 39, {0, {{{0, 0}}}}, 0, 0 },
    178      1.1  christos   { "r40", 40, {0, {{{0, 0}}}}, 0, 0 },
    179      1.1  christos   { "r41", 41, {0, {{{0, 0}}}}, 0, 0 },
    180      1.1  christos   { "r42", 42, {0, {{{0, 0}}}}, 0, 0 },
    181      1.1  christos   { "r43", 43, {0, {{{0, 0}}}}, 0, 0 },
    182      1.1  christos   { "r44", 44, {0, {{{0, 0}}}}, 0, 0 },
    183      1.1  christos   { "r45", 45, {0, {{{0, 0}}}}, 0, 0 },
    184      1.1  christos   { "r46", 46, {0, {{{0, 0}}}}, 0, 0 },
    185      1.1  christos   { "r47", 47, {0, {{{0, 0}}}}, 0, 0 },
    186      1.1  christos   { "r48", 48, {0, {{{0, 0}}}}, 0, 0 },
    187      1.1  christos   { "r49", 49, {0, {{{0, 0}}}}, 0, 0 },
    188      1.1  christos   { "r50", 50, {0, {{{0, 0}}}}, 0, 0 },
    189      1.1  christos   { "r51", 51, {0, {{{0, 0}}}}, 0, 0 },
    190      1.1  christos   { "r52", 52, {0, {{{0, 0}}}}, 0, 0 },
    191      1.1  christos   { "r53", 53, {0, {{{0, 0}}}}, 0, 0 },
    192      1.1  christos   { "r54", 54, {0, {{{0, 0}}}}, 0, 0 },
    193      1.1  christos   { "r55", 55, {0, {{{0, 0}}}}, 0, 0 },
    194      1.1  christos   { "r56", 56, {0, {{{0, 0}}}}, 0, 0 },
    195      1.1  christos   { "r57", 57, {0, {{{0, 0}}}}, 0, 0 },
    196      1.1  christos   { "r58", 58, {0, {{{0, 0}}}}, 0, 0 },
    197      1.1  christos   { "r59", 59, {0, {{{0, 0}}}}, 0, 0 },
    198      1.1  christos   { "r60", 60, {0, {{{0, 0}}}}, 0, 0 },
    199      1.1  christos   { "r61", 61, {0, {{{0, 0}}}}, 0, 0 },
    200      1.1  christos   { "r62", 62, {0, {{{0, 0}}}}, 0, 0 },
    201      1.1  christos   { "r63", 63, {0, {{{0, 0}}}}, 0, 0 },
    202      1.1  christos   { "a1", 0, {0, {{{0, 0}}}}, 0, 0 },
    203      1.1  christos   { "a2", 1, {0, {{{0, 0}}}}, 0, 0 },
    204      1.1  christos   { "a3", 2, {0, {{{0, 0}}}}, 0, 0 },
    205      1.1  christos   { "a4", 3, {0, {{{0, 0}}}}, 0, 0 },
    206      1.1  christos   { "v1", 4, {0, {{{0, 0}}}}, 0, 0 },
    207      1.1  christos   { "v2", 5, {0, {{{0, 0}}}}, 0, 0 },
    208      1.1  christos   { "v3", 6, {0, {{{0, 0}}}}, 0, 0 },
    209      1.1  christos   { "v4", 7, {0, {{{0, 0}}}}, 0, 0 },
    210      1.1  christos   { "v5", 8, {0, {{{0, 0}}}}, 0, 0 },
    211      1.1  christos   { "v6", 9, {0, {{{0, 0}}}}, 0, 0 },
    212      1.1  christos   { "v7", 10, {0, {{{0, 0}}}}, 0, 0 },
    213      1.1  christos   { "v8", 11, {0, {{{0, 0}}}}, 0, 0 },
    214      1.1  christos   { "sb", 9, {0, {{{0, 0}}}}, 0, 0 },
    215      1.1  christos   { "sl", 10, {0, {{{0, 0}}}}, 0, 0 },
    216      1.1  christos   { "ip", 12, {0, {{{0, 0}}}}, 0, 0 }
    217      1.1  christos };
    218      1.1  christos 
    219      1.1  christos CGEN_KEYWORD epiphany_cgen_opval_gr_names =
    220      1.1  christos {
    221      1.1  christos   & epiphany_cgen_opval_gr_names_entries[0],
    222      1.1  christos   82,
    223      1.1  christos   0, 0, 0, 0, ""
    224      1.1  christos };
    225      1.1  christos 
    226      1.1  christos static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_cr_names_entries[] =
    227      1.1  christos {
    228      1.1  christos   { "config", 0, {0, {{{0, 0}}}}, 0, 0 },
    229      1.1  christos   { "status", 1, {0, {{{0, 0}}}}, 0, 0 },
    230      1.1  christos   { "pc", 2, {0, {{{0, 0}}}}, 0, 0 },
    231      1.1  christos   { "debug", 3, {0, {{{0, 0}}}}, 0, 0 },
    232      1.1  christos   { "iab", 4, {0, {{{0, 0}}}}, 0, 0 },
    233      1.1  christos   { "lc", 5, {0, {{{0, 0}}}}, 0, 0 },
    234      1.1  christos   { "ls", 6, {0, {{{0, 0}}}}, 0, 0 },
    235      1.1  christos   { "le", 7, {0, {{{0, 0}}}}, 0, 0 },
    236      1.1  christos   { "iret", 8, {0, {{{0, 0}}}}, 0, 0 },
    237      1.1  christos   { "imask", 9, {0, {{{0, 0}}}}, 0, 0 },
    238      1.1  christos   { "ilat", 10, {0, {{{0, 0}}}}, 0, 0 },
    239      1.1  christos   { "ilatst", 11, {0, {{{0, 0}}}}, 0, 0 },
    240      1.1  christos   { "ilatcl", 12, {0, {{{0, 0}}}}, 0, 0 },
    241      1.1  christos   { "ipend", 13, {0, {{{0, 0}}}}, 0, 0 },
    242      1.1  christos   { "ctimer0", 14, {0, {{{0, 0}}}}, 0, 0 },
    243      1.1  christos   { "ctimer1", 15, {0, {{{0, 0}}}}, 0, 0 },
    244      1.1  christos   { "hstatus", 16, {0, {{{0, 0}}}}, 0, 0 }
    245      1.1  christos };
    246      1.1  christos 
    247      1.1  christos CGEN_KEYWORD epiphany_cgen_opval_cr_names =
    248      1.1  christos {
    249      1.1  christos   & epiphany_cgen_opval_cr_names_entries[0],
    250      1.1  christos   17,
    251      1.1  christos   0, 0, 0, 0, ""
    252      1.1  christos };
    253      1.1  christos 
    254      1.1  christos static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crdma_names_entries[] =
    255      1.1  christos {
    256      1.1  christos   { "dma0config", 0, {0, {{{0, 0}}}}, 0, 0 },
    257      1.1  christos   { "dma0stride", 1, {0, {{{0, 0}}}}, 0, 0 },
    258      1.1  christos   { "dma0count", 2, {0, {{{0, 0}}}}, 0, 0 },
    259      1.1  christos   { "dma0srcaddr", 3, {0, {{{0, 0}}}}, 0, 0 },
    260      1.1  christos   { "dma0dstaddr", 4, {0, {{{0, 0}}}}, 0, 0 },
    261      1.1  christos   { "dma0auto0", 5, {0, {{{0, 0}}}}, 0, 0 },
    262      1.1  christos   { "dma0auto1", 6, {0, {{{0, 0}}}}, 0, 0 },
    263      1.1  christos   { "dma0status", 7, {0, {{{0, 0}}}}, 0, 0 },
    264      1.1  christos   { "dma1config", 8, {0, {{{0, 0}}}}, 0, 0 },
    265      1.1  christos   { "dma1stride", 9, {0, {{{0, 0}}}}, 0, 0 },
    266      1.1  christos   { "dma1count", 10, {0, {{{0, 0}}}}, 0, 0 },
    267      1.1  christos   { "dma1srcaddr", 11, {0, {{{0, 0}}}}, 0, 0 },
    268      1.1  christos   { "dma1dstaddr", 12, {0, {{{0, 0}}}}, 0, 0 },
    269      1.1  christos   { "dma1auto0", 13, {0, {{{0, 0}}}}, 0, 0 },
    270      1.1  christos   { "dma1auto1", 14, {0, {{{0, 0}}}}, 0, 0 },
    271      1.1  christos   { "dma1status", 15, {0, {{{0, 0}}}}, 0, 0 }
    272      1.1  christos };
    273      1.1  christos 
    274      1.1  christos CGEN_KEYWORD epiphany_cgen_opval_crdma_names =
    275      1.1  christos {
    276      1.1  christos   & epiphany_cgen_opval_crdma_names_entries[0],
    277      1.1  christos   16,
    278      1.1  christos   0, 0, 0, 0, ""
    279      1.1  christos };
    280      1.1  christos 
    281      1.1  christos static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crmem_names_entries[] =
    282      1.1  christos {
    283      1.1  christos   { "memconfig", 0, {0, {{{0, 0}}}}, 0, 0 },
    284      1.1  christos   { "memstatus", 1, {0, {{{0, 0}}}}, 0, 0 },
    285      1.1  christos   { "memprotect", 2, {0, {{{0, 0}}}}, 0, 0 },
    286      1.1  christos   { "memreserve", 3, {0, {{{0, 0}}}}, 0, 0 }
    287      1.1  christos };
    288      1.1  christos 
    289      1.1  christos CGEN_KEYWORD epiphany_cgen_opval_crmem_names =
    290      1.1  christos {
    291      1.1  christos   & epiphany_cgen_opval_crmem_names_entries[0],
    292      1.1  christos   4,
    293      1.1  christos   0, 0, 0, 0, ""
    294      1.1  christos };
    295      1.1  christos 
    296      1.1  christos static CGEN_KEYWORD_ENTRY epiphany_cgen_opval_crmesh_names_entries[] =
    297      1.1  christos {
    298      1.1  christos   { "meshconfig", 0, {0, {{{0, 0}}}}, 0, 0 },
    299      1.1  christos   { "coreid", 1, {0, {{{0, 0}}}}, 0, 0 },
    300      1.1  christos   { "meshmulticast", 2, {0, {{{0, 0}}}}, 0, 0 },
    301      1.1  christos   { "swreset", 3, {0, {{{0, 0}}}}, 0, 0 }
    302      1.1  christos };
    303      1.1  christos 
    304      1.1  christos CGEN_KEYWORD epiphany_cgen_opval_crmesh_names =
    305      1.1  christos {
    306      1.1  christos   & epiphany_cgen_opval_crmesh_names_entries[0],
    307      1.1  christos   4,
    308      1.1  christos   0, 0, 0, 0, ""
    309      1.1  christos };
    310      1.1  christos 
    311      1.1  christos 
    312      1.1  christos /* The hardware table.  */
    313      1.1  christos 
    314      1.1  christos #define A(a) (1 << CGEN_HW_##a)
    315      1.1  christos 
    316      1.1  christos const CGEN_HW_ENTRY epiphany_cgen_hw_table[] =
    317      1.1  christos {
    318      1.1  christos   { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    319      1.1  christos   { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    320      1.1  christos   { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    321      1.1  christos   { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    322      1.1  christos   { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    323      1.1  christos   { "h-registers", HW_H_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_gr_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
    324      1.1  christos   { "h-fpregisters", HW_H_FPREGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_gr_names, { 0|A(VIRTUAL)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
    325      1.1  christos   { "h-zbit", HW_H_ZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    326      1.1  christos   { "h-nbit", HW_H_NBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    327      1.1  christos   { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    328      1.1  christos   { "h-vbit", HW_H_VBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    329      1.1  christos   { "h-vsbit", HW_H_VSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    330      1.1  christos   { "h-bzbit", HW_H_BZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    331      1.1  christos   { "h-bnbit", HW_H_BNBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    332      1.1  christos   { "h-bvbit", HW_H_BVBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    333      1.1  christos   { "h-bubit", HW_H_BUBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    334      1.1  christos   { "h-bibit", HW_H_BIBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    335      1.1  christos   { "h-bcbit", HW_H_BCBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    336      1.1  christos   { "h-bvsbit", HW_H_BVSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    337      1.1  christos   { "h-bisbit", HW_H_BISBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    338      1.1  christos   { "h-busbit", HW_H_BUSBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    339      1.1  christos   { "h-expcause0bit", HW_H_EXPCAUSE0BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    340      1.1  christos   { "h-expcause1bit", HW_H_EXPCAUSE1BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    341      1.1  christos   { "h-expcause2bit", HW_H_EXPCAUSE2BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    342      1.1  christos   { "h-extFstallbit", HW_H_EXTFSTALLBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    343      1.1  christos   { "h-trmbit", HW_H_TRMBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    344      1.1  christos   { "h-invExcEnbit", HW_H_INVEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    345      1.1  christos   { "h-ovfExcEnbit", HW_H_OVFEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    346      1.1  christos   { "h-unExcEnbit", HW_H_UNEXCENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    347      1.1  christos   { "h-timer0bit0", HW_H_TIMER0BIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    348      1.1  christos   { "h-timer0bit1", HW_H_TIMER0BIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    349      1.1  christos   { "h-timer0bit2", HW_H_TIMER0BIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    350      1.1  christos   { "h-timer0bit3", HW_H_TIMER0BIT3, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    351      1.1  christos   { "h-timer1bit0", HW_H_TIMER1BIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    352      1.1  christos   { "h-timer1bit1", HW_H_TIMER1BIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    353      1.1  christos   { "h-timer1bit2", HW_H_TIMER1BIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    354      1.1  christos   { "h-timer1bit3", HW_H_TIMER1BIT3, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    355      1.1  christos   { "h-mbkptEnbit", HW_H_MBKPTENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    356      1.1  christos   { "h-clockGateEnbit", HW_H_CLOCKGATEENBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    357      1.1  christos   { "h-coreCfgResBit12", HW_H_CORECFGRESBIT12, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    358      1.1  christos   { "h-coreCfgResBit13", HW_H_CORECFGRESBIT13, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    359      1.1  christos   { "h-coreCfgResBit14", HW_H_CORECFGRESBIT14, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    360      1.1  christos   { "h-coreCfgResBit15", HW_H_CORECFGRESBIT15, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    361      1.1  christos   { "h-coreCfgResBit16", HW_H_CORECFGRESBIT16, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    362      1.1  christos   { "h-coreCfgResBit20", HW_H_CORECFGRESBIT20, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    363      1.1  christos   { "h-coreCfgResBit21", HW_H_CORECFGRESBIT21, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    364      1.1  christos   { "h-coreCfgResBit24", HW_H_CORECFGRESBIT24, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    365      1.1  christos   { "h-coreCfgResBit25", HW_H_CORECFGRESBIT25, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    366      1.1  christos   { "h-coreCfgResBit26", HW_H_CORECFGRESBIT26, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    367      1.1  christos   { "h-coreCfgResBit27", HW_H_CORECFGRESBIT27, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    368      1.1  christos   { "h-coreCfgResBit28", HW_H_CORECFGRESBIT28, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    369      1.1  christos   { "h-coreCfgResBit29", HW_H_CORECFGRESBIT29, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    370      1.1  christos   { "h-coreCfgResBit30", HW_H_CORECFGRESBIT30, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    371      1.1  christos   { "h-coreCfgResBit31", HW_H_CORECFGRESBIT31, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    372      1.1  christos   { "h-arithmetic-modebit0", HW_H_ARITHMETIC_MODEBIT0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    373      1.1  christos   { "h-arithmetic-modebit1", HW_H_ARITHMETIC_MODEBIT1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    374      1.1  christos   { "h-arithmetic-modebit2", HW_H_ARITHMETIC_MODEBIT2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    375      1.1  christos   { "h-gidisablebit", HW_H_GIDISABLEBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    376      1.1  christos   { "h-kmbit", HW_H_KMBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    377      1.1  christos   { "h-caibit", HW_H_CAIBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    378      1.1  christos   { "h-sflagbit", HW_H_SFLAGBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    379      1.1  christos   { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
    380      1.1  christos   { "h-memaddr", HW_H_MEMADDR, CGEN_ASM_NONE, 0, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
    381      1.1  christos   { "h-core-registers", HW_H_CORE_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_cr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    382      1.1  christos   { "h-coredma-registers", HW_H_COREDMA_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crdma_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    383      1.1  christos   { "h-coremem-registers", HW_H_COREMEM_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crmem_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    384      1.1  christos   { "h-coremesh-registers", HW_H_COREMESH_REGISTERS, CGEN_ASM_KEYWORD, (PTR) & epiphany_cgen_opval_crmesh_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    385      1.1  christos   { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
    386      1.1  christos };
    387      1.1  christos 
    388      1.1  christos #undef A
    389      1.1  christos 
    390      1.1  christos 
    391      1.1  christos /* The instruction field table.  */
    392      1.1  christos 
    393      1.1  christos #define A(a) (1 << CGEN_IFLD_##a)
    394      1.1  christos 
    395      1.1  christos const CGEN_IFLD epiphany_cgen_ifld_table[] =
    396      1.1  christos {
    397      1.1  christos   { EPIPHANY_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    398      1.1  christos   { EPIPHANY_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    399      1.1  christos   { EPIPHANY_F_OPC, "f-opc", 0, 32, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    400      1.1  christos   { EPIPHANY_F_OPC_4_1, "f-opc-4-1", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    401      1.1  christos   { EPIPHANY_F_OPC_6_3, "f-opc-6-3", 0, 32, 6, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    402      1.1  christos   { EPIPHANY_F_OPC_8_5, "f-opc-8-5", 0, 32, 8, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    403      1.1  christos   { EPIPHANY_F_OPC_19_4, "f-opc-19-4", 0, 32, 19, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    404      1.1  christos   { EPIPHANY_F_CONDCODE, "f-condcode", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    405      1.1  christos   { EPIPHANY_F_SECONDARY_CCS, "f-secondary-ccs", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    406      1.1  christos   { EPIPHANY_F_SHIFT, "f-shift", 0, 32, 9, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    407      1.1  christos   { EPIPHANY_F_WORDSIZE, "f-wordsize", 0, 32, 6, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    408      1.1  christos   { EPIPHANY_F_STORE, "f-store", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    409      1.1  christos   { EPIPHANY_F_OPC_8_1, "f-opc-8-1", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    410      1.1  christos   { EPIPHANY_F_OPC_31_32, "f-opc-31-32", 0, 32, 31, 32, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    411      1.1  christos   { EPIPHANY_F_SIMM8, "f-simm8", 0, 32, 15, 8, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    412      1.1  christos   { EPIPHANY_F_SIMM24, "f-simm24", 0, 32, 31, 24, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    413      1.1  christos   { EPIPHANY_F_SDISP3, "f-sdisp3", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    414      1.1  christos   { EPIPHANY_F_DISP3, "f-disp3", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    415      1.1  christos   { EPIPHANY_F_DISP8, "f-disp8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    416      1.1  christos   { EPIPHANY_F_IMM8, "f-imm8", 0, 32, 12, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    417      1.1  christos   { EPIPHANY_F_IMM_27_8, "f-imm-27-8", 0, 32, 27, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    418      1.1  christos   { EPIPHANY_F_ADDSUBX, "f-addsubx", 0, 32, 20, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    419      1.1  christos   { EPIPHANY_F_SUBD, "f-subd", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    420      1.1  christos   { EPIPHANY_F_PM, "f-pm", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    421      1.1  christos   { EPIPHANY_F_RM, "f-rm", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    422      1.1  christos   { EPIPHANY_F_RN, "f-rn", 0, 32, 12, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    423      1.1  christos   { EPIPHANY_F_RD, "f-rd", 0, 32, 15, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    424      1.1  christos   { EPIPHANY_F_RM_X, "f-rm-x", 0, 32, 25, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    425      1.1  christos   { EPIPHANY_F_RN_X, "f-rn-x", 0, 32, 28, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    426      1.1  christos   { EPIPHANY_F_RD_X, "f-rd-x", 0, 32, 31, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    427      1.1  christos   { EPIPHANY_F_DC_9_1, "f-dc-9-1", 0, 32, 9, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    428      1.1  christos   { EPIPHANY_F_SN, "f-sn", 0, 32, 12, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    429      1.1  christos   { EPIPHANY_F_SD, "f-sd", 0, 32, 15, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    430      1.1  christos   { EPIPHANY_F_SN_X, "f-sn-x", 0, 32, 28, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    431      1.1  christos   { EPIPHANY_F_SD_X, "f-sd-x", 0, 32, 31, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    432      1.1  christos   { EPIPHANY_F_DC_7_4, "f-dc-7-4", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    433      1.1  christos   { EPIPHANY_F_TRAP_SWI_9_1, "f-trap-swi-9-1", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    434      1.1  christos   { EPIPHANY_F_GIEN_GIDIS_9_1, "f-gien-gidis-9-1", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    435      1.1  christos   { EPIPHANY_F_DC_15_3, "f-dc-15-3", 0, 32, 15, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    436      1.1  christos   { EPIPHANY_F_DC_15_7, "f-dc-15-7", 0, 32, 15, 7, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    437      1.1  christos   { EPIPHANY_F_DC_15_6, "f-dc-15-6", 0, 32, 15, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    438      1.1  christos   { EPIPHANY_F_TRAP_NUM, "f-trap-num", 0, 32, 15, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    439      1.1  christos   { EPIPHANY_F_DC_20_1, "f-dc-20-1", 0, 32, 20, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    440      1.1  christos   { EPIPHANY_F_DC_21_1, "f-dc-21-1", 0, 32, 21, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    441      1.1  christos   { EPIPHANY_F_DC_21_2, "f-dc-21-2", 0, 32, 21, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    442      1.1  christos   { EPIPHANY_F_DC_22_3, "f-dc-22-3", 0, 32, 22, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    443      1.1  christos   { EPIPHANY_F_DC_22_2, "f-dc-22-2", 0, 32, 22, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    444      1.1  christos   { EPIPHANY_F_DC_22_1, "f-dc-22-1", 0, 32, 22, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    445      1.1  christos   { EPIPHANY_F_DC_25_6, "f-dc-25-6", 0, 32, 25, 6, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    446      1.1  christos   { EPIPHANY_F_DC_25_4, "f-dc-25-4", 0, 32, 25, 4, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    447      1.1  christos   { EPIPHANY_F_DC_25_2, "f-dc-25-2", 0, 32, 25, 2, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    448      1.1  christos   { EPIPHANY_F_DC_25_1, "f-dc-25-1", 0, 32, 25, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    449      1.1  christos   { EPIPHANY_F_DC_28_1, "f-dc-28-1", 0, 32, 28, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    450      1.1  christos   { EPIPHANY_F_DC_31_3, "f-dc-31-3", 0, 32, 31, 3, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
    451      1.1  christos   { EPIPHANY_F_DISP11, "f-disp11", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    452      1.1  christos   { EPIPHANY_F_SDISP11, "f-sdisp11", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    453      1.1  christos   { EPIPHANY_F_IMM16, "f-imm16", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    454      1.1  christos   { EPIPHANY_F_RD6, "f-rd6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    455      1.1  christos   { EPIPHANY_F_RN6, "f-rn6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    456      1.1  christos   { EPIPHANY_F_RM6, "f-rm6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    457      1.1  christos   { EPIPHANY_F_SD6, "f-sd6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    458      1.1  christos   { EPIPHANY_F_SN6, "f-sn6", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    459      1.1  christos   { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
    460      1.1  christos };
    461      1.1  christos 
    462      1.1  christos #undef A
    463      1.1  christos 
    464      1.1  christos 
    465      1.1  christos 
    466      1.1  christos /* multi ifield declarations */
    467      1.1  christos 
    468      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_DISP11_MULTI_IFIELD [];
    469      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SDISP11_MULTI_IFIELD [];
    470      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_IMM16_MULTI_IFIELD [];
    471      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RD6_MULTI_IFIELD [];
    472      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RN6_MULTI_IFIELD [];
    473      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RM6_MULTI_IFIELD [];
    474      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SD6_MULTI_IFIELD [];
    475      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SN6_MULTI_IFIELD [];
    476      1.1  christos 
    477      1.1  christos 
    478      1.1  christos /* multi ifield definitions */
    479      1.1  christos 
    480      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_DISP11_MULTI_IFIELD [] =
    481      1.1  christos {
    482      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
    483      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP8] } },
    484      1.1  christos     { 0, { (const PTR) 0 } }
    485      1.1  christos };
    486      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SDISP11_MULTI_IFIELD [] =
    487      1.1  christos {
    488      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
    489      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP8] } },
    490      1.1  christos     { 0, { (const PTR) 0 } }
    491      1.1  christos };
    492      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_IMM16_MULTI_IFIELD [] =
    493      1.1  christos {
    494      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM8] } },
    495      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM_27_8] } },
    496      1.1  christos     { 0, { (const PTR) 0 } }
    497      1.1  christos };
    498      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RD6_MULTI_IFIELD [] =
    499      1.1  christos {
    500      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD_X] } },
    501      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
    502      1.1  christos     { 0, { (const PTR) 0 } }
    503      1.1  christos };
    504      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RN6_MULTI_IFIELD [] =
    505      1.1  christos {
    506      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN_X] } },
    507      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
    508      1.1  christos     { 0, { (const PTR) 0 } }
    509      1.1  christos };
    510      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_RM6_MULTI_IFIELD [] =
    511      1.1  christos {
    512      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM_X] } },
    513      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
    514      1.1  christos     { 0, { (const PTR) 0 } }
    515      1.1  christos };
    516      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SD6_MULTI_IFIELD [] =
    517      1.1  christos {
    518      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD_X] } },
    519      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD] } },
    520      1.1  christos     { 0, { (const PTR) 0 } }
    521      1.1  christos };
    522      1.1  christos const CGEN_MAYBE_MULTI_IFLD EPIPHANY_F_SN6_MULTI_IFIELD [] =
    523      1.1  christos {
    524      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN_X] } },
    525      1.1  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN] } },
    526      1.1  christos     { 0, { (const PTR) 0 } }
    527      1.1  christos };
    528      1.1  christos 
    529      1.1  christos /* The operand table.  */
    530      1.1  christos 
    531      1.1  christos #define A(a) (1 << CGEN_OPERAND_##a)
    532      1.1  christos #define OPERAND(op) EPIPHANY_OPERAND_##op
    533      1.1  christos 
    534      1.1  christos const CGEN_OPERAND epiphany_cgen_operand_table[] =
    535      1.1  christos {
    536      1.1  christos /* pc: program counter */
    537      1.1  christos   { "pc", EPIPHANY_OPERAND_PC, HW_H_PC, 0, 0,
    538  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_NIL] } },
    539      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    540      1.1  christos /* zbit: integer zero bit */
    541      1.1  christos   { "zbit", EPIPHANY_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,
    542  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    543      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    544      1.1  christos /* nbit: integer neg bit */
    545      1.1  christos   { "nbit", EPIPHANY_OPERAND_NBIT, HW_H_NBIT, 0, 0,
    546  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    547      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    548      1.1  christos /* cbit: integer carry bit */
    549      1.1  christos   { "cbit", EPIPHANY_OPERAND_CBIT, HW_H_CBIT, 0, 0,
    550  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    551      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    552      1.1  christos /* vbit: integer overflow bit */
    553      1.1  christos   { "vbit", EPIPHANY_OPERAND_VBIT, HW_H_VBIT, 0, 0,
    554  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    555      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    556      1.1  christos /* bzbit: floating point zero bit */
    557      1.1  christos   { "bzbit", EPIPHANY_OPERAND_BZBIT, HW_H_BZBIT, 0, 0,
    558  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    559      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    560      1.1  christos /* bnbit: floating point neg bit */
    561      1.1  christos   { "bnbit", EPIPHANY_OPERAND_BNBIT, HW_H_BNBIT, 0, 0,
    562  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    563      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    564      1.1  christos /* bvbit: floating point ovfl bit */
    565      1.1  christos   { "bvbit", EPIPHANY_OPERAND_BVBIT, HW_H_BVBIT, 0, 0,
    566  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    567      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    568      1.1  christos /* bcbit: floating point carry bit */
    569      1.1  christos   { "bcbit", EPIPHANY_OPERAND_BCBIT, HW_H_BCBIT, 0, 0,
    570  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    571      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    572      1.1  christos /* bubit: floating point underfl bit */
    573      1.1  christos   { "bubit", EPIPHANY_OPERAND_BUBIT, HW_H_BUBIT, 0, 0,
    574  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    575      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    576      1.1  christos /* bibit: floating point invalid bit */
    577      1.1  christos   { "bibit", EPIPHANY_OPERAND_BIBIT, HW_H_BIBIT, 0, 0,
    578  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    579      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    580      1.1  christos /* vsbit: integer overflow sticky */
    581      1.1  christos   { "vsbit", EPIPHANY_OPERAND_VSBIT, HW_H_VSBIT, 0, 0,
    582  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    583      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    584      1.1  christos /* bvsbit: floating point overflow sticky */
    585      1.1  christos   { "bvsbit", EPIPHANY_OPERAND_BVSBIT, HW_H_BVSBIT, 0, 0,
    586  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    587      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    588      1.1  christos /* bisbit: floating point invalid sticky */
    589      1.1  christos   { "bisbit", EPIPHANY_OPERAND_BISBIT, HW_H_BISBIT, 0, 0,
    590  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    591      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    592      1.1  christos /* busbit: floating point underflow sticky */
    593      1.1  christos   { "busbit", EPIPHANY_OPERAND_BUSBIT, HW_H_BUSBIT, 0, 0,
    594  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    595      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    596      1.1  christos /* expcause0bit: exceprion cause bit0 */
    597      1.1  christos   { "expcause0bit", EPIPHANY_OPERAND_EXPCAUSE0BIT, HW_H_EXPCAUSE0BIT, 0, 0,
    598  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    599      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    600      1.1  christos /* expcause1bit: exceprion cause bit1 */
    601      1.1  christos   { "expcause1bit", EPIPHANY_OPERAND_EXPCAUSE1BIT, HW_H_EXPCAUSE1BIT, 0, 0,
    602  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    603      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    604      1.1  christos /* expcause2bit: external load stalled bit */
    605      1.1  christos   { "expcause2bit", EPIPHANY_OPERAND_EXPCAUSE2BIT, HW_H_EXPCAUSE2BIT, 0, 0,
    606  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    607      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    608      1.1  christos /* extFstallbit: external fetch stalled bit */
    609      1.1  christos   { "extFstallbit", EPIPHANY_OPERAND_EXTFSTALLBIT, HW_H_EXTFSTALLBIT, 0, 0,
    610  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    611      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    612      1.1  christos /* trmbit: 0=round to nearest, 1=trunacte selct bit */
    613      1.1  christos   { "trmbit", EPIPHANY_OPERAND_TRMBIT, HW_H_TRMBIT, 0, 0,
    614  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    615      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    616      1.1  christos /* invExcEnbit: invalid exception enable bit */
    617      1.1  christos   { "invExcEnbit", EPIPHANY_OPERAND_INVEXCENBIT, HW_H_INVEXCENBIT, 0, 0,
    618  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    619      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    620      1.1  christos /* ovfExcEnbit: overflow exception enable bit */
    621      1.1  christos   { "ovfExcEnbit", EPIPHANY_OPERAND_OVFEXCENBIT, HW_H_OVFEXCENBIT, 0, 0,
    622  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    623      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    624      1.1  christos /* unExcEnbit: underflow exception enable bit */
    625      1.1  christos   { "unExcEnbit", EPIPHANY_OPERAND_UNEXCENBIT, HW_H_UNEXCENBIT, 0, 0,
    626  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    627      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    628      1.1  christos /* timer0bit0: timer 0 mode selection 0 */
    629      1.1  christos   { "timer0bit0", EPIPHANY_OPERAND_TIMER0BIT0, HW_H_TIMER0BIT0, 0, 0,
    630  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    631      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    632      1.1  christos /* timer0bit1: timer 0 mode selection 1 */
    633      1.1  christos   { "timer0bit1", EPIPHANY_OPERAND_TIMER0BIT1, HW_H_TIMER0BIT1, 0, 0,
    634  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    635      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    636      1.1  christos /* timer0bit2: timer 0 mode selection 2 */
    637      1.1  christos   { "timer0bit2", EPIPHANY_OPERAND_TIMER0BIT2, HW_H_TIMER0BIT2, 0, 0,
    638  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    639      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    640      1.1  christos /* timer0bit3: timer 0 mode selection 3 */
    641      1.1  christos   { "timer0bit3", EPIPHANY_OPERAND_TIMER0BIT3, HW_H_TIMER0BIT3, 0, 0,
    642  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    643      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    644      1.1  christos /* timer1bit0: timer 1 mode selection 0 */
    645      1.1  christos   { "timer1bit0", EPIPHANY_OPERAND_TIMER1BIT0, HW_H_TIMER1BIT0, 0, 0,
    646  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    647      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    648      1.1  christos /* timer1bit1: timer 1 mode selection 1 */
    649      1.1  christos   { "timer1bit1", EPIPHANY_OPERAND_TIMER1BIT1, HW_H_TIMER1BIT1, 0, 0,
    650  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    651      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    652      1.1  christos /* timer1bit2: timer 1 mode selection 2 */
    653      1.1  christos   { "timer1bit2", EPIPHANY_OPERAND_TIMER1BIT2, HW_H_TIMER1BIT2, 0, 0,
    654  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    655      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    656      1.1  christos /* timer1bit3: timer 1 mode selection 3 */
    657      1.1  christos   { "timer1bit3", EPIPHANY_OPERAND_TIMER1BIT3, HW_H_TIMER1BIT3, 0, 0,
    658  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    659      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    660      1.1  christos /* mbkptEnbit: multicore bkpt enable */
    661      1.1  christos   { "mbkptEnbit", EPIPHANY_OPERAND_MBKPTENBIT, HW_H_MBKPTENBIT, 0, 0,
    662  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    663      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    664      1.1  christos /* clockGateEnbit: clock gate enable enable */
    665      1.1  christos   { "clockGateEnbit", EPIPHANY_OPERAND_CLOCKGATEENBIT, HW_H_CLOCKGATEENBIT, 0, 0,
    666  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    667      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    668      1.1  christos /* arithmetic-modebit0: arithmetic mode bit0 */
    669      1.1  christos   { "arithmetic-modebit0", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT0, HW_H_ARITHMETIC_MODEBIT0, 0, 0,
    670  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    671      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    672      1.1  christos /* arithmetic-modebit1: arithmetic mode bit1 */
    673      1.1  christos   { "arithmetic-modebit1", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT1, HW_H_ARITHMETIC_MODEBIT1, 0, 0,
    674  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    675      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    676      1.1  christos /* arithmetic-modebit2: arithmetic mode bit2 */
    677      1.1  christos   { "arithmetic-modebit2", EPIPHANY_OPERAND_ARITHMETIC_MODEBIT2, HW_H_ARITHMETIC_MODEBIT2, 0, 0,
    678  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    679      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    680      1.1  christos /* coreCfgResBit12: core config bit 12 */
    681      1.1  christos   { "coreCfgResBit12", EPIPHANY_OPERAND_CORECFGRESBIT12, HW_H_CORECFGRESBIT12, 0, 0,
    682  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    683      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    684      1.1  christos /* coreCfgResBit13: core config bit 13 */
    685      1.1  christos   { "coreCfgResBit13", EPIPHANY_OPERAND_CORECFGRESBIT13, HW_H_CORECFGRESBIT13, 0, 0,
    686  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    687      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    688      1.1  christos /* coreCfgResBit14: core config bit 14 */
    689      1.1  christos   { "coreCfgResBit14", EPIPHANY_OPERAND_CORECFGRESBIT14, HW_H_CORECFGRESBIT14, 0, 0,
    690  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    691      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    692      1.1  christos /* coreCfgResBit15: core config bit 15 */
    693      1.1  christos   { "coreCfgResBit15", EPIPHANY_OPERAND_CORECFGRESBIT15, HW_H_CORECFGRESBIT15, 0, 0,
    694  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    695      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    696      1.1  christos /* coreCfgResBit16: core config bit 16 */
    697      1.1  christos   { "coreCfgResBit16", EPIPHANY_OPERAND_CORECFGRESBIT16, HW_H_CORECFGRESBIT16, 0, 0,
    698  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    699      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    700      1.1  christos /* coreCfgResBit20: core config bit 20 */
    701      1.1  christos   { "coreCfgResBit20", EPIPHANY_OPERAND_CORECFGRESBIT20, HW_H_CORECFGRESBIT20, 0, 0,
    702  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    703      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    704      1.1  christos /* coreCfgResBit21: core config bit 21 */
    705      1.1  christos   { "coreCfgResBit21", EPIPHANY_OPERAND_CORECFGRESBIT21, HW_H_CORECFGRESBIT21, 0, 0,
    706  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    707      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    708      1.1  christos /* coreCfgResBit24: core config bit 24 */
    709      1.1  christos   { "coreCfgResBit24", EPIPHANY_OPERAND_CORECFGRESBIT24, HW_H_CORECFGRESBIT24, 0, 0,
    710  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    711      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    712      1.1  christos /* coreCfgResBit25: core config bit 25 */
    713      1.1  christos   { "coreCfgResBit25", EPIPHANY_OPERAND_CORECFGRESBIT25, HW_H_CORECFGRESBIT25, 0, 0,
    714  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    715      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    716      1.1  christos /* coreCfgResBit26: core config bit 26 */
    717      1.1  christos   { "coreCfgResBit26", EPIPHANY_OPERAND_CORECFGRESBIT26, HW_H_CORECFGRESBIT26, 0, 0,
    718  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    719      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    720      1.1  christos /* coreCfgResBit27: core config bit 27 */
    721      1.1  christos   { "coreCfgResBit27", EPIPHANY_OPERAND_CORECFGRESBIT27, HW_H_CORECFGRESBIT27, 0, 0,
    722  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    723      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    724      1.1  christos /* coreCfgResBit28: core config bit 28 */
    725      1.1  christos   { "coreCfgResBit28", EPIPHANY_OPERAND_CORECFGRESBIT28, HW_H_CORECFGRESBIT28, 0, 0,
    726  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    727      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    728      1.1  christos /* coreCfgResBit29: core config bit 29 */
    729      1.1  christos   { "coreCfgResBit29", EPIPHANY_OPERAND_CORECFGRESBIT29, HW_H_CORECFGRESBIT29, 0, 0,
    730  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    731      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    732      1.1  christos /* coreCfgResBit30: core config bit 30 */
    733      1.1  christos   { "coreCfgResBit30", EPIPHANY_OPERAND_CORECFGRESBIT30, HW_H_CORECFGRESBIT30, 0, 0,
    734  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    735      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    736      1.1  christos /* coreCfgResBit31: core config bit 31 */
    737      1.1  christos   { "coreCfgResBit31", EPIPHANY_OPERAND_CORECFGRESBIT31, HW_H_CORECFGRESBIT31, 0, 0,
    738  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    739      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    740      1.1  christos /* gidisablebit: global interrupt disable bit */
    741      1.1  christos   { "gidisablebit", EPIPHANY_OPERAND_GIDISABLEBIT, HW_H_GIDISABLEBIT, 0, 0,
    742  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    743      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    744      1.1  christos /* kmbit: kernel mode bit */
    745      1.1  christos   { "kmbit", EPIPHANY_OPERAND_KMBIT, HW_H_KMBIT, 0, 0,
    746  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    747      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    748      1.1  christos /* caibit: core actibe indicator bit */
    749      1.1  christos   { "caibit", EPIPHANY_OPERAND_CAIBIT, HW_H_CAIBIT, 0, 0,
    750  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    751      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    752      1.1  christos /* sflagbit: sflag bit */
    753      1.1  christos   { "sflagbit", EPIPHANY_OPERAND_SFLAGBIT, HW_H_SFLAGBIT, 0, 0,
    754  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    755      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    756      1.1  christos /* memaddr: memory effective address */
    757      1.1  christos   { "memaddr", EPIPHANY_OPERAND_MEMADDR, HW_H_MEMADDR, 0, 0,
    758  1.1.1.3  christos     { 0, { (const PTR) 0 } },
    759      1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    760      1.1  christos /* simm24: branch address pc-relative */
    761      1.1  christos   { "simm24", EPIPHANY_OPERAND_SIMM24, HW_H_IADDR, 31, 24,
    762  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SIMM24] } },
    763      1.1  christos     { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    764      1.1  christos /* simm8: branch address pc-relative */
    765      1.1  christos   { "simm8", EPIPHANY_OPERAND_SIMM8, HW_H_IADDR, 15, 8,
    766  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SIMM8] } },
    767      1.1  christos     { 0|A(RELAX)|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    768      1.1  christos /* rd: destination register */
    769      1.1  christos   { "rd", EPIPHANY_OPERAND_RD, HW_H_REGISTERS, 15, 3,
    770  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
    771      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    772      1.1  christos /* rn: source register */
    773      1.1  christos   { "rn", EPIPHANY_OPERAND_RN, HW_H_REGISTERS, 12, 3,
    774  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
    775      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    776      1.1  christos /* rm: source register */
    777      1.1  christos   { "rm", EPIPHANY_OPERAND_RM, HW_H_REGISTERS, 9, 3,
    778  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
    779      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    780      1.1  christos /* frd: fp destination register */
    781      1.1  christos   { "frd", EPIPHANY_OPERAND_FRD, HW_H_FPREGISTERS, 15, 3,
    782  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RD] } },
    783      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    784      1.1  christos /* frn: fp source register */
    785      1.1  christos   { "frn", EPIPHANY_OPERAND_FRN, HW_H_FPREGISTERS, 12, 3,
    786  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RN] } },
    787      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    788      1.1  christos /* frm: fp source register */
    789      1.1  christos   { "frm", EPIPHANY_OPERAND_FRM, HW_H_FPREGISTERS, 9, 3,
    790  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_RM] } },
    791      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    792      1.1  christos /* rd6: destination register */
    793      1.1  christos   { "rd6", EPIPHANY_OPERAND_RD6, HW_H_REGISTERS, 15, 6,
    794  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RD6_MULTI_IFIELD[0] } },
    795      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    796      1.1  christos /* rn6: source register */
    797      1.1  christos   { "rn6", EPIPHANY_OPERAND_RN6, HW_H_REGISTERS, 12, 6,
    798  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RN6_MULTI_IFIELD[0] } },
    799      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    800      1.1  christos /* rm6: source register */
    801      1.1  christos   { "rm6", EPIPHANY_OPERAND_RM6, HW_H_REGISTERS, 9, 6,
    802  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RM6_MULTI_IFIELD[0] } },
    803      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    804      1.1  christos /* frd6: fp destination register */
    805      1.1  christos   { "frd6", EPIPHANY_OPERAND_FRD6, HW_H_FPREGISTERS, 15, 6,
    806  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RD6_MULTI_IFIELD[0] } },
    807      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    808      1.1  christos /* frn6: fp source register */
    809      1.1  christos   { "frn6", EPIPHANY_OPERAND_FRN6, HW_H_FPREGISTERS, 12, 6,
    810  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RN6_MULTI_IFIELD[0] } },
    811      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    812      1.1  christos /* frm6: fp source register */
    813      1.1  christos   { "frm6", EPIPHANY_OPERAND_FRM6, HW_H_FPREGISTERS, 9, 6,
    814  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_RM6_MULTI_IFIELD[0] } },
    815      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    816      1.1  christos /* sd: special destination */
    817      1.1  christos   { "sd", EPIPHANY_OPERAND_SD, HW_H_CORE_REGISTERS, 15, 3,
    818  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SD] } },
    819      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    820      1.1  christos /* sn: special source */
    821      1.1  christos   { "sn", EPIPHANY_OPERAND_SN, HW_H_CORE_REGISTERS, 12, 3,
    822  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SN] } },
    823      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    824      1.1  christos /* sd6: special destination register */
    825      1.1  christos   { "sd6", EPIPHANY_OPERAND_SD6, HW_H_CORE_REGISTERS, 15, 6,
    826  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
    827      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    828      1.1  christos /* sn6: special source register */
    829      1.1  christos   { "sn6", EPIPHANY_OPERAND_SN6, HW_H_CORE_REGISTERS, 12, 6,
    830  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
    831      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    832      1.1  christos /* sddma: dma register */
    833      1.1  christos   { "sddma", EPIPHANY_OPERAND_SDDMA, HW_H_COREDMA_REGISTERS, 15, 6,
    834  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
    835      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    836      1.1  christos /* sndma: dma register */
    837      1.1  christos   { "sndma", EPIPHANY_OPERAND_SNDMA, HW_H_COREDMA_REGISTERS, 12, 6,
    838  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
    839      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    840      1.1  christos /* sdmem: mem register */
    841      1.1  christos   { "sdmem", EPIPHANY_OPERAND_SDMEM, HW_H_COREMEM_REGISTERS, 15, 6,
    842  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
    843      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    844      1.1  christos /* snmem: mem register */
    845      1.1  christos   { "snmem", EPIPHANY_OPERAND_SNMEM, HW_H_COREMEM_REGISTERS, 12, 6,
    846  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
    847      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    848      1.1  christos /* sdmesh: mesh register */
    849      1.1  christos   { "sdmesh", EPIPHANY_OPERAND_SDMESH, HW_H_COREMESH_REGISTERS, 15, 6,
    850  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SD6_MULTI_IFIELD[0] } },
    851      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    852      1.1  christos /* snmesh: mesh register */
    853      1.1  christos   { "snmesh", EPIPHANY_OPERAND_SNMESH, HW_H_COREMESH_REGISTERS, 12, 6,
    854  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SN6_MULTI_IFIELD[0] } },
    855      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    856      1.1  christos /* simm3: signed 3-bit literal */
    857      1.1  christos   { "simm3", EPIPHANY_OPERAND_SIMM3, HW_H_SINT, 9, 3,
    858  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SDISP3] } },
    859      1.1  christos     { 0|A(RELAX), { { { (1<<MACH_BASE), 0 } } } }  },
    860      1.1  christos /* simm11: signed 11-bit literal */
    861      1.1  christos   { "simm11", EPIPHANY_OPERAND_SIMM11, HW_H_SINT, 9, 11,
    862  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_SDISP11_MULTI_IFIELD[0] } },
    863      1.1  christos     { 0|A(RELAX)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    864      1.1  christos /* disp3: short data displacement */
    865      1.1  christos   { "disp3", EPIPHANY_OPERAND_DISP3, HW_H_UINT, 9, 3,
    866  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_DISP3] } },
    867      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    868      1.1  christos /* trapnum6: parameter for swi or trap */
    869      1.1  christos   { "trapnum6", EPIPHANY_OPERAND_TRAPNUM6, HW_H_UINT, 15, 6,
    870  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_TRAP_NUM] } },
    871      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    872      1.1  christos /* swi_num: unsigned 6-bit swi# */
    873      1.1  christos   { "swi_num", EPIPHANY_OPERAND_SWI_NUM, HW_H_UINT, 15, 6,
    874  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_TRAP_NUM] } },
    875      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    876      1.1  christos /* disp11: sign-magnitude data displacement */
    877      1.1  christos   { "disp11", EPIPHANY_OPERAND_DISP11, HW_H_UINT, 9, 11,
    878  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_DISP11_MULTI_IFIELD[0] } },
    879      1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    880      1.1  christos /* shift: immediate shift amount */
    881      1.1  christos   { "shift", EPIPHANY_OPERAND_SHIFT, HW_H_UINT, 9, 5,
    882  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SHIFT] } },
    883      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    884      1.1  christos /* imm16: 16-bit unsigned literal */
    885      1.1  christos   { "imm16", EPIPHANY_OPERAND_IMM16, HW_H_ADDR, 12, 16,
    886  1.1.1.3  christos     { 2, { (const PTR) &EPIPHANY_F_IMM16_MULTI_IFIELD[0] } },
    887      1.1  christos     { 0|A(RELAX)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    888      1.1  christos /* imm8: 8-bit unsigned literal */
    889      1.1  christos   { "imm8", EPIPHANY_OPERAND_IMM8, HW_H_ADDR, 12, 8,
    890  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_IMM8] } },
    891      1.1  christos     { 0|A(RELAX), { { { (1<<MACH_BASE), 0 } } } }  },
    892      1.1  christos /* direction: +/- indexing */
    893      1.1  christos   { "direction", EPIPHANY_OPERAND_DIRECTION, HW_H_UINT, 20, 1,
    894  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_ADDSUBX] } },
    895      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    896      1.1  christos /* dpmi: +/- magnitude immediate displacement */
    897      1.1  christos   { "dpmi", EPIPHANY_OPERAND_DPMI, HW_H_UINT, 24, 1,
    898  1.1.1.3  christos     { 0, { (const PTR) &epiphany_cgen_ifld_table[EPIPHANY_F_SUBD] } },
    899      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    900      1.1  christos /* sentinel */
    901      1.1  christos   { 0, 0, 0, 0, 0,
    902      1.1  christos     { 0, { (const PTR) 0 } },
    903      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } } }
    904      1.1  christos };
    905      1.1  christos 
    906      1.1  christos #undef A
    907      1.1  christos 
    908      1.1  christos 
    909      1.1  christos /* The instruction table.  */
    910      1.1  christos 
    911      1.1  christos #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
    912      1.1  christos #define A(a) (1 << CGEN_INSN_##a)
    913      1.1  christos 
    914      1.1  christos static const CGEN_IBASE epiphany_cgen_insn_table[MAX_INSNS] =
    915      1.1  christos {
    916      1.1  christos   /* Special null first entry.
    917      1.1  christos      A `num' value of zero is thus invalid.
    918      1.1  christos      Also, the special `invalid' insn resides here.  */
    919      1.1  christos   { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    920      1.1  christos /* beq.s $simm8 */
    921      1.1  christos   {
    922      1.1  christos     EPIPHANY_INSN_BEQ16, "beq16", "beq.s", 16,
    923      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    924      1.1  christos   },
    925      1.1  christos /* beq.l $simm24 */
    926      1.1  christos   {
    927      1.1  christos     EPIPHANY_INSN_BEQ, "beq", "beq.l", 32,
    928      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    929      1.1  christos   },
    930      1.1  christos /* bne.s $simm8 */
    931      1.1  christos   {
    932      1.1  christos     EPIPHANY_INSN_BNE16, "bne16", "bne.s", 16,
    933      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    934      1.1  christos   },
    935      1.1  christos /* bne.l $simm24 */
    936      1.1  christos   {
    937      1.1  christos     EPIPHANY_INSN_BNE, "bne", "bne.l", 32,
    938      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    939      1.1  christos   },
    940      1.1  christos /* bgtu.s $simm8 */
    941      1.1  christos   {
    942      1.1  christos     EPIPHANY_INSN_BGTU16, "bgtu16", "bgtu.s", 16,
    943      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    944      1.1  christos   },
    945      1.1  christos /* bgtu.l $simm24 */
    946      1.1  christos   {
    947      1.1  christos     EPIPHANY_INSN_BGTU, "bgtu", "bgtu.l", 32,
    948      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    949      1.1  christos   },
    950      1.1  christos /* bgteu.s $simm8 */
    951      1.1  christos   {
    952      1.1  christos     EPIPHANY_INSN_BGTEU16, "bgteu16", "bgteu.s", 16,
    953      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    954      1.1  christos   },
    955      1.1  christos /* bgteu.l $simm24 */
    956      1.1  christos   {
    957      1.1  christos     EPIPHANY_INSN_BGTEU, "bgteu", "bgteu.l", 32,
    958      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    959      1.1  christos   },
    960      1.1  christos /* blteu.s $simm8 */
    961      1.1  christos   {
    962      1.1  christos     EPIPHANY_INSN_BLTEU16, "blteu16", "blteu.s", 16,
    963      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    964      1.1  christos   },
    965      1.1  christos /* blteu.l $simm24 */
    966      1.1  christos   {
    967      1.1  christos     EPIPHANY_INSN_BLTEU, "blteu", "blteu.l", 32,
    968      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    969      1.1  christos   },
    970      1.1  christos /* bltu.s $simm8 */
    971      1.1  christos   {
    972      1.1  christos     EPIPHANY_INSN_BLTU16, "bltu16", "bltu.s", 16,
    973      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    974      1.1  christos   },
    975      1.1  christos /* bltu.l $simm24 */
    976      1.1  christos   {
    977      1.1  christos     EPIPHANY_INSN_BLTU, "bltu", "bltu.l", 32,
    978      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    979      1.1  christos   },
    980      1.1  christos /* bgt.s $simm8 */
    981      1.1  christos   {
    982      1.1  christos     EPIPHANY_INSN_BGT16, "bgt16", "bgt.s", 16,
    983      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    984      1.1  christos   },
    985      1.1  christos /* bgt.l $simm24 */
    986      1.1  christos   {
    987      1.1  christos     EPIPHANY_INSN_BGT, "bgt", "bgt.l", 32,
    988      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    989      1.1  christos   },
    990      1.1  christos /* bgte.s $simm8 */
    991      1.1  christos   {
    992      1.1  christos     EPIPHANY_INSN_BGTE16, "bgte16", "bgte.s", 16,
    993      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    994      1.1  christos   },
    995      1.1  christos /* bgte.l $simm24 */
    996      1.1  christos   {
    997      1.1  christos     EPIPHANY_INSN_BGTE, "bgte", "bgte.l", 32,
    998      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
    999      1.1  christos   },
   1000      1.1  christos /* blt.s $simm8 */
   1001      1.1  christos   {
   1002      1.1  christos     EPIPHANY_INSN_BLT16, "blt16", "blt.s", 16,
   1003      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1004      1.1  christos   },
   1005      1.1  christos /* blt.l $simm24 */
   1006      1.1  christos   {
   1007      1.1  christos     EPIPHANY_INSN_BLT, "blt", "blt.l", 32,
   1008      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1009      1.1  christos   },
   1010      1.1  christos /* blte.s $simm8 */
   1011      1.1  christos   {
   1012      1.1  christos     EPIPHANY_INSN_BLTE16, "blte16", "blte.s", 16,
   1013      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1014      1.1  christos   },
   1015      1.1  christos /* blte.l $simm24 */
   1016      1.1  christos   {
   1017      1.1  christos     EPIPHANY_INSN_BLTE, "blte", "blte.l", 32,
   1018      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1019      1.1  christos   },
   1020      1.1  christos /* bbeq.s $simm8 */
   1021      1.1  christos   {
   1022      1.1  christos     EPIPHANY_INSN_BBEQ16, "bbeq16", "bbeq.s", 16,
   1023      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1024      1.1  christos   },
   1025      1.1  christos /* bbeq.l $simm24 */
   1026      1.1  christos   {
   1027      1.1  christos     EPIPHANY_INSN_BBEQ, "bbeq", "bbeq.l", 32,
   1028      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1029      1.1  christos   },
   1030      1.1  christos /* bbne.s $simm8 */
   1031      1.1  christos   {
   1032      1.1  christos     EPIPHANY_INSN_BBNE16, "bbne16", "bbne.s", 16,
   1033      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1034      1.1  christos   },
   1035      1.1  christos /* bbne.l $simm24 */
   1036      1.1  christos   {
   1037      1.1  christos     EPIPHANY_INSN_BBNE, "bbne", "bbne.l", 32,
   1038      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1039      1.1  christos   },
   1040      1.1  christos /* bblt.s $simm8 */
   1041      1.1  christos   {
   1042      1.1  christos     EPIPHANY_INSN_BBLT16, "bblt16", "bblt.s", 16,
   1043      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1044      1.1  christos   },
   1045      1.1  christos /* bblt.l $simm24 */
   1046      1.1  christos   {
   1047      1.1  christos     EPIPHANY_INSN_BBLT, "bblt", "bblt.l", 32,
   1048      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1049      1.1  christos   },
   1050      1.1  christos /* bblte.s $simm8 */
   1051      1.1  christos   {
   1052      1.1  christos     EPIPHANY_INSN_BBLTE16, "bblte16", "bblte.s", 16,
   1053      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1054      1.1  christos   },
   1055      1.1  christos /* bblte.l $simm24 */
   1056      1.1  christos   {
   1057      1.1  christos     EPIPHANY_INSN_BBLTE, "bblte", "bblte.l", 32,
   1058      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1059      1.1  christos   },
   1060      1.1  christos /* b.s $simm8 */
   1061      1.1  christos   {
   1062      1.1  christos     EPIPHANY_INSN_B16, "b16", "b.s", 16,
   1063      1.1  christos     { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1064      1.1  christos   },
   1065      1.1  christos /* b.l $simm24 */
   1066      1.1  christos   {
   1067      1.1  christos     EPIPHANY_INSN_B, "b", "b.l", 32,
   1068      1.1  christos     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1069      1.1  christos   },
   1070      1.1  christos /* bl.s $simm8 */
   1071      1.1  christos   {
   1072      1.1  christos     EPIPHANY_INSN_BL16, "bl16", "bl.s", 16,
   1073      1.1  christos     { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1074      1.1  christos   },
   1075      1.1  christos /* bl.l $simm24 */
   1076      1.1  christos   {
   1077      1.1  christos     EPIPHANY_INSN_BL, "bl", "bl.l", 32,
   1078      1.1  christos     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1079      1.1  christos   },
   1080      1.1  christos /* jr $rn */
   1081      1.1  christos   {
   1082      1.1  christos     EPIPHANY_INSN_JR16, "jr16", "jr", 16,
   1083      1.1  christos     { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1084      1.1  christos   },
   1085      1.1  christos /* rts */
   1086      1.1  christos   {
   1087      1.1  christos     -1, "rts", "rts", 32,
   1088      1.1  christos     { 0|A(UNCOND_CTI)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
   1089      1.1  christos   },
   1090      1.1  christos /* jr $rn6 */
   1091      1.1  christos   {
   1092      1.1  christos     EPIPHANY_INSN_JR, "jr", "jr", 32,
   1093      1.1  christos     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1094      1.1  christos   },
   1095      1.1  christos /* jalr $rn */
   1096      1.1  christos   {
   1097      1.1  christos     EPIPHANY_INSN_JALR16, "jalr16", "jalr", 16,
   1098      1.1  christos     { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1099      1.1  christos   },
   1100      1.1  christos /* jalr $rn6 */
   1101      1.1  christos   {
   1102      1.1  christos     EPIPHANY_INSN_JALR, "jalr", "jalr", 32,
   1103      1.1  christos     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1104      1.1  christos   },
   1105      1.1  christos /* ldrb $rd,[$rn,$rm] */
   1106      1.1  christos   {
   1107      1.1  christos     EPIPHANY_INSN_LDRBX16_S, "ldrbx16.s", "ldrb", 16,
   1108      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1109      1.1  christos   },
   1110      1.1  christos /* ldrb $rd,[$rn],$rm */
   1111      1.1  christos   {
   1112      1.1  christos     EPIPHANY_INSN_LDRBP16_S, "ldrbp16.s", "ldrb", 16,
   1113      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1114      1.1  christos   },
   1115      1.1  christos /* ldrb $rd6,[$rn6,$direction$rm6] */
   1116      1.1  christos   {
   1117      1.1  christos     EPIPHANY_INSN_LDRBX_L, "ldrbx.l", "ldrb", 32,
   1118      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1119      1.1  christos   },
   1120      1.1  christos /* ldrb $rd6,[$rn6],$direction$rm6 */
   1121      1.1  christos   {
   1122      1.1  christos     EPIPHANY_INSN_LDRBP_L, "ldrbp.l", "ldrb", 32,
   1123      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1124      1.1  christos   },
   1125      1.1  christos /* ldrb $rd,[$rn,$disp3] */
   1126      1.1  christos   {
   1127      1.1  christos     EPIPHANY_INSN_LDRBD16_S, "ldrbd16.s", "ldrb", 16,
   1128      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1129      1.1  christos   },
   1130      1.1  christos /* ldrb $rd6,[$rn6,$dpmi$disp11] */
   1131      1.1  christos   {
   1132      1.1  christos     EPIPHANY_INSN_LDRBD_L, "ldrbd.l", "ldrb", 32,
   1133      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1134      1.1  christos   },
   1135      1.1  christos /* ldrb $rd6,[$rn6],$dpmi$disp11 */
   1136      1.1  christos   {
   1137      1.1  christos     EPIPHANY_INSN_LDRBDPM_L, "ldrbdpm.l", "ldrb", 32,
   1138      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1139      1.1  christos   },
   1140      1.1  christos /* ldrh $rd,[$rn,$rm] */
   1141      1.1  christos   {
   1142      1.1  christos     EPIPHANY_INSN_LDRHX16_S, "ldrhx16.s", "ldrh", 16,
   1143      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1144      1.1  christos   },
   1145      1.1  christos /* ldrh $rd,[$rn],$rm */
   1146      1.1  christos   {
   1147      1.1  christos     EPIPHANY_INSN_LDRHP16_S, "ldrhp16.s", "ldrh", 16,
   1148      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1149      1.1  christos   },
   1150      1.1  christos /* ldrh $rd6,[$rn6,$direction$rm6] */
   1151      1.1  christos   {
   1152      1.1  christos     EPIPHANY_INSN_LDRHX_L, "ldrhx.l", "ldrh", 32,
   1153      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1154      1.1  christos   },
   1155      1.1  christos /* ldrh $rd6,[$rn6],$direction$rm6 */
   1156      1.1  christos   {
   1157      1.1  christos     EPIPHANY_INSN_LDRHP_L, "ldrhp.l", "ldrh", 32,
   1158      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1159      1.1  christos   },
   1160      1.1  christos /* ldrh $rd,[$rn,$disp3] */
   1161      1.1  christos   {
   1162      1.1  christos     EPIPHANY_INSN_LDRHD16_S, "ldrhd16.s", "ldrh", 16,
   1163      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1164      1.1  christos   },
   1165      1.1  christos /* ldrh $rd6,[$rn6,$dpmi$disp11] */
   1166      1.1  christos   {
   1167      1.1  christos     EPIPHANY_INSN_LDRHD_L, "ldrhd.l", "ldrh", 32,
   1168      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1169      1.1  christos   },
   1170      1.1  christos /* ldrh $rd6,[$rn6],$dpmi$disp11 */
   1171      1.1  christos   {
   1172      1.1  christos     EPIPHANY_INSN_LDRHDPM_L, "ldrhdpm.l", "ldrh", 32,
   1173      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1174      1.1  christos   },
   1175      1.1  christos /* ldr $rd,[$rn,$rm] */
   1176      1.1  christos   {
   1177      1.1  christos     EPIPHANY_INSN_LDRX16_S, "ldrx16.s", "ldr", 16,
   1178      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1179      1.1  christos   },
   1180      1.1  christos /* ldr $rd,[$rn],$rm */
   1181      1.1  christos   {
   1182      1.1  christos     EPIPHANY_INSN_LDRP16_S, "ldrp16.s", "ldr", 16,
   1183      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1184      1.1  christos   },
   1185      1.1  christos /* ldr $rd6,[$rn6,$direction$rm6] */
   1186      1.1  christos   {
   1187      1.1  christos     EPIPHANY_INSN_LDRX_L, "ldrx.l", "ldr", 32,
   1188      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1189      1.1  christos   },
   1190      1.1  christos /* ldr $rd6,[$rn6],$direction$rm6 */
   1191      1.1  christos   {
   1192      1.1  christos     EPIPHANY_INSN_LDRP_L, "ldrp.l", "ldr", 32,
   1193      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1194      1.1  christos   },
   1195      1.1  christos /* ldr $rd,[$rn,$disp3] */
   1196      1.1  christos   {
   1197      1.1  christos     EPIPHANY_INSN_LDRD16_S, "ldrd16.s", "ldr", 16,
   1198      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1199      1.1  christos   },
   1200      1.1  christos /* ldr $rd6,[$rn6,$dpmi$disp11] */
   1201      1.1  christos   {
   1202      1.1  christos     EPIPHANY_INSN_LDRD_L, "ldrd.l", "ldr", 32,
   1203      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1204      1.1  christos   },
   1205      1.1  christos /* ldr $rd6,[$rn6],$dpmi$disp11 */
   1206      1.1  christos   {
   1207      1.1  christos     EPIPHANY_INSN_LDRDPM_L, "ldrdpm.l", "ldr", 32,
   1208      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1209      1.1  christos   },
   1210      1.1  christos /* ldrd $rd,[$rn,$rm] */
   1211      1.1  christos   {
   1212      1.1  christos     EPIPHANY_INSN_LDRDX16_S, "ldrdx16.s", "ldrd", 16,
   1213      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1214      1.1  christos   },
   1215      1.1  christos /* ldrd $rd,[$rn],$rm */
   1216      1.1  christos   {
   1217      1.1  christos     EPIPHANY_INSN_LDRDP16_S, "ldrdp16.s", "ldrd", 16,
   1218      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1219      1.1  christos   },
   1220      1.1  christos /* ldrd $rd6,[$rn6,$direction$rm6] */
   1221      1.1  christos   {
   1222      1.1  christos     EPIPHANY_INSN_LDRDX_L, "ldrdx.l", "ldrd", 32,
   1223      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1224      1.1  christos   },
   1225      1.1  christos /* ldrd $rd6,[$rn6],$direction$rm6 */
   1226      1.1  christos   {
   1227      1.1  christos     EPIPHANY_INSN_LDRDP_L, "ldrdp.l", "ldrd", 32,
   1228      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1229      1.1  christos   },
   1230      1.1  christos /* ldrd $rd,[$rn,$disp3] */
   1231      1.1  christos   {
   1232      1.1  christos     EPIPHANY_INSN_LDRDD16_S, "ldrdd16.s", "ldrd", 16,
   1233      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1234      1.1  christos   },
   1235      1.1  christos /* ldrd $rd6,[$rn6,$dpmi$disp11] */
   1236      1.1  christos   {
   1237      1.1  christos     EPIPHANY_INSN_LDRDD_L, "ldrdd.l", "ldrd", 32,
   1238      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1239      1.1  christos   },
   1240      1.1  christos /* ldrd $rd6,[$rn6],$dpmi$disp11 */
   1241      1.1  christos   {
   1242      1.1  christos     EPIPHANY_INSN_LDRDDPM_L, "ldrddpm.l", "ldrd", 32,
   1243      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1244      1.1  christos   },
   1245      1.1  christos /* testsetb $rd6,[$rn6,$direction$rm6] */
   1246      1.1  christos   {
   1247      1.1  christos     EPIPHANY_INSN_TESTSETBT, "testsetbt", "testsetb", 32,
   1248      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1249      1.1  christos   },
   1250      1.1  christos /* testseth $rd6,[$rn6,$direction$rm6] */
   1251      1.1  christos   {
   1252      1.1  christos     EPIPHANY_INSN_TESTSETHT, "testsetht", "testseth", 32,
   1253      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1254      1.1  christos   },
   1255      1.1  christos /* testset $rd6,[$rn6,$direction$rm6] */
   1256      1.1  christos   {
   1257      1.1  christos     EPIPHANY_INSN_TESTSETT, "testsett", "testset", 32,
   1258      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1259      1.1  christos   },
   1260      1.1  christos /* strb $rd,[$rn,$rm] */
   1261      1.1  christos   {
   1262      1.1  christos     EPIPHANY_INSN_STRBX16, "strbx16", "strb", 16,
   1263      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1264      1.1  christos   },
   1265      1.1  christos /* strb $rd6,[$rn6,$direction$rm6] */
   1266      1.1  christos   {
   1267      1.1  christos     EPIPHANY_INSN_STRBX, "strbx", "strb", 32,
   1268      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1269      1.1  christos   },
   1270      1.1  christos /* strb $rd,[$rn],$rm */
   1271      1.1  christos   {
   1272      1.1  christos     EPIPHANY_INSN_STRBP16, "strbp16", "strb", 16,
   1273      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1274      1.1  christos   },
   1275      1.1  christos /* strb $rd6,[$rn6],$direction$rm6 */
   1276      1.1  christos   {
   1277      1.1  christos     EPIPHANY_INSN_STRBP, "strbp", "strb", 32,
   1278      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1279      1.1  christos   },
   1280      1.1  christos /* strb $rd,[$rn,$disp3] */
   1281      1.1  christos   {
   1282      1.1  christos     EPIPHANY_INSN_STRBD16, "strbd16", "strb", 16,
   1283      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1284      1.1  christos   },
   1285      1.1  christos /* strb $rd6,[$rn6,$dpmi$disp11] */
   1286      1.1  christos   {
   1287      1.1  christos     EPIPHANY_INSN_STRBD, "strbd", "strb", 32,
   1288      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1289      1.1  christos   },
   1290      1.1  christos /* strb $rd6,[$rn6],$dpmi$disp11 */
   1291      1.1  christos   {
   1292      1.1  christos     EPIPHANY_INSN_STRBDPM, "strbdpm", "strb", 32,
   1293      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1294      1.1  christos   },
   1295      1.1  christos /* strh $rd,[$rn,$rm] */
   1296      1.1  christos   {
   1297      1.1  christos     EPIPHANY_INSN_STRHX16, "strhx16", "strh", 16,
   1298      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1299      1.1  christos   },
   1300      1.1  christos /* strh $rd6,[$rn6,$direction$rm6] */
   1301      1.1  christos   {
   1302      1.1  christos     EPIPHANY_INSN_STRHX, "strhx", "strh", 32,
   1303      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1304      1.1  christos   },
   1305      1.1  christos /* strh $rd,[$rn],$rm */
   1306      1.1  christos   {
   1307      1.1  christos     EPIPHANY_INSN_STRHP16, "strhp16", "strh", 16,
   1308      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1309      1.1  christos   },
   1310      1.1  christos /* strh $rd6,[$rn6],$direction$rm6 */
   1311      1.1  christos   {
   1312      1.1  christos     EPIPHANY_INSN_STRHP, "strhp", "strh", 32,
   1313      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1314      1.1  christos   },
   1315      1.1  christos /* strh $rd,[$rn,$disp3] */
   1316      1.1  christos   {
   1317      1.1  christos     EPIPHANY_INSN_STRHD16, "strhd16", "strh", 16,
   1318      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1319      1.1  christos   },
   1320      1.1  christos /* strh $rd6,[$rn6,$dpmi$disp11] */
   1321      1.1  christos   {
   1322      1.1  christos     EPIPHANY_INSN_STRHD, "strhd", "strh", 32,
   1323      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1324      1.1  christos   },
   1325      1.1  christos /* strh $rd6,[$rn6],$dpmi$disp11 */
   1326      1.1  christos   {
   1327      1.1  christos     EPIPHANY_INSN_STRHDPM, "strhdpm", "strh", 32,
   1328      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1329      1.1  christos   },
   1330      1.1  christos /* str $rd,[$rn,$rm] */
   1331      1.1  christos   {
   1332      1.1  christos     EPIPHANY_INSN_STRX16, "strx16", "str", 16,
   1333      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1334      1.1  christos   },
   1335      1.1  christos /* str $rd6,[$rn6,$direction$rm6] */
   1336      1.1  christos   {
   1337      1.1  christos     EPIPHANY_INSN_STRX, "strx", "str", 32,
   1338      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1339      1.1  christos   },
   1340      1.1  christos /* str $rd,[$rn],$rm */
   1341      1.1  christos   {
   1342      1.1  christos     EPIPHANY_INSN_STRP16, "strp16", "str", 16,
   1343      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1344      1.1  christos   },
   1345      1.1  christos /* str $rd6,[$rn6],$direction$rm6 */
   1346      1.1  christos   {
   1347      1.1  christos     EPIPHANY_INSN_STRP, "strp", "str", 32,
   1348      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1349      1.1  christos   },
   1350      1.1  christos /* str $rd,[$rn,$disp3] */
   1351      1.1  christos   {
   1352      1.1  christos     EPIPHANY_INSN_STRD16, "strd16", "str", 16,
   1353      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1354      1.1  christos   },
   1355      1.1  christos /* str $rd6,[$rn6,$dpmi$disp11] */
   1356      1.1  christos   {
   1357      1.1  christos     EPIPHANY_INSN_STRD, "strd", "str", 32,
   1358      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1359      1.1  christos   },
   1360      1.1  christos /* str $rd6,[$rn6],$dpmi$disp11 */
   1361      1.1  christos   {
   1362      1.1  christos     EPIPHANY_INSN_STRDPM, "strdpm", "str", 32,
   1363      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1364      1.1  christos   },
   1365      1.1  christos /* strd $rd,[$rn,$rm] */
   1366      1.1  christos   {
   1367      1.1  christos     EPIPHANY_INSN_STRDX16, "strdx16", "strd", 16,
   1368      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1369      1.1  christos   },
   1370      1.1  christos /* strd $rd6,[$rn6,$direction$rm6] */
   1371      1.1  christos   {
   1372      1.1  christos     EPIPHANY_INSN_STRDX, "strdx", "strd", 32,
   1373      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1374      1.1  christos   },
   1375      1.1  christos /* strd $rd,[$rn],$rm */
   1376      1.1  christos   {
   1377      1.1  christos     EPIPHANY_INSN_STRDP16, "strdp16", "strd", 16,
   1378      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1379      1.1  christos   },
   1380      1.1  christos /* strd $rd6,[$rn6],$direction$rm6 */
   1381      1.1  christos   {
   1382      1.1  christos     EPIPHANY_INSN_STRDP, "strdp", "strd", 32,
   1383      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1384      1.1  christos   },
   1385      1.1  christos /* strd $rd,[$rn,$disp3] */
   1386      1.1  christos   {
   1387      1.1  christos     EPIPHANY_INSN_STRDD16, "strdd16", "strd", 16,
   1388      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1389      1.1  christos   },
   1390      1.1  christos /* strd $rd6,[$rn6,$dpmi$disp11] */
   1391      1.1  christos   {
   1392      1.1  christos     EPIPHANY_INSN_STRDD, "strdd", "strd", 32,
   1393      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1394      1.1  christos   },
   1395      1.1  christos /* strd $rd6,[$rn6],$dpmi$disp11 */
   1396      1.1  christos   {
   1397      1.1  christos     EPIPHANY_INSN_STRDDPM, "strddpm", "strd", 32,
   1398      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1399      1.1  christos   },
   1400      1.1  christos /* moveq $rd,$rn */
   1401      1.1  christos   {
   1402      1.1  christos     EPIPHANY_INSN_CMOV16EQ, "cmov16EQ", "moveq", 16,
   1403      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1404      1.1  christos   },
   1405      1.1  christos /* moveq $rd6,$rn6 */
   1406      1.1  christos   {
   1407      1.1  christos     EPIPHANY_INSN_CMOVEQ, "cmovEQ", "moveq", 32,
   1408      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1409      1.1  christos   },
   1410      1.1  christos /* movne $rd,$rn */
   1411      1.1  christos   {
   1412      1.1  christos     EPIPHANY_INSN_CMOV16NE, "cmov16NE", "movne", 16,
   1413      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1414      1.1  christos   },
   1415      1.1  christos /* movne $rd6,$rn6 */
   1416      1.1  christos   {
   1417      1.1  christos     EPIPHANY_INSN_CMOVNE, "cmovNE", "movne", 32,
   1418      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1419      1.1  christos   },
   1420      1.1  christos /* movgtu $rd,$rn */
   1421      1.1  christos   {
   1422      1.1  christos     EPIPHANY_INSN_CMOV16GTU, "cmov16GTU", "movgtu", 16,
   1423      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1424      1.1  christos   },
   1425      1.1  christos /* movgtu $rd6,$rn6 */
   1426      1.1  christos   {
   1427      1.1  christos     EPIPHANY_INSN_CMOVGTU, "cmovGTU", "movgtu", 32,
   1428      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1429      1.1  christos   },
   1430      1.1  christos /* movgteu $rd,$rn */
   1431      1.1  christos   {
   1432      1.1  christos     EPIPHANY_INSN_CMOV16GTEU, "cmov16GTEU", "movgteu", 16,
   1433      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1434      1.1  christos   },
   1435      1.1  christos /* movgteu $rd6,$rn6 */
   1436      1.1  christos   {
   1437      1.1  christos     EPIPHANY_INSN_CMOVGTEU, "cmovGTEU", "movgteu", 32,
   1438      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1439      1.1  christos   },
   1440      1.1  christos /* movlteu $rd,$rn */
   1441      1.1  christos   {
   1442      1.1  christos     EPIPHANY_INSN_CMOV16LTEU, "cmov16LTEU", "movlteu", 16,
   1443      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1444      1.1  christos   },
   1445      1.1  christos /* movlteu $rd6,$rn6 */
   1446      1.1  christos   {
   1447      1.1  christos     EPIPHANY_INSN_CMOVLTEU, "cmovLTEU", "movlteu", 32,
   1448      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1449      1.1  christos   },
   1450      1.1  christos /* movltu $rd,$rn */
   1451      1.1  christos   {
   1452      1.1  christos     EPIPHANY_INSN_CMOV16LTU, "cmov16LTU", "movltu", 16,
   1453      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1454      1.1  christos   },
   1455      1.1  christos /* movltu $rd6,$rn6 */
   1456      1.1  christos   {
   1457      1.1  christos     EPIPHANY_INSN_CMOVLTU, "cmovLTU", "movltu", 32,
   1458      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1459      1.1  christos   },
   1460      1.1  christos /* movgt $rd,$rn */
   1461      1.1  christos   {
   1462      1.1  christos     EPIPHANY_INSN_CMOV16GT, "cmov16GT", "movgt", 16,
   1463      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1464      1.1  christos   },
   1465      1.1  christos /* movgt $rd6,$rn6 */
   1466      1.1  christos   {
   1467      1.1  christos     EPIPHANY_INSN_CMOVGT, "cmovGT", "movgt", 32,
   1468      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1469      1.1  christos   },
   1470      1.1  christos /* movgte $rd,$rn */
   1471      1.1  christos   {
   1472      1.1  christos     EPIPHANY_INSN_CMOV16GTE, "cmov16GTE", "movgte", 16,
   1473      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1474      1.1  christos   },
   1475      1.1  christos /* movgte $rd6,$rn6 */
   1476      1.1  christos   {
   1477      1.1  christos     EPIPHANY_INSN_CMOVGTE, "cmovGTE", "movgte", 32,
   1478      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1479      1.1  christos   },
   1480      1.1  christos /* movlt $rd,$rn */
   1481      1.1  christos   {
   1482      1.1  christos     EPIPHANY_INSN_CMOV16LT, "cmov16LT", "movlt", 16,
   1483      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1484      1.1  christos   },
   1485      1.1  christos /* movlt $rd6,$rn6 */
   1486      1.1  christos   {
   1487      1.1  christos     EPIPHANY_INSN_CMOVLT, "cmovLT", "movlt", 32,
   1488      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1489      1.1  christos   },
   1490      1.1  christos /* movlte $rd,$rn */
   1491      1.1  christos   {
   1492      1.1  christos     EPIPHANY_INSN_CMOV16LTE, "cmov16LTE", "movlte", 16,
   1493      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1494      1.1  christos   },
   1495      1.1  christos /* movlte $rd6,$rn6 */
   1496      1.1  christos   {
   1497      1.1  christos     EPIPHANY_INSN_CMOVLTE, "cmovLTE", "movlte", 32,
   1498      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1499      1.1  christos   },
   1500      1.1  christos /* mov $rd,$rn */
   1501      1.1  christos   {
   1502      1.1  christos     EPIPHANY_INSN_CMOV16B, "cmov16B", "mov", 16,
   1503      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1504      1.1  christos   },
   1505      1.1  christos /* mov $rd6,$rn6 */
   1506      1.1  christos   {
   1507      1.1  christos     EPIPHANY_INSN_CMOVB, "cmovB", "mov", 32,
   1508      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1509      1.1  christos   },
   1510      1.1  christos /* movbeq $rd,$rn */
   1511      1.1  christos   {
   1512      1.1  christos     EPIPHANY_INSN_CMOV16BEQ, "cmov16BEQ", "movbeq", 16,
   1513      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1514      1.1  christos   },
   1515      1.1  christos /* movbeq $rd6,$rn6 */
   1516      1.1  christos   {
   1517      1.1  christos     EPIPHANY_INSN_CMOVBEQ, "cmovBEQ", "movbeq", 32,
   1518      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1519      1.1  christos   },
   1520      1.1  christos /* movbne $rd,$rn */
   1521      1.1  christos   {
   1522      1.1  christos     EPIPHANY_INSN_CMOV16BNE, "cmov16BNE", "movbne", 16,
   1523      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1524      1.1  christos   },
   1525      1.1  christos /* movbne $rd6,$rn6 */
   1526      1.1  christos   {
   1527      1.1  christos     EPIPHANY_INSN_CMOVBNE, "cmovBNE", "movbne", 32,
   1528      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1529      1.1  christos   },
   1530      1.1  christos /* movblt $rd,$rn */
   1531      1.1  christos   {
   1532      1.1  christos     EPIPHANY_INSN_CMOV16BLT, "cmov16BLT", "movblt", 16,
   1533      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1534      1.1  christos   },
   1535      1.1  christos /* movblt $rd6,$rn6 */
   1536      1.1  christos   {
   1537      1.1  christos     EPIPHANY_INSN_CMOVBLT, "cmovBLT", "movblt", 32,
   1538      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1539      1.1  christos   },
   1540      1.1  christos /* movblte $rd,$rn */
   1541      1.1  christos   {
   1542      1.1  christos     EPIPHANY_INSN_CMOV16BLTE, "cmov16BLTE", "movblte", 16,
   1543      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1544      1.1  christos   },
   1545      1.1  christos /* movblte $rd6,$rn6 */
   1546      1.1  christos   {
   1547      1.1  christos     EPIPHANY_INSN_CMOVBLTE, "cmovBLTE", "movblte", 32,
   1548      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1549      1.1  christos   },
   1550      1.1  christos /* movts $sn,$rd */
   1551      1.1  christos   {
   1552      1.1  christos     EPIPHANY_INSN_MOVTS16, "movts16", "movts", 16,
   1553      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1554      1.1  christos   },
   1555      1.1  christos /* movts $sn6,$rd6 */
   1556      1.1  christos   {
   1557      1.1  christos     EPIPHANY_INSN_MOVTS6, "movts6", "movts", 32,
   1558      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1559      1.1  christos   },
   1560      1.1  christos /* movts $sndma,$rd6 */
   1561      1.1  christos   {
   1562      1.1  christos     EPIPHANY_INSN_MOVTSDMA, "movtsdma", "movts", 32,
   1563      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1564      1.1  christos   },
   1565      1.1  christos /* movts $snmem,$rd6 */
   1566      1.1  christos   {
   1567      1.1  christos     EPIPHANY_INSN_MOVTSMEM, "movtsmem", "movts", 32,
   1568      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1569      1.1  christos   },
   1570      1.1  christos /* movts $snmesh,$rd6 */
   1571      1.1  christos   {
   1572      1.1  christos     EPIPHANY_INSN_MOVTSMESH, "movtsmesh", "movts", 32,
   1573      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1574      1.1  christos   },
   1575      1.1  christos /* movfs $rd,$sn */
   1576      1.1  christos   {
   1577      1.1  christos     EPIPHANY_INSN_MOVFS16, "movfs16", "movfs", 16,
   1578      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1579      1.1  christos   },
   1580      1.1  christos /* movfs $rd6,$sn6 */
   1581      1.1  christos   {
   1582      1.1  christos     EPIPHANY_INSN_MOVFS6, "movfs6", "movfs", 32,
   1583      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1584      1.1  christos   },
   1585      1.1  christos /* movfs $rd6,$sndma */
   1586      1.1  christos   {
   1587      1.1  christos     EPIPHANY_INSN_MOVFSDMA, "movfsdma", "movfs", 32,
   1588      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1589      1.1  christos   },
   1590      1.1  christos /* movfs $rd6,$snmem */
   1591      1.1  christos   {
   1592      1.1  christos     EPIPHANY_INSN_MOVFSMEM, "movfsmem", "movfs", 32,
   1593      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1594      1.1  christos   },
   1595      1.1  christos /* movfs $rd6,$snmesh */
   1596      1.1  christos   {
   1597      1.1  christos     EPIPHANY_INSN_MOVFSMESH, "movfsmesh", "movfs", 32,
   1598      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1599      1.1  christos   },
   1600      1.1  christos /* nop */
   1601      1.1  christos   {
   1602      1.1  christos     EPIPHANY_INSN_NOP, "nop", "nop", 16,
   1603      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1604      1.1  christos   },
   1605      1.1  christos /* snop */
   1606      1.1  christos   {
   1607      1.1  christos     EPIPHANY_INSN_SNOP, "snop", "snop", 16,
   1608      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1609      1.1  christos   },
   1610      1.1  christos /* unimpl */
   1611      1.1  christos   {
   1612      1.1  christos     EPIPHANY_INSN_UNIMPL, "unimpl", "unimpl", 32,
   1613      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1614      1.1  christos   },
   1615      1.1  christos /* idle */
   1616      1.1  christos   {
   1617      1.1  christos     EPIPHANY_INSN_IDLE, "idle", "idle", 16,
   1618      1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }
   1619      1.1  christos   },
   1620      1.1  christos /* bkpt */
   1621      1.1  christos   {
   1622      1.1  christos     EPIPHANY_INSN_BKPT, "bkpt", "bkpt", 16,
   1623      1.1  christos     { 0|A(SHORT_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1624      1.1  christos   },
   1625      1.1  christos /* mbkpt */
   1626      1.1  christos   {
   1627      1.1  christos     EPIPHANY_INSN_MBKPT, "mbkpt", "mbkpt", 16,
   1628      1.1  christos     { 0|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
   1629      1.1  christos   },
   1630      1.1  christos /* rti */
   1631      1.1  christos   {
   1632      1.1  christos     EPIPHANY_INSN_RTI, "rti", "rti", 16,
   1633      1.1  christos     { 0|A(UNCOND_CTI)|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
   1634      1.1  christos   },
   1635      1.1  christos /* wand */
   1636      1.1  christos   {
   1637      1.1  christos     EPIPHANY_INSN_WAND, "wand", "wand", 16,
   1638      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1639      1.1  christos   },
   1640      1.1  christos /* sync */
   1641      1.1  christos   {
   1642      1.1  christos     EPIPHANY_INSN_SYNC, "sync", "sync", 16,
   1643      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1644      1.1  christos   },
   1645      1.1  christos /* gie */
   1646      1.1  christos   {
   1647      1.1  christos     EPIPHANY_INSN_GIEN, "gien", "gie", 16,
   1648      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1649      1.1  christos   },
   1650      1.1  christos /* gid */
   1651      1.1  christos   {
   1652      1.1  christos     EPIPHANY_INSN_GIDIS, "gidis", "gid", 16,
   1653      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1654      1.1  christos   },
   1655      1.1  christos /* swi $swi_num */
   1656      1.1  christos   {
   1657      1.1  christos     EPIPHANY_INSN_SWI_NUM, "swi_num", "swi", 16,
   1658      1.1  christos     { 0|A(UNCOND_CTI)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1659      1.1  christos   },
   1660      1.1  christos /* swi */
   1661      1.1  christos   {
   1662      1.1  christos     -1, "swi", "swi", 16,
   1663      1.1  christos     { 0|A(UNCOND_CTI)|A(SHORT_INSN)|A(ALIAS)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1664      1.1  christos   },
   1665      1.1  christos /* trap $trapnum6 */
   1666      1.1  christos   {
   1667      1.1  christos     EPIPHANY_INSN_TRAP16, "trap16", "trap", 16,
   1668      1.1  christos     { 0|A(UNCOND_CTI)|A(SHORT_INSN), { { { (1<<MACH_BASE), 0 } } } }
   1669      1.1  christos   },
   1670      1.1  christos /* add $rd,$rn,$rm */
   1671      1.1  christos   {
   1672      1.1  christos     EPIPHANY_INSN_ADD16, "add16", "add", 16,
   1673      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1674      1.1  christos   },
   1675      1.1  christos /* add $rd6,$rn6,$rm6 */
   1676      1.1  christos   {
   1677      1.1  christos     EPIPHANY_INSN_ADD, "add", "add", 32,
   1678      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1679      1.1  christos   },
   1680      1.1  christos /* sub $rd,$rn,$rm */
   1681      1.1  christos   {
   1682      1.1  christos     EPIPHANY_INSN_SUB16, "sub16", "sub", 16,
   1683      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1684      1.1  christos   },
   1685      1.1  christos /* sub $rd6,$rn6,$rm6 */
   1686      1.1  christos   {
   1687      1.1  christos     EPIPHANY_INSN_SUB, "sub", "sub", 32,
   1688      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1689      1.1  christos   },
   1690      1.1  christos /* and $rd,$rn,$rm */
   1691      1.1  christos   {
   1692      1.1  christos     EPIPHANY_INSN_AND16, "and16", "and", 16,
   1693      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1694      1.1  christos   },
   1695      1.1  christos /* and $rd6,$rn6,$rm6 */
   1696      1.1  christos   {
   1697      1.1  christos     EPIPHANY_INSN_AND, "and", "and", 32,
   1698      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1699      1.1  christos   },
   1700      1.1  christos /* orr $rd,$rn,$rm */
   1701      1.1  christos   {
   1702      1.1  christos     EPIPHANY_INSN_ORR16, "orr16", "orr", 16,
   1703      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1704      1.1  christos   },
   1705      1.1  christos /* orr $rd6,$rn6,$rm6 */
   1706      1.1  christos   {
   1707      1.1  christos     EPIPHANY_INSN_ORR, "orr", "orr", 32,
   1708      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1709      1.1  christos   },
   1710      1.1  christos /* eor $rd,$rn,$rm */
   1711      1.1  christos   {
   1712      1.1  christos     EPIPHANY_INSN_EOR16, "eor16", "eor", 16,
   1713      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1714      1.1  christos   },
   1715      1.1  christos /* eor $rd6,$rn6,$rm6 */
   1716      1.1  christos   {
   1717      1.1  christos     EPIPHANY_INSN_EOR, "eor", "eor", 32,
   1718      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1719      1.1  christos   },
   1720      1.1  christos /* add.s $rd,$rn,$simm3 */
   1721      1.1  christos   {
   1722      1.1  christos     EPIPHANY_INSN_ADDI16, "addi16", "add.s", 16,
   1723      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1724      1.1  christos   },
   1725      1.1  christos /* add.l $rd6,$rn6,$simm11 */
   1726      1.1  christos   {
   1727      1.1  christos     EPIPHANY_INSN_ADDI, "addi", "add.l", 32,
   1728      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1729      1.1  christos   },
   1730      1.1  christos /* sub.s $rd,$rn,$simm3 */
   1731      1.1  christos   {
   1732      1.1  christos     EPIPHANY_INSN_SUBI16, "subi16", "sub.s", 16,
   1733      1.1  christos     { 0|A(IMM3)|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1734      1.1  christos   },
   1735      1.1  christos /* sub.l $rd6,$rn6,$simm11 */
   1736      1.1  christos   {
   1737      1.1  christos     EPIPHANY_INSN_SUBI, "subi", "sub.l", 32,
   1738      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1739      1.1  christos   },
   1740      1.1  christos /* asr $rd,$rn,$rm */
   1741      1.1  christos   {
   1742      1.1  christos     EPIPHANY_INSN_ASR16, "asr16", "asr", 16,
   1743      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1744      1.1  christos   },
   1745      1.1  christos /* asr $rd6,$rn6,$rm6 */
   1746      1.1  christos   {
   1747      1.1  christos     EPIPHANY_INSN_ASR, "asr", "asr", 32,
   1748      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1749      1.1  christos   },
   1750      1.1  christos /* lsr $rd,$rn,$rm */
   1751      1.1  christos   {
   1752      1.1  christos     EPIPHANY_INSN_LSR16, "lsr16", "lsr", 16,
   1753      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1754      1.1  christos   },
   1755      1.1  christos /* lsr $rd6,$rn6,$rm6 */
   1756      1.1  christos   {
   1757      1.1  christos     EPIPHANY_INSN_LSR, "lsr", "lsr", 32,
   1758      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1759      1.1  christos   },
   1760      1.1  christos /* lsl $rd,$rn,$rm */
   1761      1.1  christos   {
   1762      1.1  christos     EPIPHANY_INSN_LSL16, "lsl16", "lsl", 16,
   1763      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1764      1.1  christos   },
   1765      1.1  christos /* lsl $rd6,$rn6,$rm6 */
   1766      1.1  christos   {
   1767      1.1  christos     EPIPHANY_INSN_LSL, "lsl", "lsl", 32,
   1768      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1769      1.1  christos   },
   1770      1.1  christos /* lsr $rd,$rn,$shift */
   1771      1.1  christos   {
   1772      1.1  christos     EPIPHANY_INSN_LSRI16, "lsri16", "lsr", 16,
   1773      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1774      1.1  christos   },
   1775      1.1  christos /* lsr $rd6,$rn6,$shift */
   1776      1.1  christos   {
   1777      1.1  christos     EPIPHANY_INSN_LSRI32, "lsri32", "lsr", 32,
   1778      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1779      1.1  christos   },
   1780      1.1  christos /* lsl $rd,$rn,$shift */
   1781      1.1  christos   {
   1782      1.1  christos     EPIPHANY_INSN_LSLI16, "lsli16", "lsl", 16,
   1783      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1784      1.1  christos   },
   1785      1.1  christos /* lsl $rd6,$rn6,$shift */
   1786      1.1  christos   {
   1787      1.1  christos     EPIPHANY_INSN_LSLI32, "lsli32", "lsl", 32,
   1788      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1789      1.1  christos   },
   1790      1.1  christos /* asr $rd,$rn,$shift */
   1791      1.1  christos   {
   1792      1.1  christos     EPIPHANY_INSN_ASRI16, "asri16", "asr", 16,
   1793      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1794      1.1  christos   },
   1795      1.1  christos /* asr $rd6,$rn6,$shift */
   1796      1.1  christos   {
   1797      1.1  christos     EPIPHANY_INSN_ASRI32, "asri32", "asr", 32,
   1798      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1799      1.1  christos   },
   1800      1.1  christos /* bitr $rd,$rn */
   1801      1.1  christos   {
   1802      1.1  christos     EPIPHANY_INSN_BITR16, "bitr16", "bitr", 16,
   1803      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1804      1.1  christos   },
   1805      1.1  christos /* bitr $rd6,$rn6 */
   1806      1.1  christos   {
   1807      1.1  christos     EPIPHANY_INSN_BITR, "bitr", "bitr", 32,
   1808      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1809      1.1  christos   },
   1810      1.1  christos /* fext $rd6,$rn6,$rm6 */
   1811      1.1  christos   {
   1812      1.1  christos     EPIPHANY_INSN_FEXT, "fext", "fext", 32,
   1813      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1814      1.1  christos   },
   1815      1.1  christos /* fdep $rd6,$rn6,$rm6 */
   1816      1.1  christos   {
   1817      1.1  christos     EPIPHANY_INSN_FDEP, "fdep", "fdep", 32,
   1818      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1819      1.1  christos   },
   1820      1.1  christos /* lfsr $rd6,$rn6,$rm6 */
   1821      1.1  christos   {
   1822      1.1  christos     EPIPHANY_INSN_LFSR, "lfsr", "lfsr", 32,
   1823      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1824      1.1  christos   },
   1825      1.1  christos /* mov.b $rd,$imm8 */
   1826      1.1  christos   {
   1827      1.1  christos     EPIPHANY_INSN_MOV8, "mov8", "mov.b", 16,
   1828      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1829      1.1  christos   },
   1830      1.1  christos /* mov.l $rd6,$imm16 */
   1831      1.1  christos   {
   1832      1.1  christos     EPIPHANY_INSN_MOV16, "mov16", "mov.l", 32,
   1833      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1834      1.1  christos   },
   1835      1.1  christos /* movt $rd6,$imm16 */
   1836      1.1  christos   {
   1837      1.1  christos     EPIPHANY_INSN_MOVT, "movt", "movt", 32,
   1838      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1839      1.1  christos   },
   1840      1.1  christos /* fadd $rd,$rn,$rm */
   1841      1.1  christos   {
   1842      1.1  christos     EPIPHANY_INSN_F_ADDF16, "f_addf16", "fadd", 16,
   1843      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1844      1.1  christos   },
   1845      1.1  christos /* fadd $rd6,$rn6,$rm6 */
   1846      1.1  christos   {
   1847      1.1  christos     EPIPHANY_INSN_F_ADDF32, "f_addf32", "fadd", 32,
   1848      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1849      1.1  christos   },
   1850      1.1  christos /* fsub $rd,$rn,$rm */
   1851      1.1  christos   {
   1852      1.1  christos     EPIPHANY_INSN_F_SUBF16, "f_subf16", "fsub", 16,
   1853      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1854      1.1  christos   },
   1855      1.1  christos /* fsub $rd6,$rn6,$rm6 */
   1856      1.1  christos   {
   1857      1.1  christos     EPIPHANY_INSN_F_SUBF32, "f_subf32", "fsub", 32,
   1858      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1859      1.1  christos   },
   1860      1.1  christos /* fmul $rd,$rn,$rm */
   1861      1.1  christos   {
   1862      1.1  christos     EPIPHANY_INSN_F_MULF16, "f_mulf16", "fmul", 16,
   1863      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1864      1.1  christos   },
   1865      1.1  christos /* fmul $rd6,$rn6,$rm6 */
   1866      1.1  christos   {
   1867      1.1  christos     EPIPHANY_INSN_F_MULF32, "f_mulf32", "fmul", 32,
   1868      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1869      1.1  christos   },
   1870      1.1  christos /* fmadd $rd,$rn,$rm */
   1871      1.1  christos   {
   1872      1.1  christos     EPIPHANY_INSN_F_MADDF16, "f_maddf16", "fmadd", 16,
   1873      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1874      1.1  christos   },
   1875      1.1  christos /* fmadd $rd6,$rn6,$rm6 */
   1876      1.1  christos   {
   1877      1.1  christos     EPIPHANY_INSN_F_MADDF32, "f_maddf32", "fmadd", 32,
   1878      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1879      1.1  christos   },
   1880      1.1  christos /* fmsub $rd,$rn,$rm */
   1881      1.1  christos   {
   1882      1.1  christos     EPIPHANY_INSN_F_MSUBF16, "f_msubf16", "fmsub", 16,
   1883      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1884      1.1  christos   },
   1885      1.1  christos /* fmsub $rd6,$rn6,$rm6 */
   1886      1.1  christos   {
   1887      1.1  christos     EPIPHANY_INSN_F_MSUBF32, "f_msubf32", "fmsub", 32,
   1888      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1889      1.1  christos   },
   1890      1.1  christos /* fabs rd,rn */
   1891      1.1  christos   {
   1892      1.1  christos     EPIPHANY_INSN_F_ABSF16, "f_absf16", "fabs", 16,
   1893      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1894      1.1  christos   },
   1895      1.1  christos /* fabs $rd6,$rn6 */
   1896      1.1  christos   {
   1897      1.1  christos     EPIPHANY_INSN_F_ABSF32, "f_absf32", "fabs", 32,
   1898      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1899      1.1  christos   },
   1900      1.1  christos /* float $rd,$rn */
   1901      1.1  christos   {
   1902      1.1  christos     EPIPHANY_INSN_F_LOATF16, "f_loatf16", "float", 16,
   1903      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1904      1.1  christos   },
   1905      1.1  christos /* float $rd6,$rn6 */
   1906      1.1  christos   {
   1907      1.1  christos     EPIPHANY_INSN_F_LOATF32, "f_loatf32", "float", 32,
   1908      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1909      1.1  christos   },
   1910      1.1  christos /* fix $rd,$rn */
   1911      1.1  christos   {
   1912      1.1  christos     EPIPHANY_INSN_F_IXF16, "f_ixf16", "fix", 16,
   1913      1.1  christos     { 0|A(SHORT_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1914      1.1  christos   },
   1915      1.1  christos /* fix $rd6,$rn6 */
   1916      1.1  christos   {
   1917      1.1  christos     EPIPHANY_INSN_F_IXF32, "f_ixf32", "fix", 32,
   1918      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1919      1.1  christos   },
   1920      1.1  christos /* frecip $frd6,$frn6 */
   1921      1.1  christos   {
   1922      1.1  christos     EPIPHANY_INSN_F_RECIPF32, "f_recipf32", "frecip", 32,
   1923      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1924      1.1  christos   },
   1925      1.1  christos /* fsqrt $frd6,$frn6 */
   1926      1.1  christos   {
   1927      1.1  christos     EPIPHANY_INSN_F_SQRTF32, "f_sqrtf32", "fsqrt", 32,
   1928      1.1  christos     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } } } }
   1929      1.1  christos   },
   1930      1.1  christos };
   1931      1.1  christos 
   1932      1.1  christos #undef OP
   1933      1.1  christos #undef A
   1934      1.1  christos 
   1935      1.1  christos /* Initialize anything needed to be done once, before any cpu_open call.  */
   1936      1.1  christos 
   1937      1.1  christos static void
   1938      1.1  christos init_tables (void)
   1939      1.1  christos {
   1940      1.1  christos }
   1941      1.1  christos 
   1942  1.1.1.5  christos #ifndef opcodes_error_handler
   1943  1.1.1.5  christos #define opcodes_error_handler(...) \
   1944  1.1.1.5  christos   fprintf (stderr, __VA_ARGS__); fputc ('\n', stderr)
   1945  1.1.1.5  christos #endif
   1946  1.1.1.5  christos 
   1947      1.1  christos static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
   1948      1.1  christos static void build_hw_table      (CGEN_CPU_TABLE *);
   1949      1.1  christos static void build_ifield_table  (CGEN_CPU_TABLE *);
   1950      1.1  christos static void build_operand_table (CGEN_CPU_TABLE *);
   1951      1.1  christos static void build_insn_table    (CGEN_CPU_TABLE *);
   1952      1.1  christos static void epiphany_cgen_rebuild_tables (CGEN_CPU_TABLE *);
   1953      1.1  christos 
   1954      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to look up a mach via its bfd name.  */
   1955      1.1  christos 
   1956      1.1  christos static const CGEN_MACH *
   1957      1.1  christos lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
   1958      1.1  christos {
   1959      1.1  christos   while (table->name)
   1960      1.1  christos     {
   1961      1.1  christos       if (strcmp (name, table->bfd_name) == 0)
   1962      1.1  christos 	return table;
   1963      1.1  christos       ++table;
   1964      1.1  christos     }
   1965  1.1.1.4  christos   return NULL;
   1966      1.1  christos }
   1967      1.1  christos 
   1968      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to build the hardware table.  */
   1969      1.1  christos 
   1970      1.1  christos static void
   1971      1.1  christos build_hw_table (CGEN_CPU_TABLE *cd)
   1972      1.1  christos {
   1973      1.1  christos   int i;
   1974      1.1  christos   int machs = cd->machs;
   1975      1.1  christos   const CGEN_HW_ENTRY *init = & epiphany_cgen_hw_table[0];
   1976      1.1  christos   /* MAX_HW is only an upper bound on the number of selected entries.
   1977      1.1  christos      However each entry is indexed by it's enum so there can be holes in
   1978      1.1  christos      the table.  */
   1979      1.1  christos   const CGEN_HW_ENTRY **selected =
   1980      1.1  christos     (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
   1981      1.1  christos 
   1982      1.1  christos   cd->hw_table.init_entries = init;
   1983      1.1  christos   cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
   1984      1.1  christos   memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
   1985      1.1  christos   /* ??? For now we just use machs to determine which ones we want.  */
   1986      1.1  christos   for (i = 0; init[i].name != NULL; ++i)
   1987      1.1  christos     if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
   1988      1.1  christos 	& machs)
   1989      1.1  christos       selected[init[i].type] = &init[i];
   1990      1.1  christos   cd->hw_table.entries = selected;
   1991      1.1  christos   cd->hw_table.num_entries = MAX_HW;
   1992      1.1  christos }
   1993      1.1  christos 
   1994      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to build the hardware table.  */
   1995      1.1  christos 
   1996      1.1  christos static void
   1997      1.1  christos build_ifield_table (CGEN_CPU_TABLE *cd)
   1998      1.1  christos {
   1999      1.1  christos   cd->ifld_table = & epiphany_cgen_ifld_table[0];
   2000      1.1  christos }
   2001      1.1  christos 
   2002      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to build the hardware table.  */
   2003      1.1  christos 
   2004      1.1  christos static void
   2005      1.1  christos build_operand_table (CGEN_CPU_TABLE *cd)
   2006      1.1  christos {
   2007      1.1  christos   int i;
   2008      1.1  christos   int machs = cd->machs;
   2009      1.1  christos   const CGEN_OPERAND *init = & epiphany_cgen_operand_table[0];
   2010      1.1  christos   /* MAX_OPERANDS is only an upper bound on the number of selected entries.
   2011      1.1  christos      However each entry is indexed by it's enum so there can be holes in
   2012      1.1  christos      the table.  */
   2013      1.1  christos   const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
   2014      1.1  christos 
   2015      1.1  christos   cd->operand_table.init_entries = init;
   2016      1.1  christos   cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
   2017      1.1  christos   memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
   2018      1.1  christos   /* ??? For now we just use mach to determine which ones we want.  */
   2019      1.1  christos   for (i = 0; init[i].name != NULL; ++i)
   2020      1.1  christos     if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
   2021      1.1  christos 	& machs)
   2022      1.1  christos       selected[init[i].type] = &init[i];
   2023      1.1  christos   cd->operand_table.entries = selected;
   2024      1.1  christos   cd->operand_table.num_entries = MAX_OPERANDS;
   2025      1.1  christos }
   2026      1.1  christos 
   2027      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to build the hardware table.
   2028      1.1  christos    ??? This could leave out insns not supported by the specified mach/isa,
   2029      1.1  christos    but that would cause errors like "foo only supported by bar" to become
   2030      1.1  christos    "unknown insn", so for now we include all insns and require the app to
   2031      1.1  christos    do the checking later.
   2032      1.1  christos    ??? On the other hand, parsing of such insns may require their hardware or
   2033      1.1  christos    operand elements to be in the table [which they mightn't be].  */
   2034      1.1  christos 
   2035      1.1  christos static void
   2036      1.1  christos build_insn_table (CGEN_CPU_TABLE *cd)
   2037      1.1  christos {
   2038      1.1  christos   int i;
   2039      1.1  christos   const CGEN_IBASE *ib = & epiphany_cgen_insn_table[0];
   2040      1.1  christos   CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
   2041      1.1  christos 
   2042      1.1  christos   memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
   2043      1.1  christos   for (i = 0; i < MAX_INSNS; ++i)
   2044      1.1  christos     insns[i].base = &ib[i];
   2045      1.1  christos   cd->insn_table.init_entries = insns;
   2046      1.1  christos   cd->insn_table.entry_size = sizeof (CGEN_IBASE);
   2047      1.1  christos   cd->insn_table.num_init_entries = MAX_INSNS;
   2048      1.1  christos }
   2049      1.1  christos 
   2050      1.1  christos /* Subroutine of epiphany_cgen_cpu_open to rebuild the tables.  */
   2051      1.1  christos 
   2052      1.1  christos static void
   2053      1.1  christos epiphany_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
   2054      1.1  christos {
   2055      1.1  christos   int i;
   2056      1.1  christos   CGEN_BITSET *isas = cd->isas;
   2057      1.1  christos   unsigned int machs = cd->machs;
   2058      1.1  christos 
   2059      1.1  christos   cd->int_insn_p = CGEN_INT_INSN_P;
   2060      1.1  christos 
   2061      1.1  christos   /* Data derived from the isa spec.  */
   2062      1.1  christos #define UNSET (CGEN_SIZE_UNKNOWN + 1)
   2063      1.1  christos   cd->default_insn_bitsize = UNSET;
   2064      1.1  christos   cd->base_insn_bitsize = UNSET;
   2065      1.1  christos   cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
   2066      1.1  christos   cd->max_insn_bitsize = 0;
   2067      1.1  christos   for (i = 0; i < MAX_ISAS; ++i)
   2068      1.1  christos     if (cgen_bitset_contains (isas, i))
   2069      1.1  christos       {
   2070      1.1  christos 	const CGEN_ISA *isa = & epiphany_cgen_isa_table[i];
   2071      1.1  christos 
   2072      1.1  christos 	/* Default insn sizes of all selected isas must be
   2073      1.1  christos 	   equal or we set the result to 0, meaning "unknown".  */
   2074      1.1  christos 	if (cd->default_insn_bitsize == UNSET)
   2075      1.1  christos 	  cd->default_insn_bitsize = isa->default_insn_bitsize;
   2076      1.1  christos 	else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
   2077      1.1  christos 	  ; /* This is ok.  */
   2078      1.1  christos 	else
   2079      1.1  christos 	  cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
   2080      1.1  christos 
   2081      1.1  christos 	/* Base insn sizes of all selected isas must be equal
   2082      1.1  christos 	   or we set the result to 0, meaning "unknown".  */
   2083      1.1  christos 	if (cd->base_insn_bitsize == UNSET)
   2084      1.1  christos 	  cd->base_insn_bitsize = isa->base_insn_bitsize;
   2085      1.1  christos 	else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
   2086      1.1  christos 	  ; /* This is ok.  */
   2087      1.1  christos 	else
   2088      1.1  christos 	  cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
   2089      1.1  christos 
   2090      1.1  christos 	/* Set min,max insn sizes.  */
   2091      1.1  christos 	if (isa->min_insn_bitsize < cd->min_insn_bitsize)
   2092      1.1  christos 	  cd->min_insn_bitsize = isa->min_insn_bitsize;
   2093      1.1  christos 	if (isa->max_insn_bitsize > cd->max_insn_bitsize)
   2094      1.1  christos 	  cd->max_insn_bitsize = isa->max_insn_bitsize;
   2095      1.1  christos       }
   2096      1.1  christos 
   2097      1.1  christos   /* Data derived from the mach spec.  */
   2098      1.1  christos   for (i = 0; i < MAX_MACHS; ++i)
   2099      1.1  christos     if (((1 << i) & machs) != 0)
   2100      1.1  christos       {
   2101      1.1  christos 	const CGEN_MACH *mach = & epiphany_cgen_mach_table[i];
   2102      1.1  christos 
   2103      1.1  christos 	if (mach->insn_chunk_bitsize != 0)
   2104      1.1  christos 	{
   2105      1.1  christos 	  if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
   2106      1.1  christos 	    {
   2107  1.1.1.5  christos 	      opcodes_error_handler
   2108  1.1.1.5  christos 		(/* xgettext:c-format */
   2109  1.1.1.5  christos 		 _("internal error: epiphany_cgen_rebuild_tables: "
   2110  1.1.1.5  christos 		   "conflicting insn-chunk-bitsize values: `%d' vs. `%d'"),
   2111  1.1.1.5  christos 		 cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
   2112      1.1  christos 	      abort ();
   2113      1.1  christos 	    }
   2114      1.1  christos 
   2115      1.1  christos  	  cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
   2116      1.1  christos 	}
   2117      1.1  christos       }
   2118      1.1  christos 
   2119      1.1  christos   /* Determine which hw elements are used by MACH.  */
   2120      1.1  christos   build_hw_table (cd);
   2121      1.1  christos 
   2122      1.1  christos   /* Build the ifield table.  */
   2123      1.1  christos   build_ifield_table (cd);
   2124      1.1  christos 
   2125      1.1  christos   /* Determine which operands are used by MACH/ISA.  */
   2126      1.1  christos   build_operand_table (cd);
   2127      1.1  christos 
   2128      1.1  christos   /* Build the instruction table.  */
   2129      1.1  christos   build_insn_table (cd);
   2130      1.1  christos }
   2131      1.1  christos 
   2132      1.1  christos /* Initialize a cpu table and return a descriptor.
   2133      1.1  christos    It's much like opening a file, and must be the first function called.
   2134      1.1  christos    The arguments are a set of (type/value) pairs, terminated with
   2135      1.1  christos    CGEN_CPU_OPEN_END.
   2136      1.1  christos 
   2137      1.1  christos    Currently supported values:
   2138      1.1  christos    CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
   2139      1.1  christos    CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
   2140      1.1  christos    CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
   2141      1.1  christos    CGEN_CPU_OPEN_ENDIAN:  specify endian choice
   2142  1.1.1.6  christos    CGEN_CPU_OPEN_INSN_ENDIAN: specify instruction endian choice
   2143      1.1  christos    CGEN_CPU_OPEN_END:     terminates arguments
   2144      1.1  christos 
   2145      1.1  christos    ??? Simultaneous multiple isas might not make sense, but it's not (yet)
   2146      1.1  christos    precluded.  */
   2147      1.1  christos 
   2148      1.1  christos CGEN_CPU_DESC
   2149      1.1  christos epiphany_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
   2150      1.1  christos {
   2151      1.1  christos   CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
   2152      1.1  christos   static int init_p;
   2153      1.1  christos   CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
   2154      1.1  christos   unsigned int machs = 0; /* 0 = "unspecified" */
   2155      1.1  christos   enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
   2156  1.1.1.6  christos   enum cgen_endian insn_endian = CGEN_ENDIAN_UNKNOWN;
   2157      1.1  christos   va_list ap;
   2158      1.1  christos 
   2159      1.1  christos   if (! init_p)
   2160      1.1  christos     {
   2161      1.1  christos       init_tables ();
   2162      1.1  christos       init_p = 1;
   2163      1.1  christos     }
   2164      1.1  christos 
   2165      1.1  christos   memset (cd, 0, sizeof (*cd));
   2166      1.1  christos 
   2167      1.1  christos   va_start (ap, arg_type);
   2168      1.1  christos   while (arg_type != CGEN_CPU_OPEN_END)
   2169      1.1  christos     {
   2170      1.1  christos       switch (arg_type)
   2171      1.1  christos 	{
   2172      1.1  christos 	case CGEN_CPU_OPEN_ISAS :
   2173      1.1  christos 	  isas = va_arg (ap, CGEN_BITSET *);
   2174      1.1  christos 	  break;
   2175      1.1  christos 	case CGEN_CPU_OPEN_MACHS :
   2176      1.1  christos 	  machs = va_arg (ap, unsigned int);
   2177      1.1  christos 	  break;
   2178      1.1  christos 	case CGEN_CPU_OPEN_BFDMACH :
   2179      1.1  christos 	  {
   2180      1.1  christos 	    const char *name = va_arg (ap, const char *);
   2181      1.1  christos 	    const CGEN_MACH *mach =
   2182      1.1  christos 	      lookup_mach_via_bfd_name (epiphany_cgen_mach_table, name);
   2183      1.1  christos 
   2184  1.1.1.4  christos 	    if (mach != NULL)
   2185  1.1.1.4  christos 	      machs |= 1 << mach->num;
   2186      1.1  christos 	    break;
   2187      1.1  christos 	  }
   2188      1.1  christos 	case CGEN_CPU_OPEN_ENDIAN :
   2189      1.1  christos 	  endian = va_arg (ap, enum cgen_endian);
   2190      1.1  christos 	  break;
   2191  1.1.1.6  christos 	case CGEN_CPU_OPEN_INSN_ENDIAN :
   2192  1.1.1.6  christos 	  insn_endian = va_arg (ap, enum cgen_endian);
   2193  1.1.1.6  christos 	  break;
   2194      1.1  christos 	default :
   2195  1.1.1.5  christos 	  opcodes_error_handler
   2196  1.1.1.5  christos 	    (/* xgettext:c-format */
   2197  1.1.1.5  christos 	     _("internal error: epiphany_cgen_cpu_open: "
   2198  1.1.1.5  christos 	       "unsupported argument `%d'"),
   2199  1.1.1.5  christos 	     arg_type);
   2200      1.1  christos 	  abort (); /* ??? return NULL? */
   2201      1.1  christos 	}
   2202      1.1  christos       arg_type = va_arg (ap, enum cgen_cpu_open_arg);
   2203      1.1  christos     }
   2204      1.1  christos   va_end (ap);
   2205      1.1  christos 
   2206      1.1  christos   /* Mach unspecified means "all".  */
   2207      1.1  christos   if (machs == 0)
   2208      1.1  christos     machs = (1 << MAX_MACHS) - 1;
   2209      1.1  christos   /* Base mach is always selected.  */
   2210      1.1  christos   machs |= 1;
   2211      1.1  christos   if (endian == CGEN_ENDIAN_UNKNOWN)
   2212      1.1  christos     {
   2213      1.1  christos       /* ??? If target has only one, could have a default.  */
   2214  1.1.1.5  christos       opcodes_error_handler
   2215  1.1.1.5  christos 	(/* xgettext:c-format */
   2216  1.1.1.5  christos 	 _("internal error: epiphany_cgen_cpu_open: no endianness specified"));
   2217      1.1  christos       abort ();
   2218      1.1  christos     }
   2219      1.1  christos 
   2220      1.1  christos   cd->isas = cgen_bitset_copy (isas);
   2221      1.1  christos   cd->machs = machs;
   2222      1.1  christos   cd->endian = endian;
   2223  1.1.1.6  christos   cd->insn_endian
   2224  1.1.1.6  christos     = (insn_endian == CGEN_ENDIAN_UNKNOWN ? endian : insn_endian);
   2225      1.1  christos 
   2226      1.1  christos   /* Table (re)builder.  */
   2227      1.1  christos   cd->rebuild_tables = epiphany_cgen_rebuild_tables;
   2228      1.1  christos   epiphany_cgen_rebuild_tables (cd);
   2229      1.1  christos 
   2230      1.1  christos   /* Default to not allowing signed overflow.  */
   2231      1.1  christos   cd->signed_overflow_ok_p = 0;
   2232  1.1.1.3  christos 
   2233      1.1  christos   return (CGEN_CPU_DESC) cd;
   2234      1.1  christos }
   2235      1.1  christos 
   2236      1.1  christos /* Cover fn to epiphany_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
   2237      1.1  christos    MACH_NAME is the bfd name of the mach.  */
   2238      1.1  christos 
   2239      1.1  christos CGEN_CPU_DESC
   2240      1.1  christos epiphany_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
   2241      1.1  christos {
   2242      1.1  christos   return epiphany_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
   2243      1.1  christos 			       CGEN_CPU_OPEN_ENDIAN, endian,
   2244      1.1  christos 			       CGEN_CPU_OPEN_END);
   2245      1.1  christos }
   2246      1.1  christos 
   2247      1.1  christos /* Close a cpu table.
   2248      1.1  christos    ??? This can live in a machine independent file, but there's currently
   2249      1.1  christos    no place to put this file (there's no libcgen).  libopcodes is the wrong
   2250      1.1  christos    place as some simulator ports use this but they don't use libopcodes.  */
   2251      1.1  christos 
   2252      1.1  christos void
   2253      1.1  christos epiphany_cgen_cpu_close (CGEN_CPU_DESC cd)
   2254      1.1  christos {
   2255      1.1  christos   unsigned int i;
   2256      1.1  christos   const CGEN_INSN *insns;
   2257      1.1  christos 
   2258      1.1  christos   if (cd->macro_insn_table.init_entries)
   2259      1.1  christos     {
   2260      1.1  christos       insns = cd->macro_insn_table.init_entries;
   2261      1.1  christos       for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
   2262      1.1  christos 	if (CGEN_INSN_RX ((insns)))
   2263      1.1  christos 	  regfree (CGEN_INSN_RX (insns));
   2264      1.1  christos     }
   2265      1.1  christos 
   2266      1.1  christos   if (cd->insn_table.init_entries)
   2267      1.1  christos     {
   2268      1.1  christos       insns = cd->insn_table.init_entries;
   2269      1.1  christos       for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
   2270      1.1  christos 	if (CGEN_INSN_RX (insns))
   2271      1.1  christos 	  regfree (CGEN_INSN_RX (insns));
   2272  1.1.1.3  christos     }
   2273      1.1  christos 
   2274  1.1.1.6  christos   free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
   2275  1.1.1.6  christos   free ((CGEN_INSN *) cd->insn_table.init_entries);
   2276  1.1.1.6  christos   free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
   2277  1.1.1.6  christos   free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
   2278      1.1  christos   free (cd);
   2279      1.1  christos }
   2280      1.1  christos 
   2281