/* CPU data for cris.

THIS FILE IS MACHINE GENERATED WITH CGEN.

Copyright (C) 1996-2021 Free Software Foundation, Inc.

This file is part of the GNU Binutils and/or GDB, the GNU debugger.

   This file is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3, or (at your option)
   any later version.

   It is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License along
   with this program; if not, write to the Free Software Foundation, Inc.,
   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.

*/

#include "sysdep.h"
#include <stdio.h>
#include <stdarg.h>
#include "ansidecl.h"
#include "bfd.h"
#include "symcat.h"
#include "cris-desc.h"
#include "cris-opc.h"
#include "opintl.h"
#include "libiberty.h"
#include "xregex.h"

/* Attributes.  */

static const CGEN_ATTR_ENTRY bool_attr[] =
{
  { "#f", 0 },
  { "#t", 1 },
  { 0, 0 }
};

static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
{
  { "base", MACH_BASE },
  { "crisv0", MACH_CRISV0 },
  { "crisv3", MACH_CRISV3 },
  { "crisv8", MACH_CRISV8 },
  { "crisv10", MACH_CRISV10 },
  { "crisv32", MACH_CRISV32 },
  { "max", MACH_MAX },
  { 0, 0 }
};

static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
{
  { "cris", ISA_CRIS },
  { "max", ISA_MAX },
  { 0, 0 }
};

