1214571Sdim/* CPU data for mep. 2214571Sdim 3214571SdimTHIS FILE IS MACHINE GENERATED WITH CGEN. 4214571Sdim 5214571SdimCopyright 1996-2005 Free Software Foundation, Inc. 6214571Sdim 7214571SdimThis file is part of the GNU Binutils and/or GDB, the GNU debugger. 8214571Sdim 9214571SdimThis program is free software; you can redistribute it and/or modify 10214571Sdimit under the terms of the GNU General Public License as published by 11214571Sdimthe Free Software Foundation; either version 2, or (at your option) 12214571Sdimany later version. 13214571Sdim 14214571SdimThis program is distributed in the hope that it will be useful, 15214571Sdimbut WITHOUT ANY WARRANTY; without even the implied warranty of 16214571SdimMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17214571SdimGNU General Public License for more details. 18214571Sdim 19214571SdimYou should have received a copy of the GNU General Public License along 20214571Sdimwith this program; if not, write to the Free Software Foundation, Inc., 21214571Sdim51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 22214571Sdim 23214571Sdim*/ 24214571Sdim 25214571Sdim#include "sysdep.h" 26214571Sdim#include <stdio.h> 27214571Sdim#include <stdarg.h> 28214571Sdim#include "ansidecl.h" 29214571Sdim#include "bfd.h" 30214571Sdim#include "symcat.h" 31214571Sdim#include "mep-desc.h" 32214571Sdim#include "mep-opc.h" 33214571Sdim#include "opintl.h" 34214571Sdim#include "libiberty.h" 35214571Sdim#include "xregex.h" 36214571Sdim 37214571Sdim/* Attributes. */ 38214571Sdim 39214571Sdimstatic const CGEN_ATTR_ENTRY bool_attr[] = 40214571Sdim{ 41214571Sdim { "#f", 0 }, 42214571Sdim { "#t", 1 }, 43214571Sdim { 0, 0 } 44214571Sdim}; 45214571Sdim 46214571Sdimstatic const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED = 47214571Sdim{ 48214571Sdim { "base", MACH_BASE }, 49214571Sdim { "mep", MACH_MEP }, 50214571Sdim { "h1", MACH_H1 }, 51214571Sdim { "max", MACH_MAX }, 52214571Sdim { 0, 0 } 53214571Sdim}; 54214571Sdim 55214571Sdimstatic const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED = 56214571Sdim{ 57214571Sdim { "mep", ISA_MEP }, 58214571Sdim { "ext_core1", ISA_EXT_CORE1 }, 59214571Sdim { "ext_core2", ISA_EXT_CORE2 }, 60214571Sdim { "ext_cop2_16", ISA_EXT_COP2_16 }, 61214571Sdim { "ext_cop2_32", ISA_EXT_COP2_32 }, 62214571Sdim { "ext_cop2_48", ISA_EXT_COP2_48 }, 63214571Sdim { "ext_cop2_64", ISA_EXT_COP2_64 }, 64214571Sdim { "max", ISA_MAX }, 65214571Sdim { 0, 0 } 66214571Sdim}; 67214571Sdim 68214571Sdimstatic const CGEN_ATTR_ENTRY CDATA_attr[] ATTRIBUTE_UNUSED = 69214571Sdim{ 70214571Sdim { "LABEL", CDATA_LABEL }, 71214571Sdim { "REGNUM", CDATA_REGNUM }, 72214571Sdim { "FMAX_FLOAT", CDATA_FMAX_FLOAT }, 73214571Sdim { "FMAX_INT", CDATA_FMAX_INT }, 74214571Sdim { "POINTER", CDATA_POINTER }, 75214571Sdim { "LONG", CDATA_LONG }, 76214571Sdim { "ULONG", CDATA_ULONG }, 77214571Sdim { "SHORT", CDATA_SHORT }, 78214571Sdim { "USHORT", CDATA_USHORT }, 79214571Sdim { "CHAR", CDATA_CHAR }, 80214571Sdim { "UCHAR", CDATA_UCHAR }, 81214571Sdim { "CP_DATA_BUS_INT", CDATA_CP_DATA_BUS_INT }, 82214571Sdim { 0, 0 } 83214571Sdim}; 84214571Sdim 85214571Sdimstatic const CGEN_ATTR_ENTRY ALIGN_attr [] ATTRIBUTE_UNUSED = 86214571Sdim{ 87214571Sdim {"integer", 1}, 88214571Sdim { 0, 0 } 89214571Sdim}; 90214571Sdim 91214571Sdimstatic const CGEN_ATTR_ENTRY LATENCY_attr [] ATTRIBUTE_UNUSED = 92214571Sdim{ 93214571Sdim {"integer", 0}, 94214571Sdim { 0, 0 } 95214571Sdim}; 96214571Sdim 97214571Sdimstatic const CGEN_ATTR_ENTRY CONFIG_attr[] ATTRIBUTE_UNUSED = 98214571Sdim{ 99214571Sdim { "NONE", CONFIG_NONE }, 100214571Sdim { "simple", CONFIG_SIMPLE }, 101214571Sdim { "fmax", CONFIG_FMAX }, 102214571Sdim { 0, 0 } 103214571Sdim}; 104214571Sdim 105214571Sdimconst CGEN_ATTR_TABLE mep_cgen_ifield_attr_table[] = 106214571Sdim{ 107214571Sdim { "MACH", & MACH_attr[0], & MACH_attr[0] }, 108214571Sdim { "ISA", & ISA_attr[0], & ISA_attr[0] }, 109214571Sdim { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, 110214571Sdim { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] }, 111214571Sdim { "ABS-ADDR", &bool_attr[0], &bool_attr[0] }, 112214571Sdim { "RESERVED", &bool_attr[0], &bool_attr[0] }, 113214571Sdim { "SIGN-OPT", &bool_attr[0], &bool_attr[0] }, 114214571Sdim { "SIGNED", &bool_attr[0], &bool_attr[0] }, 115214571Sdim { 0, 0, 0 } 116214571Sdim}; 117214571Sdim 118214571Sdimconst CGEN_ATTR_TABLE mep_cgen_hardware_attr_table[] = 119214571Sdim{ 120214571Sdim { "MACH", & MACH_attr[0], & MACH_attr[0] }, 121214571Sdim { "ISA", & ISA_attr[0], & ISA_attr[0] }, 122214571Sdim { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, 123214571Sdim { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] }, 124214571Sdim { "PC", &bool_attr[0], &bool_attr[0] }, 125214571Sdim { "PROFILE", &bool_attr[0], &bool_attr[0] }, 126214571Sdim { "IS_FLOAT", &bool_attr[0], &bool_attr[0] }, 127214571Sdim { 0, 0, 0 } 128214571Sdim}; 129214571Sdim 130214571Sdimconst CGEN_ATTR_TABLE mep_cgen_operand_attr_table[] = 131214571Sdim{ 132214571Sdim { "MACH", & MACH_attr[0], & MACH_attr[0] }, 133214571Sdim { "ISA", & ISA_attr[0], & ISA_attr[0] }, 134214571Sdim { "CDATA", & CDATA_attr[0], & CDATA_attr[0] }, 135214571Sdim { "ALIGN", & ALIGN_attr[0], & ALIGN_attr[0] }, 136214571Sdim { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, 137214571Sdim { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] }, 138214571Sdim { "ABS-ADDR", &bool_attr[0], &bool_attr[0] }, 139214571Sdim { "SIGN-OPT", &bool_attr[0], &bool_attr[0] }, 140214571Sdim { "SIGNED", &bool_attr[0], &bool_attr[0] }, 141214571Sdim { "NEGATIVE", &bool_attr[0], &bool_attr[0] }, 142214571Sdim { "RELAX", &bool_attr[0], &bool_attr[0] }, 143214571Sdim { "SEM-ONLY", &bool_attr[0], &bool_attr[0] }, 144214571Sdim { "RELOC_IMPLIES_OVERFLOW", &bool_attr[0], &bool_attr[0] }, 145214571Sdim { 0, 0, 0 } 146214571Sdim}; 147214571Sdim 148214571Sdimconst CGEN_ATTR_TABLE mep_cgen_insn_attr_table[] = 149214571Sdim{ 150214571Sdim { "MACH", & MACH_attr[0], & MACH_attr[0] }, 151214571Sdim { "ISA", & ISA_attr[0], & ISA_attr[0] }, 152214571Sdim { "LATENCY", & LATENCY_attr[0], & LATENCY_attr[0] }, 153214571Sdim { "CONFIG", & CONFIG_attr[0], & CONFIG_attr[0] }, 154214571Sdim { "ALIAS", &bool_attr[0], &bool_attr[0] }, 155214571Sdim { "VIRTUAL", &bool_attr[0], &bool_attr[0] }, 156214571Sdim { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] }, 157214571Sdim { "COND-CTI", &bool_attr[0], &bool_attr[0] }, 158214571Sdim { "SKIP-CTI", &bool_attr[0], &bool_attr[0] }, 159214571Sdim { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] }, 160214571Sdim { "RELAXABLE", &bool_attr[0], &bool_attr[0] }, 161214571Sdim { "RELAXED", &bool_attr[0], &bool_attr[0] }, 162214571Sdim { "NO-DIS", &bool_attr[0], &bool_attr[0] }, 163214571Sdim { "PBB", &bool_attr[0], &bool_attr[0] }, 164214571Sdim { "OPTIONAL_BIT_INSN", &bool_attr[0], &bool_attr[0] }, 165214571Sdim { "OPTIONAL_MUL_INSN", &bool_attr[0], &bool_attr[0] }, 166214571Sdim { "OPTIONAL_DIV_INSN", &bool_attr[0], &bool_attr[0] }, 167214571Sdim { "OPTIONAL_DEBUG_INSN", &bool_attr[0], &bool_attr[0] }, 168214571Sdim { "OPTIONAL_LDZ_INSN", &bool_attr[0], &bool_attr[0] }, 169214571Sdim { "OPTIONAL_ABS_INSN", &bool_attr[0], &bool_attr[0] }, 170214571Sdim { "OPTIONAL_AVE_INSN", &bool_attr[0], &bool_attr[0] }, 171214571Sdim { "OPTIONAL_MINMAX_INSN", &bool_attr[0], &bool_attr[0] }, 172214571Sdim { "OPTIONAL_CLIP_INSN", &bool_attr[0], &bool_attr[0] }, 173214571Sdim { "OPTIONAL_SAT_INSN", &bool_attr[0], &bool_attr[0] }, 174214571Sdim { "OPTIONAL_UCI_INSN", &bool_attr[0], &bool_attr[0] }, 175214571Sdim { "OPTIONAL_DSP_INSN", &bool_attr[0], &bool_attr[0] }, 176214571Sdim { "OPTIONAL_CP_INSN", &bool_attr[0], &bool_attr[0] }, 177214571Sdim { "OPTIONAL_CP64_INSN", &bool_attr[0], &bool_attr[0] }, 178214571Sdim { "OPTIONAL_VLIW64", &bool_attr[0], &bool_attr[0] }, 179214571Sdim { "MAY_TRAP", &bool_attr[0], &bool_attr[0] }, 180214571Sdim { "VLIW_ALONE", &bool_attr[0], &bool_attr[0] }, 181214571Sdim { "VLIW_NO_CORE_NOP", &bool_attr[0], &bool_attr[0] }, 182214571Sdim { "VLIW_NO_COP_NOP", &bool_attr[0], &bool_attr[0] }, 183214571Sdim { "VLIW64_NO_MATCHING_NOP", &bool_attr[0], &bool_attr[0] }, 184214571Sdim { "VLIW32_NO_MATCHING_NOP", &bool_attr[0], &bool_attr[0] }, 185214571Sdim { "VOLATILE", &bool_attr[0], &bool_attr[0] }, 186214571Sdim { 0, 0, 0 } 187214571Sdim}; 188214571Sdim 189214571Sdim/* Instruction set variants. */ 190214571Sdim 191214571Sdimstatic const CGEN_ISA mep_cgen_isa_table[] = { 192214571Sdim { "mep", 32, 32, 16, 32 }, 193214571Sdim { "ext_core1", 32, 32, 16, 32 }, 194214571Sdim { "ext_core2", 32, 32, 16, 32 }, 195214571Sdim { "ext_cop2_16", 32, 32, 65535, 0 }, 196214571Sdim { "ext_cop2_32", 32, 32, 65535, 0 }, 197214571Sdim { "ext_cop2_48", 32, 32, 65535, 0 }, 198214571Sdim { "ext_cop2_64", 32, 32, 65535, 0 }, 199214571Sdim { 0, 0, 0, 0, 0 } 200214571Sdim}; 201214571Sdim 202214571Sdim/* Machine variants. */ 203214571Sdim 204214571Sdimstatic const CGEN_MACH mep_cgen_mach_table[] = { 205214571Sdim { "mep", "mep", MACH_MEP, 16 }, 206214571Sdim { "h1", "h1", MACH_H1, 16 }, 207214571Sdim { 0, 0, 0, 0 } 208214571Sdim}; 209214571Sdim 210214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_gpr_entries[] = 211214571Sdim{ 212214571Sdim { "$0", 0, {0, {{{0, 0}}}}, 0, 0 }, 213214571Sdim { "$1", 1, {0, {{{0, 0}}}}, 0, 0 }, 214214571Sdim { "$2", 2, {0, {{{0, 0}}}}, 0, 0 }, 215214571Sdim { "$3", 3, {0, {{{0, 0}}}}, 0, 0 }, 216214571Sdim { "$4", 4, {0, {{{0, 0}}}}, 0, 0 }, 217214571Sdim { "$5", 5, {0, {{{0, 0}}}}, 0, 0 }, 218214571Sdim { "$6", 6, {0, {{{0, 0}}}}, 0, 0 }, 219214571Sdim { "$7", 7, {0, {{{0, 0}}}}, 0, 0 }, 220214571Sdim { "$8", 8, {0, {{{0, 0}}}}, 0, 0 }, 221214571Sdim { "$9", 9, {0, {{{0, 0}}}}, 0, 0 }, 222214571Sdim { "$10", 10, {0, {{{0, 0}}}}, 0, 0 }, 223214571Sdim { "$11", 11, {0, {{{0, 0}}}}, 0, 0 }, 224214571Sdim { "$fp", 8, {0, {{{0, 0}}}}, 0, 0 }, 225214571Sdim { "$tp", 13, {0, {{{0, 0}}}}, 0, 0 }, 226214571Sdim { "$gp", 14, {0, {{{0, 0}}}}, 0, 0 }, 227214571Sdim { "$sp", 15, {0, {{{0, 0}}}}, 0, 0 }, 228214571Sdim { "$12", 12, {0, {{{0, 0}}}}, 0, 0 }, 229214571Sdim { "$13", 13, {0, {{{0, 0}}}}, 0, 0 }, 230214571Sdim { "$14", 14, {0, {{{0, 0}}}}, 0, 0 }, 231214571Sdim { "$15", 15, {0, {{{0, 0}}}}, 0, 0 } 232214571Sdim}; 233214571Sdim 234214571SdimCGEN_KEYWORD mep_cgen_opval_h_gpr = 235214571Sdim{ 236214571Sdim & mep_cgen_opval_h_gpr_entries[0], 237214571Sdim 20, 238214571Sdim 0, 0, 0, 0, "" 239214571Sdim}; 240214571Sdim 241214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_csr_entries[] = 242214571Sdim{ 243214571Sdim { "$pc", 0, {0, {{{0, 0}}}}, 0, 0 }, 244214571Sdim { "$lp", 1, {0, {{{0, 0}}}}, 0, 0 }, 245214571Sdim { "$sar", 2, {0, {{{0, 0}}}}, 0, 0 }, 246214571Sdim { "$rpb", 4, {0, {{{0, 0}}}}, 0, 0 }, 247214571Sdim { "$rpe", 5, {0, {{{0, 0}}}}, 0, 0 }, 248214571Sdim { "$rpc", 6, {0, {{{0, 0}}}}, 0, 0 }, 249214571Sdim { "$hi", 7, {0, {{{0, 0}}}}, 0, 0 }, 250214571Sdim { "$lo", 8, {0, {{{0, 0}}}}, 0, 0 }, 251214571Sdim { "$mb0", 12, {0, {{{0, 0}}}}, 0, 0 }, 252214571Sdim { "$me0", 13, {0, {{{0, 0}}}}, 0, 0 }, 253214571Sdim { "$mb1", 14, {0, {{{0, 0}}}}, 0, 0 }, 254214571Sdim { "$me1", 15, {0, {{{0, 0}}}}, 0, 0 }, 255214571Sdim { "$psw", 16, {0, {{{0, 0}}}}, 0, 0 }, 256214571Sdim { "$id", 17, {0, {{{0, 0}}}}, 0, 0 }, 257214571Sdim { "$tmp", 18, {0, {{{0, 0}}}}, 0, 0 }, 258214571Sdim { "$epc", 19, {0, {{{0, 0}}}}, 0, 0 }, 259214571Sdim { "$exc", 20, {0, {{{0, 0}}}}, 0, 0 }, 260214571Sdim { "$cfg", 21, {0, {{{0, 0}}}}, 0, 0 }, 261214571Sdim { "$npc", 23, {0, {{{0, 0}}}}, 0, 0 }, 262214571Sdim { "$dbg", 24, {0, {{{0, 0}}}}, 0, 0 }, 263214571Sdim { "$depc", 25, {0, {{{0, 0}}}}, 0, 0 }, 264214571Sdim { "$opt", 26, {0, {{{0, 0}}}}, 0, 0 }, 265214571Sdim { "$rcfg", 27, {0, {{{0, 0}}}}, 0, 0 }, 266214571Sdim { "$ccfg", 28, {0, {{{0, 0}}}}, 0, 0 } 267214571Sdim}; 268214571Sdim 269214571SdimCGEN_KEYWORD mep_cgen_opval_h_csr = 270214571Sdim{ 271214571Sdim & mep_cgen_opval_h_csr_entries[0], 272214571Sdim 24, 273214571Sdim 0, 0, 0, 0, "" 274214571Sdim}; 275214571Sdim 276214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_cr64_entries[] = 277214571Sdim{ 278214571Sdim { "$c0", 0, {0, {{{0, 0}}}}, 0, 0 }, 279214571Sdim { "$c1", 1, {0, {{{0, 0}}}}, 0, 0 }, 280214571Sdim { "$c2", 2, {0, {{{0, 0}}}}, 0, 0 }, 281214571Sdim { "$c3", 3, {0, {{{0, 0}}}}, 0, 0 }, 282214571Sdim { "$c4", 4, {0, {{{0, 0}}}}, 0, 0 }, 283214571Sdim { "$c5", 5, {0, {{{0, 0}}}}, 0, 0 }, 284214571Sdim { "$c6", 6, {0, {{{0, 0}}}}, 0, 0 }, 285214571Sdim { "$c7", 7, {0, {{{0, 0}}}}, 0, 0 }, 286214571Sdim { "$c8", 8, {0, {{{0, 0}}}}, 0, 0 }, 287214571Sdim { "$c9", 9, {0, {{{0, 0}}}}, 0, 0 }, 288214571Sdim { "$c10", 10, {0, {{{0, 0}}}}, 0, 0 }, 289214571Sdim { "$c11", 11, {0, {{{0, 0}}}}, 0, 0 }, 290214571Sdim { "$c12", 12, {0, {{{0, 0}}}}, 0, 0 }, 291214571Sdim { "$c13", 13, {0, {{{0, 0}}}}, 0, 0 }, 292214571Sdim { "$c14", 14, {0, {{{0, 0}}}}, 0, 0 }, 293214571Sdim { "$c15", 15, {0, {{{0, 0}}}}, 0, 0 }, 294214571Sdim { "$c16", 16, {0, {{{0, 0}}}}, 0, 0 }, 295214571Sdim { "$c17", 17, {0, {{{0, 0}}}}, 0, 0 }, 296214571Sdim { "$c18", 18, {0, {{{0, 0}}}}, 0, 0 }, 297214571Sdim { "$c19", 19, {0, {{{0, 0}}}}, 0, 0 }, 298214571Sdim { "$c20", 20, {0, {{{0, 0}}}}, 0, 0 }, 299214571Sdim { "$c21", 21, {0, {{{0, 0}}}}, 0, 0 }, 300214571Sdim { "$c22", 22, {0, {{{0, 0}}}}, 0, 0 }, 301214571Sdim { "$c23", 23, {0, {{{0, 0}}}}, 0, 0 }, 302214571Sdim { "$c24", 24, {0, {{{0, 0}}}}, 0, 0 }, 303214571Sdim { "$c25", 25, {0, {{{0, 0}}}}, 0, 0 }, 304214571Sdim { "$c26", 26, {0, {{{0, 0}}}}, 0, 0 }, 305214571Sdim { "$c27", 27, {0, {{{0, 0}}}}, 0, 0 }, 306214571Sdim { "$c28", 28, {0, {{{0, 0}}}}, 0, 0 }, 307214571Sdim { "$c29", 29, {0, {{{0, 0}}}}, 0, 0 }, 308214571Sdim { "$c30", 30, {0, {{{0, 0}}}}, 0, 0 }, 309214571Sdim { "$c31", 31, {0, {{{0, 0}}}}, 0, 0 } 310214571Sdim}; 311214571Sdim 312214571SdimCGEN_KEYWORD mep_cgen_opval_h_cr64 = 313214571Sdim{ 314214571Sdim & mep_cgen_opval_h_cr64_entries[0], 315214571Sdim 32, 316214571Sdim 0, 0, 0, 0, "" 317214571Sdim}; 318214571Sdim 319214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_cr_entries[] = 320214571Sdim{ 321214571Sdim { "$c0", 0, {0, {{{0, 0}}}}, 0, 0 }, 322214571Sdim { "$c1", 1, {0, {{{0, 0}}}}, 0, 0 }, 323214571Sdim { "$c2", 2, {0, {{{0, 0}}}}, 0, 0 }, 324214571Sdim { "$c3", 3, {0, {{{0, 0}}}}, 0, 0 }, 325214571Sdim { "$c4", 4, {0, {{{0, 0}}}}, 0, 0 }, 326214571Sdim { "$c5", 5, {0, {{{0, 0}}}}, 0, 0 }, 327214571Sdim { "$c6", 6, {0, {{{0, 0}}}}, 0, 0 }, 328214571Sdim { "$c7", 7, {0, {{{0, 0}}}}, 0, 0 }, 329214571Sdim { "$c8", 8, {0, {{{0, 0}}}}, 0, 0 }, 330214571Sdim { "$c9", 9, {0, {{{0, 0}}}}, 0, 0 }, 331214571Sdim { "$c10", 10, {0, {{{0, 0}}}}, 0, 0 }, 332214571Sdim { "$c11", 11, {0, {{{0, 0}}}}, 0, 0 }, 333214571Sdim { "$c12", 12, {0, {{{0, 0}}}}, 0, 0 }, 334214571Sdim { "$c13", 13, {0, {{{0, 0}}}}, 0, 0 }, 335214571Sdim { "$c14", 14, {0, {{{0, 0}}}}, 0, 0 }, 336214571Sdim { "$c15", 15, {0, {{{0, 0}}}}, 0, 0 }, 337214571Sdim { "$c16", 16, {0, {{{0, 0}}}}, 0, 0 }, 338214571Sdim { "$c17", 17, {0, {{{0, 0}}}}, 0, 0 }, 339214571Sdim { "$c18", 18, {0, {{{0, 0}}}}, 0, 0 }, 340214571Sdim { "$c19", 19, {0, {{{0, 0}}}}, 0, 0 }, 341214571Sdim { "$c20", 20, {0, {{{0, 0}}}}, 0, 0 }, 342214571Sdim { "$c21", 21, {0, {{{0, 0}}}}, 0, 0 }, 343214571Sdim { "$c22", 22, {0, {{{0, 0}}}}, 0, 0 }, 344214571Sdim { "$c23", 23, {0, {{{0, 0}}}}, 0, 0 }, 345214571Sdim { "$c24", 24, {0, {{{0, 0}}}}, 0, 0 }, 346214571Sdim { "$c25", 25, {0, {{{0, 0}}}}, 0, 0 }, 347214571Sdim { "$c26", 26, {0, {{{0, 0}}}}, 0, 0 }, 348214571Sdim { "$c27", 27, {0, {{{0, 0}}}}, 0, 0 }, 349214571Sdim { "$c28", 28, {0, {{{0, 0}}}}, 0, 0 }, 350214571Sdim { "$c29", 29, {0, {{{0, 0}}}}, 0, 0 }, 351214571Sdim { "$c30", 30, {0, {{{0, 0}}}}, 0, 0 }, 352214571Sdim { "$c31", 31, {0, {{{0, 0}}}}, 0, 0 } 353214571Sdim}; 354214571Sdim 355214571SdimCGEN_KEYWORD mep_cgen_opval_h_cr = 356214571Sdim{ 357214571Sdim & mep_cgen_opval_h_cr_entries[0], 358214571Sdim 32, 359214571Sdim 0, 0, 0, 0, "" 360214571Sdim}; 361214571Sdim 362214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_ccr_entries[] = 363214571Sdim{ 364214571Sdim { "$ccr0", 0, {0, {{{0, 0}}}}, 0, 0 }, 365214571Sdim { "$ccr1", 1, {0, {{{0, 0}}}}, 0, 0 }, 366214571Sdim { "$ccr2", 2, {0, {{{0, 0}}}}, 0, 0 }, 367214571Sdim { "$ccr3", 3, {0, {{{0, 0}}}}, 0, 0 }, 368214571Sdim { "$ccr4", 4, {0, {{{0, 0}}}}, 0, 0 }, 369214571Sdim { "$ccr5", 5, {0, {{{0, 0}}}}, 0, 0 }, 370214571Sdim { "$ccr6", 6, {0, {{{0, 0}}}}, 0, 0 }, 371214571Sdim { "$ccr7", 7, {0, {{{0, 0}}}}, 0, 0 }, 372214571Sdim { "$ccr8", 8, {0, {{{0, 0}}}}, 0, 0 }, 373214571Sdim { "$ccr9", 9, {0, {{{0, 0}}}}, 0, 0 }, 374214571Sdim { "$ccr10", 10, {0, {{{0, 0}}}}, 0, 0 }, 375214571Sdim { "$ccr11", 11, {0, {{{0, 0}}}}, 0, 0 }, 376214571Sdim { "$ccr12", 12, {0, {{{0, 0}}}}, 0, 0 }, 377214571Sdim { "$ccr13", 13, {0, {{{0, 0}}}}, 0, 0 }, 378214571Sdim { "$ccr14", 14, {0, {{{0, 0}}}}, 0, 0 }, 379214571Sdim { "$ccr15", 15, {0, {{{0, 0}}}}, 0, 0 }, 380214571Sdim { "$ccr16", 16, {0, {{{0, 0}}}}, 0, 0 }, 381214571Sdim { "$ccr17", 17, {0, {{{0, 0}}}}, 0, 0 }, 382214571Sdim { "$ccr18", 18, {0, {{{0, 0}}}}, 0, 0 }, 383214571Sdim { "$ccr19", 19, {0, {{{0, 0}}}}, 0, 0 }, 384214571Sdim { "$ccr20", 20, {0, {{{0, 0}}}}, 0, 0 }, 385214571Sdim { "$ccr21", 21, {0, {{{0, 0}}}}, 0, 0 }, 386214571Sdim { "$ccr22", 22, {0, {{{0, 0}}}}, 0, 0 }, 387214571Sdim { "$ccr23", 23, {0, {{{0, 0}}}}, 0, 0 }, 388214571Sdim { "$ccr24", 24, {0, {{{0, 0}}}}, 0, 0 }, 389214571Sdim { "$ccr25", 25, {0, {{{0, 0}}}}, 0, 0 }, 390214571Sdim { "$ccr26", 26, {0, {{{0, 0}}}}, 0, 0 }, 391214571Sdim { "$ccr27", 27, {0, {{{0, 0}}}}, 0, 0 }, 392214571Sdim { "$ccr28", 28, {0, {{{0, 0}}}}, 0, 0 }, 393214571Sdim { "$ccr29", 29, {0, {{{0, 0}}}}, 0, 0 }, 394214571Sdim { "$ccr30", 30, {0, {{{0, 0}}}}, 0, 0 }, 395214571Sdim { "$ccr31", 31, {0, {{{0, 0}}}}, 0, 0 }, 396214571Sdim { "$ccr32", 32, {0, {{{0, 0}}}}, 0, 0 }, 397214571Sdim { "$ccr33", 33, {0, {{{0, 0}}}}, 0, 0 }, 398214571Sdim { "$ccr34", 34, {0, {{{0, 0}}}}, 0, 0 }, 399214571Sdim { "$ccr35", 35, {0, {{{0, 0}}}}, 0, 0 }, 400214571Sdim { "$ccr36", 36, {0, {{{0, 0}}}}, 0, 0 }, 401214571Sdim { "$ccr37", 37, {0, {{{0, 0}}}}, 0, 0 }, 402214571Sdim { "$ccr38", 38, {0, {{{0, 0}}}}, 0, 0 }, 403214571Sdim { "$ccr39", 39, {0, {{{0, 0}}}}, 0, 0 }, 404214571Sdim { "$ccr40", 40, {0, {{{0, 0}}}}, 0, 0 }, 405214571Sdim { "$ccr41", 41, {0, {{{0, 0}}}}, 0, 0 }, 406214571Sdim { "$ccr42", 42, {0, {{{0, 0}}}}, 0, 0 }, 407214571Sdim { "$ccr43", 43, {0, {{{0, 0}}}}, 0, 0 }, 408214571Sdim { "$ccr44", 44, {0, {{{0, 0}}}}, 0, 0 }, 409214571Sdim { "$ccr45", 45, {0, {{{0, 0}}}}, 0, 0 }, 410214571Sdim { "$ccr46", 46, {0, {{{0, 0}}}}, 0, 0 }, 411214571Sdim { "$ccr47", 47, {0, {{{0, 0}}}}, 0, 0 }, 412214571Sdim { "$ccr48", 48, {0, {{{0, 0}}}}, 0, 0 }, 413214571Sdim { "$ccr49", 49, {0, {{{0, 0}}}}, 0, 0 }, 414214571Sdim { "$ccr50", 50, {0, {{{0, 0}}}}, 0, 0 }, 415214571Sdim { "$ccr51", 51, {0, {{{0, 0}}}}, 0, 0 }, 416214571Sdim { "$ccr52", 52, {0, {{{0, 0}}}}, 0, 0 }, 417214571Sdim { "$ccr53", 53, {0, {{{0, 0}}}}, 0, 0 }, 418214571Sdim { "$ccr54", 54, {0, {{{0, 0}}}}, 0, 0 }, 419214571Sdim { "$ccr55", 55, {0, {{{0, 0}}}}, 0, 0 }, 420214571Sdim { "$ccr56", 56, {0, {{{0, 0}}}}, 0, 0 }, 421214571Sdim { "$ccr57", 57, {0, {{{0, 0}}}}, 0, 0 }, 422214571Sdim { "$ccr58", 58, {0, {{{0, 0}}}}, 0, 0 }, 423214571Sdim { "$ccr59", 59, {0, {{{0, 0}}}}, 0, 0 }, 424214571Sdim { "$ccr60", 60, {0, {{{0, 0}}}}, 0, 0 }, 425214571Sdim { "$ccr61", 61, {0, {{{0, 0}}}}, 0, 0 }, 426214571Sdim { "$ccr62", 62, {0, {{{0, 0}}}}, 0, 0 }, 427214571Sdim { "$ccr63", 63, {0, {{{0, 0}}}}, 0, 0 } 428214571Sdim}; 429214571Sdim 430214571SdimCGEN_KEYWORD mep_cgen_opval_h_ccr = 431214571Sdim{ 432214571Sdim & mep_cgen_opval_h_ccr_entries[0], 433214571Sdim 64, 434214571Sdim 0, 0, 0, 0, "" 435214571Sdim}; 436214571Sdim 437214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_cr_fmax_entries[] = 438214571Sdim{ 439214571Sdim { "$fr0", 0, {0, {{{0, 0}}}}, 0, 0 }, 440214571Sdim { "$fr1", 1, {0, {{{0, 0}}}}, 0, 0 }, 441214571Sdim { "$fr2", 2, {0, {{{0, 0}}}}, 0, 0 }, 442214571Sdim { "$fr3", 3, {0, {{{0, 0}}}}, 0, 0 }, 443214571Sdim { "$fr4", 4, {0, {{{0, 0}}}}, 0, 0 }, 444214571Sdim { "$fr5", 5, {0, {{{0, 0}}}}, 0, 0 }, 445214571Sdim { "$fr6", 6, {0, {{{0, 0}}}}, 0, 0 }, 446214571Sdim { "$fr7", 7, {0, {{{0, 0}}}}, 0, 0 }, 447214571Sdim { "$fr8", 8, {0, {{{0, 0}}}}, 0, 0 }, 448214571Sdim { "$fr9", 9, {0, {{{0, 0}}}}, 0, 0 }, 449214571Sdim { "$fr10", 10, {0, {{{0, 0}}}}, 0, 0 }, 450214571Sdim { "$fr11", 11, {0, {{{0, 0}}}}, 0, 0 }, 451214571Sdim { "$fr12", 12, {0, {{{0, 0}}}}, 0, 0 }, 452214571Sdim { "$fr13", 13, {0, {{{0, 0}}}}, 0, 0 }, 453214571Sdim { "$fr14", 14, {0, {{{0, 0}}}}, 0, 0 }, 454214571Sdim { "$fr15", 15, {0, {{{0, 0}}}}, 0, 0 }, 455214571Sdim { "$fr16", 16, {0, {{{0, 0}}}}, 0, 0 }, 456214571Sdim { "$fr17", 17, {0, {{{0, 0}}}}, 0, 0 }, 457214571Sdim { "$fr18", 18, {0, {{{0, 0}}}}, 0, 0 }, 458214571Sdim { "$fr19", 19, {0, {{{0, 0}}}}, 0, 0 }, 459214571Sdim { "$fr20", 20, {0, {{{0, 0}}}}, 0, 0 }, 460214571Sdim { "$fr21", 21, {0, {{{0, 0}}}}, 0, 0 }, 461214571Sdim { "$fr22", 22, {0, {{{0, 0}}}}, 0, 0 }, 462214571Sdim { "$fr23", 23, {0, {{{0, 0}}}}, 0, 0 }, 463214571Sdim { "$fr24", 24, {0, {{{0, 0}}}}, 0, 0 }, 464214571Sdim { "$fr25", 25, {0, {{{0, 0}}}}, 0, 0 }, 465214571Sdim { "$fr26", 26, {0, {{{0, 0}}}}, 0, 0 }, 466214571Sdim { "$fr27", 27, {0, {{{0, 0}}}}, 0, 0 }, 467214571Sdim { "$fr28", 28, {0, {{{0, 0}}}}, 0, 0 }, 468214571Sdim { "$fr29", 29, {0, {{{0, 0}}}}, 0, 0 }, 469214571Sdim { "$fr30", 30, {0, {{{0, 0}}}}, 0, 0 }, 470214571Sdim { "$fr31", 31, {0, {{{0, 0}}}}, 0, 0 }, 471214571Sdim { "$c0", 0, {0, {{{0, 0}}}}, 0, 0 }, 472214571Sdim { "$c1", 1, {0, {{{0, 0}}}}, 0, 0 }, 473214571Sdim { "$c2", 2, {0, {{{0, 0}}}}, 0, 0 }, 474214571Sdim { "$c3", 3, {0, {{{0, 0}}}}, 0, 0 }, 475214571Sdim { "$c4", 4, {0, {{{0, 0}}}}, 0, 0 }, 476214571Sdim { "$c5", 5, {0, {{{0, 0}}}}, 0, 0 }, 477214571Sdim { "$c6", 6, {0, {{{0, 0}}}}, 0, 0 }, 478214571Sdim { "$c7", 7, {0, {{{0, 0}}}}, 0, 0 }, 479214571Sdim { "$c8", 8, {0, {{{0, 0}}}}, 0, 0 }, 480214571Sdim { "$c9", 9, {0, {{{0, 0}}}}, 0, 0 }, 481214571Sdim { "$c10", 10, {0, {{{0, 0}}}}, 0, 0 }, 482214571Sdim { "$c11", 11, {0, {{{0, 0}}}}, 0, 0 }, 483214571Sdim { "$c12", 12, {0, {{{0, 0}}}}, 0, 0 }, 484214571Sdim { "$c13", 13, {0, {{{0, 0}}}}, 0, 0 }, 485214571Sdim { "$c14", 14, {0, {{{0, 0}}}}, 0, 0 }, 486214571Sdim { "$c15", 15, {0, {{{0, 0}}}}, 0, 0 }, 487214571Sdim { "$c16", 16, {0, {{{0, 0}}}}, 0, 0 }, 488214571Sdim { "$c17", 17, {0, {{{0, 0}}}}, 0, 0 }, 489214571Sdim { "$c18", 18, {0, {{{0, 0}}}}, 0, 0 }, 490214571Sdim { "$c19", 19, {0, {{{0, 0}}}}, 0, 0 }, 491214571Sdim { "$c20", 20, {0, {{{0, 0}}}}, 0, 0 }, 492214571Sdim { "$c21", 21, {0, {{{0, 0}}}}, 0, 0 }, 493214571Sdim { "$c22", 22, {0, {{{0, 0}}}}, 0, 0 }, 494214571Sdim { "$c23", 23, {0, {{{0, 0}}}}, 0, 0 }, 495214571Sdim { "$c24", 24, {0, {{{0, 0}}}}, 0, 0 }, 496214571Sdim { "$c25", 25, {0, {{{0, 0}}}}, 0, 0 }, 497214571Sdim { "$c26", 26, {0, {{{0, 0}}}}, 0, 0 }, 498214571Sdim { "$c27", 27, {0, {{{0, 0}}}}, 0, 0 }, 499214571Sdim { "$c28", 28, {0, {{{0, 0}}}}, 0, 0 }, 500214571Sdim { "$c29", 29, {0, {{{0, 0}}}}, 0, 0 }, 501214571Sdim { "$c30", 30, {0, {{{0, 0}}}}, 0, 0 }, 502214571Sdim { "$c31", 31, {0, {{{0, 0}}}}, 0, 0 } 503214571Sdim}; 504214571Sdim 505214571SdimCGEN_KEYWORD mep_cgen_opval_h_cr_fmax = 506214571Sdim{ 507214571Sdim & mep_cgen_opval_h_cr_fmax_entries[0], 508214571Sdim 64, 509214571Sdim 0, 0, 0, 0, "" 510214571Sdim}; 511214571Sdim 512214571Sdimstatic CGEN_KEYWORD_ENTRY mep_cgen_opval_h_ccr_fmax_entries[] = 513214571Sdim{ 514214571Sdim { "$cirr", 0, {0, {{{0, 0}}}}, 0, 0 }, 515214571Sdim { "$fcr0", 0, {0, {{{0, 0}}}}, 0, 0 }, 516214571Sdim { "$ccr0", 0, {0, {{{0, 0}}}}, 0, 0 }, 517214571Sdim { "$cbcr", 1, {0, {{{0, 0}}}}, 0, 0 }, 518214571Sdim { "$fcr1", 1, {0, {{{0, 0}}}}, 0, 0 }, 519214571Sdim { "$ccr1", 1, {0, {{{0, 0}}}}, 0, 0 }, 520214571Sdim { "$cerr", 15, {0, {{{0, 0}}}}, 0, 0 }, 521214571Sdim { "$fcr15", 15, {0, {{{0, 0}}}}, 0, 0 }, 522214571Sdim { "$ccr15", 15, {0, {{{0, 0}}}}, 0, 0 } 523214571Sdim}; 524214571Sdim 525214571SdimCGEN_KEYWORD mep_cgen_opval_h_ccr_fmax = 526214571Sdim{ 527214571Sdim & mep_cgen_opval_h_ccr_fmax_entries[0], 528214571Sdim 9, 529214571Sdim 0, 0, 0, 0, "" 530214571Sdim}; 531214571Sdim 532214571Sdim 533214571Sdim/* The hardware table. */ 534214571Sdim 535214571Sdim#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 536214571Sdim#define A(a) (1 << CGEN_HW_##a) 537214571Sdim#else 538214571Sdim#define A(a) (1 << CGEN_HW_/**/a) 539214571Sdim#endif 540214571Sdim 541214571Sdimconst CGEN_HW_ENTRY mep_cgen_hw_table[] = 542214571Sdim{ 543214571Sdim { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 544214571Sdim { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 545214571Sdim { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 546214571Sdim { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 547214571Sdim { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 548214571Sdim { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 549214571Sdim { "h-gpr", HW_H_GPR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_gpr, { 0|A(PROFILE)|A(CACHE_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 550214571Sdim { "h-csr", HW_H_CSR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_csr, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 551214571Sdim { "h-cr64", HW_H_CR64, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_cr64, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 552214571Sdim { "h-cr", HW_H_CR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_cr, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 553214571Sdim { "h-ccr", HW_H_CCR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_ccr, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 554214571Sdim { "h-cr-fmax", HW_H_CR_FMAX, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_cr_fmax, { 0|A(IS_FLOAT)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 555214571Sdim { "h-ccr-fmax", HW_H_CCR_FMAX, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_ccr_fmax, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 556214571Sdim { "h-fmax-compare-i-p", HW_H_FMAX_COMPARE_I_P, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 557214571Sdim { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } } 558214571Sdim}; 559214571Sdim 560214571Sdim#undef A 561214571Sdim 562214571Sdim 563214571Sdim/* The instruction field table. */ 564214571Sdim 565214571Sdim#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 566214571Sdim#define A(a) (1 << CGEN_IFLD_##a) 567214571Sdim#else 568214571Sdim#define A(a) (1 << CGEN_IFLD_/**/a) 569214571Sdim#endif 570214571Sdim 571214571Sdimconst CGEN_IFLD mep_cgen_ifld_table[] = 572214571Sdim{ 573214571Sdim { MEP_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }, 574214571Sdim { MEP_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }, 575214571Sdim { MEP_F_MAJOR, "f-major", 0, 32, 0, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 576214571Sdim { MEP_F_RN, "f-rn", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 577214571Sdim { MEP_F_RN3, "f-rn3", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 578214571Sdim { MEP_F_RM, "f-rm", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 579214571Sdim { MEP_F_RL, "f-rl", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 580214571Sdim { MEP_F_SUB2, "f-sub2", 0, 32, 14, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 581214571Sdim { MEP_F_SUB3, "f-sub3", 0, 32, 13, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 582214571Sdim { MEP_F_SUB4, "f-sub4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 583214571Sdim { MEP_F_EXT, "f-ext", 0, 32, 16, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 584214571Sdim { MEP_F_CRN, "f-crn", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 585214571Sdim { MEP_F_CSRN_HI, "f-csrn-hi", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 586214571Sdim { MEP_F_CSRN_LO, "f-csrn-lo", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 587214571Sdim { MEP_F_CSRN, "f-csrn", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 588214571Sdim { MEP_F_CRNX_HI, "f-crnx-hi", 0, 32, 28, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 589214571Sdim { MEP_F_CRNX_LO, "f-crnx-lo", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 590214571Sdim { MEP_F_CRNX, "f-crnx", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 591214571Sdim { MEP_F_0, "f-0", 0, 32, 0, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 592214571Sdim { MEP_F_1, "f-1", 0, 32, 1, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 593214571Sdim { MEP_F_2, "f-2", 0, 32, 2, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 594214571Sdim { MEP_F_3, "f-3", 0, 32, 3, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 595214571Sdim { MEP_F_4, "f-4", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 596214571Sdim { MEP_F_5, "f-5", 0, 32, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 597214571Sdim { MEP_F_6, "f-6", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 598214571Sdim { MEP_F_7, "f-7", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 599214571Sdim { MEP_F_8, "f-8", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 600214571Sdim { MEP_F_9, "f-9", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 601214571Sdim { MEP_F_10, "f-10", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 602214571Sdim { MEP_F_11, "f-11", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 603214571Sdim { MEP_F_12, "f-12", 0, 32, 12, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 604214571Sdim { MEP_F_13, "f-13", 0, 32, 13, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 605214571Sdim { MEP_F_14, "f-14", 0, 32, 14, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 606214571Sdim { MEP_F_15, "f-15", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 607214571Sdim { MEP_F_16, "f-16", 0, 32, 16, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 608214571Sdim { MEP_F_17, "f-17", 0, 32, 17, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 609214571Sdim { MEP_F_18, "f-18", 0, 32, 18, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 610214571Sdim { MEP_F_19, "f-19", 0, 32, 19, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 611214571Sdim { MEP_F_20, "f-20", 0, 32, 20, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 612214571Sdim { MEP_F_21, "f-21", 0, 32, 21, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 613214571Sdim { MEP_F_22, "f-22", 0, 32, 22, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 614214571Sdim { MEP_F_23, "f-23", 0, 32, 23, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 615214571Sdim { MEP_F_24, "f-24", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 616214571Sdim { MEP_F_25, "f-25", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 617214571Sdim { MEP_F_26, "f-26", 0, 32, 26, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 618214571Sdim { MEP_F_27, "f-27", 0, 32, 27, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 619214571Sdim { MEP_F_28, "f-28", 0, 32, 28, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 620214571Sdim { MEP_F_29, "f-29", 0, 32, 29, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 621214571Sdim { MEP_F_30, "f-30", 0, 32, 30, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 622214571Sdim { MEP_F_31, "f-31", 0, 32, 31, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } } } } }, 623214571Sdim { MEP_F_8S8A2, "f-8s8a2", 0, 32, 8, 7, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 624214571Sdim { MEP_F_12S4A2, "f-12s4a2", 0, 32, 4, 11, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 625214571Sdim { MEP_F_17S16A2, "f-17s16a2", 0, 32, 16, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 626214571Sdim { MEP_F_24S5A2N_HI, "f-24s5a2n-hi", 0, 32, 16, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 627214571Sdim { MEP_F_24S5A2N_LO, "f-24s5a2n-lo", 0, 32, 5, 7, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 628214571Sdim { MEP_F_24S5A2N, "f-24s5a2n", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 629214571Sdim { MEP_F_24U5A2N_HI, "f-24u5a2n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 630214571Sdim { MEP_F_24U5A2N_LO, "f-24u5a2n-lo", 0, 32, 5, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 631214571Sdim { MEP_F_24U5A2N, "f-24u5a2n", 0, 0, 0, 0,{ 0|A(ABS_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 632214571Sdim { MEP_F_2U6, "f-2u6", 0, 32, 6, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 633214571Sdim { MEP_F_7U9, "f-7u9", 0, 32, 9, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 634214571Sdim { MEP_F_7U9A2, "f-7u9a2", 0, 32, 9, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 635214571Sdim { MEP_F_7U9A4, "f-7u9a4", 0, 32, 9, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 636214571Sdim { MEP_F_16S16, "f-16s16", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 637214571Sdim { MEP_F_2U10, "f-2u10", 0, 32, 10, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 638214571Sdim { MEP_F_3U5, "f-3u5", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 639214571Sdim { MEP_F_4U8, "f-4u8", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 640214571Sdim { MEP_F_5U8, "f-5u8", 0, 32, 8, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 641214571Sdim { MEP_F_5U24, "f-5u24", 0, 32, 24, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 642214571Sdim { MEP_F_6S8, "f-6s8", 0, 32, 8, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 643214571Sdim { MEP_F_8S8, "f-8s8", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 644214571Sdim { MEP_F_16U16, "f-16u16", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 645214571Sdim { MEP_F_12U16, "f-12u16", 0, 32, 16, 12, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 646214571Sdim { MEP_F_3U29, "f-3u29", 0, 32, 29, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 647214571Sdim { MEP_F_8S24, "f-8s24", 0, 32, 24, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 648214571Sdim { MEP_F_8S24A2, "f-8s24a2", 0, 32, 24, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 649214571Sdim { MEP_F_8S24A4, "f-8s24a4", 0, 32, 24, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 650214571Sdim { MEP_F_8S24A8, "f-8s24a8", 0, 32, 24, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 651214571Sdim { MEP_F_24U8A4N_HI, "f-24u8a4n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 652214571Sdim { MEP_F_24U8A4N_LO, "f-24u8a4n-lo", 0, 32, 8, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 653214571Sdim { MEP_F_24U8A4N, "f-24u8a4n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 654214571Sdim { MEP_F_24U8N_HI, "f-24u8n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 655214571Sdim { MEP_F_24U8N_LO, "f-24u8n-lo", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 656214571Sdim { MEP_F_24U8N, "f-24u8n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 657214571Sdim { MEP_F_24U4N_HI, "f-24u4n-hi", 0, 32, 4, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 658214571Sdim { MEP_F_24U4N_LO, "f-24u4n-lo", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 659214571Sdim { MEP_F_24U4N, "f-24u4n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 660214571Sdim { MEP_F_CALLNUM, "f-callnum", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 661214571Sdim { MEP_F_CCRN_HI, "f-ccrn-hi", 0, 32, 28, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 662214571Sdim { MEP_F_CCRN_LO, "f-ccrn-lo", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 663214571Sdim { MEP_F_CCRN, "f-ccrn", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } } } } }, 664214571Sdim { MEP_F_FMAX_0_4, "f-fmax-0-4", 0, 32, 0, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 665214571Sdim { MEP_F_FMAX_4_4, "f-fmax-4-4", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 666214571Sdim { MEP_F_FMAX_8_4, "f-fmax-8-4", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 667214571Sdim { MEP_F_FMAX_12_4, "f-fmax-12-4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 668214571Sdim { MEP_F_FMAX_16_4, "f-fmax-16-4", 0, 32, 16, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 669214571Sdim { MEP_F_FMAX_20_4, "f-fmax-20-4", 0, 32, 20, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 670214571Sdim { MEP_F_FMAX_24_4, "f-fmax-24-4", 0, 32, 24, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 671214571Sdim { MEP_F_FMAX_28_1, "f-fmax-28-1", 0, 32, 28, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 672214571Sdim { MEP_F_FMAX_29_1, "f-fmax-29-1", 0, 32, 29, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 673214571Sdim { MEP_F_FMAX_30_1, "f-fmax-30-1", 0, 32, 30, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 674214571Sdim { MEP_F_FMAX_31_1, "f-fmax-31-1", 0, 32, 31, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 675214571Sdim { MEP_F_FMAX_FRD, "f-fmax-frd", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 676214571Sdim { MEP_F_FMAX_FRN, "f-fmax-frn", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 677214571Sdim { MEP_F_FMAX_FRM, "f-fmax-frm", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 678214571Sdim { MEP_F_FMAX_RM, "f-fmax-rm", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } } } } }, 679214571Sdim { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } } 680214571Sdim}; 681214571Sdim 682214571Sdim#undef A 683214571Sdim 684214571Sdim 685214571Sdim 686214571Sdim/* multi ifield declarations */ 687214571Sdim 688214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CSRN_MULTI_IFIELD []; 689214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CRNX_MULTI_IFIELD []; 690214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24S5A2N_MULTI_IFIELD []; 691214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U5A2N_MULTI_IFIELD []; 692214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U8A4N_MULTI_IFIELD []; 693214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U8N_MULTI_IFIELD []; 694214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U4N_MULTI_IFIELD []; 695214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CALLNUM_MULTI_IFIELD []; 696214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CCRN_MULTI_IFIELD []; 697214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRD_MULTI_IFIELD []; 698214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRN_MULTI_IFIELD []; 699214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRM_MULTI_IFIELD []; 700214571Sdim 701214571Sdim 702214571Sdim/* multi ifield definitions */ 703214571Sdim 704214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CSRN_MULTI_IFIELD [] = 705214571Sdim{ 706214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CSRN_HI] } }, 707214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CSRN_LO] } }, 708214571Sdim { 0, { (const PTR) 0 } } 709214571Sdim}; 710214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CRNX_MULTI_IFIELD [] = 711214571Sdim{ 712214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRNX_HI] } }, 713214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRNX_LO] } }, 714214571Sdim { 0, { (const PTR) 0 } } 715214571Sdim}; 716214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24S5A2N_MULTI_IFIELD [] = 717214571Sdim{ 718214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24S5A2N_HI] } }, 719214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24S5A2N_LO] } }, 720214571Sdim { 0, { (const PTR) 0 } } 721214571Sdim}; 722214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U5A2N_MULTI_IFIELD [] = 723214571Sdim{ 724214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U5A2N_HI] } }, 725214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U5A2N_LO] } }, 726214571Sdim { 0, { (const PTR) 0 } } 727214571Sdim}; 728214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U8A4N_MULTI_IFIELD [] = 729214571Sdim{ 730214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8A4N_HI] } }, 731214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8A4N_LO] } }, 732214571Sdim { 0, { (const PTR) 0 } } 733214571Sdim}; 734214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U8N_MULTI_IFIELD [] = 735214571Sdim{ 736214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8N_HI] } }, 737214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8N_LO] } }, 738214571Sdim { 0, { (const PTR) 0 } } 739214571Sdim}; 740214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_24U4N_MULTI_IFIELD [] = 741214571Sdim{ 742214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U4N_HI] } }, 743214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U4N_LO] } }, 744214571Sdim { 0, { (const PTR) 0 } } 745214571Sdim}; 746214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CALLNUM_MULTI_IFIELD [] = 747214571Sdim{ 748214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5] } }, 749214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_6] } }, 750214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7] } }, 751214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_11] } }, 752214571Sdim { 0, { (const PTR) 0 } } 753214571Sdim}; 754214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_CCRN_MULTI_IFIELD [] = 755214571Sdim{ 756214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CCRN_HI] } }, 757214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CCRN_LO] } }, 758214571Sdim { 0, { (const PTR) 0 } } 759214571Sdim}; 760214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRD_MULTI_IFIELD [] = 761214571Sdim{ 762214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_28_1] } }, 763214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_4_4] } }, 764214571Sdim { 0, { (const PTR) 0 } } 765214571Sdim}; 766214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRN_MULTI_IFIELD [] = 767214571Sdim{ 768214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_29_1] } }, 769214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_20_4] } }, 770214571Sdim { 0, { (const PTR) 0 } } 771214571Sdim}; 772214571Sdimconst CGEN_MAYBE_MULTI_IFLD MEP_F_FMAX_FRM_MULTI_IFIELD [] = 773214571Sdim{ 774214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_30_1] } }, 775214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_24_4] } }, 776214571Sdim { 0, { (const PTR) 0 } } 777214571Sdim}; 778214571Sdim 779214571Sdim/* The operand table. */ 780214571Sdim 781214571Sdim#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 782214571Sdim#define A(a) (1 << CGEN_OPERAND_##a) 783214571Sdim#else 784214571Sdim#define A(a) (1 << CGEN_OPERAND_/**/a) 785214571Sdim#endif 786214571Sdim#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 787214571Sdim#define OPERAND(op) MEP_OPERAND_##op 788214571Sdim#else 789214571Sdim#define OPERAND(op) MEP_OPERAND_/**/op 790214571Sdim#endif 791214571Sdim 792214571Sdimconst CGEN_OPERAND mep_cgen_operand_table[] = 793214571Sdim{ 794214571Sdim/* pc: program counter */ 795214571Sdim { "pc", MEP_OPERAND_PC, HW_H_PC, 0, 0, 796214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_NIL] } }, 797214571Sdim { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 798214571Sdim/* r0: register 0 */ 799214571Sdim { "r0", MEP_OPERAND_R0, HW_H_GPR, 0, 0, 800214571Sdim { 0, { (const PTR) 0 } }, 801214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 802214571Sdim/* rn: register Rn */ 803214571Sdim { "rn", MEP_OPERAND_RN, HW_H_GPR, 4, 4, 804214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 805214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 806214571Sdim/* rm: register Rm */ 807214571Sdim { "rm", MEP_OPERAND_RM, HW_H_GPR, 8, 4, 808214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 809214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 810214571Sdim/* rl: register Rl */ 811214571Sdim { "rl", MEP_OPERAND_RL, HW_H_GPR, 12, 4, 812214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RL] } }, 813214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 814214571Sdim/* rn3: register 0-7 */ 815214571Sdim { "rn3", MEP_OPERAND_RN3, HW_H_GPR, 5, 3, 816214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 817214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 818214571Sdim/* rma: register Rm holding pointer */ 819214571Sdim { "rma", MEP_OPERAND_RMA, HW_H_GPR, 8, 4, 820214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 821214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_POINTER, 0 } }, { { 1, 0 } } } } }, 822214571Sdim/* rnc: register Rn holding char */ 823214571Sdim { "rnc", MEP_OPERAND_RNC, HW_H_GPR, 4, 4, 824214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 825214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CHAR, 0 } }, { { 1, 0 } } } } }, 826214571Sdim/* rnuc: register Rn holding unsigned char */ 827214571Sdim { "rnuc", MEP_OPERAND_RNUC, HW_H_GPR, 4, 4, 828214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 829214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_UCHAR, 0 } }, { { 1, 0 } } } } }, 830214571Sdim/* rns: register Rn holding short */ 831214571Sdim { "rns", MEP_OPERAND_RNS, HW_H_GPR, 4, 4, 832214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 833214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_SHORT, 0 } }, { { 1, 0 } } } } }, 834214571Sdim/* rnus: register Rn holding unsigned short */ 835214571Sdim { "rnus", MEP_OPERAND_RNUS, HW_H_GPR, 4, 4, 836214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 837214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_USHORT, 0 } }, { { 1, 0 } } } } }, 838214571Sdim/* rnl: register Rn holding long */ 839214571Sdim { "rnl", MEP_OPERAND_RNL, HW_H_GPR, 4, 4, 840214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 841214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 842214571Sdim/* rnul: register Rn holding unsigned long */ 843214571Sdim { "rnul", MEP_OPERAND_RNUL, HW_H_GPR, 4, 4, 844214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 845214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_ULONG, 0 } }, { { 1, 0 } } } } }, 846214571Sdim/* rn3c: register 0-7 holding unsigned char */ 847214571Sdim { "rn3c", MEP_OPERAND_RN3C, HW_H_GPR, 5, 3, 848214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 849214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CHAR, 0 } }, { { 1, 0 } } } } }, 850214571Sdim/* rn3uc: register 0-7 holding byte */ 851214571Sdim { "rn3uc", MEP_OPERAND_RN3UC, HW_H_GPR, 5, 3, 852214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 853214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_UCHAR, 0 } }, { { 1, 0 } } } } }, 854214571Sdim/* rn3s: register 0-7 holding unsigned short */ 855214571Sdim { "rn3s", MEP_OPERAND_RN3S, HW_H_GPR, 5, 3, 856214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 857214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_SHORT, 0 } }, { { 1, 0 } } } } }, 858214571Sdim/* rn3us: register 0-7 holding short */ 859214571Sdim { "rn3us", MEP_OPERAND_RN3US, HW_H_GPR, 5, 3, 860214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 861214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_USHORT, 0 } }, { { 1, 0 } } } } }, 862214571Sdim/* rn3l: register 0-7 holding unsigned long */ 863214571Sdim { "rn3l", MEP_OPERAND_RN3L, HW_H_GPR, 5, 3, 864214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 865214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 866214571Sdim/* rn3ul: register 0-7 holding long */ 867214571Sdim { "rn3ul", MEP_OPERAND_RN3UL, HW_H_GPR, 5, 3, 868214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 869214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_ULONG, 0 } }, { { 1, 0 } } } } }, 870214571Sdim/* lp: link pointer */ 871214571Sdim { "lp", MEP_OPERAND_LP, HW_H_CSR, 0, 0, 872214571Sdim { 0, { (const PTR) 0 } }, 873214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 874214571Sdim/* sar: shift amount register */ 875214571Sdim { "sar", MEP_OPERAND_SAR, HW_H_CSR, 0, 0, 876214571Sdim { 0, { (const PTR) 0 } }, 877214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 878214571Sdim/* hi: high result */ 879214571Sdim { "hi", MEP_OPERAND_HI, HW_H_CSR, 0, 0, 880214571Sdim { 0, { (const PTR) 0 } }, 881214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 882214571Sdim/* lo: low result */ 883214571Sdim { "lo", MEP_OPERAND_LO, HW_H_CSR, 0, 0, 884214571Sdim { 0, { (const PTR) 0 } }, 885214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 886214571Sdim/* mb0: modulo begin register 0 */ 887214571Sdim { "mb0", MEP_OPERAND_MB0, HW_H_CSR, 0, 0, 888214571Sdim { 0, { (const PTR) 0 } }, 889214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 890214571Sdim/* me0: modulo end register 0 */ 891214571Sdim { "me0", MEP_OPERAND_ME0, HW_H_CSR, 0, 0, 892214571Sdim { 0, { (const PTR) 0 } }, 893214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 894214571Sdim/* mb1: modulo begin register 1 */ 895214571Sdim { "mb1", MEP_OPERAND_MB1, HW_H_CSR, 0, 0, 896214571Sdim { 0, { (const PTR) 0 } }, 897214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 898214571Sdim/* me1: modulo end register 1 */ 899214571Sdim { "me1", MEP_OPERAND_ME1, HW_H_CSR, 0, 0, 900214571Sdim { 0, { (const PTR) 0 } }, 901214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 902214571Sdim/* psw: program status word */ 903214571Sdim { "psw", MEP_OPERAND_PSW, HW_H_CSR, 0, 0, 904214571Sdim { 0, { (const PTR) 0 } }, 905214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 906214571Sdim/* epc: exception prog counter */ 907214571Sdim { "epc", MEP_OPERAND_EPC, HW_H_CSR, 0, 0, 908214571Sdim { 0, { (const PTR) 0 } }, 909214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 910214571Sdim/* exc: exception cause */ 911214571Sdim { "exc", MEP_OPERAND_EXC, HW_H_CSR, 0, 0, 912214571Sdim { 0, { (const PTR) 0 } }, 913214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 914214571Sdim/* npc: nmi program counter */ 915214571Sdim { "npc", MEP_OPERAND_NPC, HW_H_CSR, 0, 0, 916214571Sdim { 0, { (const PTR) 0 } }, 917214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 918214571Sdim/* dbg: debug register */ 919214571Sdim { "dbg", MEP_OPERAND_DBG, HW_H_CSR, 0, 0, 920214571Sdim { 0, { (const PTR) 0 } }, 921214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 922214571Sdim/* depc: debug exception pc */ 923214571Sdim { "depc", MEP_OPERAND_DEPC, HW_H_CSR, 0, 0, 924214571Sdim { 0, { (const PTR) 0 } }, 925214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 926214571Sdim/* opt: option register */ 927214571Sdim { "opt", MEP_OPERAND_OPT, HW_H_CSR, 0, 0, 928214571Sdim { 0, { (const PTR) 0 } }, 929214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 930214571Sdim/* r1: register 1 */ 931214571Sdim { "r1", MEP_OPERAND_R1, HW_H_GPR, 0, 0, 932214571Sdim { 0, { (const PTR) 0 } }, 933214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 934214571Sdim/* tp: tiny data area pointer */ 935214571Sdim { "tp", MEP_OPERAND_TP, HW_H_GPR, 0, 0, 936214571Sdim { 0, { (const PTR) 0 } }, 937214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 938214571Sdim/* sp: stack pointer */ 939214571Sdim { "sp", MEP_OPERAND_SP, HW_H_GPR, 0, 0, 940214571Sdim { 0, { (const PTR) 0 } }, 941214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 942214571Sdim/* tpr: comment */ 943214571Sdim { "tpr", MEP_OPERAND_TPR, HW_H_GPR, 0, 0, 944214571Sdim { 0, { (const PTR) 0 } }, 945214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 946214571Sdim/* spr: comment */ 947214571Sdim { "spr", MEP_OPERAND_SPR, HW_H_GPR, 0, 0, 948214571Sdim { 0, { (const PTR) 0 } }, 949214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 950214571Sdim/* csrn: control/special register */ 951214571Sdim { "csrn", MEP_OPERAND_CSRN, HW_H_CSR, 8, 5, 952214571Sdim { 2, { (const PTR) &MEP_F_CSRN_MULTI_IFIELD[0] } }, 953214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_REGNUM, 0 } }, { { 1, 0 } } } } }, 954214571Sdim/* csrn-idx: control/special reg idx */ 955214571Sdim { "csrn-idx", MEP_OPERAND_CSRN_IDX, HW_H_UINT, 8, 5, 956214571Sdim { 2, { (const PTR) &MEP_F_CSRN_MULTI_IFIELD[0] } }, 957214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 958214571Sdim/* crn64: copro Rn (64-bit) */ 959214571Sdim { "crn64", MEP_OPERAND_CRN64, HW_H_CR64, 4, 4, 960214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRN] } }, 961214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } } }, 962214571Sdim/* crn: copro Rn (32-bit) */ 963214571Sdim { "crn", MEP_OPERAND_CRN, HW_H_CR, 4, 4, 964214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRN] } }, 965214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } } }, 966214571Sdim/* crnx64: copro Rn (0-31, 64-bit) */ 967214571Sdim { "crnx64", MEP_OPERAND_CRNX64, HW_H_CR64, 4, 5, 968214571Sdim { 2, { (const PTR) &MEP_F_CRNX_MULTI_IFIELD[0] } }, 969214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } } }, 970214571Sdim/* crnx: copro Rn (0-31, 32-bit) */ 971214571Sdim { "crnx", MEP_OPERAND_CRNX, HW_H_CR, 4, 5, 972214571Sdim { 2, { (const PTR) &MEP_F_CRNX_MULTI_IFIELD[0] } }, 973214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } } }, 974214571Sdim/* ccrn: copro control reg CCRn */ 975214571Sdim { "ccrn", MEP_OPERAND_CCRN, HW_H_CCR, 4, 6, 976214571Sdim { 2, { (const PTR) &MEP_F_CCRN_MULTI_IFIELD[0] } }, 977214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_REGNUM, 0 } }, { { 1, 0 } } } } }, 978214571Sdim/* cccc: copro flags */ 979214571Sdim { "cccc", MEP_OPERAND_CCCC, HW_H_UINT, 8, 4, 980214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 981214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 982214571Sdim/* pcrel8a2: comment */ 983214571Sdim { "pcrel8a2", MEP_OPERAND_PCREL8A2, HW_H_SINT, 8, 7, 984214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S8A2] } }, 985214571Sdim { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } } }, 986214571Sdim/* pcrel12a2: comment */ 987214571Sdim { "pcrel12a2", MEP_OPERAND_PCREL12A2, HW_H_SINT, 4, 11, 988214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_12S4A2] } }, 989214571Sdim { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } } }, 990214571Sdim/* pcrel17a2: comment */ 991214571Sdim { "pcrel17a2", MEP_OPERAND_PCREL17A2, HW_H_SINT, 16, 16, 992214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_17S16A2] } }, 993214571Sdim { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } } }, 994214571Sdim/* pcrel24a2: comment */ 995214571Sdim { "pcrel24a2", MEP_OPERAND_PCREL24A2, HW_H_SINT, 5, 23, 996214571Sdim { 2, { (const PTR) &MEP_F_24S5A2N_MULTI_IFIELD[0] } }, 997214571Sdim { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } } }, 998214571Sdim/* pcabs24a2: comment */ 999214571Sdim { "pcabs24a2", MEP_OPERAND_PCABS24A2, HW_H_UINT, 5, 23, 1000214571Sdim { 2, { (const PTR) &MEP_F_24U5A2N_MULTI_IFIELD[0] } }, 1001214571Sdim { 0|A(ABS_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } } }, 1002214571Sdim/* sdisp16: comment */ 1003214571Sdim { "sdisp16", MEP_OPERAND_SDISP16, HW_H_SINT, 16, 16, 1004214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16S16] } }, 1005214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1006214571Sdim/* simm16: comment */ 1007214571Sdim { "simm16", MEP_OPERAND_SIMM16, HW_H_SINT, 16, 16, 1008214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16S16] } }, 1009214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1010214571Sdim/* uimm16: comment */ 1011214571Sdim { "uimm16", MEP_OPERAND_UIMM16, HW_H_UINT, 16, 16, 1012214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16U16] } }, 1013214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1014214571Sdim/* code16: uci/dsp code (16 bits) */ 1015214571Sdim { "code16", MEP_OPERAND_CODE16, HW_H_UINT, 16, 16, 1016214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16U16] } }, 1017214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1018214571Sdim/* udisp2: SSARB addend (2 bits) */ 1019214571Sdim { "udisp2", MEP_OPERAND_UDISP2, HW_H_SINT, 6, 2, 1020214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_2U6] } }, 1021214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1022214571Sdim/* uimm2: interrupt (2 bits) */ 1023214571Sdim { "uimm2", MEP_OPERAND_UIMM2, HW_H_UINT, 10, 2, 1024214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_2U10] } }, 1025214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1026214571Sdim/* simm6: add const (6 bits) */ 1027214571Sdim { "simm6", MEP_OPERAND_SIMM6, HW_H_SINT, 8, 6, 1028214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_6S8] } }, 1029214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1030214571Sdim/* simm8: mov const (8 bits) */ 1031214571Sdim { "simm8", MEP_OPERAND_SIMM8, HW_H_SINT, 8, 8, 1032214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S8] } }, 1033214571Sdim { 0|A(RELOC_IMPLIES_OVERFLOW), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1034214571Sdim/* addr24a4: comment */ 1035214571Sdim { "addr24a4", MEP_OPERAND_ADDR24A4, HW_H_UINT, 8, 22, 1036214571Sdim { 2, { (const PTR) &MEP_F_24U8A4N_MULTI_IFIELD[0] } }, 1037214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } } }, 1038214571Sdim/* code24: coprocessor code */ 1039214571Sdim { "code24", MEP_OPERAND_CODE24, HW_H_UINT, 4, 24, 1040214571Sdim { 2, { (const PTR) &MEP_F_24U4N_MULTI_IFIELD[0] } }, 1041214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1042214571Sdim/* callnum: system call number */ 1043214571Sdim { "callnum", MEP_OPERAND_CALLNUM, HW_H_UINT, 5, 4, 1044214571Sdim { 4, { (const PTR) &MEP_F_CALLNUM_MULTI_IFIELD[0] } }, 1045214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1046214571Sdim/* uimm3: bit immediate (3 bits) */ 1047214571Sdim { "uimm3", MEP_OPERAND_UIMM3, HW_H_UINT, 5, 3, 1048214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_3U5] } }, 1049214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1050214571Sdim/* uimm4: bCC const (4 bits) */ 1051214571Sdim { "uimm4", MEP_OPERAND_UIMM4, HW_H_UINT, 8, 4, 1052214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_4U8] } }, 1053214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1054214571Sdim/* uimm5: bit/shift val (5 bits) */ 1055214571Sdim { "uimm5", MEP_OPERAND_UIMM5, HW_H_UINT, 8, 5, 1056214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5U8] } }, 1057214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1058214571Sdim/* udisp7: comment */ 1059214571Sdim { "udisp7", MEP_OPERAND_UDISP7, HW_H_UINT, 9, 7, 1060214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9] } }, 1061214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1062214571Sdim/* udisp7a2: comment */ 1063214571Sdim { "udisp7a2", MEP_OPERAND_UDISP7A2, HW_H_UINT, 9, 6, 1064214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A2] } }, 1065214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 2, 0 } } } } }, 1066214571Sdim/* udisp7a4: comment */ 1067214571Sdim { "udisp7a4", MEP_OPERAND_UDISP7A4, HW_H_UINT, 9, 5, 1068214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A4] } }, 1069214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } } }, 1070214571Sdim/* uimm7a4: comment */ 1071214571Sdim { "uimm7a4", MEP_OPERAND_UIMM7A4, HW_H_UINT, 9, 5, 1072214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A4] } }, 1073214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } } }, 1074214571Sdim/* uimm24: immediate (24 bits) */ 1075214571Sdim { "uimm24", MEP_OPERAND_UIMM24, HW_H_UINT, 8, 24, 1076214571Sdim { 2, { (const PTR) &MEP_F_24U8N_MULTI_IFIELD[0] } }, 1077214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1078214571Sdim/* cimm4: cache immed'te (4 bits) */ 1079214571Sdim { "cimm4", MEP_OPERAND_CIMM4, HW_H_UINT, 4, 4, 1080214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 1081214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1082214571Sdim/* cimm5: clip immediate (5 bits) */ 1083214571Sdim { "cimm5", MEP_OPERAND_CIMM5, HW_H_UINT, 24, 5, 1084214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5U24] } }, 1085214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1086214571Sdim/* cdisp8: copro addend (8 bits) */ 1087214571Sdim { "cdisp8", MEP_OPERAND_CDISP8, HW_H_SINT, 24, 8, 1088214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24] } }, 1089214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1090214571Sdim/* cdisp8a2: comment */ 1091214571Sdim { "cdisp8a2", MEP_OPERAND_CDISP8A2, HW_H_SINT, 24, 7, 1092214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A2] } }, 1093214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 2, 0 } } } } }, 1094214571Sdim/* cdisp8a4: comment */ 1095214571Sdim { "cdisp8a4", MEP_OPERAND_CDISP8A4, HW_H_SINT, 24, 6, 1096214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A4] } }, 1097214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } } }, 1098214571Sdim/* cdisp8a8: comment */ 1099214571Sdim { "cdisp8a8", MEP_OPERAND_CDISP8A8, HW_H_SINT, 24, 5, 1100214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A8] } }, 1101214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 8, 0 } } } } }, 1102214571Sdim/* zero: Zero operand */ 1103214571Sdim { "zero", MEP_OPERAND_ZERO, HW_H_SINT, 0, 0, 1104214571Sdim { 0, { (const PTR) 0 } }, 1105214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1106214571Sdim/* cp_flag: branch condition register */ 1107214571Sdim { "cp_flag", MEP_OPERAND_CP_FLAG, HW_H_CCR, 0, 0, 1108214571Sdim { 0, { (const PTR) 0 } }, 1109214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xfe" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1110214571Sdim/* fmax-FRd: FRd */ 1111214571Sdim { "fmax-FRd", MEP_OPERAND_FMAX_FRD, HW_H_CR, 4, 5, 1112214571Sdim { 2, { (const PTR) &MEP_F_FMAX_FRD_MULTI_IFIELD[0] } }, 1113214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_FMAX_FLOAT, 0 } }, { { 1, 0 } } } } }, 1114214571Sdim/* fmax-FRn: FRn */ 1115214571Sdim { "fmax-FRn", MEP_OPERAND_FMAX_FRN, HW_H_CR, 20, 5, 1116214571Sdim { 2, { (const PTR) &MEP_F_FMAX_FRN_MULTI_IFIELD[0] } }, 1117214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_FMAX_FLOAT, 0 } }, { { 1, 0 } } } } }, 1118214571Sdim/* fmax-FRm: FRm */ 1119214571Sdim { "fmax-FRm", MEP_OPERAND_FMAX_FRM, HW_H_CR, 24, 5, 1120214571Sdim { 2, { (const PTR) &MEP_F_FMAX_FRM_MULTI_IFIELD[0] } }, 1121214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_FMAX_FLOAT, 0 } }, { { 1, 0 } } } } }, 1122214571Sdim/* fmax-FRd-int: FRd as an integer */ 1123214571Sdim { "fmax-FRd-int", MEP_OPERAND_FMAX_FRD_INT, HW_H_CR, 4, 5, 1124214571Sdim { 2, { (const PTR) &MEP_F_FMAX_FRD_MULTI_IFIELD[0] } }, 1125214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_FMAX_INT, 0 } }, { { 1, 0 } } } } }, 1126214571Sdim/* fmax-FRn-int: FRn as an integer */ 1127214571Sdim { "fmax-FRn-int", MEP_OPERAND_FMAX_FRN_INT, HW_H_CR, 20, 5, 1128214571Sdim { 2, { (const PTR) &MEP_F_FMAX_FRN_MULTI_IFIELD[0] } }, 1129214571Sdim { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_FMAX_INT, 0 } }, { { 1, 0 } } } } }, 1130214571Sdim/* fmax-CCRn: CCRn */ 1131214571Sdim { "fmax-CCRn", MEP_OPERAND_FMAX_CCRN, HW_H_CCR, 4, 4, 1132214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_4_4] } }, 1133214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_REGNUM, 0 } }, { { 1, 0 } } } } }, 1134214571Sdim/* fmax-CIRR: CIRR */ 1135214571Sdim { "fmax-CIRR", MEP_OPERAND_FMAX_CIRR, HW_H_CCR, 0, 0, 1136214571Sdim { 0, { (const PTR) 0 } }, 1137214571Sdim { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1138214571Sdim/* fmax-CBCR: CBCR */ 1139214571Sdim { "fmax-CBCR", MEP_OPERAND_FMAX_CBCR, HW_H_CCR, 0, 0, 1140214571Sdim { 0, { (const PTR) 0 } }, 1141214571Sdim { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1142214571Sdim/* fmax-CERR: CERR */ 1143214571Sdim { "fmax-CERR", MEP_OPERAND_FMAX_CERR, HW_H_CCR, 0, 0, 1144214571Sdim { 0, { (const PTR) 0 } }, 1145214571Sdim { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1146214571Sdim/* fmax-Rm: Rm */ 1147214571Sdim { "fmax-Rm", MEP_OPERAND_FMAX_RM, HW_H_GPR, 8, 4, 1148214571Sdim { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_FMAX_RM] } }, 1149214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1150214571Sdim/* fmax-Compare-i-p: flag */ 1151214571Sdim { "fmax-Compare-i-p", MEP_OPERAND_FMAX_COMPARE_I_P, HW_H_FMAX_COMPARE_I_P, 0, 0, 1152214571Sdim { 0, { (const PTR) 0 } }, 1153214571Sdim { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }, 1154214571Sdim/* sentinel */ 1155214571Sdim { 0, 0, 0, 0, 0, 1156214571Sdim { 0, { (const PTR) 0 } }, 1157214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } } 1158214571Sdim}; 1159214571Sdim 1160214571Sdim#undef A 1161214571Sdim 1162214571Sdim 1163214571Sdim/* The instruction table. */ 1164214571Sdim 1165214571Sdim#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 1166214571Sdim#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 1167214571Sdim#define A(a) (1 << CGEN_INSN_##a) 1168214571Sdim#else 1169214571Sdim#define A(a) (1 << CGEN_INSN_/**/a) 1170214571Sdim#endif 1171214571Sdim 1172214571Sdimstatic const CGEN_IBASE mep_cgen_insn_table[MAX_INSNS] = 1173214571Sdim{ 1174214571Sdim /* Special null first entry. 1175214571Sdim A `num' value of zero is thus invalid. 1176214571Sdim Also, the special `invalid' insn resides here. */ 1177214571Sdim { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } }, 1178214571Sdim/* sb $rnc,($rma) */ 1179214571Sdim { 1180214571Sdim MEP_INSN_SB, "sb", "sb", 16, 1181214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1182214571Sdim }, 1183214571Sdim/* sh $rns,($rma) */ 1184214571Sdim { 1185214571Sdim MEP_INSN_SH, "sh", "sh", 16, 1186214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1187214571Sdim }, 1188214571Sdim/* sw $rnl,($rma) */ 1189214571Sdim { 1190214571Sdim MEP_INSN_SW, "sw", "sw", 16, 1191214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1192214571Sdim }, 1193214571Sdim/* lb $rnc,($rma) */ 1194214571Sdim { 1195214571Sdim MEP_INSN_LB, "lb", "lb", 16, 1196214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1197214571Sdim }, 1198214571Sdim/* lh $rns,($rma) */ 1199214571Sdim { 1200214571Sdim MEP_INSN_LH, "lh", "lh", 16, 1201214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1202214571Sdim }, 1203214571Sdim/* lw $rnl,($rma) */ 1204214571Sdim { 1205214571Sdim MEP_INSN_LW, "lw", "lw", 16, 1206214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1207214571Sdim }, 1208214571Sdim/* lbu $rnuc,($rma) */ 1209214571Sdim { 1210214571Sdim MEP_INSN_LBU, "lbu", "lbu", 16, 1211214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1212214571Sdim }, 1213214571Sdim/* lhu $rnus,($rma) */ 1214214571Sdim { 1215214571Sdim MEP_INSN_LHU, "lhu", "lhu", 16, 1216214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1217214571Sdim }, 1218214571Sdim/* sw $rnl,$udisp7a4($spr) */ 1219214571Sdim { 1220214571Sdim MEP_INSN_SW_SP, "sw-sp", "sw", 16, 1221214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1222214571Sdim }, 1223214571Sdim/* lw $rnl,$udisp7a4($spr) */ 1224214571Sdim { 1225214571Sdim MEP_INSN_LW_SP, "lw-sp", "lw", 16, 1226214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1227214571Sdim }, 1228214571Sdim/* sb $rn3c,$udisp7($tpr) */ 1229214571Sdim { 1230214571Sdim MEP_INSN_SB_TP, "sb-tp", "sb", 16, 1231214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1232214571Sdim }, 1233214571Sdim/* sh $rn3s,$udisp7a2($tpr) */ 1234214571Sdim { 1235214571Sdim MEP_INSN_SH_TP, "sh-tp", "sh", 16, 1236214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1237214571Sdim }, 1238214571Sdim/* sw $rn3l,$udisp7a4($tpr) */ 1239214571Sdim { 1240214571Sdim MEP_INSN_SW_TP, "sw-tp", "sw", 16, 1241214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1242214571Sdim }, 1243214571Sdim/* lb $rn3c,$udisp7($tpr) */ 1244214571Sdim { 1245214571Sdim MEP_INSN_LB_TP, "lb-tp", "lb", 16, 1246214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1247214571Sdim }, 1248214571Sdim/* lh $rn3s,$udisp7a2($tpr) */ 1249214571Sdim { 1250214571Sdim MEP_INSN_LH_TP, "lh-tp", "lh", 16, 1251214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1252214571Sdim }, 1253214571Sdim/* lw $rn3l,$udisp7a4($tpr) */ 1254214571Sdim { 1255214571Sdim MEP_INSN_LW_TP, "lw-tp", "lw", 16, 1256214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1257214571Sdim }, 1258214571Sdim/* lbu $rn3uc,$udisp7($tpr) */ 1259214571Sdim { 1260214571Sdim MEP_INSN_LBU_TP, "lbu-tp", "lbu", 16, 1261214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1262214571Sdim }, 1263214571Sdim/* lhu $rn3us,$udisp7a2($tpr) */ 1264214571Sdim { 1265214571Sdim MEP_INSN_LHU_TP, "lhu-tp", "lhu", 16, 1266214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1267214571Sdim }, 1268214571Sdim/* sb $rnc,$sdisp16($rma) */ 1269214571Sdim { 1270214571Sdim MEP_INSN_SB16, "sb16", "sb", 32, 1271214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1272214571Sdim }, 1273214571Sdim/* sh $rns,$sdisp16($rma) */ 1274214571Sdim { 1275214571Sdim MEP_INSN_SH16, "sh16", "sh", 32, 1276214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1277214571Sdim }, 1278214571Sdim/* sw $rnl,$sdisp16($rma) */ 1279214571Sdim { 1280214571Sdim MEP_INSN_SW16, "sw16", "sw", 32, 1281214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1282214571Sdim }, 1283214571Sdim/* lb $rnc,$sdisp16($rma) */ 1284214571Sdim { 1285214571Sdim MEP_INSN_LB16, "lb16", "lb", 32, 1286214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1287214571Sdim }, 1288214571Sdim/* lh $rns,$sdisp16($rma) */ 1289214571Sdim { 1290214571Sdim MEP_INSN_LH16, "lh16", "lh", 32, 1291214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1292214571Sdim }, 1293214571Sdim/* lw $rnl,$sdisp16($rma) */ 1294214571Sdim { 1295214571Sdim MEP_INSN_LW16, "lw16", "lw", 32, 1296214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1297214571Sdim }, 1298214571Sdim/* lbu $rnuc,$sdisp16($rma) */ 1299214571Sdim { 1300214571Sdim MEP_INSN_LBU16, "lbu16", "lbu", 32, 1301214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1302214571Sdim }, 1303214571Sdim/* lhu $rnus,$sdisp16($rma) */ 1304214571Sdim { 1305214571Sdim MEP_INSN_LHU16, "lhu16", "lhu", 32, 1306214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1307214571Sdim }, 1308214571Sdim/* sw $rnl,($addr24a4) */ 1309214571Sdim { 1310214571Sdim MEP_INSN_SW24, "sw24", "sw", 32, 1311214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1312214571Sdim }, 1313214571Sdim/* lw $rnl,($addr24a4) */ 1314214571Sdim { 1315214571Sdim MEP_INSN_LW24, "lw24", "lw", 32, 1316214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1317214571Sdim }, 1318214571Sdim/* extb $rn */ 1319214571Sdim { 1320214571Sdim MEP_INSN_EXTB, "extb", "extb", 16, 1321214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1322214571Sdim }, 1323214571Sdim/* exth $rn */ 1324214571Sdim { 1325214571Sdim MEP_INSN_EXTH, "exth", "exth", 16, 1326214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1327214571Sdim }, 1328214571Sdim/* extub $rn */ 1329214571Sdim { 1330214571Sdim MEP_INSN_EXTUB, "extub", "extub", 16, 1331214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1332214571Sdim }, 1333214571Sdim/* extuh $rn */ 1334214571Sdim { 1335214571Sdim MEP_INSN_EXTUH, "extuh", "extuh", 16, 1336214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1337214571Sdim }, 1338214571Sdim/* ssarb $udisp2($rm) */ 1339214571Sdim { 1340214571Sdim MEP_INSN_SSARB, "ssarb", "ssarb", 16, 1341214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1342214571Sdim }, 1343214571Sdim/* mov $rn,$rm */ 1344214571Sdim { 1345214571Sdim MEP_INSN_MOV, "mov", "mov", 16, 1346214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1347214571Sdim }, 1348214571Sdim/* mov $rn,$simm8 */ 1349214571Sdim { 1350214571Sdim MEP_INSN_MOVI8, "movi8", "mov", 16, 1351214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1352214571Sdim }, 1353214571Sdim/* mov $rn,$simm16 */ 1354214571Sdim { 1355214571Sdim MEP_INSN_MOVI16, "movi16", "mov", 32, 1356214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1357214571Sdim }, 1358214571Sdim/* movu $rn3,$uimm24 */ 1359214571Sdim { 1360214571Sdim MEP_INSN_MOVU24, "movu24", "movu", 32, 1361214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1362214571Sdim }, 1363214571Sdim/* movu $rn,$uimm16 */ 1364214571Sdim { 1365214571Sdim MEP_INSN_MOVU16, "movu16", "movu", 32, 1366214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1367214571Sdim }, 1368214571Sdim/* movh $rn,$uimm16 */ 1369214571Sdim { 1370214571Sdim MEP_INSN_MOVH, "movh", "movh", 32, 1371214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1372214571Sdim }, 1373214571Sdim/* add3 $rl,$rn,$rm */ 1374214571Sdim { 1375214571Sdim MEP_INSN_ADD3, "add3", "add3", 16, 1376214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1377214571Sdim }, 1378214571Sdim/* add $rn,$simm6 */ 1379214571Sdim { 1380214571Sdim MEP_INSN_ADD, "add", "add", 16, 1381214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1382214571Sdim }, 1383214571Sdim/* add3 $rn,$spr,$uimm7a4 */ 1384214571Sdim { 1385214571Sdim MEP_INSN_ADD3I, "add3i", "add3", 16, 1386214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1387214571Sdim }, 1388214571Sdim/* advck3 \$0,$rn,$rm */ 1389214571Sdim { 1390214571Sdim MEP_INSN_ADVCK3, "advck3", "advck3", 16, 1391214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1392214571Sdim }, 1393214571Sdim/* sub $rn,$rm */ 1394214571Sdim { 1395214571Sdim MEP_INSN_SUB, "sub", "sub", 16, 1396214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1397214571Sdim }, 1398214571Sdim/* sbvck3 \$0,$rn,$rm */ 1399214571Sdim { 1400214571Sdim MEP_INSN_SBVCK3, "sbvck3", "sbvck3", 16, 1401214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1402214571Sdim }, 1403214571Sdim/* neg $rn,$rm */ 1404214571Sdim { 1405214571Sdim MEP_INSN_NEG, "neg", "neg", 16, 1406214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1407214571Sdim }, 1408214571Sdim/* slt3 \$0,$rn,$rm */ 1409214571Sdim { 1410214571Sdim MEP_INSN_SLT3, "slt3", "slt3", 16, 1411214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1412214571Sdim }, 1413214571Sdim/* sltu3 \$0,$rn,$rm */ 1414214571Sdim { 1415214571Sdim MEP_INSN_SLTU3, "sltu3", "sltu3", 16, 1416214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1417214571Sdim }, 1418214571Sdim/* slt3 \$0,$rn,$uimm5 */ 1419214571Sdim { 1420214571Sdim MEP_INSN_SLT3I, "slt3i", "slt3", 16, 1421214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1422214571Sdim }, 1423214571Sdim/* sltu3 \$0,$rn,$uimm5 */ 1424214571Sdim { 1425214571Sdim MEP_INSN_SLTU3I, "sltu3i", "sltu3", 16, 1426214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1427214571Sdim }, 1428214571Sdim/* sl1ad3 \$0,$rn,$rm */ 1429214571Sdim { 1430214571Sdim MEP_INSN_SL1AD3, "sl1ad3", "sl1ad3", 16, 1431214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1432214571Sdim }, 1433214571Sdim/* sl2ad3 \$0,$rn,$rm */ 1434214571Sdim { 1435214571Sdim MEP_INSN_SL2AD3, "sl2ad3", "sl2ad3", 16, 1436214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1437214571Sdim }, 1438214571Sdim/* add3 $rn,$rm,$simm16 */ 1439214571Sdim { 1440214571Sdim MEP_INSN_ADD3X, "add3x", "add3", 32, 1441214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1442214571Sdim }, 1443214571Sdim/* slt3 $rn,$rm,$simm16 */ 1444214571Sdim { 1445214571Sdim MEP_INSN_SLT3X, "slt3x", "slt3", 32, 1446214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1447214571Sdim }, 1448214571Sdim/* sltu3 $rn,$rm,$uimm16 */ 1449214571Sdim { 1450214571Sdim MEP_INSN_SLTU3X, "sltu3x", "sltu3", 32, 1451214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1452214571Sdim }, 1453214571Sdim/* or $rn,$rm */ 1454214571Sdim { 1455214571Sdim MEP_INSN_OR, "or", "or", 16, 1456214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1457214571Sdim }, 1458214571Sdim/* and $rn,$rm */ 1459214571Sdim { 1460214571Sdim MEP_INSN_AND, "and", "and", 16, 1461214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1462214571Sdim }, 1463214571Sdim/* xor $rn,$rm */ 1464214571Sdim { 1465214571Sdim MEP_INSN_XOR, "xor", "xor", 16, 1466214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1467214571Sdim }, 1468214571Sdim/* nor $rn,$rm */ 1469214571Sdim { 1470214571Sdim MEP_INSN_NOR, "nor", "nor", 16, 1471214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1472214571Sdim }, 1473214571Sdim/* or3 $rn,$rm,$uimm16 */ 1474214571Sdim { 1475214571Sdim MEP_INSN_OR3, "or3", "or3", 32, 1476214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1477214571Sdim }, 1478214571Sdim/* and3 $rn,$rm,$uimm16 */ 1479214571Sdim { 1480214571Sdim MEP_INSN_AND3, "and3", "and3", 32, 1481214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1482214571Sdim }, 1483214571Sdim/* xor3 $rn,$rm,$uimm16 */ 1484214571Sdim { 1485214571Sdim MEP_INSN_XOR3, "xor3", "xor3", 32, 1486214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1487214571Sdim }, 1488214571Sdim/* sra $rn,$rm */ 1489214571Sdim { 1490214571Sdim MEP_INSN_SRA, "sra", "sra", 16, 1491214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1492214571Sdim }, 1493214571Sdim/* srl $rn,$rm */ 1494214571Sdim { 1495214571Sdim MEP_INSN_SRL, "srl", "srl", 16, 1496214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1497214571Sdim }, 1498214571Sdim/* sll $rn,$rm */ 1499214571Sdim { 1500214571Sdim MEP_INSN_SLL, "sll", "sll", 16, 1501214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1502214571Sdim }, 1503214571Sdim/* sra $rn,$uimm5 */ 1504214571Sdim { 1505214571Sdim MEP_INSN_SRAI, "srai", "sra", 16, 1506214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1507214571Sdim }, 1508214571Sdim/* srl $rn,$uimm5 */ 1509214571Sdim { 1510214571Sdim MEP_INSN_SRLI, "srli", "srl", 16, 1511214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1512214571Sdim }, 1513214571Sdim/* sll $rn,$uimm5 */ 1514214571Sdim { 1515214571Sdim MEP_INSN_SLLI, "slli", "sll", 16, 1516214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1517214571Sdim }, 1518214571Sdim/* sll3 \$0,$rn,$uimm5 */ 1519214571Sdim { 1520214571Sdim MEP_INSN_SLL3, "sll3", "sll3", 16, 1521214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1522214571Sdim }, 1523214571Sdim/* fsft $rn,$rm */ 1524214571Sdim { 1525214571Sdim MEP_INSN_FSFT, "fsft", "fsft", 16, 1526214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1527214571Sdim }, 1528214571Sdim/* bra $pcrel12a2 */ 1529214571Sdim { 1530214571Sdim MEP_INSN_BRA, "bra", "bra", 16, 1531214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1532214571Sdim }, 1533214571Sdim/* beqz $rn,$pcrel8a2 */ 1534214571Sdim { 1535214571Sdim MEP_INSN_BEQZ, "beqz", "beqz", 16, 1536214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1537214571Sdim }, 1538214571Sdim/* bnez $rn,$pcrel8a2 */ 1539214571Sdim { 1540214571Sdim MEP_INSN_BNEZ, "bnez", "bnez", 16, 1541214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1542214571Sdim }, 1543214571Sdim/* beqi $rn,$uimm4,$pcrel17a2 */ 1544214571Sdim { 1545214571Sdim MEP_INSN_BEQI, "beqi", "beqi", 32, 1546214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1547214571Sdim }, 1548214571Sdim/* bnei $rn,$uimm4,$pcrel17a2 */ 1549214571Sdim { 1550214571Sdim MEP_INSN_BNEI, "bnei", "bnei", 32, 1551214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1552214571Sdim }, 1553214571Sdim/* blti $rn,$uimm4,$pcrel17a2 */ 1554214571Sdim { 1555214571Sdim MEP_INSN_BLTI, "blti", "blti", 32, 1556214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1557214571Sdim }, 1558214571Sdim/* bgei $rn,$uimm4,$pcrel17a2 */ 1559214571Sdim { 1560214571Sdim MEP_INSN_BGEI, "bgei", "bgei", 32, 1561214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1562214571Sdim }, 1563214571Sdim/* beq $rn,$rm,$pcrel17a2 */ 1564214571Sdim { 1565214571Sdim MEP_INSN_BEQ, "beq", "beq", 32, 1566214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1567214571Sdim }, 1568214571Sdim/* bne $rn,$rm,$pcrel17a2 */ 1569214571Sdim { 1570214571Sdim MEP_INSN_BNE, "bne", "bne", 32, 1571214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1572214571Sdim }, 1573214571Sdim/* bsr $pcrel12a2 */ 1574214571Sdim { 1575214571Sdim MEP_INSN_BSR12, "bsr12", "bsr", 16, 1576214571Sdim { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1577214571Sdim }, 1578214571Sdim/* bsr $pcrel24a2 */ 1579214571Sdim { 1580214571Sdim MEP_INSN_BSR24, "bsr24", "bsr", 32, 1581214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1582214571Sdim }, 1583214571Sdim/* jmp $rm */ 1584214571Sdim { 1585214571Sdim MEP_INSN_JMP, "jmp", "jmp", 16, 1586214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1587214571Sdim }, 1588214571Sdim/* jmp $pcabs24a2 */ 1589214571Sdim { 1590214571Sdim MEP_INSN_JMP24, "jmp24", "jmp", 32, 1591214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1592214571Sdim }, 1593214571Sdim/* jsr $rm */ 1594214571Sdim { 1595214571Sdim MEP_INSN_JSR, "jsr", "jsr", 16, 1596214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1597214571Sdim }, 1598214571Sdim/* ret */ 1599214571Sdim { 1600214571Sdim MEP_INSN_RET, "ret", "ret", 16, 1601214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1602214571Sdim }, 1603214571Sdim/* repeat $rn,$pcrel17a2 */ 1604214571Sdim { 1605214571Sdim MEP_INSN_REPEAT, "repeat", "repeat", 32, 1606214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1607214571Sdim }, 1608214571Sdim/* erepeat $pcrel17a2 */ 1609214571Sdim { 1610214571Sdim MEP_INSN_EREPEAT, "erepeat", "erepeat", 32, 1611214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1612214571Sdim }, 1613214571Sdim/* stc $rn,\$lp */ 1614214571Sdim { 1615214571Sdim MEP_INSN_STC_LP, "stc_lp", "stc", 16, 1616214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1617214571Sdim }, 1618214571Sdim/* stc $rn,\$hi */ 1619214571Sdim { 1620214571Sdim MEP_INSN_STC_HI, "stc_hi", "stc", 16, 1621214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1622214571Sdim }, 1623214571Sdim/* stc $rn,\$lo */ 1624214571Sdim { 1625214571Sdim MEP_INSN_STC_LO, "stc_lo", "stc", 16, 1626214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1627214571Sdim }, 1628214571Sdim/* stc $rn,$csrn */ 1629214571Sdim { 1630214571Sdim MEP_INSN_STC, "stc", "stc", 16, 1631214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1632214571Sdim }, 1633214571Sdim/* ldc $rn,\$lp */ 1634214571Sdim { 1635214571Sdim MEP_INSN_LDC_LP, "ldc_lp", "ldc", 16, 1636214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1637214571Sdim }, 1638214571Sdim/* ldc $rn,\$hi */ 1639214571Sdim { 1640214571Sdim MEP_INSN_LDC_HI, "ldc_hi", "ldc", 16, 1641214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1642214571Sdim }, 1643214571Sdim/* ldc $rn,\$lo */ 1644214571Sdim { 1645214571Sdim MEP_INSN_LDC_LO, "ldc_lo", "ldc", 16, 1646214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1647214571Sdim }, 1648214571Sdim/* ldc $rn,$csrn */ 1649214571Sdim { 1650214571Sdim MEP_INSN_LDC, "ldc", "ldc", 16, 1651214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } } 1652214571Sdim }, 1653214571Sdim/* di */ 1654214571Sdim { 1655214571Sdim MEP_INSN_DI, "di", "di", 16, 1656214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1657214571Sdim }, 1658214571Sdim/* ei */ 1659214571Sdim { 1660214571Sdim MEP_INSN_EI, "ei", "ei", 16, 1661214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1662214571Sdim }, 1663214571Sdim/* reti */ 1664214571Sdim { 1665214571Sdim MEP_INSN_RETI, "reti", "reti", 16, 1666214571Sdim { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1667214571Sdim }, 1668214571Sdim/* halt */ 1669214571Sdim { 1670214571Sdim MEP_INSN_HALT, "halt", "halt", 16, 1671214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1672214571Sdim }, 1673214571Sdim/* sleep */ 1674214571Sdim { 1675214571Sdim MEP_INSN_SLEEP, "sleep", "sleep", 16, 1676214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1677214571Sdim }, 1678214571Sdim/* swi $uimm2 */ 1679214571Sdim { 1680214571Sdim MEP_INSN_SWI, "swi", "swi", 16, 1681214571Sdim { 0|A(VOLATILE)|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1682214571Sdim }, 1683214571Sdim/* break */ 1684214571Sdim { 1685214571Sdim MEP_INSN_BREAK, "break", "break", 16, 1686214571Sdim { 0|A(VOLATILE)|A(MAY_TRAP)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1687214571Sdim }, 1688214571Sdim/* syncm */ 1689214571Sdim { 1690214571Sdim MEP_INSN_SYNCM, "syncm", "syncm", 16, 1691214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1692214571Sdim }, 1693214571Sdim/* stcb $rn,$uimm16 */ 1694214571Sdim { 1695214571Sdim MEP_INSN_STCB, "stcb", "stcb", 32, 1696214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1697214571Sdim }, 1698214571Sdim/* ldcb $rn,$uimm16 */ 1699214571Sdim { 1700214571Sdim MEP_INSN_LDCB, "ldcb", "ldcb", 32, 1701214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } } 1702214571Sdim }, 1703214571Sdim/* bsetm ($rma),$uimm3 */ 1704214571Sdim { 1705214571Sdim MEP_INSN_BSETM, "bsetm", "bsetm", 16, 1706214571Sdim { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1707214571Sdim }, 1708214571Sdim/* bclrm ($rma),$uimm3 */ 1709214571Sdim { 1710214571Sdim MEP_INSN_BCLRM, "bclrm", "bclrm", 16, 1711214571Sdim { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1712214571Sdim }, 1713214571Sdim/* bnotm ($rma),$uimm3 */ 1714214571Sdim { 1715214571Sdim MEP_INSN_BNOTM, "bnotm", "bnotm", 16, 1716214571Sdim { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1717214571Sdim }, 1718214571Sdim/* btstm \$0,($rma),$uimm3 */ 1719214571Sdim { 1720214571Sdim MEP_INSN_BTSTM, "btstm", "btstm", 16, 1721214571Sdim { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1722214571Sdim }, 1723214571Sdim/* tas $rn,($rma) */ 1724214571Sdim { 1725214571Sdim MEP_INSN_TAS, "tas", "tas", 16, 1726214571Sdim { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1727214571Sdim }, 1728214571Sdim/* cache $cimm4,($rma) */ 1729214571Sdim { 1730214571Sdim MEP_INSN_CACHE, "cache", "cache", 16, 1731214571Sdim { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1732214571Sdim }, 1733214571Sdim/* mul $rn,$rm */ 1734214571Sdim { 1735214571Sdim MEP_INSN_MUL, "mul", "mul", 16, 1736214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1737214571Sdim }, 1738214571Sdim/* mulu $rn,$rm */ 1739214571Sdim { 1740214571Sdim MEP_INSN_MULU, "mulu", "mulu", 16, 1741214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1742214571Sdim }, 1743214571Sdim/* mulr $rn,$rm */ 1744214571Sdim { 1745214571Sdim MEP_INSN_MULR, "mulr", "mulr", 16, 1746214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } } 1747214571Sdim }, 1748214571Sdim/* mulru $rn,$rm */ 1749214571Sdim { 1750214571Sdim MEP_INSN_MULRU, "mulru", "mulru", 16, 1751214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } } 1752214571Sdim }, 1753214571Sdim/* madd $rn,$rm */ 1754214571Sdim { 1755214571Sdim MEP_INSN_MADD, "madd", "madd", 32, 1756214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1757214571Sdim }, 1758214571Sdim/* maddu $rn,$rm */ 1759214571Sdim { 1760214571Sdim MEP_INSN_MADDU, "maddu", "maddu", 32, 1761214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1762214571Sdim }, 1763214571Sdim/* maddr $rn,$rm */ 1764214571Sdim { 1765214571Sdim MEP_INSN_MADDR, "maddr", "maddr", 32, 1766214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } } 1767214571Sdim }, 1768214571Sdim/* maddru $rn,$rm */ 1769214571Sdim { 1770214571Sdim MEP_INSN_MADDRU, "maddru", "maddru", 32, 1771214571Sdim { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } } 1772214571Sdim }, 1773214571Sdim/* div $rn,$rm */ 1774214571Sdim { 1775214571Sdim MEP_INSN_DIV, "div", "div", 16, 1776214571Sdim { 0|A(MAY_TRAP)|A(OPTIONAL_DIV_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 34, 0 } }, { { CONFIG_NONE, 0 } } } } 1777214571Sdim }, 1778214571Sdim/* divu $rn,$rm */ 1779214571Sdim { 1780214571Sdim MEP_INSN_DIVU, "divu", "divu", 16, 1781214571Sdim { 0|A(MAY_TRAP)|A(OPTIONAL_DIV_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 34, 0 } }, { { CONFIG_NONE, 0 } } } } 1782214571Sdim }, 1783214571Sdim/* dret */ 1784214571Sdim { 1785214571Sdim MEP_INSN_DRET, "dret", "dret", 16, 1786214571Sdim { 0|A(OPTIONAL_DEBUG_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1787214571Sdim }, 1788214571Sdim/* dbreak */ 1789214571Sdim { 1790214571Sdim MEP_INSN_DBREAK, "dbreak", "dbreak", 16, 1791214571Sdim { 0|A(VOLATILE)|A(MAY_TRAP)|A(OPTIONAL_DEBUG_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1792214571Sdim }, 1793214571Sdim/* ldz $rn,$rm */ 1794214571Sdim { 1795214571Sdim MEP_INSN_LDZ, "ldz", "ldz", 32, 1796214571Sdim { 0|A(OPTIONAL_LDZ_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1797214571Sdim }, 1798214571Sdim/* abs $rn,$rm */ 1799214571Sdim { 1800214571Sdim MEP_INSN_ABS, "abs", "abs", 32, 1801214571Sdim { 0|A(OPTIONAL_ABS_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1802214571Sdim }, 1803214571Sdim/* ave $rn,$rm */ 1804214571Sdim { 1805214571Sdim MEP_INSN_AVE, "ave", "ave", 32, 1806214571Sdim { 0|A(OPTIONAL_AVE_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1807214571Sdim }, 1808214571Sdim/* min $rn,$rm */ 1809214571Sdim { 1810214571Sdim MEP_INSN_MIN, "min", "min", 32, 1811214571Sdim { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1812214571Sdim }, 1813214571Sdim/* max $rn,$rm */ 1814214571Sdim { 1815214571Sdim MEP_INSN_MAX, "max", "max", 32, 1816214571Sdim { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1817214571Sdim }, 1818214571Sdim/* minu $rn,$rm */ 1819214571Sdim { 1820214571Sdim MEP_INSN_MINU, "minu", "minu", 32, 1821214571Sdim { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1822214571Sdim }, 1823214571Sdim/* maxu $rn,$rm */ 1824214571Sdim { 1825214571Sdim MEP_INSN_MAXU, "maxu", "maxu", 32, 1826214571Sdim { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1827214571Sdim }, 1828214571Sdim/* clip $rn,$cimm5 */ 1829214571Sdim { 1830214571Sdim MEP_INSN_CLIP, "clip", "clip", 32, 1831214571Sdim { 0|A(OPTIONAL_CLIP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1832214571Sdim }, 1833214571Sdim/* clipu $rn,$cimm5 */ 1834214571Sdim { 1835214571Sdim MEP_INSN_CLIPU, "clipu", "clipu", 32, 1836214571Sdim { 0|A(OPTIONAL_CLIP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1837214571Sdim }, 1838214571Sdim/* sadd $rn,$rm */ 1839214571Sdim { 1840214571Sdim MEP_INSN_SADD, "sadd", "sadd", 32, 1841214571Sdim { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1842214571Sdim }, 1843214571Sdim/* ssub $rn,$rm */ 1844214571Sdim { 1845214571Sdim MEP_INSN_SSUB, "ssub", "ssub", 32, 1846214571Sdim { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1847214571Sdim }, 1848214571Sdim/* saddu $rn,$rm */ 1849214571Sdim { 1850214571Sdim MEP_INSN_SADDU, "saddu", "saddu", 32, 1851214571Sdim { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1852214571Sdim }, 1853214571Sdim/* ssubu $rn,$rm */ 1854214571Sdim { 1855214571Sdim MEP_INSN_SSUBU, "ssubu", "ssubu", 32, 1856214571Sdim { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1857214571Sdim }, 1858214571Sdim/* swcp $crn,($rma) */ 1859214571Sdim { 1860214571Sdim MEP_INSN_SWCP, "swcp", "swcp", 16, 1861214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1862214571Sdim }, 1863214571Sdim/* lwcp $crn,($rma) */ 1864214571Sdim { 1865214571Sdim MEP_INSN_LWCP, "lwcp", "lwcp", 16, 1866214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1867214571Sdim }, 1868214571Sdim/* smcp $crn64,($rma) */ 1869214571Sdim { 1870214571Sdim MEP_INSN_SMCP, "smcp", "smcp", 16, 1871214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1872214571Sdim }, 1873214571Sdim/* lmcp $crn64,($rma) */ 1874214571Sdim { 1875214571Sdim MEP_INSN_LMCP, "lmcp", "lmcp", 16, 1876214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1877214571Sdim }, 1878214571Sdim/* swcpi $crn,($rma+) */ 1879214571Sdim { 1880214571Sdim MEP_INSN_SWCPI, "swcpi", "swcpi", 16, 1881214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1882214571Sdim }, 1883214571Sdim/* lwcpi $crn,($rma+) */ 1884214571Sdim { 1885214571Sdim MEP_INSN_LWCPI, "lwcpi", "lwcpi", 16, 1886214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1887214571Sdim }, 1888214571Sdim/* smcpi $crn64,($rma+) */ 1889214571Sdim { 1890214571Sdim MEP_INSN_SMCPI, "smcpi", "smcpi", 16, 1891214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1892214571Sdim }, 1893214571Sdim/* lmcpi $crn64,($rma+) */ 1894214571Sdim { 1895214571Sdim MEP_INSN_LMCPI, "lmcpi", "lmcpi", 16, 1896214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1897214571Sdim }, 1898214571Sdim/* swcp $crn,$sdisp16($rma) */ 1899214571Sdim { 1900214571Sdim MEP_INSN_SWCP16, "swcp16", "swcp", 32, 1901214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1902214571Sdim }, 1903214571Sdim/* lwcp $crn,$sdisp16($rma) */ 1904214571Sdim { 1905214571Sdim MEP_INSN_LWCP16, "lwcp16", "lwcp", 32, 1906214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1907214571Sdim }, 1908214571Sdim/* smcp $crn64,$sdisp16($rma) */ 1909214571Sdim { 1910214571Sdim MEP_INSN_SMCP16, "smcp16", "smcp", 32, 1911214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1912214571Sdim }, 1913214571Sdim/* lmcp $crn64,$sdisp16($rma) */ 1914214571Sdim { 1915214571Sdim MEP_INSN_LMCP16, "lmcp16", "lmcp", 32, 1916214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1917214571Sdim }, 1918214571Sdim/* sbcpa $crn,($rma+),$cdisp8 */ 1919214571Sdim { 1920214571Sdim MEP_INSN_SBCPA, "sbcpa", "sbcpa", 32, 1921214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1922214571Sdim }, 1923214571Sdim/* lbcpa $crn,($rma+),$cdisp8 */ 1924214571Sdim { 1925214571Sdim MEP_INSN_LBCPA, "lbcpa", "lbcpa", 32, 1926214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1927214571Sdim }, 1928214571Sdim/* shcpa $crn,($rma+),$cdisp8a2 */ 1929214571Sdim { 1930214571Sdim MEP_INSN_SHCPA, "shcpa", "shcpa", 32, 1931214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1932214571Sdim }, 1933214571Sdim/* lhcpa $crn,($rma+),$cdisp8a2 */ 1934214571Sdim { 1935214571Sdim MEP_INSN_LHCPA, "lhcpa", "lhcpa", 32, 1936214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1937214571Sdim }, 1938214571Sdim/* swcpa $crn,($rma+),$cdisp8a4 */ 1939214571Sdim { 1940214571Sdim MEP_INSN_SWCPA, "swcpa", "swcpa", 32, 1941214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1942214571Sdim }, 1943214571Sdim/* lwcpa $crn,($rma+),$cdisp8a4 */ 1944214571Sdim { 1945214571Sdim MEP_INSN_LWCPA, "lwcpa", "lwcpa", 32, 1946214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1947214571Sdim }, 1948214571Sdim/* smcpa $crn64,($rma+),$cdisp8a8 */ 1949214571Sdim { 1950214571Sdim MEP_INSN_SMCPA, "smcpa", "smcpa", 32, 1951214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1952214571Sdim }, 1953214571Sdim/* lmcpa $crn64,($rma+),$cdisp8a8 */ 1954214571Sdim { 1955214571Sdim MEP_INSN_LMCPA, "lmcpa", "lmcpa", 32, 1956214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1957214571Sdim }, 1958214571Sdim/* sbcpm0 $crn,($rma+),$cdisp8 */ 1959214571Sdim { 1960214571Sdim MEP_INSN_SBCPM0, "sbcpm0", "sbcpm0", 32, 1961214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1962214571Sdim }, 1963214571Sdim/* lbcpm0 $crn,($rma+),$cdisp8 */ 1964214571Sdim { 1965214571Sdim MEP_INSN_LBCPM0, "lbcpm0", "lbcpm0", 32, 1966214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1967214571Sdim }, 1968214571Sdim/* shcpm0 $crn,($rma+),$cdisp8a2 */ 1969214571Sdim { 1970214571Sdim MEP_INSN_SHCPM0, "shcpm0", "shcpm0", 32, 1971214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1972214571Sdim }, 1973214571Sdim/* lhcpm0 $crn,($rma+),$cdisp8a2 */ 1974214571Sdim { 1975214571Sdim MEP_INSN_LHCPM0, "lhcpm0", "lhcpm0", 32, 1976214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1977214571Sdim }, 1978214571Sdim/* swcpm0 $crn,($rma+),$cdisp8a4 */ 1979214571Sdim { 1980214571Sdim MEP_INSN_SWCPM0, "swcpm0", "swcpm0", 32, 1981214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1982214571Sdim }, 1983214571Sdim/* lwcpm0 $crn,($rma+),$cdisp8a4 */ 1984214571Sdim { 1985214571Sdim MEP_INSN_LWCPM0, "lwcpm0", "lwcpm0", 32, 1986214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1987214571Sdim }, 1988214571Sdim/* smcpm0 $crn64,($rma+),$cdisp8a8 */ 1989214571Sdim { 1990214571Sdim MEP_INSN_SMCPM0, "smcpm0", "smcpm0", 32, 1991214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1992214571Sdim }, 1993214571Sdim/* lmcpm0 $crn64,($rma+),$cdisp8a8 */ 1994214571Sdim { 1995214571Sdim MEP_INSN_LMCPM0, "lmcpm0", "lmcpm0", 32, 1996214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 1997214571Sdim }, 1998214571Sdim/* sbcpm1 $crn,($rma+),$cdisp8 */ 1999214571Sdim { 2000214571Sdim MEP_INSN_SBCPM1, "sbcpm1", "sbcpm1", 32, 2001214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2002214571Sdim }, 2003214571Sdim/* lbcpm1 $crn,($rma+),$cdisp8 */ 2004214571Sdim { 2005214571Sdim MEP_INSN_LBCPM1, "lbcpm1", "lbcpm1", 32, 2006214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2007214571Sdim }, 2008214571Sdim/* shcpm1 $crn,($rma+),$cdisp8a2 */ 2009214571Sdim { 2010214571Sdim MEP_INSN_SHCPM1, "shcpm1", "shcpm1", 32, 2011214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2012214571Sdim }, 2013214571Sdim/* lhcpm1 $crn,($rma+),$cdisp8a2 */ 2014214571Sdim { 2015214571Sdim MEP_INSN_LHCPM1, "lhcpm1", "lhcpm1", 32, 2016214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2017214571Sdim }, 2018214571Sdim/* swcpm1 $crn,($rma+),$cdisp8a4 */ 2019214571Sdim { 2020214571Sdim MEP_INSN_SWCPM1, "swcpm1", "swcpm1", 32, 2021214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2022214571Sdim }, 2023214571Sdim/* lwcpm1 $crn,($rma+),$cdisp8a4 */ 2024214571Sdim { 2025214571Sdim MEP_INSN_LWCPM1, "lwcpm1", "lwcpm1", 32, 2026214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2027214571Sdim }, 2028214571Sdim/* smcpm1 $crn64,($rma+),$cdisp8a8 */ 2029214571Sdim { 2030214571Sdim MEP_INSN_SMCPM1, "smcpm1", "smcpm1", 32, 2031214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2032214571Sdim }, 2033214571Sdim/* lmcpm1 $crn64,($rma+),$cdisp8a8 */ 2034214571Sdim { 2035214571Sdim MEP_INSN_LMCPM1, "lmcpm1", "lmcpm1", 32, 2036214571Sdim { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2037214571Sdim }, 2038214571Sdim/* bcpeq $cccc,$pcrel17a2 */ 2039214571Sdim { 2040214571Sdim MEP_INSN_BCPEQ, "bcpeq", "bcpeq", 32, 2041214571Sdim { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2042214571Sdim }, 2043214571Sdim/* bcpne $cccc,$pcrel17a2 */ 2044214571Sdim { 2045214571Sdim MEP_INSN_BCPNE, "bcpne", "bcpne", 32, 2046214571Sdim { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2047214571Sdim }, 2048214571Sdim/* bcpat $cccc,$pcrel17a2 */ 2049214571Sdim { 2050214571Sdim MEP_INSN_BCPAT, "bcpat", "bcpat", 32, 2051214571Sdim { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2052214571Sdim }, 2053214571Sdim/* bcpaf $cccc,$pcrel17a2 */ 2054214571Sdim { 2055214571Sdim MEP_INSN_BCPAF, "bcpaf", "bcpaf", 32, 2056214571Sdim { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2057214571Sdim }, 2058214571Sdim/* synccp */ 2059214571Sdim { 2060214571Sdim MEP_INSN_SYNCCP, "synccp", "synccp", 16, 2061214571Sdim { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2062214571Sdim }, 2063214571Sdim/* jsrv $rm */ 2064214571Sdim { 2065214571Sdim MEP_INSN_JSRV, "jsrv", "jsrv", 16, 2066214571Sdim { 0|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2067214571Sdim }, 2068214571Sdim/* bsrv $pcrel24a2 */ 2069214571Sdim { 2070214571Sdim MEP_INSN_BSRV, "bsrv", "bsrv", 32, 2071214571Sdim { 0|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2072214571Sdim }, 2073214571Sdim/* --unused-- */ 2074214571Sdim { 2075214571Sdim MEP_INSN_SIM_SYSCALL, "sim-syscall", "--unused--", 16, 2076214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2077214571Sdim }, 2078214571Sdim/* --reserved-- */ 2079214571Sdim { 2080214571Sdim MEP_INSN_RI_0, "ri-0", "--reserved--", 16, 2081214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2082214571Sdim }, 2083214571Sdim/* --reserved-- */ 2084214571Sdim { 2085214571Sdim MEP_INSN_RI_1, "ri-1", "--reserved--", 16, 2086214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2087214571Sdim }, 2088214571Sdim/* --reserved-- */ 2089214571Sdim { 2090214571Sdim MEP_INSN_RI_2, "ri-2", "--reserved--", 16, 2091214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2092214571Sdim }, 2093214571Sdim/* --reserved-- */ 2094214571Sdim { 2095214571Sdim MEP_INSN_RI_3, "ri-3", "--reserved--", 16, 2096214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2097214571Sdim }, 2098214571Sdim/* --reserved-- */ 2099214571Sdim { 2100214571Sdim MEP_INSN_RI_4, "ri-4", "--reserved--", 16, 2101214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2102214571Sdim }, 2103214571Sdim/* --reserved-- */ 2104214571Sdim { 2105214571Sdim MEP_INSN_RI_5, "ri-5", "--reserved--", 16, 2106214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2107214571Sdim }, 2108214571Sdim/* --reserved-- */ 2109214571Sdim { 2110214571Sdim MEP_INSN_RI_6, "ri-6", "--reserved--", 16, 2111214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2112214571Sdim }, 2113214571Sdim/* --reserved-- */ 2114214571Sdim { 2115214571Sdim MEP_INSN_RI_7, "ri-7", "--reserved--", 16, 2116214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2117214571Sdim }, 2118214571Sdim/* --reserved-- */ 2119214571Sdim { 2120214571Sdim MEP_INSN_RI_8, "ri-8", "--reserved--", 16, 2121214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2122214571Sdim }, 2123214571Sdim/* --reserved-- */ 2124214571Sdim { 2125214571Sdim MEP_INSN_RI_9, "ri-9", "--reserved--", 16, 2126214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2127214571Sdim }, 2128214571Sdim/* --reserved-- */ 2129214571Sdim { 2130214571Sdim MEP_INSN_RI_10, "ri-10", "--reserved--", 16, 2131214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2132214571Sdim }, 2133214571Sdim/* --reserved-- */ 2134214571Sdim { 2135214571Sdim MEP_INSN_RI_11, "ri-11", "--reserved--", 16, 2136214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2137214571Sdim }, 2138214571Sdim/* --reserved-- */ 2139214571Sdim { 2140214571Sdim MEP_INSN_RI_12, "ri-12", "--reserved--", 16, 2141214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2142214571Sdim }, 2143214571Sdim/* --reserved-- */ 2144214571Sdim { 2145214571Sdim MEP_INSN_RI_13, "ri-13", "--reserved--", 16, 2146214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2147214571Sdim }, 2148214571Sdim/* --reserved-- */ 2149214571Sdim { 2150214571Sdim MEP_INSN_RI_14, "ri-14", "--reserved--", 16, 2151214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2152214571Sdim }, 2153214571Sdim/* --reserved-- */ 2154214571Sdim { 2155214571Sdim MEP_INSN_RI_15, "ri-15", "--reserved--", 16, 2156214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2157214571Sdim }, 2158214571Sdim/* --reserved-- */ 2159214571Sdim { 2160214571Sdim MEP_INSN_RI_17, "ri-17", "--reserved--", 16, 2161214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2162214571Sdim }, 2163214571Sdim/* --reserved-- */ 2164214571Sdim { 2165214571Sdim MEP_INSN_RI_20, "ri-20", "--reserved--", 16, 2166214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2167214571Sdim }, 2168214571Sdim/* --reserved-- */ 2169214571Sdim { 2170214571Sdim MEP_INSN_RI_21, "ri-21", "--reserved--", 16, 2171214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2172214571Sdim }, 2173214571Sdim/* --reserved-- */ 2174214571Sdim { 2175214571Sdim MEP_INSN_RI_22, "ri-22", "--reserved--", 16, 2176214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2177214571Sdim }, 2178214571Sdim/* --reserved-- */ 2179214571Sdim { 2180214571Sdim MEP_INSN_RI_23, "ri-23", "--reserved--", 16, 2181214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2182214571Sdim }, 2183214571Sdim/* --reserved-- */ 2184214571Sdim { 2185214571Sdim MEP_INSN_RI_24, "ri-24", "--reserved--", 16, 2186214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2187214571Sdim }, 2188214571Sdim/* --reserved-- */ 2189214571Sdim { 2190214571Sdim MEP_INSN_RI_25, "ri-25", "--reserved--", 16, 2191214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2192214571Sdim }, 2193214571Sdim/* --reserved-- */ 2194214571Sdim { 2195214571Sdim MEP_INSN_RI_26, "ri-26", "--reserved--", 16, 2196214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2197214571Sdim }, 2198214571Sdim/* --reserved-- */ 2199214571Sdim { 2200214571Sdim MEP_INSN_RI_16, "ri-16", "--reserved--", 16, 2201214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2202214571Sdim }, 2203214571Sdim/* --reserved-- */ 2204214571Sdim { 2205214571Sdim MEP_INSN_RI_18, "ri-18", "--reserved--", 16, 2206214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2207214571Sdim }, 2208214571Sdim/* --reserved-- */ 2209214571Sdim { 2210214571Sdim MEP_INSN_RI_19, "ri-19", "--reserved--", 16, 2211214571Sdim { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xe0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2212214571Sdim }, 2213214571Sdim/* fadds ${fmax-FRd},${fmax-FRn},${fmax-FRm} */ 2214214571Sdim { 2215214571Sdim MEP_INSN_FADDS, "fadds", "fadds", 32, 2216214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2217214571Sdim }, 2218214571Sdim/* fsubs ${fmax-FRd},${fmax-FRn},${fmax-FRm} */ 2219214571Sdim { 2220214571Sdim MEP_INSN_FSUBS, "fsubs", "fsubs", 32, 2221214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2222214571Sdim }, 2223214571Sdim/* fmuls ${fmax-FRd},${fmax-FRn},${fmax-FRm} */ 2224214571Sdim { 2225214571Sdim MEP_INSN_FMULS, "fmuls", "fmuls", 32, 2226214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2227214571Sdim }, 2228214571Sdim/* fdivs ${fmax-FRd},${fmax-FRn},${fmax-FRm} */ 2229214571Sdim { 2230214571Sdim MEP_INSN_FDIVS, "fdivs", "fdivs", 32, 2231214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2232214571Sdim }, 2233214571Sdim/* fsqrts ${fmax-FRd},${fmax-FRn} */ 2234214571Sdim { 2235214571Sdim MEP_INSN_FSQRTS, "fsqrts", "fsqrts", 32, 2236214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2237214571Sdim }, 2238214571Sdim/* fabss ${fmax-FRd},${fmax-FRn} */ 2239214571Sdim { 2240214571Sdim MEP_INSN_FABSS, "fabss", "fabss", 32, 2241214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2242214571Sdim }, 2243214571Sdim/* fnegs ${fmax-FRd},${fmax-FRn} */ 2244214571Sdim { 2245214571Sdim MEP_INSN_FNEGS, "fnegs", "fnegs", 32, 2246214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2247214571Sdim }, 2248214571Sdim/* fmovs ${fmax-FRd},${fmax-FRn} */ 2249214571Sdim { 2250214571Sdim MEP_INSN_FMOVS, "fmovs", "fmovs", 32, 2251214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2252214571Sdim }, 2253214571Sdim/* froundws ${fmax-FRd-int},${fmax-FRn} */ 2254214571Sdim { 2255214571Sdim MEP_INSN_FROUNDWS, "froundws", "froundws", 32, 2256214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2257214571Sdim }, 2258214571Sdim/* ftruncws ${fmax-FRd-int},${fmax-FRn} */ 2259214571Sdim { 2260214571Sdim MEP_INSN_FTRUNCWS, "ftruncws", "ftruncws", 32, 2261214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2262214571Sdim }, 2263214571Sdim/* fceilws ${fmax-FRd-int},${fmax-FRn} */ 2264214571Sdim { 2265214571Sdim MEP_INSN_FCEILWS, "fceilws", "fceilws", 32, 2266214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2267214571Sdim }, 2268214571Sdim/* ffloorws ${fmax-FRd-int},${fmax-FRn} */ 2269214571Sdim { 2270214571Sdim MEP_INSN_FFLOORWS, "ffloorws", "ffloorws", 32, 2271214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2272214571Sdim }, 2273214571Sdim/* fcvtws ${fmax-FRd-int},${fmax-FRn} */ 2274214571Sdim { 2275214571Sdim MEP_INSN_FCVTWS, "fcvtws", "fcvtws", 32, 2276214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2277214571Sdim }, 2278214571Sdim/* fcvtsw ${fmax-FRd},${fmax-FRn-int} */ 2279214571Sdim { 2280214571Sdim MEP_INSN_FCVTSW, "fcvtsw", "fcvtsw", 32, 2281214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2282214571Sdim }, 2283214571Sdim/* fcmpfs ${fmax-FRn},${fmax-FRm} */ 2284214571Sdim { 2285214571Sdim MEP_INSN_FCMPFS, "fcmpfs", "fcmpfs", 32, 2286214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2287214571Sdim }, 2288214571Sdim/* fcmpus ${fmax-FRn},${fmax-FRm} */ 2289214571Sdim { 2290214571Sdim MEP_INSN_FCMPUS, "fcmpus", "fcmpus", 32, 2291214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2292214571Sdim }, 2293214571Sdim/* fcmpes ${fmax-FRn},${fmax-FRm} */ 2294214571Sdim { 2295214571Sdim MEP_INSN_FCMPES, "fcmpes", "fcmpes", 32, 2296214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2297214571Sdim }, 2298214571Sdim/* fcmpues ${fmax-FRn},${fmax-FRm} */ 2299214571Sdim { 2300214571Sdim MEP_INSN_FCMPUES, "fcmpues", "fcmpues", 32, 2301214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2302214571Sdim }, 2303214571Sdim/* fcmpls ${fmax-FRn},${fmax-FRm} */ 2304214571Sdim { 2305214571Sdim MEP_INSN_FCMPLS, "fcmpls", "fcmpls", 32, 2306214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2307214571Sdim }, 2308214571Sdim/* fcmpuls ${fmax-FRn},${fmax-FRm} */ 2309214571Sdim { 2310214571Sdim MEP_INSN_FCMPULS, "fcmpuls", "fcmpuls", 32, 2311214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2312214571Sdim }, 2313214571Sdim/* fcmples ${fmax-FRn},${fmax-FRm} */ 2314214571Sdim { 2315214571Sdim MEP_INSN_FCMPLES, "fcmples", "fcmples", 32, 2316214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2317214571Sdim }, 2318214571Sdim/* fcmpules ${fmax-FRn},${fmax-FRm} */ 2319214571Sdim { 2320214571Sdim MEP_INSN_FCMPULES, "fcmpules", "fcmpules", 32, 2321214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2322214571Sdim }, 2323214571Sdim/* fcmpfis ${fmax-FRn},${fmax-FRm} */ 2324214571Sdim { 2325214571Sdim MEP_INSN_FCMPFIS, "fcmpfis", "fcmpfis", 32, 2326214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2327214571Sdim }, 2328214571Sdim/* fcmpuis ${fmax-FRn},${fmax-FRm} */ 2329214571Sdim { 2330214571Sdim MEP_INSN_FCMPUIS, "fcmpuis", "fcmpuis", 32, 2331214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2332214571Sdim }, 2333214571Sdim/* fcmpeis ${fmax-FRn},${fmax-FRm} */ 2334214571Sdim { 2335214571Sdim MEP_INSN_FCMPEIS, "fcmpeis", "fcmpeis", 32, 2336214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2337214571Sdim }, 2338214571Sdim/* fcmpueis ${fmax-FRn},${fmax-FRm} */ 2339214571Sdim { 2340214571Sdim MEP_INSN_FCMPUEIS, "fcmpueis", "fcmpueis", 32, 2341214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2342214571Sdim }, 2343214571Sdim/* fcmplis ${fmax-FRn},${fmax-FRm} */ 2344214571Sdim { 2345214571Sdim MEP_INSN_FCMPLIS, "fcmplis", "fcmplis", 32, 2346214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2347214571Sdim }, 2348214571Sdim/* fcmpulis ${fmax-FRn},${fmax-FRm} */ 2349214571Sdim { 2350214571Sdim MEP_INSN_FCMPULIS, "fcmpulis", "fcmpulis", 32, 2351214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2352214571Sdim }, 2353214571Sdim/* fcmpleis ${fmax-FRn},${fmax-FRm} */ 2354214571Sdim { 2355214571Sdim MEP_INSN_FCMPLEIS, "fcmpleis", "fcmpleis", 32, 2356214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2357214571Sdim }, 2358214571Sdim/* fcmpuleis ${fmax-FRn},${fmax-FRm} */ 2359214571Sdim { 2360214571Sdim MEP_INSN_FCMPULEIS, "fcmpuleis", "fcmpuleis", 32, 2361214571Sdim { 0|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2362214571Sdim }, 2363214571Sdim/* cmov ${fmax-FRd-int},${fmax-Rm} */ 2364214571Sdim { 2365214571Sdim MEP_INSN_CMOV_FRN_RM, "cmov-frn-rm", "cmov", 32, 2366214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2367214571Sdim }, 2368214571Sdim/* cmov ${fmax-Rm},${fmax-FRd-int} */ 2369214571Sdim { 2370214571Sdim MEP_INSN_CMOV_RM_FRN, "cmov-rm-frn", "cmov", 32, 2371214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2372214571Sdim }, 2373214571Sdim/* cmovc ${fmax-CCRn},${fmax-Rm} */ 2374214571Sdim { 2375214571Sdim MEP_INSN_CMOVC_CCRN_RM, "cmovc-ccrn-rm", "cmovc", 32, 2376214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2377214571Sdim }, 2378214571Sdim/* cmovc ${fmax-Rm},${fmax-CCRn} */ 2379214571Sdim { 2380214571Sdim MEP_INSN_CMOVC_RM_CCRN, "cmovc-rm-ccrn", "cmovc", 32, 2381214571Sdim { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x20" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } 2382214571Sdim }, 2383214571Sdim}; 2384214571Sdim 2385214571Sdim#undef OP 2386214571Sdim#undef A 2387214571Sdim 2388214571Sdim/* Initialize anything needed to be done once, before any cpu_open call. */ 2389214571Sdim 2390214571Sdimstatic void 2391214571Sdiminit_tables (void) 2392214571Sdim{ 2393214571Sdim} 2394214571Sdim 2395214571Sdimstatic const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *); 2396214571Sdimstatic void build_hw_table (CGEN_CPU_TABLE *); 2397214571Sdimstatic void build_ifield_table (CGEN_CPU_TABLE *); 2398214571Sdimstatic void build_operand_table (CGEN_CPU_TABLE *); 2399214571Sdimstatic void build_insn_table (CGEN_CPU_TABLE *); 2400214571Sdimstatic void mep_cgen_rebuild_tables (CGEN_CPU_TABLE *); 2401214571Sdim 2402214571Sdim/* Subroutine of mep_cgen_cpu_open to look up a mach via its bfd name. */ 2403214571Sdim 2404214571Sdimstatic const CGEN_MACH * 2405214571Sdimlookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name) 2406214571Sdim{ 2407214571Sdim while (table->name) 2408214571Sdim { 2409214571Sdim if (strcmp (name, table->bfd_name) == 0) 2410214571Sdim return table; 2411214571Sdim ++table; 2412214571Sdim } 2413214571Sdim abort (); 2414214571Sdim} 2415214571Sdim 2416214571Sdim/* Subroutine of mep_cgen_cpu_open to build the hardware table. */ 2417214571Sdim 2418214571Sdimstatic void 2419214571Sdimbuild_hw_table (CGEN_CPU_TABLE *cd) 2420214571Sdim{ 2421214571Sdim int i; 2422214571Sdim int machs = cd->machs; 2423214571Sdim const CGEN_HW_ENTRY *init = & mep_cgen_hw_table[0]; 2424214571Sdim /* MAX_HW is only an upper bound on the number of selected entries. 2425214571Sdim However each entry is indexed by it's enum so there can be holes in 2426214571Sdim the table. */ 2427214571Sdim const CGEN_HW_ENTRY **selected = 2428214571Sdim (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *)); 2429214571Sdim 2430214571Sdim cd->hw_table.init_entries = init; 2431214571Sdim cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY); 2432214571Sdim memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *)); 2433214571Sdim /* ??? For now we just use machs to determine which ones we want. */ 2434214571Sdim for (i = 0; init[i].name != NULL; ++i) 2435214571Sdim if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH) 2436214571Sdim & machs) 2437214571Sdim selected[init[i].type] = &init[i]; 2438214571Sdim cd->hw_table.entries = selected; 2439214571Sdim cd->hw_table.num_entries = MAX_HW; 2440214571Sdim} 2441214571Sdim 2442214571Sdim/* Subroutine of mep_cgen_cpu_open to build the hardware table. */ 2443214571Sdim 2444214571Sdimstatic void 2445214571Sdimbuild_ifield_table (CGEN_CPU_TABLE *cd) 2446214571Sdim{ 2447214571Sdim cd->ifld_table = & mep_cgen_ifld_table[0]; 2448214571Sdim} 2449214571Sdim 2450214571Sdim/* Subroutine of mep_cgen_cpu_open to build the hardware table. */ 2451214571Sdim 2452214571Sdimstatic void 2453214571Sdimbuild_operand_table (CGEN_CPU_TABLE *cd) 2454214571Sdim{ 2455214571Sdim int i; 2456214571Sdim int machs = cd->machs; 2457214571Sdim const CGEN_OPERAND *init = & mep_cgen_operand_table[0]; 2458214571Sdim /* MAX_OPERANDS is only an upper bound on the number of selected entries. 2459214571Sdim However each entry is indexed by it's enum so there can be holes in 2460214571Sdim the table. */ 2461214571Sdim const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected)); 2462214571Sdim 2463214571Sdim cd->operand_table.init_entries = init; 2464214571Sdim cd->operand_table.entry_size = sizeof (CGEN_OPERAND); 2465214571Sdim memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *)); 2466214571Sdim /* ??? For now we just use mach to determine which ones we want. */ 2467214571Sdim for (i = 0; init[i].name != NULL; ++i) 2468214571Sdim if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH) 2469214571Sdim & machs) 2470214571Sdim selected[init[i].type] = &init[i]; 2471214571Sdim cd->operand_table.entries = selected; 2472214571Sdim cd->operand_table.num_entries = MAX_OPERANDS; 2473214571Sdim} 2474214571Sdim 2475214571Sdim/* Subroutine of mep_cgen_cpu_open to build the hardware table. 2476214571Sdim ??? This could leave out insns not supported by the specified mach/isa, 2477214571Sdim but that would cause errors like "foo only supported by bar" to become 2478214571Sdim "unknown insn", so for now we include all insns and require the app to 2479214571Sdim do the checking later. 2480214571Sdim ??? On the other hand, parsing of such insns may require their hardware or 2481214571Sdim operand elements to be in the table [which they mightn't be]. */ 2482214571Sdim 2483214571Sdimstatic void 2484214571Sdimbuild_insn_table (CGEN_CPU_TABLE *cd) 2485214571Sdim{ 2486214571Sdim int i; 2487214571Sdim const CGEN_IBASE *ib = & mep_cgen_insn_table[0]; 2488214571Sdim CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN)); 2489214571Sdim 2490214571Sdim memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN)); 2491214571Sdim for (i = 0; i < MAX_INSNS; ++i) 2492214571Sdim insns[i].base = &ib[i]; 2493214571Sdim cd->insn_table.init_entries = insns; 2494214571Sdim cd->insn_table.entry_size = sizeof (CGEN_IBASE); 2495214571Sdim cd->insn_table.num_init_entries = MAX_INSNS; 2496214571Sdim} 2497214571Sdim 2498214571Sdim/* Subroutine of mep_cgen_cpu_open to rebuild the tables. */ 2499214571Sdim 2500214571Sdimstatic void 2501214571Sdimmep_cgen_rebuild_tables (CGEN_CPU_TABLE *cd) 2502214571Sdim{ 2503214571Sdim int i; 2504214571Sdim CGEN_BITSET *isas = cd->isas; 2505214571Sdim unsigned int machs = cd->machs; 2506214571Sdim 2507214571Sdim cd->int_insn_p = CGEN_INT_INSN_P; 2508214571Sdim 2509214571Sdim /* Data derived from the isa spec. */ 2510214571Sdim#define UNSET (CGEN_SIZE_UNKNOWN + 1) 2511214571Sdim cd->default_insn_bitsize = UNSET; 2512214571Sdim cd->base_insn_bitsize = UNSET; 2513214571Sdim cd->min_insn_bitsize = 65535; /* Some ridiculously big number. */ 2514214571Sdim cd->max_insn_bitsize = 0; 2515214571Sdim for (i = 0; i < MAX_ISAS; ++i) 2516214571Sdim if (cgen_bitset_contains (isas, i)) 2517214571Sdim { 2518214571Sdim const CGEN_ISA *isa = & mep_cgen_isa_table[i]; 2519214571Sdim 2520214571Sdim /* Default insn sizes of all selected isas must be 2521214571Sdim equal or we set the result to 0, meaning "unknown". */ 2522214571Sdim if (cd->default_insn_bitsize == UNSET) 2523214571Sdim cd->default_insn_bitsize = isa->default_insn_bitsize; 2524214571Sdim else if (isa->default_insn_bitsize == cd->default_insn_bitsize) 2525214571Sdim ; /* This is ok. */ 2526214571Sdim else 2527214571Sdim cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN; 2528214571Sdim 2529214571Sdim /* Base insn sizes of all selected isas must be equal 2530214571Sdim or we set the result to 0, meaning "unknown". */ 2531214571Sdim if (cd->base_insn_bitsize == UNSET) 2532214571Sdim cd->base_insn_bitsize = isa->base_insn_bitsize; 2533214571Sdim else if (isa->base_insn_bitsize == cd->base_insn_bitsize) 2534214571Sdim ; /* This is ok. */ 2535214571Sdim else 2536214571Sdim cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN; 2537214571Sdim 2538214571Sdim /* Set min,max insn sizes. */ 2539214571Sdim if (isa->min_insn_bitsize < cd->min_insn_bitsize) 2540214571Sdim cd->min_insn_bitsize = isa->min_insn_bitsize; 2541214571Sdim if (isa->max_insn_bitsize > cd->max_insn_bitsize) 2542214571Sdim cd->max_insn_bitsize = isa->max_insn_bitsize; 2543214571Sdim } 2544214571Sdim 2545214571Sdim /* Data derived from the mach spec. */ 2546214571Sdim for (i = 0; i < MAX_MACHS; ++i) 2547214571Sdim if (((1 << i) & machs) != 0) 2548214571Sdim { 2549214571Sdim const CGEN_MACH *mach = & mep_cgen_mach_table[i]; 2550214571Sdim 2551214571Sdim if (mach->insn_chunk_bitsize != 0) 2552214571Sdim { 2553214571Sdim if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize) 2554214571Sdim { 2555214571Sdim fprintf (stderr, "mep_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n", 2556214571Sdim cd->insn_chunk_bitsize, mach->insn_chunk_bitsize); 2557214571Sdim abort (); 2558214571Sdim } 2559214571Sdim 2560214571Sdim cd->insn_chunk_bitsize = mach->insn_chunk_bitsize; 2561214571Sdim } 2562214571Sdim } 2563214571Sdim 2564214571Sdim /* Determine which hw elements are used by MACH. */ 2565214571Sdim build_hw_table (cd); 2566214571Sdim 2567214571Sdim /* Build the ifield table. */ 2568214571Sdim build_ifield_table (cd); 2569214571Sdim 2570214571Sdim /* Determine which operands are used by MACH/ISA. */ 2571214571Sdim build_operand_table (cd); 2572214571Sdim 2573214571Sdim /* Build the instruction table. */ 2574214571Sdim build_insn_table (cd); 2575214571Sdim} 2576214571Sdim 2577214571Sdim/* Initialize a cpu table and return a descriptor. 2578214571Sdim It's much like opening a file, and must be the first function called. 2579214571Sdim The arguments are a set of (type/value) pairs, terminated with 2580214571Sdim CGEN_CPU_OPEN_END. 2581214571Sdim 2582214571Sdim Currently supported values: 2583214571Sdim CGEN_CPU_OPEN_ISAS: bitmap of values in enum isa_attr 2584214571Sdim CGEN_CPU_OPEN_MACHS: bitmap of values in enum mach_attr 2585214571Sdim CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name 2586214571Sdim CGEN_CPU_OPEN_ENDIAN: specify endian choice 2587214571Sdim CGEN_CPU_OPEN_END: terminates arguments 2588214571Sdim 2589214571Sdim ??? Simultaneous multiple isas might not make sense, but it's not (yet) 2590214571Sdim precluded. 2591214571Sdim 2592214571Sdim ??? We only support ISO C stdargs here, not K&R. 2593214571Sdim Laziness, plus experiment to see if anything requires K&R - eventually 2594214571Sdim K&R will no longer be supported - e.g. GDB is currently trying this. */ 2595214571Sdim 2596214571SdimCGEN_CPU_DESC 2597214571Sdimmep_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...) 2598214571Sdim{ 2599214571Sdim CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE)); 2600214571Sdim static int init_p; 2601214571Sdim CGEN_BITSET *isas = 0; /* 0 = "unspecified" */ 2602214571Sdim unsigned int machs = 0; /* 0 = "unspecified" */ 2603214571Sdim enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN; 2604214571Sdim va_list ap; 2605214571Sdim 2606214571Sdim if (! init_p) 2607214571Sdim { 2608214571Sdim init_tables (); 2609214571Sdim init_p = 1; 2610214571Sdim } 2611214571Sdim 2612214571Sdim memset (cd, 0, sizeof (*cd)); 2613214571Sdim 2614214571Sdim va_start (ap, arg_type); 2615214571Sdim while (arg_type != CGEN_CPU_OPEN_END) 2616214571Sdim { 2617214571Sdim switch (arg_type) 2618214571Sdim { 2619214571Sdim case CGEN_CPU_OPEN_ISAS : 2620214571Sdim isas = va_arg (ap, CGEN_BITSET *); 2621214571Sdim break; 2622214571Sdim case CGEN_CPU_OPEN_MACHS : 2623214571Sdim machs = va_arg (ap, unsigned int); 2624214571Sdim break; 2625214571Sdim case CGEN_CPU_OPEN_BFDMACH : 2626214571Sdim { 2627214571Sdim const char *name = va_arg (ap, const char *); 2628214571Sdim const CGEN_MACH *mach = 2629214571Sdim lookup_mach_via_bfd_name (mep_cgen_mach_table, name); 2630214571Sdim 2631214571Sdim machs |= 1 << mach->num; 2632214571Sdim break; 2633214571Sdim } 2634214571Sdim case CGEN_CPU_OPEN_ENDIAN : 2635214571Sdim endian = va_arg (ap, enum cgen_endian); 2636214571Sdim break; 2637214571Sdim default : 2638214571Sdim fprintf (stderr, "mep_cgen_cpu_open: unsupported argument `%d'\n", 2639214571Sdim arg_type); 2640214571Sdim abort (); /* ??? return NULL? */ 2641214571Sdim } 2642214571Sdim arg_type = va_arg (ap, enum cgen_cpu_open_arg); 2643214571Sdim } 2644214571Sdim va_end (ap); 2645214571Sdim 2646214571Sdim /* Mach unspecified means "all". */ 2647214571Sdim if (machs == 0) 2648214571Sdim machs = (1 << MAX_MACHS) - 1; 2649214571Sdim /* Base mach is always selected. */ 2650214571Sdim machs |= 1; 2651214571Sdim if (endian == CGEN_ENDIAN_UNKNOWN) 2652214571Sdim { 2653214571Sdim /* ??? If target has only one, could have a default. */ 2654214571Sdim fprintf (stderr, "mep_cgen_cpu_open: no endianness specified\n"); 2655214571Sdim abort (); 2656214571Sdim } 2657214571Sdim 2658214571Sdim cd->isas = cgen_bitset_copy (isas); 2659214571Sdim cd->machs = machs; 2660214571Sdim cd->endian = endian; 2661214571Sdim /* FIXME: for the sparc case we can determine insn-endianness statically. 2662214571Sdim The worry here is where both data and insn endian can be independently 2663214571Sdim chosen, in which case this function will need another argument. 2664214571Sdim Actually, will want to allow for more arguments in the future anyway. */ 2665214571Sdim cd->insn_endian = endian; 2666214571Sdim 2667214571Sdim /* Table (re)builder. */ 2668214571Sdim cd->rebuild_tables = mep_cgen_rebuild_tables; 2669214571Sdim mep_cgen_rebuild_tables (cd); 2670214571Sdim 2671214571Sdim /* Default to not allowing signed overflow. */ 2672214571Sdim cd->signed_overflow_ok_p = 0; 2673214571Sdim 2674214571Sdim return (CGEN_CPU_DESC) cd; 2675214571Sdim} 2676214571Sdim 2677214571Sdim/* Cover fn to mep_cgen_cpu_open to handle the simple case of 1 isa, 1 mach. 2678214571Sdim MACH_NAME is the bfd name of the mach. */ 2679214571Sdim 2680214571SdimCGEN_CPU_DESC 2681214571Sdimmep_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian) 2682214571Sdim{ 2683214571Sdim return mep_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name, 2684214571Sdim CGEN_CPU_OPEN_ENDIAN, endian, 2685214571Sdim CGEN_CPU_OPEN_END); 2686214571Sdim} 2687214571Sdim 2688214571Sdim/* Close a cpu table. 2689214571Sdim ??? This can live in a machine independent file, but there's currently 2690214571Sdim no place to put this file (there's no libcgen). libopcodes is the wrong 2691214571Sdim place as some simulator ports use this but they don't use libopcodes. */ 2692214571Sdim 2693214571Sdimvoid 2694214571Sdimmep_cgen_cpu_close (CGEN_CPU_DESC cd) 2695214571Sdim{ 2696214571Sdim unsigned int i; 2697214571Sdim const CGEN_INSN *insns; 2698214571Sdim 2699214571Sdim if (cd->macro_insn_table.init_entries) 2700214571Sdim { 2701214571Sdim insns = cd->macro_insn_table.init_entries; 2702214571Sdim for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns) 2703214571Sdim if (CGEN_INSN_RX ((insns))) 2704214571Sdim regfree (CGEN_INSN_RX (insns)); 2705214571Sdim } 2706214571Sdim 2707214571Sdim if (cd->insn_table.init_entries) 2708214571Sdim { 2709214571Sdim insns = cd->insn_table.init_entries; 2710214571Sdim for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns) 2711214571Sdim if (CGEN_INSN_RX (insns)) 2712214571Sdim regfree (CGEN_INSN_RX (insns)); 2713214571Sdim } 2714214571Sdim 2715214571Sdim if (cd->macro_insn_table.init_entries) 2716214571Sdim free ((CGEN_INSN *) cd->macro_insn_table.init_entries); 2717214571Sdim 2718214571Sdim if (cd->insn_table.init_entries) 2719214571Sdim free ((CGEN_INSN *) cd->insn_table.init_entries); 2720214571Sdim 2721214571Sdim if (cd->hw_table.entries) 2722214571Sdim free ((CGEN_HW_ENTRY *) cd->hw_table.entries); 2723214571Sdim 2724214571Sdim if (cd->operand_table.entries) 2725214571Sdim free ((CGEN_HW_ENTRY *) cd->operand_table.entries); 2726214571Sdim 2727214571Sdim free (cd); 2728214571Sdim} 2729214571Sdim 2730