Home | History | Annotate | Line # | Download | only in opcodes
iq2000-desc.c revision 1.8
      1  1.8  christos /* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
      2  1.1  christos /* CPU data for iq2000.
      3  1.1  christos 
      4  1.1  christos THIS FILE IS MACHINE GENERATED WITH CGEN.
      5  1.1  christos 
      6  1.8  christos Copyright (C) 1996-2019 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 "iq2000-desc.h"
     33  1.1  christos #include "iq2000-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   { "iq2000", MACH_IQ2000 },
     51  1.1  christos   { "iq10", MACH_IQ10 },
     52  1.1  christos   { "max", MACH_MAX },
     53  1.1  christos   { 0, 0 }
     54  1.1  christos };
     55  1.1  christos 
     56  1.1  christos static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
     57  1.1  christos {
     58  1.1  christos   { "iq2000", ISA_IQ2000 },
     59  1.1  christos   { "max", ISA_MAX },
     60  1.1  christos   { 0, 0 }
     61  1.1  christos };
     62  1.1  christos 
     63  1.1  christos const CGEN_ATTR_TABLE iq2000_cgen_ifield_attr_table[] =
     64  1.1  christos {
     65  1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
     66  1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
     67  1.1  christos   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
     68  1.1  christos   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
     69  1.1  christos   { "RESERVED", &bool_attr[0], &bool_attr[0] },
     70  1.1  christos   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
     71  1.1  christos   { "SIGNED", &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 iq2000_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 iq2000_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   { 0, 0, 0 }
     97  1.1  christos };
     98  1.1  christos 
     99  1.1  christos const CGEN_ATTR_TABLE iq2000_cgen_insn_attr_table[] =
    100  1.1  christos {
    101  1.1  christos   { "MACH", & MACH_attr[0], & MACH_attr[0] },
    102  1.1  christos   { "ALIAS", &bool_attr[0], &bool_attr[0] },
    103  1.1  christos   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
    104  1.1  christos   { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
    105  1.1  christos   { "COND-CTI", &bool_attr[0], &bool_attr[0] },
    106  1.1  christos   { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
    107  1.1  christos   { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
    108  1.1  christos   { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
    109  1.1  christos   { "RELAXED", &bool_attr[0], &bool_attr[0] },
    110  1.1  christos   { "NO-DIS", &bool_attr[0], &bool_attr[0] },
    111  1.1  christos   { "PBB", &bool_attr[0], &bool_attr[0] },
    112  1.1  christos   { "YIELD-INSN", &bool_attr[0], &bool_attr[0] },
    113  1.1  christos   { "LOAD-DELAY", &bool_attr[0], &bool_attr[0] },
    114  1.1  christos   { "EVEN-REG-NUM", &bool_attr[0], &bool_attr[0] },
    115  1.1  christos   { "UNSUPPORTED", &bool_attr[0], &bool_attr[0] },
    116  1.1  christos   { "USES-RD", &bool_attr[0], &bool_attr[0] },
    117  1.1  christos   { "USES-RS", &bool_attr[0], &bool_attr[0] },
    118  1.1  christos   { "USES-RT", &bool_attr[0], &bool_attr[0] },
    119  1.1  christos   { "USES-R31", &bool_attr[0], &bool_attr[0] },
    120  1.1  christos   { 0, 0, 0 }
    121  1.1  christos };
    122  1.1  christos 
    123  1.1  christos /* Instruction set variants.  */
    124  1.1  christos 
    125  1.1  christos static const CGEN_ISA iq2000_cgen_isa_table[] = {
    126  1.1  christos   { "iq2000", 32, 32, 32, 32 },
    127  1.1  christos   { 0, 0, 0, 0, 0 }
    128  1.1  christos };
    129  1.1  christos 
    130  1.1  christos /* Machine variants.  */
    131  1.1  christos 
    132  1.1  christos static const CGEN_MACH iq2000_cgen_mach_table[] = {
    133  1.1  christos   { "iq2000", "iq2000", MACH_IQ2000, 0 },
    134  1.1  christos   { "iq10", "iq10", MACH_IQ10, 0 },
    135  1.1  christos   { 0, 0, 0, 0 }
    136  1.1  christos };
    137  1.1  christos 
    138  1.1  christos static CGEN_KEYWORD_ENTRY iq2000_cgen_opval_gr_names_entries[] =
    139  1.1  christos {
    140  1.1  christos   { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
    141  1.1  christos   { "%0", 0, {0, {{{0, 0}}}}, 0, 0 },
    142  1.1  christos   { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
    143  1.1  christos   { "%1", 1, {0, {{{0, 0}}}}, 0, 0 },
    144  1.1  christos   { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
    145  1.1  christos   { "%2", 2, {0, {{{0, 0}}}}, 0, 0 },
    146  1.1  christos   { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
    147  1.1  christos   { "%3", 3, {0, {{{0, 0}}}}, 0, 0 },
    148  1.1  christos   { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
    149  1.1  christos   { "%4", 4, {0, {{{0, 0}}}}, 0, 0 },
    150  1.1  christos   { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
    151  1.1  christos   { "%5", 5, {0, {{{0, 0}}}}, 0, 0 },
    152  1.1  christos   { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
    153  1.1  christos   { "%6", 6, {0, {{{0, 0}}}}, 0, 0 },
    154  1.1  christos   { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
    155  1.1  christos   { "%7", 7, {0, {{{0, 0}}}}, 0, 0 },
    156  1.1  christos   { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
    157  1.1  christos   { "%8", 8, {0, {{{0, 0}}}}, 0, 0 },
    158  1.1  christos   { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
    159  1.1  christos   { "%9", 9, {0, {{{0, 0}}}}, 0, 0 },
    160  1.1  christos   { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
    161  1.1  christos   { "%10", 10, {0, {{{0, 0}}}}, 0, 0 },
    162  1.1  christos   { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
    163  1.1  christos   { "%11", 11, {0, {{{0, 0}}}}, 0, 0 },
    164  1.1  christos   { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
    165  1.1  christos   { "%12", 12, {0, {{{0, 0}}}}, 0, 0 },
    166  1.1  christos   { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
    167  1.1  christos   { "%13", 13, {0, {{{0, 0}}}}, 0, 0 },
    168  1.1  christos   { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
    169  1.1  christos   { "%14", 14, {0, {{{0, 0}}}}, 0, 0 },
    170  1.1  christos   { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
    171  1.1  christos   { "%15", 15, {0, {{{0, 0}}}}, 0, 0 },
    172  1.1  christos   { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
    173  1.1  christos   { "%16", 16, {0, {{{0, 0}}}}, 0, 0 },
    174  1.1  christos   { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
    175  1.1  christos   { "%17", 17, {0, {{{0, 0}}}}, 0, 0 },
    176  1.1  christos   { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
    177  1.1  christos   { "%18", 18, {0, {{{0, 0}}}}, 0, 0 },
    178  1.1  christos   { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
    179  1.1  christos   { "%19", 19, {0, {{{0, 0}}}}, 0, 0 },
    180  1.1  christos   { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
    181  1.1  christos   { "%20", 20, {0, {{{0, 0}}}}, 0, 0 },
    182  1.1  christos   { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
    183  1.1  christos   { "%21", 21, {0, {{{0, 0}}}}, 0, 0 },
    184  1.1  christos   { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
    185  1.1  christos   { "%22", 22, {0, {{{0, 0}}}}, 0, 0 },
    186  1.1  christos   { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
    187  1.1  christos   { "%23", 23, {0, {{{0, 0}}}}, 0, 0 },
    188  1.1  christos   { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
    189  1.1  christos   { "%24", 24, {0, {{{0, 0}}}}, 0, 0 },
    190  1.1  christos   { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
    191  1.1  christos   { "%25", 25, {0, {{{0, 0}}}}, 0, 0 },
    192  1.1  christos   { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
    193  1.1  christos   { "%26", 26, {0, {{{0, 0}}}}, 0, 0 },
    194  1.1  christos   { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
    195  1.1  christos   { "%27", 27, {0, {{{0, 0}}}}, 0, 0 },
    196  1.1  christos   { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
    197  1.1  christos   { "%28", 28, {0, {{{0, 0}}}}, 0, 0 },
    198  1.1  christos   { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
    199  1.1  christos   { "%29", 29, {0, {{{0, 0}}}}, 0, 0 },
    200  1.1  christos   { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
    201  1.1  christos   { "%30", 30, {0, {{{0, 0}}}}, 0, 0 },
    202  1.1  christos   { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
    203  1.1  christos   { "%31", 31, {0, {{{0, 0}}}}, 0, 0 }
    204  1.1  christos };
    205  1.1  christos 
    206  1.1  christos CGEN_KEYWORD iq2000_cgen_opval_gr_names =
    207  1.1  christos {
    208  1.1  christos   & iq2000_cgen_opval_gr_names_entries[0],
    209  1.1  christos   64,
    210  1.1  christos   0, 0, 0, 0, ""
    211  1.1  christos };
    212  1.1  christos 
    213  1.1  christos 
    214  1.1  christos /* The hardware table.  */
    215  1.1  christos 
    216  1.1  christos #define A(a) (1 << CGEN_HW_##a)
    217  1.1  christos 
    218  1.1  christos const CGEN_HW_ENTRY iq2000_cgen_hw_table[] =
    219  1.1  christos {
    220  1.1  christos   { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    221  1.1  christos   { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    222  1.1  christos   { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    223  1.1  christos   { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    224  1.1  christos   { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    225  1.1  christos   { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
    226  1.1  christos   { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & iq2000_cgen_opval_gr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    227  1.1  christos   { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
    228  1.1  christos };
    229  1.1  christos 
    230  1.1  christos #undef A
    231  1.1  christos 
    232  1.1  christos 
    233  1.1  christos /* The instruction field table.  */
    234  1.1  christos 
    235  1.1  christos #define A(a) (1 << CGEN_IFLD_##a)
    236  1.1  christos 
    237  1.1  christos const CGEN_IFLD iq2000_cgen_ifld_table[] =
    238  1.1  christos {
    239  1.1  christos   { IQ2000_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    240  1.1  christos   { IQ2000_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    241  1.1  christos   { IQ2000_F_OPCODE, "f-opcode", 0, 32, 31, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    242  1.1  christos   { IQ2000_F_RS, "f-rs", 0, 32, 25, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    243  1.1  christos   { IQ2000_F_RT, "f-rt", 0, 32, 20, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    244  1.1  christos   { IQ2000_F_RD, "f-rd", 0, 32, 15, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    245  1.1  christos   { IQ2000_F_SHAMT, "f-shamt", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    246  1.1  christos   { IQ2000_F_CP_OP, "f-cp-op", 0, 32, 10, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    247  1.1  christos   { IQ2000_F_CP_OP_10, "f-cp-op-10", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    248  1.1  christos   { IQ2000_F_CP_GRP, "f-cp-grp", 0, 32, 7, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    249  1.1  christos   { IQ2000_F_FUNC, "f-func", 0, 32, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    250  1.1  christos   { IQ2000_F_IMM, "f-imm", 0, 32, 15, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    251  1.1  christos   { IQ2000_F_RD_RS, "f-rd-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    252  1.1  christos   { IQ2000_F_RD_RT, "f-rd-rt", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    253  1.1  christos   { IQ2000_F_RT_RS, "f-rt-rs", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    254  1.1  christos   { IQ2000_F_JTARG, "f-jtarg", 0, 32, 15, 16, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    255  1.1  christos   { IQ2000_F_JTARGQ10, "f-jtargq10", 0, 32, 20, 21, { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    256  1.1  christos   { IQ2000_F_OFFSET, "f-offset", 0, 32, 15, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    257  1.1  christos   { IQ2000_F_COUNT, "f-count", 0, 32, 15, 7, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    258  1.1  christos   { IQ2000_F_BYTECOUNT, "f-bytecount", 0, 32, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    259  1.1  christos   { IQ2000_F_INDEX, "f-index", 0, 32, 8, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    260  1.1  christos   { IQ2000_F_MASK, "f-mask", 0, 32, 9, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    261  1.1  christos   { IQ2000_F_MASKQ10, "f-maskq10", 0, 32, 10, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    262  1.1  christos   { IQ2000_F_MASKL, "f-maskl", 0, 32, 4, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    263  1.1  christos   { IQ2000_F_EXCODE, "f-excode", 0, 32, 25, 20, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    264  1.1  christos   { IQ2000_F_RSRVD, "f-rsrvd", 0, 32, 25, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    265  1.1  christos   { IQ2000_F_10_11, "f-10-11", 0, 32, 10, 11, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    266  1.1  christos   { IQ2000_F_24_19, "f-24-19", 0, 32, 24, 19, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    267  1.1  christos   { IQ2000_F_5, "f-5", 0, 32, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    268  1.1  christos   { IQ2000_F_10, "f-10", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    269  1.1  christos   { IQ2000_F_25, "f-25", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    270  1.1  christos   { IQ2000_F_CAM_Z, "f-cam-z", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    271  1.1  christos   { IQ2000_F_CAM_Y, "f-cam-y", 0, 32, 2, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    272  1.1  christos   { IQ2000_F_CM_3FUNC, "f-cm-3func", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    273  1.1  christos   { IQ2000_F_CM_4FUNC, "f-cm-4func", 0, 32, 5, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    274  1.1  christos   { IQ2000_F_CM_3Z, "f-cm-3z", 0, 32, 1, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    275  1.1  christos   { IQ2000_F_CM_4Z, "f-cm-4z", 0, 32, 2, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    276  1.1  christos   { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
    277  1.1  christos };
    278  1.1  christos 
    279  1.1  christos #undef A
    280  1.1  christos 
    281  1.1  christos 
    282  1.1  christos 
    283  1.1  christos /* multi ifield declarations */
    284  1.1  christos 
    285  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RS_MULTI_IFIELD [];
    286  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RT_MULTI_IFIELD [];
    287  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RT_RS_MULTI_IFIELD [];
    288  1.1  christos 
    289  1.1  christos 
    290  1.1  christos /* multi ifield definitions */
    291  1.1  christos 
    292  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RS_MULTI_IFIELD [] =
    293  1.1  christos {
    294  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RD] } },
    295  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } },
    296  1.1  christos     { 0, { (const PTR) 0 } }
    297  1.1  christos };
    298  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RD_RT_MULTI_IFIELD [] =
    299  1.1  christos {
    300  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RD] } },
    301  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } },
    302  1.1  christos     { 0, { (const PTR) 0 } }
    303  1.1  christos };
    304  1.1  christos const CGEN_MAYBE_MULTI_IFLD IQ2000_F_RT_RS_MULTI_IFIELD [] =
    305  1.1  christos {
    306  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } },
    307  1.1  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } },
    308  1.1  christos     { 0, { (const PTR) 0 } }
    309  1.1  christos };
    310  1.1  christos 
    311  1.1  christos /* The operand table.  */
    312  1.1  christos 
    313  1.1  christos #define A(a) (1 << CGEN_OPERAND_##a)
    314  1.1  christos #define OPERAND(op) IQ2000_OPERAND_##op
    315  1.1  christos 
    316  1.1  christos const CGEN_OPERAND iq2000_cgen_operand_table[] =
    317  1.1  christos {
    318  1.1  christos /* pc: program counter */
    319  1.1  christos   { "pc", IQ2000_OPERAND_PC, HW_H_PC, 0, 0,
    320  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_NIL] } },
    321  1.1  christos     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
    322  1.1  christos /* rs: register Rs */
    323  1.1  christos   { "rs", IQ2000_OPERAND_RS, HW_H_GR, 25, 5,
    324  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } },
    325  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    326  1.1  christos /* rt: register Rt */
    327  1.1  christos   { "rt", IQ2000_OPERAND_RT, HW_H_GR, 20, 5,
    328  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } },
    329  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    330  1.1  christos /* rd: register Rd */
    331  1.1  christos   { "rd", IQ2000_OPERAND_RD, HW_H_GR, 15, 5,
    332  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RD] } },
    333  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    334  1.1  christos /* rd-rs: register Rd from Rs */
    335  1.1  christos   { "rd-rs", IQ2000_OPERAND_RD_RS, HW_H_GR, 15, 10,
    336  1.6  christos     { 2, { (const PTR) &IQ2000_F_RD_RS_MULTI_IFIELD[0] } },
    337  1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    338  1.1  christos /* rd-rt: register Rd from Rt */
    339  1.1  christos   { "rd-rt", IQ2000_OPERAND_RD_RT, HW_H_GR, 15, 10,
    340  1.6  christos     { 2, { (const PTR) &IQ2000_F_RD_RT_MULTI_IFIELD[0] } },
    341  1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    342  1.1  christos /* rt-rs: register Rt from Rs */
    343  1.1  christos   { "rt-rs", IQ2000_OPERAND_RT_RS, HW_H_GR, 20, 10,
    344  1.6  christos     { 2, { (const PTR) &IQ2000_F_RT_RS_MULTI_IFIELD[0] } },
    345  1.1  christos     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
    346  1.1  christos /* shamt: shift amount */
    347  1.1  christos   { "shamt", IQ2000_OPERAND_SHAMT, HW_H_UINT, 10, 5,
    348  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_SHAMT] } },
    349  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    350  1.1  christos /* imm: immediate */
    351  1.1  christos   { "imm", IQ2000_OPERAND_IMM, HW_H_UINT, 15, 16,
    352  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } },
    353  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    354  1.1  christos /* offset: pc-relative offset */
    355  1.1  christos   { "offset", IQ2000_OPERAND_OFFSET, HW_H_IADDR, 15, 16,
    356  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_OFFSET] } },
    357  1.1  christos     { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    358  1.1  christos /* baseoff: base register offset */
    359  1.1  christos   { "baseoff", IQ2000_OPERAND_BASEOFF, HW_H_IADDR, 15, 16,
    360  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } },
    361  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    362  1.1  christos /* jmptarg: jump target */
    363  1.1  christos   { "jmptarg", IQ2000_OPERAND_JMPTARG, HW_H_IADDR, 15, 16,
    364  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_JTARG] } },
    365  1.1  christos     { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    366  1.1  christos /* mask: mask */
    367  1.1  christos   { "mask", IQ2000_OPERAND_MASK, HW_H_UINT, 9, 4,
    368  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASK] } },
    369  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    370  1.1  christos /* maskq10: iq10 mask */
    371  1.1  christos   { "maskq10", IQ2000_OPERAND_MASKQ10, HW_H_UINT, 10, 5,
    372  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASKQ10] } },
    373  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    374  1.1  christos /* maskl: mask left */
    375  1.1  christos   { "maskl", IQ2000_OPERAND_MASKL, HW_H_UINT, 4, 5,
    376  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_MASKL] } },
    377  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    378  1.1  christos /* count: count */
    379  1.1  christos   { "count", IQ2000_OPERAND_COUNT, HW_H_UINT, 15, 7,
    380  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_COUNT] } },
    381  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    382  1.1  christos /* _index: index */
    383  1.1  christos   { "_index", IQ2000_OPERAND__INDEX, HW_H_UINT, 8, 9,
    384  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_INDEX] } },
    385  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    386  1.1  christos /* execode: execcode */
    387  1.1  christos   { "execode", IQ2000_OPERAND_EXECODE, HW_H_UINT, 25, 20,
    388  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_EXCODE] } },
    389  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    390  1.1  christos /* bytecount: byte count */
    391  1.1  christos   { "bytecount", IQ2000_OPERAND_BYTECOUNT, HW_H_UINT, 7, 8,
    392  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_BYTECOUNT] } },
    393  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    394  1.1  christos /* cam-y: cam global opn y */
    395  1.1  christos   { "cam-y", IQ2000_OPERAND_CAM_Y, HW_H_UINT, 2, 3,
    396  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CAM_Y] } },
    397  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    398  1.1  christos /* cam-z: cam global mask z */
    399  1.1  christos   { "cam-z", IQ2000_OPERAND_CAM_Z, HW_H_UINT, 5, 3,
    400  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CAM_Z] } },
    401  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    402  1.1  christos /* cm-3func: CM 3 bit fn field */
    403  1.1  christos   { "cm-3func", IQ2000_OPERAND_CM_3FUNC, HW_H_UINT, 5, 3,
    404  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_3FUNC] } },
    405  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    406  1.1  christos /* cm-4func: CM 4 bit fn field */
    407  1.1  christos   { "cm-4func", IQ2000_OPERAND_CM_4FUNC, HW_H_UINT, 5, 4,
    408  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_4FUNC] } },
    409  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    410  1.1  christos /* cm-3z: CM 3 bit Z field */
    411  1.1  christos   { "cm-3z", IQ2000_OPERAND_CM_3Z, HW_H_UINT, 1, 2,
    412  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_3Z] } },
    413  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    414  1.1  christos /* cm-4z: CM 4 bit Z field */
    415  1.1  christos   { "cm-4z", IQ2000_OPERAND_CM_4Z, HW_H_UINT, 2, 3,
    416  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_CM_4Z] } },
    417  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    418  1.1  christos /* base: base register */
    419  1.1  christos   { "base", IQ2000_OPERAND_BASE, HW_H_GR, 25, 5,
    420  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } },
    421  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    422  1.1  christos /* maskr: mask right */
    423  1.1  christos   { "maskr", IQ2000_OPERAND_MASKR, HW_H_UINT, 25, 5,
    424  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RS] } },
    425  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    426  1.1  christos /* bitnum: bit number */
    427  1.1  christos   { "bitnum", IQ2000_OPERAND_BITNUM, HW_H_UINT, 20, 5,
    428  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_RT] } },
    429  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    430  1.1  christos /* hi16: high 16 bit immediate */
    431  1.1  christos   { "hi16", IQ2000_OPERAND_HI16, HW_H_UINT, 15, 16,
    432  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } },
    433  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    434  1.1  christos /* lo16: 16 bit signed immediate, for low */
    435  1.1  christos   { "lo16", IQ2000_OPERAND_LO16, HW_H_UINT, 15, 16,
    436  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } },
    437  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    438  1.1  christos /* mlo16: negated 16 bit signed immediate */
    439  1.1  christos   { "mlo16", IQ2000_OPERAND_MLO16, HW_H_UINT, 15, 16,
    440  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_IMM] } },
    441  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }  },
    442  1.1  christos /* jmptargq10: iq10 21-bit jump offset */
    443  1.1  christos   { "jmptargq10", IQ2000_OPERAND_JMPTARGQ10, HW_H_IADDR, 20, 21,
    444  1.6  christos     { 0, { (const PTR) &iq2000_cgen_ifld_table[IQ2000_F_JTARGQ10] } },
    445  1.1  christos     { 0|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
    446  1.1  christos /* sentinel */
    447  1.1  christos   { 0, 0, 0, 0, 0,
    448  1.1  christos     { 0, { (const PTR) 0 } },
    449  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } } }
    450  1.1  christos };
    451  1.1  christos 
    452  1.1  christos #undef A
    453  1.1  christos 
    454  1.1  christos 
    455  1.1  christos /* The instruction table.  */
    456  1.1  christos 
    457  1.1  christos #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
    458  1.1  christos #define A(a) (1 << CGEN_INSN_##a)
    459  1.1  christos 
    460  1.1  christos static const CGEN_IBASE iq2000_cgen_insn_table[MAX_INSNS] =
    461  1.1  christos {
    462  1.1  christos   /* Special null first entry.
    463  1.1  christos      A `num' value of zero is thus invalid.
    464  1.1  christos      Also, the special `invalid' insn resides here.  */
    465  1.1  christos   { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
    466  1.1  christos /* add ${rd-rs},$rt */
    467  1.1  christos   {
    468  1.1  christos     -1, "add2", "add", 32,
    469  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    470  1.1  christos   },
    471  1.1  christos /* add $rd,$rs,$rt */
    472  1.1  christos   {
    473  1.1  christos     IQ2000_INSN_ADD, "add", "add", 32,
    474  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    475  1.1  christos   },
    476  1.1  christos /* addi ${rt-rs},$lo16 */
    477  1.1  christos   {
    478  1.1  christos     -1, "addi2", "addi", 32,
    479  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    480  1.1  christos   },
    481  1.1  christos /* addi $rt,$rs,$lo16 */
    482  1.1  christos   {
    483  1.1  christos     IQ2000_INSN_ADDI, "addi", "addi", 32,
    484  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    485  1.1  christos   },
    486  1.1  christos /* addiu ${rt-rs},$lo16 */
    487  1.1  christos   {
    488  1.1  christos     -1, "addiu2", "addiu", 32,
    489  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    490  1.1  christos   },
    491  1.1  christos /* addiu $rt,$rs,$lo16 */
    492  1.1  christos   {
    493  1.1  christos     IQ2000_INSN_ADDIU, "addiu", "addiu", 32,
    494  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    495  1.1  christos   },
    496  1.1  christos /* addu ${rd-rs},$rt */
    497  1.1  christos   {
    498  1.1  christos     -1, "addu2", "addu", 32,
    499  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    500  1.1  christos   },
    501  1.1  christos /* addu $rd,$rs,$rt */
    502  1.1  christos   {
    503  1.1  christos     IQ2000_INSN_ADDU, "addu", "addu", 32,
    504  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    505  1.1  christos   },
    506  1.1  christos /* ado16 ${rd-rs},$rt */
    507  1.1  christos   {
    508  1.1  christos     -1, "ado162", "ado16", 32,
    509  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    510  1.1  christos   },
    511  1.1  christos /* ado16 $rd,$rs,$rt */
    512  1.1  christos   {
    513  1.1  christos     IQ2000_INSN_ADO16, "ado16", "ado16", 32,
    514  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    515  1.1  christos   },
    516  1.1  christos /* and ${rd-rs},$rt */
    517  1.1  christos   {
    518  1.1  christos     -1, "and2", "and", 32,
    519  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    520  1.1  christos   },
    521  1.1  christos /* and $rd,$rs,$rt */
    522  1.1  christos   {
    523  1.1  christos     IQ2000_INSN_AND, "and", "and", 32,
    524  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    525  1.1  christos   },
    526  1.1  christos /* andi ${rt-rs},$lo16 */
    527  1.1  christos   {
    528  1.1  christos     -1, "andi2", "andi", 32,
    529  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    530  1.1  christos   },
    531  1.1  christos /* andi $rt,$rs,$lo16 */
    532  1.1  christos   {
    533  1.1  christos     IQ2000_INSN_ANDI, "andi", "andi", 32,
    534  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    535  1.1  christos   },
    536  1.1  christos /* andoi ${rt-rs},$lo16 */
    537  1.1  christos   {
    538  1.1  christos     -1, "andoi2", "andoi", 32,
    539  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    540  1.1  christos   },
    541  1.1  christos /* andoi $rt,$rs,$lo16 */
    542  1.1  christos   {
    543  1.1  christos     IQ2000_INSN_ANDOI, "andoi", "andoi", 32,
    544  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    545  1.1  christos   },
    546  1.1  christos /* nor ${rd-rs},$rt */
    547  1.1  christos   {
    548  1.1  christos     -1, "nor2", "nor", 32,
    549  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    550  1.1  christos   },
    551  1.1  christos /* nor $rd,$rs,$rt */
    552  1.1  christos   {
    553  1.1  christos     IQ2000_INSN_NOR, "nor", "nor", 32,
    554  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    555  1.1  christos   },
    556  1.1  christos /* or ${rd-rs},$rt */
    557  1.1  christos   {
    558  1.1  christos     -1, "or2", "or", 32,
    559  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    560  1.1  christos   },
    561  1.1  christos /* or $rd,$rs,$rt */
    562  1.1  christos   {
    563  1.1  christos     IQ2000_INSN_OR, "or", "or", 32,
    564  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    565  1.1  christos   },
    566  1.1  christos /* ori ${rt-rs},$lo16 */
    567  1.1  christos   {
    568  1.1  christos     -1, "ori2", "ori", 32,
    569  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    570  1.1  christos   },
    571  1.1  christos /* ori $rt,$rs,$lo16 */
    572  1.1  christos   {
    573  1.1  christos     IQ2000_INSN_ORI, "ori", "ori", 32,
    574  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    575  1.1  christos   },
    576  1.1  christos /* ram $rd,$rt,$shamt,$maskl,$maskr */
    577  1.1  christos   {
    578  1.1  christos     IQ2000_INSN_RAM, "ram", "ram", 32,
    579  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    580  1.1  christos   },
    581  1.1  christos /* sll $rd,$rt,$shamt */
    582  1.1  christos   {
    583  1.1  christos     IQ2000_INSN_SLL, "sll", "sll", 32,
    584  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    585  1.1  christos   },
    586  1.1  christos /* sllv ${rd-rt},$rs */
    587  1.1  christos   {
    588  1.1  christos     -1, "sllv2", "sllv", 32,
    589  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    590  1.1  christos   },
    591  1.1  christos /* sllv $rd,$rt,$rs */
    592  1.1  christos   {
    593  1.1  christos     IQ2000_INSN_SLLV, "sllv", "sllv", 32,
    594  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    595  1.1  christos   },
    596  1.1  christos /* slmv ${rd-rt},$rs,$shamt */
    597  1.1  christos   {
    598  1.1  christos     -1, "slmv2", "slmv", 32,
    599  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    600  1.1  christos   },
    601  1.1  christos /* slmv $rd,$rt,$rs,$shamt */
    602  1.1  christos   {
    603  1.1  christos     IQ2000_INSN_SLMV, "slmv", "slmv", 32,
    604  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    605  1.1  christos   },
    606  1.1  christos /* slt ${rd-rs},$rt */
    607  1.1  christos   {
    608  1.1  christos     -1, "slt2", "slt", 32,
    609  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    610  1.1  christos   },
    611  1.1  christos /* slt $rd,$rs,$rt */
    612  1.1  christos   {
    613  1.1  christos     IQ2000_INSN_SLT, "slt", "slt", 32,
    614  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    615  1.1  christos   },
    616  1.1  christos /* slti ${rt-rs},$imm */
    617  1.1  christos   {
    618  1.1  christos     -1, "slti2", "slti", 32,
    619  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    620  1.1  christos   },
    621  1.1  christos /* slti $rt,$rs,$imm */
    622  1.1  christos   {
    623  1.1  christos     IQ2000_INSN_SLTI, "slti", "slti", 32,
    624  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    625  1.1  christos   },
    626  1.1  christos /* sltiu ${rt-rs},$imm */
    627  1.1  christos   {
    628  1.1  christos     -1, "sltiu2", "sltiu", 32,
    629  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    630  1.1  christos   },
    631  1.1  christos /* sltiu $rt,$rs,$imm */
    632  1.1  christos   {
    633  1.1  christos     IQ2000_INSN_SLTIU, "sltiu", "sltiu", 32,
    634  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    635  1.1  christos   },
    636  1.1  christos /* sltu ${rd-rs},$rt */
    637  1.1  christos   {
    638  1.1  christos     -1, "sltu2", "sltu", 32,
    639  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    640  1.1  christos   },
    641  1.1  christos /* sltu $rd,$rs,$rt */
    642  1.1  christos   {
    643  1.1  christos     IQ2000_INSN_SLTU, "sltu", "sltu", 32,
    644  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    645  1.1  christos   },
    646  1.1  christos /* sra ${rd-rt},$shamt */
    647  1.1  christos   {
    648  1.1  christos     -1, "sra2", "sra", 32,
    649  1.1  christos     { 0|A(USES_RT)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    650  1.1  christos   },
    651  1.1  christos /* sra $rd,$rt,$shamt */
    652  1.1  christos   {
    653  1.1  christos     IQ2000_INSN_SRA, "sra", "sra", 32,
    654  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    655  1.1  christos   },
    656  1.1  christos /* srav ${rd-rt},$rs */
    657  1.1  christos   {
    658  1.1  christos     -1, "srav2", "srav", 32,
    659  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    660  1.1  christos   },
    661  1.1  christos /* srav $rd,$rt,$rs */
    662  1.1  christos   {
    663  1.1  christos     IQ2000_INSN_SRAV, "srav", "srav", 32,
    664  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    665  1.1  christos   },
    666  1.1  christos /* srl $rd,$rt,$shamt */
    667  1.1  christos   {
    668  1.1  christos     IQ2000_INSN_SRL, "srl", "srl", 32,
    669  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    670  1.1  christos   },
    671  1.1  christos /* srlv ${rd-rt},$rs */
    672  1.1  christos   {
    673  1.1  christos     -1, "srlv2", "srlv", 32,
    674  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    675  1.1  christos   },
    676  1.1  christos /* srlv $rd,$rt,$rs */
    677  1.1  christos   {
    678  1.1  christos     IQ2000_INSN_SRLV, "srlv", "srlv", 32,
    679  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    680  1.1  christos   },
    681  1.1  christos /* srmv ${rd-rt},$rs,$shamt */
    682  1.1  christos   {
    683  1.1  christos     -1, "srmv2", "srmv", 32,
    684  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    685  1.1  christos   },
    686  1.1  christos /* srmv $rd,$rt,$rs,$shamt */
    687  1.1  christos   {
    688  1.1  christos     IQ2000_INSN_SRMV, "srmv", "srmv", 32,
    689  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    690  1.1  christos   },
    691  1.1  christos /* sub ${rd-rs},$rt */
    692  1.1  christos   {
    693  1.1  christos     -1, "sub2", "sub", 32,
    694  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    695  1.1  christos   },
    696  1.1  christos /* sub $rd,$rs,$rt */
    697  1.1  christos   {
    698  1.1  christos     IQ2000_INSN_SUB, "sub", "sub", 32,
    699  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    700  1.1  christos   },
    701  1.1  christos /* subu ${rd-rs},$rt */
    702  1.1  christos   {
    703  1.1  christos     -1, "subu2", "subu", 32,
    704  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    705  1.1  christos   },
    706  1.1  christos /* subu $rd,$rs,$rt */
    707  1.1  christos   {
    708  1.1  christos     IQ2000_INSN_SUBU, "subu", "subu", 32,
    709  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    710  1.1  christos   },
    711  1.1  christos /* xor ${rd-rs},$rt */
    712  1.1  christos   {
    713  1.1  christos     -1, "xor2", "xor", 32,
    714  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    715  1.1  christos   },
    716  1.1  christos /* xor $rd,$rs,$rt */
    717  1.1  christos   {
    718  1.1  christos     IQ2000_INSN_XOR, "xor", "xor", 32,
    719  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_BASE), 0 } } } }
    720  1.1  christos   },
    721  1.1  christos /* xori ${rt-rs},$lo16 */
    722  1.1  christos   {
    723  1.1  christos     -1, "xori2", "xori", 32,
    724  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } }
    725  1.1  christos   },
    726  1.1  christos /* xori $rt,$rs,$lo16 */
    727  1.1  christos   {
    728  1.1  christos     IQ2000_INSN_XORI, "xori", "xori", 32,
    729  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    730  1.1  christos   },
    731  1.1  christos /* bbi $rs($bitnum),$offset */
    732  1.1  christos   {
    733  1.1  christos     IQ2000_INSN_BBI, "bbi", "bbi", 32,
    734  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    735  1.1  christos   },
    736  1.1  christos /* bbin $rs($bitnum),$offset */
    737  1.1  christos   {
    738  1.1  christos     IQ2000_INSN_BBIN, "bbin", "bbin", 32,
    739  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    740  1.1  christos   },
    741  1.1  christos /* bbv $rs,$rt,$offset */
    742  1.1  christos   {
    743  1.1  christos     IQ2000_INSN_BBV, "bbv", "bbv", 32,
    744  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    745  1.1  christos   },
    746  1.1  christos /* bbvn $rs,$rt,$offset */
    747  1.1  christos   {
    748  1.1  christos     IQ2000_INSN_BBVN, "bbvn", "bbvn", 32,
    749  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    750  1.1  christos   },
    751  1.1  christos /* beq $rs,$rt,$offset */
    752  1.1  christos   {
    753  1.1  christos     IQ2000_INSN_BEQ, "beq", "beq", 32,
    754  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    755  1.1  christos   },
    756  1.1  christos /* beql $rs,$rt,$offset */
    757  1.1  christos   {
    758  1.1  christos     IQ2000_INSN_BEQL, "beql", "beql", 32,
    759  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    760  1.1  christos   },
    761  1.1  christos /* bgez $rs,$offset */
    762  1.1  christos   {
    763  1.1  christos     IQ2000_INSN_BGEZ, "bgez", "bgez", 32,
    764  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    765  1.1  christos   },
    766  1.1  christos /* bgezal $rs,$offset */
    767  1.1  christos   {
    768  1.1  christos     IQ2000_INSN_BGEZAL, "bgezal", "bgezal", 32,
    769  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    770  1.1  christos   },
    771  1.1  christos /* bgezall $rs,$offset */
    772  1.1  christos   {
    773  1.1  christos     IQ2000_INSN_BGEZALL, "bgezall", "bgezall", 32,
    774  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    775  1.1  christos   },
    776  1.1  christos /* bgezl $rs,$offset */
    777  1.1  christos   {
    778  1.1  christos     IQ2000_INSN_BGEZL, "bgezl", "bgezl", 32,
    779  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    780  1.1  christos   },
    781  1.1  christos /* bltz $rs,$offset */
    782  1.1  christos   {
    783  1.1  christos     IQ2000_INSN_BLTZ, "bltz", "bltz", 32,
    784  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    785  1.1  christos   },
    786  1.1  christos /* bltzl $rs,$offset */
    787  1.1  christos   {
    788  1.1  christos     IQ2000_INSN_BLTZL, "bltzl", "bltzl", 32,
    789  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    790  1.1  christos   },
    791  1.1  christos /* bltzal $rs,$offset */
    792  1.1  christos   {
    793  1.1  christos     IQ2000_INSN_BLTZAL, "bltzal", "bltzal", 32,
    794  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    795  1.1  christos   },
    796  1.1  christos /* bltzall $rs,$offset */
    797  1.1  christos   {
    798  1.1  christos     IQ2000_INSN_BLTZALL, "bltzall", "bltzall", 32,
    799  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    800  1.1  christos   },
    801  1.1  christos /* bmb0 $rs,$rt,$offset */
    802  1.1  christos   {
    803  1.1  christos     IQ2000_INSN_BMB0, "bmb0", "bmb0", 32,
    804  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    805  1.1  christos   },
    806  1.1  christos /* bmb1 $rs,$rt,$offset */
    807  1.1  christos   {
    808  1.1  christos     IQ2000_INSN_BMB1, "bmb1", "bmb1", 32,
    809  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    810  1.1  christos   },
    811  1.1  christos /* bmb2 $rs,$rt,$offset */
    812  1.1  christos   {
    813  1.1  christos     IQ2000_INSN_BMB2, "bmb2", "bmb2", 32,
    814  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    815  1.1  christos   },
    816  1.1  christos /* bmb3 $rs,$rt,$offset */
    817  1.1  christos   {
    818  1.1  christos     IQ2000_INSN_BMB3, "bmb3", "bmb3", 32,
    819  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    820  1.1  christos   },
    821  1.1  christos /* bne $rs,$rt,$offset */
    822  1.1  christos   {
    823  1.1  christos     IQ2000_INSN_BNE, "bne", "bne", 32,
    824  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    825  1.1  christos   },
    826  1.1  christos /* bnel $rs,$rt,$offset */
    827  1.1  christos   {
    828  1.1  christos     IQ2000_INSN_BNEL, "bnel", "bnel", 32,
    829  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    830  1.1  christos   },
    831  1.1  christos /* jalr $rd,$rs */
    832  1.1  christos   {
    833  1.1  christos     IQ2000_INSN_JALR, "jalr", "jalr", 32,
    834  1.1  christos     { 0|A(USES_RS)|A(USES_RD)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    835  1.1  christos   },
    836  1.1  christos /* jr $rs */
    837  1.1  christos   {
    838  1.1  christos     IQ2000_INSN_JR, "jr", "jr", 32,
    839  1.1  christos     { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
    840  1.1  christos   },
    841  1.1  christos /* lb $rt,$lo16($base) */
    842  1.1  christos   {
    843  1.1  christos     IQ2000_INSN_LB, "lb", "lb", 32,
    844  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
    845  1.1  christos   },
    846  1.1  christos /* lbu $rt,$lo16($base) */
    847  1.1  christos   {
    848  1.1  christos     IQ2000_INSN_LBU, "lbu", "lbu", 32,
    849  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
    850  1.1  christos   },
    851  1.1  christos /* lh $rt,$lo16($base) */
    852  1.1  christos   {
    853  1.1  christos     IQ2000_INSN_LH, "lh", "lh", 32,
    854  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
    855  1.1  christos   },
    856  1.1  christos /* lhu $rt,$lo16($base) */
    857  1.1  christos   {
    858  1.1  christos     IQ2000_INSN_LHU, "lhu", "lhu", 32,
    859  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
    860  1.1  christos   },
    861  1.1  christos /* lui $rt,$hi16 */
    862  1.1  christos   {
    863  1.1  christos     IQ2000_INSN_LUI, "lui", "lui", 32,
    864  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_BASE), 0 } } } }
    865  1.1  christos   },
    866  1.1  christos /* lw $rt,$lo16($base) */
    867  1.1  christos   {
    868  1.1  christos     IQ2000_INSN_LW, "lw", "lw", 32,
    869  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(LOAD_DELAY), { { { (1<<MACH_BASE), 0 } } } }
    870  1.1  christos   },
    871  1.1  christos /* sb $rt,$lo16($base) */
    872  1.1  christos   {
    873  1.1  christos     IQ2000_INSN_SB, "sb", "sb", 32,
    874  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    875  1.1  christos   },
    876  1.1  christos /* sh $rt,$lo16($base) */
    877  1.1  christos   {
    878  1.1  christos     IQ2000_INSN_SH, "sh", "sh", 32,
    879  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    880  1.1  christos   },
    881  1.1  christos /* sw $rt,$lo16($base) */
    882  1.1  christos   {
    883  1.1  christos     IQ2000_INSN_SW, "sw", "sw", 32,
    884  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_BASE), 0 } } } }
    885  1.1  christos   },
    886  1.1  christos /* break */
    887  1.1  christos   {
    888  1.1  christos     IQ2000_INSN_BREAK, "break", "break", 32,
    889  1.1  christos     { 0, { { { (1<<MACH_BASE), 0 } } } }
    890  1.1  christos   },
    891  1.1  christos /* syscall */
    892  1.1  christos   {
    893  1.1  christos     IQ2000_INSN_SYSCALL, "syscall", "syscall", 32,
    894  1.1  christos     { 0|A(YIELD_INSN), { { { (1<<MACH_BASE), 0 } } } }
    895  1.1  christos   },
    896  1.1  christos /* andoui $rt,$rs,$hi16 */
    897  1.1  christos   {
    898  1.1  christos     IQ2000_INSN_ANDOUI, "andoui", "andoui", 32,
    899  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ2000), 0 } } } }
    900  1.1  christos   },
    901  1.1  christos /* andoui ${rt-rs},$hi16 */
    902  1.1  christos   {
    903  1.1  christos     -1, "andoui2", "andoui", 32,
    904  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
    905  1.1  christos   },
    906  1.1  christos /* orui ${rt-rs},$hi16 */
    907  1.1  christos   {
    908  1.1  christos     -1, "orui2", "orui", 32,
    909  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
    910  1.1  christos   },
    911  1.1  christos /* orui $rt,$rs,$hi16 */
    912  1.1  christos   {
    913  1.1  christos     IQ2000_INSN_ORUI, "orui", "orui", 32,
    914  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ2000), 0 } } } }
    915  1.1  christos   },
    916  1.1  christos /* bgtz $rs,$offset */
    917  1.1  christos   {
    918  1.1  christos     IQ2000_INSN_BGTZ, "bgtz", "bgtz", 32,
    919  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    920  1.1  christos   },
    921  1.1  christos /* bgtzl $rs,$offset */
    922  1.1  christos   {
    923  1.1  christos     IQ2000_INSN_BGTZL, "bgtzl", "bgtzl", 32,
    924  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    925  1.1  christos   },
    926  1.1  christos /* blez $rs,$offset */
    927  1.1  christos   {
    928  1.1  christos     IQ2000_INSN_BLEZ, "blez", "blez", 32,
    929  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    930  1.1  christos   },
    931  1.1  christos /* blezl $rs,$offset */
    932  1.1  christos   {
    933  1.1  christos     IQ2000_INSN_BLEZL, "blezl", "blezl", 32,
    934  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    935  1.1  christos   },
    936  1.1  christos /* mrgb $rd,$rs,$rt,$mask */
    937  1.1  christos   {
    938  1.1  christos     IQ2000_INSN_MRGB, "mrgb", "mrgb", 32,
    939  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
    940  1.1  christos   },
    941  1.1  christos /* mrgb ${rd-rs},$rt,$mask */
    942  1.1  christos   {
    943  1.1  christos     -1, "mrgb2", "mrgb", 32,
    944  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ2000), 0 } } } }
    945  1.1  christos   },
    946  1.1  christos /* bctxt $rs,$offset */
    947  1.1  christos   {
    948  1.1  christos     IQ2000_INSN_BCTXT, "bctxt", "bctxt", 32,
    949  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    950  1.1  christos   },
    951  1.1  christos /* bc0f $offset */
    952  1.1  christos   {
    953  1.1  christos     IQ2000_INSN_BC0F, "bc0f", "bc0f", 32,
    954  1.1  christos     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    955  1.1  christos   },
    956  1.1  christos /* bc0fl $offset */
    957  1.1  christos   {
    958  1.1  christos     IQ2000_INSN_BC0FL, "bc0fl", "bc0fl", 32,
    959  1.1  christos     { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    960  1.1  christos   },
    961  1.1  christos /* bc3f $offset */
    962  1.1  christos   {
    963  1.1  christos     IQ2000_INSN_BC3F, "bc3f", "bc3f", 32,
    964  1.1  christos     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    965  1.1  christos   },
    966  1.1  christos /* bc3fl $offset */
    967  1.1  christos   {
    968  1.1  christos     IQ2000_INSN_BC3FL, "bc3fl", "bc3fl", 32,
    969  1.1  christos     { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    970  1.1  christos   },
    971  1.1  christos /* bc0t $offset */
    972  1.1  christos   {
    973  1.1  christos     IQ2000_INSN_BC0T, "bc0t", "bc0t", 32,
    974  1.1  christos     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    975  1.1  christos   },
    976  1.1  christos /* bc0tl $offset */
    977  1.1  christos   {
    978  1.1  christos     IQ2000_INSN_BC0TL, "bc0tl", "bc0tl", 32,
    979  1.1  christos     { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    980  1.1  christos   },
    981  1.1  christos /* bc3t $offset */
    982  1.1  christos   {
    983  1.1  christos     IQ2000_INSN_BC3T, "bc3t", "bc3t", 32,
    984  1.1  christos     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    985  1.1  christos   },
    986  1.1  christos /* bc3tl $offset */
    987  1.1  christos   {
    988  1.1  christos     IQ2000_INSN_BC3TL, "bc3tl", "bc3tl", 32,
    989  1.1  christos     { 0|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
    990  1.1  christos   },
    991  1.1  christos /* cfc0 $rt,$rd */
    992  1.1  christos   {
    993  1.1  christos     IQ2000_INSN_CFC0, "cfc0", "cfc0", 32,
    994  1.1  christos     { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
    995  1.1  christos   },
    996  1.1  christos /* cfc1 $rt,$rd */
    997  1.1  christos   {
    998  1.1  christos     IQ2000_INSN_CFC1, "cfc1", "cfc1", 32,
    999  1.1  christos     { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1000  1.1  christos   },
   1001  1.1  christos /* cfc2 $rt,$rd */
   1002  1.1  christos   {
   1003  1.1  christos     IQ2000_INSN_CFC2, "cfc2", "cfc2", 32,
   1004  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1005  1.1  christos   },
   1006  1.1  christos /* cfc3 $rt,$rd */
   1007  1.1  christos   {
   1008  1.1  christos     IQ2000_INSN_CFC3, "cfc3", "cfc3", 32,
   1009  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1010  1.1  christos   },
   1011  1.1  christos /* chkhdr $rd,$rt */
   1012  1.1  christos   {
   1013  1.1  christos     IQ2000_INSN_CHKHDR, "chkhdr", "chkhdr", 32,
   1014  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1015  1.1  christos   },
   1016  1.1  christos /* ctc0 $rt,$rd */
   1017  1.1  christos   {
   1018  1.1  christos     IQ2000_INSN_CTC0, "ctc0", "ctc0", 32,
   1019  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1020  1.1  christos   },
   1021  1.1  christos /* ctc1 $rt,$rd */
   1022  1.1  christos   {
   1023  1.1  christos     IQ2000_INSN_CTC1, "ctc1", "ctc1", 32,
   1024  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1025  1.1  christos   },
   1026  1.1  christos /* ctc2 $rt,$rd */
   1027  1.1  christos   {
   1028  1.1  christos     IQ2000_INSN_CTC2, "ctc2", "ctc2", 32,
   1029  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1030  1.1  christos   },
   1031  1.1  christos /* ctc3 $rt,$rd */
   1032  1.1  christos   {
   1033  1.1  christos     IQ2000_INSN_CTC3, "ctc3", "ctc3", 32,
   1034  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1035  1.1  christos   },
   1036  1.1  christos /* jcr $rs */
   1037  1.1  christos   {
   1038  1.1  christos     IQ2000_INSN_JCR, "jcr", "jcr", 32,
   1039  1.1  christos     { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   1040  1.1  christos   },
   1041  1.1  christos /* luc32 $rt,$rd */
   1042  1.1  christos   {
   1043  1.1  christos     IQ2000_INSN_LUC32, "luc32", "luc32", 32,
   1044  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1045  1.1  christos   },
   1046  1.1  christos /* luc32l $rt,$rd */
   1047  1.1  christos   {
   1048  1.1  christos     IQ2000_INSN_LUC32L, "luc32l", "luc32l", 32,
   1049  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1050  1.1  christos   },
   1051  1.1  christos /* luc64 $rt,$rd */
   1052  1.1  christos   {
   1053  1.1  christos     IQ2000_INSN_LUC64, "luc64", "luc64", 32,
   1054  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1055  1.1  christos   },
   1056  1.1  christos /* luc64l $rt,$rd */
   1057  1.1  christos   {
   1058  1.1  christos     IQ2000_INSN_LUC64L, "luc64l", "luc64l", 32,
   1059  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1060  1.1  christos   },
   1061  1.1  christos /* luk $rt,$rd */
   1062  1.1  christos   {
   1063  1.1  christos     IQ2000_INSN_LUK, "luk", "luk", 32,
   1064  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1065  1.1  christos   },
   1066  1.1  christos /* lulck $rt */
   1067  1.1  christos   {
   1068  1.1  christos     IQ2000_INSN_LULCK, "lulck", "lulck", 32,
   1069  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1070  1.1  christos   },
   1071  1.1  christos /* lum32 $rt,$rd */
   1072  1.1  christos   {
   1073  1.1  christos     IQ2000_INSN_LUM32, "lum32", "lum32", 32,
   1074  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1075  1.1  christos   },
   1076  1.1  christos /* lum32l $rt,$rd */
   1077  1.1  christos   {
   1078  1.1  christos     IQ2000_INSN_LUM32L, "lum32l", "lum32l", 32,
   1079  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1080  1.1  christos   },
   1081  1.1  christos /* lum64 $rt,$rd */
   1082  1.1  christos   {
   1083  1.1  christos     IQ2000_INSN_LUM64, "lum64", "lum64", 32,
   1084  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1085  1.1  christos   },
   1086  1.1  christos /* lum64l $rt,$rd */
   1087  1.1  christos   {
   1088  1.1  christos     IQ2000_INSN_LUM64L, "lum64l", "lum64l", 32,
   1089  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1090  1.1  christos   },
   1091  1.1  christos /* lur $rt,$rd */
   1092  1.1  christos   {
   1093  1.1  christos     IQ2000_INSN_LUR, "lur", "lur", 32,
   1094  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1095  1.1  christos   },
   1096  1.1  christos /* lurl $rt,$rd */
   1097  1.1  christos   {
   1098  1.1  christos     IQ2000_INSN_LURL, "lurl", "lurl", 32,
   1099  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1100  1.1  christos   },
   1101  1.1  christos /* luulck $rt */
   1102  1.1  christos   {
   1103  1.1  christos     IQ2000_INSN_LUULCK, "luulck", "luulck", 32,
   1104  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1105  1.1  christos   },
   1106  1.1  christos /* mfc0 $rt,$rd */
   1107  1.1  christos   {
   1108  1.1  christos     IQ2000_INSN_MFC0, "mfc0", "mfc0", 32,
   1109  1.1  christos     { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1110  1.1  christos   },
   1111  1.1  christos /* mfc1 $rt,$rd */
   1112  1.1  christos   {
   1113  1.1  christos     IQ2000_INSN_MFC1, "mfc1", "mfc1", 32,
   1114  1.1  christos     { 0|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1115  1.1  christos   },
   1116  1.1  christos /* mfc2 $rt,$rd */
   1117  1.1  christos   {
   1118  1.1  christos     IQ2000_INSN_MFC2, "mfc2", "mfc2", 32,
   1119  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1120  1.1  christos   },
   1121  1.1  christos /* mfc3 $rt,$rd */
   1122  1.1  christos   {
   1123  1.1  christos     IQ2000_INSN_MFC3, "mfc3", "mfc3", 32,
   1124  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(LOAD_DELAY), { { { (1<<MACH_IQ2000), 0 } } } }
   1125  1.1  christos   },
   1126  1.1  christos /* mtc0 $rt,$rd */
   1127  1.1  christos   {
   1128  1.1  christos     IQ2000_INSN_MTC0, "mtc0", "mtc0", 32,
   1129  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1130  1.1  christos   },
   1131  1.1  christos /* mtc1 $rt,$rd */
   1132  1.1  christos   {
   1133  1.1  christos     IQ2000_INSN_MTC1, "mtc1", "mtc1", 32,
   1134  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1135  1.1  christos   },
   1136  1.1  christos /* mtc2 $rt,$rd */
   1137  1.1  christos   {
   1138  1.1  christos     IQ2000_INSN_MTC2, "mtc2", "mtc2", 32,
   1139  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1140  1.1  christos   },
   1141  1.1  christos /* mtc3 $rt,$rd */
   1142  1.1  christos   {
   1143  1.1  christos     IQ2000_INSN_MTC3, "mtc3", "mtc3", 32,
   1144  1.1  christos     { 0|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1145  1.1  christos   },
   1146  1.1  christos /* pkrl $rd,$rt */
   1147  1.1  christos   {
   1148  1.1  christos     IQ2000_INSN_PKRL, "pkrl", "pkrl", 32,
   1149  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1150  1.1  christos   },
   1151  1.1  christos /* pkrlr1 $rt,$_index,$count */
   1152  1.1  christos   {
   1153  1.1  christos     IQ2000_INSN_PKRLR1, "pkrlr1", "pkrlr1", 32,
   1154  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1155  1.1  christos   },
   1156  1.1  christos /* pkrlr30 $rt,$_index,$count */
   1157  1.1  christos   {
   1158  1.1  christos     IQ2000_INSN_PKRLR30, "pkrlr30", "pkrlr30", 32,
   1159  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1160  1.1  christos   },
   1161  1.1  christos /* rb $rd,$rt */
   1162  1.1  christos   {
   1163  1.1  christos     IQ2000_INSN_RB, "rb", "rb", 32,
   1164  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1165  1.1  christos   },
   1166  1.1  christos /* rbr1 $rt,$_index,$count */
   1167  1.1  christos   {
   1168  1.1  christos     IQ2000_INSN_RBR1, "rbr1", "rbr1", 32,
   1169  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1170  1.1  christos   },
   1171  1.1  christos /* rbr30 $rt,$_index,$count */
   1172  1.1  christos   {
   1173  1.1  christos     IQ2000_INSN_RBR30, "rbr30", "rbr30", 32,
   1174  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1175  1.1  christos   },
   1176  1.1  christos /* rfe */
   1177  1.1  christos   {
   1178  1.1  christos     IQ2000_INSN_RFE, "rfe", "rfe", 32,
   1179  1.1  christos     { 0, { { { (1<<MACH_IQ2000), 0 } } } }
   1180  1.1  christos   },
   1181  1.1  christos /* rx $rd,$rt */
   1182  1.1  christos   {
   1183  1.1  christos     IQ2000_INSN_RX, "rx", "rx", 32,
   1184  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1185  1.1  christos   },
   1186  1.1  christos /* rxr1 $rt,$_index,$count */
   1187  1.1  christos   {
   1188  1.1  christos     IQ2000_INSN_RXR1, "rxr1", "rxr1", 32,
   1189  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1190  1.1  christos   },
   1191  1.1  christos /* rxr30 $rt,$_index,$count */
   1192  1.1  christos   {
   1193  1.1  christos     IQ2000_INSN_RXR30, "rxr30", "rxr30", 32,
   1194  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1195  1.1  christos   },
   1196  1.1  christos /* sleep */
   1197  1.1  christos   {
   1198  1.1  christos     IQ2000_INSN_SLEEP, "sleep", "sleep", 32,
   1199  1.1  christos     { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   1200  1.1  christos   },
   1201  1.1  christos /* srrd $rt */
   1202  1.1  christos   {
   1203  1.1  christos     IQ2000_INSN_SRRD, "srrd", "srrd", 32,
   1204  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1205  1.1  christos   },
   1206  1.1  christos /* srrdl $rt */
   1207  1.1  christos   {
   1208  1.1  christos     IQ2000_INSN_SRRDL, "srrdl", "srrdl", 32,
   1209  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1210  1.1  christos   },
   1211  1.1  christos /* srulck $rt */
   1212  1.1  christos   {
   1213  1.1  christos     IQ2000_INSN_SRULCK, "srulck", "srulck", 32,
   1214  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1215  1.1  christos   },
   1216  1.1  christos /* srwr $rt,$rd */
   1217  1.1  christos   {
   1218  1.1  christos     IQ2000_INSN_SRWR, "srwr", "srwr", 32,
   1219  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1220  1.1  christos   },
   1221  1.1  christos /* srwru $rt,$rd */
   1222  1.1  christos   {
   1223  1.1  christos     IQ2000_INSN_SRWRU, "srwru", "srwru", 32,
   1224  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1225  1.1  christos   },
   1226  1.1  christos /* trapqfl */
   1227  1.1  christos   {
   1228  1.1  christos     IQ2000_INSN_TRAPQFL, "trapqfl", "trapqfl", 32,
   1229  1.1  christos     { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   1230  1.1  christos   },
   1231  1.1  christos /* trapqne */
   1232  1.1  christos   {
   1233  1.1  christos     IQ2000_INSN_TRAPQNE, "trapqne", "trapqne", 32,
   1234  1.1  christos     { 0|A(YIELD_INSN), { { { (1<<MACH_IQ2000), 0 } } } }
   1235  1.1  christos   },
   1236  1.1  christos /* traprel $rt */
   1237  1.1  christos   {
   1238  1.1  christos     IQ2000_INSN_TRAPREL, "traprel", "traprel", 32,
   1239  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1240  1.1  christos   },
   1241  1.1  christos /* wb $rd,$rt */
   1242  1.1  christos   {
   1243  1.1  christos     IQ2000_INSN_WB, "wb", "wb", 32,
   1244  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1245  1.1  christos   },
   1246  1.1  christos /* wbu $rd,$rt */
   1247  1.1  christos   {
   1248  1.1  christos     IQ2000_INSN_WBU, "wbu", "wbu", 32,
   1249  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1250  1.1  christos   },
   1251  1.1  christos /* wbr1 $rt,$_index,$count */
   1252  1.1  christos   {
   1253  1.1  christos     IQ2000_INSN_WBR1, "wbr1", "wbr1", 32,
   1254  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1255  1.1  christos   },
   1256  1.1  christos /* wbr1u $rt,$_index,$count */
   1257  1.1  christos   {
   1258  1.1  christos     IQ2000_INSN_WBR1U, "wbr1u", "wbr1u", 32,
   1259  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1260  1.1  christos   },
   1261  1.1  christos /* wbr30 $rt,$_index,$count */
   1262  1.1  christos   {
   1263  1.1  christos     IQ2000_INSN_WBR30, "wbr30", "wbr30", 32,
   1264  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1265  1.1  christos   },
   1266  1.1  christos /* wbr30u $rt,$_index,$count */
   1267  1.1  christos   {
   1268  1.1  christos     IQ2000_INSN_WBR30U, "wbr30u", "wbr30u", 32,
   1269  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1270  1.1  christos   },
   1271  1.1  christos /* wx $rd,$rt */
   1272  1.1  christos   {
   1273  1.1  christos     IQ2000_INSN_WX, "wx", "wx", 32,
   1274  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1275  1.1  christos   },
   1276  1.1  christos /* wxu $rd,$rt */
   1277  1.1  christos   {
   1278  1.1  christos     IQ2000_INSN_WXU, "wxu", "wxu", 32,
   1279  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ2000), 0 } } } }
   1280  1.1  christos   },
   1281  1.1  christos /* wxr1 $rt,$_index,$count */
   1282  1.1  christos   {
   1283  1.1  christos     IQ2000_INSN_WXR1, "wxr1", "wxr1", 32,
   1284  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1285  1.1  christos   },
   1286  1.1  christos /* wxr1u $rt,$_index,$count */
   1287  1.1  christos   {
   1288  1.1  christos     IQ2000_INSN_WXR1U, "wxr1u", "wxr1u", 32,
   1289  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1290  1.1  christos   },
   1291  1.1  christos /* wxr30 $rt,$_index,$count */
   1292  1.1  christos   {
   1293  1.1  christos     IQ2000_INSN_WXR30, "wxr30", "wxr30", 32,
   1294  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1295  1.1  christos   },
   1296  1.1  christos /* wxr30u $rt,$_index,$count */
   1297  1.1  christos   {
   1298  1.1  christos     IQ2000_INSN_WXR30U, "wxr30u", "wxr30u", 32,
   1299  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RT), { { { (1<<MACH_IQ2000), 0 } } } }
   1300  1.1  christos   },
   1301  1.1  christos /* ldw $rt,$lo16($base) */
   1302  1.1  christos   {
   1303  1.1  christos     IQ2000_INSN_LDW, "ldw", "ldw", 32,
   1304  1.1  christos     { 0|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ2000), 0 } } } }
   1305  1.1  christos   },
   1306  1.1  christos /* sdw $rt,$lo16($base) */
   1307  1.1  christos   {
   1308  1.1  christos     IQ2000_INSN_SDW, "sdw", "sdw", 32,
   1309  1.1  christos     { 0|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ2000), 0 } } } }
   1310  1.1  christos   },
   1311  1.1  christos /* j $jmptarg */
   1312  1.1  christos   {
   1313  1.1  christos     IQ2000_INSN_J, "j", "j", 32,
   1314  1.1  christos     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   1315  1.1  christos   },
   1316  1.1  christos /* jal $jmptarg */
   1317  1.1  christos   {
   1318  1.1  christos     IQ2000_INSN_JAL, "jal", "jal", 32,
   1319  1.1  christos     { 0|A(USES_R31)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   1320  1.1  christos   },
   1321  1.1  christos /* bmb $rs,$rt,$offset */
   1322  1.1  christos   {
   1323  1.1  christos     IQ2000_INSN_BMB, "bmb", "bmb", 32,
   1324  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ2000), 0 } } } }
   1325  1.1  christos   },
   1326  1.1  christos /* andoui $rt,$rs,$hi16 */
   1327  1.1  christos   {
   1328  1.1  christos     IQ2000_INSN_ANDOUI_Q10, "andoui-q10", "andoui", 32,
   1329  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1330  1.1  christos   },
   1331  1.1  christos /* andoui ${rt-rs},$hi16 */
   1332  1.1  christos   {
   1333  1.1  christos     -1, "andoui2-q10", "andoui", 32,
   1334  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   1335  1.1  christos   },
   1336  1.1  christos /* orui $rt,$rs,$hi16 */
   1337  1.1  christos   {
   1338  1.1  christos     IQ2000_INSN_ORUI_Q10, "orui-q10", "orui", 32,
   1339  1.1  christos     { 0|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1340  1.1  christos   },
   1341  1.1  christos /* orui ${rt-rs},$hi16 */
   1342  1.1  christos   {
   1343  1.1  christos     -1, "orui2-q10", "orui", 32,
   1344  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   1345  1.1  christos   },
   1346  1.1  christos /* mrgb $rd,$rs,$rt,$maskq10 */
   1347  1.1  christos   {
   1348  1.1  christos     IQ2000_INSN_MRGBQ10, "mrgbq10", "mrgb", 32,
   1349  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1350  1.1  christos   },
   1351  1.1  christos /* mrgb ${rd-rs},$rt,$maskq10 */
   1352  1.1  christos   {
   1353  1.1  christos     -1, "mrgbq102", "mrgb", 32,
   1354  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } }
   1355  1.1  christos   },
   1356  1.1  christos /* j $jmptarg */
   1357  1.1  christos   {
   1358  1.1  christos     IQ2000_INSN_JQ10, "jq10", "j", 32,
   1359  1.1  christos     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1360  1.1  christos   },
   1361  1.1  christos /* jal $rt,$jmptarg */
   1362  1.1  christos   {
   1363  1.1  christos     IQ2000_INSN_JALQ10, "jalq10", "jal", 32,
   1364  1.1  christos     { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1365  1.1  christos   },
   1366  1.1  christos /* jal $jmptarg */
   1367  1.1  christos   {
   1368  1.1  christos     IQ2000_INSN_JALQ10_2, "jalq10-2", "jal", 32,
   1369  1.1  christos     { 0|A(USES_RT)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1370  1.1  christos   },
   1371  1.1  christos /* bbil $rs($bitnum),$offset */
   1372  1.1  christos   {
   1373  1.1  christos     IQ2000_INSN_BBIL, "bbil", "bbil", 32,
   1374  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1375  1.1  christos   },
   1376  1.1  christos /* bbinl $rs($bitnum),$offset */
   1377  1.1  christos   {
   1378  1.1  christos     IQ2000_INSN_BBINL, "bbinl", "bbinl", 32,
   1379  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1380  1.1  christos   },
   1381  1.1  christos /* bbvl $rs,$rt,$offset */
   1382  1.1  christos   {
   1383  1.1  christos     IQ2000_INSN_BBVL, "bbvl", "bbvl", 32,
   1384  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1385  1.1  christos   },
   1386  1.1  christos /* bbvnl $rs,$rt,$offset */
   1387  1.1  christos   {
   1388  1.1  christos     IQ2000_INSN_BBVNL, "bbvnl", "bbvnl", 32,
   1389  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1390  1.1  christos   },
   1391  1.1  christos /* bgtzal $rs,$offset */
   1392  1.1  christos   {
   1393  1.1  christos     IQ2000_INSN_BGTZAL, "bgtzal", "bgtzal", 32,
   1394  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1395  1.1  christos   },
   1396  1.1  christos /* bgtzall $rs,$offset */
   1397  1.1  christos   {
   1398  1.1  christos     IQ2000_INSN_BGTZALL, "bgtzall", "bgtzall", 32,
   1399  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1400  1.1  christos   },
   1401  1.1  christos /* blezal $rs,$offset */
   1402  1.1  christos   {
   1403  1.1  christos     IQ2000_INSN_BLEZAL, "blezal", "blezal", 32,
   1404  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1405  1.1  christos   },
   1406  1.1  christos /* blezall $rs,$offset */
   1407  1.1  christos   {
   1408  1.1  christos     IQ2000_INSN_BLEZALL, "blezall", "blezall", 32,
   1409  1.1  christos     { 0|A(USES_R31)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1410  1.1  christos   },
   1411  1.1  christos /* bgtz $rs,$offset */
   1412  1.1  christos   {
   1413  1.1  christos     IQ2000_INSN_BGTZ_Q10, "bgtz-q10", "bgtz", 32,
   1414  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1415  1.1  christos   },
   1416  1.1  christos /* bgtzl $rs,$offset */
   1417  1.1  christos   {
   1418  1.1  christos     IQ2000_INSN_BGTZL_Q10, "bgtzl-q10", "bgtzl", 32,
   1419  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1420  1.1  christos   },
   1421  1.1  christos /* blez $rs,$offset */
   1422  1.1  christos   {
   1423  1.1  christos     IQ2000_INSN_BLEZ_Q10, "blez-q10", "blez", 32,
   1424  1.1  christos     { 0|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1425  1.1  christos   },
   1426  1.1  christos /* blezl $rs,$offset */
   1427  1.1  christos   {
   1428  1.1  christos     IQ2000_INSN_BLEZL_Q10, "blezl-q10", "blezl", 32,
   1429  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1430  1.1  christos   },
   1431  1.1  christos /* bmb $rs,$rt,$offset */
   1432  1.1  christos   {
   1433  1.1  christos     IQ2000_INSN_BMB_Q10, "bmb-q10", "bmb", 32,
   1434  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1435  1.1  christos   },
   1436  1.1  christos /* bmbl $rs,$rt,$offset */
   1437  1.1  christos   {
   1438  1.1  christos     IQ2000_INSN_BMBL, "bmbl", "bmbl", 32,
   1439  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1440  1.1  christos   },
   1441  1.1  christos /* bri $rs,$offset */
   1442  1.1  christos   {
   1443  1.1  christos     IQ2000_INSN_BRI, "bri", "bri", 32,
   1444  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1445  1.1  christos   },
   1446  1.1  christos /* brv $rs,$offset */
   1447  1.1  christos   {
   1448  1.1  christos     IQ2000_INSN_BRV, "brv", "brv", 32,
   1449  1.1  christos     { 0|A(USES_RS)|A(SKIP_CTI)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1450  1.1  christos   },
   1451  1.1  christos /* bctx $rs,$offset */
   1452  1.1  christos   {
   1453  1.1  christos     IQ2000_INSN_BCTX, "bctx", "bctx", 32,
   1454  1.1  christos     { 0|A(USES_RS)|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_IQ10), 0 } } } }
   1455  1.1  christos   },
   1456  1.1  christos /* yield */
   1457  1.1  christos   {
   1458  1.1  christos     IQ2000_INSN_YIELD, "yield", "yield", 32,
   1459  1.1  christos     { 0, { { { (1<<MACH_IQ10), 0 } } } }
   1460  1.1  christos   },
   1461  1.1  christos /* crc32 $rd,$rs,$rt */
   1462  1.1  christos   {
   1463  1.1  christos     IQ2000_INSN_CRC32, "crc32", "crc32", 32,
   1464  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1465  1.1  christos   },
   1466  1.1  christos /* crc32b $rd,$rs,$rt */
   1467  1.1  christos   {
   1468  1.1  christos     IQ2000_INSN_CRC32B, "crc32b", "crc32b", 32,
   1469  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1470  1.1  christos   },
   1471  1.1  christos /* cnt1s $rd,$rs */
   1472  1.1  christos   {
   1473  1.1  christos     IQ2000_INSN_CNT1S, "cnt1s", "cnt1s", 32,
   1474  1.1  christos     { 0|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1475  1.1  christos   },
   1476  1.1  christos /* avail $rd */
   1477  1.1  christos   {
   1478  1.1  christos     IQ2000_INSN_AVAIL, "avail", "avail", 32,
   1479  1.1  christos     { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1480  1.1  christos   },
   1481  1.1  christos /* free $rd,$rs */
   1482  1.1  christos   {
   1483  1.1  christos     IQ2000_INSN_FREE, "free", "free", 32,
   1484  1.1  christos     { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1485  1.1  christos   },
   1486  1.1  christos /* tstod $rd,$rs */
   1487  1.1  christos   {
   1488  1.1  christos     IQ2000_INSN_TSTOD, "tstod", "tstod", 32,
   1489  1.1  christos     { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1490  1.1  christos   },
   1491  1.1  christos /* cmphdr $rd */
   1492  1.1  christos   {
   1493  1.1  christos     IQ2000_INSN_CMPHDR, "cmphdr", "cmphdr", 32,
   1494  1.1  christos     { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1495  1.1  christos   },
   1496  1.1  christos /* mcid $rd,$rt */
   1497  1.1  christos   {
   1498  1.1  christos     IQ2000_INSN_MCID, "mcid", "mcid", 32,
   1499  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1500  1.1  christos   },
   1501  1.1  christos /* dba $rd */
   1502  1.1  christos   {
   1503  1.1  christos     IQ2000_INSN_DBA, "dba", "dba", 32,
   1504  1.1  christos     { 0|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1505  1.1  christos   },
   1506  1.1  christos /* dbd $rd,$rs,$rt */
   1507  1.1  christos   {
   1508  1.1  christos     IQ2000_INSN_DBD, "dbd", "dbd", 32,
   1509  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1510  1.1  christos   },
   1511  1.1  christos /* dpwt $rd,$rs */
   1512  1.1  christos   {
   1513  1.1  christos     IQ2000_INSN_DPWT, "dpwt", "dpwt", 32,
   1514  1.1  christos     { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1515  1.1  christos   },
   1516  1.1  christos /* chkhdr $rd,$rs */
   1517  1.1  christos   {
   1518  1.1  christos     IQ2000_INSN_CHKHDRQ10, "chkhdrq10", "chkhdr", 32,
   1519  1.1  christos     { 0|A(USES_RD)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1520  1.1  christos   },
   1521  1.1  christos /* rba $rd,$rs,$rt */
   1522  1.1  christos   {
   1523  1.1  christos     IQ2000_INSN_RBA, "rba", "rba", 32,
   1524  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1525  1.1  christos   },
   1526  1.1  christos /* rbal $rd,$rs,$rt */
   1527  1.1  christos   {
   1528  1.1  christos     IQ2000_INSN_RBAL, "rbal", "rbal", 32,
   1529  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1530  1.1  christos   },
   1531  1.1  christos /* rbar $rd,$rs,$rt */
   1532  1.1  christos   {
   1533  1.1  christos     IQ2000_INSN_RBAR, "rbar", "rbar", 32,
   1534  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1535  1.1  christos   },
   1536  1.1  christos /* wba $rd,$rs,$rt */
   1537  1.1  christos   {
   1538  1.1  christos     IQ2000_INSN_WBA, "wba", "wba", 32,
   1539  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1540  1.1  christos   },
   1541  1.1  christos /* wbau $rd,$rs,$rt */
   1542  1.1  christos   {
   1543  1.1  christos     IQ2000_INSN_WBAU, "wbau", "wbau", 32,
   1544  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1545  1.1  christos   },
   1546  1.1  christos /* wbac $rd,$rs,$rt */
   1547  1.1  christos   {
   1548  1.1  christos     IQ2000_INSN_WBAC, "wbac", "wbac", 32,
   1549  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1550  1.1  christos   },
   1551  1.1  christos /* rbi $rd,$rs,$rt,$bytecount */
   1552  1.1  christos   {
   1553  1.1  christos     IQ2000_INSN_RBI, "rbi", "rbi", 32,
   1554  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1555  1.1  christos   },
   1556  1.1  christos /* rbil $rd,$rs,$rt,$bytecount */
   1557  1.1  christos   {
   1558  1.1  christos     IQ2000_INSN_RBIL, "rbil", "rbil", 32,
   1559  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1560  1.1  christos   },
   1561  1.1  christos /* rbir $rd,$rs,$rt,$bytecount */
   1562  1.1  christos   {
   1563  1.1  christos     IQ2000_INSN_RBIR, "rbir", "rbir", 32,
   1564  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1565  1.1  christos   },
   1566  1.1  christos /* wbi $rd,$rs,$rt,$bytecount */
   1567  1.1  christos   {
   1568  1.1  christos     IQ2000_INSN_WBI, "wbi", "wbi", 32,
   1569  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1570  1.1  christos   },
   1571  1.1  christos /* wbic $rd,$rs,$rt,$bytecount */
   1572  1.1  christos   {
   1573  1.1  christos     IQ2000_INSN_WBIC, "wbic", "wbic", 32,
   1574  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1575  1.1  christos   },
   1576  1.1  christos /* wbiu $rd,$rs,$rt,$bytecount */
   1577  1.1  christos   {
   1578  1.1  christos     IQ2000_INSN_WBIU, "wbiu", "wbiu", 32,
   1579  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1580  1.1  christos   },
   1581  1.1  christos /* pkrli $rd,$rs,$rt,$bytecount */
   1582  1.1  christos   {
   1583  1.1  christos     IQ2000_INSN_PKRLI, "pkrli", "pkrli", 32,
   1584  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1585  1.1  christos   },
   1586  1.1  christos /* pkrlih $rd,$rs,$rt,$bytecount */
   1587  1.1  christos   {
   1588  1.1  christos     IQ2000_INSN_PKRLIH, "pkrlih", "pkrlih", 32,
   1589  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1590  1.1  christos   },
   1591  1.1  christos /* pkrliu $rd,$rs,$rt,$bytecount */
   1592  1.1  christos   {
   1593  1.1  christos     IQ2000_INSN_PKRLIU, "pkrliu", "pkrliu", 32,
   1594  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1595  1.1  christos   },
   1596  1.1  christos /* pkrlic $rd,$rs,$rt,$bytecount */
   1597  1.1  christos   {
   1598  1.1  christos     IQ2000_INSN_PKRLIC, "pkrlic", "pkrlic", 32,
   1599  1.1  christos     { 0|A(USES_RT)|A(USES_RS)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1600  1.1  christos   },
   1601  1.1  christos /* pkrla $rd,$rs,$rt */
   1602  1.1  christos   {
   1603  1.1  christos     IQ2000_INSN_PKRLA, "pkrla", "pkrla", 32,
   1604  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1605  1.1  christos   },
   1606  1.1  christos /* pkrlau $rd,$rs,$rt */
   1607  1.1  christos   {
   1608  1.1  christos     IQ2000_INSN_PKRLAU, "pkrlau", "pkrlau", 32,
   1609  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1610  1.1  christos   },
   1611  1.1  christos /* pkrlah $rd,$rs,$rt */
   1612  1.1  christos   {
   1613  1.1  christos     IQ2000_INSN_PKRLAH, "pkrlah", "pkrlah", 32,
   1614  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1615  1.1  christos   },
   1616  1.1  christos /* pkrlac $rd,$rs,$rt */
   1617  1.1  christos   {
   1618  1.1  christos     IQ2000_INSN_PKRLAC, "pkrlac", "pkrlac", 32,
   1619  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1620  1.1  christos   },
   1621  1.1  christos /* lock $rd,$rt */
   1622  1.1  christos   {
   1623  1.1  christos     IQ2000_INSN_LOCK, "lock", "lock", 32,
   1624  1.1  christos     { 0|A(USES_RT)|A(USES_RD), { { { (1<<MACH_IQ10), 0 } } } }
   1625  1.1  christos   },
   1626  1.1  christos /* unlk $rd,$rt */
   1627  1.1  christos   {
   1628  1.1  christos     IQ2000_INSN_UNLK, "unlk", "unlk", 32,
   1629  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1630  1.1  christos   },
   1631  1.1  christos /* swrd $rd,$rt */
   1632  1.1  christos   {
   1633  1.1  christos     IQ2000_INSN_SWRD, "swrd", "swrd", 32,
   1634  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1635  1.1  christos   },
   1636  1.1  christos /* swrdl $rd,$rt */
   1637  1.1  christos   {
   1638  1.1  christos     IQ2000_INSN_SWRDL, "swrdl", "swrdl", 32,
   1639  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1640  1.1  christos   },
   1641  1.1  christos /* swwr $rd,$rs,$rt */
   1642  1.1  christos   {
   1643  1.1  christos     IQ2000_INSN_SWWR, "swwr", "swwr", 32,
   1644  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1645  1.1  christos   },
   1646  1.1  christos /* swwru $rd,$rs,$rt */
   1647  1.1  christos   {
   1648  1.1  christos     IQ2000_INSN_SWWRU, "swwru", "swwru", 32,
   1649  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1650  1.1  christos   },
   1651  1.1  christos /* dwrd $rd,$rt */
   1652  1.1  christos   {
   1653  1.1  christos     IQ2000_INSN_DWRD, "dwrd", "dwrd", 32,
   1654  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1655  1.1  christos   },
   1656  1.1  christos /* dwrdl $rd,$rt */
   1657  1.1  christos   {
   1658  1.1  christos     IQ2000_INSN_DWRDL, "dwrdl", "dwrdl", 32,
   1659  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1660  1.1  christos   },
   1661  1.1  christos /* cam36 $rd,$rt,${cam-z},${cam-y} */
   1662  1.1  christos   {
   1663  1.1  christos     IQ2000_INSN_CAM36, "cam36", "cam36", 32,
   1664  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1665  1.1  christos   },
   1666  1.1  christos /* cam72 $rd,$rt,${cam-y},${cam-z} */
   1667  1.1  christos   {
   1668  1.1  christos     IQ2000_INSN_CAM72, "cam72", "cam72", 32,
   1669  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1670  1.1  christos   },
   1671  1.1  christos /* cam144 $rd,$rt,${cam-y},${cam-z} */
   1672  1.1  christos   {
   1673  1.1  christos     IQ2000_INSN_CAM144, "cam144", "cam144", 32,
   1674  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1675  1.1  christos   },
   1676  1.1  christos /* cam288 $rd,$rt,${cam-y},${cam-z} */
   1677  1.1  christos   {
   1678  1.1  christos     IQ2000_INSN_CAM288, "cam288", "cam288", 32,
   1679  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1680  1.1  christos   },
   1681  1.1  christos /* cm32and $rd,$rs,$rt */
   1682  1.1  christos   {
   1683  1.1  christos     IQ2000_INSN_CM32AND, "cm32and", "cm32and", 32,
   1684  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1685  1.1  christos   },
   1686  1.1  christos /* cm32andn $rd,$rs,$rt */
   1687  1.1  christos   {
   1688  1.1  christos     IQ2000_INSN_CM32ANDN, "cm32andn", "cm32andn", 32,
   1689  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1690  1.1  christos   },
   1691  1.1  christos /* cm32or $rd,$rs,$rt */
   1692  1.1  christos   {
   1693  1.1  christos     IQ2000_INSN_CM32OR, "cm32or", "cm32or", 32,
   1694  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1695  1.1  christos   },
   1696  1.1  christos /* cm32ra $rd,$rs,$rt */
   1697  1.1  christos   {
   1698  1.1  christos     IQ2000_INSN_CM32RA, "cm32ra", "cm32ra", 32,
   1699  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1700  1.1  christos   },
   1701  1.1  christos /* cm32rd $rd,$rt */
   1702  1.1  christos   {
   1703  1.1  christos     IQ2000_INSN_CM32RD, "cm32rd", "cm32rd", 32,
   1704  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1705  1.1  christos   },
   1706  1.1  christos /* cm32ri $rd,$rt */
   1707  1.1  christos   {
   1708  1.1  christos     IQ2000_INSN_CM32RI, "cm32ri", "cm32ri", 32,
   1709  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1710  1.1  christos   },
   1711  1.1  christos /* cm32rs $rd,$rs,$rt */
   1712  1.1  christos   {
   1713  1.1  christos     IQ2000_INSN_CM32RS, "cm32rs", "cm32rs", 32,
   1714  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1715  1.1  christos   },
   1716  1.1  christos /* cm32sa $rd,$rs,$rt */
   1717  1.1  christos   {
   1718  1.1  christos     IQ2000_INSN_CM32SA, "cm32sa", "cm32sa", 32,
   1719  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1720  1.1  christos   },
   1721  1.1  christos /* cm32sd $rd,$rt */
   1722  1.1  christos   {
   1723  1.1  christos     IQ2000_INSN_CM32SD, "cm32sd", "cm32sd", 32,
   1724  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1725  1.1  christos   },
   1726  1.1  christos /* cm32si $rd,$rt */
   1727  1.1  christos   {
   1728  1.1  christos     IQ2000_INSN_CM32SI, "cm32si", "cm32si", 32,
   1729  1.1  christos     { 0|A(USES_RD)|A(USES_RT), { { { (1<<MACH_IQ10), 0 } } } }
   1730  1.1  christos   },
   1731  1.1  christos /* cm32ss $rd,$rs,$rt */
   1732  1.1  christos   {
   1733  1.1  christos     IQ2000_INSN_CM32SS, "cm32ss", "cm32ss", 32,
   1734  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1735  1.1  christos   },
   1736  1.1  christos /* cm32xor $rd,$rs,$rt */
   1737  1.1  christos   {
   1738  1.1  christos     IQ2000_INSN_CM32XOR, "cm32xor", "cm32xor", 32,
   1739  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1740  1.1  christos   },
   1741  1.1  christos /* cm64clr $rd,$rt */
   1742  1.1  christos   {
   1743  1.1  christos     IQ2000_INSN_CM64CLR, "cm64clr", "cm64clr", 32,
   1744  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1745  1.1  christos   },
   1746  1.1  christos /* cm64ra $rd,$rs,$rt */
   1747  1.1  christos   {
   1748  1.1  christos     IQ2000_INSN_CM64RA, "cm64ra", "cm64ra", 32,
   1749  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1750  1.1  christos   },
   1751  1.1  christos /* cm64rd $rd,$rt */
   1752  1.1  christos   {
   1753  1.1  christos     IQ2000_INSN_CM64RD, "cm64rd", "cm64rd", 32,
   1754  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1755  1.1  christos   },
   1756  1.1  christos /* cm64ri $rd,$rt */
   1757  1.1  christos   {
   1758  1.1  christos     IQ2000_INSN_CM64RI, "cm64ri", "cm64ri", 32,
   1759  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1760  1.1  christos   },
   1761  1.1  christos /* cm64ria2 $rd,$rs,$rt */
   1762  1.1  christos   {
   1763  1.1  christos     IQ2000_INSN_CM64RIA2, "cm64ria2", "cm64ria2", 32,
   1764  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1765  1.1  christos   },
   1766  1.1  christos /* cm64rs $rd,$rs,$rt */
   1767  1.1  christos   {
   1768  1.1  christos     IQ2000_INSN_CM64RS, "cm64rs", "cm64rs", 32,
   1769  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1770  1.1  christos   },
   1771  1.1  christos /* cm64sa $rd,$rs,$rt */
   1772  1.1  christos   {
   1773  1.1  christos     IQ2000_INSN_CM64SA, "cm64sa", "cm64sa", 32,
   1774  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1775  1.1  christos   },
   1776  1.1  christos /* cm64sd $rd,$rt */
   1777  1.1  christos   {
   1778  1.1  christos     IQ2000_INSN_CM64SD, "cm64sd", "cm64sd", 32,
   1779  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1780  1.1  christos   },
   1781  1.1  christos /* cm64si $rd,$rt */
   1782  1.1  christos   {
   1783  1.1  christos     IQ2000_INSN_CM64SI, "cm64si", "cm64si", 32,
   1784  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1785  1.1  christos   },
   1786  1.1  christos /* cm64sia2 $rd,$rs,$rt */
   1787  1.1  christos   {
   1788  1.1  christos     IQ2000_INSN_CM64SIA2, "cm64sia2", "cm64sia2", 32,
   1789  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1790  1.1  christos   },
   1791  1.1  christos /* cm64ss $rd,$rs,$rt */
   1792  1.1  christos   {
   1793  1.1  christos     IQ2000_INSN_CM64SS, "cm64ss", "cm64ss", 32,
   1794  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1795  1.1  christos   },
   1796  1.1  christos /* cm128ria2 $rd,$rs,$rt */
   1797  1.1  christos   {
   1798  1.1  christos     IQ2000_INSN_CM128RIA2, "cm128ria2", "cm128ria2", 32,
   1799  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1800  1.1  christos   },
   1801  1.1  christos /* cm128ria3 $rd,$rs,$rt,${cm-3z} */
   1802  1.1  christos   {
   1803  1.1  christos     IQ2000_INSN_CM128RIA3, "cm128ria3", "cm128ria3", 32,
   1804  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1805  1.1  christos   },
   1806  1.1  christos /* cm128ria4 $rd,$rs,$rt,${cm-4z} */
   1807  1.1  christos   {
   1808  1.1  christos     IQ2000_INSN_CM128RIA4, "cm128ria4", "cm128ria4", 32,
   1809  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1810  1.1  christos   },
   1811  1.1  christos /* cm128sia2 $rd,$rs,$rt */
   1812  1.1  christos   {
   1813  1.1  christos     IQ2000_INSN_CM128SIA2, "cm128sia2", "cm128sia2", 32,
   1814  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1815  1.1  christos   },
   1816  1.1  christos /* cm128sia3 $rd,$rs,$rt,${cm-3z} */
   1817  1.1  christos   {
   1818  1.1  christos     IQ2000_INSN_CM128SIA3, "cm128sia3", "cm128sia3", 32,
   1819  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(EVEN_REG_NUM), { { { (1<<MACH_IQ10), 0 } } } }
   1820  1.1  christos   },
   1821  1.1  christos /* cm128sia4 $rd,$rs,$rt,${cm-4z} */
   1822  1.1  christos   {
   1823  1.1  christos     IQ2000_INSN_CM128SIA4, "cm128sia4", "cm128sia4", 32,
   1824  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1825  1.1  christos   },
   1826  1.1  christos /* cm128vsa $rd,$rs,$rt */
   1827  1.1  christos   {
   1828  1.1  christos     IQ2000_INSN_CM128VSA, "cm128vsa", "cm128vsa", 32,
   1829  1.1  christos     { 0|A(USES_RD)|A(USES_RT)|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1830  1.1  christos   },
   1831  1.1  christos /* cfc $rd,$rt */
   1832  1.1  christos   {
   1833  1.1  christos     IQ2000_INSN_CFC, "cfc", "cfc", 32,
   1834  1.1  christos     { 0|A(YIELD_INSN)|A(USES_RD)|A(LOAD_DELAY), { { { (1<<MACH_IQ10), 0 } } } }
   1835  1.1  christos   },
   1836  1.1  christos /* ctc $rs,$rt */
   1837  1.1  christos   {
   1838  1.1  christos     IQ2000_INSN_CTC, "ctc", "ctc", 32,
   1839  1.1  christos     { 0|A(USES_RS), { { { (1<<MACH_IQ10), 0 } } } }
   1840  1.1  christos   },
   1841  1.1  christos };
   1842  1.1  christos 
   1843  1.1  christos #undef OP
   1844  1.1  christos #undef A
   1845  1.1  christos 
   1846  1.1  christos /* Initialize anything needed to be done once, before any cpu_open call.  */
   1847  1.1  christos 
   1848  1.1  christos static void
   1849  1.1  christos init_tables (void)
   1850  1.1  christos {
   1851  1.1  christos }
   1852  1.1  christos 
   1853  1.8  christos #ifndef opcodes_error_handler
   1854  1.8  christos #define opcodes_error_handler(...) \
   1855  1.8  christos   fprintf (stderr, __VA_ARGS__); fputc ('\n', stderr)
   1856  1.8  christos #endif
   1857  1.8  christos 
   1858  1.1  christos static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
   1859  1.1  christos static void build_hw_table      (CGEN_CPU_TABLE *);
   1860  1.1  christos static void build_ifield_table  (CGEN_CPU_TABLE *);
   1861  1.1  christos static void build_operand_table (CGEN_CPU_TABLE *);
   1862  1.1  christos static void build_insn_table    (CGEN_CPU_TABLE *);
   1863  1.1  christos static void iq2000_cgen_rebuild_tables (CGEN_CPU_TABLE *);
   1864  1.1  christos 
   1865  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to look up a mach via its bfd name.  */
   1866  1.1  christos 
   1867  1.1  christos static const CGEN_MACH *
   1868  1.1  christos lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
   1869  1.1  christos {
   1870  1.1  christos   while (table->name)
   1871  1.1  christos     {
   1872  1.1  christos       if (strcmp (name, table->bfd_name) == 0)
   1873  1.1  christos 	return table;
   1874  1.1  christos       ++table;
   1875  1.1  christos     }
   1876  1.7  christos   return NULL;
   1877  1.1  christos }
   1878  1.1  christos 
   1879  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to build the hardware table.  */
   1880  1.1  christos 
   1881  1.1  christos static void
   1882  1.1  christos build_hw_table (CGEN_CPU_TABLE *cd)
   1883  1.1  christos {
   1884  1.1  christos   int i;
   1885  1.1  christos   int machs = cd->machs;
   1886  1.1  christos   const CGEN_HW_ENTRY *init = & iq2000_cgen_hw_table[0];
   1887  1.1  christos   /* MAX_HW is only an upper bound on the number of selected entries.
   1888  1.1  christos      However each entry is indexed by it's enum so there can be holes in
   1889  1.1  christos      the table.  */
   1890  1.1  christos   const CGEN_HW_ENTRY **selected =
   1891  1.1  christos     (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
   1892  1.1  christos 
   1893  1.1  christos   cd->hw_table.init_entries = init;
   1894  1.1  christos   cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
   1895  1.1  christos   memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
   1896  1.1  christos   /* ??? For now we just use machs to determine which ones we want.  */
   1897  1.1  christos   for (i = 0; init[i].name != NULL; ++i)
   1898  1.1  christos     if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
   1899  1.1  christos 	& machs)
   1900  1.1  christos       selected[init[i].type] = &init[i];
   1901  1.1  christos   cd->hw_table.entries = selected;
   1902  1.1  christos   cd->hw_table.num_entries = MAX_HW;
   1903  1.1  christos }
   1904  1.1  christos 
   1905  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to build the hardware table.  */
   1906  1.1  christos 
   1907  1.1  christos static void
   1908  1.1  christos build_ifield_table (CGEN_CPU_TABLE *cd)
   1909  1.1  christos {
   1910  1.1  christos   cd->ifld_table = & iq2000_cgen_ifld_table[0];
   1911  1.1  christos }
   1912  1.1  christos 
   1913  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to build the hardware table.  */
   1914  1.1  christos 
   1915  1.1  christos static void
   1916  1.1  christos build_operand_table (CGEN_CPU_TABLE *cd)
   1917  1.1  christos {
   1918  1.1  christos   int i;
   1919  1.1  christos   int machs = cd->machs;
   1920  1.1  christos   const CGEN_OPERAND *init = & iq2000_cgen_operand_table[0];
   1921  1.1  christos   /* MAX_OPERANDS is only an upper bound on the number of selected entries.
   1922  1.1  christos      However each entry is indexed by it's enum so there can be holes in
   1923  1.1  christos      the table.  */
   1924  1.1  christos   const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
   1925  1.1  christos 
   1926  1.1  christos   cd->operand_table.init_entries = init;
   1927  1.1  christos   cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
   1928  1.1  christos   memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
   1929  1.1  christos   /* ??? For now we just use mach to determine which ones we want.  */
   1930  1.1  christos   for (i = 0; init[i].name != NULL; ++i)
   1931  1.1  christos     if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
   1932  1.1  christos 	& machs)
   1933  1.1  christos       selected[init[i].type] = &init[i];
   1934  1.1  christos   cd->operand_table.entries = selected;
   1935  1.1  christos   cd->operand_table.num_entries = MAX_OPERANDS;
   1936  1.1  christos }
   1937  1.1  christos 
   1938  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to build the hardware table.
   1939  1.1  christos    ??? This could leave out insns not supported by the specified mach/isa,
   1940  1.1  christos    but that would cause errors like "foo only supported by bar" to become
   1941  1.1  christos    "unknown insn", so for now we include all insns and require the app to
   1942  1.1  christos    do the checking later.
   1943  1.1  christos    ??? On the other hand, parsing of such insns may require their hardware or
   1944  1.1  christos    operand elements to be in the table [which they mightn't be].  */
   1945  1.1  christos 
   1946  1.1  christos static void
   1947  1.1  christos build_insn_table (CGEN_CPU_TABLE *cd)
   1948  1.1  christos {
   1949  1.1  christos   int i;
   1950  1.1  christos   const CGEN_IBASE *ib = & iq2000_cgen_insn_table[0];
   1951  1.1  christos   CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
   1952  1.1  christos 
   1953  1.1  christos   memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
   1954  1.1  christos   for (i = 0; i < MAX_INSNS; ++i)
   1955  1.1  christos     insns[i].base = &ib[i];
   1956  1.1  christos   cd->insn_table.init_entries = insns;
   1957  1.1  christos   cd->insn_table.entry_size = sizeof (CGEN_IBASE);
   1958  1.1  christos   cd->insn_table.num_init_entries = MAX_INSNS;
   1959  1.1  christos }
   1960  1.1  christos 
   1961  1.1  christos /* Subroutine of iq2000_cgen_cpu_open to rebuild the tables.  */
   1962  1.1  christos 
   1963  1.1  christos static void
   1964  1.1  christos iq2000_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
   1965  1.1  christos {
   1966  1.1  christos   int i;
   1967  1.1  christos   CGEN_BITSET *isas = cd->isas;
   1968  1.1  christos   unsigned int machs = cd->machs;
   1969  1.1  christos 
   1970  1.1  christos   cd->int_insn_p = CGEN_INT_INSN_P;
   1971  1.1  christos 
   1972  1.1  christos   /* Data derived from the isa spec.  */
   1973  1.1  christos #define UNSET (CGEN_SIZE_UNKNOWN + 1)
   1974  1.1  christos   cd->default_insn_bitsize = UNSET;
   1975  1.1  christos   cd->base_insn_bitsize = UNSET;
   1976  1.1  christos   cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
   1977  1.1  christos   cd->max_insn_bitsize = 0;
   1978  1.1  christos   for (i = 0; i < MAX_ISAS; ++i)
   1979  1.1  christos     if (cgen_bitset_contains (isas, i))
   1980  1.1  christos       {
   1981  1.1  christos 	const CGEN_ISA *isa = & iq2000_cgen_isa_table[i];
   1982  1.1  christos 
   1983  1.1  christos 	/* Default insn sizes of all selected isas must be
   1984  1.1  christos 	   equal or we set the result to 0, meaning "unknown".  */
   1985  1.1  christos 	if (cd->default_insn_bitsize == UNSET)
   1986  1.1  christos 	  cd->default_insn_bitsize = isa->default_insn_bitsize;
   1987  1.1  christos 	else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
   1988  1.1  christos 	  ; /* This is ok.  */
   1989  1.1  christos 	else
   1990  1.1  christos 	  cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
   1991  1.1  christos 
   1992  1.1  christos 	/* Base insn sizes of all selected isas must be equal
   1993  1.1  christos 	   or we set the result to 0, meaning "unknown".  */
   1994  1.1  christos 	if (cd->base_insn_bitsize == UNSET)
   1995  1.1  christos 	  cd->base_insn_bitsize = isa->base_insn_bitsize;
   1996  1.1  christos 	else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
   1997  1.1  christos 	  ; /* This is ok.  */
   1998  1.1  christos 	else
   1999  1.1  christos 	  cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
   2000  1.1  christos 
   2001  1.1  christos 	/* Set min,max insn sizes.  */
   2002  1.1  christos 	if (isa->min_insn_bitsize < cd->min_insn_bitsize)
   2003  1.1  christos 	  cd->min_insn_bitsize = isa->min_insn_bitsize;
   2004  1.1  christos 	if (isa->max_insn_bitsize > cd->max_insn_bitsize)
   2005  1.1  christos 	  cd->max_insn_bitsize = isa->max_insn_bitsize;
   2006  1.1  christos       }
   2007  1.1  christos 
   2008  1.1  christos   /* Data derived from the mach spec.  */
   2009  1.1  christos   for (i = 0; i < MAX_MACHS; ++i)
   2010  1.1  christos     if (((1 << i) & machs) != 0)
   2011  1.1  christos       {
   2012  1.1  christos 	const CGEN_MACH *mach = & iq2000_cgen_mach_table[i];
   2013  1.1  christos 
   2014  1.1  christos 	if (mach->insn_chunk_bitsize != 0)
   2015  1.1  christos 	{
   2016  1.1  christos 	  if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
   2017  1.1  christos 	    {
   2018  1.8  christos 	      opcodes_error_handler
   2019  1.8  christos 		(/* xgettext:c-format */
   2020  1.8  christos 		 _("internal error: iq2000_cgen_rebuild_tables: "
   2021  1.8  christos 		   "conflicting insn-chunk-bitsize values: `%d' vs. `%d'"),
   2022  1.8  christos 		 cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
   2023  1.1  christos 	      abort ();
   2024  1.1  christos 	    }
   2025  1.1  christos 
   2026  1.1  christos  	  cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
   2027  1.1  christos 	}
   2028  1.1  christos       }
   2029  1.1  christos 
   2030  1.1  christos   /* Determine which hw elements are used by MACH.  */
   2031  1.1  christos   build_hw_table (cd);
   2032  1.1  christos 
   2033  1.1  christos   /* Build the ifield table.  */
   2034  1.1  christos   build_ifield_table (cd);
   2035  1.1  christos 
   2036  1.1  christos   /* Determine which operands are used by MACH/ISA.  */
   2037  1.1  christos   build_operand_table (cd);
   2038  1.1  christos 
   2039  1.1  christos   /* Build the instruction table.  */
   2040  1.1  christos   build_insn_table (cd);
   2041  1.1  christos }
   2042  1.1  christos 
   2043  1.1  christos /* Initialize a cpu table and return a descriptor.
   2044  1.1  christos    It's much like opening a file, and must be the first function called.
   2045  1.1  christos    The arguments are a set of (type/value) pairs, terminated with
   2046  1.1  christos    CGEN_CPU_OPEN_END.
   2047  1.1  christos 
   2048  1.1  christos    Currently supported values:
   2049  1.1  christos    CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
   2050  1.1  christos    CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
   2051  1.1  christos    CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
   2052  1.1  christos    CGEN_CPU_OPEN_ENDIAN:  specify endian choice
   2053  1.1  christos    CGEN_CPU_OPEN_END:     terminates arguments
   2054  1.1  christos 
   2055  1.1  christos    ??? Simultaneous multiple isas might not make sense, but it's not (yet)
   2056  1.1  christos    precluded.  */
   2057  1.1  christos 
   2058  1.1  christos CGEN_CPU_DESC
   2059  1.1  christos iq2000_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
   2060  1.1  christos {
   2061  1.1  christos   CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
   2062  1.1  christos   static int init_p;
   2063  1.1  christos   CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
   2064  1.1  christos   unsigned int machs = 0; /* 0 = "unspecified" */
   2065  1.1  christos   enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
   2066  1.1  christos   va_list ap;
   2067  1.1  christos 
   2068  1.1  christos   if (! init_p)
   2069  1.1  christos     {
   2070  1.1  christos       init_tables ();
   2071  1.1  christos       init_p = 1;
   2072  1.1  christos     }
   2073  1.1  christos 
   2074  1.1  christos   memset (cd, 0, sizeof (*cd));
   2075  1.1  christos 
   2076  1.1  christos   va_start (ap, arg_type);
   2077  1.1  christos   while (arg_type != CGEN_CPU_OPEN_END)
   2078  1.1  christos     {
   2079  1.1  christos       switch (arg_type)
   2080  1.1  christos 	{
   2081  1.1  christos 	case CGEN_CPU_OPEN_ISAS :
   2082  1.1  christos 	  isas = va_arg (ap, CGEN_BITSET *);
   2083  1.1  christos 	  break;
   2084  1.1  christos 	case CGEN_CPU_OPEN_MACHS :
   2085  1.1  christos 	  machs = va_arg (ap, unsigned int);
   2086  1.1  christos 	  break;
   2087  1.1  christos 	case CGEN_CPU_OPEN_BFDMACH :
   2088  1.1  christos 	  {
   2089  1.1  christos 	    const char *name = va_arg (ap, const char *);
   2090  1.1  christos 	    const CGEN_MACH *mach =
   2091  1.1  christos 	      lookup_mach_via_bfd_name (iq2000_cgen_mach_table, name);
   2092  1.1  christos 
   2093  1.7  christos 	    if (mach != NULL)
   2094  1.7  christos 	      machs |= 1 << mach->num;
   2095  1.1  christos 	    break;
   2096  1.1  christos 	  }
   2097  1.1  christos 	case CGEN_CPU_OPEN_ENDIAN :
   2098  1.1  christos 	  endian = va_arg (ap, enum cgen_endian);
   2099  1.1  christos 	  break;
   2100  1.1  christos 	default :
   2101  1.8  christos 	  opcodes_error_handler
   2102  1.8  christos 	    (/* xgettext:c-format */
   2103  1.8  christos 	     _("internal error: iq2000_cgen_cpu_open: "
   2104  1.8  christos 	       "unsupported argument `%d'"),
   2105  1.8  christos 	     arg_type);
   2106  1.1  christos 	  abort (); /* ??? return NULL? */
   2107  1.1  christos 	}
   2108  1.1  christos       arg_type = va_arg (ap, enum cgen_cpu_open_arg);
   2109  1.1  christos     }
   2110  1.1  christos   va_end (ap);
   2111  1.1  christos 
   2112  1.1  christos   /* Mach unspecified means "all".  */
   2113  1.1  christos   if (machs == 0)
   2114  1.1  christos     machs = (1 << MAX_MACHS) - 1;
   2115  1.1  christos   /* Base mach is always selected.  */
   2116  1.1  christos   machs |= 1;
   2117  1.1  christos   if (endian == CGEN_ENDIAN_UNKNOWN)
   2118  1.1  christos     {
   2119  1.1  christos       /* ??? If target has only one, could have a default.  */
   2120  1.8  christos       opcodes_error_handler
   2121  1.8  christos 	(/* xgettext:c-format */
   2122  1.8  christos 	 _("internal error: iq2000_cgen_cpu_open: no endianness specified"));
   2123  1.1  christos       abort ();
   2124  1.1  christos     }
   2125  1.1  christos 
   2126  1.1  christos   cd->isas = cgen_bitset_copy (isas);
   2127  1.1  christos   cd->machs = machs;
   2128  1.1  christos   cd->endian = endian;
   2129  1.1  christos   /* FIXME: for the sparc case we can determine insn-endianness statically.
   2130  1.1  christos      The worry here is where both data and insn endian can be independently
   2131  1.1  christos      chosen, in which case this function will need another argument.
   2132  1.1  christos      Actually, will want to allow for more arguments in the future anyway.  */
   2133  1.1  christos   cd->insn_endian = endian;
   2134  1.1  christos 
   2135  1.1  christos   /* Table (re)builder.  */
   2136  1.1  christos   cd->rebuild_tables = iq2000_cgen_rebuild_tables;
   2137  1.1  christos   iq2000_cgen_rebuild_tables (cd);
   2138  1.1  christos 
   2139  1.1  christos   /* Default to not allowing signed overflow.  */
   2140  1.1  christos   cd->signed_overflow_ok_p = 0;
   2141  1.6  christos 
   2142  1.1  christos   return (CGEN_CPU_DESC) cd;
   2143  1.1  christos }
   2144  1.1  christos 
   2145  1.1  christos /* Cover fn to iq2000_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
   2146  1.1  christos    MACH_NAME is the bfd name of the mach.  */
   2147  1.1  christos 
   2148  1.1  christos CGEN_CPU_DESC
   2149  1.1  christos iq2000_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
   2150  1.1  christos {
   2151  1.1  christos   return iq2000_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
   2152  1.1  christos 			       CGEN_CPU_OPEN_ENDIAN, endian,
   2153  1.1  christos 			       CGEN_CPU_OPEN_END);
   2154  1.1  christos }
   2155  1.1  christos 
   2156  1.1  christos /* Close a cpu table.
   2157  1.1  christos    ??? This can live in a machine independent file, but there's currently
   2158  1.1  christos    no place to put this file (there's no libcgen).  libopcodes is the wrong
   2159  1.1  christos    place as some simulator ports use this but they don't use libopcodes.  */
   2160  1.1  christos 
   2161  1.1  christos void
   2162  1.1  christos iq2000_cgen_cpu_close (CGEN_CPU_DESC cd)
   2163  1.1  christos {
   2164  1.1  christos   unsigned int i;
   2165  1.1  christos   const CGEN_INSN *insns;
   2166  1.1  christos 
   2167  1.1  christos   if (cd->macro_insn_table.init_entries)
   2168  1.1  christos     {
   2169  1.1  christos       insns = cd->macro_insn_table.init_entries;
   2170  1.1  christos       for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
   2171  1.1  christos 	if (CGEN_INSN_RX ((insns)))
   2172  1.1  christos 	  regfree (CGEN_INSN_RX (insns));
   2173  1.1  christos     }
   2174  1.1  christos 
   2175  1.1  christos   if (cd->insn_table.init_entries)
   2176  1.1  christos     {
   2177  1.1  christos       insns = cd->insn_table.init_entries;
   2178  1.1  christos       for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
   2179  1.1  christos 	if (CGEN_INSN_RX (insns))
   2180  1.1  christos 	  regfree (CGEN_INSN_RX (insns));
   2181  1.6  christos     }
   2182  1.1  christos 
   2183  1.1  christos   if (cd->macro_insn_table.init_entries)
   2184  1.1  christos     free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
   2185  1.1  christos 
   2186  1.1  christos   if (cd->insn_table.init_entries)
   2187  1.1  christos     free ((CGEN_INSN *) cd->insn_table.init_entries);
   2188  1.1  christos 
   2189  1.1  christos   if (cd->hw_table.entries)
   2190  1.1  christos     free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
   2191  1.1  christos 
   2192  1.1  christos   if (cd->operand_table.entries)
   2193  1.1  christos     free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
   2194  1.1  christos 
   2195  1.1  christos   free (cd);
   2196  1.1  christos }
   2197  1.1  christos 
   2198