1/* i860_opcode.h -- Table of opcodes for the i860. 2 Copyright (C) 1989 Free Software Foundation, Inc. 3 4This file is part of GAS, the GNU Assembler. 5 6GAS is free software; you can redistribute it and/or modify 7it under the terms of the GNU General Public License as published by 8the Free Software Foundation; either version 1, or (at your option) 9any later version. 10 11GAS is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16You should have received a copy of the GNU General Public License 17along with GAS; see the file COPYING. If not, write to 18the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ 19 20#include <stdint.h> 21 22/* Assorted opcode bits used to diddle the instruction during operand processing */ 23#define OP_PREFIX_MASK 0xFC000000 24#define PREFIX_FPU 0x48000000 25#define OP_FNOP 0xB0000000 26#define OP_NOP 0xA0000000 27#define DUAL_INSN_MODE_BIT 0x00000200 28 29#define LOGOP_MASK 0xC0000000 30#define IS_LOGOP(x) (((x)&LOGOP_MASK) == LOGOP_MASK) 31 32/* Macros to fill in register fields of insns */ 33#define SET_RS1(op, rval) (op)=(((op) & ~(0x1F << 11)) | ((rval) & 0x1F) << 11) 34#define SET_RS2(op, rval) (op)=(((op) & ~(0x1F << 21)) | ((rval) & 0x1F) << 21) 35#define SET_RD(op, rval) (op)=(((op) & ~(0x1F << 16)) | ((rval) & 0x1F) << 16) 36 37#define GET_RS1(op) (((op) >> 11) & 0x1F) 38#define GET_RS2(op) (((op) >> 21) & 0x1F) 39#define GET_RD(op) (((op) >> 16) & 0x1F) 40 41 42/* 43 * Structure of an opcode table entry. 44 */ 45struct i860_opcode 46{ 47 const char *name; 48 uint32_t mask; /* used only for error checking */ 49 uint32_t match; 50 const char *args; 51 unsigned int last; /* used to simplify hashing */ 52}; 53 54/* 55 All i860 opcodes are 32 bits. 56 57 The match component is a mask saying which bits must match a 58 particular opcode in order for an instruction to be an instance 59 of that opcode. 60 61 The args component is a string containing one character 62 for each operand of the instruction. 63 64Kinds of operands: 65 # Number used by optimizer. It is ignored. 66 1 rs1 register, bits 11-15 of insn. 67 2 rs2 register, bits 21-25 of insn. 68 d rd register, bits 16-20 of insn. 69 e frs1 floating point register, bits 11-15 of insn. 70 f frs2 floating point register, bits 21-25 of insn. 71 g frsd floating point register, bits 16-20 of insn. 72 E Same as e, f, g above, but requires an even reg number. 73 F 74 G 75 H frsd floating point register, quad aligned! (f0, f4, f8....) 76 i 16 bit byte address low half, default of RELOC_LOW0 77 I 16 bit High portion of address, RELOC_HIGH. 78 j 16 bit short address, RELOC_LOW1 79 k 16 bit word/int address low half, RELOC_LOW2 80 l 16 bit 8-byte address (double) low half, RELOC_LOW3 81 m 16 bit 16-byte address (quad) low half, RELOC_LOW4 82 83 n 16 bit byte aligned low half, split fields, RELOC_SPLIT0 84 o 16 bit short aligned low half, split fields, RELOC_SPLIT1 85 p 16 bit int/word aligned low half, split fields, RELOC_SPLIT2 86 87 J 16 bit High portion of address requiring adjustment, RELOC_HIGHADJ 88 K 26 bit branch displacement 89 L 16 bit split branch displacement 90 B 5 bit immediate, for bte and btne insn, RS1 field. 91 D Immediate field constant, no label or reloc data permitted. 92 C Control Register, one of fir, psr, epsr, dirbase, db, or fsr. 93 S Special ops 94 95Literals used and matched in operand list: 96 () Used around indirect register ld and st operations. 97 , Arg separator. 98 */ 99 100/* 101 * The assembler requires that all instances of the same mnemonic must be 102 * consecutive. If they aren't, the assembler will bomb at runtime. 103 */ 104 105static const struct i860_opcode i860_opcodes[] = 106{ 107 108{ "adds", 0xFC000000, 0x90000000, "1,2,d", 0 }, 109{ "adds", 0xFC000000, 0x94000000, "i,2,d", 1 }, 110 111{ "addu", 0xFC000000, 0x80000000, "1,2,d", 0 }, 112{ "addu", 0xFC000000, 0x84000000, "i,2,d", 1 }, 113 114{ "and", 0xFC000000, 0xC0000000, "1,2,d", 0 }, 115{ "and", 0xFC000000, 0xC4000000, "i,2,d", 1 }, 116{ "andh", 0xFC000000, 0xCC000000, "i,2,d", 1 }, 117 118{ "andnot", 0xFC000000, 0xD0000000, "1,2,d", 0 }, 119{ "andnot", 0xFC000000, 0xD4000000, "i,2,d", 1 }, 120{ "andnoth", 0xFC000000, 0xDC000000, "i,2,d", 1 }, 121 122{ "bc", 0xFC000000, 0x70000000, "K", 1 }, 123{ "bc.t", 0xFC000000, 0x74000000, "K", 1 }, 124 125{ "bla", 0xFC000000, 0xB4000000, "1,2,L", 1 }, 126 127{ "bnc", 0xFC000000, 0x78000000, "K", 1 }, 128{ "bnc.t", 0xFC000000, 0x7C000000, "K", 1 }, 129 130{ "br", 0xFC000000, 0x68000000, "K", 1 }, 131 132{ "bri", 0xFC000000, 0x40000000, "1", 1 }, 133 134{ "bte", 0xFC000000, 0x58000000, "1,2,L", 0 }, 135{ "bte", 0xFC000000, 0x5C000000, "B,2,L", 1 }, 136 137{ "btne", 0xFC000000, 0x50000000, "1,2,L", 0 }, 138{ "btne", 0xFC000000, 0x54000000, "B,2,L", 1 }, 139 140{ "call", 0xFC000000, 0x6C000000, "K", 1 }, 141 142{ "calli", 0xFC00001F, 0x4C000002, "1", 1 }, 143 144{ "fadd.dd", 0xFC0007FF, 0x480001B0, "E,F,G", 1 }, 145{ "fadd.sd", 0xFC0007FF, 0x480000B0, "e,f,G", 1 }, 146{ "fadd.ss", 0xFC0007FF, 0x48000030, "e,f,g", 1 }, 147 148{ "faddp", 0xFC0007FF, 0x480001D0, "E,F,G", 1 }, 149 150{ "faddz", 0xFC0007FF, 0x480001D1, "E,F,G", 1 }, 151 152{ "fiadd.dd", 0xFC0007FF, 0x480001C9, "E,F,G", 1 }, 153{ "fiadd.ss", 0xFC0007FF, 0x48000049, "e,f,g", 1 }, 154 155{ "fisub.dd", 0xFC0007FF, 0x480001CD, "E,F,G", 1 }, 156{ "fisub.ss", 0xFC0007FF, 0x4800004D, "e,f,g", 1 }, 157 158{ "fix.dd", 0xFC0007FF, 0x480001B2, "E,G", 1 }, 159{ "fix.sd", 0xFC0007FF, 0x480000B2, "e,G", 1 }, 160/* { "fix.ss", 0xFC0007FF, 0x48000032, "e,g", 1 }, */ /* Not supported by Intel */ 161 162{ "fld.d", 0xFC000007, 0x20000000, "1(2),G", 0 }, 163{ "fld.d", 0xFC000007, 0x20000001, "1(2)++,G", 0 }, 164{ "fld.d", 0xFC000007, 0x24000000, "l(2),G", 0 }, 165{ "fld.d", 0xFC000007, 0x24000001, "l(2)++,G", 1 }, 166{ "fld.l", 0xFC000003, 0x20000002, "1(2),g", 0 }, 167{ "fld.l", 0xFC000003, 0x20000003, "1(2)++,g", 0 }, 168{ "fld.l", 0xFC000003, 0x24000002, "k(2),g", 0 }, 169{ "fld.l", 0xFC000003, 0x24000003, "k(2)++,g", 1 }, 170{ "fld.q", 0xFC000007, 0x20000004, "1(2),H", 0 }, 171{ "fld.q", 0xFC000007, 0x20000005, "1(2)++,H", 0 }, 172{ "fld.q", 0xFC000007, 0x24000004, "m(2),H", 0 }, 173{ "fld.q", 0xFC000007, 0x24000005, "m(2)++,H", 1 }, 174 175{ "flush", 0xFC000007, 0x34000000, "m(2)", 0 }, 176{ "flush", 0xFC000007, 0x34000001, "m(2)++", 1 }, 177 178{ "fmlow.dd", 0xFC0007FF, 0x480001A1, "E,F,G", 1 }, 179/* { "fmlow.sd", 0xFC0007FF, 0x480000A1, "e,f,g", 1 }, */ /* Not supported... */ 180/* { "fmlow.ss", 0xFC0007FF, 0x48000021, "e,f,g", 1 }, */ 181 182{ "fmov.dd", 0xFFE007FF, 0x480001C9, "E,G", 1 }, 183{ "fmov.ds", 0xFFE007FF, 0x48000133, "E,g", 1 }, /* Update B.0 4.0 errata */ 184{ "famov.ds", 0xFFE007FF, 0x48000133, "E,g", 1 }, /* B.0 insn */ 185{ "fmov.sd", 0xFFE007FF, 0x480000B3, "e,G", 1 }, /* Update B.0 4.0 errata */ 186{ "famov.sd", 0xFFE007FF, 0x480000B3, "e,G", 1 }, /* B.0 insn */ 187{ "famov.ss", 0xFFE007FF, 0x48000033, "e,g", 1 }, /* B.0 insn */ 188{ "famov.dd", 0xFFE007FF, 0x480001B3, "E,G", 1 }, /* B.0 insn */ 189{ "fmov.ss", 0xFFE007FF, 0x48000049, "e,g", 1 }, 190 191{ "fmul.dd", 0xFC0007FF, 0x480001A0, "E,F,G", 1 }, 192{ "fmul.sd", 0xFC0007FF, 0x480000A0, "e,f,G", 1 }, 193{ "fmul.ss", 0xFC0007FF, 0x48000020, "e,f,g", 1 }, 194 195{ "fnop", 0xFFFFFFFF, 0xB0000000, "", 1 }, 196 197{ "form", 0xFC0007FF, 0x480001DA, "E,G", 1 }, 198 199{ "frcp.dd", 0xFC0007FF, 0x480001A2, "F,G", 1 }, 200{ "frcp.sd", 0xFC0007FF, 0x480000A2, "f,G", 1 }, 201{ "frcp.ss", 0xFC0007FF, 0x48000022, "f,g", 1 }, 202 203{ "frsqr.dd", 0xFC0007FF, 0x480001A3, "F,G", 1 }, 204{ "frsqr.sd", 0xFC0007FF, 0x480000A3, "f,G", 1 }, 205{ "frsqr.ss", 0xFC0007FF, 0x48000023, "f,g", 1 }, 206 207{ "fst.d", 0xFC000007, 0x28000000, "G,1(2)", 0 }, 208{ "fst.d", 0xFC000007, 0x28000001, "G,1(2)++", 0 }, 209{ "fst.d", 0xFC000007, 0x2C000000, "G,l(2)", 0 }, 210{ "fst.d", 0xFC000007, 0x2C000001, "G,l(2)++", 1 }, 211{ "fst.l", 0xFC000003, 0x28000002, "g,1(2)", 0 }, 212{ "fst.l", 0xFC000003, 0x28000003, "g,1(2)++", 0 }, 213{ "fst.l", 0xFC000003, 0x2C000002, "g,k(2)", 0 }, 214{ "fst.l", 0xFC000003, 0x2C000003, "g,k(2)++", 1 }, 215{ "fst.q", 0xFC000007, 0x28000004, "H,1(2)", 0 }, 216{ "fst.q", 0xFC000007, 0x28000005, "H,1(2)++", 0 }, 217{ "fst.q", 0xFC000007, 0x2C000004, "H,m(2)", 0 }, 218{ "fst.q", 0xFC000007, 0x2C000005, "H,m(2)++", 1 }, 219 220{ "fsub.dd", 0xFC0007FF, 0x480001B1, "E,F,G", 1 }, 221{ "fsub.sd", 0xFC0007FF, 0x480000B1, "e,f,G", 1 }, 222{ "fsub.ss", 0xFC0007FF, 0x48000031, "e,f,g", 1 }, 223 224{ "ftrunc.dd", 0xFC0007FF, 0x480001BA, "E,G", 1 }, 225{ "ftrunc.sd", 0xFC0007FF, 0x480000BA, "e,G", 1 }, 226/* { "ftrunc.ss", 0xFC0007FF, 0x4800003A, "e,g", 1 }, */ /* Not supported... */ 227 228{ "fxfr", 0xFC0007FF, 0x48000040, "e,d", 1 }, 229 230{ "fzchkl", 0xFC0007FF, 0x480001D7, "E,F,G", 1 }, 231 232{ "fzchks", 0xFC0007FF, 0x480001DF, "E,F,G", 1 }, 233 234{ "intovr", 0xFC00001F, 0x4C000004, "", 1 }, 235 236{ "ixfr", 0xFC000000, 0x08000000, "1,g", 1 }, 237 238{ "ld.b", 0xFC000000, 0x00000000, "1(2),d", 0 }, 239{ "ld.b", 0xFC000000, 0x04000000, "i(2),d", 1 }, 240{ "ld.c", 0xFC000000, 0x30000000, "C,d", 1 }, 241{ "ld.l", 0xFC000001, 0x10000001, "1(2),d", 0 }, 242{ "ld.l", 0xFC000001, 0x14000001, "k(2),d", 1 }, 243{ "ld.s", 0xFC000001, 0x10000000, "1(2),d", 0 }, 244{ "ld.s", 0xFC000001, 0x14000000, "j(2),d", 1 }, 245 246{ "lock", 0xFC00001F, 0x4C000001, "", 1 }, 247 248{ "nop", 0xFFFFFFFF, 0xA0000000, "", 1 }, 249 250{ "mov", 0xFC00F800, 0xA0000000, "2,d", 1 }, 251 252{ "or", 0xFC000000, 0xE0000000, "1,2,d", 0 }, 253{ "or", 0xFC000000, 0xE4000000, "i,2,d", 1 }, 254{ "orh", 0xFC000000, 0xEC000000, "i,2,d", 1 }, 255 256{ "pfadd.dd", 0xFC0007FF, 0x480005B0, "E,F,G", 1 }, 257{ "pfadd.sd", 0xFC0007FF, 0x480004B0, "e,f,G", 1 }, 258{ "pfadd.ss", 0xFC0007FF, 0x48000430, "e,f,g", 1 }, 259 260{ "pfaddp", 0xFC0007FF, 0x480005D0, "E,F,G", 1 }, 261 262{ "pfaddz", 0xFC0007FF, 0x480005D1, "E,F,G", 1 }, 263 264{ "pfeq.dd", 0xFC0007FF, 0x48000535, "E,F,G", 1 }, 265{ "pfeq.ss", 0xFC0007FF, 0x48000435, "e,f,g", 1 }, 266{ "pfeq.sd", 0xFC0007FF, 0x48000435, "e,f,G", 1 }, 267 268{ "pfgt.dd", 0xFC0007FF, 0x48000534, "E,F,G", 1 }, 269{ "pfgt.ss", 0xFC0007FF, 0x48000434, "e,f,g", 1 }, 270{ "pfgt.sd", 0xFC0007FF, 0x48000434, "e,f,G", 1 }, 271 272{ "pfiadd.dd", 0xFC0007FF, 0x480005C9, "E,F,G", 1 }, 273{ "pfiadd.ss", 0xFC0007FF, 0x48000449, "e,f,g", 1 }, 274 275{ "pfisub.dd", 0xFC0007FF, 0x480005CD, "E,F,G", 1 }, 276{ "pfisub.ss", 0xFC0007FF, 0x4800044D, "e,f,g", 1 }, 277 278{ "pfix.dd", 0xFC0007FF, 0x480005B2, "E,G", 1 }, 279{ "pfix.sd", 0xFC0007FF, 0x480004B2, "e,G", 1 }, 280/* { "pfix.ss", 0xFC0007FF, 0x48000432, "e,g", 1 }, */ /* Not supported... */ 281 282{ "pfld.d", 0xFC000007, 0x60000000, "1(2),G", 0 }, 283{ "pfld.d", 0xFC000007, 0x60000001, "1(2)++,G", 0 }, 284{ "pfld.d", 0xFC000007, 0x64000000, "l(2),G", 0 }, 285{ "pfld.d", 0xFC000007, 0x64000001, "l(2)++,G", 1 }, 286{ "pfld.l", 0xFC000003, 0x60000002, "1(2),g", 0 }, 287{ "pfld.l", 0xFC000003, 0x60000003, "1(2)++,g", 0 }, 288{ "pfld.l", 0xFC000003, 0x64000002, "k(2),g", 0 }, 289{ "pfld.l", 0xFC000003, 0x64000003, "k(2)++,g", 1 }, 290 291{ "pfle.dd", 0xFC0007FF, 0x480005b4, "E,F,G", 1 }, 292{ "pfle.sd", 0xFC0007FF, 0x480004b4, "e,f,G", 1 }, 293{ "pfle.ss", 0xFC0007FF, 0x480004b4, "e,f,g", 1 }, 294 295{ "pfmov.dd", 0xFFE007FF, 0x480005C9, "E,G", 1 }, 296{ "pfmov.ds", 0xFFE007FF, 0x48000533, "E,g", 1 }, /* Update B.0 4.0 errata */ 297{ "pfamov.ds", 0xFFE007FF, 0x48000533, "E,g", 1 }, /* B.0 insn */ 298{ "pfmov.sd", 0xFFE007FF, 0x480004B3, "e,G", 1 }, /* Update B.0 4.0 errata */ 299{ "pfamov.sd", 0xFFE007FF, 0x480004B3, "e,G", 1 }, /* B.0 insn */ 300{ "pfamov.ss", 0xFFE007FF, 0x48000433, "e,g", 1 }, /* B.0 insn */ 301{ "pfamov.dd", 0xFFE007FF, 0x480005B3, "E,G", 1 }, /* B.0 insn */ 302{ "pfmov.ss", 0xFFE007FF, 0x48000449, "e,g", 1 }, 303 304{ "pfmul.dd", 0xFC0007FF, 0x480005A0, "E,F,G", 1 }, 305{ "pfmul.sd", 0xFC0007FF, 0x480004A0, "e,f,G", 1 }, 306{ "pfmul.ss", 0xFC0007FF, 0x48000420, "e,f,g", 1 }, 307 308{ "pfmul3.dd", 0xFC0007FF, 0x480005A4, "E,F,G", 1 }, 309/* { "pfmul3.sd", 0xFC0007FF, 0x480004A4, "e,f,g", 1 }, */ /* Not supported... */ 310/* { "pfmul3.ss", 0xFC0007FF, 0x48000424, "e,f,g", 1 }, */ 311 312{ "pform", 0xFC0007FF, 0x480005DA, "E,G", 1 }, 313 314{ "pfsub.dd", 0xFC0007FF, 0x480005B1, "E,F,G", 1 }, 315{ "pfsub.sd", 0xFC0007FF, 0x480004B1, "e,f,G", 1 }, 316{ "pfsub.ss", 0xFC0007FF, 0x48000431, "e,f,g", 1 }, 317 318{ "pftrunc.dd", 0xFC0007FF, 0x480005BA, "E,G", 1 }, 319{ "pftrunc.sd", 0xFC0007FF, 0x480004BA, "e,G", 1 }, 320/* { "pftrunc.ss", 0xFC0007FF, 0x4800043A, "e,g", 1 }, */ /* Not supported... */ 321 322{ "pfzchkl", 0xFC0007FF, 0x480005D7, "E,F,G", 1 }, 323 324{ "pfzchks", 0xFC0007FF, 0x480005DF, "E,F,G", 1 }, 325 326{ "pst.d", 0xFC000007, 0x3C000000, "G,l(2)", 0 }, 327{ "pst.d", 0xFC000007, 0x3C000001, "G,l(2)++", 1 }, 328 329{ "shl", 0xFC000000, 0xA0000000, "1,2,d", 0 }, 330{ "shl", 0xFC000000, 0xA4000000, "D,2,d", 1 }, 331 332{ "shr", 0xFC000000, 0xA8000000, "1,2,d", 0 }, 333{ "shr", 0xFC000000, 0xAC000000, "D,2,d", 1 }, 334{ "shra", 0xFC000000, 0xB8000000, "1,2,d", 0 }, 335{ "shra", 0xFC000000, 0xBC000000, "D,2,d", 1 }, 336{ "shrd", 0xFC000000, 0xB0000000, "1,2,d", 1 }, 337 338{ "st.b", 0xFC000000, 0x0C000000, "1,n(2)", 1 }, 339{ "st.c", 0xFC000000, 0x38000000, "1,C", 1 }, 340{ "st.l", 0xFC000001, 0x1C000001, "1,p(2)", 1 }, 341{ "st.s", 0xFC000001, 0x1C000000, "1,o(2)", 1 }, 342 343{ "subs", 0xFC000000, 0x98000000, "1,2,d", 0 }, 344{ "subs", 0xFC000000, 0x9C000000, "i,2,d", 1 }, 345{ "subu", 0xFC000000, 0x88000000, "1,2,d", 0 }, 346{ "subu", 0xFC000000, 0x8C000000, "i,2,d", 1 }, 347 348{ "trap", 0xFC000000, 0x44000000, "1,2,d", 1 }, 349 350{ "unlock", 0xFC00001F, 0x4C000007, "", 1 }, 351 352{ "xor", 0xFC000000, 0xF0000000, "1,2,d", 0 }, 353{ "xor", 0xFC000000, 0xF4000000, "i,2,d", 1 }, 354{ "xorh", 0xFC000000, 0xFC000000, "i,2,d", 1 }, 355 356 357/* 358 * Pipelined Accumulate/Multiply Operators 359 * 360 * Abandon all hope, ye who enter here... 361 * 362 * PFAM operators. There are 48 of these horrors. Don't ask.... 363 */ 364{ "r2p1.dd", 0xFC0007FF, 0x48000580, "E,F,G", 1 }, 365{ "r2pt.dd", 0xFC0007FF, 0x48000581, "E,F,G", 1 }, 366{ "r2ap1.dd", 0xFC0007FF, 0x48000582, "E,F,G", 1 }, 367{ "r2apt.dd", 0xFC0007FF, 0x48000583, "E,F,G", 1 }, 368{ "i2p1.dd", 0xFC0007FF, 0x48000584, "E,F,G", 1 }, 369{ "i2pt.dd", 0xFC0007FF, 0x48000585, "E,F,G", 1 }, 370{ "i2ap1.dd", 0xFC0007FF, 0x48000586, "E,F,G", 1 }, 371{ "i2apt.dd", 0xFC0007FF, 0x48000587, "E,F,G", 1 }, 372{ "rat1p2.dd", 0xFC0007FF, 0x48000588, "E,F,G", 1 }, 373{ "m12apm.dd", 0xFC0007FF, 0x48000589, "E,F,G", 1 }, 374{ "ra1p2.dd", 0xFC0007FF, 0x4800058A, "E,F,G", 1 }, 375{ "m12ttpa.dd", 0xFC0007FF, 0x4800058B, "E,F,G", 1 }, 376{ "iat1p2.dd", 0xFC0007FF, 0x4800058C, "E,F,G", 1 }, 377{ "m12tpm.dd", 0xFC0007FF, 0x4800058D, "E,F,G", 1 }, 378{ "ia1p2.dd", 0xFC0007FF, 0x4800058E, "E,F,G", 1 }, 379{ "m12tpa.dd", 0xFC0007FF, 0x4800058F, "E,F,G", 1 }, 380 381{ "r2p1.sd", 0xFC0007FF, 0x48000480, "e,f,G", 1 }, 382{ "r2pt.sd", 0xFC0007FF, 0x48000481, "e,f,G", 1 }, 383{ "r2ap1.sd", 0xFC0007FF, 0x48000482, "e,f,G", 1 }, 384{ "r2apt.sd", 0xFC0007FF, 0x48000483, "e,f,G", 1 }, 385{ "i2p1.sd", 0xFC0007FF, 0x48000484, "e,f,G", 1 }, 386{ "i2pt.sd", 0xFC0007FF, 0x48000485, "e,f,G", 1 }, 387{ "i2ap1.sd", 0xFC0007FF, 0x48000486, "e,f,G", 1 }, 388{ "i2apt.sd", 0xFC0007FF, 0x48000487, "e,f,G", 1 }, 389{ "rat1p2.sd", 0xFC0007FF, 0x48000488, "e,f,G", 1 }, 390{ "m12apm.sd", 0xFC0007FF, 0x48000489, "e,f,G", 1 }, 391{ "ra1p2.sd", 0xFC0007FF, 0x4800048A, "e,f,G", 1 }, 392{ "m12ttpa.sd", 0xFC0007FF, 0x4800048B, "e,f,G", 1 }, 393{ "iat1p2.sd", 0xFC0007FF, 0x4800048C, "e,f,G", 1 }, 394{ "m12tpm.sd", 0xFC0007FF, 0x4800048D, "e,f,G", 1 }, 395{ "ia1p2.sd", 0xFC0007FF, 0x4800048E, "e,f,G", 1 }, 396{ "m12tpa.sd", 0xFC0007FF, 0x4800048F, "e,f,G", 1 }, 397 398{ "r2p1.ss", 0xFC0007FF, 0x48000400, "e,f,g", 1 }, 399{ "r2pt.ss", 0xFC0007FF, 0x48000401, "e,f,g", 1 }, 400{ "r2ap1.ss", 0xFC0007FF, 0x48000402, "e,f,g", 1 }, 401{ "r2apt.ss", 0xFC0007FF, 0x48000403, "e,f,g", 1 }, 402{ "i2p1.ss", 0xFC0007FF, 0x48000404, "e,f,g", 1 }, 403{ "i2pt.ss", 0xFC0007FF, 0x48000405, "e,f,g", 1 }, 404{ "i2ap1.ss", 0xFC0007FF, 0x48000406, "e,f,g", 1 }, 405{ "i2apt.ss", 0xFC0007FF, 0x48000407, "e,f,g", 1 }, 406{ "rat1p2.ss", 0xFC0007FF, 0x48000408, "e,f,g", 1 }, 407{ "m12apm.ss", 0xFC0007FF, 0x48000409, "e,f,g", 1 }, 408{ "ra1p2.ss", 0xFC0007FF, 0x4800040A, "e,f,g", 1 }, 409{ "m12ttpa.ss", 0xFC0007FF, 0x4800040B, "e,f,g", 1 }, 410{ "iat1p2.ss", 0xFC0007FF, 0x4800040C, "e,f,g", 1 }, 411{ "m12tpm.ss", 0xFC0007FF, 0x4800040D, "e,f,g", 1 }, 412{ "ia1p2.ss", 0xFC0007FF, 0x4800040E, "e,f,g", 1 }, 413{ "m12tpa.ss", 0xFC0007FF, 0x4800040F, "e,f,g", 1 }, 414 415/* 416 * PFMAM operators. There are 48 of these. 417 */ 418{ "mr2p1.dd", 0xFC0007FF, 0x48000180, "E,F,G", 1 }, 419{ "mr2pt.dd", 0xFC0007FF, 0x48000181, "E,F,G", 1 }, 420{ "mr2mp1.dd", 0xFC0007FF, 0x48000182, "E,F,G", 1 }, 421{ "mr2mpt.dd", 0xFC0007FF, 0x48000183, "E,F,G", 1 }, 422{ "mi2p1.dd", 0xFC0007FF, 0x48000184, "E,F,G", 1 }, 423{ "mi2pt.dd", 0xFC0007FF, 0x48000185, "E,F,G", 1 }, 424{ "mi2mp1.dd", 0xFC0007FF, 0x48000186, "E,F,G", 1 }, 425{ "mi2mpt.dd", 0xFC0007FF, 0x48000187, "E,F,G", 1 }, 426{ "mrmt1p2.dd", 0xFC0007FF, 0x48000188, "E,F,G", 1 }, 427{ "mm12mpm.dd", 0xFC0007FF, 0x48000189, "E,F,G", 1 }, 428{ "mrm1p2.dd", 0xFC0007FF, 0x4800018A, "E,F,G", 1 }, 429{ "mm12ttpm.dd",0xFC0007FF, 0x4800018B, "E,F,G", 1 }, 430{ "mimt1p2.dd", 0xFC0007FF, 0x4800018C, "E,F,G", 1 }, 431{ "mm12tpm.dd", 0xFC0007FF, 0x4800018D, "E,F,G", 1 }, 432{ "mim1p2.dd", 0xFC0007FF, 0x4800018E, "E,F,G", 1 }, 433/* { "mm12tpm.dd", 0xFC0007FF, 0x4800018F, "E,F,G", 1 }, */ /* ??? */ 434 435{ "mr2p1.sd", 0xFC0007FF, 0x48000080, "e,f,G", 1 }, 436{ "mr2pt.sd", 0xFC0007FF, 0x48000081, "e,f,G", 1 }, 437{ "mr2mp1.sd", 0xFC0007FF, 0x48000082, "e,f,G", 1 }, 438{ "mr2mpt.sd", 0xFC0007FF, 0x48000083, "e,f,G", 1 }, 439{ "mi2p1.sd", 0xFC0007FF, 0x48000084, "e,f,G", 1 }, 440{ "mi2pt.sd", 0xFC0007FF, 0x48000085, "e,f,G", 1 }, 441{ "mi2mp1.sd", 0xFC0007FF, 0x48000086, "e,f,G", 1 }, 442{ "mi2mpt.sd", 0xFC0007FF, 0x48000087, "e,f,G", 1 }, 443{ "mrmt1p2.sd", 0xFC0007FF, 0x48000088, "e,f,G", 1 }, 444{ "mm12mpm.sd", 0xFC0007FF, 0x48000089, "e,f,G", 1 }, 445{ "mrm1p2.sd", 0xFC0007FF, 0x4800008A, "e,f,G", 1 }, 446{ "mm12ttpm.sd",0xFC0007FF, 0x4800008B, "e,f,G", 1 }, 447{ "mimt1p2.sd", 0xFC0007FF, 0x4800008C, "e,f,G", 1 }, 448{ "mm12tpm.sd", 0xFC0007FF, 0x4800008D, "e,f,G", 1 }, 449{ "mim1p2.sd", 0xFC0007FF, 0x4800008E, "e,f,G", 1 }, 450/* { "mm12tpm.sd", 0xFC0007FF, 0x4800008F, "e,f,G", 1 }, */ /* ??? */ 451 452{ "mr2p1.ss", 0xFC0007FF, 0x48000000, "e,f,g", 1 }, 453{ "mr2pt.ss", 0xFC0007FF, 0x48000001, "e,f,g", 1 }, 454{ "mr2mp1.ss", 0xFC0007FF, 0x48000002, "e,f,g", 1 }, 455{ "mr2mpt.ss", 0xFC0007FF, 0x48000003, "e,f,g", 1 }, 456{ "mi2p1.ss", 0xFC0007FF, 0x48000004, "e,f,g", 1 }, 457{ "mi2pt.ss", 0xFC0007FF, 0x48000005, "e,f,g", 1 }, 458{ "mi2mp1.ss", 0xFC0007FF, 0x48000006, "e,f,g", 1 }, 459{ "mi2mpt.ss", 0xFC0007FF, 0x48000007, "e,f,g", 1 }, 460{ "mrmt1p2.ss", 0xFC0007FF, 0x48000008, "e,f,g", 1 }, 461{ "mm12mpm.ss", 0xFC0007FF, 0x48000009, "e,f,g", 1 }, 462{ "mrm1p2.ss", 0xFC0007FF, 0x4800000A, "e,f,g", 1 }, 463{ "mm12ttpm.ss",0xFC0007FF, 0x4800000B, "e,f,g", 1 }, 464{ "mimt1p2.ss", 0xFC0007FF, 0x4800000C, "e,f,g", 1 }, 465{ "mm12tpm.ss", 0xFC0007FF, 0x4800000D, "e,f,g", 1 }, 466{ "mim1p2.ss", 0xFC0007FF, 0x4800000E, "e,f,g", 1 }, 467/* { "mm12tpm.ss", 0xFC0007FF, 0x4800000F, "e,f,g", 1 }, */ /* ??? */ 468 469/* 470 * PFMSM operators. There are 48 of these. 471 */ 472{ "mr2s1.dd", 0xFC0007FF, 0x48000190, "E,F,G", 1 }, 473{ "mr2st.dd", 0xFC0007FF, 0x48000191, "E,F,G", 1 }, 474{ "mr2ms1.dd", 0xFC0007FF, 0x48000192, "E,F,G", 1 }, 475{ "mr2mst.dd", 0xFC0007FF, 0x48000193, "E,F,G", 1 }, 476{ "mi2s1.dd", 0xFC0007FF, 0x48000194, "E,F,G", 1 }, 477{ "mi2st.dd", 0xFC0007FF, 0x48000195, "E,F,G", 1 }, 478{ "mi2ms1.dd", 0xFC0007FF, 0x48000196, "E,F,G", 1 }, 479{ "mi2mst.dd", 0xFC0007FF, 0x48000197, "E,F,G", 1 }, 480{ "mrmt1s2.dd", 0xFC0007FF, 0x48000198, "E,F,G", 1 }, 481{ "mm12msm.dd", 0xFC0007FF, 0x48000199, "E,F,G", 1 }, 482{ "mrm1s2.dd", 0xFC0007FF, 0x4800019A, "E,F,G", 1 }, 483{ "mm12ttsm.dd",0xFC0007FF, 0x4800019B, "E,F,G", 1 }, 484{ "mimt1s2.dd", 0xFC0007FF, 0x4800019C, "E,F,G", 1 }, 485{ "mm12tsm.dd", 0xFC0007FF, 0x4800019D, "E,F,G", 1 }, 486{ "mim1s2.dd", 0xFC0007FF, 0x4800019E, "E,F,G", 1 }, 487/* { "mm12tsm.dd", 0xFC0007FF, 0x4800019F, "E,F,G", 1 }, */ /* ??? */ 488 489{ "mr2s1.sd", 0xFC0007FF, 0x48000090, "e,f,G", 1 }, 490{ "mr2st.sd", 0xFC0007FF, 0x48000091, "e,f,G", 1 }, 491{ "mr2ms1.sd", 0xFC0007FF, 0x48000092, "e,f,G", 1 }, 492{ "mr2mst.sd", 0xFC0007FF, 0x48000093, "e,f,G", 1 }, 493{ "mi2s1.sd", 0xFC0007FF, 0x48000094, "e,f,G", 1 }, 494{ "mi2st.sd", 0xFC0007FF, 0x48000095, "e,f,G", 1 }, 495{ "mi2ms1.sd", 0xFC0007FF, 0x48000096, "e,f,G", 1 }, 496{ "mi2mst.sd", 0xFC0007FF, 0x48000097, "e,f,G", 1 }, 497{ "mrmt1s2.sd", 0xFC0007FF, 0x48000098, "e,f,G", 1 }, 498{ "mm12msm.sd", 0xFC0007FF, 0x48000099, "e,f,G", 1 }, 499{ "mrm1s2.sd", 0xFC0007FF, 0x4800009A, "e,f,G", 1 }, 500{ "mm12ttsm.sd",0xFC0007FF, 0x4800009B, "e,f,G", 1 }, 501{ "mimt1s2.sd", 0xFC0007FF, 0x4800009C, "e,f,G", 1 }, 502{ "mm12tsm.sd", 0xFC0007FF, 0x4800009D, "e,f,G", 1 }, 503{ "mim1s2.sd", 0xFC0007FF, 0x4800009E, "e,f,G", 1 }, 504/* { "mm12tsm.sd", 0xFC0007FF, 0x4800009F, "e,f,G", 1 }, */ /* ??? */ 505 506{ "mr2s1.ss", 0xFC0007FF, 0x48000010, "e,f,g", 1 }, 507{ "mr2st.ss", 0xFC0007FF, 0x48000011, "e,f,g", 1 }, 508{ "mr2ms1.ss", 0xFC0007FF, 0x48000012, "e,f,g", 1 }, 509{ "mr2mst.ss", 0xFC0007FF, 0x48000013, "e,f,g", 1 }, 510{ "mi2s1.ss", 0xFC0007FF, 0x48000014, "e,f,g", 1 }, 511{ "mi2st.ss", 0xFC0007FF, 0x48000015, "e,f,g", 1 }, 512{ "mi2ms1.ss", 0xFC0007FF, 0x48000016, "e,f,g", 1 }, 513{ "mi2mst.ss", 0xFC0007FF, 0x48000017, "e,f,g", 1 }, 514{ "mrmt1s2.ss", 0xFC0007FF, 0x48000018, "e,f,g", 1 }, 515{ "mm12msm.ss", 0xFC0007FF, 0x48000019, "e,f,g", 1 }, 516{ "mrm1s2.ss", 0xFC0007FF, 0x4800001A, "e,f,g", 1 }, 517{ "mm12ttsm.ss",0xFC0007FF, 0x4800001B, "e,f,g", 1 }, 518{ "mimt1s2.ss", 0xFC0007FF, 0x4800001C, "e,f,g", 1 }, 519{ "mm12tsm.ss", 0xFC0007FF, 0x4800001D, "e,f,g", 1 }, 520{ "mim1s2.ss", 0xFC0007FF, 0x4800001E, "e,f,g", 1 }, 521/* { "mm12tsm.ss", 0xFC0007FF, 0x4800001F, "e,f,g", 1 }, */ /* ??? */ 522 523/* 524 * PFSM operators. There are 48 of these. 525 */ 526{ "r2s1.dd", 0xFC0007FF, 0x48000590, "E,F,G", 1 }, 527{ "r2st.dd", 0xFC0007FF, 0x48000591, "E,F,G", 1 }, 528{ "r2as1.dd", 0xFC0007FF, 0x48000592, "E,F,G", 1 }, 529{ "r2ast.dd", 0xFC0007FF, 0x48000593, "E,F,G", 1 }, 530{ "i2s1.dd", 0xFC0007FF, 0x48000594, "E,F,G", 1 }, 531{ "i2st.dd", 0xFC0007FF, 0x48000595, "E,F,G", 1 }, 532{ "i2as1.dd", 0xFC0007FF, 0x48000596, "E,F,G", 1 }, 533{ "i2ast.dd", 0xFC0007FF, 0x48000597, "E,F,G", 1 }, 534{ "rat1s2.dd", 0xFC0007FF, 0x48000598, "E,F,G", 1 }, 535{ "m12asm.dd", 0xFC0007FF, 0x48000599, "E,F,G", 1 }, 536{ "ra1s2.dd", 0xFC0007FF, 0x4800059A, "E,F,G", 1 }, 537{ "m12ttsa.dd", 0xFC0007FF, 0x4800059B, "E,F,G", 1 }, 538{ "iat1s2.dd", 0xFC0007FF, 0x4800059C, "E,F,G", 1 }, 539{ "m12tsm.dd", 0xFC0007FF, 0x4800059D, "E,F,G", 1 }, 540{ "ia1s2.dd", 0xFC0007FF, 0x4800059E, "E,F,G", 1 }, 541{ "m12tsa.dd", 0xFC0007FF, 0x4800059F, "E,F,G", 1 }, 542 543{ "r2s1.sd", 0xFC0007FF, 0x48000490, "e,f,G", 1 }, 544{ "r2st.sd", 0xFC0007FF, 0x48000491, "e,f,G", 1 }, 545{ "r2as1.sd", 0xFC0007FF, 0x48000492, "e,f,G", 1 }, 546{ "r2ast.sd", 0xFC0007FF, 0x48000493, "e,f,G", 1 }, 547{ "i2s1.sd", 0xFC0007FF, 0x48000494, "e,f,G", 1 }, 548{ "i2st.sd", 0xFC0007FF, 0x48000495, "e,f,G", 1 }, 549{ "i2as1.sd", 0xFC0007FF, 0x48000496, "e,f,G", 1 }, 550{ "i2ast.sd", 0xFC0007FF, 0x48000497, "e,f,G", 1 }, 551{ "rat1s2.sd", 0xFC0007FF, 0x48000498, "e,f,G", 1 }, 552{ "m12asm.sd", 0xFC0007FF, 0x48000499, "e,f,G", 1 }, 553{ "ra1s2.sd", 0xFC0007FF, 0x4800049A, "e,f,G", 1 }, 554{ "m12ttsa.sd", 0xFC0007FF, 0x4800049B, "e,f,G", 1 }, 555{ "iat1s2.sd", 0xFC0007FF, 0x4800049C, "e,f,G", 1 }, 556{ "m12tsm.sd", 0xFC0007FF, 0x4800049D, "e,f,G", 1 }, 557{ "ia1s2.sd", 0xFC0007FF, 0x4800049E, "e,f,G", 1 }, 558{ "m12tsa.sd", 0xFC0007FF, 0x4800049F, "e,f,G", 1 }, 559 560{ "r2s1.ss", 0xFC0007FF, 0x48000410, "e,f,g", 1 }, 561{ "r2st.ss", 0xFC0007FF, 0x48000411, "e,f,g", 1 }, 562{ "r2as1.ss", 0xFC0007FF, 0x48000412, "e,f,g", 1 }, 563{ "r2ast.ss", 0xFC0007FF, 0x48000413, "e,f,g", 1 }, 564{ "i2s1.ss", 0xFC0007FF, 0x48000414, "e,f,g", 1 }, 565{ "i2st.ss", 0xFC0007FF, 0x48000415, "e,f,g", 1 }, 566{ "i2as1.ss", 0xFC0007FF, 0x48000416, "e,f,g", 1 }, 567{ "i2ast.ss", 0xFC0007FF, 0x48000417, "e,f,g", 1 }, 568{ "rat1s2.ss", 0xFC0007FF, 0x48000418, "e,f,g", 1 }, 569{ "m12asm.ss", 0xFC0007FF, 0x48000419, "e,f,g", 1 }, 570{ "ra1s2.ss", 0xFC0007FF, 0x4800041A, "e,f,g", 1 }, 571{ "m12ttsa.ss", 0xFC0007FF, 0x4800041B, "e,f,g", 1 }, 572{ "iat1s2.ss", 0xFC0007FF, 0x4800041C, "e,f,g", 1 }, 573{ "m12tsm.ss", 0xFC0007FF, 0x4800041D, "e,f,g", 1 }, 574{ "ia1s2.ss", 0xFC0007FF, 0x4800041E, "e,f,g", 1 }, 575{ "m12tsa.ss", 0xFC0007FF, 0x4800041F, "e,f,g", 1 }, 576 577}; 578 579#define NUMOPCODES ((sizeof i860_opcodes)/(sizeof *i860_opcodes)) 580