/* CPU data for xc16x.

THIS FILE IS MACHINE GENERATED WITH CGEN.

Copyright 1996-2010 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 "xc16x-desc.h"
#include "xc16x-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 },
  { "xc16x", MACH_XC16X },
  { "max", MACH_MAX },
  { 0, 0 }
};

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

static const CGEN_ATTR_ENTRY PIPE_attr[] ATTRIBUTE_UNUSED =
{
  { "NONE", PIPE_NONE },
  { "OS", PIPE_OS },
  { 0, 0 }
};

const CGEN_ATTR_TABLE xc16x_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] },
  { "RELOC", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE xc16x_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 xc16x_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] },
  { "RELOC", &bool_attr[0], &bool_attr[0] },
  { "HASH-PREFIX", &bool_attr[0], &bool_attr[0] },
  { "DOT-PREFIX", &bool_attr[0], &bool_attr[0] },
  { "POF-PREFIX", &bool_attr[0], &bool_attr[0] },
  { "PAG-PREFIX", &bool_attr[0], &bool_attr[0] },
  { "SOF-PREFIX", &bool_attr[0], &bool_attr[0] },
  { "SEG-PREFIX", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE xc16x_cgen_insn_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "PIPE", & PIPE_attr[0], & PIPE_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 xc16x_cgen_isa_table[] = {
  { "xc16x", 16, 32, 16, 32 },
  { 0, 0, 0, 0, 0 }
};

/* Machine variants.  */