const CGEN_ATTR_TABLE cris_cgen_ifield_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
  { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
  { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
  { "RESERVED", &bool_attr[0], &bool_attr[0] },
  { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
  { "SIGNED", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE cris_cgen_hardware_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
  { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
  { "PC", &bool_attr[0], &bool_attr[0] },
  { "PROFILE", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE cris_cgen_operand_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
  { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
  { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
  { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
  { "SIGNED", &bool_attr[0], &bool_attr[0] },
  { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
  { "RELAX", &bool_attr[0], &bool_attr[0] },
  { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE cris_cgen_insn_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "ALIAS", &bool_attr[0], &bool_attr[0] },
  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
  { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
  { "COND-CTI", &bool_attr[0], &bool_attr[0] },
  { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
  { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
  { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
  { "RELAXED", &bool_attr[0], &bool_attr[0] },
  { "NO-DIS", &bool_attr[0], &bool_attr[0] },
  { "PBB", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

/* Instruction set variants.  */

static const CGEN_ISA cris_cgen_isa_table[] = {
  { "cris", 16, 16, 16, 48 },
  { 0, 0, 0, 0, 0 }
};

/* Machine variants.  */

static const CGEN_MACH cris_cgen_mach_table[] = {
  { "crisv0", "cris", MACH_CRISV0, 0 },
  { "crisv3", "cris", MACH_CRISV3, 0 },
  { "crisv8", "cris", MACH_CRISV8, 0 },
  { "crisv10", "cris", MACH_CRISV10, 0 },
  { "crisv32", "crisv32", MACH_CRISV32, 0 },
  { 0, 0, 0, 0 }
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_pcreg_entries[] =
{
  { "PC", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_gr_names_pcreg =
{
  & cris_cgen_opval_gr_names_pcreg_entries[0],
  17,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_acr_entries[] =
{
  { "ACR", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_gr_names_acr =
{
  & cris_cgen_opval_gr_names_acr_entries[0],
  17,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_v32_entries[] =
{
  { "ACR", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_gr_names_v32 =
{
  & cris_cgen_opval_gr_names_v32_entries[0],
  17,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v10_entries[] =
{
  { "CCR", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "IBR", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "IRP", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "BAR", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "DCCR", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "BRP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "USP", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_p_names_v10 =
{
  & cris_cgen_opval_p_names_v10_entries[0],
  25,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v32_entries[] =
{
  { "BZ", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "PID", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "SRS", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "WZ", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "EXS", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "EDA", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "DZ", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "EBP", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "ERP", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "NRP", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "CCS", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "USP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "SPC", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_p_names_v32 =
{
  & cris_cgen_opval_p_names_v32_entries[0],
  31,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v32_x_entries[] =
{
  { "BZ", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "PID", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "SRS", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "WZ", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "EXS", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "EDA", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "DZ", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "EBP", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "ERP", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "NRP", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "CCS", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "USP", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "SPC", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_p_names_v32_x =
{
  & cris_cgen_opval_p_names_v32_x_entries[0],
  31,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_inc_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "+", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_h_inc =
{
  & cris_cgen_opval_h_inc_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_ccode_entries[] =
{
  { "cc", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "cs", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "ne", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "eq", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "vc", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "vs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "pl", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "mi", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "ls", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "hi", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "ge", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "lt", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "gt", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "le", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "a", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "wf", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_h_ccode =
{
  & cris_cgen_opval_h_ccode_entries[0],
  16,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_swap_entries[] =
{
  { " ", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "b", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "br", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "w", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "wr", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "wb", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "wbr", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "n", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "nr", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "nb", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "nbr", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "nw", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "nwr", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "nwb", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "nwbr", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_h_swap =
{
  & cris_cgen_opval_h_swap_entries[0],
  16,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_flagbits_entries[] =
{
  { "_", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "c", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "v", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "cv", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "z", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cz", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "vz", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "cvz", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "n", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "cn", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "vn", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "cvn", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "zn", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "czn", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "vzn", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzn", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "x", 16, {0, {{{0, 0}}}}, 0, 0 },
  { "cx", 17, {0, {{{0, 0}}}}, 0, 0 },
  { "vx", 18, {0, {{{0, 0}}}}, 0, 0 },
  { "cvx", 19, {0, {{{0, 0}}}}, 0, 0 },
  { "zx", 20, {0, {{{0, 0}}}}, 0, 0 },
  { "czx", 21, {0, {{{0, 0}}}}, 0, 0 },
  { "vzx", 22, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzx", 23, {0, {{{0, 0}}}}, 0, 0 },
  { "nx", 24, {0, {{{0, 0}}}}, 0, 0 },
  { "cnx", 25, {0, {{{0, 0}}}}, 0, 0 },
  { "vnx", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnx", 27, {0, {{{0, 0}}}}, 0, 0 },
  { "znx", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "cznx", 29, {0, {{{0, 0}}}}, 0, 0 },
  { "vznx", 30, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznx", 31, {0, {{{0, 0}}}}, 0, 0 },
  { "i", 32, {0, {{{0, 0}}}}, 0, 0 },
  { "ci", 33, {0, {{{0, 0}}}}, 0, 0 },
  { "vi", 34, {0, {{{0, 0}}}}, 0, 0 },
  { "cvi", 35, {0, {{{0, 0}}}}, 0, 0 },
  { "zi", 36, {0, {{{0, 0}}}}, 0, 0 },
  { "czi", 37, {0, {{{0, 0}}}}, 0, 0 },
  { "vzi", 38, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzi", 39, {0, {{{0, 0}}}}, 0, 0 },
  { "ni", 40, {0, {{{0, 0}}}}, 0, 0 },
  { "cni", 41, {0, {{{0, 0}}}}, 0, 0 },
  { "vni", 42, {0, {{{0, 0}}}}, 0, 0 },
  { "cvni", 43, {0, {{{0, 0}}}}, 0, 0 },
  { "zni", 44, {0, {{{0, 0}}}}, 0, 0 },
  { "czni", 45, {0, {{{0, 0}}}}, 0, 0 },
  { "vzni", 46, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzni", 47, {0, {{{0, 0}}}}, 0, 0 },
  { "xi", 48, {0, {{{0, 0}}}}, 0, 0 },
  { "cxi", 49, {0, {{{0, 0}}}}, 0, 0 },
  { "vxi", 50, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxi", 51, {0, {{{0, 0}}}}, 0, 0 },
  { "zxi", 52, {0, {{{0, 0}}}}, 0, 0 },
  { "czxi", 53, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxi", 54, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxi", 55, {0, {{{0, 0}}}}, 0, 0 },
  { "nxi", 56, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxi", 57, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxi", 58, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxi", 59, {0, {{{0, 0}}}}, 0, 0 },
  { "znxi", 60, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxi", 61, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxi", 62, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxi", 63, {0, {{{0, 0}}}}, 0, 0 },
  { "u", 64, {0, {{{0, 0}}}}, 0, 0 },
  { "cu", 65, {0, {{{0, 0}}}}, 0, 0 },
  { "vu", 66, {0, {{{0, 0}}}}, 0, 0 },
  { "cvu", 67, {0, {{{0, 0}}}}, 0, 0 },
  { "zu", 68, {0, {{{0, 0}}}}, 0, 0 },
  { "czu", 69, {0, {{{0, 0}}}}, 0, 0 },
  { "vzu", 70, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzu", 71, {0, {{{0, 0}}}}, 0, 0 },
  { "nu", 72, {0, {{{0, 0}}}}, 0, 0 },
  { "cnu", 73, {0, {{{0, 0}}}}, 0, 0 },
  { "vnu", 74, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnu", 75, {0, {{{0, 0}}}}, 0, 0 },
  { "znu", 76, {0, {{{0, 0}}}}, 0, 0 },
  { "cznu", 77, {0, {{{0, 0}}}}, 0, 0 },
  { "vznu", 78, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznu", 79, {0, {{{0, 0}}}}, 0, 0 },
  { "xu", 80, {0, {{{0, 0}}}}, 0, 0 },
  { "cxu", 81, {0, {{{0, 0}}}}, 0, 0 },
  { "vxu", 82, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxu", 83, {0, {{{0, 0}}}}, 0, 0 },
  { "zxu", 84, {0, {{{0, 0}}}}, 0, 0 },
  { "czxu", 85, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxu", 86, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxu", 87, {0, {{{0, 0}}}}, 0, 0 },
  { "nxu", 88, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxu", 89, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxu", 90, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxu", 91, {0, {{{0, 0}}}}, 0, 0 },
  { "znxu", 92, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxu", 93, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxu", 94, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxu", 95, {0, {{{0, 0}}}}, 0, 0 },
  { "iu", 96, {0, {{{0, 0}}}}, 0, 0 },
  { "ciu", 97, {0, {{{0, 0}}}}, 0, 0 },
  { "viu", 98, {0, {{{0, 0}}}}, 0, 0 },
  { "cviu", 99, {0, {{{0, 0}}}}, 0, 0 },
  { "ziu", 100, {0, {{{0, 0}}}}, 0, 0 },
  { "cziu", 101, {0, {{{0, 0}}}}, 0, 0 },
  { "vziu", 102, {0, {{{0, 0}}}}, 0, 0 },
  { "cvziu", 103, {0, {{{0, 0}}}}, 0, 0 },
  { "niu", 104, {0, {{{0, 0}}}}, 0, 0 },
  { "cniu", 105, {0, {{{0, 0}}}}, 0, 0 },
  { "vniu", 106, {0, {{{0, 0}}}}, 0, 0 },
  { "cvniu", 107, {0, {{{0, 0}}}}, 0, 0 },
  { "zniu", 108, {0, {{{0, 0}}}}, 0, 0 },
  { "czniu", 109, {0, {{{0, 0}}}}, 0, 0 },
  { "vzniu", 110, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzniu", 111, {0, {{{0, 0}}}}, 0, 0 },
  { "xiu", 112, {0, {{{0, 0}}}}, 0, 0 },
  { "cxiu", 113, {0, {{{0, 0}}}}, 0, 0 },
  { "vxiu", 114, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxiu", 115, {0, {{{0, 0}}}}, 0, 0 },
  { "zxiu", 116, {0, {{{0, 0}}}}, 0, 0 },
  { "czxiu", 117, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxiu", 118, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxiu", 119, {0, {{{0, 0}}}}, 0, 0 },
  { "nxiu", 120, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxiu", 121, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxiu", 122, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxiu", 123, {0, {{{0, 0}}}}, 0, 0 },
  { "znxiu", 124, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxiu", 125, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxiu", 126, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxiu", 127, {0, {{{0, 0}}}}, 0, 0 },
  { "p", 128, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 129, {0, {{{0, 0}}}}, 0, 0 },
  { "vp", 130, {0, {{{0, 0}}}}, 0, 0 },
  { "cvp", 131, {0, {{{0, 0}}}}, 0, 0 },
  { "zp", 132, {0, {{{0, 0}}}}, 0, 0 },
  { "czp", 133, {0, {{{0, 0}}}}, 0, 0 },
  { "vzp", 134, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzp", 135, {0, {{{0, 0}}}}, 0, 0 },
  { "np", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "cnp", 137, {0, {{{0, 0}}}}, 0, 0 },
  { "vnp", 138, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnp", 139, {0, {{{0, 0}}}}, 0, 0 },
  { "znp", 140, {0, {{{0, 0}}}}, 0, 0 },
  { "cznp", 141, {0, {{{0, 0}}}}, 0, 0 },
  { "vznp", 142, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznp", 143, {0, {{{0, 0}}}}, 0, 0 },
  { "xp", 144, {0, {{{0, 0}}}}, 0, 0 },
  { "cxp", 145, {0, {{{0, 0}}}}, 0, 0 },
  { "vxp", 146, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxp", 147, {0, {{{0, 0}}}}, 0, 0 },
  { "zxp", 148, {0, {{{0, 0}}}}, 0, 0 },
  { "czxp", 149, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxp", 150, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxp", 151, {0, {{{0, 0}}}}, 0, 0 },
  { "nxp", 152, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxp", 153, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxp", 154, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxp", 155, {0, {{{0, 0}}}}, 0, 0 },
  { "znxp", 156, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxp", 157, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxp", 158, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxp", 159, {0, {{{0, 0}}}}, 0, 0 },
  { "ip", 160, {0, {{{0, 0}}}}, 0, 0 },
  { "cip", 161, {0, {{{0, 0}}}}, 0, 0 },
  { "vip", 162, {0, {{{0, 0}}}}, 0, 0 },
  { "cvip", 163, {0, {{{0, 0}}}}, 0, 0 },
  { "zip", 164, {0, {{{0, 0}}}}, 0, 0 },
  { "czip", 165, {0, {{{0, 0}}}}, 0, 0 },
  { "vzip", 166, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzip", 167, {0, {{{0, 0}}}}, 0, 0 },
  { "nip", 168, {0, {{{0, 0}}}}, 0, 0 },
  { "cnip", 169, {0, {{{0, 0}}}}, 0, 0 },
  { "vnip", 170, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnip", 171, {0, {{{0, 0}}}}, 0, 0 },
  { "znip", 172, {0, {{{0, 0}}}}, 0, 0 },
  { "cznip", 173, {0, {{{0, 0}}}}, 0, 0 },
  { "vznip", 174, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznip", 175, {0, {{{0, 0}}}}, 0, 0 },
  { "xip", 176, {0, {{{0, 0}}}}, 0, 0 },
  { "cxip", 177, {0, {{{0, 0}}}}, 0, 0 },
  { "vxip", 178, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxip", 179, {0, {{{0, 0}}}}, 0, 0 },
  { "zxip", 180, {0, {{{0, 0}}}}, 0, 0 },
  { "czxip", 181, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxip", 182, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxip", 183, {0, {{{0, 0}}}}, 0, 0 },
  { "nxip", 184, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxip", 185, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxip", 186, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxip", 187, {0, {{{0, 0}}}}, 0, 0 },
  { "znxip", 188, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxip", 189, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxip", 190, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxip", 191, {0, {{{0, 0}}}}, 0, 0 },
  { "up", 192, {0, {{{0, 0}}}}, 0, 0 },
  { "cup", 193, {0, {{{0, 0}}}}, 0, 0 },
  { "vup", 194, {0, {{{0, 0}}}}, 0, 0 },
  { "cvup", 195, {0, {{{0, 0}}}}, 0, 0 },
  { "zup", 196, {0, {{{0, 0}}}}, 0, 0 },
  { "czup", 197, {0, {{{0, 0}}}}, 0, 0 },
  { "vzup", 198, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzup", 199, {0, {{{0, 0}}}}, 0, 0 },
  { "nup", 200, {0, {{{0, 0}}}}, 0, 0 },
  { "cnup", 201, {0, {{{0, 0}}}}, 0, 0 },
  { "vnup", 202, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnup", 203, {0, {{{0, 0}}}}, 0, 0 },
  { "znup", 204, {0, {{{0, 0}}}}, 0, 0 },
  { "cznup", 205, {0, {{{0, 0}}}}, 0, 0 },
  { "vznup", 206, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznup", 207, {0, {{{0, 0}}}}, 0, 0 },
  { "xup", 208, {0, {{{0, 0}}}}, 0, 0 },
  { "cxup", 209, {0, {{{0, 0}}}}, 0, 0 },
  { "vxup", 210, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxup", 211, {0, {{{0, 0}}}}, 0, 0 },
  { "zxup", 212, {0, {{{0, 0}}}}, 0, 0 },
  { "czxup", 213, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxup", 214, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxup", 215, {0, {{{0, 0}}}}, 0, 0 },
  { "nxup", 216, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxup", 217, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxup", 218, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxup", 219, {0, {{{0, 0}}}}, 0, 0 },
  { "znxup", 220, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxup", 221, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxup", 222, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxup", 223, {0, {{{0, 0}}}}, 0, 0 },
  { "iup", 224, {0, {{{0, 0}}}}, 0, 0 },
  { "ciup", 225, {0, {{{0, 0}}}}, 0, 0 },
  { "viup", 226, {0, {{{0, 0}}}}, 0, 0 },
  { "cviup", 227, {0, {{{0, 0}}}}, 0, 0 },
  { "ziup", 228, {0, {{{0, 0}}}}, 0, 0 },
  { "cziup", 229, {0, {{{0, 0}}}}, 0, 0 },
  { "vziup", 230, {0, {{{0, 0}}}}, 0, 0 },
  { "cvziup", 231, {0, {{{0, 0}}}}, 0, 0 },
  { "niup", 232, {0, {{{0, 0}}}}, 0, 0 },
  { "cniup", 233, {0, {{{0, 0}}}}, 0, 0 },
  { "vniup", 234, {0, {{{0, 0}}}}, 0, 0 },
  { "cvniup", 235, {0, {{{0, 0}}}}, 0, 0 },
  { "zniup", 236, {0, {{{0, 0}}}}, 0, 0 },
  { "czniup", 237, {0, {{{0, 0}}}}, 0, 0 },
  { "vzniup", 238, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzniup", 239, {0, {{{0, 0}}}}, 0, 0 },
  { "xiup", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "cxiup", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "vxiup", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "cvxiup", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "zxiup", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "czxiup", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "vzxiup", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "cvzxiup", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "nxiup", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "cnxiup", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "vnxiup", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "cvnxiup", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "znxiup", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "cznxiup", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "vznxiup", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "cvznxiup", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_h_flagbits =
{
  & cris_cgen_opval_h_flagbits_entries[0],
  256,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_supr_entries[] =
{
  { "S0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "S1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "S2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "S3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "S4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "S5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "S6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "S7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "S8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "S9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "S10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "S11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "S12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "S13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "S14", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "S15", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD cris_cgen_opval_h_supr =
{
  & cris_cgen_opval_h_supr_entries[0],
  16,
  0, 0, 0, 0, ""
};


/* The hardware table.  */

#define A(a) (1 << CGEN_HW_##a)

const CGEN_HW_ENTRY cris_cgen_hw_table[] =
{
  { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-inc", HW_H_INC, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_inc, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ccode", HW_H_CCODE, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_ccode, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-swap", HW_H_SWAP, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_swap, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-flagbits", HW_H_FLAGBITS, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_flagbits, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-v32-v32", HW_H_V32, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-v32-non-v32", HW_H_V32, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-gr", HW_H_GR, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-gr-pc", HW_H_GR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_pcreg, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-gr-real-pc", HW_H_GR_REAL_PC, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_pcreg, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-raw-gr-pc", HW_H_RAW_GR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-gr-acr", HW_H_GR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_acr, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-raw-gr-acr", HW_H_RAW_GR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-sr", HW_H_SR, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-sr-v0", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV0), 0 } } } } },
  { "h-sr-v3", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV3), 0 } } } } },
  { "h-sr-v8", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV8), 0 } } } } },
  { "h-sr-v10", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV10), 0 } } } } },
  { "h-sr-v32", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v32, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-supr", HW_H_SUPR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cbit-move", HW_H_CBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cbit-move-v32", HW_H_CBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-cbit-move-pre-v32", HW_H_CBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-vbit", HW_H_VBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-vbit-move", HW_H_VBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-vbit-move-v32", HW_H_VBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-vbit-move-pre-v32", HW_H_VBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-zbit", HW_H_ZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-zbit-move", HW_H_ZBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-zbit-move-v32", HW_H_ZBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-zbit-move-pre-v32", HW_H_ZBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-nbit", HW_H_NBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-nbit-move", HW_H_NBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-nbit-move-v32", HW_H_NBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-nbit-move-pre-v32", HW_H_NBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-xbit", HW_H_XBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ibit", HW_H_IBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ibit-pre-v32", HW_H_IBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-pbit", HW_H_PBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } } },
  { "h-rbit", HW_H_RBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-ubit", HW_H_UBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ubit-pre-v32", HW_H_UBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV10), 0 } } } } },
  { "h-gbit", HW_H_GBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-kernel-sp", HW_H_KERNEL_SP, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-ubit-v32", HW_H_UBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-ibit-v32", HW_H_IBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-mbit", HW_H_MBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-qbit", HW_H_QBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-sbit", HW_H_SBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-insn-prefixed-p", HW_H_INSN_PREFIXED_P, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-insn-prefixed-p-pre-v32", HW_H_INSN_PREFIXED_P_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-insn-prefixed-p-v32", HW_H_INSN_PREFIXED_P_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { "h-prefixreg-pre-v32", HW_H_PREFIXREG, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
  { "h-prefixreg-v32", HW_H_PREFIXREG, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
  { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A


/* The instruction field table.  */

#define A(a) (1 << CGEN_IFLD_##a)

const CGEN_IFLD cris_cgen_ifld_table[] =
{
  { CRIS_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_OPERAND1, "f-operand1", 0, 16, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_SIZE, "f-size", 0, 16, 5, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_OPCODE, "f-opcode", 0, 16, 9, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_MODE, "f-mode", 0, 16, 11, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_OPERAND2, "f-operand2", 0, 16, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_MEMMODE, "f-memmode", 0, 16, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_MEMBIT, "f-membit", 0, 16, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_B5, "f-b5", 0, 16, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_OPCODE_HI, "f-opcode-hi", 0, 16, 9, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_DSTSRC, "f-dstsrc", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_U6, "f-u6", 0, 16, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_S6, "f-s6", 0, 16, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_U5, "f-u5", 0, 16, 4, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_U4, "f-u4", 0, 16, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_S8, "f-s8", 0, 16, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_DISP9_HI, "f-disp9-hi", 0, 16, 0, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_DISP9_LO, "f-disp9-lo", 0, 16, 7, 7, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_DISP9, "f-disp9", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_QO, "f-qo", 0, 16, 3, 4, { 0|A(PCREL_ADDR), { { { (1<<MACH_CRISV32), 0 } } } }  },
  { CRIS_F_INDIR_PC__BYTE, "f-indir-pc+-byte", 16, 16, 15, 16, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_INDIR_PC__WORD, "f-indir-pc+-word", 16, 16, 15, 16, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_INDIR_PC__WORD_PCREL, "f-indir-pc+-word-pcrel", 16, 16, 15, 16, { 0|A(SIGN_OPT)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_INDIR_PC__DWORD, "f-indir-pc+-dword", 16, 32, 31, 32, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
  { CRIS_F_INDIR_PC__DWORD_PCREL, "f-indir-pc+-dword-pcrel", 16, 32, 31, 32, { 0|A(PCREL_ADDR)|A(SIGN_OPT), { { { (1<<MACH_CRISV32), 0 } } } }  },
  { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A



/* multi ifield declarations */

const CGEN_MAYBE_MULTI_IFLD CRIS_F_DSTSRC_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD CRIS_F_DISP9_MULTI_IFIELD [];


/* multi ifield definitions */

const CGEN_MAYBE_MULTI_IFLD CRIS_F_DSTSRC_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND1] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD CRIS_F_DISP9_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_DISP9_HI] } },
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_DISP9_LO] } },
    { 0, { (const PTR) 0 } }
};

/* The operand table.  */

#define A(a) (1 << CGEN_OPERAND_##a)
#define OPERAND(op) CRIS_OPERAND_##op

const CGEN_OPERAND cris_cgen_operand_table[] =
{
/* pc: program counter */
  { "pc", CRIS_OPERAND_PC, HW_H_PC, 0, 0,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_NIL] } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* cbit:  */
  { "cbit", CRIS_OPERAND_CBIT, HW_H_CBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* cbit-move: cbit for pre-V32, nothing for newer */
  { "cbit-move", CRIS_OPERAND_CBIT_MOVE, HW_H_CBIT_MOVE, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* vbit:  */
  { "vbit", CRIS_OPERAND_VBIT, HW_H_VBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* vbit-move: vbit for pre-V32, nothing for newer */
  { "vbit-move", CRIS_OPERAND_VBIT_MOVE, HW_H_VBIT_MOVE, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* zbit:  */
  { "zbit", CRIS_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* zbit-move: zbit for pre-V32, nothing for newer */
  { "zbit-move", CRIS_OPERAND_ZBIT_MOVE, HW_H_ZBIT_MOVE, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* nbit:  */
  { "nbit", CRIS_OPERAND_NBIT, HW_H_NBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* nbit-move: nbit for pre-V32, nothing for newer */
  { "nbit-move", CRIS_OPERAND_NBIT_MOVE, HW_H_NBIT_MOVE, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* xbit:  */
  { "xbit", CRIS_OPERAND_XBIT, HW_H_XBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* ibit:  */
  { "ibit", CRIS_OPERAND_IBIT, HW_H_IBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* ubit:  */
  { "ubit", CRIS_OPERAND_UBIT, HW_H_UBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }  },
/* pbit:  */
  { "pbit", CRIS_OPERAND_PBIT, HW_H_PBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }  },
/* rbit: carry bit for MCP+restore-P flag bit */
  { "rbit", CRIS_OPERAND_RBIT, HW_H_RBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* sbit:  */
  { "sbit", CRIS_OPERAND_SBIT, HW_H_SBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* mbit:  */
  { "mbit", CRIS_OPERAND_MBIT, HW_H_MBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* qbit:  */
  { "qbit", CRIS_OPERAND_QBIT, HW_H_QBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* prefix-set: Instruction-prefixed flag */
  { "prefix-set", CRIS_OPERAND_PREFIX_SET, HW_H_INSN_PREFIXED_P, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* prefixreg: Prefix address */
  { "prefixreg", CRIS_OPERAND_PREFIXREG, HW_H_PREFIXREG, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* Rs: Source general register */
  { "Rs", CRIS_OPERAND_RS, HW_H_GR, 3, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* inc: Incrementness of indirect operand */
  { "inc", CRIS_OPERAND_INC, HW_H_INC, 10, 1,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_MEMMODE] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Ps: Source special register */
  { "Ps", CRIS_OPERAND_PS, HW_H_SR, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Ss: Source support register */
  { "Ss", CRIS_OPERAND_SS, HW_H_SUPR, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }  },
/* Sd: Destination support register */
  { "Sd", CRIS_OPERAND_SD, HW_H_SUPR, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }  },
/* i: Quick signed 6-bit */
  { "i", CRIS_OPERAND_I, HW_H_SINT, 5, 6,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_S6] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* j: Quick unsigned 6-bit */
  { "j", CRIS_OPERAND_J, HW_H_UINT, 5, 6,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U6] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* c: Quick unsigned 5-bit */
  { "c", CRIS_OPERAND_C, HW_H_UINT, 4, 5,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U5] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* qo: Quick unsigned 4-bit, PC-relative */
  { "qo", CRIS_OPERAND_QO, HW_H_ADDR, 3, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_QO] } }, 
    { 0|A(PCREL_ADDR), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* Rd: Destination general register */
  { "Rd", CRIS_OPERAND_RD, HW_H_GR, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sconst8: Signed byte [PC+] */
  { "sconst8", CRIS_OPERAND_SCONST8, HW_H_SINT, 15, 16,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__BYTE] } }, 
    { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
/* uconst8: Unsigned byte [PC+] */
  { "uconst8", CRIS_OPERAND_UCONST8, HW_H_UINT, 15, 16,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__BYTE] } }, 
    { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
/* sconst16: Signed word [PC+] */
  { "sconst16", CRIS_OPERAND_SCONST16, HW_H_SINT, 15, 16,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD] } }, 
    { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
/* uconst16: Unsigned word [PC+] */
  { "uconst16", CRIS_OPERAND_UCONST16, HW_H_UINT, 15, 16,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD] } }, 
    { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
/* const32: Dword [PC+] */
  { "const32", CRIS_OPERAND_CONST32, HW_H_UINT, 31, 32,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__DWORD] } }, 
    { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } }  },
/* const32-pcrel: Dword [PC+] */
  { "const32-pcrel", CRIS_OPERAND_CONST32_PCREL, HW_H_ADDR, 31, 32,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__DWORD_PCREL] } }, 
    { 0|A(PCREL_ADDR)|A(SIGN_OPT), { { { (1<<MACH_CRISV32), 0 } } } }  },
/* Pd: Destination special register */
  { "Pd", CRIS_OPERAND_PD, HW_H_SR, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* o: Signed 8-bit */
  { "o", CRIS_OPERAND_O, HW_H_SINT, 7, 8,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_S8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* o-pcrel: 9-bit signed immediate PC-rel */
  { "o-pcrel", CRIS_OPERAND_O_PCREL, HW_H_IADDR, 0, 8,
    { 2, { (const PTR) &CRIS_F_DISP9_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* o-word-pcrel: 16-bit signed immediate PC-rel */
  { "o-word-pcrel", CRIS_OPERAND_O_WORD_PCREL, HW_H_IADDR, 15, 16,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD_PCREL] } }, 
    { 0|A(SIGN_OPT)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* cc: Condition codes */
  { "cc", CRIS_OPERAND_CC, HW_H_CCODE, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* n: Quick unsigned 4-bit */
  { "n", CRIS_OPERAND_N, HW_H_UINT, 3, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* swapoption: Swap option */
  { "swapoption", CRIS_OPERAND_SWAPOPTION, HW_H_SWAP, 15, 4,
    { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* list-of-flags: Flag bits as operand */
  { "list-of-flags", CRIS_OPERAND_LIST_OF_FLAGS, HW_H_FLAGBITS, 3, 8,
    { 2, { (const PTR) &CRIS_F_DSTSRC_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* sentinel */
  { 0, 0, 0, 0, 0,
    { 0, { (const PTR) 0 } },
    { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A


/* The instruction table.  */

#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
#define A(a) (1 << CGEN_INSN_##a)

static const CGEN_IBASE cris_cgen_insn_table[MAX_INSNS] =
{
  /* Special null first entry.
     A `num' value of zero is thus invalid.
     Also, the special `invalid' insn resides here.  */
  { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
/* nop */
  {
    CRIS_INSN_NOP, "nop", "nop", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* move.b move.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVE_B_R, "move.b-r", "move.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.w move.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVE_W_R, "move.w-r", "move.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.d move.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVE_D_R, "move.d-r", "move.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.d PC,${Rd} */
  {
    CRIS_INSN_MOVEPCR, "movepcr", "move.d", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* moveq $i,$Rd */
  {
    CRIS_INSN_MOVEQ, "moveq", "moveq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs.b movs.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVS_B_R, "movs.b-r", "movs.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs.w movs.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVS_W_R, "movs.w-r", "movs.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu.b movu.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVU_B_R, "movu.b-r", "movu.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu.w movu.m ${Rs},${Rd} */
  {
    CRIS_INSN_MOVU_W_R, "movu.w-r", "movu.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.b ${sconst8},${Rd} */
  {
    CRIS_INSN_MOVECBR, "movecbr", "move.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.w ${sconst16},${Rd} */
  {
    CRIS_INSN_MOVECWR, "movecwr", "move.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move.d ${const32},${Rd} */
  {
    CRIS_INSN_MOVECDR, "movecdr", "move.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs.b ${sconst8},${Rd} */
  {
    CRIS_INSN_MOVSCBR, "movscbr", "movs.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs.w ${sconst16},${Rd} */
  {
    CRIS_INSN_MOVSCWR, "movscwr", "movs.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu.b ${uconst8},${Rd} */
  {
    CRIS_INSN_MOVUCBR, "movucbr", "movu.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu.w ${uconst16},${Rd} */
  {
    CRIS_INSN_MOVUCWR, "movucwr", "movu.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addq $j,$Rd */
  {
    CRIS_INSN_ADDQ, "addq", "addq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subq $j,$Rd */
  {
    CRIS_INSN_SUBQ, "subq", "subq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-r.b $Rs,$Rd */
  {
    CRIS_INSN_CMP_R_B_R, "cmp-r.b-r", "cmp-r.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-r.w $Rs,$Rd */
  {
    CRIS_INSN_CMP_R_W_R, "cmp-r.w-r", "cmp-r.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-r.d $Rs,$Rd */
  {
    CRIS_INSN_CMP_R_D_R, "cmp-r.d-r", "cmp-r.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_CMP_M_B_M, "cmp-m.b-m", "cmp-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_CMP_M_W_M, "cmp-m.w-m", "cmp-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_CMP_M_D_M, "cmp-m.d-m", "cmp-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp.b $sconst8,$Rd */
  {
    CRIS_INSN_CMPCBR, "cmpcbr", "cmp.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp.w $sconst16,$Rd */
  {
    CRIS_INSN_CMPCWR, "cmpcwr", "cmp.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmp.d $const32,$Rd */
  {
    CRIS_INSN_CMPCDR, "cmpcdr", "cmp.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmpq $i,$Rd */
  {
    CRIS_INSN_CMPQ, "cmpq", "cmpq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmps-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPS_M_B_M, "cmps-m.b-m", "cmps-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmps-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPS_M_W_M, "cmps-m.w-m", "cmps-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPSCBR, "cmpscbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPSCWR, "cmpscwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmpu-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPU_M_B_M, "cmpu-m.b-m", "cmpu-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* cmpu-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPU_M_W_M, "cmpu-m.w-m", "cmpu-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPUCBR, "cmpucbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_CMPUCWR, "cmpucwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVE_M_B_M, "move-m.b-m", "move-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVE_M_W_M, "move-m.w-m", "move-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVE_M_D_M, "move-m.d-m", "move-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVS_M_B_M, "movs-m.b-m", "movs-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movs-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVS_M_W_M, "movs-m.w-m", "movs-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVU_M_B_M, "movu-m.b-m", "movu-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* movu-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVU_M_W_M, "movu-m.w-m", "movu-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move ${Rs},${Pd} */
  {
    CRIS_INSN_MOVE_R_SPRV0, "move-r-sprv0", "move", 16,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${Rs},${Pd} */
  {
    CRIS_INSN_MOVE_R_SPRV3, "move-r-sprv3", "move", 16,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${Rs},${Pd} */
  {
    CRIS_INSN_MOVE_R_SPRV8, "move-r-sprv8", "move", 16,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${Rs},${Pd} */
  {
    CRIS_INSN_MOVE_R_SPRV10, "move-r-sprv10", "move", 16,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${Rs},${Pd} */
  {
    CRIS_INSN_MOVE_R_SPRV32, "move-r-sprv32", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${Ps},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SPR_RV0, "move-spr-rv0", "move", 16,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${Ps},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SPR_RV3, "move-spr-rv3", "move", 16,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${Ps},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SPR_RV8, "move-spr-rv8", "move", 16,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${Ps},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SPR_RV10, "move-spr-rv10", "move", 16,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${Ps},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SPR_RV32, "move-spr-rv32", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* ret/reti/retb */
  {
    CRIS_INSN_RET_TYPE, "ret-type", "ret/reti/retb", 16,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* move [${Rs}${inc}],${Pd} */
  {
    CRIS_INSN_MOVE_M_SPRV0, "move-m-sprv0", "move", 16,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move [${Rs}${inc}],${Pd} */
  {
    CRIS_INSN_MOVE_M_SPRV3, "move-m-sprv3", "move", 16,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move [${Rs}${inc}],${Pd} */
  {
    CRIS_INSN_MOVE_M_SPRV8, "move-m-sprv8", "move", 16,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move [${Rs}${inc}],${Pd} */
  {
    CRIS_INSN_MOVE_M_SPRV10, "move-m-sprv10", "move", 16,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move [${Rs}${inc}],${Pd} */
  {
    CRIS_INSN_MOVE_M_SPRV32, "move-m-sprv32", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P5, "move-c-sprv0-p5", "move", 32,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P9, "move-c-sprv0-p9", "move", 48,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P10, "move-c-sprv0-p10", "move", 48,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P11, "move-c-sprv0-p11", "move", 48,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P12, "move-c-sprv0-p12", "move", 48,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P13, "move-c-sprv0-p13", "move", 48,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P6, "move-c-sprv0-p6", "move", 32,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV0_P7, "move-c-sprv0-p7", "move", 32,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P5, "move-c-sprv3-p5", "move", 32,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P9, "move-c-sprv3-p9", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P10, "move-c-sprv3-p10", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P11, "move-c-sprv3-p11", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P12, "move-c-sprv3-p12", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P13, "move-c-sprv3-p13", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P6, "move-c-sprv3-p6", "move", 32,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P7, "move-c-sprv3-p7", "move", 32,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV3_P14, "move-c-sprv3-p14", "move", 48,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P5, "move-c-sprv8-p5", "move", 32,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P9, "move-c-sprv8-p9", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P10, "move-c-sprv8-p10", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P11, "move-c-sprv8-p11", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P12, "move-c-sprv8-p12", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P13, "move-c-sprv8-p13", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV8_P14, "move-c-sprv8-p14", "move", 48,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${sconst16},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P5, "move-c-sprv10-p5", "move", 32,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P9, "move-c-sprv10-p9", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P10, "move-c-sprv10-p10", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P11, "move-c-sprv10-p11", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P12, "move-c-sprv10-p12", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P13, "move-c-sprv10-p13", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P7, "move-c-sprv10-p7", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P14, "move-c-sprv10-p14", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV10_P15, "move-c-sprv10-p15", "move", 48,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P2, "move-c-sprv32-p2", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P3, "move-c-sprv32-p3", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P5, "move-c-sprv32-p5", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P6, "move-c-sprv32-p6", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P7, "move-c-sprv32-p7", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P9, "move-c-sprv32-p9", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P10, "move-c-sprv32-p10", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P11, "move-c-sprv32-p11", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P12, "move-c-sprv32-p12", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P13, "move-c-sprv32-p13", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P14, "move-c-sprv32-p14", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${const32},${Pd} */
  {
    CRIS_INSN_MOVE_C_SPRV32_P15, "move-c-sprv32-p15", "move", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${Ps},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_SPR_MV0, "move-spr-mv0", "move", 16,
    { 0, { { { (1<<MACH_CRISV0), 0 } } } }
  },
/* move ${Ps},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_SPR_MV3, "move-spr-mv3", "move", 16,
    { 0, { { { (1<<MACH_CRISV3), 0 } } } }
  },
/* move ${Ps},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_SPR_MV8, "move-spr-mv8", "move", 16,
    { 0, { { { (1<<MACH_CRISV8), 0 } } } }
  },
/* move ${Ps},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_SPR_MV10, "move-spr-mv10", "move", 16,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${Ps},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_SPR_MV32, "move-spr-mv32", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* sbfs [${Rd-sfield}${inc}] */
  {
    CRIS_INSN_SBFS, "sbfs", "sbfs", 16,
    { 0, { { { (1<<MACH_CRISV10), 0 } } } }
  },
/* move ${Ss},${Rd-sfield} */
  {
    CRIS_INSN_MOVE_SS_R, "move-ss-r", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* move ${Rs},${Sd} */
  {
    CRIS_INSN_MOVE_R_SS, "move-r-ss", "move", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVEM_R_M, "movem-r-m", "movem", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVEM_R_M_V32, "movem-r-m-v32", "movem", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* movem [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVEM_M_R, "movem-m-r", "movem", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* movem [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVEM_M_PC, "movem-m-pc", "movem", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* movem [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_MOVEM_M_R_V32, "movem-m-r-v32", "movem", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* add.b $Rs,$Rd */
  {
    CRIS_INSN_ADD_B_R, "add.b-r", "add.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.w $Rs,$Rd */
  {
    CRIS_INSN_ADD_W_R, "add.w-r", "add.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.d $Rs,$Rd */
  {
    CRIS_INSN_ADD_D_R, "add.d-r", "add.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_ADD_M_B_M, "add-m.b-m", "add-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_ADD_M_W_M, "add-m.w-m", "add-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_ADD_M_D_M, "add-m.d-m", "add-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.b ${sconst8}],${Rd} */
  {
    CRIS_INSN_ADDCBR, "addcbr", "add.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.w ${sconst16}],${Rd} */
  {
    CRIS_INSN_ADDCWR, "addcwr", "add.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.d ${const32}],${Rd} */
  {
    CRIS_INSN_ADDCDR, "addcdr", "add.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* add.d ${sconst32},PC */
  {
    CRIS_INSN_ADDCPC, "addcpc", "add.d", 48,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* adds.b $Rs,$Rd */
  {
    CRIS_INSN_ADDS_B_R, "adds.b-r", "adds.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* adds.w $Rs,$Rd */
  {
    CRIS_INSN_ADDS_W_R, "adds.w-r", "adds.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* adds-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDS_M_B_M, "adds-m.b-m", "adds-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* adds-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDS_M_W_M, "adds-m.w-m", "adds-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDSCBR, "addscbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDSCWR, "addscwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* adds.w [PC],PC */
  {
    CRIS_INSN_ADDSPCPC, "addspcpc", "adds.w", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* addu.b $Rs,$Rd */
  {
    CRIS_INSN_ADDU_B_R, "addu.b-r", "addu.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addu.w $Rs,$Rd */
  {
    CRIS_INSN_ADDU_W_R, "addu.w-r", "addu.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addu-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDU_M_B_M, "addu-m.b-m", "addu-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addu-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDU_M_W_M, "addu-m.w-m", "addu-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDUCBR, "adducbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_ADDUCWR, "adducwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.b $Rs,$Rd */
  {
    CRIS_INSN_SUB_B_R, "sub.b-r", "sub.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.w $Rs,$Rd */
  {
    CRIS_INSN_SUB_W_R, "sub.w-r", "sub.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.d $Rs,$Rd */
  {
    CRIS_INSN_SUB_D_R, "sub.d-r", "sub.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_SUB_M_B_M, "sub-m.b-m", "sub-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_SUB_M_W_M, "sub-m.w-m", "sub-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_SUB_M_D_M, "sub-m.d-m", "sub-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.b ${sconst8}],${Rd} */
  {
    CRIS_INSN_SUBCBR, "subcbr", "sub.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.w ${sconst16}],${Rd} */
  {
    CRIS_INSN_SUBCWR, "subcwr", "sub.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* sub.d ${const32}],${Rd} */
  {
    CRIS_INSN_SUBCDR, "subcdr", "sub.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subs.b $Rs,$Rd */
  {
    CRIS_INSN_SUBS_B_R, "subs.b-r", "subs.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subs.w $Rs,$Rd */
  {
    CRIS_INSN_SUBS_W_R, "subs.w-r", "subs.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subs-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBS_M_B_M, "subs-m.b-m", "subs-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subs-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBS_M_W_M, "subs-m.w-m", "subs-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBSCBR, "subscbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBSCWR, "subscwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subu.b $Rs,$Rd */
  {
    CRIS_INSN_SUBU_B_R, "subu.b-r", "subu.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subu.w $Rs,$Rd */
  {
    CRIS_INSN_SUBU_W_R, "subu.w-r", "subu.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subu-m.b [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBU_M_B_M, "subu-m.b-m", "subu-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* subu-m.w [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBU_M_W_M, "subu-m.w-m", "subu-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBUCBR, "subucbr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* [${Rs}${inc}],$Rd */
  {
    CRIS_INSN_SUBUCWR, "subucwr", "[", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addc $Rs,$Rd */
  {
    CRIS_INSN_ADDC_R, "addc-r", "addc", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* addc [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_ADDC_M, "addc-m", "addc", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* addc ${const32},${Rd} */
  {
    CRIS_INSN_ADDC_C, "addc-c", "addc", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* lapc.d ${const32-pcrel},${Rd} */
  {
    CRIS_INSN_LAPC_D, "lapc-d", "lapc.d", 48,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* lapcq ${qo},${Rd} */
  {
    CRIS_INSN_LAPCQ, "lapcq", "lapcq", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* addi.b ${Rs-dfield}.m,${Rd-sfield} */
  {
    CRIS_INSN_ADDI_B_R, "addi.b-r", "addi.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addi.w ${Rs-dfield}.m,${Rd-sfield} */
  {
    CRIS_INSN_ADDI_W_R, "addi.w-r", "addi.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addi.d ${Rs-dfield}.m,${Rd-sfield} */
  {
    CRIS_INSN_ADDI_D_R, "addi.d-r", "addi.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* neg.b $Rs,$Rd */
  {
    CRIS_INSN_NEG_B_R, "neg.b-r", "neg.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* neg.w $Rs,$Rd */
  {
    CRIS_INSN_NEG_W_R, "neg.w-r", "neg.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* neg.d $Rs,$Rd */
  {
    CRIS_INSN_NEG_D_R, "neg.d-r", "neg.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* test-m.b [${Rs}${inc}] */
  {
    CRIS_INSN_TEST_M_B_M, "test-m.b-m", "test-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* test-m.w [${Rs}${inc}] */
  {
    CRIS_INSN_TEST_M_W_M, "test-m.w-m", "test-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* test-m.d [${Rs}${inc}] */
  {
    CRIS_INSN_TEST_M_D_M, "test-m.d-m", "test-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_R_M_B_M, "move-r-m.b-m", "move-r-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_R_M_W_M, "move-r-m.w-m", "move-r-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
  {
    CRIS_INSN_MOVE_R_M_D_M, "move-r-m.d-m", "move-r-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* muls.b $Rs,$Rd */
  {
    CRIS_INSN_MULS_B, "muls.b", "muls.b", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* muls.w $Rs,$Rd */
  {
    CRIS_INSN_MULS_W, "muls.w", "muls.w", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* muls.d $Rs,$Rd */
  {
    CRIS_INSN_MULS_D, "muls.d", "muls.d", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* mulu.b $Rs,$Rd */
  {
    CRIS_INSN_MULU_B, "mulu.b", "mulu.b", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* mulu.w $Rs,$Rd */
  {
    CRIS_INSN_MULU_W, "mulu.w", "mulu.w", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* mulu.d $Rs,$Rd */
  {
    CRIS_INSN_MULU_D, "mulu.d", "mulu.d", 16,
    { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* mcp $Ps,$Rd */
  {
    CRIS_INSN_MCP, "mcp", "mcp", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* mstep $Rs,$Rd */
  {
    CRIS_INSN_MSTEP, "mstep", "mstep", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* dstep $Rs,$Rd */
  {
    CRIS_INSN_DSTEP, "dstep", "dstep", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* abs $Rs,$Rd */
  {
    CRIS_INSN_ABS, "abs", "abs", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.b $Rs,$Rd */
  {
    CRIS_INSN_AND_B_R, "and.b-r", "and.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.w $Rs,$Rd */
  {
    CRIS_INSN_AND_W_R, "and.w-r", "and.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.d $Rs,$Rd */
  {
    CRIS_INSN_AND_D_R, "and.d-r", "and.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_AND_M_B_M, "and-m.b-m", "and-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_AND_M_W_M, "and-m.w-m", "and-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_AND_M_D_M, "and-m.d-m", "and-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.b ${sconst8}],${Rd} */
  {
    CRIS_INSN_ANDCBR, "andcbr", "and.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.w ${sconst16}],${Rd} */
  {
    CRIS_INSN_ANDCWR, "andcwr", "and.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* and.d ${const32}],${Rd} */
  {
    CRIS_INSN_ANDCDR, "andcdr", "and.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* andq $i,$Rd */
  {
    CRIS_INSN_ANDQ, "andq", "andq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* orr.b $Rs,$Rd */
  {
    CRIS_INSN_ORR_B_R, "orr.b-r", "orr.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* orr.w $Rs,$Rd */
  {
    CRIS_INSN_ORR_W_R, "orr.w-r", "orr.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* orr.d $Rs,$Rd */
  {
    CRIS_INSN_ORR_D_R, "orr.d-r", "orr.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_OR_M_B_M, "or-m.b-m", "or-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_OR_M_W_M, "or-m.w-m", "or-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_OR_M_D_M, "or-m.d-m", "or-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or.b ${sconst8}],${Rd} */
  {
    CRIS_INSN_ORCBR, "orcbr", "or.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or.w ${sconst16}],${Rd} */
  {
    CRIS_INSN_ORCWR, "orcwr", "or.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* or.d ${const32}],${Rd} */
  {
    CRIS_INSN_ORCDR, "orcdr", "or.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* orq $i,$Rd */
  {
    CRIS_INSN_ORQ, "orq", "orq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* xor $Rs,$Rd */
  {
    CRIS_INSN_XOR, "xor", "xor", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* not ${Rs} */
  {
    CRIS_INSN_NOT, "not", "not", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3), 0 } } } }
  },
/* swap${swapoption} ${Rs} */
  {
    CRIS_INSN_SWAP, "swap", "swap", 16,
    { 0, { { { (1<<MACH_CRISV8)|(1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* asrr.b $Rs,$Rd */
  {
    CRIS_INSN_ASRR_B_R, "asrr.b-r", "asrr.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* asrr.w $Rs,$Rd */
  {
    CRIS_INSN_ASRR_W_R, "asrr.w-r", "asrr.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* asrr.d $Rs,$Rd */
  {
    CRIS_INSN_ASRR_D_R, "asrr.d-r", "asrr.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* asrq $c,${Rd} */
  {
    CRIS_INSN_ASRQ, "asrq", "asrq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lsrr.b $Rs,$Rd */
  {
    CRIS_INSN_LSRR_B_R, "lsrr.b-r", "lsrr.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lsrr.w $Rs,$Rd */
  {
    CRIS_INSN_LSRR_W_R, "lsrr.w-r", "lsrr.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lsrr.d $Rs,$Rd */
  {
    CRIS_INSN_LSRR_D_R, "lsrr.d-r", "lsrr.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lsrq $c,${Rd} */
  {
    CRIS_INSN_LSRQ, "lsrq", "lsrq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lslr.b $Rs,$Rd */
  {
    CRIS_INSN_LSLR_B_R, "lslr.b-r", "lslr.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lslr.w $Rs,$Rd */
  {
    CRIS_INSN_LSLR_W_R, "lslr.w-r", "lslr.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lslr.d $Rs,$Rd */
  {
    CRIS_INSN_LSLR_D_R, "lslr.d-r", "lslr.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lslq $c,${Rd} */
  {
    CRIS_INSN_LSLQ, "lslq", "lslq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* $Rs,$Rd */
  {
    CRIS_INSN_BTST, "btst", "", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* btstq $c,${Rd} */
  {
    CRIS_INSN_BTSTQ, "btstq", "btstq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* setf ${list-of-flags} */
  {
    CRIS_INSN_SETF, "setf", "setf", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* clearf ${list-of-flags} */
  {
    CRIS_INSN_CLEARF, "clearf", "clearf", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* rfe */
  {
    CRIS_INSN_RFE, "rfe", "rfe", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* sfe */
  {
    CRIS_INSN_SFE, "sfe", "sfe", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* rfg */
  {
    CRIS_INSN_RFG, "rfg", "rfg", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* rfn */
  {
    CRIS_INSN_RFN, "rfn", "rfn", 16,
    { 0, { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* halt */
  {
    CRIS_INSN_HALT, "halt", "halt", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* b${cc} ${o-pcrel} */
  {
    CRIS_INSN_BCC_B, "bcc-b", "b", 16,
    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
  },
/* ba ${o-pcrel} */
  {
    CRIS_INSN_BA_B, "ba-b", "ba", 16,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
  },
/* b${cc} ${o-word-pcrel} */
  {
    CRIS_INSN_BCC_W, "bcc-w", "b", 32,
    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
  },
/* ba ${o-word-pcrel} */
  {
    CRIS_INSN_BA_W, "ba-w", "ba", 32,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
  },
/* jas ${Rs},${Pd} */
  {
    CRIS_INSN_JAS_R, "jas-r", "jas", 16,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* jump/jsr/jir ${Rs} */
  {
    CRIS_INSN_JUMP_R, "jump-r", "jump/jsr/jir", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* jas ${const32},${Pd} */
  {
    CRIS_INSN_JAS_C, "jas-c", "jas", 48,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* jump/jsr/jir [${Rs}${inc}] */
  {
    CRIS_INSN_JUMP_M, "jump-m", "jump/jsr/jir", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* jump/jsr/jir ${const32} */
  {
    CRIS_INSN_JUMP_C, "jump-c", "jump/jsr/jir", 48,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* jump ${Ps} */
  {
    CRIS_INSN_JUMP_P, "jump-p", "jump", 16,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* bas ${const32},${Pd} */
  {
    CRIS_INSN_BAS_C, "bas-c", "bas", 48,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* jasc ${Rs},${Pd} */
  {
    CRIS_INSN_JASC_R, "jasc-r", "jasc", 16,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* jasc ${const32},${Pd} */
  {
    CRIS_INSN_JASC_C, "jasc-c", "jasc", 48,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* basc ${const32},${Pd} */
  {
    CRIS_INSN_BASC_C, "basc-c", "basc", 48,
    { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* break $n */
  {
    CRIS_INSN_BREAK, "break", "break", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound-r.b ${Rs},${Rd} */
  {
    CRIS_INSN_BOUND_R_B_R, "bound-r.b-r", "bound-r.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound-r.w ${Rs},${Rd} */
  {
    CRIS_INSN_BOUND_R_W_R, "bound-r.w-r", "bound-r.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound-r.d ${Rs},${Rd} */
  {
    CRIS_INSN_BOUND_R_D_R, "bound-r.d-r", "bound-r.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound-m.b [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_BOUND_M_B_M, "bound-m.b-m", "bound-m.b", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* bound-m.w [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_BOUND_M_W_M, "bound-m.w-m", "bound-m.w", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* bound-m.d [${Rs}${inc}],${Rd} */
  {
    CRIS_INSN_BOUND_M_D_M, "bound-m.d-m", "bound-m.d", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* bound.b [PC+],${Rd} */
  {
    CRIS_INSN_BOUND_CB, "bound-cb", "bound.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound.w [PC+],${Rd} */
  {
    CRIS_INSN_BOUND_CW, "bound-cw", "bound.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bound.d [PC+],${Rd} */
  {
    CRIS_INSN_BOUND_CD, "bound-cd", "bound.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* s${cc} ${Rd-sfield} */
  {
    CRIS_INSN_SCC, "scc", "s", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* lz ${Rs},${Rd} */
  {
    CRIS_INSN_LZ, "lz", "lz", 16,
    { 0, { { { (1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
  },
/* addoq $o,$Rs,ACR */
  {
    CRIS_INSN_ADDOQ, "addoq", "addoq", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* bdapq $o,PC */
  {
    CRIS_INSN_BDAPQPC, "bdapqpc", "bdapq", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* bdap ${sconst32},PC */
  {
    CRIS_INSN_BDAP_32_PC, "bdap-32-pc", "bdap", 48,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* move [PC+],P0 */
  {
    CRIS_INSN_MOVE_M_PCPLUS_P0, "move-m-pcplus-p0", "move", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* move [SP+],P8 */
  {
    CRIS_INSN_MOVE_M_SPPLUS_P8, "move-m-spplus-p8", "move", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* addo-m.b [${Rs}${inc}],$Rd,ACR */
  {
    CRIS_INSN_ADDO_M_B_M, "addo-m.b-m", "addo-m.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addo-m.w [${Rs}${inc}],$Rd,ACR */
  {
    CRIS_INSN_ADDO_M_W_M, "addo-m.w-m", "addo-m.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addo-m.d [${Rs}${inc}],$Rd,ACR */
  {
    CRIS_INSN_ADDO_M_D_M, "addo-m.d-m", "addo-m.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addo.b [PC+],$Rd,ACR */
  {
    CRIS_INSN_ADDO_CB, "addo-cb", "addo.b", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addo.w [PC+],$Rd,ACR */
  {
    CRIS_INSN_ADDO_CW, "addo-cw", "addo.w", 32,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addo.d [PC+],$Rd,ACR */
  {
    CRIS_INSN_ADDO_CD, "addo-cd", "addo.d", 48,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* dip [${Rs}${inc}] */
  {
    CRIS_INSN_DIP_M, "dip-m", "dip", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* dip [PC+] */
  {
    CRIS_INSN_DIP_C, "dip-c", "dip", 48,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
  {
    CRIS_INSN_ADDI_ACR_B_R, "addi-acr.b-r", "addi-acr.b", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
  {
    CRIS_INSN_ADDI_ACR_W_R, "addi-acr.w-r", "addi-acr.w", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
  {
    CRIS_INSN_ADDI_ACR_D_R, "addi-acr.d-r", "addi-acr.d", 16,
    { 0, { { { (1<<MACH_BASE), 0 } } } }
  },
/* biap-pc.b ${Rs-dfield}.m,PC */
  {
    CRIS_INSN_BIAP_PC_B_R, "biap-pc.b-r", "biap-pc.b", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* biap-pc.w ${Rs-dfield}.m,PC */
  {
    CRIS_INSN_BIAP_PC_W_R, "biap-pc.w-r", "biap-pc.w", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* biap-pc.d ${Rs-dfield}.m,PC */
  {
    CRIS_INSN_BIAP_PC_D_R, "biap-pc.d-r", "biap-pc.d", 16,
    { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
  },
/* fidxi [$Rs] */
  {
    CRIS_INSN_FIDXI, "fidxi", "fidxi", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* fidxi [$Rs] */
  {
    CRIS_INSN_FTAGI, "ftagi", "fidxi", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* fidxd [$Rs] */
  {
    CRIS_INSN_FIDXD, "fidxd", "fidxd", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
  },
/* ftagd [$Rs] */
  {
    CRIS_INSN_FTAGD, "ftagd", "ftagd", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
  },
};

#undef OP
#undef A

/* Initialize anything needed to be done once, before any cpu_open call.  */

static void
init_tables (void)
{
}

#ifndef opcodes_error_handler
#define opcodes_error_handler(...) \
  fprintf (stderr, __VA_ARGS__); fputc ('\n', stderr)
#endif

static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
static void build_hw_table      (CGEN_CPU_TABLE *);
static void build_ifield_table  (CGEN_CPU_TABLE *);
static void build_operand_table (CGEN_CPU_TABLE *);
static void build_insn_table    (CGEN_CPU_TABLE *);
static void cris_cgen_rebuild_tables (CGEN_CPU_TABLE *);

/* Subroutine of cris_cgen_cpu_open to look up a mach via its bfd name.  */

static const CGEN_MACH *
lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
{
  while (table->name)
    {
      if (strcmp (name, table->bfd_name) == 0)
	return table;
      ++table;
    }
  return NULL;
}

/* Subroutine of cris_cgen_cpu_open to build the hardware table.  */

static void
build_hw_table (CGEN_CPU_TABLE *cd)
{
  int i;
  int machs = cd->machs;
  const CGEN_HW_ENTRY *init = & cris_cgen_hw_table[0];
  /* MAX_HW is only an upper bound on the number of selected entries.
     However each entry is indexed by it's enum so there can be holes in
     the table.  */
  const CGEN_HW_ENTRY **selected =
    (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));

  cd->hw_table.init_entries = init;
  cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
  memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
  /* ??? For now we just use machs to determine which ones we want.  */
  for (i = 0; init[i].name != NULL; ++i)
    if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
	& machs)
      selected[init[i].type] = &init[i];
  cd->hw_table.entries = selected;
  cd->hw_table.num_entries = MAX_HW;
}

/* Subroutine of cris_cgen_cpu_open to build the hardware table.  */

static void
build_ifield_table (CGEN_CPU_TABLE *cd)
{
  cd->ifld_table = & cris_cgen_ifld_table[0];
}

/* Subroutine of cris_cgen_cpu_open to build the hardware table.  */

static void
build_operand_table (CGEN_CPU_TABLE *cd)
{
  int i;
  int machs = cd->machs;
  const CGEN_OPERAND *init = & cris_cgen_operand_table[0];
  /* MAX_OPERANDS is only an upper bound on the number of selected entries.
     However each entry is indexed by it's enum so there can be holes in
     the table.  */
  const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));

  cd->operand_table.init_entries = init;
  cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
  memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
  /* ??? For now we just use mach to determine which ones we want.  */
  for (i = 0; init[i].name != NULL; ++i)
    if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
	& machs)
      selected[init[i].type] = &init[i];
  cd->operand_table.entries = selected;
  cd->operand_table.num_entries = MAX_OPERANDS;
}

/* Subroutine of cris_cgen_cpu_open to build the hardware table.
   ??? This could leave out insns not supported by the specified mach/isa,
   but that would cause errors like "foo only supported by bar" to become
   "unknown insn", so for now we include all insns and require the app to
   do the checking later.
   ??? On the other hand, parsing of such insns may require their hardware or
   operand elements to be in the table [which they mightn't be].  */

static void
build_insn_table (CGEN_CPU_TABLE *cd)
{
  int i;
  const CGEN_IBASE *ib = & cris_cgen_insn_table[0];
  CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));

  memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
  for (i = 0; i < MAX_INSNS; ++i)
    insns[i].base = &ib[i];
  cd->insn_table.init_entries = insns;
  cd->insn_table.entry_size = sizeof (CGEN_IBASE);
  cd->insn_table.num_init_entries = MAX_INSNS;
}

/* Subroutine of cris_cgen_cpu_open to rebuild the tables.  */

static void
cris_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
{
  int i;
  CGEN_BITSET *isas = cd->isas;
  unsigned int machs = cd->machs;

  cd->int_insn_p = CGEN_INT_INSN_P;

  /* Data derived from the isa spec.  */
#define UNSET (CGEN_SIZE_UNKNOWN + 1)
  cd->default_insn_bitsize = UNSET;
  cd->base_insn_bitsize = UNSET;
  cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
  cd->max_insn_bitsize = 0;
  for (i = 0; i < MAX_ISAS; ++i)
    if (cgen_bitset_contains (isas, i))
      {
	const CGEN_ISA *isa = & cris_cgen_isa_table[i];

	/* Default insn sizes of all selected isas must be
	   equal or we set the result to 0, meaning "unknown".  */
	if (cd->default_insn_bitsize == UNSET)
	  cd->default_insn_bitsize = isa->default_insn_bitsize;
	else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
	  ; /* This is ok.  */
	else
	  cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;

	/* Base insn sizes of all selected isas must be equal
	   or we set the result to 0, meaning "unknown".  */
	if (cd->base_insn_bitsize == UNSET)
	  cd->base_insn_bitsize = isa->base_insn_bitsize;
	else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
	  ; /* This is ok.  */
	else
	  cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;

	/* Set min,max insn sizes.  */
	if (isa->min_insn_bitsize < cd->min_insn_bitsize)
	  cd->min_insn_bitsize = isa->min_insn_bitsize;
	if (isa->max_insn_bitsize > cd->max_insn_bitsize)
	  cd->max_insn_bitsize = isa->max_insn_bitsize;
      }

  /* Data derived from the mach spec.  */
  for (i = 0; i < MAX_MACHS; ++i)
    if (((1 << i) & machs) != 0)
      {
	const CGEN_MACH *mach = & cris_cgen_mach_table[i];

	if (mach->insn_chunk_bitsize != 0)
	{
	  if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
	    {
	      opcodes_error_handler
		(/* xgettext:c-format */
		 _("internal error: cris_cgen_rebuild_tables: "
		   "conflicting insn-chunk-bitsize values: `%d' vs. `%d'"),
		 cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
	      abort ();
	    }

 	  cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
	}
      }

  /* Determine which hw elements are used by MACH.  */
  build_hw_table (cd);

  /* Build the ifield table.  */
  build_ifield_table (cd);

  /* Determine which operands are used by MACH/ISA.  */
  build_operand_table (cd);

  /* Build the instruction table.  */
  build_insn_table (cd);
}

/* Initialize a cpu table and return a descriptor.
   It's much like opening a file, and must be the first function called.
   The arguments are a set of (type/value) pairs, terminated with
   CGEN_CPU_OPEN_END.

   Currently supported values:
   CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
   CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
   CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
   CGEN_CPU_OPEN_ENDIAN:  specify endian choice
   CGEN_CPU_OPEN_INSN_ENDIAN: specify instruction endian choice
   CGEN_CPU_OPEN_END:     terminates arguments

   ??? Simultaneous multiple isas might not make sense, but it's not (yet)
   precluded.  */

CGEN_CPU_DESC
cris_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
{
  CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
  static int init_p;
  CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
  unsigned int machs = 0; /* 0 = "unspecified" */
  enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
  enum cgen_endian insn_endian = CGEN_ENDIAN_UNKNOWN;
  va_list ap;

  if (! init_p)
    {
      init_tables ();
      init_p = 1;
    }

  memset (cd, 0, sizeof (*cd));

  va_start (ap, arg_type);
  while (arg_type != CGEN_CPU_OPEN_END)
    {
      switch (arg_type)
	{
	case CGEN_CPU_OPEN_ISAS :
	  isas = va_arg (ap, CGEN_BITSET *);
	  break;
	case CGEN_CPU_OPEN_MACHS :
	  machs = va_arg (ap, unsigned int);
	  break;
	case CGEN_CPU_OPEN_BFDMACH :
	  {
	    const char *name = va_arg (ap, const char *);
	    const CGEN_MACH *mach =
	      lookup_mach_via_bfd_name (cris_cgen_mach_table, name);

	    if (mach != NULL)
	      machs |= 1 << mach->num;
	    break;
	  }
	case CGEN_CPU_OPEN_ENDIAN :
	  endian = va_arg (ap, enum cgen_endian);
	  break;
	case CGEN_CPU_OPEN_INSN_ENDIAN :
	  insn_endian = va_arg (ap, enum cgen_endian);
	  break;
	default :
	  opcodes_error_handler
	    (/* xgettext:c-format */
	     _("internal error: cris_cgen_cpu_open: "
	       "unsupported argument `%d'"),
	     arg_type);
	  abort (); /* ??? return NULL? */
	}
      arg_type = va_arg (ap, enum cgen_cpu_open_arg);
    }
  va_end (ap);

  /* Mach unspecified means "all".  */
  if (machs == 0)
    machs = (1 << MAX_MACHS) - 1;
  /* Base mach is always selected.  */
  machs |= 1;
  if (endian == CGEN_ENDIAN_UNKNOWN)
    {
      /* ??? If target has only one, could have a default.  */
      opcodes_error_handler
	(/* xgettext:c-format */
	 _("internal error: cris_cgen_cpu_open: no endianness specified"));
      abort ();
    }

  cd->isas = cgen_bitset_copy (isas);
  cd->machs = machs;
  cd->endian = endian;
  cd->insn_endian
    = (insn_endian == CGEN_ENDIAN_UNKNOWN ? endian : insn_endian);

  /* Table (re)builder.  */
  cd->rebuild_tables = cris_cgen_rebuild_tables;
  cris_cgen_rebuild_tables (cd);

  /* Default to not allowing signed overflow.  */
  cd->signed_overflow_ok_p = 0;
  
  return (CGEN_CPU_DESC) cd;
}

/* Cover fn to cris_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
   MACH_NAME is the bfd name of the mach.  */

CGEN_CPU_DESC
cris_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
{
  return cris_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
			       CGEN_CPU_OPEN_ENDIAN, endian,
			       CGEN_CPU_OPEN_END);
}

/* Close a cpu table.
   ??? This can live in a machine independent file, but there's currently
   no place to put this file (there's no libcgen).  libopcodes is the wrong
   place as some simulator ports use this but they don't use libopcodes.  */

void
cris_cgen_cpu_close (CGEN_CPU_DESC cd)
{
  unsigned int i;
  const CGEN_INSN *insns;

  if (cd->macro_insn_table.init_entries)
    {
      insns = cd->macro_insn_table.init_entries;
      for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
	if (CGEN_INSN_RX ((insns)))
	  regfree (CGEN_INSN_RX (insns));
    }

  if (cd->insn_table.init_entries)
    {
      insns = cd->insn_table.init_entries;
      for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
	if (CGEN_INSN_RX (insns))
	  regfree (CGEN_INSN_RX (insns));
    }  

  free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
  free ((CGEN_INSN *) cd->insn_table.init_entries);
  free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
  free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
  free (cd);
}

