1*59052Storek /*-
2*59052Storek  * This code is derived from software copyrighted by the Free Software
3*59052Storek  * Foundation.
4*59052Storek  *
5*59052Storek  * Modified 1993 by Chris Torek at Lawrence Berkeley Laboratory.
6*59052Storek  *
7*59052Storek  *	@(#)sparc-opcode.h	5.2 (Berkeley) 04/12/93
8*59052Storek  */
9*59052Storek 
1059051Storek /* Table of opcodes for the sparc.
1159051Storek    Copyright (C) 1989 Free Software Foundation, Inc.
1259051Storek 
1359051Storek This file is part of GAS, the GNU Assembler, and GDB, the GNU disassembler.
1459051Storek 
1559051Storek GAS/GDB is free software; you can redistribute it and/or modify
1659051Storek it under the terms of the GNU General Public License as published by
1759051Storek the Free Software Foundation; either version 1, or (at your option)
1859051Storek any later version.
1959051Storek 
2059051Storek GAS/GDB is distributed in the hope that it will be useful,
2159051Storek but WITHOUT ANY WARRANTY; without even the implied warranty of
2259051Storek MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2359051Storek GNU General Public License for more details.
2459051Storek 
2559051Storek You should have received a copy of the GNU General Public License
2659051Storek along with GAS or GDB; see the file COPYING.  If not, write to
2759051Storek the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
2859051Storek 
2959051Storek #if !defined(__STDC__) && !defined(const)
3059051Storek #define const
3159051Storek #endif
3259051Storek 
3359051Storek /*
3459051Storek  * Structure of an opcode table entry.
3559051Storek  */
3659051Storek struct sparc_opcode
3759051Storek {
3859051Storek     const char *name;
3959051Storek     unsigned long int match;	/* Bits that must be set.  */
4059051Storek     unsigned long int lose;	/* Bits that must not be set.  */
4159051Storek     const char *args;
4259051Storek     /* Nonzero if this is a delayed branch instruction.  */
4359051Storek     char delayed;
4459051Storek };
4559051Storek 
4659051Storek /*
4759051Storek    All sparc opcodes are 32 bits, except for the `set' instruction (really
4859051Storek    a macro), which is 64 bits.  It is handled as a special case.
4959051Storek 
5059051Storek    The match component is a mask saying which bits must match a
5159051Storek    particular opcode in order for an instruction to be an instance
5259051Storek    of that opcode.
5359051Storek 
5459051Storek    The args component is a string containing one character
5559051Storek    for each operand of the instruction.
5659051Storek 
5759051Storek Kinds of operands:
5859051Storek    #    Number used by optimizer.  It is ignored.
5959051Storek    1    rs1 register.
6059051Storek    2    rs2 register.
6159051Storek    d    rd register.
6259051Storek    e    frs1 floating point register.
6359051Storek    f    frs2 floating point register.
6459051Storek    g    frsd floating point register.
6559051Storek    b    crs1 coprocessor register
6659051Storek    c    crs2 coprocessor register
6759051Storek    D    crsd coprocessor register
6859051Storek    h    22 high bits.
6959051Storek    i    13 bit Immediate.
7059051Storek    l    22 bit PC relative immediate.
7159051Storek    L    30 bit PC relative immediate.
7259051Storek    a    Annul.  The annul bit is set.
7359051Storek    A    Alternate address space.  Stored as 8 bits.
7459051Storek    C    Coprocessor state register.
7559051Storek    F    floating point state register.
7659051Storek    p    Processor state register.
7759051Storek    q    Floating point queue.
7859051Storek    r    Single register that is both rs1 and rsd.
79*59052Storek    R	Single register that is both rs2 and rsd.
8059051Storek    Q    Coprocessor queue.
8159051Storek    S    Special case.
8259051Storek    t    Trap base register.
8359051Storek    w    Window invalid mask register.
8459051Storek    y    Y register.
8559051Storek 
8659051Storek */
8759051Storek 
8859051Storek /* The order of the opcodes in this table is significant:
8959051Storek 
9059051Storek    * The assembler requires that all instances of the same mnemonic must be
9159051Storek    consecutive.  If they aren't, the assembler will bomb at runtime.
9259051Storek 
9359051Storek    * The disassembler should not care about the order of the opcodes.  */
9459051Storek 
9559051Storek static struct sparc_opcode sparc_opcodes[] =
9659051Storek {
9759051Storek 
9859051Storek { "ldd",        0xc1980000, 0x0060201f, "[1],D", 0 }, /* ldd [rs1+%g0],d */
9959051Storek { "ldd",        0xc1982000, 0x00601fff, "[1],D", 0 }, /* ldd [rs1+0],d */
10059051Storek { "ldd",        0xc1982000, 0x00600000, "[1+i],D", 0 },
10159051Storek { "ldd",        0xc1982000, 0x00600000, "[i+1],D", 0 },
10259051Storek { "ldd",        0xc1980000, 0x00602000, "[1+2],D", 0 },
10359051Storek { "ldd",        0xc1180000, 0x00e0201f, "[1],g", 0 }, /* ldd [rs1+%g0],d */
10459051Storek { "ldd",        0xc1182000, 0x00e01fff, "[1],g", 0 }, /* ldd [rs1+0],d */
10559051Storek { "ldd",        0xc1182000, 0x00e00000, "[1+i],g", 0 },
10659051Storek { "ldd",        0xc1182000, 0x00e00000, "[i+1],g", 0 },
10759051Storek { "ldd",        0xc1180000, 0x00e02000, "[1+2],g", 0 },
10859051Storek { "ldd",	0xc0180000, 0x01e0201f, "[1],d", 0 }, /* ldd [rs1+%g0],d */
10959051Storek { "ldd",        0xc0182000, 0x01e01fff, "[1],d", 0 }, /* ldd [rs1+0],d */
11059051Storek { "ldd",	0xc0182000, 0x01e00000, "[1+i],d", 0 },
11159051Storek { "ldd",	0xc0182000, 0x01e00000, "[i+1],d", 0 },
11259051Storek { "ldd",	0xc0180000, 0x01e02000, "[1+2],d", 0 },
11359051Storek { "ld",         0xc1880000, 0x0070201f, "[1],C", 0 }, /* ld [rs1+%g0],d */
11459051Storek { "ld",         0xc1882000, 0x00701fff, "[1],C", 0 }, /* ld [rs1+0],d */
11559051Storek { "ld",         0xc1882000, 0x00700000, "[1+i],C", 0 },
11659051Storek { "ld",         0xc1882000, 0x00700000, "[i+1],C", 0 },
11759051Storek { "ld",         0xc1880000, 0x00702000, "[1+2],C", 0 },
11859051Storek { "ld",         0xc1800000, 0x0078201f, "[1],D", 0 }, /* ld [rs1+%g0],d */
11959051Storek { "ld",         0xc1802000, 0x00781fff, "[1],D", 0 }, /* ld [rs1+0],d */
12059051Storek { "ld",         0xc1802000, 0x00780000, "[1+i],D", 0 },
12159051Storek { "ld",         0xc1802000, 0x00780000, "[i+1],D", 0 },
12259051Storek { "ld",         0xc1800000, 0x00782000, "[1+2],D", 0 },
12359051Storek { "ld",         0xc1080000, 0x00f0201f, "[1],F", 0 }, /* ld [rs1+%g0],d */
12459051Storek { "ld",         0xc1082000, 0x00f01fff, "[1],F", 0 }, /* ld [rs1+0],d */
12559051Storek { "ld",         0xc1082000, 0x00f00000, "[1+i],F", 0 },
12659051Storek { "ld",         0xc1082000, 0x00f00000, "[i+1],F", 0 },
12759051Storek { "ld",         0xc1080000, 0x00f02000, "[1+2],F", 0 },
12859051Storek { "ld",         0xc1000000, 0x00f8201f, "[1],g", 0 }, /* ld [rs1+%g0],d */
12959051Storek { "ld",         0xc1002000, 0x00f81fff, "[1],g", 0 }, /* ld [rs1+0],d */
13059051Storek { "ld",         0xc1002000, 0x00f80000, "[1+i],g", 0 },
13159051Storek { "ld",         0xc1002000, 0x00f80000, "[i+1],g", 0 },
13259051Storek { "ld",         0xc1000000, 0x00f82000, "[1+2],g", 0 },
13359051Storek { "ld",	        0xc0000000, 0x01f8201f, "[1],d", 0 }, /* ld [rs1+%g0],d */
13459051Storek { "ld",		0xc0002000, 0x01f81fff, "[1],d", 0 }, /* ld [rs1+0],d */
13559051Storek { "ld",		0xc0002000, 0x01f80000, "[1+i],d", 0 },
13659051Storek { "ld",		0xc0002000, 0x01f80000, "[i+1],d", 0 },
13759051Storek { "ld",		0xc0000000, 0x01f82000, "[1+2],d", 0 },
13859051Storek { "ldstuba",    0xc0d80000, 0x0100201f, "[1]A,d", 0 }, /* ldstuba [rs1+%g0],d */
13959051Storek { "ldstuba",	0xc0d80000, 0x01002000, "[1+2]A,d", 0 },
14059051Storek { "ldsha",      0xc0d00000, 0x0128201f, "[1]A,d", 0 }, /* ldsha [rs1+%g0],d */
14159051Storek { "ldsha",	0xc0d00000, 0x01282000, "[1+2]A,d", 0 },
14259051Storek { "ldsba",      0xc0c80000, 0x0130201f, "[1]A,d", 0 }, /* ldsba [rs1+%g0],d */
14359051Storek { "ldsba",	0xc0c80000, 0x01302000, "[1+2]A,d", 0 },
14459051Storek { "ldda",       0xc0980000, 0x0160201f, "[1]A,d", 0 }, /* ldda [rs1+%g0],d */
14559051Storek { "ldda",	0xc0980000, 0x01602000, "[1+2]A,d", 0 },
14659051Storek { "lduha",      0xc0900000, 0x0168201f, "[1]A,d", 0 }, /* lduha [rs1+%g0],d */
14759051Storek { "lduha",	0xc0900000, 0x01682000, "[1+2]A,d", 0 },
14859051Storek { "ldstub",     0xc0680000, 0x0190201f, "[1],d", 0 }, /* ldstub [rs1+%g0],d */
14959051Storek { "ldstub",	0xc0682000, 0x01900000, "[1+i],d", 0 },
15059051Storek { "ldstub",	0xc0682000, 0x01900000, "[i+1],d", 0 },
15159051Storek { "ldstub",	0xc0680000, 0x01902000, "[1+2],d", 0 },
15259051Storek { "lda",        0xc0800000, 0x0178201f, "[1]A,d", 0 }, /* lda [rs1+%g0],d */
15359051Storek { "lda",	0xc0800000, 0x01782000, "[1+2]A,d", 0 },
15459051Storek { "ldsh",       0xc0500000, 0x0000000d, "[1],d", 0 }, /* ldsh [rs1+%g0],d */
15559051Storek { "ldsh",       0xc0502000, 0x01a81fff, "[1],d", 0 }, /* ldsh [rs1+0],d */
15659051Storek { "ldsh",	0xc0502000, 0x01a80000, "[1+i],d", 0 },
15759051Storek { "ldsh",	0xc0502000, 0x01a80000, "[i+1],d", 0 },
15859051Storek { "ldsh",	0xc0500000, 0x01a82000, "[1+2],d", 0 },
15959051Storek { "ldsb",       0xc0480000, 0x01b0201f, "[1],d", 0 }, /* ldsb [rs1+%g0],d */
16059051Storek { "ldsb",	0xc0482000, 0x01b01fff, "[1],d", 0 }, /* ldsb [rs1+0],d */
16159051Storek { "ldsb",	0xc0482000, 0x01b00000, "[1+i],d", 0 },
16259051Storek { "ldsb",	0xc0482000, 0x01b00000, "[i+1],d", 0 },
16359051Storek { "ldsb",	0xc0480000, 0x01b02000, "[1+2],d", 0 },
16459051Storek { "ldub",       0xc0080000, 0x01f0201f, "[1],d", 0 }, /* ldub [rs1+%g0],d */
16559051Storek { "ldub",       0xc0082000, 0x01f01fff, "[1],d", 0 }, /* ldub [rs1+0],d */
16659051Storek { "ldub",	0xc0082000, 0x01f00000, "[1+i],d", 0 },
16759051Storek { "ldub",	0xc0082000, 0x01f00000, "[i+1],d", 0 },
16859051Storek { "ldub",	0xc0080000, 0x01f02000, "[1+2],d", 0 },
16959051Storek { "lduba",      0xc0880000, 0x0170201f, "[1]A,d", 0 }, /* lduba [rs1+%g0],d */
17059051Storek { "lduba",	0xc0880000, 0x01702000, "[1+2]A,d", 0 },
17159051Storek { "lduh",	0xc0102000, 0x01e80000, "[1+i],d", 0 },
17259051Storek { "lduh",	0xc0102000, 0x01e80000, "[i+1],d", 0 },
17359051Storek { "lduh",	0xc0100000, 0x01e8201f, "[1],d", 0 }, /* lduh [rs1+%g0],d */
17459051Storek { "lduh",	0xc0102000, 0x01e81fff, "[1],d", 0 }, /* lduh [rs1+0],d */
17559051Storek { "lduh",	0xc0100000, 0x01e82000, "[1+2],d", 0 },
17659051Storek 
17759051Storek { "st",	        0xc0200000, 0x01d8201f, "d,[1]", 0 }, /* st d,[rs1+%g0] */
17859051Storek { "st",	        0xc0202000, 0x01d81fff, "d,[1]", 0 }, /* st d,[rs1+0] */
17959051Storek { "st",		0xc0202000, 0x01d80000, "d,[1+i]", 0 },
18059051Storek { "st",		0xc0202000, 0x01d80000, "d,[i+1]", 0 },
18159051Storek { "st",		0xc0200000, 0x01d82000, "d,[1+2]", 0 },
18259051Storek { "st",		0xc1200000, 0x00d8201f, "g,[1]", 0 }, /* st d[rs1+%g0] */
18359051Storek { "st",		0xc1202000, 0x00d81fff, "g,[1]", 0 }, /* st d,[rs1+0] */
18459051Storek { "st",		0xc1202000, 0x00d80000, "g,[1+i]", 0 },
18559051Storek { "st",		0xc1202000, 0x00d80000, "g,[i+1]", 0 },
18659051Storek { "st",		0xc1200000, 0x00d82000, "g,[1+2]", 0 },
18759051Storek { "st",		0xc1280000, 0x00c0d01f, "F,[1]", 0 }, /* st d,[rs1+%g0] */
18859051Storek { "st",		0xc1282000, 0x00c0dfff, "F,[1]", 0 }, /* st d,[rs1+0] */
18959051Storek { "st",		0xc1282000, 0x00c0d000, "F,[1+i]", 0 },
19059051Storek { "st",		0xc1282000, 0x00c0d000, "F,[i+1]", 0 },
19159051Storek { "st",		0xc1280000, 0x00c0d000, "F,[1+2]", 0 },
19259051Storek { "st",		0xc1a00000, 0x0058201f, "D,[1]", 0 }, /* st d,[rs1+%g0] */
19359051Storek { "st",		0xc1a02000, 0x00581fff, "D,[1]", 0 }, /* st d,[rs1+0] */
19459051Storek { "st",		0xc1a02000, 0x00580000, "D,[1+i]", 0 },
19559051Storek { "st",		0xc1a02000, 0x00580000, "D,[i+1]", 0 },
19659051Storek { "st",		0xc1a00000, 0x00582000, "D,[1+2]", 0 },
19759051Storek { "st",		0xc1a80000, 0x0050201f, "C,[1]", 0 }, /* st d,[rs1+%g0] */
19859051Storek { "st",		0xc1a82000, 0x00501fff, "C,[1]", 0 }, /* st d,[rs1+0] */
19959051Storek { "st",		0xc1a82000, 0x00500000, "C,[1+i]", 0 },
20059051Storek { "st",		0xc1a82000, 0x00500000, "C,[i+1]", 0 },
20159051Storek { "st",		0xc1a80000, 0x00502000, "C,[1+2]", 0 },
20259051Storek { "sta",        0xc0a00000, 0x0108201f, "d,[1]A", 0 }, /* sta d,[rs1+%g0] */
20359051Storek { "sta",	0xc0a00000, 0x01082000, "d,[1+2]A", 0 },
20459051Storek 
20559051Storek { "stb",        0xc0280000, 0x01d0201f, "d,[1]", 0 }, /* stb d,[rs1+%g0] */
20659051Storek { "stb",	0xc0282000, 0x01d01fff, "d,[1]", 0 }, /* stb d,[rs1+0] */
20759051Storek { "stb",	0xc0282000, 0x01d00000, "d,[1+i]", 0 },
20859051Storek { "stb",	0xc0282000, 0x01d00000, "d,[i+1]", 0 },
20959051Storek { "stb",	0xc0280000, 0x01d02000, "d,[1+2]", 0 },
21059051Storek { "stba",       0xc0a80000, 0x01002000, "d,[1+2]A", 0 },
21159051Storek { "stba",	0xc0a80000, 0x0100201f, "d,[1]A", 0 }, /* stba d,[rs1+%g0] */
21259051Storek 
21359051Storek { "std",        0xc0380000, 0x01c0201f, "d,[1]", 0 }, /* std d,[rs1+%g0] */
21459051Storek { "std",	0xc0382000, 0x01c01fff, "d,[1]", 0 }, /* std d,[rs1+0] */
21559051Storek { "std",	0xc0382000, 0x01c00000, "d,[1+i]", 0 },
21659051Storek { "std",	0xc0382000, 0x01c00000, "d,[i+1]", 0 },
21759051Storek { "std",	0xc0380000, 0x01c02000, "d,[1+2]", 0 },
21859051Storek { "std",	0xc1380000, 0x00c0201f, "g,[1]", 0 }, /* std d,[rs1+%g0] */
21959051Storek { "std",        0xc1382000, 0x00c01fff, "g,[1]", 0 }, /* std d,[rs1+0] */
22059051Storek { "std",	0xc1382000, 0x00c00000, "g,[1+i]", 0 },
22159051Storek { "std",	0xc1382000, 0x00c00000, "g,[i+1]", 0 },
22259051Storek { "std",	0xc1380000, 0x00c02000, "g,[1+2]", 0 },
22359051Storek { "std",        0xc1300000, 0x00c8201f, "q,[1]", 0 }, /* std d,[rs1+%g0] */
22459051Storek { "std",	0xc1302000, 0x00c81fff, "q,[1]", 0 }, /* std d,[rs1+0] */
22559051Storek { "std",	0xc1302000, 0x00c80000, "q,[1+i]", 0 },
22659051Storek { "std",	0xc1302000, 0x00c80000, "q,[i+1]", 0 },
22759051Storek { "std",	0xc1300000, 0x00c82000, "q,[1+2]", 0 },
22859051Storek { "std",	0xc1b80000, 0x0040201f, "D,[1]", 0 }, /* std d,[rs1+%g0] */
22959051Storek { "std",	0xc1b82000, 0x00401fff, "D,[1]", 0 }, /* std d,[rs1+0] */
23059051Storek { "std",	0xc1b82000, 0x00400000, "D,[1+i]", 0 },
23159051Storek { "std",	0xc1b82000, 0x00400000, "D,[i+1]", 0 },
23259051Storek { "std",	0xc1b80000, 0x00402000, "D,[1+2]", 0 },
23359051Storek { "std",	0xc1b00000, 0x0048201f, "Q,[1]", 0 }, /* std d,[rs1+%g0] */
23459051Storek { "std",	0xc1b02000, 0x00481fff, "Q,[1]", 0 }, /* std d,[rs1+0] */
23559051Storek { "std",	0xc1b02000, 0x00480000, "Q,[1+i]", 0 },
23659051Storek { "std",	0xc1b02000, 0x00480000, "Q,[i+1]", 0 },
23759051Storek { "std",	0xc1b00000, 0x00482000, "Q,[1+2]", 0 },
23859051Storek { "stda",       0xc0b80000, 0x01402000, "d,[1+2]A", 0 },
23959051Storek { "stda",	0xc0b80000, 0x0140201f, "d,[1]A", 0 }, /* stda d,[rs1+%g0] */
24059051Storek 
24159051Storek { "sth",        0xc0300000, 0x01c8201f, "d,[1]", 0 }, /* sth d,[rs1+%g0] */
24259051Storek { "sth",	0xc0302000, 0x01c81fff, "d,[1]", 0 }, /* sth d,[rs1+0] */
24359051Storek { "sth",	0xc0300000, 0x01c82000, "d,[1+2]", 0 },
24459051Storek { "sth",	0xc0302000, 0x01c80000, "d,[1+i]", 0 },
24559051Storek { "sth",	0xc0302000, 0x01c80000, "d,[i+1]", 0 },
24659051Storek { "stha",       0xc0b00000, 0x0148201f, "d,[1]A", 0 }, /* stha d,[rs1+%g0] */
24759051Storek { "stha",	0xc0b00000, 0x01482000, "d,[1+2]A", 0 },
24859051Storek 
24959051Storek { "swap",       0xc0780000, 0x0180201f, "[1],d", 0 }, /* swap [rs1+%g0],d */
25059051Storek { "swap",       0xc0782000, 0x01801fff, "[1],d", 0 }, /* swap [rs1+0],d */
25159051Storek { "swap",       0xc0782000, 0x01800000, "[1+i],d", 0 },
25259051Storek { "swap",       0xc0782000, 0x01800000, "[i+1],d", 0 },
25359051Storek { "swap",       0xc0780000, 0x01802000, "[1+2],d", 0 },
25459051Storek { "swapa",      0xc0f80000, 0x01002000, "[1+2]A,d", 0 },
25559051Storek { "swapa",      0xc0f80000, 0x0100201f, "[1]A,d", 0 }, /* swapa [rs1+%g0],d */
25659051Storek 
25759051Storek { "restore",    0x81e80000, 0x7e17e01f, "", 0 }, /* restore %g0,%g0,%g0 */
25859051Storek { "restore",    0x81e82000, 0x7e14dfff, "", 0 }, /* restore %g0,0,%g0 */
25959051Storek { "restore",	0x81e82000, 0x00000000, "1,i,d", 0 },
26059051Storek { "restore",	0x81e80000, 0x00000000, "1,2,d", 0 },
26159051Storek { "rett",       0x81c82000, 0x40300000, "1+i", 1 },
26259051Storek { "rett",       0x81c82000, 0x40300000, "i+1", 1 },
26359051Storek { "rett",	0x81c80000, 0x40302000, "1+2", 1 },
26459051Storek { "rett",	0x81c82000, 0x40300000, "1", 1},
26559051Storek { "save",       0x81e02000, 0x40180000, "1,i,d", 0 },
26659051Storek { "save",	0x81e00000, 0x40180000, "1,2,d", 0 },
26759051Storek 
26859051Storek { "ret",	0x81c7e008, 0x00001ff7, "", 1 }, /* jmpl %i7+8,%g0 */
26959051Storek { "retl",       0x81c3e008, 0x00001ff7, "", 1 }, /* jmpl %o7+8,%g0 */
27059051Storek 
27159051Storek { "jmpl",       0x81c00000, 0x4038201f, "1,d", 1 }, /* jmpl rs1+%g0,d */
27259051Storek { "jmpl",	0x81c02000, 0x4037c000, "i,d", 1 }, /* jmpl %g0+i,d */
27359051Storek { "jmpl",	0x81c02000, 0x40380000, "1+i,d", 1 },
27459051Storek { "jmpl",	0x81c02000, 0x40380000, "i+1,d", 1 },
27559051Storek { "jmpl",	0x81c00000, 0x40382000, "1+2,d", 1 },
27659051Storek { "wr",         0x81982000, 0x40600000, "1,i,t", 0 },
27759051Storek { "wr",         0x81980000, 0x40600000, "1,2,t", 0 },
27859051Storek { "wr",         0x81902000, 0x40680000, "1,i,w", 0 },
27959051Storek { "wr",         0x81900000, 0x40680000, "1,2,w", 0 },
28059051Storek { "wr",         0x81882000, 0x40700000, "1,i,p", 0 },
28159051Storek { "wr",         0x81880000, 0x40700000, "1,2,p", 0 },
28259051Storek { "wr",         0x81802000, 0x40780000, "1,i,y", 0 },
28359051Storek { "wr",         0x81800000, 0x40780000, "1,2,y", 0 },
28459051Storek 
28559051Storek { "rd", 	0x81580000, 0x40a00000, "t,d", 0 },
28659051Storek { "rd", 	0x81500000, 0x40a80000, "w,d", 0 },
28759051Storek { "rd", 	0x81480000, 0x40b00000, "p,d", 0 },
28859051Storek { "rd",         0x81400000, 0x40b80000, "y,d", 0 },
28959051Storek 
29059051Storek { "sra",	0x81382000, 0x00000000, "1,i,d", 0 },
29159051Storek { "sra",	0x81380000, 0x00000000, "1,2,d", 0 },
29259051Storek { "srl",        0x81302000, 0x40c80000, "1,i,d", 0 },
29359051Storek { "srl",	0x81300000, 0x40c80000, "1,2,d", 0 },
29459051Storek { "sll",        0x81282000, 0x40d00000, "1,i,d", 0 },
29559051Storek { "sll",	0x81280000, 0x40d00000, "1,2,d", 0 },
29659051Storek 
29759051Storek { "mulscc",     0x81202000, 0x40d80000, "1,i,d", 0 },
29859051Storek { "mulscc",	0x81200000, 0x40d80000, "1,2,d", 0 },
29959051Storek 
30059051Storek { "clr",        0x80100000, 0x4e87e01f, "d", 0 }, /* or %g0,%g0,d */
30159051Storek { "clr",        0x80102000, 0x41efdfff, "d", 0 }, /* or %g0,0,d   */
30259051Storek 
30359051Storek { "orncc",      0x80b02000, 0x04048000, "1,i,d", 0 },
30459051Storek { "orncc",      0x80b02000, 0x04048000, "i,1,d", 0 },
30559051Storek { "orncc",	0x80b00000, 0x04048000, "1,2,d", 0 },
30659051Storek 
30759051Storek { "tst",        0x80900000, 0x7f6fe000, "2", 0 }, /* orcc %g0, rs2, %g0 */
30859051Storek { "tst",        0x80900000, 0x7f68201f, "1", 0 }, /* orcc rs1, %g0, %g0 */
30959051Storek { "tst",        0x80902000, 0x7f681fff, "1", 0 }, /* orcc rs1, 0, %g0 */
31059051Storek 
31159051Storek { "orcc",       0x80902000, 0x41680000, "1,i,d", 0 },
31259051Storek { "orcc",	0x80902000, 0x41680000, "i,1,d", 0 },
31359051Storek { "orcc",	0x80900000, 0x41680000, "1,2,d", 0 },
31459051Storek { "orn",        0x80302000, 0x41c80000, "1,i,d", 0 },
31559051Storek { "orn",	0x80302000, 0x41c80000, "i,1,d", 0 },
31659051Storek { "orn",	0x80300000, 0x41c80000, "1,2,d", 0 },
31759051Storek 
31859051Storek { "mov",        0x81800000, 0x4078201f, "1,y", 0 }, /* wr rs1,%g0,%y */
31959051Storek { "mov",        0x81802000, 0x40781fff, "1,y", 0 }, /* wr rs1,0,%y */
32059051Storek { "mov",        0x81400000, 0x40b80000, "y,d", 0 }, /* rd %y,d */
32159051Storek { "mov",        0x81980000, 0x4060201f, "1,t", 0 }, /* wr rs1,%g0,%tbr */
32259051Storek { "mov",        0x81982000, 0x40601fff, "1,t", 0 }, /* wr rs1,0,%tbr */
32359051Storek { "mov",        0x81580000, 0x40a00000, "t,d", 0 }, /* rd %tbr,d */
32459051Storek { "mov",        0x81900000, 0x4068201f, "1,w", 0 }, /* wr rs1,%g0,%wim */
32559051Storek { "mov",        0x81902000, 0x40681fff, "1,w", 0 }, /* wr rs1,0,%wim */
32659051Storek { "mov",        0x81500000, 0x40a80000, "w,d", 0 }, /* rd %wim,d */
32759051Storek { "mov",        0x81880000, 0x4070201f, "1,p", 0 }, /* wr rs1,%g0,%psr */
32859051Storek { "mov",        0x81882000, 0x40701fff, "1,p", 0 }, /* wr rs1,0,%psr */
32959051Storek { "mov",        0x81480000, 0x40b00000, "p,d", 0 }, /* rd %psr,d */
33059051Storek 
33159051Storek { "mov",        0x80102000, 0x41efc000, "i,d", 0 }, /* or %g0,i,d   */
33259051Storek { "mov",        0x80100000, 0x41efe000, "2,d", 0 }, /* or %g0,rs2,d */
33359051Storek 
33459051Storek { "or",	        0x80102000, 0x40800000, "1,i,d", 0 },
33559051Storek { "or",		0x80102000, 0x40800000, "i,1,d", 0 },
33659051Storek { "or",		0x80100000, 0x40800000, "1,2,d", 0 },
33759051Storek 
338*59052Storek { "bset",	0x80100000, 0x40800000, "2,r", 0 },	/* or rsd,rs2,rsd */
339*59052Storek { "bset",	0x80102000, 0x40800000, "i,r", 0 },	/* or rsd,i,rsd */
340*59052Storek 
34159051Storek { "andncc",     0x80a82000, 0x41500000, "1,i,d", 0 },
34259051Storek { "andncc",	0x80a82000, 0x41500000, "i,1,d", 0 },
34359051Storek { "andncc",	0x80a80000, 0x41500000, "1,2,d", 0 },
34459051Storek { "andn",       0x80282000, 0x41d00000, "1,i,d", 0 },
34559051Storek { "andn",	0x80282000, 0x41d00000, "i,1,d", 0 },
34659051Storek { "andn",	0x80280000, 0x41d00000, "1,2,d", 0 },
34759051Storek 
348*59052Storek { "bclr",	0x80280000, 0x41d00000, "2,r", 0 },	/* andn rsd,rs2,rsd */
349*59052Storek { "bclr",	0x80282000, 0x41d00000, "i,r", 0 },	/* andn rsd,i,rsd */
350*59052Storek 
35159051Storek { "cmp",        0x80a02000, 0x7d580000, "1,i", 0 },     /* subcc rs1,i,%g0 */
35259051Storek { "cmp",	0x80a00000, 0x7d580000, "1,2", 0 },     /* subcc rs1,rs2,%g0 */
35359051Storek 
354*59052Storek { "deccc",	0x80a02001, 0x41581ffe, "r", 0 },	/* subcc rs1,1,rsd */
355*59052Storek { "deccc",	0x80a02000, 0x41581fff, "i,r", 0 },	/* subcc rs1,i,rsd */
356*59052Storek { "dec",	0x80202001, 0x41d81ffe, "r", 0 },	/* sub rs1,1,rsd */
357*59052Storek { "dec",	0x80202000, 0x41d81fff, "i,r", 0 },	/* etc */
358*59052Storek 
359*59052Storek { "neg",	0x80200000, 0x41d87800, "2,d", 0 },	/* sub %g0,rs2,rsd */
360*59052Storek { "neg",	0x80200000, 0x41d87800, "R", 0 },	/* same, but rsd=rs2 */
361*59052Storek 
36259051Storek { "subcc",      0x80a02000, 0x41580000, "1,i,d", 0 },
36359051Storek { "subcc",	0x80a00000, 0x41580000, "1,2,d", 0 },
36459051Storek { "sub",	0x80202000, 0x41d80000, "1,i,d", 0 },
36559051Storek { "sub",	0x80200000, 0x41d80000, "1,2,d", 0 },
36659051Storek { "subx",	0x80602000, 0x41980000, "1,i,d", 0 },
36759051Storek { "subx",	0x80600000, 0x41980000, "1,2,d", 0 },
36859051Storek { "subxcc",     0x80e02000, 0x41180000, "1,i,d", 0 },
36959051Storek { "subxcc",	0x80e00000, 0x41180000, "1,2,d", 0 },
37059051Storek 
37159051Storek { "andcc",      0x80882000, 0x41700000, "1,i,d", 0 },
37259051Storek { "andcc",	0x80882000, 0x41700000, "i,1,d", 0 },
37359051Storek { "andcc",	0x80880000, 0x41700000, "1,2,d", 0 },
37459051Storek { "and",        0x80082000, 0x41f00000, "1,i,d", 0 },
37559051Storek { "and",	0x80082000, 0x41f00000, "i,1,d", 0 },
37659051Storek { "and",	0x80080000, 0x41f00000, "1,2,d", 0 },
37759051Storek 
378*59052Storek { "btst",	0x80880000, 0x41700000, "1,2", 0 },	/* andcc rs1,rs2,%g0 */
379*59052Storek { "btst",	0x80882000, 0x41700000, "i,1", 0 },	/* andcc rs1,i,%g0 */
380*59052Storek 
381*59052Storek { "inccc",	0x80802001, 0x41781ffe, "r", 0 },	/* addcc rs1,1,rsd */
382*59052Storek { "inccc",	0x80802000, 0x41781fff, "i,r", 0 },	/* addcc rs1,i,rsd */
38359051Storek { "inc",	0x80002001, 0x41f81ffe, "r", 0 },       /* add rs1,1,rsd */
384*59052Storek { "inc",	0x80002000, 0x41f81fff, "i,r", 0 },	/* add rs1,i,rsd */
38559051Storek 
38659051Storek { "addxcc",     0x80c02000, 0x41380000, "1,i,d", 0 },
38759051Storek { "addxcc",     0x80c02000, 0x41380000, "i,1,d", 0 },
38859051Storek { "addxcc",     0x80c00000, 0x41380000, "1,2,d", 0 },
38959051Storek { "addcc",      0x80802000, 0x41780000, "1,i,d", 0 },
39059051Storek { "addcc",      0x80802000, 0x41780000, "i,1,d", 0 },
39159051Storek { "addcc",      0x80800000, 0x41780000, "1,2,d", 0 },
39259051Storek { "addx",       0x80402000, 0x41b80000, "1,i,d", 0 },
39359051Storek { "addx",	0x80402000, 0x41b80000, "i,1,d", 0 },
39459051Storek { "addx",	0x80400000, 0x41b80000, "1,2,d", 0 },
39559051Storek { "add",        0x80002000, 0x41f80000, "1,i,d", 0 },
39659051Storek { "add",	0x80002000, 0x41f80000, "i,1,d", 0 },
39759051Storek { "add",	0x80000000, 0x41f80000, "1,2,d", 0 },
39859051Storek 
39959051Storek { "call",       0x9fc00000, 0x4038201f, "1", 1 }, /* jmpl rs1+%g0, %o7 */
40059051Storek { "call",	0x9fc00000, 0x4038201f, "1,#", 1 },
40159051Storek { "call",	0x40000000, 0x80000000, "L", 1 },
40259051Storek { "call",	0x40000000, 0x80000000, "L,#", 1 },
40359051Storek 
40459051Storek { "bvc",        0x3e800000, 0xc1400000, ",al", 1 },
40559051Storek { "bvc",	0x1e800000, 0xc1400000, "l", 1 },
40659051Storek { "bvs",	0x2e800000, 0xc1400000, ",al", 1 },
40759051Storek { "bvs",	0x0e800000, 0xc1400000, "l", 1 },
40859051Storek { "bpos",	0x3c800000, 0xc1400000, ",al", 1 },
40959051Storek { "bpos",	0x1c800000, 0xc1400000, "l", 1 },
41059051Storek { "bneg",	0x2c800000, 0xc1400000, ",al", 1 },
41159051Storek { "bneg",	0x0c800000, 0xc1400000, "l", 1 },
41259051Storek { "bcc",	0x3a800000, 0xc1400000, ",al", 1 },
41359051Storek { "bcc",	0x1a800000, 0xc1400000, "l", 1 },
41459051Storek { "bcs",	0x2a800000, 0xc1400000, ",al", 1 },
41559051Storek { "bcs",	0x0a800000, 0xc1400000, "l", 1 },
41659051Storek { "blu",	0x2a800000, 0xc1400000, ",al", 1 },
41759051Storek { "blu",	0x0a800000, 0xc1400000, "l", 1 }, /* same as bcs */
41859051Storek { "bgeu",	0x3a800000, 0xc1400000, ",al", 1 },
41959051Storek { "bgeu",	0x1a800000, 0xc1400000, "l", 1 }, /* same as bcc */
42059051Storek { "bgu",	0x38800000, 0xc1400000, ",al", 1 },
42159051Storek { "bgu",	0x18800000, 0xc1400000, "l", 1 },
42259051Storek { "bleu",	0x28800000, 0xc1400000, ",al", 1 },
42359051Storek { "bleu",	0x08800000, 0xc1400000, "l", 1 },
42459051Storek { "bge",	0x36800000, 0xc1400000, ",al", 1 },
42559051Storek { "bge",	0x16800000, 0xc1400000, "l", 1 },
42659051Storek { "bl",		0x26800000, 0xc1400000, ",al", 1 },
42759051Storek { "bl",		0x06800000, 0xc1400000, "l", 1 },
42859051Storek { "bg",		0x34800000, 0xc1400000, ",al", 1 },
42959051Storek { "bg",		0x14800000, 0xc1400000, "l", 1 },
43059051Storek { "ble",	0x24800000, 0xc1400000, ",al", 1 },
43159051Storek { "ble",	0x04800000, 0xc1400000, "l", 1 },
43259051Storek { "be",		0x22800000, 0xc1400000, ",al", 1 },
43359051Storek { "be",		0x02800000, 0xc1400000, "l", 1 },
434*59052Storek { "bz",		0x22800000, 0xc1400000, ",al", 1 },
435*59052Storek { "bz",		0x02800000, 0xc1400000, "l", 1 },
43659051Storek { "bne",	0x32800000, 0xc1400000, ",al", 1 },
43759051Storek { "bne",	0x12800000, 0xc1400000, "l", 1 },
438*59052Storek { "bnz",	0x32800000, 0xc1400000, ",al", 1 },
439*59052Storek { "bnz",	0x12800000, 0xc1400000, "l", 1 },
44059051Storek { "b",		0x30800000, 0xc1400000, ",al", 1 },
44159051Storek { "b",		0x10800000, 0xc1400000, "l", 1 },
44259051Storek { "ba",		0x30800000, 0xc1400000, ",al", 1 },
44359051Storek { "ba",		0x10800000, 0xc1400000, "l", 1 },
44459051Storek { "bn", 	0x20800000, 0xc1400000, ",al", 1 },
44559051Storek { "bn",		0x00800000, 0xc1400000, "l", 1 },
44659051Storek 
44759051Storek { "jmp",        0x81c00000, 0x7e38201f, "1", 1 }, /* jmpl rs1+%g0,%g0 */
44859051Storek { "jmp",        0x81c02000, 0x7e3fc000, "i", 1 }, /* jmpl %g0+i,%g0 */
44959051Storek { "jmp",        0x81c00000, 0x7e382000, "1+2", 1 }, /* jmpl rs1+rs2,%g0 */
45059051Storek { "jmp",        0x81c02000, 0x7e380000, "1+i", 1 }, /* jmpl rs1+i,%g0 */
45159051Storek { "jmp",        0x81c02000, 0x7e380000, "i+1", 1 }, /* jmpl i+rs1,%g0 */
45259051Storek 
45359051Storek { "nop",	0x01000000, 0xfe3fffff, "", 0 }, /* sethi 0, %g0 */
45459051Storek 
45559051Storek { "set",        0x01000000, 0xc0c00000, "Sh,d", 0 },
45659051Storek 
45759051Storek { "sethi",      0x01000000, 0xc0c00000, "h,d", 0 },
45859051Storek 
45959051Storek { "taddcctv",   0x81102000, 0x40e00000, "1,i,d", 0 },
46059051Storek { "taddcctv",   0x81100000, 0x40e00000, "1,2,d", 0 },
46159051Storek { "taddcc",     0x81002000, 0x40f80000, "1,i,d", 0 },
46259051Storek { "taddcc",     0x81000000, 0x40f80000, "1,2,d", 0 },
46359051Storek 
46459051Storek { "tvc",	0x9fd02000, 0x402fc000, "i", 0 }, /* tvc %g0+i */
46559051Storek { "tvc",        0x9fd02000, 0x40280000, "1+i", 0 },
46659051Storek { "tvc",	0x9fd00000, 0x40282000, "1+2", 0 },
46759051Storek { "tvc",        0x9fd00000, 0x4028201f, "1", 0 }, /* tvc rs1+%g0 */
46859051Storek { "tpos",	0x9dd02000, 0x402fc000, "i", 0 }, /* tpos %g0+i */
46959051Storek { "tpos",	0x9dd02000, 0x40280000, "1+i", 0 },
47059051Storek { "tpos",	0x9dd00000, 0x40282000, "1+2", 0 },
47159051Storek { "tpos",       0x9dd00000, 0x4028201f, "1", 0 }, /* tpos rs1+%g0 */
47259051Storek { "tcc",        0x9bd02000, 0x402fc000, "i", 0 }, /* tcc %g0+i */
47359051Storek { "tcc",	0x9bd02000, 0x40280000, "1+i", 0 },
47459051Storek { "tcc",	0x9bd00000, 0x40282000, "1+2", 0 },
47559051Storek { "tcc",        0x9bd00000, 0x4028201f, "1", 0 }, /* tcc rs1+%g0 */
47659051Storek { "tgu",	0x99d02000, 0x402fc000, "i", 0 }, /* tgu %g0+i */
47759051Storek { "tgu",	0x99d02000, 0x40280000, "1+i", 0 },
47859051Storek { "tgu",	0x99d00000, 0x40282000, "1+2", 0 },
47959051Storek { "tgu",        0x99d00000, 0x4028201f, "1", 0 }, /* tgu rs1+%g0 */
48059051Storek { "tge",	0x97d02000, 0x402fc000, "i", 0 }, /* tge %g0+i */
48159051Storek { "tge",	0x97d02000, 0x40280000, "1+i", 0 },
48259051Storek { "tge",	0x97d00000, 0x40282000, "1+2", 0 },
48359051Storek { "tge",        0x97d00000, 0x4028201f, "1", 0 }, /* tge rs1+%g0 */
48459051Storek { "tg",		0x95d02000, 0x402fc000, "i", 0 }, /* tg %g0+i */
48559051Storek { "tg",		0x95d02000, 0x40280000, "1+i", 0 },
48659051Storek { "tg",		0x95d00000, 0x40282000, "1+2", 0 },
48759051Storek { "tg",         0x95d00000, 0x4028201f, "1", 0 }, /* tg rs1+%g0 */
48859051Storek { "tne",        0x93d02000, 0x402fc000, "i", 0 }, /* tne %g0+i */
48959051Storek { "tne",	0x93d02000, 0x40280000, "1+i", 0 },
49059051Storek { "tne",	0x93d00000, 0x40282000, "1+2", 0 },
49159051Storek { "tne",        0x93d00000, 0x4028201f, "1", 0 }, /* tne rs1+%g0 */
492*59052Storek { "tnz",        0x93d02000, 0x402fc000, "i", 0 }, /* tne %g0+i */
493*59052Storek { "tnz",	0x93d02000, 0x40280000, "1+i", 0 },
494*59052Storek { "tnz",	0x93d00000, 0x40282000, "1+2", 0 },
495*59052Storek { "tnz",        0x93d00000, 0x4028201f, "1", 0 }, /* tne rs1+%g0 */
49659051Storek { "tleu",       0x8bd02000, 0x502fc000, "i", 0 }, /* tleu %g0+i */
49759051Storek { "tleu",	0x8bd02000, 0x50280000, "1+i", 0 },
49859051Storek { "tleu",	0x8bd00000, 0x50282000, "1+2", 0 },
49959051Storek { "tleu",       0x8bd00000, 0x5028201f, "1", 0 }, /* tleu rs1+%g0 */
50059051Storek { "ta",	        0x91d02000, 0x402fc000, "i", 0 }, /* ta %g0+i */
50159051Storek { "ta",		0x91d02000, 0x402d0000, "1+i", 0 },
50259051Storek { "ta",		0x91d00000, 0x40282000, "1+2", 0 },
50359051Storek { "ta",         0x91d00000, 0x4028201f, "1", 0 }, /* ta rs1+%g0 */
504*59052Storek { "t",	        0x91d02000, 0x402fc000, "i", 0 }, /* ta %g0+i */
505*59052Storek { "t",		0x91d02000, 0x402d0000, "1+i", 0 },
506*59052Storek { "t",		0x91d00000, 0x40282000, "1+2", 0 },
507*59052Storek { "t",		0x91d00000, 0x4028201f, "1", 0 }, /* ta rs1+%g0 */
50859051Storek { "tvs",	0x8fd02000, 0x502fc000, "i", 0 }, /* tvs %g0+i */
50959051Storek { "tvs",	0x8fd02000, 0x50280000, "1+i", 0 },
51059051Storek { "tvs",	0x8fd00000, 0x50282000, "1+2", 0 },
51159051Storek { "tvs",        0x8fd00000, 0x5028201f, "1", 0 }, /* tvs rs1+%g0 */
51259051Storek { "tneg",	0x8dd02000, 0x502fc000, "i", 0 }, /* tneg %g0+i */
51359051Storek { "tneg",	0x8dd02000, 0x50280000, "1+i", 0 },
51459051Storek { "tneg",	0x8dd00000, 0x50282000, "1+2", 0 },
51559051Storek { "tneg",	0x8dd00000, 0x5028201f, "1", 0 }, /* tneg rs1+%g0 */
51659051Storek { "tcs",        0x8bd02000, 0x502fc000, "i", 0 }, /* tcs %g0+i */
51759051Storek { "tcs",	0x8bd02000, 0x50280000, "1+i", 0 },
51859051Storek { "tcs",	0x8bd00000, 0x50282000, "1+2", 0 },
51959051Storek { "tcs",	0x8bd00000, 0x5028201f, "1", 0 }, /* tcs rs1+%g0 */
52059051Storek { "tl",		0x87d02000, 0x502fc000, "i", 0 }, /* tl %g0+i */
52159051Storek { "tl",		0x87d02000, 0x50280000, "1+i", 0 },
52259051Storek { "tl",		0x87d00000, 0x50282000, "1+2", 0 },
52359051Storek { "tl",		0x87d00000, 0x5028201f, "1", 0 }, /* tl rs1+%g0 */
52459051Storek { "tle",	0x85d02000, 0x502fc000, "i", 0 }, /* tle %g0+i */
52559051Storek { "tle",	0x85d02000, 0x50280000, "1+i", 0 },
52659051Storek { "tle",	0x85d00000, 0x50282000, "1+2", 0 },
52759051Storek { "tle",	0x85d00000, 0x5028201f, "1", 0 }, /* tle rs1+%g0 */
52859051Storek { "te",	        0x83d02000, 0x502fc000, "i", 0 }, /* te %g0+i */
52959051Storek { "te",		0x83d02000, 0x50280000, "1+i", 0 },
53059051Storek { "te",		0x83d00000, 0x50282000, "1+2", 0 },
53159051Storek { "te",         0x83d00000, 0x5028201f, "1", 0 }, /* te rs1+%g0 */
532*59052Storek { "tz",	        0x83d02000, 0x502fc000, "i", 0 }, /* te %g0+i */
533*59052Storek { "tz",		0x83d02000, 0x50280000, "1+i", 0 },
534*59052Storek { "tz",		0x83d00000, 0x50282000, "1+2", 0 },
535*59052Storek { "tz",         0x83d00000, 0x5028201f, "1", 0 }, /* te rs1+%g0 */
53659051Storek { "tn",		0x81d02000, 0x502fc000, "i", 0 }, /* tn %g0+i */
53759051Storek { "tn",	        0x81d02000, 0x50280000, "1+i", 0 },
53859051Storek { "tn",		0x81d00000, 0x50282000, "1+2", 0 },
53959051Storek { "tn",         0x81d00000, 0x5028201f, "1", 0 }, /* tn rs1+%g0 */
54059051Storek 
54159051Storek { "tsubcc",     0x81080000, 0x40f00000, "1,2,d", 0 },
54259051Storek { "tsubcc",     0x81082000, 0x40f00000, "1,i,d", 0 },
54359051Storek { "tsubcctv",   0x80580000, 0x40a00000, "1,2,d", 0 },
54459051Storek { "tsubcctv",   0x80582000, 0x40a00000, "1,i,d", 0 },
54559051Storek 
54659051Storek { "unimp",      0x00000000, 0x00000000, "l", 0 },
54759051Storek 
54859051Storek { "iflush",     0x81d80000, 0x40202000, "1+2", 0 },
54959051Storek { "iflush",     0x81d82000, 0x40200000, "1+i", 0 },
55059051Storek 
55159051Storek { "xnorcc",     0x80b80000, 0x41400000, "1,2,d", 0 },
55259051Storek { "xnorcc",	0x80b82000, 0x41400000, "1,i,d", 0 },
55359051Storek { "xnorcc",	0x80b82000, 0x41400000, "i,1,d", 0 },
55459051Storek { "xorcc",      0x80980000, 0x41600000, "1,2,d", 0 },
55559051Storek { "xorcc",	0x80982000, 0x41600000, "1,i,d", 0 },
55659051Storek { "xorcc",	0x80982000, 0x41600000, "i,1,d", 0 },
55759051Storek { "xnor",       0x80380000, 0x41c00000, "1,2,d", 0 },
55859051Storek { "xnor",	0x80382000, 0x41c00000, "1,i,d", 0 },
55959051Storek { "xnor",	0x80382000, 0x41c00000, "i,1,d", 0 },
56059051Storek { "xor",        0x80180000, 0x41e00000, "1,2,d", 0 },
56159051Storek { "xor",	0x80182000, 0x41e00000, "1,i,d", 0 },
56259051Storek { "xor",	0x80182000, 0x41e00000, "i,1,d", 0 },
56359051Storek 
564*59052Storek { "btog",	0x80180000, 0x41e00000, "2,r", 0 },	/* xor rsd,rs2,rsd */
565*59052Storek { "btog",	0x80182000, 0x41e00000, "i,r", 0 },	/* xor rsd,i,rsd */
566*59052Storek 
567*59052Storek { "not",	0x80380000, 0x41c00000, "1,d", 0 },	/* xnor rs1,%g0,rsd */
568*59052Storek { "not",	0x80380000, 0x41c00000, "r", 0 },	/* xnor rs1,%g0,rsd */
569*59052Storek 
57059051Storek { "fpop1",      0x81a00000, 0x40580000, "[1+2],d", 0 },
57159051Storek { "fpop2",      0x81a80000, 0x40500000, "[1+2],d", 0 },
57259051Storek 
57359051Storek { "fb",         0x31800000, 0xc0400000, ",al", 1 },
57459051Storek { "fb",         0x11800000, 0xc0400000, "l", 1 },
57559051Storek { "fba",        0x31800000, 0xc0400000, ",al", 1 },
57659051Storek { "fba",        0x11800000, 0xc0400000, "l", 1 },
57759051Storek { "fbn",        0x21800000, 0xc0400000, ",al", 1 },
57859051Storek { "fbn",        0x01800000, 0xc0400000, "l", 1 },
57959051Storek { "fbu",        0x2f800000, 0xc0400000, ",al", 1 },
58059051Storek { "fbu",        0x0f800000, 0xc0400000, "l", 1 },
58159051Storek { "fbg",        0x2d800000, 0xc0400000, ",al", 1 },
58259051Storek { "fbg",        0x0d800000, 0xc0400000, "l", 1 },
58359051Storek { "fbug",       0x2b800000, 0xc0400000, ",al", 1 },
58459051Storek { "fbug",       0x0b800000, 0xc0400000, "l", 1 },
58559051Storek { "fbl",        0x29800000, 0xc0400000, ",al", 1 },
58659051Storek { "fbl",        0x09800000, 0xc0400000, "l", 1 },
58759051Storek { "fbul",       0x27800000, 0xc0400000, ",al", 1 },
58859051Storek { "fbul",       0x07800000, 0xc0400000, "l", 1 },
58959051Storek { "fblg",       0x25800000, 0xc0400000, ",al", 1 },
59059051Storek { "fblg",       0x05800000, 0xc0400000, "l", 1 },
59159051Storek { "fbne",       0x23800000, 0xc0400000, ",al", 1 },
59259051Storek { "fbne",       0x03800000, 0xc0400000, "l", 1 },
59359051Storek { "fbe",        0x33800000, 0xc0400000, ",al", 1 },
59459051Storek { "fbe",        0x13800000, 0xc0400000, "l", 1 },
59559051Storek { "fbue",       0x35800000, 0xc0400000, ",al", 1 },
59659051Storek { "fbue",       0x15800000, 0xc0400000, "l", 1 },
59759051Storek { "fbge",       0x37800000, 0xc0400000, ",al", 1 },
59859051Storek { "fbge",       0x17800000, 0xc0400000, "l", 1 },
59959051Storek { "fbuge",      0x39800000, 0xc0400000, ",al", 1 },
60059051Storek { "fbuge",      0x19800000, 0xc0400000, "l", 1 },
60159051Storek { "fble",       0x3b800000, 0xc0400000, ",al", 1 },
60259051Storek { "fble",       0x1b800000, 0xc0400000, "l", 1 },
60359051Storek { "fbule",      0x3d800000, 0xc0400000, ",al", 1 },
60459051Storek { "fbule",      0x1d800000, 0xc0400000, "l", 1 },
60559051Storek { "fbo",        0x3f800000, 0xc0400000, ",al", 1 },
60659051Storek { "fbo",        0x1f800000, 0xc0400000, "l", 1 },
60759051Storek 
60859051Storek { "cba",        0x31c00000, 0xce000000, ",al", 1 },
60959051Storek { "cba",        0x11c00000, 0xce000000, "l", 1 },
61059051Storek { "cbn",        0x21c00000, 0xde000000, ",al", 1 },
61159051Storek { "cbn",        0x01c00000, 0xde000000, "l", 1 },
61259051Storek { "cb3",        0x2fc00000, 0xc0000000, ",al", 1 },
61359051Storek { "cb3",        0x0fc00000, 0xc0000000, "l", 1 },
61459051Storek { "cb2",        0x2dc00000, 0xc0000000, ",al", 1 },
61559051Storek { "cb2",        0x0dc00000, 0xc0000000, "l", 1 },
61659051Storek { "cb23",       0x2bc00000, 0xc0000000, ",al", 1 },
61759051Storek { "cb23",       0x0bc00000, 0xc0000000, "l", 1 },
61859051Storek { "cb1",        0x29c00000, 0xc0000000, ",al", 1 },
61959051Storek { "cb1",        0x09c00000, 0xc0000000, "l", 1 },
62059051Storek { "cb13",       0x27c00000, 0xc0000000, ",al", 1 },
62159051Storek { "cb13",       0x07c00000, 0xc0000000, "l", 1 },
62259051Storek { "cb12",       0x25c00000, 0xc0000000, ",al", 1 },
62359051Storek { "cb12",       0x05c00000, 0xc0000000, "l", 1 },
62459051Storek { "cb123",      0x23c00000, 0xc0000000, ",al", 1 },
62559051Storek { "cb123",      0x03c00000, 0xc0000000, "l", 1 },
62659051Storek { "cb0",        0x33c00000, 0xc0000000, ",al", 1 },
62759051Storek { "cb0",        0x13c00000, 0xc0000000, "l", 1 },
62859051Storek { "cb03",       0x35c00000, 0xc0000000, ",al", 1 },
62959051Storek { "cb03",       0x15c00000, 0xc0000000, "l", 1 },
63059051Storek { "cb02",       0x37c00000, 0xc0000000, ",al", 1 },
63159051Storek { "cb02",       0x17c00000, 0xc0000000, "l", 1 },
63259051Storek { "cb023",      0x39c00000, 0xc0000000, ",al", 1 },
63359051Storek { "cb023",      0x19c00000, 0xc0000000, "l", 1 },
63459051Storek { "cb013",      0x3dc00000, 0xc0000000, ",al", 1 },
63559051Storek { "cb013",      0x1dc00000, 0xc0000000, "l", 1 },
63659051Storek { "cb012",      0x3fc00000, 0xc0000000, ",al", 1 },
63759051Storek { "cb012",      0x1fc00000, 0xc0000000, "l", 1 },
63859051Storek 
63959051Storek { "fstoi",      0x81a01a20, 0x400025c0, "f,g", 0 },
64059051Storek { "fdtoi",      0x81a01a40, 0x400025a0, "f,g", 0 },
64159051Storek { "fxtoi",      0x81a01a60, 0x40002580, "f,g", 0 },
64259051Storek 
64359051Storek { "fitox",      0x81a01980, 0x40002660, "f,g", 0 },
64459051Storek { "fitod",      0x81a01900, 0x400026e0, "f,g", 0 },
64559051Storek { "fitos",      0x81a01880, 0x40002660, "f,g", 0 },
64659051Storek 
64759051Storek { "fstod",      0x81a01920, 0x400026c0, "f,g", 0 },
64859051Storek { "fstox",      0x81a019a0, 0x40002640, "f,g", 0 },
64959051Storek { "fdtos",      0x81a018c0, 0x40002720, "f,g", 0 },
65059051Storek { "fdtox",      0x81a019c0, 0x40002620, "f,g", 0 },
65159051Storek { "fxtos",      0x81a018e0, 0x40002700, "f,g", 0 },
65259051Storek { "fxtod",      0x81a01960, 0x40002680, "f,g", 0 },
65359051Storek 
65459051Storek { "fdivx",      0x81a009e0, 0x40083600, "e,f,g", 0 },
65559051Storek { "fdivd",      0x81a009c0, 0x40003620, "e,f,g", 0 },
65659051Storek { "fdivs",      0x81a009a0, 0x40003640, "e,f,g", 0 },
65759051Storek { "fmuls",      0x81a00920, 0x400036c0, "e,f,g", 0 },
65859051Storek { "fmuld",      0x81a00940, 0x400036a0, "e,f,g", 0 },
65959051Storek { "fmulx",      0x81a00960, 0x40003680, "e,f,g", 0 },
66059051Storek 
66159051Storek { "fsqrts",     0x81a00520, 0x40003ac0, "f,g", 0 },
66259051Storek { "fsqrtd",     0x81a00540, 0x40003aa8, "f,g", 0 },
66359051Storek { "fsqrtx",     0x81a00560, 0x40003a80, "f,g", 0 },
66459051Storek 
66559051Storek { "fabss",      0x81a00120, 0x40003ec0, "f,g", 0 },
66659051Storek { "fnegs",      0x81a000a0, 0x40003f40, "f,g", 0 },
66759051Storek { "fmovs",      0x81a00020, 0x40003fc0, "f,g", 0 },
66859051Storek 
66959051Storek { "fsubx",      0x81a008e0, 0x40003700, "e,f,g", 0 },
67059051Storek { "fsubd",      0x81a008c0, 0x40003720, "e,f,g", 0 },
67159051Storek { "fsubs",      0x81a008a0, 0x40003740, "e,f,g", 0 },
67259051Storek { "faddx",      0x81a00860, 0x40003780, "e,f,g", 0 },
67359051Storek { "faddd",      0x81a00840, 0x400037a0, "e,f,g", 0 },
67459051Storek { "fadds",      0x81a00820, 0x400037c0, "e,f,g", 0 },
67559051Storek 
67659051Storek { "fcmpex",     0x81a80ae0, 0x40003500, "e,f", 0 },
67759051Storek { "fcmped",     0x81a80ac0, 0x40003520, "e,f", 0 },
67859051Storek { "fcmpes",     0x81a80aa0, 0x40003540, "e,f", 0 },
67959051Storek { "fcmpx",      0x81a80a60, 0x40003580, "e,f", 0 },
68059051Storek { "fcmpd",      0x81a80a40, 0x400035a0, "e,f", 0 },
68159051Storek { "fcmps",      0x81a80a20, 0x400035c0, "e,f", 0 },
68259051Storek 
68359051Storek { "cpop1",      0x81b00000, 0x40480000, "[1+2],d", 0 },
68459051Storek { "cpop2",      0x81b80000, 0x40400000, "[1+2],d", 0 },
68559051Storek };
68659051Storek 
68759051Storek #define NUMOPCODES ((sizeof sparc_opcodes)/(sizeof sparc_opcodes[0]))
68859051Storek 
689