/* CPU data for arc.

THIS FILE IS MACHINE GENERATED WITH CGEN.

Copyright 1996-2007 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 "arc-desc.h"
#include "arc-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 },
  { "a5", MACH_A5 },
  { "arc600", MACH_ARC600 },
  { "arc700", MACH_ARC700 },
  { "max", MACH_MAX },
  { 0, 0 }
};

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

static const CGEN_ATTR_ENTRY LIMM_attr[] ATTRIBUTE_UNUSED =
{
  { "none", LIMM_NONE },
  { "h", LIMM_H },
  { "B", LIMM_B },
  { "BC", LIMM_BC },
  { "C", LIMM_C },
  { 0, 0 }
};

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

const CGEN_ATTR_TABLE arc_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 arc_cgen_operand_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
  { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
  { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
  { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
  { "SIGNED", &bool_attr[0], &bool_attr[0] },
  { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
  { "RELAX", &bool_attr[0], &bool_attr[0] },
  { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

const CGEN_ATTR_TABLE arc_cgen_insn_attr_table[] =
{
  { "MACH", & MACH_attr[0], & MACH_attr[0] },
  { "LIMM", & LIMM_attr[0], & LIMM_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] },
  { "SHORT_P", &bool_attr[0], &bool_attr[0] },
  { 0, 0, 0 }
};

/* Instruction set variants.  */

static const CGEN_ISA arc_cgen_isa_table[] = {
  { "ARCompact", 32, 32, 32, 32 },
  { 0, 0, 0, 0, 0 }
};

/* Machine variants.  */

