xref: /onnv-gate/usr/src/lib/libdisasm/sparc/instr.c (revision 10271:7c80b70bb8de)
15198Sjmcp /*
25198Sjmcp  * CDDL HEADER START
35198Sjmcp  *
45198Sjmcp  * The contents of this file are subject to the terms of the
55198Sjmcp  * Common Development and Distribution License (the "License").
65198Sjmcp  * You may not use this file except in compliance with the License.
75198Sjmcp  *
85198Sjmcp  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95198Sjmcp  * or http://www.opensolaris.org/os/licensing.
105198Sjmcp  * See the License for the specific language governing permissions
115198Sjmcp  * and limitations under the License.
125198Sjmcp  *
135198Sjmcp  * When distributing Covered Code, include this CDDL HEADER in each
145198Sjmcp  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
155198Sjmcp  * If applicable, add the following below this CDDL HEADER, with the
165198Sjmcp  * fields enclosed by brackets "[]" replaced with your own identifying
175198Sjmcp  * information: Portions Copyright [yyyy] [name of copyright owner]
185198Sjmcp  *
195198Sjmcp  * CDDL HEADER END
205198Sjmcp  */
215198Sjmcp 
225198Sjmcp /*
23*10271SJason.Beloro@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
245198Sjmcp  * Use is subject to license terms.
255198Sjmcp  */
265198Sjmcp 
275198Sjmcp /*
28*10271SJason.Beloro@Sun.COM  * Copyright 2009 Jason King.  All rights reserved.
295198Sjmcp  * Use is subject to license terms.
305198Sjmcp  */
315198Sjmcp 
325198Sjmcp #include "libdisasm.h"
335198Sjmcp #include "libdisasm_impl.h"
345198Sjmcp #include "dis_sparc.h"
355198Sjmcp #include "dis_sparc_fmt.h"
365198Sjmcp 
375198Sjmcp #define	INVALID                \
385198Sjmcp {                              \
395198Sjmcp 	.in_type = INST_NONE,  \
405198Sjmcp 	.in_arch = 0,          \
415198Sjmcp 	.in_data = {           \
425198Sjmcp 		.in_tbl = NULL \
435198Sjmcp 	}                      \
445198Sjmcp }
455198Sjmcp 
465198Sjmcp #define	INVALIDA(_arch)        \
475198Sjmcp {                              \
485198Sjmcp 	.in_type = INST_NONE,  \
495198Sjmcp 	.in_arch = _arch,      \
505198Sjmcp 	.in_data = {           \
515198Sjmcp 		.in_tbl = NULL \
525198Sjmcp 	}                      \
535198Sjmcp }
545198Sjmcp 
555198Sjmcp #define	INST(_name, _arch, _flags)           \
565198Sjmcp {                                            \
575198Sjmcp 	.in_type = INST_DEF,	             \
585198Sjmcp 	.in_arch = _arch,		     \
595198Sjmcp 	.in_data = {			     \
605198Sjmcp 		.in_def = {		     \
615198Sjmcp 			.in_name   = _name,  \
625198Sjmcp 			.in_flags  = _flags  \
635198Sjmcp 		}			     \
645198Sjmcp 	}				     \
655198Sjmcp }
665198Sjmcp 
675198Sjmcp #define	TABLE(_name, _arch)      \
685198Sjmcp {                                \
695198Sjmcp 	.in_type = INST_TBL,     \
705198Sjmcp 	.in_arch = _arch,        \
715198Sjmcp 	.in_data = {             \
725198Sjmcp 		.in_tbl = &_name \
735198Sjmcp 	}                       \
745198Sjmcp }
755198Sjmcp 
765198Sjmcp #define	OVERLAY(_idx, _inst) \
775198Sjmcp {                            \
785198Sjmcp 	.ov_idx  = _idx,     \
795198Sjmcp 	.ov_inst = _inst     \
805198Sjmcp }
815198Sjmcp 
825198Sjmcp #define	OVERLAY_END { .ov_idx = -1, .ov_inst = INVALID }
835198Sjmcp 
845198Sjmcp #define	V8	DIS_SPARC_V8
855198Sjmcp #define	V9	DIS_SPARC_V9
865198Sjmcp #define	V9S	DIS_SPARC_V9_SGI
875198Sjmcp #define	V9O	DIS_SPARC_V9_OPL
885198Sjmcp #define	VALL	V8|V9|V9S|V9O
895198Sjmcp 
905198Sjmcp /* branches */
915198Sjmcp static const inst_t BPcc_table_def[16] = {
925198Sjmcp 	INST("bn",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
935198Sjmcp 	INST("be",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
945198Sjmcp 	INST("ble",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
955198Sjmcp 	INST("bl",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
965198Sjmcp 
975198Sjmcp 	INST("bleu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
985198Sjmcp 	INST("bcs",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
995198Sjmcp 	INST("bneg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1005198Sjmcp 	INST("bvs",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1015198Sjmcp 
1025198Sjmcp 	INST("ba",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1035198Sjmcp 	INST("bne",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1045198Sjmcp 	INST("bg",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1055198Sjmcp 	INST("bge",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1065198Sjmcp 
1075198Sjmcp 	INST("bgu",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1085198Sjmcp 	INST("bcc",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1095198Sjmcp 	INST("bpos", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
1105198Sjmcp 	INST("bvc",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19))
1115198Sjmcp };
1125198Sjmcp 
1137718SJason.Beloro@Sun.COM 
1145198Sjmcp static const table_t BPcc_table = {
1155198Sjmcp 	.tbl_field = 28,
1165198Sjmcp 	.tbl_len   = 4,
1175198Sjmcp 	.tbl_ovp   = NULL,
1185198Sjmcp 	.tbl_fmt   = fmt_branch,
1195198Sjmcp 	.tbl_inp   = BPcc_table_def
1205198Sjmcp };
1215198Sjmcp 
1225198Sjmcp static const inst_t Bicc_table_def[16] = {
1235198Sjmcp 	INST("bn",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1245198Sjmcp 	INST("be",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1255198Sjmcp 	INST("ble",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1265198Sjmcp 	INST("bl",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1275198Sjmcp 
1285198Sjmcp 	INST("bleu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1295198Sjmcp 	/* docs say it's 'bcs' but disassembler calles it synonym 'blu' */
1305198Sjmcp 	INST("blu",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1315198Sjmcp 	INST("bneg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1325198Sjmcp 	INST("bvs",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1335198Sjmcp 
1345198Sjmcp 	INST("ba",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1355198Sjmcp 	INST("bne",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1365198Sjmcp 	INST("bg",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1375198Sjmcp 	INST("bge",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1385198Sjmcp 
1395198Sjmcp 	INST("bgu",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1405198Sjmcp 	/*
1415198Sjmcp 	 * while the docs say it's officially 'bcc', existing disassembler
1425198Sjmcp 	 * uses the synonym bgeu
1435198Sjmcp 	 */
1445198Sjmcp 	INST("bgeu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1455198Sjmcp 	INST("bpos", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
1465198Sjmcp 	INST("bvc",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
1475198Sjmcp };
1485198Sjmcp 
1495198Sjmcp static const table_t Bicc_table = {
1505198Sjmcp 	.tbl_field = 28,
1515198Sjmcp 	.tbl_len   = 4,
1525198Sjmcp 	.tbl_ovp   = NULL,
1535198Sjmcp 	.tbl_fmt   = fmt_branch,
1545198Sjmcp 	.tbl_inp   = Bicc_table_def
1555198Sjmcp };
1565198Sjmcp 
1575198Sjmcp static const inst_t BPr_table_def[16] = {
158*10271SJason.Beloro@Sun.COM 	INVALID,
1595198Sjmcp 	INST("brz",   V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1605198Sjmcp 	INST("brlez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1615198Sjmcp 	INST("brlz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1625198Sjmcp 
163*10271SJason.Beloro@Sun.COM 	INVALID,
1645198Sjmcp 	INST("brnz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1655198Sjmcp 	INST("brgz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1665198Sjmcp 	INST("brgez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
1675198Sjmcp 
1685198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
1695198Sjmcp };
1705198Sjmcp 
1715198Sjmcp static const table_t BPr_table = {
1725198Sjmcp 	.tbl_field = 28,
1735198Sjmcp 	.tbl_len   = 4,
1745198Sjmcp 	.tbl_ovp   = NULL,
1755198Sjmcp 	.tbl_fmt   = fmt_branch,
1765198Sjmcp 	.tbl_inp   = BPr_table_def
1775198Sjmcp };
1785198Sjmcp 
1795198Sjmcp static const inst_t FBPfcc_table_def[16] = {
1805198Sjmcp 	INST("fbn",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1815198Sjmcp 	INST("fbne",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1825198Sjmcp 	INST("fblg",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1835198Sjmcp 	INST("fbul",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1845198Sjmcp 
1855198Sjmcp 	INST("fbl",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1865198Sjmcp 	INST("fbug",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1875198Sjmcp 	INST("fbg",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1885198Sjmcp 	INST("fbu",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1895198Sjmcp 
1905198Sjmcp 	INST("fba",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1915198Sjmcp 	INST("fbe",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1925198Sjmcp 	INST("fbue",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1935198Sjmcp 	INST("fbge",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1945198Sjmcp 
1955198Sjmcp 	INST("fbuge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1965198Sjmcp 	INST("fble",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1975198Sjmcp 	INST("fbule", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
1985198Sjmcp 	INST("fbo",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC))
1995198Sjmcp };
2005198Sjmcp 
2015198Sjmcp static const table_t FBPfcc_table = {
2025198Sjmcp 	.tbl_field = 28,
2035198Sjmcp 	.tbl_len   = 4,
2045198Sjmcp 	.tbl_ovp   = NULL,
2055198Sjmcp 	.tbl_fmt   = fmt_branch,
2065198Sjmcp 	.tbl_inp   = FBPfcc_table_def
2075198Sjmcp };
2085198Sjmcp 
2095198Sjmcp static const inst_t FBfcc_table_def[16] = {
2105198Sjmcp 	INST("fbn",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2115198Sjmcp 	INST("fbne",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2125198Sjmcp 	INST("fblg",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2135198Sjmcp 	INST("fbul",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2145198Sjmcp 
2155198Sjmcp 	INST("fbl",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2165198Sjmcp 	INST("fbug",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2175198Sjmcp 	INST("fbg",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2185198Sjmcp 	INST("fbu",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2195198Sjmcp 
2205198Sjmcp 	INST("fba",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2215198Sjmcp 	INST("fbe",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2225198Sjmcp 	INST("fbue",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2235198Sjmcp 	INST("fbge",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2245198Sjmcp 
2255198Sjmcp 	INST("fbuge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2265198Sjmcp 	INST("fble",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2275198Sjmcp 	INST("fbule", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2285198Sjmcp 	INST("fbo",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
2295198Sjmcp };
2305198Sjmcp 
2315198Sjmcp static const table_t FBfcc_table = {
2325198Sjmcp 	.tbl_field = 28,
2335198Sjmcp 	.tbl_len   = 4,
2345198Sjmcp 	.tbl_ovp   = NULL,
2355198Sjmcp 	.tbl_fmt   = fmt_branch,
2365198Sjmcp 	.tbl_inp   = FBfcc_table_def
2375198Sjmcp };
2385198Sjmcp 
2395198Sjmcp static const inst_t CBccc_table_def[16] = {
2405198Sjmcp 	INST("cbn",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2415198Sjmcp 	INST("cb123", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2425198Sjmcp 	INST("cb12",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2435198Sjmcp 	INST("cb13",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2445198Sjmcp 	INST("cb1",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2455198Sjmcp 	INST("cb23",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2465198Sjmcp 	INST("cb2",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2475198Sjmcp 	INST("cb3",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2485198Sjmcp 	INST("cba",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2495198Sjmcp 	INST("cb0",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2505198Sjmcp 	INST("cb03",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2515198Sjmcp 	INST("cb02",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2525198Sjmcp 	INST("cb023", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2535198Sjmcp 	INST("cb01",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2545198Sjmcp 	INST("cb013", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
2555198Sjmcp 	INST("cb012", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
2565198Sjmcp };
2575198Sjmcp 
2585198Sjmcp static const table_t CBccc_table = {
2595198Sjmcp 	.tbl_field = 28,
2605198Sjmcp 	.tbl_len   = 4,
2615198Sjmcp 	.tbl_ovp   = NULL,
2625198Sjmcp 	.tbl_fmt   = fmt_branch,
2635198Sjmcp 	.tbl_inp   = CBccc_table_def
2645198Sjmcp };
2655198Sjmcp 
2665198Sjmcp static const inst_t branch_table_def[8] = {
2675198Sjmcp 	INST("unimp",		VALL,  0),
2685198Sjmcp 	TABLE(BPcc_table,	V9|V9S),
2695198Sjmcp 	TABLE(Bicc_table,	VALL),
2705198Sjmcp 	TABLE(BPr_table,	V9|V9S),
2715198Sjmcp 
2725198Sjmcp 	INST("sethi",		VALL,  0),
2735198Sjmcp 	TABLE(FBPfcc_table,	V9|V9S),
2745198Sjmcp 	TABLE(FBfcc_table,	VALL),
2755198Sjmcp 	TABLE(CBccc_table,	V8)
2765198Sjmcp };
2775198Sjmcp 
2785198Sjmcp static const overlay_t branch_ov_table[] = {
2795198Sjmcp 	OVERLAY(0x00, INST("illtrap", V9|V9S, 0)),
2805198Sjmcp 	OVERLAY_END
2815198Sjmcp };
2825198Sjmcp 
2835198Sjmcp static const table_t branch_table = {
2845198Sjmcp 	.tbl_field = 24,
2855198Sjmcp 	.tbl_len   = 3,
2865198Sjmcp 	.tbl_ovp   = branch_ov_table,
2875198Sjmcp 	.tbl_fmt   = fmt_sethi,
2885198Sjmcp 	.tbl_inp   = branch_table_def
2895198Sjmcp };
2905198Sjmcp 
2915198Sjmcp /* load/stores */
2925198Sjmcp static const inst_t ls_table_def[64] = {
2935198Sjmcp 	/* 0x00 */
2945198Sjmcp 	INST("ld",		VALL,   0),
2955198Sjmcp 	INST("ldub",		VALL,   0),
2965198Sjmcp 	INST("lduh",		VALL,   0),
2975198Sjmcp 	INST("ldd",		VALL,   0),
2985198Sjmcp 
2995198Sjmcp 	INST("st",		VALL,   FLG_STORE),
3005198Sjmcp 	INST("stb",		VALL,   FLG_STORE),
3015198Sjmcp 	INST("sth",		VALL,   FLG_STORE),
3025198Sjmcp 	INST("std",		VALL,   FLG_STORE),
3035198Sjmcp 
3045198Sjmcp 	/* 0x08 */
3055198Sjmcp 	INST("ldsw",		V9|V9S, 0),
3065198Sjmcp 	INST("ldsb",		VALL,   0),
3075198Sjmcp 	INST("ldsh",		VALL,   0),
3085198Sjmcp 	INST("ldx",		V9|V9S, 0),
3095198Sjmcp 
3105198Sjmcp 	INVALID,
3115198Sjmcp 	INST("ldstub",		VALL,   0),
3125198Sjmcp 	INST("stx",		V9|V9S, FLG_STORE),
3135198Sjmcp 	INST("swap",		VALL,   0),
3145198Sjmcp 
3155198Sjmcp 	/* 0x10 */
3165198Sjmcp 	INST("lda",		VALL,   FLG_ASI),
3175198Sjmcp 	INST("lduba",		VALL,   FLG_ASI),
3185198Sjmcp 	INST("lduha",		VALL,   FLG_ASI),
3195198Sjmcp 	INST("ldda",		VALL,   FLG_ASI),
3205198Sjmcp 
3215198Sjmcp 	INST("sta",		VALL,   FLG_STORE|FLG_ASI),
3225198Sjmcp 	INST("stba",		VALL,   FLG_STORE|FLG_ASI),
3235198Sjmcp 	INST("stha",		VALL,   FLG_STORE|FLG_ASI),
3245198Sjmcp 	INST("stda",		VALL,   FLG_STORE|FLG_ASI),
3255198Sjmcp 
3265198Sjmcp 	/* 0x18 */
3275198Sjmcp 	INST("ldswa",		V9|V9S, FLG_ASI),
3285198Sjmcp 	INST("ldsba",		VALL,   FLG_ASI),
3295198Sjmcp 	INST("ldsha",		VALL,   FLG_ASI),
3305198Sjmcp 	INST("ldxa",		V9|V9S, FLG_ASI),
3315198Sjmcp 
3325198Sjmcp 	INVALID,
3335198Sjmcp 	INST("ldstuba",		VALL,   FLG_ASI),
3345198Sjmcp 	INST("stxa",		V9|V9S, FLG_STORE|FLG_ASI),
3355198Sjmcp 	INST("swapa",		VALL,   FLG_ASI),
3365198Sjmcp 
3375198Sjmcp 	/* 0x20 */
3385198Sjmcp 	INST("ld",		VALL,   FLG_RD(REG_FP)),
3395198Sjmcp 	/* ldx on v9 */
3405198Sjmcp 	INST("ld",		VALL,   FLG_RD(REG_FSR)),
3415198Sjmcp 	INST("ldq",		V9|V9S, FLG_RD(REG_FPQ)),
3425198Sjmcp 	INST("ldd",		VALL,   FLG_RD(REG_FPD)),
3435198Sjmcp 
3445198Sjmcp 	INST("st",		VALL,   FLG_STORE|FLG_RD(REG_FP)),
3455198Sjmcp 	/* stx on v9 */
3465198Sjmcp 	INST("st",		VALL,   FLG_STORE|FLG_RD(REG_FSR)),
3475198Sjmcp 	INST("stq",		VALL,   FLG_STORE|FLG_RD(REG_FPQ)),
3485198Sjmcp 	INST("std",		VALL,   FLG_STORE|FLG_RD(REG_FPD)),
3495198Sjmcp 
3505198Sjmcp 	/* 0x28 */
3515198Sjmcp 	INVALID,
3525198Sjmcp 	INVALID,
3535198Sjmcp 	INVALID,
3545198Sjmcp 	INVALID,
3555198Sjmcp 
3565198Sjmcp 	INVALID,
3575198Sjmcp 	INST("prefetch",		V9|V9S, 0),
3585198Sjmcp 	INVALID,
3595198Sjmcp 	INVALID,
3605198Sjmcp 
3615198Sjmcp 	/* 0x30 */
3625198Sjmcp 	INST("ld",		V8,	FLG_RD(REG_CP)),
3635198Sjmcp 	INST("ld",		V8,	FLG_RD(REG_CSR)),
3645198Sjmcp 	INST("ldqa",		V9|V9S,	FLG_ASI|FLG_RD(REG_FPQ)),
3655198Sjmcp 	INST("ldd",		V8,	FLG_RD(REG_CP)),
3665198Sjmcp 
3675198Sjmcp 	INST("st",		V8,	FLG_STORE|FLG_RD(REG_CP)),
3685198Sjmcp 	INST("st",		V8,	FLG_STORE|FLG_RD(REG_CSR)),
3695198Sjmcp 	INST("std",		V8,	FLG_STORE|FLG_RD(REG_CQ)),
3705198Sjmcp 	INST("std",		V8,	FLG_STORE|FLG_RD(REG_CP)),
3715198Sjmcp 
3725198Sjmcp 	/* 0x38 */
3735198Sjmcp 	INVALID,
3745198Sjmcp 	INVALID,
3755198Sjmcp 	INVALID,
3765198Sjmcp 	INVALID,
3775198Sjmcp 
3785198Sjmcp 	INST("casa",		V9|V9S, 0),
3795198Sjmcp 	INST("prefetcha",	V9|V9S, FLG_STORE|FLG_ASI),
3805198Sjmcp 	INST("casxa",		V9|V9S, 0),
3815198Sjmcp 	INVALID
3825198Sjmcp };
3835198Sjmcp 
3845198Sjmcp static const overlay_t ld_ov_table[] = {
3855198Sjmcp 	OVERLAY(0x10, INST("lduwa", V9|V9S, FLG_ASI|FLG_RD(REG_INT))),
3865198Sjmcp 	OVERLAY(0x14, INST("stwa",  V9|V9S,
3875198Sjmcp 		    FLG_STORE|FLG_ASI|FLG_RD(REG_INT))),
3885198Sjmcp 	OVERLAY(0x30, INST("lda",   V9|V9S, FLG_ASI|FLG_RD(REG_FP))),
3895198Sjmcp 	OVERLAY(0x33, INST("ldda",  V9|V9S, FLG_ASI|FLG_RD(REG_FPD))),
3905198Sjmcp 
3915198Sjmcp 	OVERLAY(0x34, INST("sta",   V9|V9S, FLG_STORE|FLG_ASI|FLG_RD(REG_FP))),
3925198Sjmcp 	OVERLAY(0x36, INST("stqa",  V9|V9S,
3935198Sjmcp 		    FLG_STORE|FLG_ASI|FLG_RD(REG_FPQ))),
3945198Sjmcp 	OVERLAY(0x37, INST("stda",  V9|V9S,
3955198Sjmcp 		    FLG_STORE|FLG_ASI|FLG_RD(REG_FPD))),
3965198Sjmcp 
3975198Sjmcp 	OVERLAY_END
3985198Sjmcp };
3995198Sjmcp 
4005198Sjmcp static const table_t ls_table = {
4015198Sjmcp 	.tbl_field = 24,
4025198Sjmcp 	.tbl_len   = 6,
4035198Sjmcp 	.tbl_ovp   = ld_ov_table,
4045198Sjmcp 	.tbl_fmt   = fmt_ls,
4055198Sjmcp 	.tbl_inp   = ls_table_def
4065198Sjmcp };
4075198Sjmcp 
4087718SJason.Beloro@Sun.COM 
4095198Sjmcp /* ALU operations */
4105198Sjmcp static const inst_t Tcc_table_def[16] = {
4115198Sjmcp 	INST("tn",   VALL, 0),
4125198Sjmcp 	INST("te",   VALL, 0),
4135198Sjmcp 	INST("tle",  VALL, 0),
4145198Sjmcp 	INST("tl",   VALL, 0),
4155198Sjmcp 
4165198Sjmcp 	INST("tleu", VALL, 0),
4175198Sjmcp 	INST("tcs",  VALL, 0),
4185198Sjmcp 	INST("tneg", VALL, 0),
4195198Sjmcp 	INST("tvs",  VALL, 0),
4205198Sjmcp 
4215198Sjmcp 	INST("ta",   VALL, 0),
4225198Sjmcp 	INST("tne",  VALL, 0),
4235198Sjmcp 	INST("tg",   VALL, 0),
4245198Sjmcp 	INST("tge",  VALL, 0),
4255198Sjmcp 
4265198Sjmcp 	INST("tgu",  VALL, 0),
4275198Sjmcp 	INST("tcc",  VALL, 0),
4285198Sjmcp 	INST("tpos", VALL, 0),
4295198Sjmcp 	INST("tvc",  VALL, 0)
4305198Sjmcp };
4315198Sjmcp 
4325198Sjmcp static const table_t Tcc_table = {
4335198Sjmcp 	.tbl_field = 28,
4345198Sjmcp 	.tbl_len   = 4,
4355198Sjmcp 	.tbl_ovp   = NULL,
4365198Sjmcp 	.tbl_fmt   = fmt_trap,
4375198Sjmcp 	.tbl_inp   = Tcc_table_def
4385198Sjmcp };
4395198Sjmcp 
4405198Sjmcp static const inst_t rwin_table_def[32] = {
4415198Sjmcp 	/* 0x00 */
4425198Sjmcp 	INST("saved",    V9|V9S, 0),
4435198Sjmcp 	INST("restored", V9|V9S, 0),
4445198Sjmcp 	INST("allclean", V9|V9S, 0),
4455198Sjmcp 	INST("otherw",   V9|V9S, 0),
4465198Sjmcp 
4475198Sjmcp 	INST("normalw",  V9|V9S, 0),
4485198Sjmcp 	INST("invalw",   V9|V9S, 0),
4495198Sjmcp 	INVALID,
4505198Sjmcp 	INVALID,
4515198Sjmcp 
4525198Sjmcp 	/* 0x08 */
4535198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
4545198Sjmcp 
4555198Sjmcp 	/* 0x10 */
4565198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
4575198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
4585198Sjmcp };
4595198Sjmcp 
4605198Sjmcp static const table_t rwin_table = {
4615198Sjmcp 	.tbl_field = 29,
4625198Sjmcp 	.tbl_len   = 5,
4635198Sjmcp 	.tbl_ovp   = NULL,
4645198Sjmcp 	.tbl_fmt   = fmt_regwin,
4655198Sjmcp 	.tbl_inp   = rwin_table_def
4665198Sjmcp };
4675198Sjmcp 
4685198Sjmcp static const inst_t tr_table_def[32] = {
4695198Sjmcp 	/* 0x00 */
4705198Sjmcp 	INST("done",  V9|V9S, 0),
4715198Sjmcp 	INST("retry", V9|V9S, 0),
4725198Sjmcp 	INVALID,
4735198Sjmcp 	INVALID,
4745198Sjmcp 
4755198Sjmcp 	INVALID,
4765198Sjmcp 	INVALID,
4775198Sjmcp 	INVALID,
4785198Sjmcp 	INVALID,
4795198Sjmcp 
4805198Sjmcp 	/* 0x08 */
4817718SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
4827718SJason.Beloro@Sun.COM 	INST("jpriv", V9, FLG_DISP(DISP19)),
4835198Sjmcp 
4845198Sjmcp 	/* 0x10 */
4855198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
486*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
4875198Sjmcp };
4885198Sjmcp 
4895198Sjmcp static const table_t tr_table = {
4905198Sjmcp 	.tbl_field = 29,
4915198Sjmcp 	.tbl_len   = 5,
4925198Sjmcp 	.tbl_ovp   = NULL,
4935198Sjmcp 	.tbl_fmt   = fmt_trap_ret,
4945198Sjmcp 	.tbl_inp   = tr_table_def
4955198Sjmcp };
4965198Sjmcp 
4975198Sjmcp static const inst_t movicc_table_def[16] = {
4985198Sjmcp 	INST("movn",   V9|V9S, 0),
4995198Sjmcp 	INST("move",   V9|V9S, 0),
5005198Sjmcp 	INST("movle",  V9|V9S, 0),
5015198Sjmcp 	INST("movl",   V9|V9S, 0),
5025198Sjmcp 
5035198Sjmcp 	INST("movleu", V9|V9S, 0),
5045198Sjmcp 	INST("movcs",  V9|V9S, 0),
5055198Sjmcp 	INST("movneg", V9|V9S, 0),
5065198Sjmcp 	INST("movvs",  V9|V9S, 0),
5075198Sjmcp 
5085198Sjmcp 	INST("mova",   V9|V9S, 0),
5095198Sjmcp 	INST("movne",  V9|V9S, 0),
5105198Sjmcp 	INST("movg",   V9|V9S, 0),
5115198Sjmcp 	INST("movge",  V9|V9S, 0),
5125198Sjmcp 
5135198Sjmcp 	INST("movgu",  V9|V9S, 0),
5145198Sjmcp 	INST("movcc",  V9|V9S, 0),
5155198Sjmcp 	INST("movpos", V9|V9S, 0),
5165198Sjmcp 	INST("movvc",  V9|V9S, 0)
5175198Sjmcp };
5185198Sjmcp 
5195198Sjmcp static const inst_t movfcc_table_def[16] = {
5205198Sjmcp 	INST("movn",   V9|V9S, 0),
5215198Sjmcp 	INST("movne",  V9|V9S, 0),
5225198Sjmcp 	INST("movlg",  V9|V9S, 0),
5235198Sjmcp 	INST("movul",  V9|V9S, 0),
5245198Sjmcp 
5255198Sjmcp 	INST("movl",   V9|V9S, 0),
5265198Sjmcp 	INST("movug",  V9|V9S, 0),
5275198Sjmcp 	INST("movg",   V9|V9S, 0),
5285198Sjmcp 	INST("movu",   V9|V9S, 0),
5295198Sjmcp 
5305198Sjmcp 	INST("mova",   V9|V9S, 0),
5315198Sjmcp 	INST("move",   V9|V9S, 0),
5325198Sjmcp 	INST("movue",  V9|V9S, 0),
5335198Sjmcp 	INST("movge",  V9|V9S, 0),
5345198Sjmcp 
5355198Sjmcp 	INST("movuge", V9|V9S, 0),
5365198Sjmcp 	INST("movle",  V9|V9S, 0),
5375198Sjmcp 	INST("movule", V9|V9S, 0),
5385198Sjmcp 	INST("movo",   V9|V9S, 0)
5395198Sjmcp };
5405198Sjmcp 
5415198Sjmcp static const table_t movfcc_table = {
5425198Sjmcp 	.tbl_field = 17,
5435198Sjmcp 	.tbl_len   = 4,
5445198Sjmcp 	.tbl_ovp   = NULL,
5455198Sjmcp 	.tbl_fmt   = fmt_movcc,
5465198Sjmcp 	.tbl_inp   = movfcc_table_def
5475198Sjmcp };
5485198Sjmcp 
5495198Sjmcp static const table_t movicc_table = {
5505198Sjmcp 	.tbl_field = 17,
5515198Sjmcp 	.tbl_len   = 4,
5525198Sjmcp 	.tbl_ovp   = NULL,
5535198Sjmcp 	.tbl_fmt   = fmt_movcc,
5545198Sjmcp 	.tbl_inp   = movicc_table_def
5555198Sjmcp };
5565198Sjmcp 
5575198Sjmcp static const inst_t movcc_table_def[2] = {
5585198Sjmcp 	TABLE(movfcc_table, V9|V9S),
5595198Sjmcp 	TABLE(movicc_table, V9|V9S)
5605198Sjmcp };
5615198Sjmcp 
5625198Sjmcp static const table_t movcc_table = {
5635198Sjmcp 	.tbl_field = 18,
5645198Sjmcp 	.tbl_len   = 1,
5655198Sjmcp 	.tbl_ovp   = NULL,
5665198Sjmcp 	.tbl_fmt   = NULL,
5675198Sjmcp 	.tbl_inp   = movcc_table_def
5685198Sjmcp };
5695198Sjmcp 
5705198Sjmcp static const inst_t movr_table_def[8] = {
5715198Sjmcp 	INVALID,
5725198Sjmcp 	/* aka movrz */
5735198Sjmcp 	INST("movre",   V9|V9S, 0),
5745198Sjmcp 	INST("movrlez", V9|V9S, 0),
5755198Sjmcp 	INST("movrlz",  V9|V9S, 0),
5765198Sjmcp 
5775198Sjmcp 	INVALID,
5785198Sjmcp 	/* aka movrnz */
5795198Sjmcp 	INST("movrne",  V9|V9S, 0),
5805198Sjmcp 	INST("movrgz",  V9|V9S, 0),
5815198Sjmcp 	INST("movrgez", V9|V9S, 0)
5825198Sjmcp };
5835198Sjmcp 
5845198Sjmcp static const table_t movr_table = {
5855198Sjmcp 	.tbl_field = 12,
5865198Sjmcp 	.tbl_len   = 3,
5875198Sjmcp 	.tbl_ovp   = NULL,
5885198Sjmcp 	.tbl_fmt   = fmt_movr,
5895198Sjmcp 	.tbl_inp   = movr_table_def
5905198Sjmcp };
5915198Sjmcp 
5925198Sjmcp static const inst_t FPop1_table_def[512] = {
5935198Sjmcp 	/* 0x000 */
5945198Sjmcp 	INVALID,
5955198Sjmcp 	INST("fmovs", VALL,
5965198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
5975198Sjmcp 	INST("fmovd", V9|V9S,
5985198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
5995198Sjmcp 	INST("fmovq", V9|V9S,
6005198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6015198Sjmcp 
6025198Sjmcp 	INVALID,
6035198Sjmcp 	INST("fnegs", VALL,
6045198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6055198Sjmcp 	INST("fnegd", V9|V9S,
6065198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6075198Sjmcp 	INST("fnegq", V9|V9S,
6085198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6095198Sjmcp 
6105198Sjmcp 	/* 0x008 */
6115198Sjmcp 	INVALID,
6125198Sjmcp 	INST("fabss", VALL,
6135198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6145198Sjmcp 	INST("fabsd", V9|V9S,
6155198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6165198Sjmcp 	INST("fabsq", V9|V9S,
6175198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6185198Sjmcp 
6195198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
6205198Sjmcp 
6215198Sjmcp 	/* 0x010 */
6225198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6235198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6245198Sjmcp 
6255198Sjmcp 	/* 0x020 */
6265198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6275198Sjmcp 
6285198Sjmcp 	/* 0x028 */
6295198Sjmcp 	INVALID,
6305198Sjmcp 	INST("fsqrts", VALL,
6315198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6325198Sjmcp 	INST("fsqrtd", VALL,
6335198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6345198Sjmcp 	INST("fsqrtq", VALL,
6355198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6365198Sjmcp 
637*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID,
6385198Sjmcp 
6395198Sjmcp 	/* 0x30 */
6405198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6415198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6425198Sjmcp 
6435198Sjmcp 	/* 0x40 */
6445198Sjmcp 	INVALID,
6455198Sjmcp 	INST("fadds", VALL,
6465198Sjmcp 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6475198Sjmcp 	INST("faddd", VALL,
6485198Sjmcp 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6495198Sjmcp 	INST("faddq", VALL,
6505198Sjmcp 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6515198Sjmcp 
6525198Sjmcp 	INVALID,
6535198Sjmcp 	INST("fsubs", VALL,
6545198Sjmcp 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6555198Sjmcp 	INST("fsubd", VALL,
6565198Sjmcp 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6575198Sjmcp 	INST("fsubq", VALL,
6585198Sjmcp 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6595198Sjmcp 
6605198Sjmcp 	/* 0x048 */
6615198Sjmcp 	INVALID,
6625198Sjmcp 	INST("fmuls", VALL,
6635198Sjmcp 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6645198Sjmcp 	INST("fmuld", VALL,
6655198Sjmcp 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6665198Sjmcp 	INST("fmulq", VALL,
6675198Sjmcp 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6685198Sjmcp 
6695198Sjmcp 	INVALID,
6705198Sjmcp 	INST("fdivs", VALL,
6715198Sjmcp 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
6725198Sjmcp 	INST("fdivd", VALL,
6735198Sjmcp 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
6745198Sjmcp 	INST("fdivq", VALL,
6755198Sjmcp 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6765198Sjmcp 
6775198Sjmcp 	/* 0x050 */
678*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
679*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6805198Sjmcp 
6815198Sjmcp 	/* 0x060 */
682*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
6835198Sjmcp 
6845198Sjmcp 	/* 0x068 */
6855198Sjmcp 	INVALID,
6865198Sjmcp 	INST("fsmuld", VALL,
6875198Sjmcp 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
6885198Sjmcp 	INVALID,
6895198Sjmcp 	INVALID,
6905198Sjmcp 
6915198Sjmcp 	INVALID,
6925198Sjmcp 	INVALID,
6935198Sjmcp 	INST("fdmulq", VALL,
6945198Sjmcp 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
6955198Sjmcp 	INVALID,
6965198Sjmcp 
6975198Sjmcp 	/* 0x070 */
698*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
699*10271SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7005198Sjmcp 
7015198Sjmcp 	/* 0x080 */
7025198Sjmcp 	INVALID,
7035198Sjmcp 	INST("fstox", V9|V9S,
7045198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
7055198Sjmcp 	INST("fdtox", V9|V9S,
7065198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
7075198Sjmcp 	INST("fqtox", V9|V9S,
7085198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)),
7095198Sjmcp 
7105198Sjmcp 	INST("fxtos", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|
7115198Sjmcp 		FLG_P3(REG_FP)),
7125198Sjmcp 	INVALID,
7135198Sjmcp 	INVALID,
7145198Sjmcp 	INVALID,
7155198Sjmcp 
7165198Sjmcp 	/* 0x088 */
7175198Sjmcp 	INST("fxtod", V9|V9S,
7185198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
7195198Sjmcp 	INVALID,
7205198Sjmcp 	INVALID,
7215198Sjmcp 	INVALID,
7225198Sjmcp 
7235198Sjmcp 	INST("fxtoq", V9|V9S,
7245198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
7255198Sjmcp 	INVALID,
7265198Sjmcp 	INVALID,
7275198Sjmcp 	INVALID,
7285198Sjmcp 
7295198Sjmcp 	/* 0x090 */
7305198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7315198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7325198Sjmcp 
7335198Sjmcp 	/* 0x0a0 */
7345198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7355198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7365198Sjmcp 
7375198Sjmcp 	/* 0x0b0 */
7385198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7395198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7405198Sjmcp 
7415198Sjmcp 	/* 0x0c0 */
7425198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
7435198Sjmcp 
7445198Sjmcp 	INST("fitos", VALL,
7455198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
7465198Sjmcp 	INVALID,
7475198Sjmcp 	INST("fdtos", VALL,
7485198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)),
7495198Sjmcp 	INST("fqtos", VALL,
7505198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)),
7515198Sjmcp 
7525198Sjmcp 	/* 0x0c8 */
7535198Sjmcp 	INST("fitod", VALL,
7545198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
7555198Sjmcp 	INST("fstod", VALL,
7565198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
7575198Sjmcp 	INVALID,
7585198Sjmcp 	INST("fqtod", VALL,
7595198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)),
7605198Sjmcp 
7615198Sjmcp 	INST("fitoq", VALL,
7625198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)),
7635198Sjmcp 	INST("fstoq", VALL,
7645198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)),
7655198Sjmcp 	INST("fdtoq", VALL,
7665198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
7675198Sjmcp 	INVALID,
7685198Sjmcp 
7695198Sjmcp 	/* 0x0d0 */
7705198Sjmcp 	INVALID,
7715198Sjmcp 	INST("fstoi", VALL,
7725198Sjmcp 	    FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
7735198Sjmcp 	INST("fdtoi", VALL,
7745198Sjmcp 	    FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)),
7755198Sjmcp 	INST("fqtoi", VALL,
7765198Sjmcp 	    FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)),
7775198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
7785198Sjmcp 
7795198Sjmcp 	/* 0x0d8 */
7805198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7815198Sjmcp 
7825198Sjmcp 	/* 0x0e0 */
7835198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7845198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7855198Sjmcp 
7865198Sjmcp 	/* 0x0f0 */
7875198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7885198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7895198Sjmcp 
7905198Sjmcp 	/* 0x100 */
7915198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7925198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7935198Sjmcp 
7945198Sjmcp 	/* 0x110 */
7955198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7965198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
7975198Sjmcp 
7985198Sjmcp 	/* 0x120 */
7995198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8005198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8015198Sjmcp 
8025198Sjmcp 	/* 0x130 */
8035198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8045198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8055198Sjmcp 
8065198Sjmcp 	/* 0x140 */
8075198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8085198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8095198Sjmcp 
8105198Sjmcp 	/* 0x150 */
8115198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8125198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8135198Sjmcp 
8145198Sjmcp 	/* 0x160 */
8155198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8165198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8175198Sjmcp 
8185198Sjmcp 	/* 0x170 */
8195198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8205198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8215198Sjmcp 
8225198Sjmcp 	/* 0x180 */
8235198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8245198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8255198Sjmcp 
8265198Sjmcp 	/* 0x190 */
8275198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8285198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8295198Sjmcp 
8305198Sjmcp 	/* 0x1a0 */
8315198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8325198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8335198Sjmcp 
8345198Sjmcp 	/* 0x1b0 */
8355198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8365198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8375198Sjmcp 
8385198Sjmcp 	/* 0x1c0 */
8395198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8405198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8415198Sjmcp 
8425198Sjmcp 	/* 0x1d0 */
8435198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8445198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8455198Sjmcp 
8465198Sjmcp 	/* 0x1e0 */
8475198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8485198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8495198Sjmcp 
8505198Sjmcp 	/* 0x1f0 */
8515198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8525198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
8535198Sjmcp };
8545198Sjmcp 
8555198Sjmcp static const table_t FPop1_table = {
8565198Sjmcp 	.tbl_field = 13,
8575198Sjmcp 	.tbl_len   = 9,
8585198Sjmcp 	.tbl_ovp   = NULL,
8595198Sjmcp 	.tbl_fmt   = fmt_fpop1,
8605198Sjmcp 	.tbl_inp   = FPop1_table_def
8615198Sjmcp };
8625198Sjmcp 
8635198Sjmcp static const inst_t FPop2_table_def[512] = {
8645198Sjmcp 	/* 0x000 */
8655198Sjmcp 	INVALID,
8665198Sjmcp 	INST("fmovs", V9|V9S,
8675198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
8685198Sjmcp 	INST("fmovd", V9|V9S,
8695198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
8705198Sjmcp 	INST("fmovq", V9|V9S,
8715198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
8725198Sjmcp 
8735198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
8745198Sjmcp 
8755198Sjmcp 	/* 0x008 */
8765198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8775198Sjmcp 
8785198Sjmcp 	/* 0x010 */
8795198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8805198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8815198Sjmcp 
8825198Sjmcp 	/* 0x020 */
8835198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
8845198Sjmcp 
8855198Sjmcp 	INST("fmovrsz", V9|V9S,
8865198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
8875198Sjmcp 	INST("fmovrdz", V9|V9S,
8885198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
8895198Sjmcp 	INST("fmovrqz", V9|V9S,
8905198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
8915198Sjmcp 	INVALID,
8925198Sjmcp 
8935198Sjmcp 	/* 0x028 */
8945198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8955198Sjmcp 
8965198Sjmcp 	/* 0x030 */
8975198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8985198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
8995198Sjmcp 
9005198Sjmcp 	/* 0x040 */
9015198Sjmcp 	INVALID,
9025198Sjmcp 	INST("fmovs", V9|V9S,
9035198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
9045198Sjmcp 	INST("fmovd", V9|V9S,
9055198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
9065198Sjmcp 	INST("fmovq", V9|V9S,
9075198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
9085198Sjmcp 
9095198Sjmcp 	INST("fmovrslez", V9|V9S,
9105198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
9115198Sjmcp 	INST("fmovrdlez", V9|V9S,
9125198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
9135198Sjmcp 	INST("fmovrqlez", V9|V9S,
9145198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
9155198Sjmcp 	INVALID,
9165198Sjmcp 
9175198Sjmcp 	/* 0x048 */
9185198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9195198Sjmcp 
9205198Sjmcp 	/* 0x050 */
9215198Sjmcp 	INVALID,
9225198Sjmcp 	INST("fcmps", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE)
9235198Sjmcp 	    |FLG_NOIMM),
9245198Sjmcp 	INST("fcmpd", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE)
9255198Sjmcp 	    |FLG_NOIMM),
9265198Sjmcp 	INST("fcmpq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE)
9275198Sjmcp 	    |FLG_NOIMM),
9285198Sjmcp 
9295198Sjmcp 	INVALID,
9305198Sjmcp 	INST("fcmpes", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE)
9315198Sjmcp 	    |FLG_NOIMM),
9325198Sjmcp 	INST("fcmped", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE)
9335198Sjmcp 	    |FLG_NOIMM),
9345198Sjmcp 	INST("fcmpeq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE)
9355198Sjmcp 	    |FLG_NOIMM),
9365198Sjmcp 
9375198Sjmcp 	/* 0x058 */
9385198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9395198Sjmcp 
9405198Sjmcp 	/* 0x060 */
9415198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
9425198Sjmcp 
9435198Sjmcp 	INVALID,
9445198Sjmcp 	INST("fmovrslz", V9|V9S,
9455198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
9465198Sjmcp 	INST("fmovrdlz", V9|V9S,
9475198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
9485198Sjmcp 	INST("fmovrqlz", V9|V9S,
9495198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
9505198Sjmcp 
9515198Sjmcp 	/* 0x068 */
9525198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9535198Sjmcp 
9545198Sjmcp 	/* 0x070 */
9555198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9565198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9575198Sjmcp 
9585198Sjmcp 	/* 0x080 */
9595198Sjmcp 	INVALID,
9605198Sjmcp 	INST("fmovs", V9|V9S,
9615198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
9625198Sjmcp 	INST("fmovd", V9|V9S,
9635198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
9645198Sjmcp 	INST("fmovq", V9|V9S,
9655198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
9665198Sjmcp 
9675198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
9685198Sjmcp 
9695198Sjmcp 	/* 0x088 */
9705198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9715198Sjmcp 
9725198Sjmcp 	/* 0x090 */
9735198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9745198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9755198Sjmcp 
9765198Sjmcp 	/* 0x0a0 */
9775198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
9785198Sjmcp 
9795198Sjmcp 	INVALID,
9805198Sjmcp 	INST("fmovrsnz", V9|V9S,
9815198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
9825198Sjmcp 	INST("fmovrdnz", V9|V9S,
9835198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
9845198Sjmcp 	INST("fmovrqnz", V9|V9S,
9855198Sjmcp 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
9865198Sjmcp 
9875198Sjmcp 	/* 0x0a8 */
9885198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9895198Sjmcp 
9905198Sjmcp 	/* 0x0b0 */
9915198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9925198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
9935198Sjmcp 
9945198Sjmcp 	/* 0x0c0 */
9955198Sjmcp 	INVALID,
9965198Sjmcp 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
9975198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FP)),
9985198Sjmcp 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
9995198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPD)),
10005198Sjmcp 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
10015198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPQ)),
10025198Sjmcp 
10035198Sjmcp 	INVALID,
10045198Sjmcp 	INST("fmovrsgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10055198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
10065198Sjmcp 	INST("fmovrdgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10075198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
10085198Sjmcp 	INST("fmovrqgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10095198Sjmcp 		FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
10105198Sjmcp 
10115198Sjmcp 	/* 0x0c8 */
10125198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10135198Sjmcp 
10145198Sjmcp 	/* 0x0d0 */
10155198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10165198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10175198Sjmcp 
10185198Sjmcp 	/* 0x0e0 */
10195198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
10205198Sjmcp 
10215198Sjmcp 	INVALID,
10225198Sjmcp 	INST("fmovrsgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10235198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
10245198Sjmcp 	INST("fmovrdgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10255198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
10265198Sjmcp 	INST("fmovrqgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
10275198Sjmcp 		FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
10285198Sjmcp 
10295198Sjmcp 	/* 0x0e8 */
10305198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10315198Sjmcp 
10325198Sjmcp 	/* 0x0f0 */
10335198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10345198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10355198Sjmcp 
10365198Sjmcp 	/* 0x100 */
10375198Sjmcp 	INVALID,
10385198Sjmcp 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
10395198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FP)),
10405198Sjmcp 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
10415198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPD)),
10425198Sjmcp 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
10435198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPQ)),
10445198Sjmcp 
10455198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
10465198Sjmcp 
10475198Sjmcp 	/* 0x108 */
10485198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10495198Sjmcp 
10505198Sjmcp 	/* 0x110 */
10515198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10525198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10535198Sjmcp 
10545198Sjmcp 	/* 0x120 */
10555198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10565198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10575198Sjmcp 
10585198Sjmcp 	/* 0x130 */
10595198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10605198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10615198Sjmcp 
10625198Sjmcp 	/* 0x140 */
10635198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10645198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10655198Sjmcp 
10665198Sjmcp 	/* 0x150 */
10675198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10685198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10695198Sjmcp 
10705198Sjmcp 	/* 0x160 */
10715198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10725198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10735198Sjmcp 
10745198Sjmcp 	/* 0x170 */
10755198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10765198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10775198Sjmcp 
10785198Sjmcp 	/* 0x180 */
10795198Sjmcp 	INVALID,
10805198Sjmcp 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
10815198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FP)),
10825198Sjmcp 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
10835198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPD)),
10845198Sjmcp 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
10855198Sjmcp 		FLG_NOIMM|FLG_P3(REG_FPQ)),
10865198Sjmcp 
10875198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
10885198Sjmcp 
10895198Sjmcp 	/* 0x188 */
10905198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10915198Sjmcp 
10925198Sjmcp 	/* 0x190 */
10935198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10945198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10955198Sjmcp 
10965198Sjmcp 	/* 0x1a0 */
10975198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10985198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
10995198Sjmcp 
11005198Sjmcp 	/* 0x1b0 */
11015198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11025198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11035198Sjmcp 
11045198Sjmcp 	/* 0x1c0 */
11055198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11065198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11075198Sjmcp 
11085198Sjmcp 	/* 0x1d0 */
11095198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11105198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11115198Sjmcp 
11125198Sjmcp 	/* 0x1e0 */
11135198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11145198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11155198Sjmcp 
11165198Sjmcp 	/* 0x1f0 */
11175198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
11185198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
11195198Sjmcp };
11205198Sjmcp 
11215198Sjmcp static const table_t FPop2_table = {
11225198Sjmcp 	.tbl_field = 13,
11235198Sjmcp 	.tbl_len   = 9,
11245198Sjmcp 	.tbl_ovp   = NULL,
11255198Sjmcp 	.tbl_fmt   = fmt_fpop2,
11265198Sjmcp 	.tbl_inp   = FPop2_table_def
11275198Sjmcp };
11285198Sjmcp 
11295198Sjmcp static const inst_t vis_table_def[512] = {
11305198Sjmcp 	/* 0x000 */
11315198Sjmcp 	INST("edge8cc", V9S, FLG_NOIMM),
11325198Sjmcp 	INST("edge8n", V9S, FLG_NOIMM),
11335198Sjmcp 	INST("edge8lcc", V9S, FLG_NOIMM),
11345198Sjmcp 	INST("edge8ln", V9S, FLG_NOIMM),
11355198Sjmcp 
11365198Sjmcp 	INST("edge16cc", V9S, FLG_NOIMM),
11375198Sjmcp 	INST("edge16n", V9S, FLG_NOIMM),
11385198Sjmcp 	INST("edge16lcc", V9S, FLG_NOIMM),
11395198Sjmcp 	INST("edge16ln", V9S, FLG_NOIMM),
11405198Sjmcp 
11415198Sjmcp 	/* 0x008 */
11425198Sjmcp 	INST("edge32cc", V9S, FLG_NOIMM),
11435198Sjmcp 	INST("edge32n", V9S, FLG_NOIMM),
11445198Sjmcp 	INST("edge32lcc", V9S, FLG_NOIMM),
11455198Sjmcp 	INST("edge32ln", V9S, FLG_NOIMM),
11465198Sjmcp 
11475198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
11485198Sjmcp 
11495198Sjmcp 	/* 0x010 */
11505198Sjmcp 	INST("array8", V9S, FLG_NOIMM),
11517718SJason.Beloro@Sun.COM 	INST("addxc", V9, 0),
11525198Sjmcp 	INST("array16", V9S, FLG_NOIMM),
11537718SJason.Beloro@Sun.COM 	INST("addxccc", V9, 0),
11545198Sjmcp 
11555198Sjmcp 	INST("array32", V9S, FLG_NOIMM),
11567718SJason.Beloro@Sun.COM 	INST("random", V9, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
11577718SJason.Beloro@Sun.COM 		FLG_RD(REG_FPD)|FLG_NOIMM),
11587718SJason.Beloro@Sun.COM 	INST("umulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM|
11597718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
11607718SJason.Beloro@Sun.COM 	INST("lzd", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
11617718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_RD(REG_INT)),
11625198Sjmcp 
11635198Sjmcp 	/* 0x018 */
11645198Sjmcp 	INST("alignaddr", V9S, FLG_NOIMM),
11657718SJason.Beloro@Sun.COM 	INST("bmask", V9S, FLG_P1(REG_INT)|FLG_P2(REG_INT)|FLG_RD(REG_INT)),
11665198Sjmcp 	INST("alignaddrl", V9S, FLG_NOIMM),
11677718SJason.Beloro@Sun.COM 	INST("cmask8", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
11687718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
11695198Sjmcp 	INVALID,
11707718SJason.Beloro@Sun.COM 	INST("cmask16", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
11717718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
11727718SJason.Beloro@Sun.COM 	INVALID,
11737718SJason.Beloro@Sun.COM 	INST("cmask32", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
11747718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
11755198Sjmcp 
11765198Sjmcp 	/* 0x020 */
11775198Sjmcp 	INST("fcmple16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
11785198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
11797718SJason.Beloro@Sun.COM 	INST("fsll16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
11807718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
11815198Sjmcp 	INST("fcmpne16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
11825198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
11837718SJason.Beloro@Sun.COM 	INST("fsrl16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
11847718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
11855198Sjmcp 
11865198Sjmcp 	INST("fcmple32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
11875198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
11887718SJason.Beloro@Sun.COM 	INST("fsll32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
11897718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
11905198Sjmcp 	INST("fcmpne32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
11915198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
11927718SJason.Beloro@Sun.COM 	INST("fsrl32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
11937718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
11945198Sjmcp 
11955198Sjmcp 	/* 0x028 */
11965198Sjmcp 	INST("fcmpgt16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
11975198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
11987718SJason.Beloro@Sun.COM 	INST("fslas16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
11997718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12005198Sjmcp 	INST("fcmpeq16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12015198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
12027718SJason.Beloro@Sun.COM 	INST("fsra16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12037718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12045198Sjmcp 
12055198Sjmcp 	INST("fcmpgt32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12065198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
12077718SJason.Beloro@Sun.COM 	INST("fslas32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12087718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12095198Sjmcp 	INST("fcmpeq32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12105198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
12117718SJason.Beloro@Sun.COM 	INST("fsra32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12127718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12135198Sjmcp 
12145198Sjmcp 	/* 0x030 */
12155198Sjmcp 	INVALID,
12165198Sjmcp 	INST("fmul8x16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12175198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12185198Sjmcp 	INVALID,
12195198Sjmcp 	INST("fmul8x16au", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12205198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12215198Sjmcp 
12225198Sjmcp 	INVALID,
12235198Sjmcp 	INST("fmul8x16al", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12245198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12255198Sjmcp 	INST("fmul8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12265198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12275198Sjmcp 	INST("fmul8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12285198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12295198Sjmcp 
12305198Sjmcp 	/* 0x038 */
12315198Sjmcp 	INST("fmuld8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12325198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12335198Sjmcp 	INST("fmuld8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12345198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12355198Sjmcp 	INST("fpack32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12365198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12375198Sjmcp 	INST("fpack16", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
12385198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FP)),
12395198Sjmcp 
12405198Sjmcp 	INVALID,
12415198Sjmcp 	INST("fpackfix", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
12425198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FP)),
12435198Sjmcp 	INST("pdist", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12445198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12457718SJason.Beloro@Sun.COM 	INST("pdistn", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12467718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
12475198Sjmcp 
12485198Sjmcp 	/* 0x040 */
12497718SJason.Beloro@Sun.COM 	INST("fmean16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12507718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12517718SJason.Beloro@Sun.COM 	INVALID,
12527718SJason.Beloro@Sun.COM 	INST("fpadd64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12537718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12547718SJason.Beloro@Sun.COM 	INVALID,
12557718SJason.Beloro@Sun.COM 	INST("fchksm16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
12567718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12577718SJason.Beloro@Sun.COM 	INVALID,
12587718SJason.Beloro@Sun.COM 	INST("fpsub64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12597718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12607718SJason.Beloro@Sun.COM 	INVALID,
12615198Sjmcp 
12625198Sjmcp 	/* 0x048 */
12635198Sjmcp 	INST("faligndata", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12645198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12655198Sjmcp 	INVALID,
12665198Sjmcp 	INVALID,
12675198Sjmcp 	INST("fpmerge", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12685198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12695198Sjmcp 
12705198Sjmcp 	INST("bshuffle", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12715198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12725198Sjmcp 	INST("fexpand", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
12735198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
12745198Sjmcp 	INVALID,
12755198Sjmcp 	INVALID,
12765198Sjmcp 
12775198Sjmcp 	/* 0x050 */
12785198Sjmcp 	INST("fpadd16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12795198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12805198Sjmcp 	INST("fpadd16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12815198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
12825198Sjmcp 	INST("fpadd32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12835198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12845198Sjmcp 	INST("fpadd32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12855198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
12865198Sjmcp 
12875198Sjmcp 	INST("fpsub16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12885198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12895198Sjmcp 	INST("fpsub16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12905198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
12915198Sjmcp 	INST("fpsub32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12925198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12935198Sjmcp 	INST("fpsub32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
12945198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
12955198Sjmcp 
12965198Sjmcp 	/* 0x058 */
12977718SJason.Beloro@Sun.COM 	INST("fpadds16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
12987718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
12997718SJason.Beloro@Sun.COM 	INST("fpadds16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13007718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13017718SJason.Beloro@Sun.COM 	INST("fpadds32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13027718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13037718SJason.Beloro@Sun.COM 	INST("fpadds32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13047718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13057718SJason.Beloro@Sun.COM 	INST("fpsubs16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13067718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13077718SJason.Beloro@Sun.COM 	INST("fpsubs16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13087718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13097718SJason.Beloro@Sun.COM 	INST("fpsubs32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13107718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13117718SJason.Beloro@Sun.COM 	INST("fpsubs32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13127718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13135198Sjmcp 
13145198Sjmcp 	/* 0x060 */
13155198Sjmcp 	INST("fzero", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
13165198Sjmcp 		FLG_P3(REG_FPD)),
13175198Sjmcp 	INST("fzeros", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
13185198Sjmcp 		FLG_P3(REG_FP)),
13195198Sjmcp 	INST("fnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13205198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13215198Sjmcp 	INST("fnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13225198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13235198Sjmcp 
13245198Sjmcp 	INST("fandnot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13255198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13265198Sjmcp 	INST("fandnot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13275198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13285198Sjmcp 	INST("fnot2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
13295198Sjmcp 		FLG_P3(REG_FPD)),
13305198Sjmcp 	INST("fnot2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
13315198Sjmcp 		FLG_P3(REG_FP)),
13325198Sjmcp 
13335198Sjmcp 	/* 0x068 */
13345198Sjmcp 	INST("fandnot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13355198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13365198Sjmcp 	INST("fandnot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13375198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13385198Sjmcp 	INST("fnot1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)|
13395198Sjmcp 		FLG_P3(REG_FPD)),
13405198Sjmcp 	INST("fnot1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)|
13415198Sjmcp 		FLG_P3(REG_FP)),
13425198Sjmcp 
13435198Sjmcp 	INST("fxor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13445198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13455198Sjmcp 	INST("fxors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13465198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13475198Sjmcp 	INST("fnand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13485198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13495198Sjmcp 	INST("fnands", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13505198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13515198Sjmcp 
13525198Sjmcp 	/* 0x070 */
13535198Sjmcp 	INST("fand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13545198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13555198Sjmcp 	INST("fands", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13565198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13575198Sjmcp 	INST("fxnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13585198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13595198Sjmcp 	INST("fxnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13605198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13615198Sjmcp 
13625198Sjmcp 	INST("fsrc1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)|
13635198Sjmcp 		FLG_P3(REG_FPD)),
13645198Sjmcp 	INST("fsrc1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)|
13655198Sjmcp 		FLG_P3(REG_FP)),
13665198Sjmcp 	INST("fornot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13675198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13685198Sjmcp 	INST("fornot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13695198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13705198Sjmcp 
13715198Sjmcp 	/* 0x078 */
13725198Sjmcp 	INST("fsrc2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
13735198Sjmcp 		FLG_P3(REG_FPD)),
13745198Sjmcp 	INST("fsrc2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
13755198Sjmcp 		FLG_P3(REG_FP)),
13765198Sjmcp 	INST("fornot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13775198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13785198Sjmcp 	INST("fornot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13795198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13805198Sjmcp 
13815198Sjmcp 	INST("for", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
13825198Sjmcp 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
13835198Sjmcp 	INST("fors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
13845198Sjmcp 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
13855198Sjmcp 	INST("fone", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
13865198Sjmcp 		FLG_P3(REG_FPD)),
13875198Sjmcp 	INST("fones", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
13885198Sjmcp 		FLG_P3(REG_FP)),
13895198Sjmcp 
13905198Sjmcp 	/* 0x080 */
13915198Sjmcp 	INST("shutdown", V9S, 0),
13925198Sjmcp 	INST("siam", V9S, 0),
13935198Sjmcp 	INVALID,
13945198Sjmcp 	INVALID,
13955198Sjmcp 
13965198Sjmcp 	INVALID, INVALID, INVALID, INVALID,
13975198Sjmcp 
13985198Sjmcp 	/* 0x088 */
13995198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14005198Sjmcp 
14015198Sjmcp 	/* 0x090 */
14025198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14035198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14045198Sjmcp 
14055198Sjmcp 	/* 0x0a0 */
14065198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14075198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14085198Sjmcp 
14095198Sjmcp 	/* 0x0b0 */
14105198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14115198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14125198Sjmcp 
14135198Sjmcp 	/* 0x0c0 */
14145198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14155198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14165198Sjmcp 
14175198Sjmcp 	/* 0x0d0 */
14185198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14195198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14205198Sjmcp 
14215198Sjmcp 	/* 0x0e0 */
14225198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14235198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14245198Sjmcp 
14255198Sjmcp 	/* 0x0f0 */
14265198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14275198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14285198Sjmcp 
14295198Sjmcp 	/* 0x100 */
14305198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14315198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14325198Sjmcp 
14335198Sjmcp 	/* 0x110 */
14347718SJason.Beloro@Sun.COM 	INST("movdtox", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
14357718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
14367718SJason.Beloro@Sun.COM 	INST("movstouw", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
14377718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_RD(REG_INT)),
14387718SJason.Beloro@Sun.COM 	INVALID,
14397718SJason.Beloro@Sun.COM 	INST("movstosw", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
14407718SJason.Beloro@Sun.COM 		FLG_P2(REG_FP)|FLG_RD(REG_INT)),
14417718SJason.Beloro@Sun.COM 	INVALID,
14427718SJason.Beloro@Sun.COM 	INST("xmulx", V9, FLG_P1(REG_INT)|FLG_NOIMM|
14437718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
14447718SJason.Beloro@Sun.COM 	INST("xmulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM|
14457718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
14467718SJason.Beloro@Sun.COM 	INVALID,
14477718SJason.Beloro@Sun.COM 	INST("movxtod", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
14487718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_RD(REG_FPD)),
14497718SJason.Beloro@Sun.COM 	INST("movwtos", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
14507718SJason.Beloro@Sun.COM 		FLG_P2(REG_INT)|FLG_RD(REG_FP)),
14517718SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14525198Sjmcp 
14535198Sjmcp 	/* 0x120 */
14547718SJason.Beloro@Sun.COM 	INST("fucmple8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
14557718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
14567718SJason.Beloro@Sun.COM 	INVALID,
14577718SJason.Beloro@Sun.COM 	INST("fucmpne8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
14587718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
14597718SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID,
14607718SJason.Beloro@Sun.COM 	INST("fucmpgt8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
14617718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
14627718SJason.Beloro@Sun.COM 	INVALID,
14637718SJason.Beloro@Sun.COM 	INST("fucmpeq8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
14647718SJason.Beloro@Sun.COM 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
14657718SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID,
14665198Sjmcp 
14675198Sjmcp 	/* 0x130 */
14685198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14695198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14705198Sjmcp 
14715198Sjmcp 	/* 0x140 */
14725198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14735198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14745198Sjmcp 
14755198Sjmcp 	/* 0x150 */
14767718SJason.Beloro@Sun.COM 	INVALID,
14777718SJason.Beloro@Sun.COM 	INST("flcmps", V9, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_FCC)
14787718SJason.Beloro@Sun.COM 		|FLG_NOIMM),
14797718SJason.Beloro@Sun.COM 	INST("flcmpd", V9, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_FCC)
14807718SJason.Beloro@Sun.COM 		|FLG_NOIMM),
14817718SJason.Beloro@Sun.COM 	INVALID, INVALID, INVALID, INVALID, INVALID,
14825198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14835198Sjmcp 
14845198Sjmcp 	/* 0x160 */
14855198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14865198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14875198Sjmcp 
14885198Sjmcp 	/* 0x170 */
14895198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14905198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14915198Sjmcp 
14925198Sjmcp 	/* 0x180 */
14935198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14945198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14955198Sjmcp 
14965198Sjmcp 	/* 0x190 */
14975198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14985198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
14995198Sjmcp 
15005198Sjmcp 	/* 0x1a0 */
15015198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15025198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15035198Sjmcp 
15045198Sjmcp 	/* 0x1b0 */
15055198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15065198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15075198Sjmcp 
15085198Sjmcp 	/* 0x1c0 */
15095198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15105198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15115198Sjmcp 
15125198Sjmcp 	/* 0x1d0 */
15135198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15145198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15155198Sjmcp 
15165198Sjmcp 	/* 0x1e0 */
15175198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15185198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15195198Sjmcp 
15205198Sjmcp 	/* 0x1f0 */
15215198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
15225198Sjmcp 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
15235198Sjmcp };
15245198Sjmcp 
15255198Sjmcp static const table_t vis_table = {
15265198Sjmcp 	.tbl_field = 13,
15275198Sjmcp 	.tbl_len   = 9,
15285198Sjmcp 	.tbl_ovp   = NULL,
15295198Sjmcp 	.tbl_fmt   = fmt_vis,
15305198Sjmcp 	.tbl_inp   = vis_table_def
15315198Sjmcp };
15325198Sjmcp 
15335198Sjmcp static const inst_t fused_table_def[16] = {
15345198Sjmcp 	/* 0x0 */
15355198Sjmcp 	INVALID,
15367718SJason.Beloro@Sun.COM 	INST("fmadds", V9, FLG_P1(REG_FP)),
15377718SJason.Beloro@Sun.COM 	INST("fmaddd", V9, FLG_P1(REG_FPD)),
15385198Sjmcp 	INVALID,
15395198Sjmcp 
15405198Sjmcp 	/* 0x4 */
15415198Sjmcp 	INVALID,
15427718SJason.Beloro@Sun.COM 	INST("fmsubs", V9, FLG_P1(REG_FP)),
15437718SJason.Beloro@Sun.COM 	INST("fmsubd", V9, FLG_P1(REG_FPD)),
15445198Sjmcp 	INVALID,
15455198Sjmcp 
15465198Sjmcp 	/* 0x8 */
15475198Sjmcp 	INVALID,
15487718SJason.Beloro@Sun.COM 	INST("fnmsubs", V9, FLG_P1(REG_FP)),
15497718SJason.Beloro@Sun.COM 	INST("fnmsubd", V9, FLG_P1(REG_FPD)),
15505198Sjmcp 	INVALID,
15515198Sjmcp 
15525198Sjmcp 	/* 0xc */
15535198Sjmcp 	INVALID,
15547718SJason.Beloro@Sun.COM 	INST("fnmadds", V9, FLG_P1(REG_FP)),
15557718SJason.Beloro@Sun.COM 	INST("fnmaddd", V9, FLG_P1(REG_FPD)),
15565198Sjmcp 	INVALID
15575198Sjmcp };
15585198Sjmcp 
15595198Sjmcp static const table_t fused_table = {
15607718SJason.Beloro@Sun.COM 	.tbl_field = 8,
15615198Sjmcp 	.tbl_len   = 4,
15625198Sjmcp 	.tbl_ovp   = NULL,
15635198Sjmcp 	.tbl_fmt   = fmt_fused,
15645198Sjmcp 	.tbl_inp   = fused_table_def
15655198Sjmcp };
15665198Sjmcp 
15675198Sjmcp static const inst_t alu_table_def[64] = {
15685198Sjmcp 	/* 0x00 */
15695198Sjmcp 	INST("add",		VALL,	0),
15705198Sjmcp 	INST("and",		VALL,	0),
15715198Sjmcp 	INST("or",		VALL,	0),
15725198Sjmcp 	INST("xor",		VALL,	0),
15735198Sjmcp 
15745198Sjmcp 	INST("sub",		VALL,	0),
15755198Sjmcp 	INST("andn",		VALL,	0),
15765198Sjmcp 	INST("orn",		VALL,	0),
15775198Sjmcp 	INST("xnor",		VALL,	0),
15785198Sjmcp 
15795198Sjmcp 	/* 0x08 */
15805198Sjmcp 	INST("addx",		VALL,	0),
15815198Sjmcp 	INST("mulx",		V9|V9S,	0),
15825198Sjmcp 	INST("umul",		VALL,	0),
15835198Sjmcp 	INST("smul",		VALL,	0),
15845198Sjmcp 
15855198Sjmcp 	INST("subx",		VALL,	0),
15865198Sjmcp 	INST("udivx",		V9|V9S,	0),
15875198Sjmcp 	INST("udiv",		VALL,	0),
15885198Sjmcp 	INST("sdiv",		VALL,	0),
15895198Sjmcp 
15905198Sjmcp 	/* 0x10 */
15915198Sjmcp 	INST("addcc",		VALL,	0),
15925198Sjmcp 	INST("andcc",		VALL,	0),
15935198Sjmcp 	INST("orcc",		VALL,	0),
15945198Sjmcp 	INST("xorcc",		VALL,	0),
15955198Sjmcp 
15965198Sjmcp 	INST("subcc",		VALL,	0),
15975198Sjmcp 	INST("andncc",		VALL,	0),
15985198Sjmcp 	INST("orncc",		VALL,	0),
15995198Sjmcp 	INST("xnorcc",		VALL,	0),
16005198Sjmcp 
16015198Sjmcp 	/* 0x18 */
16025198Sjmcp 	INST("addxcc",		VALL,	0),
16035198Sjmcp 	INVALID,
16045198Sjmcp 	INST("umulcc",		VALL,	0),
16055198Sjmcp 	INST("smulcc",		VALL,	0),
16065198Sjmcp 
16075198Sjmcp 	INST("subxcc",		VALL,	0),
16085198Sjmcp 	INVALID,
16095198Sjmcp 	INST("udivcc",		VALL,	0),
16105198Sjmcp 	INST("sdivcc",		VALL,	0),
16115198Sjmcp 
16125198Sjmcp 	/* 0x20 */
16135198Sjmcp 	INST("taddcc",		VALL,	0),
16145198Sjmcp 	INST("tsubcc",		VALL,	0),
16155198Sjmcp 	INST("taddcctv",	VALL,	0),
16165198Sjmcp 	INST("tsubcctv",	VALL,	0),
16175198Sjmcp 
16185198Sjmcp 	INST("mulscc",		VALL,	0),
16195198Sjmcp 	INST("sll",		VALL,	0),
16205198Sjmcp 	INST("srl",		VALL,	0),
16215198Sjmcp 	INST("sra",		VALL,	0),
16225198Sjmcp 
16235198Sjmcp 	/* 0x28 */
16245198Sjmcp 	INST("rd",		VALL,	0),
16255198Sjmcp 	INST("rd",		V8,	0),
16265198Sjmcp 	INST("rd",		V8,	0),
16275198Sjmcp 	INST("rd",		V8,	0),
16285198Sjmcp 
16295198Sjmcp 	TABLE(movcc_table,	V9|V9S),
16305198Sjmcp 	INST("sdivx",		V9|V9S,	0),
16315198Sjmcp 	INST("popc",		V9|V9S,
16325198Sjmcp 		FLG_P1(REG_NONE)|FLG_P2(REG_INT)|FLG_P3(REG_INT)),
16335198Sjmcp 	TABLE(movr_table,	V9|V9S),
16345198Sjmcp 
16355198Sjmcp 	/* 0x30 */
16365198Sjmcp 	INST("wr",		VALL,	0),
16375198Sjmcp 	INST("wr",		V8,	0),
16385198Sjmcp 	INST("wr",		V8,	0),
16395198Sjmcp 	INST("wr",		V8,	0),
16405198Sjmcp 
16415198Sjmcp 	TABLE(FPop1_table,	VALL),
16425198Sjmcp 	TABLE(FPop2_table,	VALL),
16435198Sjmcp 	INST("cpop1",		V8,	0),
16445198Sjmcp 	INST("cpop2",		V8,	0), /* impdep2 */
16455198Sjmcp 
16465198Sjmcp 	/* 0x38 */
16475198Sjmcp 	INST("jmpl",		VALL,	0),
16485198Sjmcp 	INST("rett",		VALL,	0),
16495198Sjmcp 	TABLE(Tcc_table,	VALL),
16505198Sjmcp 	INST("flush",		VALL,	0),
16515198Sjmcp 
16525198Sjmcp 	INST("save",		VALL,	0),
16535198Sjmcp 	INST("restore",		VALL,	0),
16545198Sjmcp 	TABLE(tr_table,		V9|V9S),
1655*10271SJason.Beloro@Sun.COM 	INVALID
16565198Sjmcp };
16575198Sjmcp 
16587718SJason.Beloro@Sun.COM 
16595198Sjmcp static const overlay_t alu_ov_table[] = {
16605198Sjmcp 	OVERLAY(0x08, INST("addc",		V9|V9S, 0)),
16615198Sjmcp 	OVERLAY(0x0c, INST("subc",		V9|V9S, 0)),
16625198Sjmcp 	OVERLAY(0x18, INST("addccc",		V9|V9S, 0)),
16635198Sjmcp 	OVERLAY(0x1c, INST("subccc",		V9|V9S, 0)),
16645198Sjmcp 
16657718SJason.Beloro@Sun.COM 	OVERLAY(0x29, INST("rdhpr",		V9|V9S, 0)),
16665198Sjmcp 	OVERLAY(0x2a, INST("rdpr",		V9|V9S, 0)),
16675198Sjmcp 	OVERLAY(0x2b, INST("flushw",		V9|V9S, 0)),
16685198Sjmcp 	OVERLAY(0x31, TABLE(rwin_table,		V9|V9S)),
16695198Sjmcp 
16705198Sjmcp 	OVERLAY(0x32, INST("wrpr",		V9|V9S, 0)),
16717718SJason.Beloro@Sun.COM 	OVERLAY(0x33, INST("wrhpr",		V9|V9S, 0)),
16725198Sjmcp 	OVERLAY(0x36, TABLE(vis_table,		V9S)),
16737718SJason.Beloro@Sun.COM 	OVERLAY(0x37, TABLE(fused_table,	VALL)),
16745198Sjmcp 	OVERLAY(0x39, INST("return",		VALL, 0)),
16755198Sjmcp 
16765198Sjmcp 	OVERLAY_END
16775198Sjmcp };
16785198Sjmcp 
16795198Sjmcp static const table_t alu_table = {
16805198Sjmcp 	.tbl_field = 24,
16815198Sjmcp 	.tbl_len   = 6,
16825198Sjmcp 	.tbl_ovp   = alu_ov_table,
16835198Sjmcp 	.tbl_fmt   = fmt_alu,
16845198Sjmcp 	.tbl_inp   = alu_table_def
16855198Sjmcp };
16865198Sjmcp 
16875198Sjmcp static const inst_t initial_table_def[4] = {
16885198Sjmcp 	TABLE(branch_table,	VALL),
16895198Sjmcp 	INST("call",		VALL, 0),
16905198Sjmcp 	TABLE(alu_table,	VALL),
16915198Sjmcp 	TABLE(ls_table,		VALL)
16925198Sjmcp };
16935198Sjmcp 
16945198Sjmcp /* NOTE: this must not be made static */
16955198Sjmcp const table_t initial_table = {
16965198Sjmcp 	.tbl_field = 31,
16975198Sjmcp 	.tbl_len   = 2,
16985198Sjmcp 	.tbl_ovp   = NULL,
16995198Sjmcp 	.tbl_fmt   = fmt_call,
17005198Sjmcp 	.tbl_inp   = initial_table_def
17015198Sjmcp };
1702