static const CGEN_MACH xc16x_cgen_mach_table[] = {
  { "xc16x", "xc16x", MACH_XC16X, 32 },
  { 0, 0, 0, 0 }
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_gr_names_entries[] =
{
  { "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 },
  { "r15", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_gr_names =
{
  & xc16x_cgen_opval_gr_names_entries[0],
  16,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_ext_names_entries[] =
{
  { "0x1", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "0x2", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "0x3", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "0x4", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "1", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "2", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "3", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "4", 3, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_ext_names =
{
  & xc16x_cgen_opval_ext_names_entries[0],
  8,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_psw_names_entries[] =
{
  { "IEN", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "r0.11", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "r1.11", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "r2.11", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "r3.11", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "r4.11", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "r5.11", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "r6.11", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "r7.11", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "r8.11", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "r9.11", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "r10.11", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "r11.11", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "r12.11", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "r13.11", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "r14.11", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "r15.11", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_psw_names =
{
  & xc16x_cgen_opval_psw_names_entries[0],
  17,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_grb_names_entries[] =
{
  { "rl0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "rh0", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "rl1", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "rh1", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "rl2", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "rh2", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "rl3", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "rh3", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "rl4", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "rh4", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "rl5", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "rh5", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "rl6", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "rh6", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "rl7", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "rh7", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_grb_names =
{
  & xc16x_cgen_opval_grb_names_entries[0],
  16,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_conditioncode_names_entries[] =
{
  { "cc_UC", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NET", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_Z", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_EQ", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NZ", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NE", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_V", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NV", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_N", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NN", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_ULT", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_UGE", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_C", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NC", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SGT", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SLE", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SLT", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SGE", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_UGT", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_ULE", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_conditioncode_names =
{
  & xc16x_cgen_opval_conditioncode_names_entries[0],
  20,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_extconditioncode_names_entries[] =
{
  { "cc_UC", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NET", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_Z", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_EQ", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NZ", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NE", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_V", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NV", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_N", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NN", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_ULT", 16, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_UGE", 18, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_C", 16, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_NC", 18, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SGT", 20, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SLE", 22, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SLT", 24, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_SGE", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_UGT", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_ULE", 30, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_nusr0", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_nusr1", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_usr0", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "cc_usr1", 7, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_extconditioncode_names =
{
  & xc16x_cgen_opval_extconditioncode_names_entries[0],
  24,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_grb8_names_entries[] =
{
  { "dpp0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "psw", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "mdl", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "mdh", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "mdc", 135, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "csp", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "vecseg", 137, {0, {{{0, 0}}}}, 0, 0 },
  { "stkov", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "stkun", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon1", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon2", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "zeros", 142, {0, {{{0, 0}}}}, 0, 0 },
  { "ones", 143, {0, {{{0, 0}}}}, 0, 0 },
  { "spseg", 134, {0, {{{0, 0}}}}, 0, 0 },
  { "tfr", 214, {0, {{{0, 0}}}}, 0, 0 },
  { "rl0", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "rh0", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "rl1", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "rh1", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "rl2", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "rh2", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "rl3", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "rh3", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "rl4", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "rh4", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "rl5", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "rh5", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "rl6", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "rh6", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "rl7", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "rh7", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_grb8_names =
{
  & xc16x_cgen_opval_grb8_names_entries[0],
  36,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_r8_names_entries[] =
{
  { "dpp0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "psw", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "mdl", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "mdh", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "mdc", 135, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "csp", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "vecseg", 137, {0, {{{0, 0}}}}, 0, 0 },
  { "stkov", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "stkun", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon1", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon2", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "zeros", 142, {0, {{{0, 0}}}}, 0, 0 },
  { "ones", 143, {0, {{{0, 0}}}}, 0, 0 },
  { "spseg", 134, {0, {{{0, 0}}}}, 0, 0 },
  { "tfr", 214, {0, {{{0, 0}}}}, 0, 0 },
  { "r0", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "r1", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "r2", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "r3", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "r4", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "r5", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "r6", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "r7", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "r8", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "r9", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "r10", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "r11", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "r12", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_r8_names =
{
  & xc16x_cgen_opval_r8_names_entries[0],
  36,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_regmem8_names_entries[] =
{
  { "dpp0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "psw", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "mdl", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "mdh", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "mdc", 135, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "csp", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "vecseg", 137, {0, {{{0, 0}}}}, 0, 0 },
  { "stkov", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "stkun", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon1", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon2", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "zeros", 142, {0, {{{0, 0}}}}, 0, 0 },
  { "ones", 143, {0, {{{0, 0}}}}, 0, 0 },
  { "spseg", 134, {0, {{{0, 0}}}}, 0, 0 },
  { "tfr", 214, {0, {{{0, 0}}}}, 0, 0 },
  { "r0", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "r1", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "r2", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "r3", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "r4", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "r5", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "r6", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "r7", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "r8", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "r9", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "r10", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "r11", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "r12", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_regmem8_names =
{
  & xc16x_cgen_opval_regmem8_names_entries[0],
  36,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_regdiv8_names_entries[] =
{
  { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r1", 17, {0, {{{0, 0}}}}, 0, 0 },
  { "r2", 34, {0, {{{0, 0}}}}, 0, 0 },
  { "r3", 51, {0, {{{0, 0}}}}, 0, 0 },
  { "r4", 68, {0, {{{0, 0}}}}, 0, 0 },
  { "r5", 85, {0, {{{0, 0}}}}, 0, 0 },
  { "r6", 102, {0, {{{0, 0}}}}, 0, 0 },
  { "r7", 119, {0, {{{0, 0}}}}, 0, 0 },
  { "r8", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "r9", 153, {0, {{{0, 0}}}}, 0, 0 },
  { "r10", 170, {0, {{{0, 0}}}}, 0, 0 },
  { "r11", 187, {0, {{{0, 0}}}}, 0, 0 },
  { "r12", 204, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 221, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 238, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_regdiv8_names =
{
  & xc16x_cgen_opval_regdiv8_names_entries[0],
  16,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_reg0_name_entries[] =
{
  { "0x1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "0x2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "0x3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "0x4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "0x5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "0x6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "0x7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "0x8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "0x9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "0xa", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "0xb", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "0xc", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "0xd", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "0xe", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "0xf", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "14", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "15", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_reg0_name =
{
  & xc16x_cgen_opval_reg0_name_entries[0],
  30,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_reg0_name1_entries[] =
{
  { "0x1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "0x2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "0x3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "0x4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "0x5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "0x6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "0x7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "7", 7, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_reg0_name1 =
{
  & xc16x_cgen_opval_reg0_name1_entries[0],
  14,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_regbmem8_names_entries[] =
{
  { "dpp0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "psw", 136, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "mdl", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "mdh", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "mdc", 135, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "csp", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "vecseg", 137, {0, {{{0, 0}}}}, 0, 0 },
  { "stkov", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "stkun", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon1", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon2", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "zeros", 142, {0, {{{0, 0}}}}, 0, 0 },
  { "ones", 143, {0, {{{0, 0}}}}, 0, 0 },
  { "spseg", 134, {0, {{{0, 0}}}}, 0, 0 },
  { "tfr", 214, {0, {{{0, 0}}}}, 0, 0 },
  { "rl0", 240, {0, {{{0, 0}}}}, 0, 0 },
  { "rh0", 241, {0, {{{0, 0}}}}, 0, 0 },
  { "rl1", 242, {0, {{{0, 0}}}}, 0, 0 },
  { "rh1", 243, {0, {{{0, 0}}}}, 0, 0 },
  { "rl2", 244, {0, {{{0, 0}}}}, 0, 0 },
  { "rh2", 245, {0, {{{0, 0}}}}, 0, 0 },
  { "rl3", 246, {0, {{{0, 0}}}}, 0, 0 },
  { "rh3", 247, {0, {{{0, 0}}}}, 0, 0 },
  { "rl4", 248, {0, {{{0, 0}}}}, 0, 0 },
  { "rh4", 249, {0, {{{0, 0}}}}, 0, 0 },
  { "rl5", 250, {0, {{{0, 0}}}}, 0, 0 },
  { "rh5", 251, {0, {{{0, 0}}}}, 0, 0 },
  { "rl6", 252, {0, {{{0, 0}}}}, 0, 0 },
  { "rh6", 253, {0, {{{0, 0}}}}, 0, 0 },
  { "rl7", 254, {0, {{{0, 0}}}}, 0, 0 },
  { "rh7", 255, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_regbmem8_names =
{
  & xc16x_cgen_opval_regbmem8_names_entries[0],
  36,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY xc16x_cgen_opval_memgr8_names_entries[] =
{
  { "dpp0", 65024, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp1", 65026, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp2", 65028, {0, {{{0, 0}}}}, 0, 0 },
  { "dpp3", 65030, {0, {{{0, 0}}}}, 0, 0 },
  { "psw", 65296, {0, {{{0, 0}}}}, 0, 0 },
  { "cp", 65040, {0, {{{0, 0}}}}, 0, 0 },
  { "mdl", 65038, {0, {{{0, 0}}}}, 0, 0 },
  { "mdh", 65036, {0, {{{0, 0}}}}, 0, 0 },
  { "mdc", 65294, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 65042, {0, {{{0, 0}}}}, 0, 0 },
  { "csp", 65032, {0, {{{0, 0}}}}, 0, 0 },
  { "vecseg", 65298, {0, {{{0, 0}}}}, 0, 0 },
  { "stkov", 65044, {0, {{{0, 0}}}}, 0, 0 },
  { "stkun", 65046, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon1", 65048, {0, {{{0, 0}}}}, 0, 0 },
  { "cpucon2", 65050, {0, {{{0, 0}}}}, 0, 0 },
  { "zeros", 65308, {0, {{{0, 0}}}}, 0, 0 },
  { "ones", 65310, {0, {{{0, 0}}}}, 0, 0 },
  { "spseg", 65292, {0, {{{0, 0}}}}, 0, 0 },
  { "tfr", 65452, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD xc16x_cgen_opval_memgr8_names =
{
  & xc16x_cgen_opval_memgr8_names_entries[0],
  20,
  0, 0, 0, 0, ""
};


/* The hardware table.  */

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

const CGEN_HW_ENTRY xc16x_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-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_gr_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cr", HW_H_CR, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_gr_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ext", HW_H_EXT, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_ext_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-psw", HW_H_PSW, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_psw_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-grb", HW_H_GRB, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_grb_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cc", HW_H_CC, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_conditioncode_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ecc", HW_H_ECC, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_extconditioncode_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-grb8", HW_H_GRB8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_grb8_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-r8", HW_H_R8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_r8_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-regmem8", HW_H_REGMEM8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_regmem8_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-regdiv8", HW_H_REGDIV8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_regdiv8_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-r0", HW_H_R0, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_reg0_name, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-r01", HW_H_R01, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_reg0_name1, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-regbmem8", HW_H_REGBMEM8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_regbmem8_names, { 0|A(CACHE_ADDR)|A(PROFILE), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-memgr8", HW_H_MEMGR8, CGEN_ASM_KEYWORD, (PTR) & xc16x_cgen_opval_memgr8_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cond", HW_H_COND, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-sgtdis", HW_H_SGTDIS, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 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 xc16x_cgen_ifld_table[] =
{
  { XC16X_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP1, "f-op1", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP2, "f-op2", 0, 32, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_CONDCODE, "f-condcode", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_ICONDCODE, "f-icondcode", 0, 32, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_RCOND, "f-rcond", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_QCOND, "f-qcond", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_EXTCCODE, "f-extccode", 0, 32, 15, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_R0, "f-r0", 0, 32, 9, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_R1, "f-r1", 0, 32, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_R2, "f-r2", 0, 32, 11, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_R3, "f-r3", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_R4, "f-r4", 0, 32, 11, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM2, "f-uimm2", 0, 32, 13, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM3, "f-uimm3", 0, 32, 10, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM4, "f-uimm4", 0, 32, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM7, "f-uimm7", 0, 32, 15, 7, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM8, "f-uimm8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_UIMM16, "f-uimm16", 0, 32, 31, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_MEMORY, "f-memory", 0, 32, 31, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_MEMGR8, "f-memgr8", 0, 32, 31, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REL8, "f-rel8", 0, 32, 15, 8, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_RELHI8, "f-relhi8", 0, 32, 23, 8, { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REG8, "f-reg8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REGMEM8, "f-regmem8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REGOFF8, "f-regoff8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REGHI8, "f-reghi8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_REGB8, "f-regb8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_SEG8, "f-seg8", 0, 32, 15, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_SEGNUM8, "f-segnum8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_MASK8, "f-mask8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_PAGENUM, "f-pagenum", 0, 32, 25, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_DATAHI8, "f-datahi8", 0, 32, 31, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_DATA8, "f-data8", 0, 32, 23, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OFFSET16, "f-offset16", 0, 32, 31, 16, { 0|A(RELOC)|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT1, "f-op-bit1", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT2, "f-op-bit2", 0, 32, 11, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT4, "f-op-bit4", 0, 32, 11, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT3, "f-op-bit3", 0, 32, 10, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_2BIT, "f-op-2bit", 0, 32, 10, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BITONE, "f-op-bitone", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_ONEBIT, "f-op-onebit", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_1BIT, "f-op-1bit", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_LBIT4, "f-op-lbit4", 0, 32, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_LBIT2, "f-op-lbit2", 0, 32, 15, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT8, "f-op-bit8", 0, 32, 31, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_OP_BIT16, "f-op-bit16", 0, 32, 31, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_QBIT, "f-qbit", 0, 32, 7, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_QLOBIT, "f-qlobit", 0, 32, 31, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_QHIBIT, "f-qhibit", 0, 32, 27, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_QLOBIT2, "f-qlobit2", 0, 32, 27, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { XC16X_F_POF, "f-pof", 0, 32, 31, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A



/* multi ifield declarations */



/* multi ifield definitions */


/* The operand table.  */

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

const CGEN_OPERAND xc16x_cgen_operand_table[] =
{
/* pc: program counter */
  { "pc", XC16X_OPERAND_PC, HW_H_PC, 0, 0,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_NIL] } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* sr: source register */
  { "sr", XC16X_OPERAND_SR, HW_H_GR, 11, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* dr: destination register */
  { "dr", XC16X_OPERAND_DR, HW_H_GR, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* dri: destination register */
  { "dri", XC16X_OPERAND_DRI, HW_H_GR, 11, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* srb: source register */
  { "srb", XC16X_OPERAND_SRB, HW_H_GRB, 11, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* drb: destination register */
  { "drb", XC16X_OPERAND_DRB, HW_H_GRB, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sr2: 2 bit source register */
  { "sr2", XC16X_OPERAND_SR2, HW_H_GR, 9, 2,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R0] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* src1: source register 1 */
  { "src1", XC16X_OPERAND_SRC1, HW_H_GR, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* src2: source register 2 */
  { "src2", XC16X_OPERAND_SRC2, HW_H_GR, 11, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_R2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* srdiv: source register 2 */
  { "srdiv", XC16X_OPERAND_SRDIV, HW_H_REGDIV8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REG8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RegNam: PSW bits */
  { "RegNam", XC16X_OPERAND_REGNAM, HW_H_PSW, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REG8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm2: 2 bit unsigned number */
  { "uimm2", XC16X_OPERAND_UIMM2, HW_H_EXT, 13, 2,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM2] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm3: 3 bit unsigned number */
  { "uimm3", XC16X_OPERAND_UIMM3, HW_H_R01, 10, 3,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM3] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm4: 4 bit unsigned number */
  { "uimm4", XC16X_OPERAND_UIMM4, HW_H_UINT, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM4] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm7: 7 bit trap number */
  { "uimm7", XC16X_OPERAND_UIMM7, HW_H_UINT, 15, 7,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM7] } }, 
    { 0|A(HASH_PREFIX)|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm8: 8 bit unsigned immediate */
  { "uimm8", XC16X_OPERAND_UIMM8, HW_H_UINT, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM8] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* uimm16: 16 bit unsigned immediate */
  { "uimm16", XC16X_OPERAND_UIMM16, HW_H_UINT, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM16] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* upof16: 16 bit unsigned immediate */
  { "upof16", XC16X_OPERAND_UPOF16, HW_H_ADDR, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_MEMORY] } }, 
    { 0|A(POF_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* reg8: 8 bit word register number */
  { "reg8", XC16X_OPERAND_REG8, HW_H_R8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REG8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* regmem8: 8 bit word register number */
  { "regmem8", XC16X_OPERAND_REGMEM8, HW_H_REGMEM8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGMEM8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* regbmem8: 8 bit byte register number */
  { "regbmem8", XC16X_OPERAND_REGBMEM8, HW_H_REGBMEM8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGMEM8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* regoff8: 8 bit word register number */
  { "regoff8", XC16X_OPERAND_REGOFF8, HW_H_R8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGOFF8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* reghi8: 8 bit word register number */
  { "reghi8", XC16X_OPERAND_REGHI8, HW_H_R8, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGHI8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* regb8: 8 bit byte register number */
  { "regb8", XC16X_OPERAND_REGB8, HW_H_GRB8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGB8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* genreg: 8 bit word register number */
  { "genreg", XC16X_OPERAND_GENREG, HW_H_R8, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REGB8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* seg: 8 bit segment number */
  { "seg", XC16X_OPERAND_SEG, HW_H_UINT, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_SEG8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* seghi8: 8 bit hi segment number */
  { "seghi8", XC16X_OPERAND_SEGHI8, HW_H_UINT, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_SEGNUM8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* caddr: 16 bit address offset */
  { "caddr", XC16X_OPERAND_CADDR, HW_H_ADDR, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OFFSET16] } }, 
    { 0|A(RELOC)|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* rel: 8 bit signed relative offset */
  { "rel", XC16X_OPERAND_REL, HW_H_SINT, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_REL8] } }, 
    { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* relhi: hi 8 bit signed relative offset */
  { "relhi", XC16X_OPERAND_RELHI, HW_H_SINT, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_RELHI8] } }, 
    { 0|A(RELOC)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* condbit: condition bit */
  { "condbit", XC16X_OPERAND_CONDBIT, HW_H_COND, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* bit1: gap of 1 bit */
  { "bit1", XC16X_OPERAND_BIT1, HW_H_UINT, 11, 1,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_BIT1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* bit2: gap of 2 bits */
  { "bit2", XC16X_OPERAND_BIT2, HW_H_UINT, 11, 2,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_BIT2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* bit4: gap of 4 bits */
  { "bit4", XC16X_OPERAND_BIT4, HW_H_UINT, 11, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_BIT4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* lbit4: gap of 4 bits */
  { "lbit4", XC16X_OPERAND_LBIT4, HW_H_UINT, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_LBIT4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* lbit2: gap of 2 bits */
  { "lbit2", XC16X_OPERAND_LBIT2, HW_H_UINT, 15, 2,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_LBIT2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* bit8: gap of 8 bits */
  { "bit8", XC16X_OPERAND_BIT8, HW_H_UINT, 31, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_BIT8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u4: gap of 4 bits */
  { "u4", XC16X_OPERAND_U4, HW_H_R0, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* bitone: field of 1 bit */
  { "bitone", XC16X_OPERAND_BITONE, HW_H_UINT, 9, 1,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_ONEBIT] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* bit01: field of 1 bit */
  { "bit01", XC16X_OPERAND_BIT01, HW_H_UINT, 8, 1,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OP_1BIT] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* cond: condition code */
  { "cond", XC16X_OPERAND_COND, HW_H_CC, 7, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_CONDCODE] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* icond: indirect condition code */
  { "icond", XC16X_OPERAND_ICOND, HW_H_CC, 15, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_ICONDCODE] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* extcond: extended condition code */
  { "extcond", XC16X_OPERAND_EXTCOND, HW_H_ECC, 15, 5,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_EXTCCODE] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* memory: 16 bit memory */
  { "memory", XC16X_OPERAND_MEMORY, HW_H_ADDR, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_MEMORY] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* memgr8: 16 bit memory */
  { "memgr8", XC16X_OPERAND_MEMGR8, HW_H_MEMGR8, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_MEMGR8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* cbit: carry bit */
  { "cbit", XC16X_OPERAND_CBIT, HW_H_CBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* qbit: bit addr */
  { "qbit", XC16X_OPERAND_QBIT, HW_H_UINT, 7, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_QBIT] } }, 
    { 0|A(DOT_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* qlobit: bit addr */
  { "qlobit", XC16X_OPERAND_QLOBIT, HW_H_UINT, 31, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_QLOBIT] } }, 
    { 0|A(DOT_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* qhibit: bit addr */
  { "qhibit", XC16X_OPERAND_QHIBIT, HW_H_UINT, 27, 4,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_QHIBIT] } }, 
    { 0|A(DOT_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* mask8: 8 bit mask */
  { "mask8", XC16X_OPERAND_MASK8, HW_H_UINT, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_MASK8] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* masklo8: 8 bit mask */
  { "masklo8", XC16X_OPERAND_MASKLO8, HW_H_UINT, 31, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_DATAHI8] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* pagenum: 10 bit page number */
  { "pagenum", XC16X_OPERAND_PAGENUM, HW_H_UINT, 25, 10,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_PAGENUM] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* data8: 8 bit data */
  { "data8", XC16X_OPERAND_DATA8, HW_H_UINT, 23, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_DATA8] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* datahi8: 8 bit data */
  { "datahi8", XC16X_OPERAND_DATAHI8, HW_H_UINT, 31, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_DATAHI8] } }, 
    { 0|A(HASH_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* sgtdisbit: segmentation enable bit */
  { "sgtdisbit", XC16X_OPERAND_SGTDISBIT, HW_H_SGTDIS, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* upag16: 16 bit unsigned immediate */
  { "upag16", XC16X_OPERAND_UPAG16, HW_H_UINT, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_UIMM16] } }, 
    { 0|A(PAG_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* useg8: 8 bit segment  */
  { "useg8", XC16X_OPERAND_USEG8, HW_H_UINT, 15, 8,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_SEG8] } }, 
    { 0|A(SEG_PREFIX), { { { (1<<MACH_BASE), 0 } } } }  },
/* useg16: 16 bit address offset */
  { "useg16", XC16X_OPERAND_USEG16, HW_H_UINT, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OFFSET16] } }, 
    { 0|A(SEG_PREFIX)|A(RELOC)|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* usof16: 16 bit address offset */
  { "usof16", XC16X_OPERAND_USOF16, HW_H_UINT, 31, 16,
    { 0, { (const PTR) &xc16x_cgen_ifld_table[XC16X_F_OFFSET16] } }, 
    { 0|A(SOF_PREFIX)|A(RELOC)|A(ABS_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* hash: # prefix */
  { "hash", XC16X_OPERAND_HASH, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* dot: . prefix */
  { "dot", XC16X_OPERAND_DOT, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* pof: pof: prefix */
  { "pof", XC16X_OPERAND_POF, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* pag: pag: prefix */
  { "pag", XC16X_OPERAND_PAG, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sof: sof: prefix */
  { "sof", XC16X_OPERAND_SOF, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* segm: seg: prefix */
  { "segm", XC16X_OPERAND_SEGM, HW_H_SINT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (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 xc16x_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 } }, { { PIPE_NONE, 0 } } } } },
/* add $reg8,$pof$upof16 */
  {
    XC16X_INSN_ADDRPOF, "addrpof", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$pof$upof16 */
  {
    XC16X_INSN_SUBRPOF, "subrpof", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$pof$upof16 */
  {
    XC16X_INSN_ADDBRPOF, "addbrpof", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$pof$upof16 */
  {
    XC16X_INSN_SUBBRPOF, "subbrpof", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $reg8,$pag$upag16 */
  {
    XC16X_INSN_ADDRPAG, "addrpag", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$pag$upag16 */
  {
    XC16X_INSN_SUBRPAG, "subrpag", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$pag$upag16 */
  {
    XC16X_INSN_ADDBRPAG, "addbrpag", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$pag$upag16 */
  {
    XC16X_INSN_SUBBRPAG, "subbrpag", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$pof$upof16 */
  {
    XC16X_INSN_ADDCRPOF, "addcrpof", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$pof$upof16 */
  {
    XC16X_INSN_SUBCRPOF, "subcrpof", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$pof$upof16 */
  {
    XC16X_INSN_ADDCBRPOF, "addcbrpof", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$pof$upof16 */
  {
    XC16X_INSN_SUBCBRPOF, "subcbrpof", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$pag$upag16 */
  {
    XC16X_INSN_ADDCRPAG, "addcrpag", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$pag$upag16 */
  {
    XC16X_INSN_SUBCRPAG, "subcrpag", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$pag$upag16 */
  {
    XC16X_INSN_ADDCBRPAG, "addcbrpag", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$pag$upag16 */
  {
    XC16X_INSN_SUBCBRPAG, "subcbrpag", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $pof$upof16,$reg8 */
  {
    XC16X_INSN_ADDRPOFR, "addrpofr", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $pof$upof16,$reg8 */
  {
    XC16X_INSN_SUBRPOFR, "subrpofr", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $pof$upof16,$regb8 */
  {
    XC16X_INSN_ADDBRPOFR, "addbrpofr", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $pof$upof16,$regb8 */
  {
    XC16X_INSN_SUBBRPOFR, "subbrpofr", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $pof$upof16,$reg8 */
  {
    XC16X_INSN_ADDCRPOFR, "addcrpofr", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $pof$upof16,$reg8 */
  {
    XC16X_INSN_SUBCRPOFR, "subcrpofr", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $pof$upof16,$regb8 */
  {
    XC16X_INSN_ADDCBRPOFR, "addcbrpofr", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $pof$upof16,$regb8 */
  {
    XC16X_INSN_SUBCBRPOFR, "subcbrpofr", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $reg8,$hash$pof$uimm16 */
  {
    XC16X_INSN_ADDRHPOF, "addrhpof", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$hash$pof$uimm16 */
  {
    XC16X_INSN_SUBRHPOF, "subrhpof", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $reg8,$hash$pag$uimm16 */
  {
    XC16X_INSN_ADDBRHPOF, "addbrhpof", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$hash$pag$uimm16 */
  {
    XC16X_INSN_SUBBRHPOF, "subbrhpof", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,$hash$pof$uimm3 */
  {
    XC16X_INSN_ADDRHPOF3, "addrhpof3", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,$hash$pof$uimm3 */
  {
    XC16X_INSN_SUBRHPOF3, "subrhpof3", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,$hash$pag$uimm3 */
  {
    XC16X_INSN_ADDBRHPAG3, "addbrhpag3", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,$hash$pag$uimm3 */
  {
    XC16X_INSN_SUBBRHPAG3, "subbrhpag3", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,$hash$pag$uimm3 */
  {
    XC16X_INSN_ADDRHPAG3, "addrhpag3", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,$hash$pag$uimm3 */
  {
    XC16X_INSN_SUBRHPAG3, "subrhpag3", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,$hash$pof$uimm3 */
  {
    XC16X_INSN_ADDBRHPOF3, "addbrhpof3", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,$hash$pof$uimm3 */
  {
    XC16X_INSN_SUBBRHPOF3, "subbrhpof3", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$hash$pof$uimm8 */
  {
    XC16X_INSN_ADDRBHPOF, "addrbhpof", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$hash$pof$uimm8 */
  {
    XC16X_INSN_SUBRBHPOF, "subrbhpof", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$hash$pag$uimm8 */
  {
    XC16X_INSN_ADDBRHPAG, "addbrhpag", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$hash$pag$uimm8 */
  {
    XC16X_INSN_SUBBRHPAG, "subbrhpag", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$hash$pof$uimm16 */
  {
    XC16X_INSN_ADDCRHPOF, "addcrhpof", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$hash$pof$uimm16 */
  {
    XC16X_INSN_SUBCRHPOF, "subcrhpof", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$hash$pag$uimm16 */
  {
    XC16X_INSN_ADDCBRHPOF, "addcbrhpof", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$hash$pag$uimm16 */
  {
    XC16X_INSN_SUBCBRHPOF, "subcbrhpof", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,$hash$pof$uimm3 */
  {
    XC16X_INSN_ADDCRHPOF3, "addcrhpof3", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,$hash$pof$uimm3 */
  {
    XC16X_INSN_SUBCRHPOF3, "subcrhpof3", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,$hash$pag$uimm3 */
  {
    XC16X_INSN_ADDCBRHPAG3, "addcbrhpag3", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,$hash$pag$uimm3 */
  {
    XC16X_INSN_SUBCBRHPAG3, "subcbrhpag3", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,$hash$pag$uimm3 */
  {
    XC16X_INSN_ADDCRHPAG3, "addcrhpag3", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,$hash$pag$uimm3 */
  {
    XC16X_INSN_SUBCRHPAG3, "subcrhpag3", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,$hash$pof$uimm3 */
  {
    XC16X_INSN_ADDCBRHPOF3, "addcbrhpof3", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,$hash$pof$uimm3 */
  {
    XC16X_INSN_SUBCBRHPOF3, "subcbrhpof3", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$hash$pof$uimm8 */
  {
    XC16X_INSN_ADDCRBHPOF, "addcrbhpof", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$hash$pof$uimm8 */
  {
    XC16X_INSN_SUBCRBHPOF, "subcrbhpof", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$hash$pag$uimm8 */
  {
    XC16X_INSN_ADDCBRHPAG, "addcbrhpag", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$hash$pag$uimm8 */
  {
    XC16X_INSN_SUBCBRHPAG, "subcbrhpag", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,$hash$uimm3 */
  {
    XC16X_INSN_ADDRI, "addri", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,$hash$uimm3 */
  {
    XC16X_INSN_SUBRI, "subri", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,$hash$uimm3 */
  {
    XC16X_INSN_ADDBRI, "addbri", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,$hash$uimm3 */
  {
    XC16X_INSN_SUBBRI, "subbri", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $reg8,$hash$uimm16 */
  {
    XC16X_INSN_ADDRIM, "addrim", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$hash$uimm16 */
  {
    XC16X_INSN_SUBRIM, "subrim", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_ADDBRIM, "addbrim", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_SUBBRIM, "subbrim", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,$hash$uimm3 */
  {
    XC16X_INSN_ADDCRI, "addcri", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,$hash$uimm3 */
  {
    XC16X_INSN_SUBCRI, "subcri", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,$hash$uimm3 */
  {
    XC16X_INSN_ADDCBRI, "addcbri", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,$hash$uimm3 */
  {
    XC16X_INSN_SUBCBRI, "subcbri", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$hash$uimm16 */
  {
    XC16X_INSN_ADDCRIM, "addcrim", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$hash$uimm16 */
  {
    XC16X_INSN_SUBCRIM, "subcrim", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_ADDCBRIM, "addcbrim", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_SUBCBRIM, "subcbrim", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,$sr */
  {
    XC16X_INSN_ADDR, "addr", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,$sr */
  {
    XC16X_INSN_SUBR, "subr", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,$srb */
  {
    XC16X_INSN_ADDBR, "addbr", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,$srb */
  {
    XC16X_INSN_SUBBR, "subbr", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,[$sr2] */
  {
    XC16X_INSN_ADD2, "add2", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,[$sr2] */
  {
    XC16X_INSN_SUB2, "sub2", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,[$sr2] */
  {
    XC16X_INSN_ADDB2, "addb2", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,[$sr2] */
  {
    XC16X_INSN_SUBB2, "subb2", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $dr,[$sr2+] */
  {
    XC16X_INSN_ADD2I, "add2i", "add", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $dr,[$sr2+] */
  {
    XC16X_INSN_SUB2I, "sub2i", "sub", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $drb,[$sr2+] */
  {
    XC16X_INSN_ADDB2I, "addb2i", "addb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $drb,[$sr2+] */
  {
    XC16X_INSN_SUBB2I, "subb2i", "subb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,$sr */
  {
    XC16X_INSN_ADDCR, "addcr", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,$sr */
  {
    XC16X_INSN_SUBCR, "subcr", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,$srb */
  {
    XC16X_INSN_ADDBCR, "addbcr", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,$srb */
  {
    XC16X_INSN_SUBBCR, "subbcr", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,[$sr2] */
  {
    XC16X_INSN_ADDCR2, "addcr2", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,[$sr2] */
  {
    XC16X_INSN_SUBCR2, "subcr2", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,[$sr2] */
  {
    XC16X_INSN_ADDBCR2, "addbcr2", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,[$sr2] */
  {
    XC16X_INSN_SUBBCR2, "subbcr2", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $dr,[$sr2+] */
  {
    XC16X_INSN_ADDCR2I, "addcr2i", "addc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $dr,[$sr2+] */
  {
    XC16X_INSN_SUBCR2I, "subcr2i", "subc", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $drb,[$sr2+] */
  {
    XC16X_INSN_ADDBCR2I, "addbcr2i", "addcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $drb,[$sr2+] */
  {
    XC16X_INSN_SUBBCR2I, "subbcr2i", "subcb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $regmem8,$memgr8 */
  {
    XC16X_INSN_ADDRM2, "addrm2", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $memgr8,$regmem8 */
  {
    XC16X_INSN_ADDRM3, "addrm3", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $reg8,$memory */
  {
    XC16X_INSN_ADDRM, "addrm", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* add $memory,$reg8 */
  {
    XC16X_INSN_ADDRM1, "addrm1", "add", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $regmem8,$memgr8 */
  {
    XC16X_INSN_SUBRM3, "subrm3", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $memgr8,$regmem8 */
  {
    XC16X_INSN_SUBRM2, "subrm2", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $reg8,$memory */
  {
    XC16X_INSN_SUBRM1, "subrm1", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sub $memory,$reg8 */
  {
    XC16X_INSN_SUBRM, "subrm", "sub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regbmem8,$memgr8 */
  {
    XC16X_INSN_ADDBRM2, "addbrm2", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $memgr8,$regbmem8 */
  {
    XC16X_INSN_ADDBRM3, "addbrm3", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $regb8,$memory */
  {
    XC16X_INSN_ADDBRM, "addbrm", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addb $memory,$regb8 */
  {
    XC16X_INSN_ADDBRM1, "addbrm1", "addb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regbmem8,$memgr8 */
  {
    XC16X_INSN_SUBBRM3, "subbrm3", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $memgr8,$regbmem8 */
  {
    XC16X_INSN_SUBBRM2, "subbrm2", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $regb8,$memory */
  {
    XC16X_INSN_SUBBRM1, "subbrm1", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subb $memory,$regb8 */
  {
    XC16X_INSN_SUBBRM, "subbrm", "subb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $regmem8,$memgr8 */
  {
    XC16X_INSN_ADDCRM2, "addcrm2", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $memgr8,$regmem8 */
  {
    XC16X_INSN_ADDCRM3, "addcrm3", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $reg8,$memory */
  {
    XC16X_INSN_ADDCRM, "addcrm", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addc $memory,$reg8 */
  {
    XC16X_INSN_ADDCRM1, "addcrm1", "addc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $regmem8,$memgr8 */
  {
    XC16X_INSN_SUBCRM3, "subcrm3", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $memgr8,$regmem8 */
  {
    XC16X_INSN_SUBCRM2, "subcrm2", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $reg8,$memory */
  {
    XC16X_INSN_SUBCRM1, "subcrm1", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subc $memory,$reg8 */
  {
    XC16X_INSN_SUBCRM, "subcrm", "subc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regbmem8,$memgr8 */
  {
    XC16X_INSN_ADDCBRM2, "addcbrm2", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $memgr8,$regbmem8 */
  {
    XC16X_INSN_ADDCBRM3, "addcbrm3", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $regb8,$memory */
  {
    XC16X_INSN_ADDCBRM, "addcbrm", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* addcb $memory,$regb8 */
  {
    XC16X_INSN_ADDCBRM1, "addcbrm1", "addcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regbmem8,$memgr8 */
  {
    XC16X_INSN_SUBCBRM3, "subcbrm3", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $memgr8,$regbmem8 */
  {
    XC16X_INSN_SUBCBRM2, "subcbrm2", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $regb8,$memory */
  {
    XC16X_INSN_SUBCBRM1, "subcbrm1", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* subcb $memory,$regb8 */
  {
    XC16X_INSN_SUBCBRM, "subcbrm", "subcb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mul $src1,$src2 */
  {
    XC16X_INSN_MULS, "muls", "mul", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mulu $src1,$src2 */
  {
    XC16X_INSN_MULU, "mulu", "mulu", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* div $srdiv */
  {
    XC16X_INSN_DIV, "div", "div", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* divl $srdiv */
  {
    XC16X_INSN_DIVL, "divl", "divl", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* divlu $srdiv */
  {
    XC16X_INSN_DIVLU, "divlu", "divlu", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* divu $srdiv */
  {
    XC16X_INSN_DIVU, "divu", "divu", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cpl $dr */
  {
    XC16X_INSN_CPL, "cpl", "cpl", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cplb $drb */
  {
    XC16X_INSN_CPLB, "cplb", "cplb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* neg $dr */
  {
    XC16X_INSN_NEG, "neg", "neg", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* negb $drb */
  {
    XC16X_INSN_NEGB, "negb", "negb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $dr,$sr */
  {
    XC16X_INSN_ANDR, "andr", "and", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $dr,$sr */
  {
    XC16X_INSN_ORR, "orr", "or", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $dr,$sr */
  {
    XC16X_INSN_XORR, "xorr", "xor", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $drb,$srb */
  {
    XC16X_INSN_ANDBR, "andbr", "andb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $drb,$srb */
  {
    XC16X_INSN_ORBR, "orbr", "orb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $drb,$srb */
  {
    XC16X_INSN_XORBR, "xorbr", "xorb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $dr,$hash$uimm3 */
  {
    XC16X_INSN_ANDRI, "andri", "and", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $dr,$hash$uimm3 */
  {
    XC16X_INSN_ORRI, "orri", "or", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $dr,$hash$uimm3 */
  {
    XC16X_INSN_XORRI, "xorri", "xor", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $drb,$hash$uimm3 */
  {
    XC16X_INSN_ANDBRI, "andbri", "andb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $drb,$hash$uimm3 */
  {
    XC16X_INSN_ORBRI, "orbri", "orb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $drb,$hash$uimm3 */
  {
    XC16X_INSN_XORBRI, "xorbri", "xorb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $reg8,$hash$uimm16 */
  {
    XC16X_INSN_ANDRIM, "andrim", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $reg8,$hash$uimm16 */
  {
    XC16X_INSN_ORRIM, "orrim", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $reg8,$hash$uimm16 */
  {
    XC16X_INSN_XORRIM, "xorrim", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_ANDBRIM, "andbrim", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_ORBRIM, "orbrim", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_XORBRIM, "xorbrim", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $dr,[$sr2] */
  {
    XC16X_INSN_AND2, "and2", "and", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $dr,[$sr2] */
  {
    XC16X_INSN_OR2, "or2", "or", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $dr,[$sr2] */
  {
    XC16X_INSN_XOR2, "xor2", "xor", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $drb,[$sr2] */
  {
    XC16X_INSN_ANDB2, "andb2", "andb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $drb,[$sr2] */
  {
    XC16X_INSN_ORB2, "orb2", "orb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $drb,[$sr2] */
  {
    XC16X_INSN_XORB2, "xorb2", "xorb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $dr,[$sr2+] */
  {
    XC16X_INSN_AND2I, "and2i", "and", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $dr,[$sr2+] */
  {
    XC16X_INSN_OR2I, "or2i", "or", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $dr,[$sr2+] */
  {
    XC16X_INSN_XOR2I, "xor2i", "xor", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $drb,[$sr2+] */
  {
    XC16X_INSN_ANDB2I, "andb2i", "andb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $drb,[$sr2+] */
  {
    XC16X_INSN_ORB2I, "orb2i", "orb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $drb,[$sr2+] */
  {
    XC16X_INSN_XORB2I, "xorb2i", "xorb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $pof$reg8,$upof16 */
  {
    XC16X_INSN_ANDPOFR, "andpofr", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $pof$reg8,$upof16 */
  {
    XC16X_INSN_ORPOFR, "orpofr", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $pof$reg8,$upof16 */
  {
    XC16X_INSN_XORPOFR, "xorpofr", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $pof$regb8,$upof16 */
  {
    XC16X_INSN_ANDBPOFR, "andbpofr", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $pof$regb8,$upof16 */
  {
    XC16X_INSN_ORBPOFR, "orbpofr", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $pof$regb8,$upof16 */
  {
    XC16X_INSN_XORBPOFR, "xorbpofr", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $pof$upof16,$reg8 */
  {
    XC16X_INSN_ANDRPOFR, "andrpofr", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $pof$upof16,$reg8 */
  {
    XC16X_INSN_ORRPOFR, "orrpofr", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $pof$upof16,$reg8 */
  {
    XC16X_INSN_XORRPOFR, "xorrpofr", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $pof$upof16,$regb8 */
  {
    XC16X_INSN_ANDBRPOFR, "andbrpofr", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $pof$upof16,$regb8 */
  {
    XC16X_INSN_ORBRPOFR, "orbrpofr", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $pof$upof16,$regb8 */
  {
    XC16X_INSN_XORBRPOFR, "xorbrpofr", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $regmem8,$memgr8 */
  {
    XC16X_INSN_ANDRM2, "andrm2", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $memgr8,$regmem8 */
  {
    XC16X_INSN_ANDRM3, "andrm3", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $reg8,$memory */
  {
    XC16X_INSN_ANDRM, "andrm", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* and $memory,$reg8 */
  {
    XC16X_INSN_ANDRM1, "andrm1", "and", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $regmem8,$memgr8 */
  {
    XC16X_INSN_ORRM3, "orrm3", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $memgr8,$regmem8 */
  {
    XC16X_INSN_ORRM2, "orrm2", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $reg8,$memory */
  {
    XC16X_INSN_ORRM1, "orrm1", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* or $memory,$reg8 */
  {
    XC16X_INSN_ORRM, "orrm", "or", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $regmem8,$memgr8 */
  {
    XC16X_INSN_XORRM3, "xorrm3", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $memgr8,$regmem8 */
  {
    XC16X_INSN_XORRM2, "xorrm2", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $reg8,$memory */
  {
    XC16X_INSN_XORRM1, "xorrm1", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xor $memory,$reg8 */
  {
    XC16X_INSN_XORRM, "xorrm", "xor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $regbmem8,$memgr8 */
  {
    XC16X_INSN_ANDBRM2, "andbrm2", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $memgr8,$regbmem8 */
  {
    XC16X_INSN_ANDBRM3, "andbrm3", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $regb8,$memory */
  {
    XC16X_INSN_ANDBRM, "andbrm", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* andb $memory,$regb8 */
  {
    XC16X_INSN_ANDBRM1, "andbrm1", "andb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $regbmem8,$memgr8 */
  {
    XC16X_INSN_ORBRM3, "orbrm3", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $memgr8,$regbmem8 */
  {
    XC16X_INSN_ORBRM2, "orbrm2", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $regb8,$memory */
  {
    XC16X_INSN_ORBRM1, "orbrm1", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* orb $memory,$regb8 */
  {
    XC16X_INSN_ORBRM, "orbrm", "orb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $regbmem8,$memgr8 */
  {
    XC16X_INSN_XORBRM3, "xorbrm3", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $memgr8,$regbmem8 */
  {
    XC16X_INSN_XORBRM2, "xorbrm2", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $regb8,$memory */
  {
    XC16X_INSN_XORBRM1, "xorbrm1", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* xorb $memory,$regb8 */
  {
    XC16X_INSN_XORBRM, "xorbrm", "xorb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dr,$sr */
  {
    XC16X_INSN_MOVR, "movr", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $drb,$srb */
  {
    XC16X_INSN_MOVRB, "movrb", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dri,$hash$u4 */
  {
    XC16X_INSN_MOVRI, "movri", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $srb,$hash$u4 */
  {
    XC16X_INSN_MOVBRI, "movbri", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $reg8,$hash$uimm16 */
  {
    XC16X_INSN_MOVI, "movi", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_MOVBI, "movbi", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dr,[$sr] */
  {
    XC16X_INSN_MOVR2, "movr2", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $drb,[$sr] */
  {
    XC16X_INSN_MOVBR2, "movbr2", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$sr],$dr */
  {
    XC16X_INSN_MOVRI2, "movri2", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$sr],$drb */
  {
    XC16X_INSN_MOVBRI2, "movbri2", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [-$sr],$dr */
  {
    XC16X_INSN_MOVRI3, "movri3", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [-$sr],$drb */
  {
    XC16X_INSN_MOVBRI3, "movbri3", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dr,[$sr+] */
  {
    XC16X_INSN_MOV2I, "mov2i", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $drb,[$sr+] */
  {
    XC16X_INSN_MOVB2I, "movb2i", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$dr],[$sr] */
  {
    XC16X_INSN_MOV6I, "mov6i", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$dr],[$sr] */
  {
    XC16X_INSN_MOVB6I, "movb6i", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$dr+],[$sr] */
  {
    XC16X_INSN_MOV7I, "mov7i", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$dr+],[$sr] */
  {
    XC16X_INSN_MOVB7I, "movb7i", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$dr],[$sr+] */
  {
    XC16X_INSN_MOV8I, "mov8i", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$dr],[$sr+] */
  {
    XC16X_INSN_MOVB8I, "movb8i", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dr,[$sr+$hash$uimm16] */
  {
    XC16X_INSN_MOV9I, "mov9i", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $drb,[$sr+$hash$uimm16] */
  {
    XC16X_INSN_MOVB9I, "movb9i", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$sr+$hash$uimm16],$dr */
  {
    XC16X_INSN_MOV10I, "mov10i", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$sr+$hash$uimm16],$drb */
  {
    XC16X_INSN_MOVB10I, "movb10i", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov [$src2],$memory */
  {
    XC16X_INSN_MOVRI11, "movri11", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb [$src2],$memory */
  {
    XC16X_INSN_MOVBRI11, "movbri11", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $memory,[$src2] */
  {
    XC16X_INSN_MOVRI12, "movri12", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $memory,[$src2] */
  {
    XC16X_INSN_MOVBRI12, "movbri12", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$hash$pof$upof16 */
  {
    XC16X_INSN_MOVEHM5, "movehm5", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$hash$pag$upag16 */
  {
    XC16X_INSN_MOVEHM6, "movehm6", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$hash$segm$useg16 */
  {
    XC16X_INSN_MOVEHM7, "movehm7", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$hash$sof$usof16 */
  {
    XC16X_INSN_MOVEHM8, "movehm8", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regb8,$hash$pof$uimm8 */
  {
    XC16X_INSN_MOVEHM9, "movehm9", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regoff8,$hash$pag$uimm8 */
  {
    XC16X_INSN_MOVEHM10, "movehm10", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$pof$upof16 */
  {
    XC16X_INSN_MOVRMP, "movrmp", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regb8,$pof$upof16 */
  {
    XC16X_INSN_MOVRMP1, "movrmp1", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regoff8,$pag$upag16 */
  {
    XC16X_INSN_MOVRMP2, "movrmp2", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regb8,$pag$upag16 */
  {
    XC16X_INSN_MOVRMP3, "movrmp3", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $pof$upof16,$regoff8 */
  {
    XC16X_INSN_MOVRMP4, "movrmp4", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $pof$upof16,$regb8 */
  {
    XC16X_INSN_MOVRMP5, "movrmp5", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dri,$hash$pof$u4 */
  {
    XC16X_INSN_MOVEHM1, "movehm1", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $srb,$hash$pof$u4 */
  {
    XC16X_INSN_MOVEHM2, "movehm2", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $dri,$hash$pag$u4 */
  {
    XC16X_INSN_MOVEHM3, "movehm3", "mov", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $srb,$hash$pag$u4 */
  {
    XC16X_INSN_MOVEHM4, "movehm4", "movb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $regmem8,$memgr8 */
  {
    XC16X_INSN_MVE12, "mve12", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $memgr8,$regmem8 */
  {
    XC16X_INSN_MVE13, "mve13", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $reg8,$memory */
  {
    XC16X_INSN_MOVER12, "mover12", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* mov $memory,$reg8 */
  {
    XC16X_INSN_MVR13, "mvr13", "mov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regbmem8,$memgr8 */
  {
    XC16X_INSN_MVER12, "mver12", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $memgr8,$regbmem8 */
  {
    XC16X_INSN_MVER13, "mver13", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $regb8,$memory */
  {
    XC16X_INSN_MOVR12, "movr12", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movb $memory,$regb8 */
  {
    XC16X_INSN_MOVR13, "movr13", "movb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $sr,$drb */
  {
    XC16X_INSN_MOVBSRR, "movbsrr", "movbs", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $sr,$drb */
  {
    XC16X_INSN_MOVBZRR, "movbzrr", "movbz", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $regmem8,$pof$upof16 */
  {
    XC16X_INSN_MOVBSRPOFM, "movbsrpofm", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $pof$upof16,$regbmem8 */
  {
    XC16X_INSN_MOVBSPOFMR, "movbspofmr", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $reg8,$pof$upof16 */
  {
    XC16X_INSN_MOVBZRPOFM, "movbzrpofm", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $pof$upof16,$regb8 */
  {
    XC16X_INSN_MOVBZPOFMR, "movbzpofmr", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $regmem8,$memgr8 */
  {
    XC16X_INSN_MOVEBS14, "movebs14", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $memgr8,$regbmem8 */
  {
    XC16X_INSN_MOVEBS15, "movebs15", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $reg8,$memory */
  {
    XC16X_INSN_MOVERBS14, "moverbs14", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $memory,$regb8 */
  {
    XC16X_INSN_MOVRBS15, "movrbs15", "movbs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $regmem8,$memgr8 */
  {
    XC16X_INSN_MOVEBZ14, "movebz14", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $memgr8,$regbmem8 */
  {
    XC16X_INSN_MOVEBZ15, "movebz15", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $reg8,$memory */
  {
    XC16X_INSN_MOVERBZ14, "moverbz14", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $memory,$regb8 */
  {
    XC16X_INSN_MOVRBZ15, "movrbz15", "movbz", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbs $sr,$drb */
  {
    XC16X_INSN_MOVRBS, "movrbs", "movbs", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* movbz $sr,$drb */
  {
    XC16X_INSN_MOVRBZ, "movrbz", "movbz", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpa+ $extcond,$caddr */
  {
    XC16X_INSN_JMPA0, "jmpa0", "jmpa+", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpa $extcond,$caddr */
  {
    XC16X_INSN_JMPA1, "jmpa1", "jmpa", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpa- $extcond,$caddr */
  {
    XC16X_INSN_JMPA_, "jmpa-", "jmpa-", 32,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpi $icond,[$sr] */
  {
    XC16X_INSN_JMPI, "jmpi", "jmpi", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NENZ, "jmpr_nenz", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_SGT, "jmpr_sgt", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_Z, "jmpr_z", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_V, "jmpr_v", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NV, "jmpr_nv", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_N, "jmpr_n", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NN, "jmpr_nn", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_C, "jmpr_c", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NC, "jmpr_nc", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_EQ, "jmpr_eq", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NE, "jmpr_ne", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_ULT, "jmpr_ult", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_ULE, "jmpr_ule", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_UGE, "jmpr_uge", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_UGT, "jmpr_ugt", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_SLE, "jmpr_sle", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_SGE, "jmpr_sge", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_NET, "jmpr_net", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_UC, "jmpr_uc", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmpr $cond,$rel */
  {
    XC16X_INSN_JMPR_SLT, "jmpr_slt", "jmpr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmps $hash$segm$useg8,$hash$sof$usof16 */
  {
    XC16X_INSN_JMPSEG, "jmpseg", "jmps", 32,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jmps $seg,$caddr */
  {
    XC16X_INSN_JMPS, "jmps", "jmps", 32,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jb $genreg$dot$qlobit,$relhi */
  {
    XC16X_INSN_JB, "jb", "jb", 32,
    { 0|A(UNCOND_CTI)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jbc $genreg$dot$qlobit,$relhi */
  {
    XC16X_INSN_JBC, "jbc", "jbc", 32,
    { 0|A(UNCOND_CTI)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jnb $genreg$dot$qlobit,$relhi */
  {
    XC16X_INSN_JNB, "jnb", "jnb", 32,
    { 0|A(UNCOND_CTI)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* jnbs $genreg$dot$qlobit,$relhi */
  {
    XC16X_INSN_JNBS, "jnbs", "jnbs", 32,
    { 0|A(UNCOND_CTI)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calla+ $extcond,$caddr */
  {
    XC16X_INSN_CALLA0, "calla0", "calla+", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calla $extcond,$caddr */
  {
    XC16X_INSN_CALLA1, "calla1", "calla", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calla- $extcond,$caddr */
  {
    XC16X_INSN_CALLA_, "calla-", "calla-", 32,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calli $icond,[$sr] */
  {
    XC16X_INSN_CALLI, "calli", "calli", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* callr $rel */
  {
    XC16X_INSN_CALLR, "callr", "callr", 16,
    { 0|A(COND_CTI)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calls $hash$segm$useg8,$hash$sof$usof16 */
  {
    XC16X_INSN_CALLSEG, "callseg", "calls", 32,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* calls $seg,$caddr */
  {
    XC16X_INSN_CALLS, "calls", "calls", 32,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* pcall $reg8,$caddr */
  {
    XC16X_INSN_PCALL, "pcall", "pcall", 32,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* trap $hash$uimm7 */
  {
    XC16X_INSN_TRAP, "trap", "trap", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* ret */
  {
    XC16X_INSN_RET, "ret", "ret", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* rets */
  {
    XC16X_INSN_RETS, "rets", "rets", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* retp $reg8 */
  {
    XC16X_INSN_RETP, "retp", "retp", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* reti */
  {
    XC16X_INSN_RETI, "reti", "reti", 16,
    { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* pop $reg8 */
  {
    XC16X_INSN_POP, "pop", "pop", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* push $reg8 */
  {
    XC16X_INSN_PUSH, "push", "push", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* scxt $reg8,$hash$uimm16 */
  {
    XC16X_INSN_SCXTI, "scxti", "scxt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* scxt $reg8,$pof$upof16 */
  {
    XC16X_INSN_SCXTRPOFM, "scxtrpofm", "scxt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* scxt $regmem8,$memgr8 */
  {
    XC16X_INSN_SCXTMG, "scxtmg", "scxt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* scxt $reg8,$memory */
  {
    XC16X_INSN_SCXTM, "scxtm", "scxt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* nop */
  {
    XC16X_INSN_NOP, "nop", "nop", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* srst */
  {
    XC16X_INSN_SRSTM, "srstm", "srst", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* idle */
  {
    XC16X_INSN_IDLEM, "idlem", "idle", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* pwrdn */
  {
    XC16X_INSN_PWRDNM, "pwrdnm", "pwrdn", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* diswdt */
  {
    XC16X_INSN_DISWDTM, "diswdtm", "diswdt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* enwdt */
  {
    XC16X_INSN_ENWDTM, "enwdtm", "enwdt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* einit */
  {
    XC16X_INSN_EINITM, "einitm", "einit", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* srvwdt */
  {
    XC16X_INSN_SRVWDTM, "srvwdtm", "srvwdt", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* sbrk */
  {
    XC16X_INSN_SBRK, "sbrk", "sbrk", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* atomic $hash$uimm2 */
  {
    XC16X_INSN_ATOMIC, "atomic", "atomic", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extr $hash$uimm2 */
  {
    XC16X_INSN_EXTR, "extr", "extr", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extp $sr,$hash$uimm2 */
  {
    XC16X_INSN_EXTP, "extp", "extp", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extp $hash$pagenum,$hash$uimm2 */
  {
    XC16X_INSN_EXTP1, "extp1", "extp", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extp $hash$pag$upag16,$hash$uimm2 */
  {
    XC16X_INSN_EXTPG1, "extpg1", "extp", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extpr $sr,$hash$uimm2 */
  {
    XC16X_INSN_EXTPR, "extpr", "extpr", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extpr $hash$pagenum,$hash$uimm2 */
  {
    XC16X_INSN_EXTPR1, "extpr1", "extpr", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* exts $sr,$hash$uimm2 */
  {
    XC16X_INSN_EXTS, "exts", "exts", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* exts $hash$seghi8,$hash$uimm2 */
  {
    XC16X_INSN_EXTS1, "exts1", "exts", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extsr $sr,$hash$uimm2 */
  {
    XC16X_INSN_EXTSR, "extsr", "extsr", 16,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* extsr $hash$seghi8,$hash$uimm2 */
  {
    XC16X_INSN_EXTSR1, "extsr1", "extsr", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* prior $dr,$sr */
  {
    XC16X_INSN_PRIOR, "prior", "prior", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $RegNam */
  {
    XC16X_INSN_BCLR18, "bclr18", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR0, "bclr0", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR1, "bclr1", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR2, "bclr2", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR3, "bclr3", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR4, "bclr4", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR5, "bclr5", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR6, "bclr6", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR7, "bclr7", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR8, "bclr8", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR9, "bclr9", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR10, "bclr10", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR11, "bclr11", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR12, "bclr12", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR13, "bclr13", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR14, "bclr14", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bclr $reg8$dot$qbit */
  {
    XC16X_INSN_BCLR15, "bclr15", "bclr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $RegNam */
  {
    XC16X_INSN_BSET19, "bset19", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET0, "bset0", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET1, "bset1", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET2, "bset2", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET3, "bset3", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET4, "bset4", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET5, "bset5", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET6, "bset6", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET7, "bset7", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET8, "bset8", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET9, "bset9", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET10, "bset10", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET11, "bset11", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET12, "bset12", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET13, "bset13", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET14, "bset14", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bset $reg8$dot$qbit */
  {
    XC16X_INSN_BSET15, "bset15", "bset", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bmov $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BMOV, "bmov", "bmov", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bmovn $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BMOVN, "bmovn", "bmovn", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* band $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BAND, "band", "band", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bor $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BOR, "bor", "bor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bxor $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BXOR, "bxor", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bcmp $reghi8$dot$qhibit,$reg8$dot$qlobit */
  {
    XC16X_INSN_BCMP, "bcmp", "bcmp", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bfldl $reg8,$hash$mask8,$hash$datahi8 */
  {
    XC16X_INSN_BFLDL, "bfldl", "bfldl", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* bfldh $reg8,$hash$masklo8,$hash$data8 */
  {
    XC16X_INSN_BFLDH, "bfldh", "bfldh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $src1,$src2 */
  {
    XC16X_INSN_CMPR, "cmpr", "cmp", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $drb,$srb */
  {
    XC16X_INSN_CMPBR, "cmpbr", "cmpb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $src1,$hash$uimm3 */
  {
    XC16X_INSN_CMPRI, "cmpri", "cmp", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $drb,$hash$uimm3 */
  {
    XC16X_INSN_CMPBRI, "cmpbri", "cmpb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $reg8,$hash$uimm16 */
  {
    XC16X_INSN_CMPI, "cmpi", "cmp", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $regb8,$hash$uimm8 */
  {
    XC16X_INSN_CMPBI, "cmpbi", "cmpb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $dr,[$sr2] */
  {
    XC16X_INSN_CMPR2, "cmpr2", "cmp", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $drb,[$sr2] */
  {
    XC16X_INSN_CMPBR2, "cmpbr2", "cmpb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $dr,[$sr2+] */
  {
    XC16X_INSN_CMP2I, "cmp2i", "cmp", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $drb,[$sr2+] */
  {
    XC16X_INSN_CMPB2I, "cmpb2i", "cmpb", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $reg8,$pof$upof16 */
  {
    XC16X_INSN_CMP04, "cmp04", "cmp", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $regb8,$pof$upof16 */
  {
    XC16X_INSN_CMPB4, "cmpb4", "cmpb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $regmem8,$memgr8 */
  {
    XC16X_INSN_CMP004, "cmp004", "cmp", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmp $reg8,$memory */
  {
    XC16X_INSN_CMP0004, "cmp0004", "cmp", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $regbmem8,$memgr8 */
  {
    XC16X_INSN_CMPB04, "cmpb04", "cmpb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpb $regb8,$memory */
  {
    XC16X_INSN_CMPB004, "cmpb004", "cmpb", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd1 $sr,$hash$uimm4 */
  {
    XC16X_INSN_CMPD1RI, "cmpd1ri", "cmpd1", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd2 $sr,$hash$uimm4 */
  {
    XC16X_INSN_CMPD2RI, "cmpd2ri", "cmpd2", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi1 $sr,$hash$uimm4 */
  {
    XC16X_INSN_CMPI1RI, "cmpi1ri", "cmpi1", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi2 $sr,$hash$uimm4 */
  {
    XC16X_INSN_CMPI2RI, "cmpi2ri", "cmpi2", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd1 $reg8,$hash$uimm16 */
  {
    XC16X_INSN_CMPD1RIM, "cmpd1rim", "cmpd1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd2 $reg8,$hash$uimm16 */
  {
    XC16X_INSN_CMPD2RIM, "cmpd2rim", "cmpd2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi1 $reg8,$hash$uimm16 */
  {
    XC16X_INSN_CMPI1RIM, "cmpi1rim", "cmpi1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi2 $reg8,$hash$uimm16 */
  {
    XC16X_INSN_CMPI2RIM, "cmpi2rim", "cmpi2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd1 $reg8,$pof$upof16 */
  {
    XC16X_INSN_CMPD1RP, "cmpd1rp", "cmpd1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd2 $reg8,$pof$upof16 */
  {
    XC16X_INSN_CMPD2RP, "cmpd2rp", "cmpd2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi1 $reg8,$pof$upof16 */
  {
    XC16X_INSN_CMPI1RP, "cmpi1rp", "cmpi1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi2 $reg8,$pof$upof16 */
  {
    XC16X_INSN_CMPI2RP, "cmpi2rp", "cmpi2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd1 $regmem8,$memgr8 */
  {
    XC16X_INSN_CMPD1RM, "cmpd1rm", "cmpd1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd2 $regmem8,$memgr8 */
  {
    XC16X_INSN_CMPD2RM, "cmpd2rm", "cmpd2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi1 $regmem8,$memgr8 */
  {
    XC16X_INSN_CMPI1RM, "cmpi1rm", "cmpi1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi2 $regmem8,$memgr8 */
  {
    XC16X_INSN_CMPI2RM, "cmpi2rm", "cmpi2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd1 $reg8,$memory */
  {
    XC16X_INSN_CMPD1RMI, "cmpd1rmi", "cmpd1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpd2 $reg8,$memory */
  {
    XC16X_INSN_CMPD2RMI, "cmpd2rmi", "cmpd2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi1 $reg8,$memory */
  {
    XC16X_INSN_CMPI1RMI, "cmpi1rmi", "cmpi1", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* cmpi2 $reg8,$memory */
  {
    XC16X_INSN_CMPI2RMI, "cmpi2rmi", "cmpi2", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* shl $dr,$sr */
  {
    XC16X_INSN_SHLR, "shlr", "shl", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* shr $dr,$sr */
  {
    XC16X_INSN_SHRR, "shrr", "shr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* rol $dr,$sr */
  {
    XC16X_INSN_ROLR, "rolr", "rol", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* ror $dr,$sr */
  {
    XC16X_INSN_RORR, "rorr", "ror", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* ashr $dr,$sr */
  {
    XC16X_INSN_ASHRR, "ashrr", "ashr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* shl $sr,$hash$uimm4 */
  {
    XC16X_INSN_SHLRI, "shlri", "shl", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* shr $sr,$hash$uimm4 */
  {
    XC16X_INSN_SHRRI, "shrri", "shr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* rol $sr,$hash$uimm4 */
  {
    XC16X_INSN_ROLRI, "rolri", "rol", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* ror $sr,$hash$uimm4 */
  {
    XC16X_INSN_RORRI, "rorri", "ror", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
/* ashr $sr,$hash$uimm4 */
  {
    XC16X_INSN_ASHRRI, "ashrri", "ashr", 16,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { PIPE_OS, 0 } } } }
  },
};

#undef OP
#undef A

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

static void
init_tables (void)
{
}

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 xc16x_cgen_rebuild_tables (CGEN_CPU_TABLE *);

/* Subroutine of xc16x_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;
    }
  abort ();
}

/* Subroutine of xc16x_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 = & xc16x_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 xc16x_cgen_cpu_open to build the hardware table.  */

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

/* Subroutine of xc16x_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 = & xc16x_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 xc16x_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 = & xc16x_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 xc16x_cgen_cpu_open to rebuild the tables.  */

static void
xc16x_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 = & xc16x_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 = & xc16x_cgen_mach_table[i];

	if (mach->insn_chunk_bitsize != 0)
	{
	  if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
	    {
	      fprintf (stderr, "xc16x_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
		       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_END:     terminates arguments

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

CGEN_CPU_DESC
xc16x_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;
  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 (xc16x_cgen_mach_table, name);

	    machs |= 1 << mach->num;
	    break;
	  }
	case CGEN_CPU_OPEN_ENDIAN :
	  endian = va_arg (ap, enum cgen_endian);
	  break;
	default :
	  fprintf (stderr, "xc16x_cgen_cpu_open: unsupported argument `%d'\n",
		   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.  */
      fprintf (stderr, "xc16x_cgen_cpu_open: no endianness specified\n");
      abort ();
    }

  cd->isas = cgen_bitset_copy (isas);
  cd->machs = machs;
  cd->endian = endian;
  /* FIXME: for the sparc case we can determine insn-endianness statically.
     The worry here is where both data and insn endian can be independently
     chosen, in which case this function will need another argument.
     Actually, will want to allow for more arguments in the future anyway.  */
  cd->insn_endian = endian;

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

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

/* Cover fn to xc16x_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
xc16x_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
{
  return xc16x_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
xc16x_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));
    }  

  if (cd->macro_insn_table.init_entries)
    free ((CGEN_INSN *) cd->macro_insn_table.init_entries);

  if (cd->insn_table.init_entries)
    free ((CGEN_INSN *) cd->insn_table.init_entries);

  if (cd->hw_table.entries)
    free ((CGEN_HW_ENTRY *) cd->hw_table.entries);

  if (cd->operand_table.entries)
    free ((CGEN_HW_ENTRY *) cd->operand_table.entries);

  free (cd);
}

