DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦6bf96b5cd⟧ TextFile

    Length: 23567 (0x5c0f)
    Types: TextFile
    Names: »sparc-opcode.h«

Derivation

└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
    └─⟦45ee03a86⟧ »./gas-1.34.tar.Z« 
        └─⟦217468c69⟧ 
            └─⟦this⟧ »gas-dist/sparc-opcode.h« 

TextFile

/* sparc_opcode.h -- Table of opcodes for the sparc.
   Copyright (C) 1989 Free Software Foundation, Inc.

This file is part of GAS, the GNU Assembler.

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

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

You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */

#if !defined(__STDC__) && !defined(const)
#define const
#endif

/*
 * Structure of an opcode table entry.
 */
struct sparc_opcode
{
    const char *name;
    unsigned long mask;     /* used only for error checking */
    unsigned long match;
    const char *args;
    unsigned int last;      /* used to simplify hashing */
};

/*
   All sparc opcodes are 32 bits, except for the `set' instruction (really
   a macro), which is 64 bits.  It is handled as a special case.

   The match component is a mask saying which bits must match a
   particular opcode in order for an instruction to be an instance
   of that opcode.

   The args component is a string containing one character
   for each operand of the instruction.

Kinds of operands:
   #    Number used by optimizer.  It is ignored.
   1    rs1 register.
   2    rs2 register.
   d    rd register.
   e    frs1 floating point register.
   f    frs2 floating point register.
   g    frsd floating point register.
   b    crs1 coprocessor register
   c    crs2 coprocessor register
   D    crsd coprocessor register
   h    22 high bits.
   i    13 bit Immediate.
   l    22 bit PC relative immediate.
   L    30 bit PC relative immediate.
   a    Annul.  The annul bit is set.
   A    Alternate address space.  Stored as 8 bits.
   C    Coprocessor state register.
   F    floating point state register.
   p    Processor state register.
   q    Floating point queue.
   r    Single register that is both rs1 and rsd.
   Q    Coprocessor queue.
   S    Special case.
   t    Trap base register.
   w    Window invalid mask register.
   y    Y register.

*/

/*
 *   The assembler requires that all instances of the same mnemonic must be
 *   consecutive.  If they aren't, the assembler will bomb at runtime.
 */