static const CGEN_MACH arc_cgen_mach_table[] = {
  { "a5", "A5", MACH_A5, 16 },
  { "arc600", "ARC600", MACH_ARC600, 16 },
  { "arc700", "ARC700", MACH_ARC700, 16 },
  { 0, 0, 0, 0 }
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_cr_names_entries[] =
{
  { "gp", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "fp", 27, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "blink", 31, {0, {{{0, 0}}}}, 0, 0 },
  { "mlo", 57, {0, {{{0, 0}}}}, 0, 0 },
  { "mmid", 58, {0, {{{0, 0}}}}, 0, 0 },
  { "mhi", 59, {0, {{{0, 0}}}}, 0, 0 },
  { "lp_count", 60, {0, {{{0, 0}}}}, 0, 0 },
  { "pcl", 63, {0, {{{0, 0}}}}, 0, 0 },
  { "ilink1", 29, {0, {{{0, 0}}}}, 0, 0 },
  { "ilink2", 30, {0, {{{0, 0}}}}, 0, 0 },
  { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
  { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
  { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
  { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
  { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
  { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
  { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
  { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
  { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
  { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
  { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
  { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
  { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
  { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
  { "r32", 32, {0, {{{0, 0}}}}, 0, 0 },
  { "r33", 33, {0, {{{0, 0}}}}, 0, 0 },
  { "r34", 34, {0, {{{0, 0}}}}, 0, 0 },
  { "r35", 35, {0, {{{0, 0}}}}, 0, 0 },
  { "r36", 36, {0, {{{0, 0}}}}, 0, 0 },
  { "r37", 37, {0, {{{0, 0}}}}, 0, 0 },
  { "r38", 38, {0, {{{0, 0}}}}, 0, 0 },
  { "r39", 39, {0, {{{0, 0}}}}, 0, 0 },
  { "r40", 40, {0, {{{0, 0}}}}, 0, 0 },
  { "r41", 41, {0, {{{0, 0}}}}, 0, 0 },
  { "r42", 42, {0, {{{0, 0}}}}, 0, 0 },
  { "r43", 43, {0, {{{0, 0}}}}, 0, 0 },
  { "r44", 44, {0, {{{0, 0}}}}, 0, 0 },
  { "r45", 45, {0, {{{0, 0}}}}, 0, 0 },
  { "r46", 46, {0, {{{0, 0}}}}, 0, 0 },
  { "r47", 47, {0, {{{0, 0}}}}, 0, 0 },
  { "r48", 48, {0, {{{0, 0}}}}, 0, 0 },
  { "r49", 49, {0, {{{0, 0}}}}, 0, 0 },
  { "r50", 50, {0, {{{0, 0}}}}, 0, 0 },
  { "r51", 51, {0, {{{0, 0}}}}, 0, 0 },
  { "r52", 52, {0, {{{0, 0}}}}, 0, 0 },
  { "r53", 53, {0, {{{0, 0}}}}, 0, 0 },
  { "r54", 54, {0, {{{0, 0}}}}, 0, 0 },
  { "r55", 55, {0, {{{0, 0}}}}, 0, 0 },
  { "r56", 56, {0, {{{0, 0}}}}, 0, 0 },
  { "r57", 57, {0, {{{0, 0}}}}, 0, 0 },
  { "r58", 58, {0, {{{0, 0}}}}, 0, 0 },
  { "r59", 59, {0, {{{0, 0}}}}, 0, 0 },
  { "r60", 60, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_cr_names =
{
  & arc_cgen_opval_cr_names_entries[0],
  72,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_Qcondb_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "ra", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "al", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "eq", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "z", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "ne", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "nz", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "pl", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "p", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "mi", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "n", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "c", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "lo", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "cc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "nc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "hs", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "vs", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "v", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "vc", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "nv", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "gt", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "ge", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "lt", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "le", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "hi", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "ls", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "pnz", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_Qcondb =
{
  & arc_cgen_opval_h_Qcondb_entries[0],
  28,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_Qcondj_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "al", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "eq", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "z", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "ne", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "nz", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "pl", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "p", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "mi", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "n", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "cs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "c", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "lo", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "cc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "nc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "hs", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "vs", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "v", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "vc", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "nv", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "gt", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "ge", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "lt", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "le", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "hi", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "ls", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "pnz", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_Qcondj =
{
  & arc_cgen_opval_h_Qcondj_entries[0],
  27,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_Qcondi_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".al", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".eq", 1, {0, {{{0, 0}}}}, 0, 0 },
  { ".z", 1, {0, {{{0, 0}}}}, 0, 0 },
  { ".ne", 2, {0, {{{0, 0}}}}, 0, 0 },
  { ".nz", 2, {0, {{{0, 0}}}}, 0, 0 },
  { ".pl", 3, {0, {{{0, 0}}}}, 0, 0 },
  { ".p", 3, {0, {{{0, 0}}}}, 0, 0 },
  { ".mi", 4, {0, {{{0, 0}}}}, 0, 0 },
  { ".n", 4, {0, {{{0, 0}}}}, 0, 0 },
  { ".cs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { ".c", 5, {0, {{{0, 0}}}}, 0, 0 },
  { ".lo", 5, {0, {{{0, 0}}}}, 0, 0 },
  { ".cc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { ".nc", 6, {0, {{{0, 0}}}}, 0, 0 },
  { ".hs", 6, {0, {{{0, 0}}}}, 0, 0 },
  { ".vs", 7, {0, {{{0, 0}}}}, 0, 0 },
  { ".v", 7, {0, {{{0, 0}}}}, 0, 0 },
  { ".vc", 8, {0, {{{0, 0}}}}, 0, 0 },
  { ".nv", 8, {0, {{{0, 0}}}}, 0, 0 },
  { ".gt", 9, {0, {{{0, 0}}}}, 0, 0 },
  { ".ge", 10, {0, {{{0, 0}}}}, 0, 0 },
  { ".lt", 11, {0, {{{0, 0}}}}, 0, 0 },
  { ".le", 12, {0, {{{0, 0}}}}, 0, 0 },
  { ".hi", 13, {0, {{{0, 0}}}}, 0, 0 },
  { ".ls", 14, {0, {{{0, 0}}}}, 0, 0 },
  { ".pnz", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_Qcondi =
{
  & arc_cgen_opval_h_Qcondi_entries[0],
  27,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_uncondb_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "al", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "ra", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_uncondb =
{
  & arc_cgen_opval_h_uncondb_entries[0],
  3,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_uncondj_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "al", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_uncondj =
{
  & arc_cgen_opval_h_uncondj_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_uncondi_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".al", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_uncondi =
{
  & arc_cgen_opval_h_uncondi_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_i2cond_entries[] =
{
  { "COND2_", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_al", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_ra", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_eq", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_z", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_ne", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "COND2_nz", 2, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_i2cond =
{
  & arc_cgen_opval_h_i2cond_entries[0],
  7,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_i3cond_entries[] =
{
  { "COND3_gt", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_ge", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_lt", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_le", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_hi", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_cc", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_nc", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_hs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_cs", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_c", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_lo", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "COND3_ls", 7, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_i3cond =
{
  & arc_cgen_opval_h_i3cond_entries[0],
  12,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_delay_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".d", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_delay =
{
  & arc_cgen_opval_h_delay_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_uflags_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".f", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_uflags =
{
  & arc_cgen_opval_h_uflags_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_nil_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_nil =
{
  & arc_cgen_opval_h_nil_entries[0],
  1,
  0, 0, 0, 0, ""
};

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

CGEN_KEYWORD arc_cgen_opval_h_auflags =
{
  & arc_cgen_opval_h_auflags_entries[0],
  1,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_aufflags_entries[] =
{
  { ".f", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_aufflags =
{
  & arc_cgen_opval_h_aufflags_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_Di_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".di", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_Di =
{
  & arc_cgen_opval_h_Di_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_insn16_entries[] =
{
  { "_s", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_insn16 =
{
  & arc_cgen_opval_h_insn16_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_insn32_entries[] =
{
  { "", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "_l", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_insn32 =
{
  & arc_cgen_opval_h_insn32_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h__aw_entries[] =
{
  { ".a", 0, {0, {{{0, 0}}}}, 0, 0 },
  { ".aw", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h__aw =
{
  & arc_cgen_opval_h__aw_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_cr16_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 },
  { "r12", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 7, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_cr16 =
{
  & arc_cgen_opval_h_cr16_entries[0],
  8,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_r0_entries[] =
{
  { "r0", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_r0 =
{
  & arc_cgen_opval_h_r0_entries[0],
  1,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_gp_entries[] =
{
  { "r26", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "gp", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_gp =
{
  & arc_cgen_opval_h_gp_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_sp_entries[] =
{
  { "sp", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r28", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_sp =
{
  & arc_cgen_opval_h_sp_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_pcl_entries[] =
{
  { "pcl", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r63", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_pcl =
{
  & arc_cgen_opval_h_pcl_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_noilink_entries[] =
{
  { "gp", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "fp", 27, {0, {{{0, 0}}}}, 0, 0 },
  { "sp", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "blink", 31, {0, {{{0, 0}}}}, 0, 0 },
  { "mlo", 57, {0, {{{0, 0}}}}, 0, 0 },
  { "mmid", 58, {0, {{{0, 0}}}}, 0, 0 },
  { "mhi", 59, {0, {{{0, 0}}}}, 0, 0 },
  { "lp_count", 60, {0, {{{0, 0}}}}, 0, 0 },
  { "pcl", 63, {0, {{{0, 0}}}}, 0, 0 },
  { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
  { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
  { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
  { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
  { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
  { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
  { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
  { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
  { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
  { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
  { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
  { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
  { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
  { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
  { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
  { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
  { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
  { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
  { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
  { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
  { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
  { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
  { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
  { "r32", 32, {0, {{{0, 0}}}}, 0, 0 },
  { "r33", 33, {0, {{{0, 0}}}}, 0, 0 },
  { "r34", 34, {0, {{{0, 0}}}}, 0, 0 },
  { "r35", 35, {0, {{{0, 0}}}}, 0, 0 },
  { "r36", 36, {0, {{{0, 0}}}}, 0, 0 },
  { "r37", 37, {0, {{{0, 0}}}}, 0, 0 },
  { "r38", 38, {0, {{{0, 0}}}}, 0, 0 },
  { "r39", 39, {0, {{{0, 0}}}}, 0, 0 },
  { "r40", 40, {0, {{{0, 0}}}}, 0, 0 },
  { "r41", 41, {0, {{{0, 0}}}}, 0, 0 },
  { "r42", 42, {0, {{{0, 0}}}}, 0, 0 },
  { "r43", 43, {0, {{{0, 0}}}}, 0, 0 },
  { "r44", 44, {0, {{{0, 0}}}}, 0, 0 },
  { "r45", 45, {0, {{{0, 0}}}}, 0, 0 },
  { "r46", 46, {0, {{{0, 0}}}}, 0, 0 },
  { "r47", 47, {0, {{{0, 0}}}}, 0, 0 },
  { "r48", 48, {0, {{{0, 0}}}}, 0, 0 },
  { "r49", 49, {0, {{{0, 0}}}}, 0, 0 },
  { "r50", 50, {0, {{{0, 0}}}}, 0, 0 },
  { "r51", 51, {0, {{{0, 0}}}}, 0, 0 },
  { "r52", 52, {0, {{{0, 0}}}}, 0, 0 },
  { "r53", 53, {0, {{{0, 0}}}}, 0, 0 },
  { "r54", 54, {0, {{{0, 0}}}}, 0, 0 },
  { "r55", 55, {0, {{{0, 0}}}}, 0, 0 },
  { "r56", 56, {0, {{{0, 0}}}}, 0, 0 },
  { "r57", 57, {0, {{{0, 0}}}}, 0, 0 },
  { "r58", 58, {0, {{{0, 0}}}}, 0, 0 },
  { "r59", 59, {0, {{{0, 0}}}}, 0, 0 },
  { "r60", 60, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_noilink =
{
  & arc_cgen_opval_h_noilink_entries[0],
  68,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_ilinkx_entries[] =
{
  { "ilink1", 29, {0, {{{0, 0}}}}, 0, 0 },
  { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
  { "ilink2", 30, {0, {{{0, 0}}}}, 0, 0 },
  { "r30", 30, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_ilinkx =
{
  & arc_cgen_opval_h_ilinkx_entries[0],
  4,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_r31_entries[] =
{
  { "blink", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "r31", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_r31 =
{
  & arc_cgen_opval_h_r31_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_status32_entries[] =
{
  { "status32", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_status32 =
{
  & arc_cgen_opval_h_status32_entries[0],
  1,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_ne_entries[] =
{
  { "ne", 0, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_ne =
{
  & arc_cgen_opval_h_ne_entries[0],
  1,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_RccS_entries[] =
{
  { "eq", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "ne", 1, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_RccS =
{
  & arc_cgen_opval_h_RccS_entries[0],
  2,
  0, 0, 0, 0, ""
};

static CGEN_KEYWORD_ENTRY arc_cgen_opval_h_Rcc_entries[] =
{
  { "req", 0, {0, {{{0, 0}}}}, 0, 0 },
  { "rne", 1, {0, {{{0, 0}}}}, 0, 0 },
  { "rlt", 2, {0, {{{0, 0}}}}, 0, 0 },
  { "rge", 3, {0, {{{0, 0}}}}, 0, 0 },
  { "rlo", 4, {0, {{{0, 0}}}}, 0, 0 },
  { "rhs", 5, {0, {{{0, 0}}}}, 0, 0 },
  { "bit0", 14, {0, {{{0, 0}}}}, 0, 0 },
  { "bit1", 15, {0, {{{0, 0}}}}, 0, 0 }
};

CGEN_KEYWORD arc_cgen_opval_h_Rcc =
{
  & arc_cgen_opval_h_Rcc_entries[0],
  8,
  0, 0, 0, 0, ""
};


/* The hardware table.  */

#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define A(a) (1 << CGEN_HW_##a)
#else
#define A(a) (1 << CGEN_HW_/**/a)
#endif

const CGEN_HW_ENTRY arc_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-lbit", HW_H_LBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-zbit", HW_H_ZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-nbit", HW_H_NBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-vbit", HW_H_VBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ubit", HW_H_UBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-e1", HW_H_E1, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-e2", HW_H_E2, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-s1bit", HW_H_S1BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-s2bit", HW_H_S2BIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-Qcondb", HW_H_QCONDB, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_Qcondb, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-Qcondj", HW_H_QCONDJ, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_Qcondj, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-Qcondi", HW_H_QCONDI, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_Qcondi, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-uncondb", HW_H_UNCONDB, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_uncondb, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-uncondj", HW_H_UNCONDJ, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_uncondj, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-uncondi", HW_H_UNCONDI, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_uncondi, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-i2cond", HW_H_I2COND, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_i2cond, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-i3cond", HW_H_I3COND, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_i3cond, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-delay", HW_H_DELAY, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_delay, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-uflags", HW_H_UFLAGS, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_uflags, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-nil", HW_H_NIL, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_nil, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-auflags", HW_H_AUFLAGS, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_auflags, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-aufflags", HW_H_AUFFLAGS, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_aufflags, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-Di", HW_H_DI, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_Di, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-insn16", HW_H_INSN16, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_insn16, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-insn32", HW_H_INSN32, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_insn32, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-_aw", HW_H__AW, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h__aw, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cr", HW_H_CR, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_cr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-cr16", HW_H_CR16, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_cr16, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-r0", HW_H_R0, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_r0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-gp", HW_H_GP, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_gp, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-sp", HW_H_SP, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_sp, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-pcl", HW_H_PCL, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_pcl, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-noilink", HW_H_NOILINK, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_noilink, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ilinkx", HW_H_ILINKX, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_ilinkx, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-r31", HW_H_R31, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_r31, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-auxr", HW_H_AUXR, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_cr_names, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-status32", HW_H_STATUS32, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_status32, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-timer-expire", HW_H_TIMER_EXPIRE, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-prof-offset", HW_H_PROF_OFFSET, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-ne", HW_H_NE, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_ne, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
  { "h-RccS", HW_H_RCCS, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_RccS, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { "h-Rcc", HW_H_RCC, CGEN_ASM_KEYWORD, (PTR) & arc_cgen_opval_h_Rcc, { 0, { { { (1<<MACH_BASE), 0 } } } } },
  { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A


/* The instruction field table.  */

#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define A(a) (1 << CGEN_IFLD_##a)
#else
#define A(a) (1 << CGEN_IFLD_/**/a)
#endif

const CGEN_IFLD arc_cgen_ifld_table[] =
{
  { ARC_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_COND_Q, "f-cond-Q", 0, 32, 27, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_COND_I2, "f-cond-i2", 0, 32, 5, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_COND_I3, "f-cond-i3", 0, 32, 7, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_BRCOND, "f-brcond", 0, 32, 28, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP__A, "f-op--a", 0, 32, 13, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP__B, "f-op--b", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP__C, "f-op--c", 0, 32, 8, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_B_5_3, "f-B-5-3", 0, 32, 17, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP_B, "f-op-B", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP_C, "f-op-C", 0, 32, 20, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP_CJ, "f-op-Cj", 0, 32, 20, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_H_2_0, "f-h-2-0", 0, 32, 8, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_H_5_3, "f-h-5-3", 0, 32, 13, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP_H, "f-op-h", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U6, "f-u6", 0, 32, 20, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U6X2, "f-u6x2", 0, 32, 20, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_DELAY_N, "f-delay-N", 0, 32, 26, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_RES27, "f-res27", 0, 32, 27, 1, { 0|A(RESERVED), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_F, "f-F", 0, 32, 16, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_CBRANCH_IMM, "f-cbranch-imm", 0, 32, 27, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OP_A, "f-op-A", 0, 32, 26, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S12H, "f-s12h", 0, 32, 26, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S12, "f-s12", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S12X2, "f-s12x2", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL10, "f-rel10", 0, 32, 7, 9, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL7, "f-rel7", 0, 32, 10, 6, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL8, "f-rel8", 0, 32, 9, 7, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL13BL, "f-rel13bl", 0, 32, 5, 11, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D21L, "f-d21l", 0, 32, 5, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D21BL, "f-d21bl", 0, 32, 5, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D21H, "f-d21h", 0, 32, 16, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D25M, "f-d25m", 0, 32, 16, 10, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D25H, "f-d25h", 0, 32, 28, 4, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL21, "f-rel21", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL21BL, "f-rel21bl", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL25, "f-rel25", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL25BL, "f-rel25bl", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D9L, "f-d9l", 0, 32, 8, 7, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_D9H, "f-d9h", 0, 32, 16, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_REL9, "f-rel9", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U3, "f-u3", 0, 32, 13, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U5, "f-u5", 0, 32, 11, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U7, "f-u7", 0, 32, 9, 7, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U8, "f-u8", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S9, "f-s9", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U5X2, "f-u5x2", 0, 32, 11, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U5X4, "f-u5x4", 0, 32, 11, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_U8X4, "f-u8x4", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S9X1, "f-s9x1", 0, 32, 7, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S9X2, "f-s9x2", 0, 32, 7, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_S9X4, "f-s9x4", 0, 32, 7, 9, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_DUMMY, "f-dummy", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_OPM, "f-opm", 0, 32, 0, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_GO_TYPE, "f-go-type", 0, 32, 8, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_GO_CC_TYPE, "f-go-cc-type", 0, 32, 26, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_GO_OP, "f-go-op", 0, 32, 10, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_I16_43, "f-i16-43", 0, 32, 11, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_I16_GO, "f-i16-go", 0, 32, 11, 5, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_I16_GP_TYPE, "f-i16-gp-type", 0, 32, 5, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_I16ADDCMPU7_TYPE, "f-i16addcmpu7-type", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_BUF, "f-buf", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_BR, "f-br", 0, 32, 27, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_BLUF, "f-bluf", 0, 32, 14, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_BRSCOND, "f-brscond", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDOZZX, "f-ldozzx", 0, 32, 23, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDR6ZZX, "f-ldr6zzx", 0, 32, 10, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_STOZZR, "f-stozzr", 0, 32, 29, 3, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDOAA, "f-ldoaa", 0, 32, 21, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDRAA, "f-ldraa", 0, 32, 8, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_STOAA, "f-stoaa", 0, 32, 27, 2, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDODI, "f-LDODi", 0, 32, 20, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_LDRDI, "f-LDRDi", 0, 32, 16, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_STODI, "f-STODi", 0, 32, 26, 1, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { ARC_F_TRAPNUM, "f-trapnum", 0, 32, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } }  },
  { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
};

#undef A



/* multi ifield declarations */

const CGEN_MAYBE_MULTI_IFLD ARC_F_OP_B_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_OP_H_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_S12_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_S12X2_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL21_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL21BL_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL25_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL25BL_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL9_MULTI_IFIELD [];
const CGEN_MAYBE_MULTI_IFLD ARC_F_S9_MULTI_IFIELD [];


/* multi ifield definitions */

const CGEN_MAYBE_MULTI_IFLD ARC_F_OP_B_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP__B] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_B_5_3] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_OP_H_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_H_2_0] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_H_5_3] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_S12_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U6] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S12H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_S12X2_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U6] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S12H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL21_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21L] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL21BL_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21BL] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL25_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21L] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D25M] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D25H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL25BL_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D21BL] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D25M] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D25H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_REL9_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D9L] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D9H] } },
    { 0, { (const PTR) 0 } }
};
const CGEN_MAYBE_MULTI_IFLD ARC_F_S9_MULTI_IFIELD [] =
{
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U8] } },
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_D9H] } },
    { 0, { (const PTR) 0 } }
};

/* The operand table.  */

#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define A(a) (1 << CGEN_OPERAND_##a)
#else
#define A(a) (1 << CGEN_OPERAND_/**/a)
#endif
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define OPERAND(op) ARC_OPERAND_##op
#else
#define OPERAND(op) ARC_OPERAND_/**/op
#endif

const CGEN_OPERAND arc_cgen_operand_table[] =
{
/* pc: program counter */
  { "pc", ARC_OPERAND_PC, HW_H_PC, 0, 0,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_NIL] } }, 
    { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } }  },
/* lbit: loop inhibit bit */
  { "lbit", ARC_OPERAND_LBIT, HW_H_LBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* zbit: zero bit */
  { "zbit", ARC_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* nbit: negative bit */
  { "nbit", ARC_OPERAND_NBIT, HW_H_NBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* cbit: carry bit */
  { "cbit", ARC_OPERAND_CBIT, HW_H_CBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* vbit: overflow bit */
  { "vbit", ARC_OPERAND_VBIT, HW_H_VBIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* s1bit: channel 1 saturate */
  { "s1bit", ARC_OPERAND_S1BIT, HW_H_S1BIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* s2bit: channel 2 saturate */
  { "s2bit", ARC_OPERAND_S2BIT, HW_H_S2BIT, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Qcondb: Condition */
  { "Qcondb", ARC_OPERAND_QCONDB, HW_H_QCONDB, 27, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_COND_Q] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Qcondj: Condition */
  { "Qcondj", ARC_OPERAND_QCONDJ, HW_H_QCONDJ, 27, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_COND_Q] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Qcondi: Condition */
  { "Qcondi", ARC_OPERAND_QCONDI, HW_H_QCONDI, 27, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_COND_Q] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* uncondb: unconditional branch */
  { "uncondb", ARC_OPERAND_UNCONDB, HW_H_UNCONDB, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* uncondj: unconditional jump */
  { "uncondj", ARC_OPERAND_UNCONDJ, HW_H_UNCONDJ, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* uncondi: unconditional insn */
  { "uncondi", ARC_OPERAND_UNCONDI, HW_H_UNCONDI, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* i2cond: Condition */
  { "i2cond", ARC_OPERAND_I2COND, HW_H_I2COND, 5, 2,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_COND_I2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* i3cond: Condition */
  { "i3cond", ARC_OPERAND_I3COND, HW_H_I3COND, 7, 3,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_COND_I3] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* delay_N: Delay slot exposed */
  { "delay_N", ARC_OPERAND_DELAY_N, HW_H_DELAY, 26, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_DELAY_N] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* _S: 16 bit opcode */
  { "_S", ARC_OPERAND__S, HW_H_INSN16, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* _L: 32 bit opcode */
  { "_L", ARC_OPERAND__L, HW_H_INSN32, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* F: update flags */
  { "F", ARC_OPERAND_F, HW_H_UFLAGS, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_F] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* F1: always update flags */
  { "F1", ARC_OPERAND_F1, HW_H_AUFLAGS, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_F] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* F1F: always update flags; .F allowed */
  { "F1F", ARC_OPERAND_F1F, HW_H_AUFFLAGS, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_F] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* F0: never update flags */
  { "F0", ARC_OPERAND_F0, HW_H_NIL, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_F] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* R_a: Core Register a */
  { "R_a", ARC_OPERAND_R_A, HW_H_CR16, 13, 3,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP__A] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RA: Core Register A */
  { "RA", ARC_OPERAND_RA, HW_H_CR, 26, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP_A] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* R_b: Core Register b */
  { "R_b", ARC_OPERAND_R_B, HW_H_CR16, 5, 3,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP__B] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RB: Core Register B */
  { "RB", ARC_OPERAND_RB, HW_H_CR, 5, 6,
    { 2, { (const PTR) &ARC_F_OP_B_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* R_c: Core Register b */
  { "R_c", ARC_OPERAND_R_C, HW_H_CR16, 8, 3,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP__C] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RC: Core Register C */
  { "RC", ARC_OPERAND_RC, HW_H_CR, 20, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP_C] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Rh: Core register h */
  { "Rh", ARC_OPERAND_RH, HW_H_CR, 8, 6,
    { 2, { (const PTR) &ARC_F_OP_H_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* R0: Core Register 0 */
  { "R0", ARC_OPERAND_R0, HW_H_R0, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* R31: Core Register 31 */
  { "R31", ARC_OPERAND_R31, HW_H_R31, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* GP: Global Pointer */
  { "GP", ARC_OPERAND_GP, HW_H_GP, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* SP: Stack Pointer */
  { "SP", ARC_OPERAND_SP, HW_H_SP, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* PCL: read PC - aligned */
  { "PCL", ARC_OPERAND_PCL, HW_H_PCL, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RA_0: encode A as 0 */
  { "RA_0", ARC_OPERAND_RA_0, HW_H_NIL, 26, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP_A] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RB_0: encode B as 0 */
  { "RB_0", ARC_OPERAND_RB_0, HW_H_NIL, 5, 6,
    { 2, { (const PTR) &ARC_F_OP_B_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* RC_ilink: inlink[01] as op C */
  { "RC_ilink", ARC_OPERAND_RC_ILINK, HW_H_ILINKX, 20, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP_CJ] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RC_noilink: Core reg C, not ilink */
  { "RC_noilink", ARC_OPERAND_RC_NOILINK, HW_H_NOILINK, 20, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_OP_CJ] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* NE: NE condition  */
  { "NE", ARC_OPERAND_NE, HW_H_NE, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* U6: 6 bit unsigned immediate */
  { "U6", ARC_OPERAND_U6, HW_H_UINT, 20, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U6] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* U6x2: 6 bit unsigned immediate */
  { "U6x2", ARC_OPERAND_U6X2, HW_H_UINT, 20, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U6X2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u3: 3 bit unsigned immediate */
  { "u3", ARC_OPERAND_U3, HW_H_UINT, 13, 3,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U3] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u5: 5 bit unsigned immediate */
  { "u5", ARC_OPERAND_U5, HW_H_UINT, 11, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U5] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u7: 7 bit unsigned immediate */
  { "u7", ARC_OPERAND_U7, HW_H_UINT, 9, 7,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U7] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u8: 8 bit unsigned immediate */
  { "u8", ARC_OPERAND_U8, HW_H_UINT, 8, 8,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U8] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* s9: 8 bit signed immediate */
  { "s9", ARC_OPERAND_S9, HW_H_SINT, 8, 9,
    { 2, { (const PTR) &ARC_F_S9_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* s12: 12 bit signed immediate */
  { "s12", ARC_OPERAND_S12, HW_H_SINT, 20, 12,
    { 2, { (const PTR) &ARC_F_S12_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* s12x2: 12 bit signed immediate */
  { "s12x2", ARC_OPERAND_S12X2, HW_H_SINT, 20, 12,
    { 2, { (const PTR) &ARC_F_S12X2_MULTI_IFIELD[0] } }, 
    { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* u5x4: 5 bit uns imm times 4 */
  { "u5x4", ARC_OPERAND_U5X4, HW_H_UINT, 11, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U5X4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_u5_: 5 bit uns imm times 4 */
  { "sc_u5_", ARC_OPERAND_SC_U5_, HW_H_UINT, 11, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U5X4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_u5w: 5 bit uns imm times 2 */
  { "sc_u5w", ARC_OPERAND_SC_U5W, HW_H_UINT, 11, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U5X2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_u5b: 5 bit uns imm times 1 */
  { "sc_u5b", ARC_OPERAND_SC_U5B, HW_H_UINT, 11, 5,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U5] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* u8x4: 8 bit uns imm times 4 */
  { "u8x4", ARC_OPERAND_U8X4, HW_H_UINT, 8, 8,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_U8X4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* s9x4: 9 bit sgn imm times 4 */
  { "s9x4", ARC_OPERAND_S9X4, HW_H_UINT, 7, 9,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S9X4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_s9_: 8 bit uns imm times 4 */
  { "sc_s9_", ARC_OPERAND_SC_S9_, HW_H_UINT, 7, 9,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S9X4] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_s9w: 8 bit uns imm times 2 */
  { "sc_s9w", ARC_OPERAND_SC_S9W, HW_H_UINT, 7, 9,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S9X2] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* sc_s9b: 8 bit uns imm times 1 */
  { "sc_s9b", ARC_OPERAND_SC_S9B, HW_H_UINT, 7, 9,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_S9X1] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* label7: 7 bit pc relative address */
  { "label7", ARC_OPERAND_LABEL7, HW_H_IADDR, 10, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_REL7] } }, 
    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* label8: 8 bit pc relative address */
  { "label8", ARC_OPERAND_LABEL8, HW_H_IADDR, 9, 7,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_REL8] } }, 
    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* label9: 9 bit pc relative address */
  { "label9", ARC_OPERAND_LABEL9, HW_H_IADDR, 8, 8,
    { 2, { (const PTR) &ARC_F_REL9_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* label10: 10 bit pc relative address */
  { "label10", ARC_OPERAND_LABEL10, HW_H_IADDR, 7, 9,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_REL10] } }, 
    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* label13a: 13 bit bl pc rel address */
  { "label13a", ARC_OPERAND_LABEL13A, HW_H_IADDR, 5, 11,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_REL13BL] } }, 
    { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } }  },
/* label21: 21 bit pc relative address */
  { "label21", ARC_OPERAND_LABEL21, HW_H_IADDR, 5, 20,
    { 2, { (const PTR) &ARC_F_REL21_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* label21a: 21 bit bl pc rel address */
  { "label21a", ARC_OPERAND_LABEL21A, HW_H_IADDR, 5, 19,
    { 2, { (const PTR) &ARC_F_REL21BL_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* label25: 25 bit pc relative address */
  { "label25", ARC_OPERAND_LABEL25, HW_H_IADDR, 5, 24,
    { 3, { (const PTR) &ARC_F_REL25_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* label25a: 25 bit bl pc rel address */
  { "label25a", ARC_OPERAND_LABEL25A, HW_H_IADDR, 5, 23,
    { 3, { (const PTR) &ARC_F_REL25BL_MULTI_IFIELD[0] } }, 
    { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } }  },
/* dummy-op: (first 16 bit of) next insn */
  { "dummy-op", ARC_OPERAND_DUMMY_OP, HW_H_UINT, 16, 16,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_DUMMY] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* RccS: BRcc_s */
  { "RccS", ARC_OPERAND_RCCS, HW_H_RCCS, 8, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_BRSCOND] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* Rcc: BRcc / BBIT Condition */
  { "Rcc", ARC_OPERAND_RCC, HW_H_RCC, 28, 4,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_BRCOND] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* LDODi: ld /w offs Direct mem access */
  { "LDODi", ARC_OPERAND_LDODI, HW_H_DI, 20, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_LDODI] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* LDRDi: ld reg-reg Direct mem access */
  { "LDRDi", ARC_OPERAND_LDRDI, HW_H_DI, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_LDRDI] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* STODi: ld w/ offs Direct mem access */
  { "STODi", ARC_OPERAND_STODI, HW_H_DI, 26, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_STODI] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* EXDi: ex Direct memory access */
  { "EXDi", ARC_OPERAND_EXDI, HW_H_DI, 16, 1,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_F] } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* _AW: .AW suffix */
  { "_AW", ARC_OPERAND__AW, HW_H__AW, 0, 0,
    { 0, { (const PTR) 0 } }, 
    { 0, { { { (1<<MACH_BASE), 0 } } } }  },
/* trapnum: 6 bit trap number */
  { "trapnum", ARC_OPERAND_TRAPNUM, HW_H_UINT, 5, 6,
    { 0, { (const PTR) &arc_cgen_ifld_table[ARC_F_TRAPNUM] } }, 
    { 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))
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#define A(a) (1 << CGEN_INSN_##a)
#else
#define A(a) (1 << CGEN_INSN_/**/a)
#endif

static const CGEN_IBASE arc_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 } }, { { LIMM_NONE, 0 } } } } },
/* b$i2cond $label10 */
  {
    ARC_INSN_B_S, "b_s", "b", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$i3cond$_S $label7 */
  {
    ARC_INSN_BCC_S, "bcc_s", "b", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* br$RccS$_S $R_b,0,$label8 */
  {
    ARC_INSN_BRCC_S, "brcc_s", "br", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$Qcondb$_L $label21 */
  {
    ARC_INSN_BCC_L, "bcc_l", "b", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$Qcondb$_L.d $label21 */
  {
    ARC_INSN_BCC_L_D, "bcc_l.d", "b", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$uncondb$_L $label25 */
  {
    ARC_INSN_B_L, "b_l", "b", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$uncondb$_L.d $label25 */
  {
    ARC_INSN_B_L_D, "b_l.d", "b", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$Rcc $RB,$RC,$label9 */
  {
    ARC_INSN_BRCC_RC, "brcc_RC", "b", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* b$Rcc.d $RB,$RC,$label9 */
  {
    ARC_INSN_BRCC_RC_D, "brcc_RC.d", "b", 32,
    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* b$Rcc $RB,$U6,$label9 */
  {
    ARC_INSN_BRCC_U6, "brcc_U6", "b", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* b$Rcc.d $RB,$U6,$label9 */
  {
    ARC_INSN_BRCC_U6_D, "brcc_U6.d", "b", 32,
    { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bl$uncondj$_S $label13a */
  {
    ARC_INSN_BL_S, "bl_s", "bl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bl$Qcondj$_L $label21 */
  {
    ARC_INSN_BLCC, "blcc", "bl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bl$Qcondj$_L.d $label21 */
  {
    ARC_INSN_BLCC_D, "blcc.d", "bl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bl$uncondj$_L $label25a */
  {
    ARC_INSN_BL, "bl", "bl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bl$uncondj$_L.d $label25a */
  {
    ARC_INSN_BL_D, "bl.d", "bl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ld$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LD_ABS, "ld_abs", "ld", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ld$_AW$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LD__AW_ABS, "ld$_AW_abs", "ld", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ld.ab$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LD_AB_ABS, "ld.ab_abs", "ld.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ld.as$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LD_AS_ABS, "ld.as_abs", "ld.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ld$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LD_ABC, "ld_abc", "ld", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ld$_AW$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LD__AW_ABC, "ld$_AW_abc", "ld", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ld.ab$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LD_AB_ABC, "ld.ab_abc", "ld.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ld.as$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LD_AS_ABC, "ld.as_abc", "ld.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ld$_S $R_a,[$R_b,$R_c] */
  {
    ARC_INSN_LD_S_ABC, "ld_s_abc", "ld", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ld$_S $R_c,[$R_b,$sc_u5_] */
  {
    ARC_INSN_LD_S_ABU, "ld_s_abu", "ld", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ld$_S $R_b,[$SP,$u5x4] */
  {
    ARC_INSN_LD_S_ABSP, "ld_s_absp", "ld", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ld$_S $R_b,[$GP,$sc_s9_] */
  {
    ARC_INSN_LD_S_GPREL, "ld_s_gprel", "ld", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ld$_S $R_b,[$PCL,$u8x4] */
  {
    ARC_INSN_LD_S_PCREL, "ld_s_pcrel", "ld", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldb$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_ABS, "ldb_abs", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb$_AW$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB__AW_ABS, "ldb$_AW_abs", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb.ab$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_AB_ABS, "ldb.ab_abs", "ldb.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb.as$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_AS_ABS, "ldb.as_abs", "ldb.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_ABC, "ldb_abc", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb$_AW$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB__AW_ABC, "ldb$_AW_abc", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb.ab$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_AB_ABC, "ldb.ab_abc", "ldb.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb.as$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_AS_ABC, "ldb.as_abc", "ldb.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb$_S $R_a,[$R_b,$R_c] */
  {
    ARC_INSN_LDB_S_ABC, "ldb_s_abc", "ldb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldb$_S $R_c,[$R_b,$sc_u5b] */
  {
    ARC_INSN_LDB_S_ABU, "ldb_s_abu", "ldb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldb$_S $R_b,[$SP,$u5x4] */
  {
    ARC_INSN_LDB_S_ABSP, "ldb_s_absp", "ldb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldb$_S $R_b,[$GP,$sc_s9b] */
  {
    ARC_INSN_LDB_S_GPREL, "ldb_s_gprel", "ldb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldb.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_X_ABS, "ldb.x_abs", "ldb.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb$_AW.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB__AW_X_ABS, "ldb$_AW.x_abs", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb.ab.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_AB_X_ABS, "ldb.ab.x_abs", "ldb.ab.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb.as.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDB_AS_X_ABS, "ldb.as.x_abs", "ldb.as.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldb.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_X_ABC, "ldb.x_abc", "ldb.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb$_AW.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB__AW_X_ABC, "ldb$_AW.x_abc", "ldb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb.ab.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_AB_X_ABC, "ldb.ab.x_abc", "ldb.ab.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldb.as.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDB_AS_X_ABC, "ldb.as.x_abc", "ldb.as.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_ABS, "ldw_abs", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw$_AW$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW__AW_ABS, "ldw$_AW_abs", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw.ab$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_AB_ABS, "ldw.ab_abs", "ldw.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw.as$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_AS_ABS, "ldw.as_abs", "ldw.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_ABC, "ldw_abc", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw$_AW$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW__AW_ABC, "ldw$_AW_abc", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw.ab$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_AB_ABC, "ldw.ab_abc", "ldw.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw.as$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_AS_ABC, "ldw.as_abc", "ldw.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw$_S $R_a,[$R_b,$R_c] */
  {
    ARC_INSN_LDW_S_ABC, "ldw_s_abc", "ldw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldw$_S $R_c,[$R_b,$sc_u5w] */
  {
    ARC_INSN_LDW_S_ABU, "ldw_s_abu", "ldw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldw$_S $R_b,[$GP,$sc_s9w] */
  {
    ARC_INSN_LDW_S_GPREL, "ldw_s_gprel", "ldw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ldw.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_X_ABS, "ldw.x_abs", "ldw.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw$_AW.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW__AW_X_ABS, "ldw$_AW.x_abs", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw.ab.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_AB_X_ABS, "ldw.ab.x_abs", "ldw.ab.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw.as.x$LDODi $RA,[$RB,$s9] */
  {
    ARC_INSN_LDW_AS_X_ABS, "ldw.as.x_abs", "ldw.as.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ldw.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_X_ABC, "ldw.x_abc", "ldw.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw$_AW.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW__AW_X_ABC, "ldw$_AW.x_abc", "ldw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw.ab.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_AB_X_ABC, "ldw.ab.x_abc", "ldw.ab.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw.as.x$LDRDi $RA,[$RB,$RC] */
  {
    ARC_INSN_LDW_AS_X_ABC, "ldw.as.x_abc", "ldw.as.x", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ldw$_S.x $R_c,[$R_b,$sc_u5w] */
  {
    ARC_INSN_LDW_S_X_ABU, "ldw_s.x_abu", "ldw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* st$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_ST_ABS, "st_abs", "st", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* st$_AW$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_ST__AW_ABS, "st$_AW_abs", "st", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* st.ab$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_ST_AB_ABS, "st.ab_abs", "st.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* st.as$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_ST_AS_ABS, "st.as_abs", "st.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* st$_S $R_c,[$R_b,$sc_u5_] */
  {
    ARC_INSN_ST_S_ABU, "st_s_abu", "st", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* st$_S $R_b,[$SP,$u5x4] */
  {
    ARC_INSN_ST_S_ABSP, "st_s_absp", "st", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* stb$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STB_ABS, "stb_abs", "stb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stb$_AW$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STB__AW_ABS, "stb$_AW_abs", "stb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stb.ab$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STB_AB_ABS, "stb.ab_abs", "stb.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stb.as$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STB_AS_ABS, "stb.as_abs", "stb.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stb$_S $R_c,[$R_b,$sc_u5b] */
  {
    ARC_INSN_STB_S_ABU, "stb_s_abu", "stb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* stb$_S $R_b,[$SP,$u5x4] */
  {
    ARC_INSN_STB_S_ABSP, "stb_s_absp", "stb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* stw$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STW_ABS, "stw_abs", "stw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stw$_AW$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STW__AW_ABS, "stw$_AW_abs", "stw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stw.ab$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STW_AB_ABS, "stw.ab_abs", "stw.ab", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stw.as$STODi $RC,[$RB,$s9] */
  {
    ARC_INSN_STW_AS_ABS, "stw.as_abs", "stw.as", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* stw$_S $R_c,[$R_b,$sc_u5w] */
  {
    ARC_INSN_STW_S_ABU, "stw_s_abu", "stw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADD_L_S12__RA_, "add_L_s12 $RA,", "add", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADD_CCU6__RA_, "add_ccu6 $RA,", "add", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADD_L_U6__RA_, "add_L_u6 $RA,", "add", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADD_L_R_R__RA__RC, "add_L_r_r $RA,$RC", "add", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADD_CC__RA__RC, "add_cc $RA,$RC", "add", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add$_S $R_a,$R_b,$R_c */
  {
    ARC_INSN_ADD_S_ABC, "add_s_abc", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_S $R_c,$R_b,$u3 */
  {
    ARC_INSN_ADD_S_CBU3, "add_s_cbu3", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_S $R_b,$R_b,$Rh */
  {
    ARC_INSN_ADD_S_MCAH, "add_s_mcah", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_H, 0 } } } }
  },
/* add$_S $R_b,$SP,$u5x4 */
  {
    ARC_INSN_ADD_S_ABSP, "add_s_absp", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_S $SP,$SP,$u5x4 */
  {
    ARC_INSN_ADD_S_ASSPSP, "add_s_asspsp", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_S $R0,$GP,$s9x4 */
  {
    ARC_INSN_ADD_S_GP, "add_s_gp", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add$_S $R_b,$R_b,$u7 */
  {
    ARC_INSN_ADD_S_R_U7, "add_s_r_u7", "add", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* adc$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADC_L_S12__RA_, "adc_L_s12 $RA,", "adc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adc$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADC_CCU6__RA_, "adc_ccu6 $RA,", "adc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adc$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADC_L_U6__RA_, "adc_L_u6 $RA,", "adc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adc$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADC_L_R_R__RA__RC, "adc_L_r_r $RA,$RC", "adc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* adc$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADC_CC__RA__RC, "adc_cc $RA,$RC", "adc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUB_L_S12__RA_, "sub_L_s12 $RA,", "sub", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUB_CCU6__RA_, "sub_ccu6 $RA,", "sub", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUB_L_U6__RA_, "sub_L_u6 $RA,", "sub", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUB_L_R_R__RA__RC, "sub_L_r_r $RA,$RC", "sub", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUB_CC__RA__RC, "sub_cc $RA,$RC", "sub", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub$_S $R_c,$R_b,$u3 */
  {
    ARC_INSN_SUB_S_CBU3, "sub_s_cbu3", "sub", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sub$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_SUB_S_GO, "I16_GO_SUB_s_go", "sub", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sub$_S $NE$R_b,$R_b,$R_b */
  {
    ARC_INSN_SUB_S_GO_SUB_NE, "sub_s_go_sub_ne", "sub", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sub$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_SUB_S_SSB, "sub_s_ssb", "sub", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sub$_S $SP,$SP,$u5x4 */
  {
    ARC_INSN_SUB_S_ASSPSP, "sub_s_asspsp", "sub", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sbc$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SBC_L_S12__RA_, "sbc_L_s12 $RA,", "sbc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sbc$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SBC_CCU6__RA_, "sbc_ccu6 $RA,", "sbc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sbc$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SBC_L_U6__RA_, "sbc_L_u6 $RA,", "sbc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sbc$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SBC_L_R_R__RA__RC, "sbc_L_r_r $RA,$RC", "sbc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sbc$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SBC_CC__RA__RC, "sbc_cc $RA,$RC", "sbc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* and$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_AND_L_S12__RA_, "and_L_s12 $RA,", "and", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* and$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_AND_CCU6__RA_, "and_ccu6 $RA,", "and", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* and$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_AND_L_U6__RA_, "and_L_u6 $RA,", "and", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* and$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_AND_L_R_R__RA__RC, "and_L_r_r $RA,$RC", "and", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* and$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_AND_CC__RA__RC, "and_cc $RA,$RC", "and", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* and$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_AND_S_GO, "I16_GO_AND_s_go", "and", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* or$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_OR_L_S12__RA_, "or_L_s12 $RA,", "or", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* or$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_OR_CCU6__RA_, "or_ccu6 $RA,", "or", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* or$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_OR_L_U6__RA_, "or_L_u6 $RA,", "or", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* or$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_OR_L_R_R__RA__RC, "or_L_r_r $RA,$RC", "or", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* or$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_OR_CC__RA__RC, "or_cc $RA,$RC", "or", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* or$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_OR_S_GO, "I16_GO_OR_s_go", "or", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bic$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_BIC_L_S12__RA_, "bic_L_s12 $RA,", "bic", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bic$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_BIC_CCU6__RA_, "bic_ccu6 $RA,", "bic", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bic$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_BIC_L_U6__RA_, "bic_L_u6 $RA,", "bic", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bic$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_BIC_L_R_R__RA__RC, "bic_L_r_r $RA,$RC", "bic", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bic$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_BIC_CC__RA__RC, "bic_cc $RA,$RC", "bic", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bic$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_BIC_S_GO, "I16_GO_BIC_s_go", "bic", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* xor$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_XOR_L_S12__RA_, "xor_L_s12 $RA,", "xor", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* xor$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_XOR_CCU6__RA_, "xor_ccu6 $RA,", "xor", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* xor$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_XOR_L_U6__RA_, "xor_L_u6 $RA,", "xor", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* xor$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_XOR_L_R_R__RA__RC, "xor_L_r_r $RA,$RC", "xor", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* xor$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_XOR_CC__RA__RC, "xor_cc $RA,$RC", "xor", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* xor$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_XOR_S_GO, "I16_GO_XOR_s_go", "xor", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* max$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MAX_L_S12__RA_, "max_L_s12 $RA,", "max", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* max$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MAX_CCU6__RA_, "max_ccu6 $RA,", "max", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* max$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MAX_L_U6__RA_, "max_L_u6 $RA,", "max", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* max$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MAX_L_R_R__RA__RC, "max_L_r_r $RA,$RC", "max", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* max$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MAX_CC__RA__RC, "max_cc $RA,$RC", "max", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* min$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MIN_L_S12__RA_, "min_L_s12 $RA,", "min", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* min$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MIN_CCU6__RA_, "min_ccu6 $RA,", "min", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* min$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MIN_L_U6__RA_, "min_L_u6 $RA,", "min", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* min$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MIN_L_R_R__RA__RC, "min_L_r_r $RA,$RC", "min", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* min$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MIN_CC__RA__RC, "min_cc $RA,$RC", "min", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mov$_L$F $RB,$s12 */
  {
    ARC_INSN_MOV_L_S12_, "mov_L_s12 ", "mov", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mov$Qcondi$F $RB,$U6 */
  {
    ARC_INSN_MOV_CCU6_, "mov_ccu6 ", "mov", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mov$_L$F $RB,$U6 */
  {
    ARC_INSN_MOV_L_U6_, "mov_L_u6 ", "mov", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mov$_L$F $RB,$RC */
  {
    ARC_INSN_MOV_L_R_R__RC, "mov_L_r_r $RC", "mov", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* mov$Qcondi$F $RB,$RC */
  {
    ARC_INSN_MOV_CC__RC, "mov_cc $RC", "mov", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* mov$_S $R_b,$Rh */
  {
    ARC_INSN_MOV_S_MCAH, "mov_s_mcah", "mov", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_H, 0 } } } }
  },
/* mov$_S $Rh,$R_b */
  {
    ARC_INSN_MOV_S_MCAHB, "mov_s_mcahb", "mov", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mov$_S $R_b,$u7 */
  {
    ARC_INSN_MOV_S_R_U7, "mov_s_r_u7", "mov", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* tst$_L$F1 $RB,$s12 */
  {
    ARC_INSN_TST_L_S12_, "tst_L_s12 ", "tst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* tst$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_TST_CCU6_, "tst_ccu6 ", "tst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* tst$_L$F1 $RB,$U6 */
  {
    ARC_INSN_TST_L_U6_, "tst_L_u6 ", "tst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* tst$_L$F1 $RB,$RC */
  {
    ARC_INSN_TST_L_R_R__RC, "tst_L_r_r $RC", "tst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* tst$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_TST_CC__RC, "tst_cc $RC", "tst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* tst$_S $R_b,$R_c */
  {
    ARC_INSN_TST_S_GO, "tst_s_go", "tst", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* cmp$_L$F1 $RB,$s12 */
  {
    ARC_INSN_CMP_L_S12_, "cmp_L_s12 ", "cmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* cmp$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_CMP_CCU6_, "cmp_ccu6 ", "cmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* cmp$_L$F1 $RB,$U6 */
  {
    ARC_INSN_CMP_L_U6_, "cmp_L_u6 ", "cmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* cmp$_L$F1 $RB,$RC */
  {
    ARC_INSN_CMP_L_R_R__RC, "cmp_L_r_r $RC", "cmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* cmp$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_CMP_CC__RC, "cmp_cc $RC", "cmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* cmp$_S $R_b,$Rh */
  {
    ARC_INSN_CMP_S_MCAH, "cmp_s_mcah", "cmp", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_H, 0 } } } }
  },
/* cmp$_S $R_b,$u7 */
  {
    ARC_INSN_CMP_S_R_U7, "cmp_s_r_u7", "cmp", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* rcmp$_L$F1 $RB,$s12 */
  {
    ARC_INSN_RCMP_L_S12_, "rcmp_L_s12 ", "rcmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rcmp$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_RCMP_CCU6_, "rcmp_ccu6 ", "rcmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rcmp$_L$F1 $RB,$U6 */
  {
    ARC_INSN_RCMP_L_U6_, "rcmp_L_u6 ", "rcmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rcmp$_L$F1 $RB,$RC */
  {
    ARC_INSN_RCMP_L_R_R__RC, "rcmp_L_r_r $RC", "rcmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* rcmp$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_RCMP_CC__RC, "rcmp_cc $RC", "rcmp", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* rsub$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_RSUB_L_S12__RA_, "rsub_L_s12 $RA,", "rsub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rsub$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_RSUB_CCU6__RA_, "rsub_ccu6 $RA,", "rsub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rsub$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_RSUB_L_U6__RA_, "rsub_L_u6 $RA,", "rsub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rsub$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_RSUB_L_R_R__RA__RC, "rsub_L_r_r $RA,$RC", "rsub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* rsub$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_RSUB_CC__RA__RC, "rsub_cc $RA,$RC", "rsub", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bset$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_BSET_L_S12__RA_, "bset_L_s12 $RA,", "bset", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bset$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_BSET_CCU6__RA_, "bset_ccu6 $RA,", "bset", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bset$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_BSET_L_U6__RA_, "bset_L_u6 $RA,", "bset", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bset$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_BSET_L_R_R__RA__RC, "bset_L_r_r $RA,$RC", "bset", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bset$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_BSET_CC__RA__RC, "bset_cc $RA,$RC", "bset", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bset$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_BSET_S_SSB, "bset_s_ssb", "bset", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bclr$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_BCLR_L_S12__RA_, "bclr_L_s12 $RA,", "bclr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bclr$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_BCLR_CCU6__RA_, "bclr_ccu6 $RA,", "bclr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bclr$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_BCLR_L_U6__RA_, "bclr_L_u6 $RA,", "bclr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bclr$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_BCLR_L_R_R__RA__RC, "bclr_L_r_r $RA,$RC", "bclr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bclr$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_BCLR_CC__RA__RC, "bclr_cc $RA,$RC", "bclr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bclr$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_BCLR_S_SSB, "bclr_s_ssb", "bclr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* btst$_L$F1 $RB,$s12 */
  {
    ARC_INSN_BTST_L_S12_, "btst_L_s12 ", "btst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* btst$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_BTST_CCU6_, "btst_ccu6 ", "btst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* btst$_L$F1 $RB,$U6 */
  {
    ARC_INSN_BTST_L_U6_, "btst_L_u6 ", "btst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* btst$_L$F1 $RB,$RC */
  {
    ARC_INSN_BTST_L_R_R__RC, "btst_L_r_r $RC", "btst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* btst$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_BTST_CC__RC, "btst_cc $RC", "btst", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* btst$_S $R_b,$u5 */
  {
    ARC_INSN_BTST_S_SSB, "btst_s_ssb", "btst", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* bxor$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_BXOR_L_S12__RA_, "bxor_L_s12 $RA,", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bxor$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_BXOR_CCU6__RA_, "bxor_ccu6 $RA,", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bxor$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_BXOR_L_U6__RA_, "bxor_L_u6 $RA,", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bxor$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_BXOR_L_R_R__RA__RC, "bxor_L_r_r $RA,$RC", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bxor$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_BXOR_CC__RA__RC, "bxor_cc $RA,$RC", "bxor", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bmsk$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_BMSK_L_S12__RA_, "bmsk_L_s12 $RA,", "bmsk", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bmsk$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_BMSK_CCU6__RA_, "bmsk_ccu6 $RA,", "bmsk", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bmsk$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_BMSK_L_U6__RA_, "bmsk_L_u6 $RA,", "bmsk", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* bmsk$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_BMSK_L_R_R__RA__RC, "bmsk_L_r_r $RA,$RC", "bmsk", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bmsk$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_BMSK_CC__RA__RC, "bmsk_cc $RA,$RC", "bmsk", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* bmsk$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_BMSK_S_SSB, "bmsk_s_ssb", "bmsk", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add1$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADD1_L_S12__RA_, "add1_L_s12 $RA,", "add1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add1$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADD1_CCU6__RA_, "add1_ccu6 $RA,", "add1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add1$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADD1_L_U6__RA_, "add1_L_u6 $RA,", "add1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add1$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADD1_L_R_R__RA__RC, "add1_L_r_r $RA,$RC", "add1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add1$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADD1_CC__RA__RC, "add1_cc $RA,$RC", "add1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add1$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ADD1_S_GO, "I16_GO_ADD1_s_go", "add1", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add2$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADD2_L_S12__RA_, "add2_L_s12 $RA,", "add2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add2$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADD2_CCU6__RA_, "add2_ccu6 $RA,", "add2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add2$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADD2_L_U6__RA_, "add2_L_u6 $RA,", "add2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add2$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADD2_L_R_R__RA__RC, "add2_L_r_r $RA,$RC", "add2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add2$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADD2_CC__RA__RC, "add2_cc $RA,$RC", "add2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add2$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ADD2_S_GO, "I16_GO_ADD2_s_go", "add2", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* add3$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADD3_L_S12__RA_, "add3_L_s12 $RA,", "add3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add3$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADD3_CCU6__RA_, "add3_ccu6 $RA,", "add3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add3$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADD3_L_U6__RA_, "add3_L_u6 $RA,", "add3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* add3$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADD3_L_R_R__RA__RC, "add3_L_r_r $RA,$RC", "add3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add3$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADD3_CC__RA__RC, "add3_cc $RA,$RC", "add3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* add3$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ADD3_S_GO, "I16_GO_ADD3_s_go", "add3", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sub1$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUB1_L_S12__RA_, "sub1_L_s12 $RA,", "sub1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub1$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUB1_CCU6__RA_, "sub1_ccu6 $RA,", "sub1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub1$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUB1_L_U6__RA_, "sub1_L_u6 $RA,", "sub1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub1$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUB1_L_R_R__RA__RC, "sub1_L_r_r $RA,$RC", "sub1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub1$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUB1_CC__RA__RC, "sub1_cc $RA,$RC", "sub1", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub2$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUB2_L_S12__RA_, "sub2_L_s12 $RA,", "sub2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub2$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUB2_CCU6__RA_, "sub2_ccu6 $RA,", "sub2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub2$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUB2_L_U6__RA_, "sub2_L_u6 $RA,", "sub2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub2$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUB2_L_R_R__RA__RC, "sub2_L_r_r $RA,$RC", "sub2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub2$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUB2_CC__RA__RC, "sub2_cc $RA,$RC", "sub2", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub3$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUB3_L_S12__RA_, "sub3_L_s12 $RA,", "sub3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub3$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUB3_CCU6__RA_, "sub3_ccu6 $RA,", "sub3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub3$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUB3_L_U6__RA_, "sub3_L_u6 $RA,", "sub3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sub3$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUB3_L_R_R__RA__RC, "sub3_L_r_r $RA,$RC", "sub3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sub3$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUB3_CC__RA__RC, "sub3_cc $RA,$RC", "sub3", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpy$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MPY_L_S12__RA_, "mpy_L_s12 $RA,", "mpy", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpy$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MPY_CCU6__RA_, "mpy_ccu6 $RA,", "mpy", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpy$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MPY_L_U6__RA_, "mpy_L_u6 $RA,", "mpy", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpy$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MPY_L_R_R__RA__RC, "mpy_L_r_r $RA,$RC", "mpy", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpy$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MPY_CC__RA__RC, "mpy_cc $RA,$RC", "mpy", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyh$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MPYH_L_S12__RA_, "mpyh_L_s12 $RA,", "mpyh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyh$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MPYH_CCU6__RA_, "mpyh_ccu6 $RA,", "mpyh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyh$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MPYH_L_U6__RA_, "mpyh_L_u6 $RA,", "mpyh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyh$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MPYH_L_R_R__RA__RC, "mpyh_L_r_r $RA,$RC", "mpyh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyh$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MPYH_CC__RA__RC, "mpyh_cc $RA,$RC", "mpyh", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyhu$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MPYHU_L_S12__RA_, "mpyhu_L_s12 $RA,", "mpyhu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyhu$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MPYHU_CCU6__RA_, "mpyhu_ccu6 $RA,", "mpyhu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyhu$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MPYHU_L_U6__RA_, "mpyhu_L_u6 $RA,", "mpyhu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyhu$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MPYHU_L_R_R__RA__RC, "mpyhu_L_r_r $RA,$RC", "mpyhu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyhu$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MPYHU_CC__RA__RC, "mpyhu_cc $RA,$RC", "mpyhu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyu$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MPYU_L_S12__RA_, "mpyu_L_s12 $RA,", "mpyu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyu$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MPYU_CCU6__RA_, "mpyu_ccu6 $RA,", "mpyu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyu$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MPYU_L_U6__RA_, "mpyu_L_u6 $RA,", "mpyu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mpyu$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MPYU_L_R_R__RA__RC, "mpyu_L_r_r $RA,$RC", "mpyu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mpyu$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MPYU_CC__RA__RC, "mpyu_cc $RA,$RC", "mpyu", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$_L$F0 [$RC_noilink] */
  {
    ARC_INSN_J_L_R_R___RC_NOILINK_, "j_L_r_r [$RC_noilink]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$Qcondi$F0 [$RC_noilink] */
  {
    ARC_INSN_J_CC___RC_NOILINK_, "j_cc [$RC_noilink]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$_L$F1F [$RC_ilink] */
  {
    ARC_INSN_J_L_R_R___RC_ILINK_, "j_L_r_r [$RC_ilink]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$Qcondi$F1F [$RC_ilink] */
  {
    ARC_INSN_J_CC___RC_ILINK_, "j_cc [$RC_ilink]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$_L$F0 $s12 */
  {
    ARC_INSN_J_L_S12_, "j_L_s12 ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$Qcondi$F0 $U6 */
  {
    ARC_INSN_J_CCU6_, "j_ccu6 ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$_L$F0 $U6 */
  {
    ARC_INSN_J_L_U6_, "j_L_u6 ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$_S [$R_b] */
  {
    ARC_INSN_J_S, "j_s", "j", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* j$_S [$R31] */
  {
    ARC_INSN_J_S__S, "j_s$_S", "j", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* jeq$_S [$R31] */
  {
    ARC_INSN_J_SEQ__S, "j_seq$_S", "jeq", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* jne$_S [$R31] */
  {
    ARC_INSN_J_SNE__S, "j_sne$_S", "jne", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* j$_L$F0.d $s12 */
  {
    ARC_INSN_J_L_S12_D_, "j_L_s12.d ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$Qcondi$F0.d $U6 */
  {
    ARC_INSN_J_CCU6_D_, "j_ccu6.d ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$_L$F0.d $U6 */
  {
    ARC_INSN_J_L_U6_D_, "j_L_u6.d ", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* j$_L$F0.d [$RC] */
  {
    ARC_INSN_J_L_R_R_D___RC_, "j_L_r_r.d [$RC]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$Qcondi$F0.d [$RC] */
  {
    ARC_INSN_J_CC_D___RC_, "j_cc.d [$RC]", "j", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* j$_S.d [$R_b] */
  {
    ARC_INSN_J_S_D, "j_s.d", "j", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* j$_S.d [$R31] */
  {
    ARC_INSN_J_S__S_D, "j_s$_S.d", "j", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* jl$_L$F0 $s12 */
  {
    ARC_INSN_JL_L_S12_, "jl_L_s12 ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$Qcondi$F0 $U6 */
  {
    ARC_INSN_JL_CCU6_, "jl_ccu6 ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$_L$F0 $U6 */
  {
    ARC_INSN_JL_L_U6_, "jl_L_u6 ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$_S [$R_b] */
  {
    ARC_INSN_JL_S, "jl_s", "jl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* jl$_L$F0 [$RC_noilink] */
  {
    ARC_INSN_JL_L_R_R___RC_NOILINK_, "jl_L_r_r [$RC_noilink]", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* jl$Qcondi$F0 [$RC_noilink] */
  {
    ARC_INSN_JL_CC___RC_NOILINK_, "jl_cc [$RC_noilink]", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* jl$_L$F0.d $s12 */
  {
    ARC_INSN_JL_L_S12_D_, "jl_L_s12.d ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$Qcondi$F0.d $U6 */
  {
    ARC_INSN_JL_CCU6_D_, "jl_ccu6.d ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$_L$F0.d $U6 */
  {
    ARC_INSN_JL_L_U6_D_, "jl_L_u6.d ", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* jl$_L$F0.d [$RC] */
  {
    ARC_INSN_JL_L_R_R_D___RC_, "jl_L_r_r.d [$RC]", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* jl$Qcondi$F0.d [$RC] */
  {
    ARC_INSN_JL_CC_D___RC_, "jl_cc.d [$RC]", "jl", 32,
    { 0|A(RELAXED)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* jl$_S.d [$R_b] */
  {
    ARC_INSN_JL_S_D, "jl_s.d", "jl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE)|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* lp$_L$F0 $s12x2 */
  {
    ARC_INSN_LP_L_S12_, "lp_L_s12 ", "lp", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lp$Qcondi$F0 $U6x2 */
  {
    ARC_INSN_LPCC_CCU6, "lpcc_ccu6", "lp", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* flag$_L$F0 $s12 */
  {
    ARC_INSN_FLAG_L_S12_, "flag_L_s12 ", "flag", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* flag$Qcondi$F0 $U6 */
  {
    ARC_INSN_FLAG_CCU6_, "flag_ccu6 ", "flag", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* flag$_L$F0 $U6 */
  {
    ARC_INSN_FLAG_L_U6_, "flag_L_u6 ", "flag", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* flag$_L$F0 $RC */
  {
    ARC_INSN_FLAG_L_R_R__RC, "flag_L_r_r $RC", "flag", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* flag$Qcondi$F0 $RC */
  {
    ARC_INSN_FLAG_CC__RC, "flag_cc $RC", "flag", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* lr$_L$F0 $RB,[$RC] */
  {
    ARC_INSN_LR_L_R_R___RC_, "lr_L_r_r [$RC]", "lr", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* lr$_L$F0 $RB,[$s12] */
  {
    ARC_INSN_LR_L_S12_, "lr_L_s12 ", "lr", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lr$_L$F0 $RB,[$U6] */
  {
    ARC_INSN_LR_L_U6_, "lr_L_u6 ", "lr", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sr$_L$F0 $RB,[$RC] */
  {
    ARC_INSN_SR_L_R_R___RC_, "sr_L_r_r [$RC]", "sr", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* sr$_L$F0 $RB,[$s12] */
  {
    ARC_INSN_SR_L_S12_, "sr_L_s12 ", "sr", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sr$_L$F0 $RB,[$U6] */
  {
    ARC_INSN_SR_L_U6_, "sr_L_u6 ", "sr", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asl$_L$F $RB,$RC */
  {
    ARC_INSN_ASL_L_R_R__RC, "asl_L_r_r $RC", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* asl$_L$F $RB,$U6 */
  {
    ARC_INSN_ASL_L_U6_, "asl_L_u6 ", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asl$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ASL_S_GO, "I16_GO_ASL_s_go", "asl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asr$_L$F $RB,$RC */
  {
    ARC_INSN_ASR_L_R_R__RC, "asr_L_r_r $RC", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* asr$_L$F $RB,$U6 */
  {
    ARC_INSN_ASR_L_U6_, "asr_L_u6 ", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asr$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ASR_S_GO, "I16_GO_ASR_s_go", "asr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* lsr$_L$F $RB,$RC */
  {
    ARC_INSN_LSR_L_R_R__RC, "lsr_L_r_r $RC", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* lsr$_L$F $RB,$U6 */
  {
    ARC_INSN_LSR_L_U6_, "lsr_L_u6 ", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lsr$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_LSR_S_GO, "I16_GO_LSR_s_go", "lsr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ror$_L$F $RB,$RC */
  {
    ARC_INSN_ROR_L_R_R__RC, "ror_L_r_r $RC", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* ror$_L$F $RB,$U6 */
  {
    ARC_INSN_ROR_L_U6_, "ror_L_u6 ", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rrc$_L$F $RB,$RC */
  {
    ARC_INSN_RRC_L_R_R__RC, "rrc_L_r_r $RC", "rrc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* rrc$_L$F $RB,$U6 */
  {
    ARC_INSN_RRC_L_U6_, "rrc_L_u6 ", "rrc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sexb$_L$F $RB,$RC */
  {
    ARC_INSN_SEXB_L_R_R__RC, "sexb_L_r_r $RC", "sexb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* sexb$_L$F $RB,$U6 */
  {
    ARC_INSN_SEXB_L_U6_, "sexb_L_u6 ", "sexb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sexb$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_SEXB_S_GO, "I16_GO_SEXB_s_go", "sexb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* sexw$_L$F $RB,$RC */
  {
    ARC_INSN_SEXW_L_R_R__RC, "sexw_L_r_r $RC", "sexw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* sexw$_L$F $RB,$U6 */
  {
    ARC_INSN_SEXW_L_U6_, "sexw_L_u6 ", "sexw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* sexw$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_SEXW_S_GO, "I16_GO_SEXW_s_go", "sexw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* extb$_L$F $RB,$RC */
  {
    ARC_INSN_EXTB_L_R_R__RC, "extb_L_r_r $RC", "extb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* extb$_L$F $RB,$U6 */
  {
    ARC_INSN_EXTB_L_U6_, "extb_L_u6 ", "extb", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* extb$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_EXTB_S_GO, "I16_GO_EXTB_s_go", "extb", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* extw$_L$F $RB,$RC */
  {
    ARC_INSN_EXTW_L_R_R__RC, "extw_L_r_r $RC", "extw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* extw$_L$F $RB,$U6 */
  {
    ARC_INSN_EXTW_L_U6_, "extw_L_u6 ", "extw", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* extw$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_EXTW_S_GO, "I16_GO_EXTW_s_go", "extw", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* abs$_L$F $RB,$RC */
  {
    ARC_INSN_ABS_L_R_R__RC, "abs_L_r_r $RC", "abs", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* abs$_L$F $RB,$U6 */
  {
    ARC_INSN_ABS_L_U6_, "abs_L_u6 ", "abs", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* abs$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ABS_S_GO, "I16_GO_ABS_s_go", "abs", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* not$_L$F $RB,$RC */
  {
    ARC_INSN_NOT_L_R_R__RC, "not_L_r_r $RC", "not", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* not$_L$F $RB,$U6 */
  {
    ARC_INSN_NOT_L_U6_, "not_L_u6 ", "not", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* not$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_NOT_S_GO, "I16_GO_NOT_s_go", "not", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* rlc$_L$F $RB,$RC */
  {
    ARC_INSN_RLC_L_R_R__RC, "rlc_L_r_r $RC", "rlc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* rlc$_L$F $RB,$U6 */
  {
    ARC_INSN_RLC_L_U6_, "rlc_L_u6 ", "rlc", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ex$_L$EXDi $RB,$RC */
  {
    ARC_INSN_EX_L_R_R__RC, "ex_L_r_r $RC", "ex", 32,
    { 0, { { { (1<<MACH_ARC700), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ex$_L$EXDi $RB,$U6 */
  {
    ARC_INSN_EX_L_U6_, "ex_L_u6 ", "ex", 32,
    { 0, { { { (1<<MACH_ARC700), 0 } }, { { LIMM_B, 0 } } } }
  },
/* neg$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_NEG_S_GO, "I16_GO_NEG_s_go", "neg", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* swi */
  {
    ARC_INSN_SWI, "swi", "swi", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* trap$_S $trapnum */
  {
    ARC_INSN_TRAP_S, "trap_s", "trap", 32,
    { 0|A(SHORT_P)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* brk */
  {
    ARC_INSN_BRK, "brk", "brk", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* brk_s */
  {
    ARC_INSN_BRK_S, "brk_s", "brk_s", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asl$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ASL_L_S12__RA_, "asl_L_s12 $RA,", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asl$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ASL_CCU6__RA_, "asl_ccu6 $RA,", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asl$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ASL_L_U6__RA_, "asl_L_u6 $RA,", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asl$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ASL_L_R_R__RA__RC, "asl_L_r_r $RA,$RC", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asl$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ASL_CC__RA__RC, "asl_cc $RA,$RC", "asl", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asl$_S $R_c,$R_b,$u3 */
  {
    ARC_INSN_ASL_S_CBU3, "asl_s_cbu3", "asl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asl$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_ASL_S_SSB, "asl_s_ssb", "asl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asl$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ASLM_S_GO, "I16_GO_ASLM_s_go", "asl", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* lsr$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_LSR_L_S12__RA_, "lsr_L_s12 $RA,", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lsr$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_LSR_CCU6__RA_, "lsr_ccu6 $RA,", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lsr$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_LSR_L_U6__RA_, "lsr_L_u6 $RA,", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* lsr$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_LSR_L_R_R__RA__RC, "lsr_L_r_r $RA,$RC", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* lsr$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_LSR_CC__RA__RC, "lsr_cc $RA,$RC", "lsr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* lsr$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_LSR_S_SSB, "lsr_s_ssb", "lsr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* lsr$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_LSRM_S_GO, "I16_GO_LSRM_s_go", "lsr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asr$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ASR_L_S12__RA_, "asr_L_s12 $RA,", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asr$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ASR_CCU6__RA_, "asr_ccu6 $RA,", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asr$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ASR_L_U6__RA_, "asr_L_u6 $RA,", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asr$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ASR_L_R_R__RA__RC, "asr_L_r_r $RA,$RC", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asr$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ASR_CC__RA__RC, "asr_cc $RA,$RC", "asr", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asr$_S $R_c,$R_b,$u3 */
  {
    ARC_INSN_ASR_S_CBU3, "asr_s_cbu3", "asr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asr$_S $R_b,$R_b,$u5 */
  {
    ARC_INSN_ASR_S_SSB, "asr_s_ssb", "asr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* asr$_S $R_b,$R_b,$R_c */
  {
    ARC_INSN_I16_GO_ASRM_S_GO, "I16_GO_ASRM_s_go", "asr", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* ror$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ROR_L_S12__RA_, "ror_L_s12 $RA,", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ror$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ROR_CCU6__RA_, "ror_ccu6 $RA,", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ror$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ROR_L_U6__RA_, "ror_L_u6 $RA,", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* ror$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ROR_L_R_R__RA__RC, "ror_L_r_r $RA,$RC", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* ror$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ROR_CC__RA__RC, "ror_cc $RA,$RC", "ror", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mul64$_L$F1 $RB,$s12 */
  {
    ARC_INSN_MUL64_L_S12_, "mul64_L_s12 ", "mul64", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mul64$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_MUL64_CCU6_, "mul64_ccu6 ", "mul64", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mul64$_L$F1 $RB,$U6 */
  {
    ARC_INSN_MUL64_L_U6_, "mul64_L_u6 ", "mul64", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mul64$_L$F1 $RB,$RC */
  {
    ARC_INSN_MUL64_L_R_R__RC, "mul64_L_r_r $RC", "mul64", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mul64$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_MUL64_CC__RC, "mul64_cc $RC", "mul64", 32,
    { 0|A(RELAXED), { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mul64$_S $R_b,$R_c */
  {
    ARC_INSN_MUL64_S_GO, "mul64_s_go", "mul64", 32,
    { 0|A(SHORT_P)|A(RELAXABLE), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mulu64$_L$F1 $RB,$s12 */
  {
    ARC_INSN_MULU64_L_S12_, "mulu64_L_s12 ", "mulu64", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mulu64$Qcondi$F1 $RB,$U6 */
  {
    ARC_INSN_MULU64_CCU6_, "mulu64_ccu6 ", "mulu64", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mulu64$_L$F1 $RB,$U6 */
  {
    ARC_INSN_MULU64_L_U6_, "mulu64_L_u6 ", "mulu64", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mulu64$_L$F1 $RB,$RC */
  {
    ARC_INSN_MULU64_L_R_R__RC, "mulu64_L_r_r $RC", "mulu64", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mulu64$Qcondi$F1 $RB,$RC */
  {
    ARC_INSN_MULU64_CC__RC, "mulu64_cc $RC", "mulu64", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* adds$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADDS_L_S12__RA_, "adds_L_s12 $RA,", "adds", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adds$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADDS_CCU6__RA_, "adds_ccu6 $RA,", "adds", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adds$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADDS_L_U6__RA_, "adds_L_u6 $RA,", "adds", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* adds$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADDS_L_R_R__RA__RC, "adds_L_r_r $RA,$RC", "adds", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* adds$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADDS_CC__RA__RC, "adds_cc $RA,$RC", "adds", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* subs$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUBS_L_S12__RA_, "subs_L_s12 $RA,", "subs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subs$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUBS_CCU6__RA_, "subs_ccu6 $RA,", "subs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subs$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUBS_L_U6__RA_, "subs_L_u6 $RA,", "subs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subs$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUBS_L_R_R__RA__RC, "subs_L_r_r $RA,$RC", "subs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* subs$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUBS_CC__RA__RC, "subs_cc $RA,$RC", "subs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* divaw$_L$F0 $RB,$RB,$s12 */
  {
    ARC_INSN_DIVAW_L_S12__RA_, "divaw_L_s12 $RA,", "divaw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* divaw$Qcondi$F0 $RB,$RB,$U6 */
  {
    ARC_INSN_DIVAW_CCU6__RA_, "divaw_ccu6 $RA,", "divaw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* divaw$_L$F0 $RA,$RB,$U6 */
  {
    ARC_INSN_DIVAW_L_U6__RA_, "divaw_L_u6 $RA,", "divaw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* divaw$_L$F0 $RA,$RB,$RC */
  {
    ARC_INSN_DIVAW_L_R_R__RA__RC, "divaw_L_r_r $RA,$RC", "divaw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* divaw$Qcondi$F0 $RB,$RB,$RC */
  {
    ARC_INSN_DIVAW_CC__RA__RC, "divaw_cc $RA,$RC", "divaw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asls$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ASLS_L_S12__RA_, "asls_L_s12 $RA,", "asls", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asls$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ASLS_CCU6__RA_, "asls_ccu6 $RA,", "asls", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asls$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ASLS_L_U6__RA_, "asls_L_u6 $RA,", "asls", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asls$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ASLS_L_R_R__RA__RC, "asls_L_r_r $RA,$RC", "asls", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asls$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ASLS_CC__RA__RC, "asls_cc $RA,$RC", "asls", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asrs$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ASRS_L_S12__RA_, "asrs_L_s12 $RA,", "asrs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asrs$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ASRS_CCU6__RA_, "asrs_ccu6 $RA,", "asrs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asrs$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ASRS_L_U6__RA_, "asrs_L_u6 $RA,", "asrs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* asrs$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ASRS_L_R_R__RA__RC, "asrs_L_r_r $RA,$RC", "asrs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* asrs$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ASRS_CC__RA__RC, "asrs_cc $RA,$RC", "asrs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* addsdw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_ADDSDW_L_S12__RA_, "addsdw_L_s12 $RA,", "addsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* addsdw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_ADDSDW_CCU6__RA_, "addsdw_ccu6 $RA,", "addsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* addsdw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_ADDSDW_L_U6__RA_, "addsdw_L_u6 $RA,", "addsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* addsdw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_ADDSDW_L_R_R__RA__RC, "addsdw_L_r_r $RA,$RC", "addsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* addsdw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_ADDSDW_CC__RA__RC, "addsdw_cc $RA,$RC", "addsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* subsdw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_SUBSDW_L_S12__RA_, "subsdw_L_s12 $RA,", "subsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subsdw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_SUBSDW_CCU6__RA_, "subsdw_ccu6 $RA,", "subsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subsdw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_SUBSDW_L_U6__RA_, "subsdw_L_u6 $RA,", "subsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* subsdw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_SUBSDW_L_R_R__RA__RC, "subsdw_L_r_r $RA,$RC", "subsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* subsdw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_SUBSDW_CC__RA__RC, "subsdw_cc $RA,$RC", "subsdw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* swap$_L$F $RB,$RC */
  {
    ARC_INSN_SWAP_L_R_R__RC, "swap_L_r_r $RC", "swap", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* swap$_L$F $RB,$U6 */
  {
    ARC_INSN_SWAP_L_U6_, "swap_L_u6 ", "swap", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* norm$_L$F $RB,$RC */
  {
    ARC_INSN_NORM_L_R_R__RC, "norm_L_r_r $RC", "norm", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* norm$_L$F $RB,$U6 */
  {
    ARC_INSN_NORM_L_U6_, "norm_L_u6 ", "norm", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* rnd16$_L$F $RB,$RC */
  {
    ARC_INSN_RND16_L_R_R__RC, "rnd16_L_r_r $RC", "rnd16", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* rnd16$_L$F $RB,$U6 */
  {
    ARC_INSN_RND16_L_U6_, "rnd16_L_u6 ", "rnd16", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* abssw$_L$F $RB,$RC */
  {
    ARC_INSN_ABSSW_L_R_R__RC, "abssw_L_r_r $RC", "abssw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* abssw$_L$F $RB,$U6 */
  {
    ARC_INSN_ABSSW_L_U6_, "abssw_L_u6 ", "abssw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* abss$_L$F $RB,$RC */
  {
    ARC_INSN_ABSS_L_R_R__RC, "abss_L_r_r $RC", "abss", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* abss$_L$F $RB,$U6 */
  {
    ARC_INSN_ABSS_L_U6_, "abss_L_u6 ", "abss", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* negsw$_L$F $RB,$RC */
  {
    ARC_INSN_NEGSW_L_R_R__RC, "negsw_L_r_r $RC", "negsw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* negsw$_L$F $RB,$U6 */
  {
    ARC_INSN_NEGSW_L_U6_, "negsw_L_u6 ", "negsw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* negs$_L$F $RB,$RC */
  {
    ARC_INSN_NEGS_L_R_R__RC, "negs_L_r_r $RC", "negs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* negs$_L$F $RB,$U6 */
  {
    ARC_INSN_NEGS_L_U6_, "negs_L_u6 ", "negs", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* normw$_L$F $RB,$RC */
  {
    ARC_INSN_NORMW_L_R_R__RC, "normw_L_r_r $RC", "normw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_C, 0 } } } }
  },
/* normw$_L$F $RB,$U6 */
  {
    ARC_INSN_NORMW_L_U6_, "normw_L_u6 ", "normw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* nop_s */
  {
    ARC_INSN_NOP_S, "nop_s", "nop_s", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* unimp_s */
  {
    ARC_INSN_UNIMP_S, "unimp_s", "unimp_s", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* pop$_S $R_b */
  {
    ARC_INSN_POP_S_B, "pop_s_b", "pop", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* pop$_S $R31 */
  {
    ARC_INSN_POP_S_BLINK, "pop_s_blink", "pop", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* push$_S $R_b */
  {
    ARC_INSN_PUSH_S_B, "push_s_b", "push", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* push$_S $R31 */
  {
    ARC_INSN_PUSH_S_BLINK, "push_s_blink", "push", 32,
    { 0|A(SHORT_P), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/* mullw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MULLW_L_S12__RA_, "mullw_L_s12 $RA,", "mullw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mullw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MULLW_CCU6__RA_, "mullw_ccu6 $RA,", "mullw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mullw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MULLW_L_U6__RA_, "mullw_L_u6 $RA,", "mullw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mullw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MULLW_L_R_R__RA__RC, "mullw_L_r_r $RA,$RC", "mullw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mullw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MULLW_CC__RA__RC, "mullw_cc $RA,$RC", "mullw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* maclw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MACLW_L_S12__RA_, "maclw_L_s12 $RA,", "maclw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* maclw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MACLW_CCU6__RA_, "maclw_ccu6 $RA,", "maclw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* maclw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MACLW_L_U6__RA_, "maclw_L_u6 $RA,", "maclw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* maclw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MACLW_L_R_R__RA__RC, "maclw_L_r_r $RA,$RC", "maclw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* maclw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MACLW_CC__RA__RC, "maclw_cc $RA,$RC", "maclw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* machlw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MACHLW_L_S12__RA_, "machlw_L_s12 $RA,", "machlw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machlw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MACHLW_CCU6__RA_, "machlw_ccu6 $RA,", "machlw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machlw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MACHLW_L_U6__RA_, "machlw_L_u6 $RA,", "machlw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machlw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MACHLW_L_R_R__RA__RC, "machlw_L_r_r $RA,$RC", "machlw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* machlw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MACHLW_CC__RA__RC, "machlw_cc $RA,$RC", "machlw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mululw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MULULW_L_S12__RA_, "mululw_L_s12 $RA,", "mululw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mululw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MULULW_CCU6__RA_, "mululw_ccu6 $RA,", "mululw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mululw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MULULW_L_U6__RA_, "mululw_L_u6 $RA,", "mululw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* mululw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MULULW_L_R_R__RA__RC, "mululw_L_r_r $RA,$RC", "mululw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* mululw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MULULW_CC__RA__RC, "mululw_cc $RA,$RC", "mululw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* machulw$_L$F $RB,$RB,$s12 */
  {
    ARC_INSN_MACHULW_L_S12__RA_, "machulw_L_s12 $RA,", "machulw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machulw$Qcondi$F $RB,$RB,$U6 */
  {
    ARC_INSN_MACHULW_CCU6__RA_, "machulw_ccu6 $RA,", "machulw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machulw$_L$F $RA,$RB,$U6 */
  {
    ARC_INSN_MACHULW_L_U6__RA_, "machulw_L_u6 $RA,", "machulw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_B, 0 } } } }
  },
/* machulw$_L$F $RA,$RB,$RC */
  {
    ARC_INSN_MACHULW_L_R_R__RA__RC, "machulw_L_r_r $RA,$RC", "machulw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/* machulw$Qcondi$F $RB,$RB,$RC */
  {
    ARC_INSN_MACHULW_CC__RA__RC, "machulw_cc $RA,$RC", "machulw", 32,
    { 0, { { { (1<<MACH_BASE), 0 } }, { { LIMM_BC, 0 } } } }
  },
/*  */
  {
    ARC_INSN_CURRENT_LOOP_END, "current_loop_end", "", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/*  */
  {
    ARC_INSN_CURRENT_LOOP_END_AFTER_BRANCH, "current_loop_end_after_branch", "", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 0 } } } }
  },
/*  */
  {
    ARC_INSN_ARC600_CURRENT_LOOP_END_AFTER_BRANCH, "arc600_current_loop_end_after_branch", "", 32,
    { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { LIMM_NONE, 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 arc_cgen_rebuild_tables (CGEN_CPU_TABLE *);

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

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

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

static void
arc_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 = & arc_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 = & arc_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, "arc_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.

   ??? We only support ISO C stdargs here, not K&R.
   Laziness, plus experiment to see if anything requires K&R - eventually
   K&R will no longer be supported - e.g. GDB is currently trying this.  */

CGEN_CPU_DESC
arc_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 (arc_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, "arc_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, "arc_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 = arc_cgen_rebuild_tables;
  arc_cgen_rebuild_tables (cd);

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

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