static const struct sparc_opcode sparc_opcodes[] =
{

{ "add",	0xc1f82000, 0x80000000,	"1,2,d", 0 },
{ "add",	0xc1f82000, 0x80002000,	"i,1,d", 0 },
{ "add",	0xc1f82000, 0x80002000,	"1,i,d", 1 },
{ "addcc",	0xc1f82000, 0x80800000,	"1,2,d", 0 },
{ "addcc",	0xc1f82000, 0x80802000,	"i,1,d", 0 },
{ "addcc",	0xc1f82000, 0x80802000,	"1,i,d", 1 },
{ "addx",	0xc1f82000, 0x80400000,	"1,2,d", 0 },
{ "addx",	0xc1f82000, 0x80402000,	"i,1,d", 0 },
{ "addx",	0xc1f82000, 0x80402000,	"1,i,d", 1 },
{ "addxcc",	0xc1f82000, 0x80c00000,	"1,2,d", 0 },
{ "addxcc",	0xc1f82000, 0x80c02000,	"i,1,d", 0 },
{ "addxcc",	0xc1f82000, 0x80c02000,	"1,i,d", 1 },

{ "and",	0xc1f82000, 0x80080000,	"1,2,d", 0 },
{ "and",	0xc1f82000, 0x80082000,	"i,1,d", 0 },
{ "and",	0xc1f82000, 0x80082000,	"1,i,d", 1 },
{ "andcc",	0xc1f82000, 0x80880000,	"1,2,d", 0 },
{ "andcc",	0xc1f82000, 0x80882000,	"i,1,d", 0 },
{ "andcc",	0xc1f82000, 0x80882000,	"1,i,d", 1 },
{ "andn",	0xc1f82000, 0x80280000,	"1,2,d", 0 },
{ "andn",	0xc1f82000, 0x80282000,	"i,1,d", 0 },
{ "andn",	0xc1f82000, 0x80282000,	"1,i,d", 1 },
{ "andncc",	0xc1f82000, 0x80a80000,	"1,2,d", 0 },
{ "andncc",	0xc1f82000, 0x80a82000,	"i,1,d", 0 },
{ "andncc",	0xc1f82000, 0x80a82000,	"1,i,d", 1 },

{ "b",		0xffc00000, 0x10800000,	"l",    0 },
{ "b",		0xffc00000, 0x30800000,	",al",  1 },
{ "ba",		0xffc00000, 0x10800000,	"l",    0 },
{ "ba",		0xffc00000, 0x30800000,	",al",  1 },
{ "bcc",	0xffc00000, 0x1a800000,	"l",    0 },
{ "bcc",	0xffc00000, 0x3a800000,	",al",  1 },
{ "bcs",	0xffc00000, 0x0a800000,	"l",    0 },
{ "bcs",	0xffc00000, 0x2a800000,	",al",  1 },
{ "be",		0xffc00000, 0x02800000,	"l",    0 },
{ "be",		0xffc00000, 0x22800000,	",al",  1 },
{ "bg",		0xffc00000, 0x14800000,	"l",    0 },
{ "bg",		0xffc00000, 0x34800000,	",al",  1 },
{ "bge",	0xffc00000, 0x16800000,	"l",    0 },
{ "bge",	0xffc00000, 0x36800000,	",al",  1 },
{ "bgeu",	0xffc00000, 0x1a800000,	"l",    0 },
{ "bgeu",	0xffc00000, 0x3a800000,	",al",  1 },
{ "bgu",	0xffc00000, 0x18800000,	"l",    0 },
{ "bgu",	0xffc00000, 0x38800000,	",al",  1 },
{ "bl",		0xffc00000, 0x06800000,	"l",    0 },
{ "bl",		0xffc00000, 0x26800000,	",al",  1 },
{ "ble",	0xffc00000, 0x04800000,	"l",    0 },
{ "ble",	0xffc00000, 0x24800000,	",al",  1 },
{ "bleu",	0xffc00000, 0x08800000,	"l",    0 },
{ "bleu",	0xffc00000, 0x28800000,	",al",  1 },
{ "blu",	0xffc00000, 0x0a800000,	"l",    0 }, /* same as bcs */
{ "blu",	0xffc00000, 0x2a800000,	",al",  1 },
{ "bn",		0xffc00000, 0x00800000,	"l",    0 },
{ "bn", 	0xffc00000, 0x20800000,	",al",  1 },
{ "bne",	0xffc00000, 0x12800000,	"l",    0 },
{ "bne",	0xffc00000, 0x32800000,	",al",  1 },
{ "bneg",	0xffc00000, 0x0c800000,	"l",    0 },
{ "bneg",	0xffc00000, 0x2c800000,	",al",  1 },
{ "bpos",	0xffc00000, 0x1c800000,	"l",    0 },
{ "bpos",	0xffc00000, 0x3c800000,	",al",  1 },
{ "bvc",	0xffc00000, 0x1e800000,	"l",    0 },
{ "bvc",	0xffc00000, 0x3e800000,	",al",  1 },
{ "bvs",	0xffc00000, 0x0e800000,	"l",    0 },
{ "bvs",	0xffc00000, 0x2e800000,	",al",  1 },


{ "call",	0xc0000000, 0x40000000,	"L", 0 },
{ "call",	0xc0000000, 0x40000000,	"L,#", 0 },
{ "call",	0xfff83fff, 0x9fc00000,	"1", 0 },
{ "call",	0xfff83fff, 0x9fc00000,	"1,#", 1 },

{ "clr",        0xc1ffe000, 0x80100000, "d", 1 },      /* or %0,%0,d */

{ "cmp",	0xfff82000, 0x80a00000,	"1,2", 0 },     /* subcc rs1,rs2,%0 */
{ "cmp",	0xfff82000, 0x80a02000,	"1,i", 1 },     /* subcc rs1,i,%0 */

{ "inc",	0xc1f83fff, 0x80002001,	"r", 1 },       /* add rs1,1,rsd */

{ "jmp",        0xfff83fff, 0x81c00000, "1", 0 },
{ "jmp",        0xfff83fff, 0x81c02000, "i", 1 },


{ "jmpl",	0xc1f83fff, 0x81c02000,	"1,d", 0 },
{ "jmpl",	0xc1f82000, 0x81c00000,	"1+2,d", 0 },
{ "jmpl",	0xc1f82000, 0x81c02000,	"1+i,d", 1 },

{ "ld",		0xc1f82000, 0xc0000000,	"[1],d",  0 },  /* ld [1+%0],d */

{ "ld",		0xc1f82000, 0xc0000000,	"[1],d",    0 },
{ "ld",		0xc1f82000, 0xc0000000,	"[1+2],d",  0 },
{ "ld",		0xc1f82000, 0xc0002000,	"[1+i],d",  0 },
{ "ld",         0xc1f82000, 0xc1000000, "[1],g",    0 },
{ "ld",         0xc1f82000, 0xc1000000, "[1+2],g",  0 },
{ "ld",         0xc1f82000, 0xc1002000, "[1+i],g",  0 },
{ "ld",         0xc1f82000, 0xc1080000, "[1],F",    0 },
{ "ld",         0xc1f82000, 0xc1080000, "[1+2],F",  0 },
{ "ld",         0xc1f82000, 0xc1082000, "[1+i],F",  0 },
{ "ld",         0xc1f82000, 0xc1800000, "[1],D",    0 },
{ "ld",         0xc1f82000, 0xc1800000, "[1+2],D",  0 },
{ "ld",         0xc1f82000, 0xc1802000, "[1+i],D",  0 },
{ "ld",         0xc1f82000, 0xc1880000, "[1],C",    0 },
{ "ld",         0xc1f82000, 0xc1880000, "[1+2],C",  0 },
{ "ld",         0xc1f82000, 0xc1882000, "[1+i],C",  1 },
{ "lda",	0xc1f82000, 0xc0800000,	"[1]A,d",   0 },
{ "lda",	0xc1f82000, 0xc0800000,	"[1+2]A,d", 1 },
{ "ldd",	0xc1f82000, 0xc0180000,	"[1],d",    0 },
{ "ldd",	0xc1f82000, 0xc0180000,	"[1+2],d",  0 },
{ "ldd",	0xc1f82000, 0xc0182000,	"[1+i],d",  0 },
{ "ldd",        0xc1f82000, 0xc1180000, "[1],g",    0 },
{ "ldd",        0xc1f82000, 0xc1180000, "[1+2],g",  0 },
{ "ldd",        0xc1f82000, 0xc1182000, "[1+i],g",  0 },
{ "ldd",        0xc1f82000, 0xc1980000, "[1],D",    0 },
{ "ldd",        0xc1f82000, 0xc1980000, "[1+2],D",  0 },
{ "ldd",        0xc1f82000, 0xc1982000, "[1+i],D",  1 },
{ "ldda",	0xc1f82000, 0xc0980000,	"[1]A,d",   0 },
{ "ldda",	0xc1f82000, 0xc0980000,	"[1+2]A,d", 1 },
{ "ldsb",	0xc1f82000, 0xc0480000,	"[1],d",    0 },
{ "ldsb",	0xc1f82000, 0xc0480000,	"[1+2],d",  0 },
{ "ldsb",	0xc1f82000, 0xc0482000,	"[1+i],d",  1 },
{ "ldsba",	0xc1f82000, 0xc0c80000,	"[1]A,d",   0 },
{ "ldsba",	0xc1f82000, 0xc0c80000,	"[1+2]A,d", 1 },
{ "ldsh",	0xc1f82000, 0xc0500000,	"[1],d",    0 },
{ "ldsh",	0xc1f82000, 0xc0500000,	"[1+2],d",  0 },
{ "ldsh",	0xc1f82000, 0xc0502000,	"[1+i],d",  1 },
{ "ldsha",	0xc1f82000, 0xc0d00000,	"[1]A,d",   0 },
{ "ldsha",	0xc1f82000, 0xc0d00000,	"[1+2]A,d", 1 },
{ "ldstub",	0xc1f82000, 0xc0680000,	"[1],d",    0 },
{ "ldstub",	0xc1f82000, 0xc0680000,	"[1+2],d",  0 },
{ "ldstub",	0xc1f82000, 0xc0682000,	"[1+i],d",  1 },
{ "ldstuba",	0xc1f82000, 0xc0d80000,	"[1]A,d",   0 },
{ "ldstuba",	0xc1f82000, 0xc0d80000,	"[1+2]A,d", 1 },
{ "ldub",	0xc1f82000, 0xc0080000,	"[1],d",    0 }, /* ldub [1+%0],d */
{ "ldub",	0xc1f82000, 0xc0080000,	"[1+2],d",  0 },
{ "ldub",	0xc1f82000, 0xc0082000,	"[1+i],d",  1 },
{ "lduba",	0xc1f82000, 0xc0880000,	"[1]A,d",   0 },
{ "lduba",	0xc1f82000, 0xc0880000,	"[1+2]A,d", 1 },
{ "lduh",	0xc1f82000, 0xc0100000,	"[1],d",    0 },
{ "lduh",	0xc1f82000, 0xc0100000,	"[1+2],d",  0 },
{ "lduh",	0xc1f82000, 0xc0102000,	"[1+i],d",  1 },
{ "lduha",	0xc1f82000, 0xc0900000,	"[1]A,d",   0 }, /* same as ldsha */
{ "lduha",	0xc1f82000, 0xc0900000,	"[1+2]A,d", 1 },

{ "mov",        0xc1ffe000, 0x80102000, "i,d", 0 },      /* or %0,i,d   */
{ "mov",        0xc1ffe000, 0x80100000, "2,d", 1 },      /* or %0,2,d */

{ "mulscc",	0xc1f82000, 0x81200000,	"1,2,d", 0 },
{ "mulscc",	0xc1f82000, 0x81202000,	"1,i,d", 1 },

{ "nop",	0xffffffff, 0x01000000,	"", 1 },	 /* sethi 0,%0 */

{ "or",		0xc1f82000, 0x80100000,	"1,2,d", 0 },
{ "or",		0xc1f82000, 0x80102000,	"i,1,d", 0 },
{ "or",		0xc1f82000, 0x80102000,	"1,i,d", 1 },
{ "orcc",	0xc1f82000, 0x80900000,	"1,2,d", 0 },
{ "orcc",	0xc1f82000, 0x80902000,	"i,1,d", 0 },
{ "orcc",	0xc1f82000, 0x80902000,	"1,i,d", 1 },
{ "orn",	0xc1f82000, 0x80300000,	"1,2,d", 0 },
{ "orn",	0xc1f82000, 0x80302000,	"i,1,d", 0 },
{ "orn",	0xc1f82000, 0x80302000,	"1,i,d", 1 },
{ "orncc",	0xc1f82000, 0x80b00000,	"1,2,d", 0 },
{ "orncc",	0xc1f82000, 0x80b02000,	"i,1,d", 0 },
{ "orncc",	0xc1f82000, 0x80b02000,	"1,i,d", 1 },

{ "rd", 	0xc1f80000, 0x81480000,	"p,d", 0 },
{ "rd", 	0xc1f80000, 0x81580000,	"t,d", 0 },
{ "rd", 	0xc1f80000, 0x81500000,	"w,d", 0 },
{ "rd",         0xc1f80000, 0x81400000, "y,d", 1 },

{ "restore",	0xc1f82000, 0x81e80000,	"1,2,d", 0 },
{ "restore",	0xc1f82000, 0x81e82000,	"1,i,d", 0 },
{ "restore",    0xffffffff, 0x81e80000, "", 1 },        /* restore %0,%0,%0 */
{ "ret",        0xffffffff, 0x81c7e008,  "", 1 },       /* jmpl %i7+8,%0 */
{ "retl",       0xffffffff, 0x81c3e008,  "", 1 },       /* jmpl ????? */
{ "rett",	0xc1f82000, 0x81c80000,	"1,2,d", 0 },
{ "rett",	0xc1f82000, 0x81c82000,	"1,i,d", 1 },
{ "save",	0xc1f82000, 0x81e00000,	"1,2,d", 0 },
{ "save",	0xc1f82000, 0x81e02000,	"1,i,d", 1 },

{ "set",        0xc1c00000, 0x01000000, "Sh,d", 1 },

{ "sethi",	0xc1c00000, 0x01000000,	"h,d", 1 },

{ "sll",	0xc1f82000, 0x81280000,	"1,2,d", 0 },
{ "sll",	0xc1f82000, 0x81282000,	"1,i,d", 1 },
{ "sra",	0xc1f82000, 0x81380000,	"1,2,d", 0 },
{ "sra",	0xc1f82000, 0x81382000,	"1,i,d", 1 },
{ "srl",	0xc1f82000, 0x81300000,	"1,2,d", 0 },
{ "srl",	0xc1f82000, 0x81302000,	"1,i,d", 1 },

{ "st",		0xc1f82000, 0xc0200000,	"d,[1]",  0 },  /* st d,[1+%0] */

{ "st",		0xc1f82000, 0xc0200000,	"d,[1]",    0 },
{ "st",		0xc1f82000, 0xc0200000,	"d,[1+2]",  0 },
{ "st",		0xc1f82000, 0xc0202000,	"d,[1+i]",  0 },
{ "st",		0xc1f82000, 0xc1200000,	"g,[1]",    0 },
{ "st",		0xc1f82000, 0xc1200000,	"g,[1+2]",  0 },
{ "st",		0xc1f82000, 0xc1202000,	"g,[1+i]",  0 },
{ "st",		0xc1f82000, 0xc1300000,	"F,[1]",    0 },
{ "st",		0xc1f82000, 0xc1300000,	"F,[1+2]",  0 },
{ "st",		0xc1f82000, 0xc1302000,	"F,[1+i]",  0 },
{ "st",		0xc1f82000, 0xc1a00000,	"D,[1]",    0 },
{ "st",		0xc1f82000, 0xc1a00000,	"D,[1+2]",  0 },
{ "st",		0xc1f82000, 0xc1a02000,	"D,[1+i]",  0 },
{ "st",		0xc1f82000, 0xc1a80000,	"C,[1]",    0 },
{ "st",		0xc1f82000, 0xc1a80000,	"C,[1+2]",  0 },
{ "st",		0xc1f82000, 0xc1a82000,	"C,[1+i]",  1 },
{ "sta",	0xc1f82000, 0xc0a00000,	"d,[1]A",   0 },
{ "sta",	0xc1f82000, 0xc0a00000,	"d,[1+2]A", 1 },

{ "stb",	0xc1f82000, 0xc0280000,	"d,[1]",    0 },
{ "stb",	0xc1f82000, 0xc0280000,	"d,[1+2]",  0 },
{ "stb",	0xc1f82000, 0xc0282000,	"d,[1+i]",  1 },
{ "stba",	0xc1f82000, 0xc0a80000,	"d,[1]A",   0 },
{ "stba",	0xc1f82000, 0xc0a80000,	"d,[1+2]A", 1 },

{ "std",	0xc1f82000, 0xc0380000,	"d,[1]",    0 },
{ "std",	0xc1f82000, 0xc0380000,	"d,[1+2]",  0 },
{ "std",	0xc1f82000, 0xc0382000,	"d,[1+i]",  0 },
{ "std",	0xc1f82000, 0xc1380000,	"g,[1]",    0 },
{ "std",	0xc1f82000, 0xc1380000,	"g,[1+2]",  0 },
{ "std",	0xc1f82000, 0xc1380000,	"g,[1+i]",  0 },

{ "std",	0xc1f82000, 0xc1300000,	"q,[1]",    0 },
{ "std",	0xc1f82000, 0xc1300000,	"q,[1+2]",  0 },
{ "std",	0xc1f82000, 0xc1300000,	"q,[1+i]",  0 },

{ "std",	0xc1f82000, 0xc1b80000,	"D,[1]",    0 },
{ "std",	0xc1f82000, 0xc1b80000,	"D,[1+2]",  0 },
{ "std",	0xc1f82000, 0xc1b80000,	"D,[1+i]",  0 },

{ "std",	0xc1f82000, 0xc1b00000,	"Q,[1]",    0 },
{ "std",	0xc1f82000, 0xc1b00000,	"Q,[1+2]",  0 },
{ "std",	0xc1f82000, 0xc1b00000,	"Q,[1+i]",  1 },

{ "stda",	0xc1f82000, 0xc0b80000,	"d,[1]A",   0 },
{ "stda",	0xc1f82000, 0xc0b80000,	"d,[1+2]A", 1 },

{ "sth",	0xc1f82000, 0xc0300000,	"d,[1]",    0 },
{ "sth",	0xc1f82000, 0xc0300000,	"d,[1+2]",  0 },
{ "sth",	0xc1f82000, 0xc0302000,	"d,[1+i]",  1 },
{ "stha",	0xc1f82000, 0xc0b00000,	"d,[1]A",   0 },
{ "stha",	0xc1f82000, 0xc0b00000,	"d,[1+2]A", 1 },

{ "sub",	0xc1f82000, 0x80200000,	"1,2,d", 0 },
{ "sub",	0xc1f82000, 0x80202000,	"1,i,d", 1 },
{ "subcc",	0xc1f82000, 0x80a00000,	"1,2,d", 0 },
{ "subcc",	0xc1f82000, 0x80a02000,	"1,i,d", 1 },
{ "subx",	0xc1f82000, 0x80600000,	"1,2,d", 0 },
{ "subx",	0xc1f82000, 0x80602000,	"1,i,d", 1 },
{ "subxcc",	0xc1f82000, 0x80e00000,	"1,2,d", 0 },
{ "subxcc",	0xc1f82000, 0x80e02000,	"1,i,d", 1 },

{ "swap",       0xc1f82000, 0xc0780000, "[1],d",    0 },
{ "swap",       0xc1f82000, 0xc0780000, "[1+2],d",  0 },
{ "swap",       0xc1f82000, 0xc0782000, "[1+i],d",  1 },
{ "swapa",      0xc1f82000, 0xc0f82000, "[1]A,d",   0 },
{ "swapa",      0xc1f82000, 0xc0f82000, "[1+2]A,d", 1 },

{ "taddcc",     0xc1f82000, 0x81000000, "1,2,d", 0 },
{ "taddcc",     0xc1f82000, 0x81002000, "1,i,d", 1 },
{ "taddcctv",   0xc1f82000, 0x81100000, "1,2,d", 0 },
{ "taddcctv",   0xc1f82000, 0x81102000, "1,i,d", 1 },

{ "ta",		0xfff82000, 0x91d00000,	"1+2", 0 },
{ "ta",		0xffffe000, 0x91d02000,	"i",   0 },       /* ta %0+i  */
{ "ta",		0xfff82000, 0x91d02000,	"1+i", 1 },
{ "tcc",	0xfff82000, 0x9bd00000,	"1+2", 0 },
{ "tcc",	0xffffe000, 0x9bd02000,	"i",   0 },
{ "tcc",	0xfff82000, 0x9bd02000,	"1+i", 1 },
{ "tcs",	0xfff82000, 0x8bd00000,	"1+2", 0 },
{ "tcs",	0xffffe000, 0x8bd02000,	"i",   0 },
{ "tcs",	0xfff82000, 0x8bd02000,	"1+i", 1 },
{ "te",		0xfff82000, 0x83d00000,	"1+2", 0 },
{ "te",		0xffffe000, 0x83d02000,	"i",   0 },
{ "te",		0xfff82000, 0x83d02000,	"1+i", 1 },
{ "tg",		0xfff82000, 0x95d00000,	"1+2", 0 },
{ "tg",		0xffffe000, 0x95d02000,	"i",   0 },
{ "tg",		0xfff82000, 0x95d02000,	"1+i", 1 },
{ "tge",	0xfff82000, 0x97d00000,	"1+2", 0 },
{ "tge",	0xffffe000, 0x97d02000,	"i",   0 },
{ "tge",	0xfff82000, 0x97d02000,	"1+i", 1 },
{ "tgu",	0xfff82000, 0x99d00000,	"1+2", 0 },
{ "tgu",	0xffffe000, 0x99d02000,	"i",   0 },
{ "tgu",	0xfff82000, 0x99d02000,	"1+i", 1 },
{ "tl",		0xfff82000, 0x87d00000,	"1+2", 0 },
{ "tl",		0xffffe000, 0x87d02000,	"i",   0 },
{ "tl",		0xfff82000, 0x87d02000,	"1+i", 1 },
{ "tle",	0xfff82000, 0x85d00000,	"1+2", 0 },
{ "tle",	0xffffe000, 0x85d02000,	"i",   0 },
{ "tle",	0xfff82000, 0x85d02000,	"1+i", 1 },
{ "tleu",	0xfff82000, 0x93d00000,	"1+2", 0 },
{ "tleu",	0xffffe000, 0x93d02000,	"i",   0 },
{ "tleu",	0xfff82000, 0x93d02000,	"1+i", 1 },
{ "tn",		0xfff82000, 0x81d00000,	"1+2", 0 },
{ "tn	",	0xffffe000, 0x81d02000,	"i",   0 },
{ "tn	",	0xfff82000, 0x81d02000,	"1+i", 1 },
{ "tne",	0xfff82000, 0x93d00000,	"1+2", 0 },
{ "tne",	0xffffe000, 0x93d02000,	"i",   0 },
{ "tne",	0xfff82000, 0x93d02000,	"1+i", 1 },
{ "tneg",	0xfff82000, 0x8dd00000,	"1+2", 0 },
{ "tneg",	0xffffe000, 0x8dd02000,	"i",   0 },
{ "tneg",	0xfff82000, 0x8dd02000,	"1+i", 1 },
{ "tpos",	0xfff82000, 0x9dd00000,	"1+2", 0 },
{ "tpos",	0xffffe000, 0x9dd02000,	"i",   0 },
{ "tpos",	0xfff82000, 0x9dd02000,	"1+i", 1 },
{ "tvc",	0xfff82000, 0x9fd00000,	"1+2", 0 },
{ "tvc",	0xffffe000, 0x9fd02000,	"i",   0 },
{ "tvc",	0xfff82000, 0x9fd02000,	"1+i", 1 },
{ "tvs",	0xfff82000, 0x8fd00000,	"1+2", 0 },
{ "tvs",	0xffffe000, 0x8fd02000,	"i",   0 },
{ "tvs",	0xfff82000, 0x8fd02000,	"1+i", 1 },

{ "tst",	0xffffe000, 0x80900000,	"2", 1 },   /* orcc %0,rs1,%0 */

{ "tsubcc",     0xc1f82000, 0x81080000, "1,2,d", 0 },
{ "tsubcc",     0xc1f82000, 0x81082000, "1,i,d", 1 },
{ "tsubcctv",   0xc1f82000, 0x80580000, "1,2,d", 0 },
{ "tsubcctv",   0xc1f82000, 0x80582000, "1,i,d", 1 },

{ "unimp",      0xc1c00000, 0x00000000, "l", 1 },

{ "wr",         0xc1f82000, 0x81880000, "1,2,p", 0 },
{ "wr",         0xc1f82000, 0x81882000, "1,i,p", 0 },
{ "wr",         0xc1f82000, 0x81980000, "1,2,t", 0 },
{ "wr",         0xc1f82000, 0x81982000, "1,i,t", 0 },
{ "wr",         0xc1f82000, 0x81900000, "1,2,w", 0 },
{ "wr",         0xc1f82000, 0x81902000, "1,i,w", 0 },
{ "wr",         0xc1f82000, 0x81800000, "1,2,y", 0 },
{ "wr",         0xc1f82000, 0x81802000, "1,i,y", 1 },

{ "xnor",	0xc1f82000, 0x80380000,	"1,2,d", 0 },
{ "xnor",	0xc1f82000, 0x80382000,	"i,1,d", 0 },
{ "xnor",	0xc1f82000, 0x80382000,	"1,i,d", 1 },
{ "xnorcc",	0xc1f82000, 0x80b80000,	"1,2,d", 0 },
{ "xnorcc",	0xc1f82000, 0x80b82000,	"i,1,d", 0 },
{ "xnorcc",	0xc1f82000, 0x80b82000,	"1,i,d", 1 },
{ "xor",	0xc1f82000, 0x80180000,	"1,2,d", 0 },
{ "xor",	0xc1f82000, 0x80182000,	"i,1,d", 0 },
{ "xor",	0xc1f82000, 0x80182000,	"1,i,d", 1 },
{ "xorcc",	0xc1f82000, 0x80980000,	"1,2,d", 0 },
{ "xorcc",	0xc1f82000, 0x80982000,	"i,1,d", 0 },
{ "xorcc",	0xc1f82000, 0x80982000,	"1,i,d", 1 },

{ "iflush",     0xfff83fe0, 0x81d80000, "1+2", 0 },
{ "iflush",     0xfff82000, 0x81d82000, "1+i", 1 },

#if 0
{ "fpop1",      0x0, 0x81a00000, "[1],d",   0 },
{ "fpop1",      0x0, 0x81a00000, "[1+2],d", 1 },
{ "fpop2",      0x0, 0x81a80000, "[1+i],d", 1 },
#endif

{ "fb",         0xffc00000, 0x11800000, "l", 0 },
{ "fb",         0xffc00000, 0x31800000, ",al", 1 },
{ "fba",        0xffc00000, 0x11800000, "l", 0 },
{ "fba",        0xffc00000, 0x31800000, ",al", 1 },
{ "fbn",        0xffc00000, 0x01800000, "l", 0 },
{ "fbn",        0xffc00000, 0x21800000, ",al", 1 },
{ "fbu",        0xffc00000, 0x0f800000, "l", 0 },
{ "fbu",        0xffc00000, 0x2f800000, ",al", 1 },
{ "fbg",        0xffc00000, 0x0d800000, "l", 0 },
{ "fbg",        0xffc00000, 0x2d800000, ",al", 1 },
{ "fbug",       0xffc00000, 0x0b800000, "l", 0 },
{ "fbug",       0xffc00000, 0x2b800000, ",al", 1 },
{ "fbl",        0xffc00000, 0x09800000, "l", 0 },
{ "fbl",        0xffc00000, 0x29800000, ",al", 1 },
{ "fbul",       0xffc00000, 0x07800000, "l", 0 },
{ "fbul",       0xffc00000, 0x27800000, ",al", 1 },
{ "fblg",       0xffc00000, 0x05800000, "l", 0 },
{ "fblg",       0xffc00000, 0x25800000, ",al", 1 },
{ "fbne",       0xffc00000, 0x03800000, "l", 0 },
{ "fbne",       0xffc00000, 0x23800000, ",al", 1 },
{ "fbe",        0xffc00000, 0x13800000, "l", 0 },
{ "fbe",        0xffc00000, 0x33800000, ",al", 1 },
{ "fbue",       0xffc00000, 0x15800000, "l", 0 },
{ "fbue",       0xffc00000, 0x35800000, ",al", 1 },
{ "fbge",       0xffc00000, 0x17800000, "l", 0 },
{ "fbge",       0xffc00000, 0x37800000, ",al", 1 },
{ "fbuge",      0xffc00000, 0x19800000, "l", 0 },
{ "fbuge",      0xffc00000, 0x39800000, ",al", 1 },
{ "fble",       0xffc00000, 0x1b800000, "l", 0 },
{ "fble",       0xffc00000, 0x3b800000, ",al", 1 },
{ "fbule",      0xffc00000, 0x1d800000, "l", 0 },
{ "fbule",      0xffc00000, 0x3d800000, ",al", 1 },
{ "fbo",        0xffc00000, 0x1f800000, "l", 0 },
{ "fbo",        0xffc00000, 0x3f800000, ",al", 1 },

{ "cba",        0xffc00000, 0x11c00000, "l", 0 },
{ "cba",        0xffc00000, 0x21c00000, ",al", 1 },
{ "cbn",        0xffc00000, 0x01c00000, "l", 0 },
{ "cbn",        0xffc00000, 0x21c00000, ",al", 1 },
{ "cb3",        0xffc00000, 0x0fc00000, "l", 0 },
{ "cb3",        0xffc00000, 0x2fc00000, ",al", 1 },
{ "cb2",        0xffc00000, 0x0dc00000, "l", 0 },
{ "cb2",        0xffc00000, 0x2dc00000, ",al", 1 },
{ "cb23",       0xffc00000, 0x0bc00000, "l", 0 },
{ "cb23",       0xffc00000, 0x2bc00000, ",al", 1 },
{ "cb1",        0xffc00000, 0x09c00000, "l", 0 },
{ "cb1",        0xffc00000, 0x29c00000, ",al", 1 },
{ "cb13",       0xffc00000, 0x07c00000, "l", 0 },
{ "cb13",       0xffc00000, 0x27c00000, ",al", 1 },
{ "cb12",       0xffc00000, 0x05c00000, "l", 0 },
{ "cb12",       0xffc00000, 0x25c00000, ",al", 1 },
{ "cb123",      0xffc00000, 0x03c00000, "l", 0 },
{ "cb123",      0xffc00000, 0x23c00000, ",al", 1 },
{ "cb0",        0xffc00000, 0x13c00000, "l", 0 },
{ "cb0",        0xffc00000, 0x33c00000, ",al", 1 },
{ "cb03",       0xffc00000, 0x15c00000, "l", 0 },
{ "cb03",       0xffc00000, 0x35c00000, ",al", 1 },
{ "cb02",       0xffc00000, 0x17c00000, "l", 0 },
{ "cb02",       0xffc00000, 0x37c00000, ",al", 1 },
{ "cb023",      0xffc00000, 0x19c00000, "l", 0 },
{ "cb023",      0xffc00000, 0x39c00000, ",al", 1 },
{ "cb013",      0xffc00000, 0x1dc00000, "l", 0 },
{ "cb013",      0xffc00000, 0x3dc00000, ",al", 1 },
{ "cb012",      0xffc00000, 0x1fc00000, "l", 0 },
{ "cb012",      0xffc00000, 0x3fc00000, ",al", 1 },

{ "fitos",      0xc1ffffe0, 0x81a01880, "f,g", 1 },
{ "fitod",      0xc1ffffe0, 0x81a01900, "f,g", 1 },
{ "fitox",      0xc1ffffe0, 0x81a01980, "f,g", 1 },

{ "fstoi",      0xc1ffffe0, 0x81a01a20, "f,g", 1 },
{ "fdtoi",      0xc1ffffe0, 0x81a01a40, "f,g", 1 },
{ "fxtoi",      0xc1ffffe0, 0x81a01a60, "f,g", 1 },

{ "fstod",      0xc1ffffe0, 0x81a01920, "f,g", 1 },
{ "fstox",      0xc1ffffe0, 0x81a019a0, "f,g", 1 },
{ "fdtos",      0xc1ffffe0, 0x81a018c0, "f,g", 1 },
{ "fdtox",      0xc1ffffe0, 0x81a019c0, "f,g", 1 },
{ "fxtos",      0xc1ffffe0, 0x81a018e0, "f,g", 1 },
{ "fxtod",      0xc1ffffe0, 0x81a01960, "f,g", 1 },

{ "fmovs",      0xc1ffffe0, 0x81a00020, "f,g", 1 },
{ "fnegs",      0xc1ffffe0, 0x81a000a0, "f,g", 1 },
{ "fabss",      0xc1ffffe0, 0x81a00120, "f,g", 1 },

{ "fsqrts",     0xc1ffffe0, 0x81a00520, "f,g", 1 },
{ "fsqrtd",     0xc1ffffe0, 0x81a00540, "f,g", 1 },
{ "fsqrtx",     0xc1ffffe0, 0x81a00560, "f,g", 1 },

{ "fadds",      0xc1f83fe0, 0x81a00820, "e,f,g", 1 },
{ "faddd",      0xc1f83fe0, 0x81a00840, "e,f,g", 1 },
{ "faddx",      0xc1f83fe0, 0x81a00860, "e,f,g", 1 },
{ "fsubs",      0xc1f83fe0, 0x81a008a0, "e,f,g", 1 },
{ "fsubd",      0xc1f83fe0, 0x81a008c0, "e,f,g", 1 },
{ "fsubx",      0xc1f83fe0, 0x81a008e0, "e,f,g", 1 },
{ "fmuls",      0xc1f83fe0, 0x81a00920, "e,f,g", 1 },
{ "fmuld",      0xc1f83fe0, 0x81a00940, "e,f,g", 1 },
{ "fmulx",      0xc1f83fe0, 0x81a00960, "e,f,g", 1 },
{ "fdivs",      0xc1f83fe0, 0x81a009a0, "e,f,g", 1 },
{ "fdivd",      0xc1f83fe0, 0x81a009c0, "e,f,g", 1 },
{ "fdivx",      0xc1f83fe0, 0x81a009e0, "e,f,g", 1 },

{ "fcmps",      0xfff83fe0, 0x81a80a20, "e,f", 1 },
{ "fcmpd",      0xfff83fe0, 0x81a80a40, "e,f", 1 },
{ "fcmpx",      0xfff83fe0, 0x81a80a60, "e,f", 1 },
{ "fcmpes",     0xfff83fe0, 0x81a80aa0, "e,f", 1 },
{ "fcmped",     0xfff83fe0, 0x81a80ac0, "e,f", 1 },
{ "fcmpex",     0xfff83fe0, 0x81a80ae0, "e,f", 1 },

#if 0
{ "cpop1",      0x0, 0x81b00000, "[1],d",   0 },
{ "cpop1",      0x0, 0x81b00000, "[1+2],d", 1 },
{ "cpop2",      0x0, 0x81b80000, "[1+i],d", 1 },
#endif

};

#define NUMOPCODES ((sizeof sparc_opcodes)/(sizeof *sparc_opcodes))