xref: /titanic_52/usr/src/lib/libdisasm/common/dis_sparc_instr.c (revision f7184619589931c4b827180c213074c470f08a8f)
1*f7184619SJoshua M. Clulow /*
2*f7184619SJoshua M. Clulow  * CDDL HEADER START
3*f7184619SJoshua M. Clulow  *
4*f7184619SJoshua M. Clulow  * The contents of this file are subject to the terms of the
5*f7184619SJoshua M. Clulow  * Common Development and Distribution License (the "License").
6*f7184619SJoshua M. Clulow  * You may not use this file except in compliance with the License.
7*f7184619SJoshua M. Clulow  *
8*f7184619SJoshua M. Clulow  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*f7184619SJoshua M. Clulow  * or http://www.opensolaris.org/os/licensing.
10*f7184619SJoshua M. Clulow  * See the License for the specific language governing permissions
11*f7184619SJoshua M. Clulow  * and limitations under the License.
12*f7184619SJoshua M. Clulow  *
13*f7184619SJoshua M. Clulow  * When distributing Covered Code, include this CDDL HEADER in each
14*f7184619SJoshua M. Clulow  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*f7184619SJoshua M. Clulow  * If applicable, add the following below this CDDL HEADER, with the
16*f7184619SJoshua M. Clulow  * fields enclosed by brackets "[]" replaced with your own identifying
17*f7184619SJoshua M. Clulow  * information: Portions Copyright [yyyy] [name of copyright owner]
18*f7184619SJoshua M. Clulow  *
19*f7184619SJoshua M. Clulow  * CDDL HEADER END
20*f7184619SJoshua M. Clulow  */
21*f7184619SJoshua M. Clulow 
22*f7184619SJoshua M. Clulow /*
23*f7184619SJoshua M. Clulow  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24*f7184619SJoshua M. Clulow  * Use is subject to license terms.
25*f7184619SJoshua M. Clulow  */
26*f7184619SJoshua M. Clulow 
27*f7184619SJoshua M. Clulow /*
28*f7184619SJoshua M. Clulow  * Copyright 2009 Jason King.  All rights reserved.
29*f7184619SJoshua M. Clulow  * Use is subject to license terms.
30*f7184619SJoshua M. Clulow  */
31*f7184619SJoshua M. Clulow 
32*f7184619SJoshua M. Clulow #include "libdisasm.h"
33*f7184619SJoshua M. Clulow #include "libdisasm_impl.h"
34*f7184619SJoshua M. Clulow #include "dis_sparc.h"
35*f7184619SJoshua M. Clulow #include "dis_sparc_fmt.h"
36*f7184619SJoshua M. Clulow 
37*f7184619SJoshua M. Clulow #define	INVALID                \
38*f7184619SJoshua M. Clulow {                              \
39*f7184619SJoshua M. Clulow 	.in_type = INST_NONE,  \
40*f7184619SJoshua M. Clulow 	.in_arch = 0,          \
41*f7184619SJoshua M. Clulow 	.in_data = {           \
42*f7184619SJoshua M. Clulow 		.in_tbl = NULL \
43*f7184619SJoshua M. Clulow 	}                      \
44*f7184619SJoshua M. Clulow }
45*f7184619SJoshua M. Clulow 
46*f7184619SJoshua M. Clulow #define	INVALIDA(_arch)        \
47*f7184619SJoshua M. Clulow {                              \
48*f7184619SJoshua M. Clulow 	.in_type = INST_NONE,  \
49*f7184619SJoshua M. Clulow 	.in_arch = _arch,      \
50*f7184619SJoshua M. Clulow 	.in_data = {           \
51*f7184619SJoshua M. Clulow 		.in_tbl = NULL \
52*f7184619SJoshua M. Clulow 	}                      \
53*f7184619SJoshua M. Clulow }
54*f7184619SJoshua M. Clulow 
55*f7184619SJoshua M. Clulow #define	INST(_name, _arch, _flags)           \
56*f7184619SJoshua M. Clulow {                                            \
57*f7184619SJoshua M. Clulow 	.in_type = INST_DEF,	             \
58*f7184619SJoshua M. Clulow 	.in_arch = _arch,		     \
59*f7184619SJoshua M. Clulow 	.in_data = {			     \
60*f7184619SJoshua M. Clulow 		.in_def = {		     \
61*f7184619SJoshua M. Clulow 			.in_name   = _name,  \
62*f7184619SJoshua M. Clulow 			.in_flags  = _flags  \
63*f7184619SJoshua M. Clulow 		}			     \
64*f7184619SJoshua M. Clulow 	}				     \
65*f7184619SJoshua M. Clulow }
66*f7184619SJoshua M. Clulow 
67*f7184619SJoshua M. Clulow #define	TABLE(_name, _arch)      \
68*f7184619SJoshua M. Clulow {                                \
69*f7184619SJoshua M. Clulow 	.in_type = INST_TBL,     \
70*f7184619SJoshua M. Clulow 	.in_arch = _arch,        \
71*f7184619SJoshua M. Clulow 	.in_data = {             \
72*f7184619SJoshua M. Clulow 		.in_tbl = &_name \
73*f7184619SJoshua M. Clulow 	}                       \
74*f7184619SJoshua M. Clulow }
75*f7184619SJoshua M. Clulow 
76*f7184619SJoshua M. Clulow #define	OVERLAY(_idx, _inst) \
77*f7184619SJoshua M. Clulow {                            \
78*f7184619SJoshua M. Clulow 	.ov_idx  = _idx,     \
79*f7184619SJoshua M. Clulow 	.ov_inst = _inst     \
80*f7184619SJoshua M. Clulow }
81*f7184619SJoshua M. Clulow 
82*f7184619SJoshua M. Clulow #define	OVERLAY_END { .ov_idx = -1, .ov_inst = INVALID }
83*f7184619SJoshua M. Clulow 
84*f7184619SJoshua M. Clulow #define	V8	DIS_SPARC_V8
85*f7184619SJoshua M. Clulow #define	V9	DIS_SPARC_V9
86*f7184619SJoshua M. Clulow #define	V9S	DIS_SPARC_V9_SGI
87*f7184619SJoshua M. Clulow #define	V9O	DIS_SPARC_V9_OPL
88*f7184619SJoshua M. Clulow #define	VALL	V8|V9|V9S|V9O
89*f7184619SJoshua M. Clulow 
90*f7184619SJoshua M. Clulow /* branches */
91*f7184619SJoshua M. Clulow static const inst_t BPcc_table_def[16] = {
92*f7184619SJoshua M. Clulow 	INST("bn",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
93*f7184619SJoshua M. Clulow 	INST("be",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
94*f7184619SJoshua M. Clulow 	INST("ble",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
95*f7184619SJoshua M. Clulow 	INST("bl",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
96*f7184619SJoshua M. Clulow 
97*f7184619SJoshua M. Clulow 	INST("bleu", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
98*f7184619SJoshua M. Clulow 	INST("bcs",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
99*f7184619SJoshua M. Clulow 	INST("bneg", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
100*f7184619SJoshua M. Clulow 	INST("bvs",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
101*f7184619SJoshua M. Clulow 
102*f7184619SJoshua M. Clulow 	INST("ba",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
103*f7184619SJoshua M. Clulow 	INST("bne",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
104*f7184619SJoshua M. Clulow 	INST("bg",   V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
105*f7184619SJoshua M. Clulow 	INST("bge",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
106*f7184619SJoshua M. Clulow 
107*f7184619SJoshua M. Clulow 	INST("bgu",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
108*f7184619SJoshua M. Clulow 	INST("bcc",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
109*f7184619SJoshua M. Clulow 	INST("bpos", V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19)),
110*f7184619SJoshua M. Clulow 	INST("bvc",  V9|V9S, FLG_PRED|FLG_RS1(REG_ICC)|FLG_DISP(DISP19))
111*f7184619SJoshua M. Clulow };
112*f7184619SJoshua M. Clulow 
113*f7184619SJoshua M. Clulow 
114*f7184619SJoshua M. Clulow static const table_t BPcc_table = {
115*f7184619SJoshua M. Clulow 	.tbl_field = 28,
116*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
117*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
118*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
119*f7184619SJoshua M. Clulow 	.tbl_inp   = BPcc_table_def
120*f7184619SJoshua M. Clulow };
121*f7184619SJoshua M. Clulow 
122*f7184619SJoshua M. Clulow static const inst_t Bicc_table_def[16] = {
123*f7184619SJoshua M. Clulow 	INST("bn",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
124*f7184619SJoshua M. Clulow 	INST("be",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
125*f7184619SJoshua M. Clulow 	INST("ble",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
126*f7184619SJoshua M. Clulow 	INST("bl",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
127*f7184619SJoshua M. Clulow 
128*f7184619SJoshua M. Clulow 	INST("bleu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
129*f7184619SJoshua M. Clulow 	/* docs say it's 'bcs' but disassembler calles it synonym 'blu' */
130*f7184619SJoshua M. Clulow 	INST("blu",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
131*f7184619SJoshua M. Clulow 	INST("bneg", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
132*f7184619SJoshua M. Clulow 	INST("bvs",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
133*f7184619SJoshua M. Clulow 
134*f7184619SJoshua M. Clulow 	INST("ba",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
135*f7184619SJoshua M. Clulow 	INST("bne",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
136*f7184619SJoshua M. Clulow 	INST("bg",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
137*f7184619SJoshua M. Clulow 	INST("bge",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
138*f7184619SJoshua M. Clulow 
139*f7184619SJoshua M. Clulow 	INST("bgu",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
140*f7184619SJoshua M. Clulow 	/*
141*f7184619SJoshua M. Clulow 	 * while the docs say it's officially 'bcc', existing disassembler
142*f7184619SJoshua M. Clulow 	 * uses the synonym bgeu
143*f7184619SJoshua M. Clulow 	 */
144*f7184619SJoshua M. Clulow 	INST("bgeu", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
145*f7184619SJoshua M. Clulow 	INST("bpos", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
146*f7184619SJoshua M. Clulow 	INST("bvc",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
147*f7184619SJoshua M. Clulow };
148*f7184619SJoshua M. Clulow 
149*f7184619SJoshua M. Clulow static const table_t Bicc_table = {
150*f7184619SJoshua M. Clulow 	.tbl_field = 28,
151*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
152*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
153*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
154*f7184619SJoshua M. Clulow 	.tbl_inp   = Bicc_table_def
155*f7184619SJoshua M. Clulow };
156*f7184619SJoshua M. Clulow 
157*f7184619SJoshua M. Clulow static const inst_t BPr_table_def[16] = {
158*f7184619SJoshua M. Clulow 	INVALID,
159*f7184619SJoshua M. Clulow 	INST("brz",   V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
160*f7184619SJoshua M. Clulow 	INST("brlez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
161*f7184619SJoshua M. Clulow 	INST("brlz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
162*f7184619SJoshua M. Clulow 
163*f7184619SJoshua M. Clulow 	INVALID,
164*f7184619SJoshua M. Clulow 	INST("brnz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
165*f7184619SJoshua M. Clulow 	INST("brgz",  V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
166*f7184619SJoshua M. Clulow 	INST("brgez", V9|V9S, FLG_PRED|FLG_DISP(DISP16)|FLG_RS1(REG_INT)),
167*f7184619SJoshua M. Clulow 
168*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
169*f7184619SJoshua M. Clulow };
170*f7184619SJoshua M. Clulow 
171*f7184619SJoshua M. Clulow static const table_t BPr_table = {
172*f7184619SJoshua M. Clulow 	.tbl_field = 28,
173*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
174*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
175*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
176*f7184619SJoshua M. Clulow 	.tbl_inp   = BPr_table_def
177*f7184619SJoshua M. Clulow };
178*f7184619SJoshua M. Clulow 
179*f7184619SJoshua M. Clulow static const inst_t FBPfcc_table_def[16] = {
180*f7184619SJoshua M. Clulow 	INST("fbn",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
181*f7184619SJoshua M. Clulow 	INST("fbne",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
182*f7184619SJoshua M. Clulow 	INST("fblg",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
183*f7184619SJoshua M. Clulow 	INST("fbul",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
184*f7184619SJoshua M. Clulow 
185*f7184619SJoshua M. Clulow 	INST("fbl",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
186*f7184619SJoshua M. Clulow 	INST("fbug",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
187*f7184619SJoshua M. Clulow 	INST("fbg",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
188*f7184619SJoshua M. Clulow 	INST("fbu",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
189*f7184619SJoshua M. Clulow 
190*f7184619SJoshua M. Clulow 	INST("fba",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
191*f7184619SJoshua M. Clulow 	INST("fbe",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
192*f7184619SJoshua M. Clulow 	INST("fbue",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
193*f7184619SJoshua M. Clulow 	INST("fbge",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
194*f7184619SJoshua M. Clulow 
195*f7184619SJoshua M. Clulow 	INST("fbuge", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
196*f7184619SJoshua M. Clulow 	INST("fble",  V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
197*f7184619SJoshua M. Clulow 	INST("fbule", V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC)),
198*f7184619SJoshua M. Clulow 	INST("fbo",   V9|V9S, FLG_PRED|FLG_DISP(DISP19)|FLG_RS1(REG_FCC))
199*f7184619SJoshua M. Clulow };
200*f7184619SJoshua M. Clulow 
201*f7184619SJoshua M. Clulow static const table_t FBPfcc_table = {
202*f7184619SJoshua M. Clulow 	.tbl_field = 28,
203*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
204*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
205*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
206*f7184619SJoshua M. Clulow 	.tbl_inp   = FBPfcc_table_def
207*f7184619SJoshua M. Clulow };
208*f7184619SJoshua M. Clulow 
209*f7184619SJoshua M. Clulow static const inst_t FBfcc_table_def[16] = {
210*f7184619SJoshua M. Clulow 	INST("fbn",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
211*f7184619SJoshua M. Clulow 	INST("fbne",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
212*f7184619SJoshua M. Clulow 	INST("fblg",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
213*f7184619SJoshua M. Clulow 	INST("fbul",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
214*f7184619SJoshua M. Clulow 
215*f7184619SJoshua M. Clulow 	INST("fbl",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
216*f7184619SJoshua M. Clulow 	INST("fbug",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
217*f7184619SJoshua M. Clulow 	INST("fbg",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
218*f7184619SJoshua M. Clulow 	INST("fbu",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
219*f7184619SJoshua M. Clulow 
220*f7184619SJoshua M. Clulow 	INST("fba",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
221*f7184619SJoshua M. Clulow 	INST("fbe",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
222*f7184619SJoshua M. Clulow 	INST("fbue",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
223*f7184619SJoshua M. Clulow 	INST("fbge",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
224*f7184619SJoshua M. Clulow 
225*f7184619SJoshua M. Clulow 	INST("fbuge", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
226*f7184619SJoshua M. Clulow 	INST("fble",  VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
227*f7184619SJoshua M. Clulow 	INST("fbule", VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
228*f7184619SJoshua M. Clulow 	INST("fbo",   VALL, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
229*f7184619SJoshua M. Clulow };
230*f7184619SJoshua M. Clulow 
231*f7184619SJoshua M. Clulow static const table_t FBfcc_table = {
232*f7184619SJoshua M. Clulow 	.tbl_field = 28,
233*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
234*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
235*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
236*f7184619SJoshua M. Clulow 	.tbl_inp   = FBfcc_table_def
237*f7184619SJoshua M. Clulow };
238*f7184619SJoshua M. Clulow 
239*f7184619SJoshua M. Clulow static const inst_t CBccc_table_def[16] = {
240*f7184619SJoshua M. Clulow 	INST("cbn",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
241*f7184619SJoshua M. Clulow 	INST("cb123", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
242*f7184619SJoshua M. Clulow 	INST("cb12",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
243*f7184619SJoshua M. Clulow 	INST("cb13",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
244*f7184619SJoshua M. Clulow 	INST("cb1",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
245*f7184619SJoshua M. Clulow 	INST("cb23",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
246*f7184619SJoshua M. Clulow 	INST("cb2",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
247*f7184619SJoshua M. Clulow 	INST("cb3",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
248*f7184619SJoshua M. Clulow 	INST("cba",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
249*f7184619SJoshua M. Clulow 	INST("cb0",   V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
250*f7184619SJoshua M. Clulow 	INST("cb03",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
251*f7184619SJoshua M. Clulow 	INST("cb02",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
252*f7184619SJoshua M. Clulow 	INST("cb023", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
253*f7184619SJoshua M. Clulow 	INST("cb01",  V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
254*f7184619SJoshua M. Clulow 	INST("cb013", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE)),
255*f7184619SJoshua M. Clulow 	INST("cb012", V8, FLG_DISP(DISP22)|FLG_RS1(REG_NONE))
256*f7184619SJoshua M. Clulow };
257*f7184619SJoshua M. Clulow 
258*f7184619SJoshua M. Clulow static const table_t CBccc_table = {
259*f7184619SJoshua M. Clulow 	.tbl_field = 28,
260*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
261*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
262*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_branch,
263*f7184619SJoshua M. Clulow 	.tbl_inp   = CBccc_table_def
264*f7184619SJoshua M. Clulow };
265*f7184619SJoshua M. Clulow 
266*f7184619SJoshua M. Clulow static const inst_t branch_table_def[8] = {
267*f7184619SJoshua M. Clulow 	INST("unimp",		VALL,  0),
268*f7184619SJoshua M. Clulow 	TABLE(BPcc_table,	V9|V9S),
269*f7184619SJoshua M. Clulow 	TABLE(Bicc_table,	VALL),
270*f7184619SJoshua M. Clulow 	TABLE(BPr_table,	V9|V9S),
271*f7184619SJoshua M. Clulow 
272*f7184619SJoshua M. Clulow 	INST("sethi",		VALL,  0),
273*f7184619SJoshua M. Clulow 	TABLE(FBPfcc_table,	V9|V9S),
274*f7184619SJoshua M. Clulow 	TABLE(FBfcc_table,	VALL),
275*f7184619SJoshua M. Clulow 	TABLE(CBccc_table,	V8)
276*f7184619SJoshua M. Clulow };
277*f7184619SJoshua M. Clulow 
278*f7184619SJoshua M. Clulow static const overlay_t branch_ov_table[] = {
279*f7184619SJoshua M. Clulow 	OVERLAY(0x00, INST("illtrap", V9|V9S, 0)),
280*f7184619SJoshua M. Clulow 	OVERLAY_END
281*f7184619SJoshua M. Clulow };
282*f7184619SJoshua M. Clulow 
283*f7184619SJoshua M. Clulow static const table_t branch_table = {
284*f7184619SJoshua M. Clulow 	.tbl_field = 24,
285*f7184619SJoshua M. Clulow 	.tbl_len   = 3,
286*f7184619SJoshua M. Clulow 	.tbl_ovp   = branch_ov_table,
287*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_sethi,
288*f7184619SJoshua M. Clulow 	.tbl_inp   = branch_table_def
289*f7184619SJoshua M. Clulow };
290*f7184619SJoshua M. Clulow 
291*f7184619SJoshua M. Clulow /* load/stores */
292*f7184619SJoshua M. Clulow static const inst_t ls_table_def[64] = {
293*f7184619SJoshua M. Clulow 	/* 0x00 */
294*f7184619SJoshua M. Clulow 	INST("ld",		VALL,   0),
295*f7184619SJoshua M. Clulow 	INST("ldub",		VALL,   0),
296*f7184619SJoshua M. Clulow 	INST("lduh",		VALL,   0),
297*f7184619SJoshua M. Clulow 	INST("ldd",		VALL,   0),
298*f7184619SJoshua M. Clulow 
299*f7184619SJoshua M. Clulow 	INST("st",		VALL,   FLG_STORE),
300*f7184619SJoshua M. Clulow 	INST("stb",		VALL,   FLG_STORE),
301*f7184619SJoshua M. Clulow 	INST("sth",		VALL,   FLG_STORE),
302*f7184619SJoshua M. Clulow 	INST("std",		VALL,   FLG_STORE),
303*f7184619SJoshua M. Clulow 
304*f7184619SJoshua M. Clulow 	/* 0x08 */
305*f7184619SJoshua M. Clulow 	INST("ldsw",		V9|V9S, 0),
306*f7184619SJoshua M. Clulow 	INST("ldsb",		VALL,   0),
307*f7184619SJoshua M. Clulow 	INST("ldsh",		VALL,   0),
308*f7184619SJoshua M. Clulow 	INST("ldx",		V9|V9S, 0),
309*f7184619SJoshua M. Clulow 
310*f7184619SJoshua M. Clulow 	INVALID,
311*f7184619SJoshua M. Clulow 	INST("ldstub",		VALL,   0),
312*f7184619SJoshua M. Clulow 	INST("stx",		V9|V9S, FLG_STORE),
313*f7184619SJoshua M. Clulow 	INST("swap",		VALL,   0),
314*f7184619SJoshua M. Clulow 
315*f7184619SJoshua M. Clulow 	/* 0x10 */
316*f7184619SJoshua M. Clulow 	INST("lda",		VALL,   FLG_ASI),
317*f7184619SJoshua M. Clulow 	INST("lduba",		VALL,   FLG_ASI),
318*f7184619SJoshua M. Clulow 	INST("lduha",		VALL,   FLG_ASI),
319*f7184619SJoshua M. Clulow 	INST("ldda",		VALL,   FLG_ASI),
320*f7184619SJoshua M. Clulow 
321*f7184619SJoshua M. Clulow 	INST("sta",		VALL,   FLG_STORE|FLG_ASI),
322*f7184619SJoshua M. Clulow 	INST("stba",		VALL,   FLG_STORE|FLG_ASI),
323*f7184619SJoshua M. Clulow 	INST("stha",		VALL,   FLG_STORE|FLG_ASI),
324*f7184619SJoshua M. Clulow 	INST("stda",		VALL,   FLG_STORE|FLG_ASI),
325*f7184619SJoshua M. Clulow 
326*f7184619SJoshua M. Clulow 	/* 0x18 */
327*f7184619SJoshua M. Clulow 	INST("ldswa",		V9|V9S, FLG_ASI),
328*f7184619SJoshua M. Clulow 	INST("ldsba",		VALL,   FLG_ASI),
329*f7184619SJoshua M. Clulow 	INST("ldsha",		VALL,   FLG_ASI),
330*f7184619SJoshua M. Clulow 	INST("ldxa",		V9|V9S, FLG_ASI),
331*f7184619SJoshua M. Clulow 
332*f7184619SJoshua M. Clulow 	INVALID,
333*f7184619SJoshua M. Clulow 	INST("ldstuba",		VALL,   FLG_ASI),
334*f7184619SJoshua M. Clulow 	INST("stxa",		V9|V9S, FLG_STORE|FLG_ASI),
335*f7184619SJoshua M. Clulow 	INST("swapa",		VALL,   FLG_ASI),
336*f7184619SJoshua M. Clulow 
337*f7184619SJoshua M. Clulow 	/* 0x20 */
338*f7184619SJoshua M. Clulow 	INST("ld",		VALL,   FLG_RD(REG_FP)),
339*f7184619SJoshua M. Clulow 	/* ldx on v9 */
340*f7184619SJoshua M. Clulow 	INST("ld",		VALL,   FLG_RD(REG_FSR)),
341*f7184619SJoshua M. Clulow 	INST("ldq",		V9|V9S, FLG_RD(REG_FPQ)),
342*f7184619SJoshua M. Clulow 	INST("ldd",		VALL,   FLG_RD(REG_FPD)),
343*f7184619SJoshua M. Clulow 
344*f7184619SJoshua M. Clulow 	INST("st",		VALL,   FLG_STORE|FLG_RD(REG_FP)),
345*f7184619SJoshua M. Clulow 	/* stx on v9 */
346*f7184619SJoshua M. Clulow 	INST("st",		VALL,   FLG_STORE|FLG_RD(REG_FSR)),
347*f7184619SJoshua M. Clulow 	INST("stq",		VALL,   FLG_STORE|FLG_RD(REG_FPQ)),
348*f7184619SJoshua M. Clulow 	INST("std",		VALL,   FLG_STORE|FLG_RD(REG_FPD)),
349*f7184619SJoshua M. Clulow 
350*f7184619SJoshua M. Clulow 	/* 0x28 */
351*f7184619SJoshua M. Clulow 	INVALID,
352*f7184619SJoshua M. Clulow 	INVALID,
353*f7184619SJoshua M. Clulow 	INVALID,
354*f7184619SJoshua M. Clulow 	INVALID,
355*f7184619SJoshua M. Clulow 
356*f7184619SJoshua M. Clulow 	INVALID,
357*f7184619SJoshua M. Clulow 	INST("prefetch",		V9|V9S, 0),
358*f7184619SJoshua M. Clulow 	INVALID,
359*f7184619SJoshua M. Clulow 	INVALID,
360*f7184619SJoshua M. Clulow 
361*f7184619SJoshua M. Clulow 	/* 0x30 */
362*f7184619SJoshua M. Clulow 	INST("ld",		V8,	FLG_RD(REG_CP)),
363*f7184619SJoshua M. Clulow 	INST("ld",		V8,	FLG_RD(REG_CSR)),
364*f7184619SJoshua M. Clulow 	INST("ldqa",		V9|V9S,	FLG_ASI|FLG_RD(REG_FPQ)),
365*f7184619SJoshua M. Clulow 	INST("ldd",		V8,	FLG_RD(REG_CP)),
366*f7184619SJoshua M. Clulow 
367*f7184619SJoshua M. Clulow 	INST("st",		V8,	FLG_STORE|FLG_RD(REG_CP)),
368*f7184619SJoshua M. Clulow 	INST("st",		V8,	FLG_STORE|FLG_RD(REG_CSR)),
369*f7184619SJoshua M. Clulow 	INST("std",		V8,	FLG_STORE|FLG_RD(REG_CQ)),
370*f7184619SJoshua M. Clulow 	INST("std",		V8,	FLG_STORE|FLG_RD(REG_CP)),
371*f7184619SJoshua M. Clulow 
372*f7184619SJoshua M. Clulow 	/* 0x38 */
373*f7184619SJoshua M. Clulow 	INVALID,
374*f7184619SJoshua M. Clulow 	INVALID,
375*f7184619SJoshua M. Clulow 	INVALID,
376*f7184619SJoshua M. Clulow 	INVALID,
377*f7184619SJoshua M. Clulow 
378*f7184619SJoshua M. Clulow 	INST("casa",		V9|V9S, 0),
379*f7184619SJoshua M. Clulow 	INST("prefetcha",	V9|V9S, FLG_STORE|FLG_ASI),
380*f7184619SJoshua M. Clulow 	INST("casxa",		V9|V9S, 0),
381*f7184619SJoshua M. Clulow 	INVALID
382*f7184619SJoshua M. Clulow };
383*f7184619SJoshua M. Clulow 
384*f7184619SJoshua M. Clulow static const overlay_t ld_ov_table[] = {
385*f7184619SJoshua M. Clulow 	OVERLAY(0x10, INST("lduwa", V9|V9S, FLG_ASI|FLG_RD(REG_INT))),
386*f7184619SJoshua M. Clulow 	OVERLAY(0x14, INST("stwa",  V9|V9S,
387*f7184619SJoshua M. Clulow 		    FLG_STORE|FLG_ASI|FLG_RD(REG_INT))),
388*f7184619SJoshua M. Clulow 	OVERLAY(0x30, INST("lda",   V9|V9S, FLG_ASI|FLG_RD(REG_FP))),
389*f7184619SJoshua M. Clulow 	OVERLAY(0x33, INST("ldda",  V9|V9S, FLG_ASI|FLG_RD(REG_FPD))),
390*f7184619SJoshua M. Clulow 
391*f7184619SJoshua M. Clulow 	OVERLAY(0x34, INST("sta",   V9|V9S, FLG_STORE|FLG_ASI|FLG_RD(REG_FP))),
392*f7184619SJoshua M. Clulow 	OVERLAY(0x36, INST("stqa",  V9|V9S,
393*f7184619SJoshua M. Clulow 		    FLG_STORE|FLG_ASI|FLG_RD(REG_FPQ))),
394*f7184619SJoshua M. Clulow 	OVERLAY(0x37, INST("stda",  V9|V9S,
395*f7184619SJoshua M. Clulow 		    FLG_STORE|FLG_ASI|FLG_RD(REG_FPD))),
396*f7184619SJoshua M. Clulow 
397*f7184619SJoshua M. Clulow 	OVERLAY_END
398*f7184619SJoshua M. Clulow };
399*f7184619SJoshua M. Clulow 
400*f7184619SJoshua M. Clulow static const table_t ls_table = {
401*f7184619SJoshua M. Clulow 	.tbl_field = 24,
402*f7184619SJoshua M. Clulow 	.tbl_len   = 6,
403*f7184619SJoshua M. Clulow 	.tbl_ovp   = ld_ov_table,
404*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_ls,
405*f7184619SJoshua M. Clulow 	.tbl_inp   = ls_table_def
406*f7184619SJoshua M. Clulow };
407*f7184619SJoshua M. Clulow 
408*f7184619SJoshua M. Clulow 
409*f7184619SJoshua M. Clulow /* ALU operations */
410*f7184619SJoshua M. Clulow static const inst_t Tcc_table_def[16] = {
411*f7184619SJoshua M. Clulow 	INST("tn",   VALL, 0),
412*f7184619SJoshua M. Clulow 	INST("te",   VALL, 0),
413*f7184619SJoshua M. Clulow 	INST("tle",  VALL, 0),
414*f7184619SJoshua M. Clulow 	INST("tl",   VALL, 0),
415*f7184619SJoshua M. Clulow 
416*f7184619SJoshua M. Clulow 	INST("tleu", VALL, 0),
417*f7184619SJoshua M. Clulow 	INST("tcs",  VALL, 0),
418*f7184619SJoshua M. Clulow 	INST("tneg", VALL, 0),
419*f7184619SJoshua M. Clulow 	INST("tvs",  VALL, 0),
420*f7184619SJoshua M. Clulow 
421*f7184619SJoshua M. Clulow 	INST("ta",   VALL, 0),
422*f7184619SJoshua M. Clulow 	INST("tne",  VALL, 0),
423*f7184619SJoshua M. Clulow 	INST("tg",   VALL, 0),
424*f7184619SJoshua M. Clulow 	INST("tge",  VALL, 0),
425*f7184619SJoshua M. Clulow 
426*f7184619SJoshua M. Clulow 	INST("tgu",  VALL, 0),
427*f7184619SJoshua M. Clulow 	INST("tcc",  VALL, 0),
428*f7184619SJoshua M. Clulow 	INST("tpos", VALL, 0),
429*f7184619SJoshua M. Clulow 	INST("tvc",  VALL, 0)
430*f7184619SJoshua M. Clulow };
431*f7184619SJoshua M. Clulow 
432*f7184619SJoshua M. Clulow static const table_t Tcc_table = {
433*f7184619SJoshua M. Clulow 	.tbl_field = 28,
434*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
435*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
436*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_trap,
437*f7184619SJoshua M. Clulow 	.tbl_inp   = Tcc_table_def
438*f7184619SJoshua M. Clulow };
439*f7184619SJoshua M. Clulow 
440*f7184619SJoshua M. Clulow static const inst_t rwin_table_def[32] = {
441*f7184619SJoshua M. Clulow 	/* 0x00 */
442*f7184619SJoshua M. Clulow 	INST("saved",    V9|V9S, 0),
443*f7184619SJoshua M. Clulow 	INST("restored", V9|V9S, 0),
444*f7184619SJoshua M. Clulow 	INST("allclean", V9|V9S, 0),
445*f7184619SJoshua M. Clulow 	INST("otherw",   V9|V9S, 0),
446*f7184619SJoshua M. Clulow 
447*f7184619SJoshua M. Clulow 	INST("normalw",  V9|V9S, 0),
448*f7184619SJoshua M. Clulow 	INST("invalw",   V9|V9S, 0),
449*f7184619SJoshua M. Clulow 	INVALID,
450*f7184619SJoshua M. Clulow 	INVALID,
451*f7184619SJoshua M. Clulow 
452*f7184619SJoshua M. Clulow 	/* 0x08 */
453*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
454*f7184619SJoshua M. Clulow 
455*f7184619SJoshua M. Clulow 	/* 0x10 */
456*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
457*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
458*f7184619SJoshua M. Clulow };
459*f7184619SJoshua M. Clulow 
460*f7184619SJoshua M. Clulow static const table_t rwin_table = {
461*f7184619SJoshua M. Clulow 	.tbl_field = 29,
462*f7184619SJoshua M. Clulow 	.tbl_len   = 5,
463*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
464*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_regwin,
465*f7184619SJoshua M. Clulow 	.tbl_inp   = rwin_table_def
466*f7184619SJoshua M. Clulow };
467*f7184619SJoshua M. Clulow 
468*f7184619SJoshua M. Clulow static const inst_t tr_table_def[32] = {
469*f7184619SJoshua M. Clulow 	/* 0x00 */
470*f7184619SJoshua M. Clulow 	INST("done",  V9|V9S, 0),
471*f7184619SJoshua M. Clulow 	INST("retry", V9|V9S, 0),
472*f7184619SJoshua M. Clulow 	INVALID,
473*f7184619SJoshua M. Clulow 	INVALID,
474*f7184619SJoshua M. Clulow 
475*f7184619SJoshua M. Clulow 	INVALID,
476*f7184619SJoshua M. Clulow 	INVALID,
477*f7184619SJoshua M. Clulow 	INVALID,
478*f7184619SJoshua M. Clulow 	INVALID,
479*f7184619SJoshua M. Clulow 
480*f7184619SJoshua M. Clulow 	/* 0x08 */
481*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
482*f7184619SJoshua M. Clulow 	INST("jpriv", V9, FLG_DISP(DISP19)),
483*f7184619SJoshua M. Clulow 
484*f7184619SJoshua M. Clulow 	/* 0x10 */
485*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
486*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
487*f7184619SJoshua M. Clulow };
488*f7184619SJoshua M. Clulow 
489*f7184619SJoshua M. Clulow static const table_t tr_table = {
490*f7184619SJoshua M. Clulow 	.tbl_field = 29,
491*f7184619SJoshua M. Clulow 	.tbl_len   = 5,
492*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
493*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_trap_ret,
494*f7184619SJoshua M. Clulow 	.tbl_inp   = tr_table_def
495*f7184619SJoshua M. Clulow };
496*f7184619SJoshua M. Clulow 
497*f7184619SJoshua M. Clulow static const inst_t movicc_table_def[16] = {
498*f7184619SJoshua M. Clulow 	INST("movn",   V9|V9S, 0),
499*f7184619SJoshua M. Clulow 	INST("move",   V9|V9S, 0),
500*f7184619SJoshua M. Clulow 	INST("movle",  V9|V9S, 0),
501*f7184619SJoshua M. Clulow 	INST("movl",   V9|V9S, 0),
502*f7184619SJoshua M. Clulow 
503*f7184619SJoshua M. Clulow 	INST("movleu", V9|V9S, 0),
504*f7184619SJoshua M. Clulow 	INST("movcs",  V9|V9S, 0),
505*f7184619SJoshua M. Clulow 	INST("movneg", V9|V9S, 0),
506*f7184619SJoshua M. Clulow 	INST("movvs",  V9|V9S, 0),
507*f7184619SJoshua M. Clulow 
508*f7184619SJoshua M. Clulow 	INST("mova",   V9|V9S, 0),
509*f7184619SJoshua M. Clulow 	INST("movne",  V9|V9S, 0),
510*f7184619SJoshua M. Clulow 	INST("movg",   V9|V9S, 0),
511*f7184619SJoshua M. Clulow 	INST("movge",  V9|V9S, 0),
512*f7184619SJoshua M. Clulow 
513*f7184619SJoshua M. Clulow 	INST("movgu",  V9|V9S, 0),
514*f7184619SJoshua M. Clulow 	INST("movcc",  V9|V9S, 0),
515*f7184619SJoshua M. Clulow 	INST("movpos", V9|V9S, 0),
516*f7184619SJoshua M. Clulow 	INST("movvc",  V9|V9S, 0)
517*f7184619SJoshua M. Clulow };
518*f7184619SJoshua M. Clulow 
519*f7184619SJoshua M. Clulow static const inst_t movfcc_table_def[16] = {
520*f7184619SJoshua M. Clulow 	INST("movn",   V9|V9S, 0),
521*f7184619SJoshua M. Clulow 	INST("movne",  V9|V9S, 0),
522*f7184619SJoshua M. Clulow 	INST("movlg",  V9|V9S, 0),
523*f7184619SJoshua M. Clulow 	INST("movul",  V9|V9S, 0),
524*f7184619SJoshua M. Clulow 
525*f7184619SJoshua M. Clulow 	INST("movl",   V9|V9S, 0),
526*f7184619SJoshua M. Clulow 	INST("movug",  V9|V9S, 0),
527*f7184619SJoshua M. Clulow 	INST("movg",   V9|V9S, 0),
528*f7184619SJoshua M. Clulow 	INST("movu",   V9|V9S, 0),
529*f7184619SJoshua M. Clulow 
530*f7184619SJoshua M. Clulow 	INST("mova",   V9|V9S, 0),
531*f7184619SJoshua M. Clulow 	INST("move",   V9|V9S, 0),
532*f7184619SJoshua M. Clulow 	INST("movue",  V9|V9S, 0),
533*f7184619SJoshua M. Clulow 	INST("movge",  V9|V9S, 0),
534*f7184619SJoshua M. Clulow 
535*f7184619SJoshua M. Clulow 	INST("movuge", V9|V9S, 0),
536*f7184619SJoshua M. Clulow 	INST("movle",  V9|V9S, 0),
537*f7184619SJoshua M. Clulow 	INST("movule", V9|V9S, 0),
538*f7184619SJoshua M. Clulow 	INST("movo",   V9|V9S, 0)
539*f7184619SJoshua M. Clulow };
540*f7184619SJoshua M. Clulow 
541*f7184619SJoshua M. Clulow static const table_t movfcc_table = {
542*f7184619SJoshua M. Clulow 	.tbl_field = 17,
543*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
544*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
545*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_movcc,
546*f7184619SJoshua M. Clulow 	.tbl_inp   = movfcc_table_def
547*f7184619SJoshua M. Clulow };
548*f7184619SJoshua M. Clulow 
549*f7184619SJoshua M. Clulow static const table_t movicc_table = {
550*f7184619SJoshua M. Clulow 	.tbl_field = 17,
551*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
552*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
553*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_movcc,
554*f7184619SJoshua M. Clulow 	.tbl_inp   = movicc_table_def
555*f7184619SJoshua M. Clulow };
556*f7184619SJoshua M. Clulow 
557*f7184619SJoshua M. Clulow static const inst_t movcc_table_def[2] = {
558*f7184619SJoshua M. Clulow 	TABLE(movfcc_table, V9|V9S),
559*f7184619SJoshua M. Clulow 	TABLE(movicc_table, V9|V9S)
560*f7184619SJoshua M. Clulow };
561*f7184619SJoshua M. Clulow 
562*f7184619SJoshua M. Clulow static const table_t movcc_table = {
563*f7184619SJoshua M. Clulow 	.tbl_field = 18,
564*f7184619SJoshua M. Clulow 	.tbl_len   = 1,
565*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
566*f7184619SJoshua M. Clulow 	.tbl_fmt   = NULL,
567*f7184619SJoshua M. Clulow 	.tbl_inp   = movcc_table_def
568*f7184619SJoshua M. Clulow };
569*f7184619SJoshua M. Clulow 
570*f7184619SJoshua M. Clulow static const inst_t movr_table_def[8] = {
571*f7184619SJoshua M. Clulow 	INVALID,
572*f7184619SJoshua M. Clulow 	/* aka movrz */
573*f7184619SJoshua M. Clulow 	INST("movre",   V9|V9S, 0),
574*f7184619SJoshua M. Clulow 	INST("movrlez", V9|V9S, 0),
575*f7184619SJoshua M. Clulow 	INST("movrlz",  V9|V9S, 0),
576*f7184619SJoshua M. Clulow 
577*f7184619SJoshua M. Clulow 	INVALID,
578*f7184619SJoshua M. Clulow 	/* aka movrnz */
579*f7184619SJoshua M. Clulow 	INST("movrne",  V9|V9S, 0),
580*f7184619SJoshua M. Clulow 	INST("movrgz",  V9|V9S, 0),
581*f7184619SJoshua M. Clulow 	INST("movrgez", V9|V9S, 0)
582*f7184619SJoshua M. Clulow };
583*f7184619SJoshua M. Clulow 
584*f7184619SJoshua M. Clulow static const table_t movr_table = {
585*f7184619SJoshua M. Clulow 	.tbl_field = 12,
586*f7184619SJoshua M. Clulow 	.tbl_len   = 3,
587*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
588*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_movr,
589*f7184619SJoshua M. Clulow 	.tbl_inp   = movr_table_def
590*f7184619SJoshua M. Clulow };
591*f7184619SJoshua M. Clulow 
592*f7184619SJoshua M. Clulow static const inst_t FPop1_table_def[512] = {
593*f7184619SJoshua M. Clulow 	/* 0x000 */
594*f7184619SJoshua M. Clulow 	INVALID,
595*f7184619SJoshua M. Clulow 	INST("fmovs", VALL,
596*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
597*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S,
598*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
599*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S,
600*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
601*f7184619SJoshua M. Clulow 
602*f7184619SJoshua M. Clulow 	INVALID,
603*f7184619SJoshua M. Clulow 	INST("fnegs", VALL,
604*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
605*f7184619SJoshua M. Clulow 	INST("fnegd", V9|V9S,
606*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
607*f7184619SJoshua M. Clulow 	INST("fnegq", V9|V9S,
608*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
609*f7184619SJoshua M. Clulow 
610*f7184619SJoshua M. Clulow 	/* 0x008 */
611*f7184619SJoshua M. Clulow 	INVALID,
612*f7184619SJoshua M. Clulow 	INST("fabss", VALL,
613*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
614*f7184619SJoshua M. Clulow 	INST("fabsd", V9|V9S,
615*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
616*f7184619SJoshua M. Clulow 	INST("fabsq", V9|V9S,
617*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
618*f7184619SJoshua M. Clulow 
619*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
620*f7184619SJoshua M. Clulow 
621*f7184619SJoshua M. Clulow 	/* 0x010 */
622*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
623*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
624*f7184619SJoshua M. Clulow 
625*f7184619SJoshua M. Clulow 	/* 0x020 */
626*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
627*f7184619SJoshua M. Clulow 
628*f7184619SJoshua M. Clulow 	/* 0x028 */
629*f7184619SJoshua M. Clulow 	INVALID,
630*f7184619SJoshua M. Clulow 	INST("fsqrts", VALL,
631*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
632*f7184619SJoshua M. Clulow 	INST("fsqrtd", VALL,
633*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
634*f7184619SJoshua M. Clulow 	INST("fsqrtq", VALL,
635*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
636*f7184619SJoshua M. Clulow 
637*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
638*f7184619SJoshua M. Clulow 
639*f7184619SJoshua M. Clulow 	/* 0x30 */
640*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
641*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
642*f7184619SJoshua M. Clulow 
643*f7184619SJoshua M. Clulow 	/* 0x40 */
644*f7184619SJoshua M. Clulow 	INVALID,
645*f7184619SJoshua M. Clulow 	INST("fadds", VALL,
646*f7184619SJoshua M. Clulow 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
647*f7184619SJoshua M. Clulow 	INST("faddd", VALL,
648*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
649*f7184619SJoshua M. Clulow 	INST("faddq", VALL,
650*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
651*f7184619SJoshua M. Clulow 
652*f7184619SJoshua M. Clulow 	INVALID,
653*f7184619SJoshua M. Clulow 	INST("fsubs", VALL,
654*f7184619SJoshua M. Clulow 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
655*f7184619SJoshua M. Clulow 	INST("fsubd", VALL,
656*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
657*f7184619SJoshua M. Clulow 	INST("fsubq", VALL,
658*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
659*f7184619SJoshua M. Clulow 
660*f7184619SJoshua M. Clulow 	/* 0x048 */
661*f7184619SJoshua M. Clulow 	INVALID,
662*f7184619SJoshua M. Clulow 	INST("fmuls", VALL,
663*f7184619SJoshua M. Clulow 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
664*f7184619SJoshua M. Clulow 	INST("fmuld", VALL,
665*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
666*f7184619SJoshua M. Clulow 	INST("fmulq", VALL,
667*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
668*f7184619SJoshua M. Clulow 
669*f7184619SJoshua M. Clulow 	INVALID,
670*f7184619SJoshua M. Clulow 	INST("fdivs", VALL,
671*f7184619SJoshua M. Clulow 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
672*f7184619SJoshua M. Clulow 	INST("fdivd", VALL,
673*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
674*f7184619SJoshua M. Clulow 	INST("fdivq", VALL,
675*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
676*f7184619SJoshua M. Clulow 
677*f7184619SJoshua M. Clulow 	/* 0x050 */
678*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
679*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
680*f7184619SJoshua M. Clulow 
681*f7184619SJoshua M. Clulow 	/* 0x060 */
682*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
683*f7184619SJoshua M. Clulow 
684*f7184619SJoshua M. Clulow 	/* 0x068 */
685*f7184619SJoshua M. Clulow 	INVALID,
686*f7184619SJoshua M. Clulow 	INST("fsmuld", VALL,
687*f7184619SJoshua M. Clulow 		FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
688*f7184619SJoshua M. Clulow 	INVALID,
689*f7184619SJoshua M. Clulow 	INVALID,
690*f7184619SJoshua M. Clulow 
691*f7184619SJoshua M. Clulow 	INVALID,
692*f7184619SJoshua M. Clulow 	INVALID,
693*f7184619SJoshua M. Clulow 	INST("fdmulq", VALL,
694*f7184619SJoshua M. Clulow 		FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
695*f7184619SJoshua M. Clulow 	INVALID,
696*f7184619SJoshua M. Clulow 
697*f7184619SJoshua M. Clulow 	/* 0x070 */
698*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
699*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
700*f7184619SJoshua M. Clulow 
701*f7184619SJoshua M. Clulow 	/* 0x080 */
702*f7184619SJoshua M. Clulow 	INVALID,
703*f7184619SJoshua M. Clulow 	INST("fstox", V9|V9S,
704*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
705*f7184619SJoshua M. Clulow 	INST("fdtox", V9|V9S,
706*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
707*f7184619SJoshua M. Clulow 	INST("fqtox", V9|V9S,
708*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)),
709*f7184619SJoshua M. Clulow 
710*f7184619SJoshua M. Clulow 	INST("fxtos", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|
711*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
712*f7184619SJoshua M. Clulow 	INVALID,
713*f7184619SJoshua M. Clulow 	INVALID,
714*f7184619SJoshua M. Clulow 	INVALID,
715*f7184619SJoshua M. Clulow 
716*f7184619SJoshua M. Clulow 	/* 0x088 */
717*f7184619SJoshua M. Clulow 	INST("fxtod", V9|V9S,
718*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
719*f7184619SJoshua M. Clulow 	INVALID,
720*f7184619SJoshua M. Clulow 	INVALID,
721*f7184619SJoshua M. Clulow 	INVALID,
722*f7184619SJoshua M. Clulow 
723*f7184619SJoshua M. Clulow 	INST("fxtoq", V9|V9S,
724*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
725*f7184619SJoshua M. Clulow 	INVALID,
726*f7184619SJoshua M. Clulow 	INVALID,
727*f7184619SJoshua M. Clulow 	INVALID,
728*f7184619SJoshua M. Clulow 
729*f7184619SJoshua M. Clulow 	/* 0x090 */
730*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
731*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
732*f7184619SJoshua M. Clulow 
733*f7184619SJoshua M. Clulow 	/* 0x0a0 */
734*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
735*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
736*f7184619SJoshua M. Clulow 
737*f7184619SJoshua M. Clulow 	/* 0x0b0 */
738*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
739*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
740*f7184619SJoshua M. Clulow 
741*f7184619SJoshua M. Clulow 	/* 0x0c0 */
742*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
743*f7184619SJoshua M. Clulow 
744*f7184619SJoshua M. Clulow 	INST("fitos", VALL,
745*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
746*f7184619SJoshua M. Clulow 	INVALID,
747*f7184619SJoshua M. Clulow 	INST("fdtos", VALL,
748*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)),
749*f7184619SJoshua M. Clulow 	INST("fqtos", VALL,
750*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)),
751*f7184619SJoshua M. Clulow 
752*f7184619SJoshua M. Clulow 	/* 0x0c8 */
753*f7184619SJoshua M. Clulow 	INST("fitod", VALL,
754*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
755*f7184619SJoshua M. Clulow 	INST("fstod", VALL,
756*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPD)),
757*f7184619SJoshua M. Clulow 	INVALID,
758*f7184619SJoshua M. Clulow 	INST("fqtod", VALL,
759*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPD)),
760*f7184619SJoshua M. Clulow 
761*f7184619SJoshua M. Clulow 	INST("fitoq", VALL,
762*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)),
763*f7184619SJoshua M. Clulow 	INST("fstoq", VALL,
764*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FPQ)),
765*f7184619SJoshua M. Clulow 	INST("fdtoq", VALL,
766*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPQ)),
767*f7184619SJoshua M. Clulow 	INVALID,
768*f7184619SJoshua M. Clulow 
769*f7184619SJoshua M. Clulow 	/* 0x0d0 */
770*f7184619SJoshua M. Clulow 	INVALID,
771*f7184619SJoshua M. Clulow 	INST("fstoi", VALL,
772*f7184619SJoshua M. Clulow 	    FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
773*f7184619SJoshua M. Clulow 	INST("fdtoi", VALL,
774*f7184619SJoshua M. Clulow 	    FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FP)),
775*f7184619SJoshua M. Clulow 	INST("fqtoi", VALL,
776*f7184619SJoshua M. Clulow 	    FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FP)),
777*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
778*f7184619SJoshua M. Clulow 
779*f7184619SJoshua M. Clulow 	/* 0x0d8 */
780*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
781*f7184619SJoshua M. Clulow 
782*f7184619SJoshua M. Clulow 	/* 0x0e0 */
783*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
784*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
785*f7184619SJoshua M. Clulow 
786*f7184619SJoshua M. Clulow 	/* 0x0f0 */
787*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
788*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
789*f7184619SJoshua M. Clulow 
790*f7184619SJoshua M. Clulow 	/* 0x100 */
791*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
792*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
793*f7184619SJoshua M. Clulow 
794*f7184619SJoshua M. Clulow 	/* 0x110 */
795*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
796*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
797*f7184619SJoshua M. Clulow 
798*f7184619SJoshua M. Clulow 	/* 0x120 */
799*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
800*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
801*f7184619SJoshua M. Clulow 
802*f7184619SJoshua M. Clulow 	/* 0x130 */
803*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
804*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
805*f7184619SJoshua M. Clulow 
806*f7184619SJoshua M. Clulow 	/* 0x140 */
807*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
808*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
809*f7184619SJoshua M. Clulow 
810*f7184619SJoshua M. Clulow 	/* 0x150 */
811*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
812*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
813*f7184619SJoshua M. Clulow 
814*f7184619SJoshua M. Clulow 	/* 0x160 */
815*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
816*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
817*f7184619SJoshua M. Clulow 
818*f7184619SJoshua M. Clulow 	/* 0x170 */
819*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
820*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
821*f7184619SJoshua M. Clulow 
822*f7184619SJoshua M. Clulow 	/* 0x180 */
823*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
824*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
825*f7184619SJoshua M. Clulow 
826*f7184619SJoshua M. Clulow 	/* 0x190 */
827*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
828*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
829*f7184619SJoshua M. Clulow 
830*f7184619SJoshua M. Clulow 	/* 0x1a0 */
831*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
832*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
833*f7184619SJoshua M. Clulow 
834*f7184619SJoshua M. Clulow 	/* 0x1b0 */
835*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
836*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
837*f7184619SJoshua M. Clulow 
838*f7184619SJoshua M. Clulow 	/* 0x1c0 */
839*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
840*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
841*f7184619SJoshua M. Clulow 
842*f7184619SJoshua M. Clulow 	/* 0x1d0 */
843*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
844*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
845*f7184619SJoshua M. Clulow 
846*f7184619SJoshua M. Clulow 	/* 0x1e0 */
847*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
848*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
849*f7184619SJoshua M. Clulow 
850*f7184619SJoshua M. Clulow 	/* 0x1f0 */
851*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
852*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
853*f7184619SJoshua M. Clulow };
854*f7184619SJoshua M. Clulow 
855*f7184619SJoshua M. Clulow static const table_t FPop1_table = {
856*f7184619SJoshua M. Clulow 	.tbl_field = 13,
857*f7184619SJoshua M. Clulow 	.tbl_len   = 9,
858*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
859*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_fpop1,
860*f7184619SJoshua M. Clulow 	.tbl_inp   = FPop1_table_def
861*f7184619SJoshua M. Clulow };
862*f7184619SJoshua M. Clulow 
863*f7184619SJoshua M. Clulow static const inst_t FPop2_table_def[512] = {
864*f7184619SJoshua M. Clulow 	/* 0x000 */
865*f7184619SJoshua M. Clulow 	INVALID,
866*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S,
867*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
868*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S,
869*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
870*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S,
871*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
872*f7184619SJoshua M. Clulow 
873*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
874*f7184619SJoshua M. Clulow 
875*f7184619SJoshua M. Clulow 	/* 0x008 */
876*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
877*f7184619SJoshua M. Clulow 
878*f7184619SJoshua M. Clulow 	/* 0x010 */
879*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
880*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
881*f7184619SJoshua M. Clulow 
882*f7184619SJoshua M. Clulow 	/* 0x020 */
883*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
884*f7184619SJoshua M. Clulow 
885*f7184619SJoshua M. Clulow 	INST("fmovrsz", V9|V9S,
886*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
887*f7184619SJoshua M. Clulow 	INST("fmovrdz", V9|V9S,
888*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
889*f7184619SJoshua M. Clulow 	INST("fmovrqz", V9|V9S,
890*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
891*f7184619SJoshua M. Clulow 	INVALID,
892*f7184619SJoshua M. Clulow 
893*f7184619SJoshua M. Clulow 	/* 0x028 */
894*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
895*f7184619SJoshua M. Clulow 
896*f7184619SJoshua M. Clulow 	/* 0x030 */
897*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
898*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
899*f7184619SJoshua M. Clulow 
900*f7184619SJoshua M. Clulow 	/* 0x040 */
901*f7184619SJoshua M. Clulow 	INVALID,
902*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S,
903*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
904*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S,
905*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
906*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S,
907*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
908*f7184619SJoshua M. Clulow 
909*f7184619SJoshua M. Clulow 	INST("fmovrslez", V9|V9S,
910*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
911*f7184619SJoshua M. Clulow 	INST("fmovrdlez", V9|V9S,
912*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
913*f7184619SJoshua M. Clulow 	INST("fmovrqlez", V9|V9S,
914*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
915*f7184619SJoshua M. Clulow 	INVALID,
916*f7184619SJoshua M. Clulow 
917*f7184619SJoshua M. Clulow 	/* 0x048 */
918*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
919*f7184619SJoshua M. Clulow 
920*f7184619SJoshua M. Clulow 	/* 0x050 */
921*f7184619SJoshua M. Clulow 	INVALID,
922*f7184619SJoshua M. Clulow 	INST("fcmps", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE)
923*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
924*f7184619SJoshua M. Clulow 	INST("fcmpd", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE)
925*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
926*f7184619SJoshua M. Clulow 	INST("fcmpq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE)
927*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
928*f7184619SJoshua M. Clulow 
929*f7184619SJoshua M. Clulow 	INVALID,
930*f7184619SJoshua M. Clulow 	INST("fcmpes", VALL, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_NONE)
931*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
932*f7184619SJoshua M. Clulow 	INST("fcmped", VALL, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_NONE)
933*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
934*f7184619SJoshua M. Clulow 	INST("fcmpeq", VALL, FLG_P1(REG_FPQ)|FLG_P2(REG_FPQ)|FLG_P3(REG_NONE)
935*f7184619SJoshua M. Clulow 	    |FLG_NOIMM),
936*f7184619SJoshua M. Clulow 
937*f7184619SJoshua M. Clulow 	/* 0x058 */
938*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
939*f7184619SJoshua M. Clulow 
940*f7184619SJoshua M. Clulow 	/* 0x060 */
941*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
942*f7184619SJoshua M. Clulow 
943*f7184619SJoshua M. Clulow 	INVALID,
944*f7184619SJoshua M. Clulow 	INST("fmovrslz", V9|V9S,
945*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
946*f7184619SJoshua M. Clulow 	INST("fmovrdlz", V9|V9S,
947*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
948*f7184619SJoshua M. Clulow 	INST("fmovrqlz", V9|V9S,
949*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
950*f7184619SJoshua M. Clulow 
951*f7184619SJoshua M. Clulow 	/* 0x068 */
952*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
953*f7184619SJoshua M. Clulow 
954*f7184619SJoshua M. Clulow 	/* 0x070 */
955*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
956*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
957*f7184619SJoshua M. Clulow 
958*f7184619SJoshua M. Clulow 	/* 0x080 */
959*f7184619SJoshua M. Clulow 	INVALID,
960*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S,
961*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FP)|FLG_NOIMM|FLG_P3(REG_FP)),
962*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S,
963*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|FLG_NOIMM|FLG_P3(REG_FPD)),
964*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S,
965*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|FLG_NOIMM|FLG_P3(REG_FPQ)),
966*f7184619SJoshua M. Clulow 
967*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
968*f7184619SJoshua M. Clulow 
969*f7184619SJoshua M. Clulow 	/* 0x088 */
970*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
971*f7184619SJoshua M. Clulow 
972*f7184619SJoshua M. Clulow 	/* 0x090 */
973*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
974*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
975*f7184619SJoshua M. Clulow 
976*f7184619SJoshua M. Clulow 	/* 0x0a0 */
977*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
978*f7184619SJoshua M. Clulow 
979*f7184619SJoshua M. Clulow 	INVALID,
980*f7184619SJoshua M. Clulow 	INST("fmovrsnz", V9|V9S,
981*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FP)|FLG_P3(REG_FP)),
982*f7184619SJoshua M. Clulow 	INST("fmovrdnz", V9|V9S,
983*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
984*f7184619SJoshua M. Clulow 	INST("fmovrqnz", V9|V9S,
985*f7184619SJoshua M. Clulow 		FLG_P1(REG_INT)|FLG_NOIMM|FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
986*f7184619SJoshua M. Clulow 
987*f7184619SJoshua M. Clulow 	/* 0x0a8 */
988*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
989*f7184619SJoshua M. Clulow 
990*f7184619SJoshua M. Clulow 	/* 0x0b0 */
991*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
992*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
993*f7184619SJoshua M. Clulow 
994*f7184619SJoshua M. Clulow 	/* 0x0c0 */
995*f7184619SJoshua M. Clulow 	INVALID,
996*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
997*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FP)),
998*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
999*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPD)),
1000*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
1001*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPQ)),
1002*f7184619SJoshua M. Clulow 
1003*f7184619SJoshua M. Clulow 	INVALID,
1004*f7184619SJoshua M. Clulow 	INST("fmovrsgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1005*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1006*f7184619SJoshua M. Clulow 	INST("fmovrdgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1007*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1008*f7184619SJoshua M. Clulow 	INST("fmovrqgz", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1009*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
1010*f7184619SJoshua M. Clulow 
1011*f7184619SJoshua M. Clulow 	/* 0x0c8 */
1012*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1013*f7184619SJoshua M. Clulow 
1014*f7184619SJoshua M. Clulow 	/* 0x0d0 */
1015*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1016*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1017*f7184619SJoshua M. Clulow 
1018*f7184619SJoshua M. Clulow 	/* 0x0e0 */
1019*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
1020*f7184619SJoshua M. Clulow 
1021*f7184619SJoshua M. Clulow 	INVALID,
1022*f7184619SJoshua M. Clulow 	INST("fmovrsgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1023*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1024*f7184619SJoshua M. Clulow 	INST("fmovrdgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1025*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1026*f7184619SJoshua M. Clulow 	INST("fmovrqgez", V9|V9S, FLG_P1(REG_INT)|FLG_NOIMM|
1027*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPQ)|FLG_P3(REG_FPQ)),
1028*f7184619SJoshua M. Clulow 
1029*f7184619SJoshua M. Clulow 	/* 0x0e8 */
1030*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1031*f7184619SJoshua M. Clulow 
1032*f7184619SJoshua M. Clulow 	/* 0x0f0 */
1033*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1034*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1035*f7184619SJoshua M. Clulow 
1036*f7184619SJoshua M. Clulow 	/* 0x100 */
1037*f7184619SJoshua M. Clulow 	INVALID,
1038*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
1039*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FP)),
1040*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
1041*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPD)),
1042*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
1043*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPQ)),
1044*f7184619SJoshua M. Clulow 
1045*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
1046*f7184619SJoshua M. Clulow 
1047*f7184619SJoshua M. Clulow 	/* 0x108 */
1048*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1049*f7184619SJoshua M. Clulow 
1050*f7184619SJoshua M. Clulow 	/* 0x110 */
1051*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1052*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1053*f7184619SJoshua M. Clulow 
1054*f7184619SJoshua M. Clulow 	/* 0x120 */
1055*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1056*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1057*f7184619SJoshua M. Clulow 
1058*f7184619SJoshua M. Clulow 	/* 0x130 */
1059*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1060*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1061*f7184619SJoshua M. Clulow 
1062*f7184619SJoshua M. Clulow 	/* 0x140 */
1063*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1064*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1065*f7184619SJoshua M. Clulow 
1066*f7184619SJoshua M. Clulow 	/* 0x150 */
1067*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1068*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1069*f7184619SJoshua M. Clulow 
1070*f7184619SJoshua M. Clulow 	/* 0x160 */
1071*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1072*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1073*f7184619SJoshua M. Clulow 
1074*f7184619SJoshua M. Clulow 	/* 0x170 */
1075*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1076*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1077*f7184619SJoshua M. Clulow 
1078*f7184619SJoshua M. Clulow 	/* 0x180 */
1079*f7184619SJoshua M. Clulow 	INVALID,
1080*f7184619SJoshua M. Clulow 	INST("fmovs", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
1081*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FP)),
1082*f7184619SJoshua M. Clulow 	INST("fmovd", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
1083*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPD)),
1084*f7184619SJoshua M. Clulow 	INST("fmovq", V9|V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPQ)|
1085*f7184619SJoshua M. Clulow 		FLG_NOIMM|FLG_P3(REG_FPQ)),
1086*f7184619SJoshua M. Clulow 
1087*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
1088*f7184619SJoshua M. Clulow 
1089*f7184619SJoshua M. Clulow 	/* 0x188 */
1090*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1091*f7184619SJoshua M. Clulow 
1092*f7184619SJoshua M. Clulow 	/* 0x190 */
1093*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1094*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1095*f7184619SJoshua M. Clulow 
1096*f7184619SJoshua M. Clulow 	/* 0x1a0 */
1097*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1098*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1099*f7184619SJoshua M. Clulow 
1100*f7184619SJoshua M. Clulow 	/* 0x1b0 */
1101*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1102*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1103*f7184619SJoshua M. Clulow 
1104*f7184619SJoshua M. Clulow 	/* 0x1c0 */
1105*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1106*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1107*f7184619SJoshua M. Clulow 
1108*f7184619SJoshua M. Clulow 	/* 0x1d0 */
1109*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1110*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1111*f7184619SJoshua M. Clulow 
1112*f7184619SJoshua M. Clulow 	/* 0x1e0 */
1113*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1114*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1115*f7184619SJoshua M. Clulow 
1116*f7184619SJoshua M. Clulow 	/* 0x1f0 */
1117*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1118*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
1119*f7184619SJoshua M. Clulow };
1120*f7184619SJoshua M. Clulow 
1121*f7184619SJoshua M. Clulow static const table_t FPop2_table = {
1122*f7184619SJoshua M. Clulow 	.tbl_field = 13,
1123*f7184619SJoshua M. Clulow 	.tbl_len   = 9,
1124*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
1125*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_fpop2,
1126*f7184619SJoshua M. Clulow 	.tbl_inp   = FPop2_table_def
1127*f7184619SJoshua M. Clulow };
1128*f7184619SJoshua M. Clulow 
1129*f7184619SJoshua M. Clulow static const inst_t vis_table_def[512] = {
1130*f7184619SJoshua M. Clulow 	/* 0x000 */
1131*f7184619SJoshua M. Clulow 	INST("edge8cc", V9S, FLG_NOIMM),
1132*f7184619SJoshua M. Clulow 	INST("edge8n", V9S, FLG_NOIMM),
1133*f7184619SJoshua M. Clulow 	INST("edge8lcc", V9S, FLG_NOIMM),
1134*f7184619SJoshua M. Clulow 	INST("edge8ln", V9S, FLG_NOIMM),
1135*f7184619SJoshua M. Clulow 
1136*f7184619SJoshua M. Clulow 	INST("edge16cc", V9S, FLG_NOIMM),
1137*f7184619SJoshua M. Clulow 	INST("edge16n", V9S, FLG_NOIMM),
1138*f7184619SJoshua M. Clulow 	INST("edge16lcc", V9S, FLG_NOIMM),
1139*f7184619SJoshua M. Clulow 	INST("edge16ln", V9S, FLG_NOIMM),
1140*f7184619SJoshua M. Clulow 
1141*f7184619SJoshua M. Clulow 	/* 0x008 */
1142*f7184619SJoshua M. Clulow 	INST("edge32cc", V9S, FLG_NOIMM),
1143*f7184619SJoshua M. Clulow 	INST("edge32n", V9S, FLG_NOIMM),
1144*f7184619SJoshua M. Clulow 	INST("edge32lcc", V9S, FLG_NOIMM),
1145*f7184619SJoshua M. Clulow 	INST("edge32ln", V9S, FLG_NOIMM),
1146*f7184619SJoshua M. Clulow 
1147*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
1148*f7184619SJoshua M. Clulow 
1149*f7184619SJoshua M. Clulow 	/* 0x010 */
1150*f7184619SJoshua M. Clulow 	INST("array8", V9S, FLG_NOIMM),
1151*f7184619SJoshua M. Clulow 	INST("addxc", V9, 0),
1152*f7184619SJoshua M. Clulow 	INST("array16", V9S, FLG_NOIMM),
1153*f7184619SJoshua M. Clulow 	INST("addxccc", V9, 0),
1154*f7184619SJoshua M. Clulow 
1155*f7184619SJoshua M. Clulow 	INST("array32", V9S, FLG_NOIMM),
1156*f7184619SJoshua M. Clulow 	INST("random", V9, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
1157*f7184619SJoshua M. Clulow 		FLG_RD(REG_FPD)|FLG_NOIMM),
1158*f7184619SJoshua M. Clulow 	INST("umulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM|
1159*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
1160*f7184619SJoshua M. Clulow 	INST("lzd", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1161*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_RD(REG_INT)),
1162*f7184619SJoshua M. Clulow 
1163*f7184619SJoshua M. Clulow 	/* 0x018 */
1164*f7184619SJoshua M. Clulow 	INST("alignaddr", V9S, FLG_NOIMM),
1165*f7184619SJoshua M. Clulow 	INST("bmask", V9S, FLG_P1(REG_INT)|FLG_P2(REG_INT)|FLG_RD(REG_INT)),
1166*f7184619SJoshua M. Clulow 	INST("alignaddrl", V9S, FLG_NOIMM),
1167*f7184619SJoshua M. Clulow 	INST("cmask8", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1168*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
1169*f7184619SJoshua M. Clulow 	INVALID,
1170*f7184619SJoshua M. Clulow 	INST("cmask16", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1171*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
1172*f7184619SJoshua M. Clulow 	INVALID,
1173*f7184619SJoshua M. Clulow 	INST("cmask32", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1174*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_NONE)),
1175*f7184619SJoshua M. Clulow 
1176*f7184619SJoshua M. Clulow 	/* 0x020 */
1177*f7184619SJoshua M. Clulow 	INST("fcmple16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1178*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1179*f7184619SJoshua M. Clulow 	INST("fsll16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1180*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1181*f7184619SJoshua M. Clulow 	INST("fcmpne16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1182*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1183*f7184619SJoshua M. Clulow 	INST("fsrl16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1184*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1185*f7184619SJoshua M. Clulow 
1186*f7184619SJoshua M. Clulow 	INST("fcmple32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1187*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1188*f7184619SJoshua M. Clulow 	INST("fsll32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1189*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1190*f7184619SJoshua M. Clulow 	INST("fcmpne32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1191*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1192*f7184619SJoshua M. Clulow 	INST("fsrl32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1193*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1194*f7184619SJoshua M. Clulow 
1195*f7184619SJoshua M. Clulow 	/* 0x028 */
1196*f7184619SJoshua M. Clulow 	INST("fcmpgt16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1197*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1198*f7184619SJoshua M. Clulow 	INST("fslas16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1199*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1200*f7184619SJoshua M. Clulow 	INST("fcmpeq16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1201*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1202*f7184619SJoshua M. Clulow 	INST("fsra16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1203*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1204*f7184619SJoshua M. Clulow 
1205*f7184619SJoshua M. Clulow 	INST("fcmpgt32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1206*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1207*f7184619SJoshua M. Clulow 	INST("fslas32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1208*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1209*f7184619SJoshua M. Clulow 	INST("fcmpeq32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1210*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1211*f7184619SJoshua M. Clulow 	INST("fsra32", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1212*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1213*f7184619SJoshua M. Clulow 
1214*f7184619SJoshua M. Clulow 	/* 0x030 */
1215*f7184619SJoshua M. Clulow 	INVALID,
1216*f7184619SJoshua M. Clulow 	INST("fmul8x16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1217*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1218*f7184619SJoshua M. Clulow 	INVALID,
1219*f7184619SJoshua M. Clulow 	INST("fmul8x16au", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1220*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1221*f7184619SJoshua M. Clulow 
1222*f7184619SJoshua M. Clulow 	INVALID,
1223*f7184619SJoshua M. Clulow 	INST("fmul8x16al", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1224*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1225*f7184619SJoshua M. Clulow 	INST("fmul8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1226*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1227*f7184619SJoshua M. Clulow 	INST("fmul8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1228*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1229*f7184619SJoshua M. Clulow 
1230*f7184619SJoshua M. Clulow 	/* 0x038 */
1231*f7184619SJoshua M. Clulow 	INST("fmuld8sux16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1232*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1233*f7184619SJoshua M. Clulow 	INST("fmuld8ulx16", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1234*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1235*f7184619SJoshua M. Clulow 	INST("fpack32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1236*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1237*f7184619SJoshua M. Clulow 	INST("fpack16", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
1238*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FP)),
1239*f7184619SJoshua M. Clulow 
1240*f7184619SJoshua M. Clulow 	INVALID,
1241*f7184619SJoshua M. Clulow 	INST("fpackfix", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
1242*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FP)),
1243*f7184619SJoshua M. Clulow 	INST("pdist", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1244*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1245*f7184619SJoshua M. Clulow 	INST("pdistn", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1246*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_INT)),
1247*f7184619SJoshua M. Clulow 
1248*f7184619SJoshua M. Clulow 	/* 0x040 */
1249*f7184619SJoshua M. Clulow 	INST("fmean16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1250*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1251*f7184619SJoshua M. Clulow 	INVALID,
1252*f7184619SJoshua M. Clulow 	INST("fpadd64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1253*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1254*f7184619SJoshua M. Clulow 	INVALID,
1255*f7184619SJoshua M. Clulow 	INST("fchksm16", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1256*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1257*f7184619SJoshua M. Clulow 	INVALID,
1258*f7184619SJoshua M. Clulow 	INST("fpsub64", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1259*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1260*f7184619SJoshua M. Clulow 	INVALID,
1261*f7184619SJoshua M. Clulow 
1262*f7184619SJoshua M. Clulow 	/* 0x048 */
1263*f7184619SJoshua M. Clulow 	INST("faligndata", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1264*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1265*f7184619SJoshua M. Clulow 	INVALID,
1266*f7184619SJoshua M. Clulow 	INVALID,
1267*f7184619SJoshua M. Clulow 	INST("fpmerge", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1268*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1269*f7184619SJoshua M. Clulow 
1270*f7184619SJoshua M. Clulow 	INST("bshuffle", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1271*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1272*f7184619SJoshua M. Clulow 	INST("fexpand", V9S, FLG_P1(REG_NONE)|FLG_NOIMM|
1273*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FPD)),
1274*f7184619SJoshua M. Clulow 	INVALID,
1275*f7184619SJoshua M. Clulow 	INVALID,
1276*f7184619SJoshua M. Clulow 
1277*f7184619SJoshua M. Clulow 	/* 0x050 */
1278*f7184619SJoshua M. Clulow 	INST("fpadd16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1279*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1280*f7184619SJoshua M. Clulow 	INST("fpadd16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1281*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1282*f7184619SJoshua M. Clulow 	INST("fpadd32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1283*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1284*f7184619SJoshua M. Clulow 	INST("fpadd32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1285*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1286*f7184619SJoshua M. Clulow 
1287*f7184619SJoshua M. Clulow 	INST("fpsub16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1288*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1289*f7184619SJoshua M. Clulow 	INST("fpsub16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1290*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1291*f7184619SJoshua M. Clulow 	INST("fpsub32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1292*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1293*f7184619SJoshua M. Clulow 	INST("fpsub32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1294*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1295*f7184619SJoshua M. Clulow 
1296*f7184619SJoshua M. Clulow 	/* 0x058 */
1297*f7184619SJoshua M. Clulow 	INST("fpadds16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1298*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1299*f7184619SJoshua M. Clulow 	INST("fpadds16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1300*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1301*f7184619SJoshua M. Clulow 	INST("fpadds32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1302*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1303*f7184619SJoshua M. Clulow 	INST("fpadds32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1304*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1305*f7184619SJoshua M. Clulow 	INST("fpsubs16", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1306*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1307*f7184619SJoshua M. Clulow 	INST("fpsubs16s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1308*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1309*f7184619SJoshua M. Clulow 	INST("fpsubs32", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1310*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1311*f7184619SJoshua M. Clulow 	INST("fpsubs32s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1312*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1313*f7184619SJoshua M. Clulow 
1314*f7184619SJoshua M. Clulow 	/* 0x060 */
1315*f7184619SJoshua M. Clulow 	INST("fzero", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
1316*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1317*f7184619SJoshua M. Clulow 	INST("fzeros", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
1318*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1319*f7184619SJoshua M. Clulow 	INST("fnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1320*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1321*f7184619SJoshua M. Clulow 	INST("fnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1322*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1323*f7184619SJoshua M. Clulow 
1324*f7184619SJoshua M. Clulow 	INST("fandnot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1325*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1326*f7184619SJoshua M. Clulow 	INST("fandnot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1327*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1328*f7184619SJoshua M. Clulow 	INST("fnot2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
1329*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1330*f7184619SJoshua M. Clulow 	INST("fnot2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
1331*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1332*f7184619SJoshua M. Clulow 
1333*f7184619SJoshua M. Clulow 	/* 0x068 */
1334*f7184619SJoshua M. Clulow 	INST("fandnot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1335*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1336*f7184619SJoshua M. Clulow 	INST("fandnot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1337*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1338*f7184619SJoshua M. Clulow 	INST("fnot1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)|
1339*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1340*f7184619SJoshua M. Clulow 	INST("fnot1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)|
1341*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1342*f7184619SJoshua M. Clulow 
1343*f7184619SJoshua M. Clulow 	INST("fxor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1344*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1345*f7184619SJoshua M. Clulow 	INST("fxors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1346*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1347*f7184619SJoshua M. Clulow 	INST("fnand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1348*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1349*f7184619SJoshua M. Clulow 	INST("fnands", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1350*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1351*f7184619SJoshua M. Clulow 
1352*f7184619SJoshua M. Clulow 	/* 0x070 */
1353*f7184619SJoshua M. Clulow 	INST("fand", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1354*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1355*f7184619SJoshua M. Clulow 	INST("fands", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1356*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1357*f7184619SJoshua M. Clulow 	INST("fxnor", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1358*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1359*f7184619SJoshua M. Clulow 	INST("fxnors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1360*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1361*f7184619SJoshua M. Clulow 
1362*f7184619SJoshua M. Clulow 	INST("fsrc1", V9S, FLG_P1(REG_FPD)|FLG_P2(REG_NONE)|
1363*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1364*f7184619SJoshua M. Clulow 	INST("fsrc1s", V9S, FLG_P1(REG_FP)|FLG_P2(REG_NONE)|
1365*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1366*f7184619SJoshua M. Clulow 	INST("fornot2", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1367*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1368*f7184619SJoshua M. Clulow 	INST("fornot2s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1369*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1370*f7184619SJoshua M. Clulow 
1371*f7184619SJoshua M. Clulow 	/* 0x078 */
1372*f7184619SJoshua M. Clulow 	INST("fsrc2", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FPD)|
1373*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1374*f7184619SJoshua M. Clulow 	INST("fsrc2s", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_FP)|
1375*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1376*f7184619SJoshua M. Clulow 	INST("fornot1", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1377*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1378*f7184619SJoshua M. Clulow 	INST("fornot1s", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1379*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1380*f7184619SJoshua M. Clulow 
1381*f7184619SJoshua M. Clulow 	INST("for", V9S, FLG_P1(REG_FPD)|FLG_NOIMM|
1382*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_P3(REG_FPD)),
1383*f7184619SJoshua M. Clulow 	INST("fors", V9S, FLG_P1(REG_FP)|FLG_NOIMM|
1384*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_P3(REG_FP)),
1385*f7184619SJoshua M. Clulow 	INST("fone", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
1386*f7184619SJoshua M. Clulow 		FLG_P3(REG_FPD)),
1387*f7184619SJoshua M. Clulow 	INST("fones", V9S, FLG_P1(REG_NONE)|FLG_P2(REG_NONE)|
1388*f7184619SJoshua M. Clulow 		FLG_P3(REG_FP)),
1389*f7184619SJoshua M. Clulow 
1390*f7184619SJoshua M. Clulow 	/* 0x080 */
1391*f7184619SJoshua M. Clulow 	INST("shutdown", V9S, 0),
1392*f7184619SJoshua M. Clulow 	INST("siam", V9S, 0),
1393*f7184619SJoshua M. Clulow 	INVALID,
1394*f7184619SJoshua M. Clulow 	INVALID,
1395*f7184619SJoshua M. Clulow 
1396*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID,
1397*f7184619SJoshua M. Clulow 
1398*f7184619SJoshua M. Clulow 	/* 0x088 */
1399*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1400*f7184619SJoshua M. Clulow 
1401*f7184619SJoshua M. Clulow 	/* 0x090 */
1402*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1403*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1404*f7184619SJoshua M. Clulow 
1405*f7184619SJoshua M. Clulow 	/* 0x0a0 */
1406*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1407*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1408*f7184619SJoshua M. Clulow 
1409*f7184619SJoshua M. Clulow 	/* 0x0b0 */
1410*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1411*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1412*f7184619SJoshua M. Clulow 
1413*f7184619SJoshua M. Clulow 	/* 0x0c0 */
1414*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1415*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1416*f7184619SJoshua M. Clulow 
1417*f7184619SJoshua M. Clulow 	/* 0x0d0 */
1418*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1419*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1420*f7184619SJoshua M. Clulow 
1421*f7184619SJoshua M. Clulow 	/* 0x0e0 */
1422*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1423*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1424*f7184619SJoshua M. Clulow 
1425*f7184619SJoshua M. Clulow 	/* 0x0f0 */
1426*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1427*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1428*f7184619SJoshua M. Clulow 
1429*f7184619SJoshua M. Clulow 	/* 0x100 */
1430*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1431*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1432*f7184619SJoshua M. Clulow 
1433*f7184619SJoshua M. Clulow 	/* 0x110 */
1434*f7184619SJoshua M. Clulow 	INST("movdtox", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1435*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
1436*f7184619SJoshua M. Clulow 	INST("movstouw", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1437*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_RD(REG_INT)),
1438*f7184619SJoshua M. Clulow 	INVALID,
1439*f7184619SJoshua M. Clulow 	INST("movstosw", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1440*f7184619SJoshua M. Clulow 		FLG_P2(REG_FP)|FLG_RD(REG_INT)),
1441*f7184619SJoshua M. Clulow 	INVALID,
1442*f7184619SJoshua M. Clulow 	INST("xmulx", V9, FLG_P1(REG_INT)|FLG_NOIMM|
1443*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
1444*f7184619SJoshua M. Clulow 	INST("xmulxhi", V9, FLG_P1(REG_INT)|FLG_NOIMM|
1445*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_P3(REG_INT)),
1446*f7184619SJoshua M. Clulow 	INVALID,
1447*f7184619SJoshua M. Clulow 	INST("movxtod", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1448*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_RD(REG_FPD)),
1449*f7184619SJoshua M. Clulow 	INST("movwtos", V9, FLG_P1(REG_NONE)|FLG_NOIMM|
1450*f7184619SJoshua M. Clulow 		FLG_P2(REG_INT)|FLG_RD(REG_FP)),
1451*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1452*f7184619SJoshua M. Clulow 
1453*f7184619SJoshua M. Clulow 	/* 0x120 */
1454*f7184619SJoshua M. Clulow 	INST("fucmple8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1455*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
1456*f7184619SJoshua M. Clulow 	INVALID,
1457*f7184619SJoshua M. Clulow 	INST("fucmpne8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1458*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
1459*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID,
1460*f7184619SJoshua M. Clulow 	INST("fucmpgt8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1461*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
1462*f7184619SJoshua M. Clulow 	INVALID,
1463*f7184619SJoshua M. Clulow 	INST("fucmpeq8", V9, FLG_P1(REG_FPD)|FLG_NOIMM|
1464*f7184619SJoshua M. Clulow 		FLG_P2(REG_FPD)|FLG_RD(REG_INT)),
1465*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID,
1466*f7184619SJoshua M. Clulow 
1467*f7184619SJoshua M. Clulow 	/* 0x130 */
1468*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1469*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1470*f7184619SJoshua M. Clulow 
1471*f7184619SJoshua M. Clulow 	/* 0x140 */
1472*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1473*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1474*f7184619SJoshua M. Clulow 
1475*f7184619SJoshua M. Clulow 	/* 0x150 */
1476*f7184619SJoshua M. Clulow 	INVALID,
1477*f7184619SJoshua M. Clulow 	INST("flcmps", V9, FLG_P1(REG_FP)|FLG_P2(REG_FP)|FLG_P3(REG_FCC)
1478*f7184619SJoshua M. Clulow 		|FLG_NOIMM),
1479*f7184619SJoshua M. Clulow 	INST("flcmpd", V9, FLG_P1(REG_FPD)|FLG_P2(REG_FPD)|FLG_P3(REG_FCC)
1480*f7184619SJoshua M. Clulow 		|FLG_NOIMM),
1481*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID,
1482*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1483*f7184619SJoshua M. Clulow 
1484*f7184619SJoshua M. Clulow 	/* 0x160 */
1485*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1486*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1487*f7184619SJoshua M. Clulow 
1488*f7184619SJoshua M. Clulow 	/* 0x170 */
1489*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1490*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1491*f7184619SJoshua M. Clulow 
1492*f7184619SJoshua M. Clulow 	/* 0x180 */
1493*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1494*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1495*f7184619SJoshua M. Clulow 
1496*f7184619SJoshua M. Clulow 	/* 0x190 */
1497*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1498*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1499*f7184619SJoshua M. Clulow 
1500*f7184619SJoshua M. Clulow 	/* 0x1a0 */
1501*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1502*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1503*f7184619SJoshua M. Clulow 
1504*f7184619SJoshua M. Clulow 	/* 0x1b0 */
1505*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1506*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1507*f7184619SJoshua M. Clulow 
1508*f7184619SJoshua M. Clulow 	/* 0x1c0 */
1509*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1510*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1511*f7184619SJoshua M. Clulow 
1512*f7184619SJoshua M. Clulow 	/* 0x1d0 */
1513*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1514*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1515*f7184619SJoshua M. Clulow 
1516*f7184619SJoshua M. Clulow 	/* 0x1e0 */
1517*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1518*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1519*f7184619SJoshua M. Clulow 
1520*f7184619SJoshua M. Clulow 	/* 0x1f0 */
1521*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID,
1522*f7184619SJoshua M. Clulow 	INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID, INVALID
1523*f7184619SJoshua M. Clulow };
1524*f7184619SJoshua M. Clulow 
1525*f7184619SJoshua M. Clulow static const table_t vis_table = {
1526*f7184619SJoshua M. Clulow 	.tbl_field = 13,
1527*f7184619SJoshua M. Clulow 	.tbl_len   = 9,
1528*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
1529*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_vis,
1530*f7184619SJoshua M. Clulow 	.tbl_inp   = vis_table_def
1531*f7184619SJoshua M. Clulow };
1532*f7184619SJoshua M. Clulow 
1533*f7184619SJoshua M. Clulow static const inst_t fused_table_def[16] = {
1534*f7184619SJoshua M. Clulow 	/* 0x0 */
1535*f7184619SJoshua M. Clulow 	INVALID,
1536*f7184619SJoshua M. Clulow 	INST("fmadds", V9, FLG_P1(REG_FP)),
1537*f7184619SJoshua M. Clulow 	INST("fmaddd", V9, FLG_P1(REG_FPD)),
1538*f7184619SJoshua M. Clulow 	INVALID,
1539*f7184619SJoshua M. Clulow 
1540*f7184619SJoshua M. Clulow 	/* 0x4 */
1541*f7184619SJoshua M. Clulow 	INVALID,
1542*f7184619SJoshua M. Clulow 	INST("fmsubs", V9, FLG_P1(REG_FP)),
1543*f7184619SJoshua M. Clulow 	INST("fmsubd", V9, FLG_P1(REG_FPD)),
1544*f7184619SJoshua M. Clulow 	INVALID,
1545*f7184619SJoshua M. Clulow 
1546*f7184619SJoshua M. Clulow 	/* 0x8 */
1547*f7184619SJoshua M. Clulow 	INVALID,
1548*f7184619SJoshua M. Clulow 	INST("fnmsubs", V9, FLG_P1(REG_FP)),
1549*f7184619SJoshua M. Clulow 	INST("fnmsubd", V9, FLG_P1(REG_FPD)),
1550*f7184619SJoshua M. Clulow 	INVALID,
1551*f7184619SJoshua M. Clulow 
1552*f7184619SJoshua M. Clulow 	/* 0xc */
1553*f7184619SJoshua M. Clulow 	INVALID,
1554*f7184619SJoshua M. Clulow 	INST("fnmadds", V9, FLG_P1(REG_FP)),
1555*f7184619SJoshua M. Clulow 	INST("fnmaddd", V9, FLG_P1(REG_FPD)),
1556*f7184619SJoshua M. Clulow 	INVALID
1557*f7184619SJoshua M. Clulow };
1558*f7184619SJoshua M. Clulow 
1559*f7184619SJoshua M. Clulow static const table_t fused_table = {
1560*f7184619SJoshua M. Clulow 	.tbl_field = 8,
1561*f7184619SJoshua M. Clulow 	.tbl_len   = 4,
1562*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
1563*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_fused,
1564*f7184619SJoshua M. Clulow 	.tbl_inp   = fused_table_def
1565*f7184619SJoshua M. Clulow };
1566*f7184619SJoshua M. Clulow 
1567*f7184619SJoshua M. Clulow static const inst_t alu_table_def[64] = {
1568*f7184619SJoshua M. Clulow 	/* 0x00 */
1569*f7184619SJoshua M. Clulow 	INST("add",		VALL,	0),
1570*f7184619SJoshua M. Clulow 	INST("and",		VALL,	0),
1571*f7184619SJoshua M. Clulow 	INST("or",		VALL,	0),
1572*f7184619SJoshua M. Clulow 	INST("xor",		VALL,	0),
1573*f7184619SJoshua M. Clulow 
1574*f7184619SJoshua M. Clulow 	INST("sub",		VALL,	0),
1575*f7184619SJoshua M. Clulow 	INST("andn",		VALL,	0),
1576*f7184619SJoshua M. Clulow 	INST("orn",		VALL,	0),
1577*f7184619SJoshua M. Clulow 	INST("xnor",		VALL,	0),
1578*f7184619SJoshua M. Clulow 
1579*f7184619SJoshua M. Clulow 	/* 0x08 */
1580*f7184619SJoshua M. Clulow 	INST("addx",		VALL,	0),
1581*f7184619SJoshua M. Clulow 	INST("mulx",		V9|V9S,	0),
1582*f7184619SJoshua M. Clulow 	INST("umul",		VALL,	0),
1583*f7184619SJoshua M. Clulow 	INST("smul",		VALL,	0),
1584*f7184619SJoshua M. Clulow 
1585*f7184619SJoshua M. Clulow 	INST("subx",		VALL,	0),
1586*f7184619SJoshua M. Clulow 	INST("udivx",		V9|V9S,	0),
1587*f7184619SJoshua M. Clulow 	INST("udiv",		VALL,	0),
1588*f7184619SJoshua M. Clulow 	INST("sdiv",		VALL,	0),
1589*f7184619SJoshua M. Clulow 
1590*f7184619SJoshua M. Clulow 	/* 0x10 */
1591*f7184619SJoshua M. Clulow 	INST("addcc",		VALL,	0),
1592*f7184619SJoshua M. Clulow 	INST("andcc",		VALL,	0),
1593*f7184619SJoshua M. Clulow 	INST("orcc",		VALL,	0),
1594*f7184619SJoshua M. Clulow 	INST("xorcc",		VALL,	0),
1595*f7184619SJoshua M. Clulow 
1596*f7184619SJoshua M. Clulow 	INST("subcc",		VALL,	0),
1597*f7184619SJoshua M. Clulow 	INST("andncc",		VALL,	0),
1598*f7184619SJoshua M. Clulow 	INST("orncc",		VALL,	0),
1599*f7184619SJoshua M. Clulow 	INST("xnorcc",		VALL,	0),
1600*f7184619SJoshua M. Clulow 
1601*f7184619SJoshua M. Clulow 	/* 0x18 */
1602*f7184619SJoshua M. Clulow 	INST("addxcc",		VALL,	0),
1603*f7184619SJoshua M. Clulow 	INVALID,
1604*f7184619SJoshua M. Clulow 	INST("umulcc",		VALL,	0),
1605*f7184619SJoshua M. Clulow 	INST("smulcc",		VALL,	0),
1606*f7184619SJoshua M. Clulow 
1607*f7184619SJoshua M. Clulow 	INST("subxcc",		VALL,	0),
1608*f7184619SJoshua M. Clulow 	INVALID,
1609*f7184619SJoshua M. Clulow 	INST("udivcc",		VALL,	0),
1610*f7184619SJoshua M. Clulow 	INST("sdivcc",		VALL,	0),
1611*f7184619SJoshua M. Clulow 
1612*f7184619SJoshua M. Clulow 	/* 0x20 */
1613*f7184619SJoshua M. Clulow 	INST("taddcc",		VALL,	0),
1614*f7184619SJoshua M. Clulow 	INST("tsubcc",		VALL,	0),
1615*f7184619SJoshua M. Clulow 	INST("taddcctv",	VALL,	0),
1616*f7184619SJoshua M. Clulow 	INST("tsubcctv",	VALL,	0),
1617*f7184619SJoshua M. Clulow 
1618*f7184619SJoshua M. Clulow 	INST("mulscc",		VALL,	0),
1619*f7184619SJoshua M. Clulow 	INST("sll",		VALL,	0),
1620*f7184619SJoshua M. Clulow 	INST("srl",		VALL,	0),
1621*f7184619SJoshua M. Clulow 	INST("sra",		VALL,	0),
1622*f7184619SJoshua M. Clulow 
1623*f7184619SJoshua M. Clulow 	/* 0x28 */
1624*f7184619SJoshua M. Clulow 	INST("rd",		VALL,	0),
1625*f7184619SJoshua M. Clulow 	INST("rd",		V8,	0),
1626*f7184619SJoshua M. Clulow 	INST("rd",		V8,	0),
1627*f7184619SJoshua M. Clulow 	INST("rd",		V8,	0),
1628*f7184619SJoshua M. Clulow 
1629*f7184619SJoshua M. Clulow 	TABLE(movcc_table,	V9|V9S),
1630*f7184619SJoshua M. Clulow 	INST("sdivx",		V9|V9S,	0),
1631*f7184619SJoshua M. Clulow 	INST("popc",		V9|V9S,
1632*f7184619SJoshua M. Clulow 		FLG_P1(REG_NONE)|FLG_P2(REG_INT)|FLG_P3(REG_INT)),
1633*f7184619SJoshua M. Clulow 	TABLE(movr_table,	V9|V9S),
1634*f7184619SJoshua M. Clulow 
1635*f7184619SJoshua M. Clulow 	/* 0x30 */
1636*f7184619SJoshua M. Clulow 	INST("wr",		VALL,	0),
1637*f7184619SJoshua M. Clulow 	INST("wr",		V8,	0),
1638*f7184619SJoshua M. Clulow 	INST("wr",		V8,	0),
1639*f7184619SJoshua M. Clulow 	INST("wr",		V8,	0),
1640*f7184619SJoshua M. Clulow 
1641*f7184619SJoshua M. Clulow 	TABLE(FPop1_table,	VALL),
1642*f7184619SJoshua M. Clulow 	TABLE(FPop2_table,	VALL),
1643*f7184619SJoshua M. Clulow 	INST("cpop1",		V8,	0),
1644*f7184619SJoshua M. Clulow 	INST("cpop2",		V8,	0), /* impdep2 */
1645*f7184619SJoshua M. Clulow 
1646*f7184619SJoshua M. Clulow 	/* 0x38 */
1647*f7184619SJoshua M. Clulow 	INST("jmpl",		VALL,	0),
1648*f7184619SJoshua M. Clulow 	INST("rett",		VALL,	0),
1649*f7184619SJoshua M. Clulow 	TABLE(Tcc_table,	VALL),
1650*f7184619SJoshua M. Clulow 	INST("flush",		VALL,	0),
1651*f7184619SJoshua M. Clulow 
1652*f7184619SJoshua M. Clulow 	INST("save",		VALL,	0),
1653*f7184619SJoshua M. Clulow 	INST("restore",		VALL,	0),
1654*f7184619SJoshua M. Clulow 	TABLE(tr_table,		V9|V9S),
1655*f7184619SJoshua M. Clulow 	INVALID
1656*f7184619SJoshua M. Clulow };
1657*f7184619SJoshua M. Clulow 
1658*f7184619SJoshua M. Clulow 
1659*f7184619SJoshua M. Clulow static const overlay_t alu_ov_table[] = {
1660*f7184619SJoshua M. Clulow 	OVERLAY(0x08, INST("addc",		V9|V9S, 0)),
1661*f7184619SJoshua M. Clulow 	OVERLAY(0x0c, INST("subc",		V9|V9S, 0)),
1662*f7184619SJoshua M. Clulow 	OVERLAY(0x18, INST("addccc",		V9|V9S, 0)),
1663*f7184619SJoshua M. Clulow 	OVERLAY(0x1c, INST("subccc",		V9|V9S, 0)),
1664*f7184619SJoshua M. Clulow 
1665*f7184619SJoshua M. Clulow 	OVERLAY(0x29, INST("rdhpr",		V9|V9S, 0)),
1666*f7184619SJoshua M. Clulow 	OVERLAY(0x2a, INST("rdpr",		V9|V9S, 0)),
1667*f7184619SJoshua M. Clulow 	OVERLAY(0x2b, INST("flushw",		V9|V9S, 0)),
1668*f7184619SJoshua M. Clulow 	OVERLAY(0x31, TABLE(rwin_table,		V9|V9S)),
1669*f7184619SJoshua M. Clulow 
1670*f7184619SJoshua M. Clulow 	OVERLAY(0x32, INST("wrpr",		V9|V9S, 0)),
1671*f7184619SJoshua M. Clulow 	OVERLAY(0x33, INST("wrhpr",		V9|V9S, 0)),
1672*f7184619SJoshua M. Clulow 	OVERLAY(0x36, TABLE(vis_table,		V9S)),
1673*f7184619SJoshua M. Clulow 	OVERLAY(0x37, TABLE(fused_table,	VALL)),
1674*f7184619SJoshua M. Clulow 	OVERLAY(0x39, INST("return",		VALL, 0)),
1675*f7184619SJoshua M. Clulow 
1676*f7184619SJoshua M. Clulow 	OVERLAY_END
1677*f7184619SJoshua M. Clulow };
1678*f7184619SJoshua M. Clulow 
1679*f7184619SJoshua M. Clulow static const table_t alu_table = {
1680*f7184619SJoshua M. Clulow 	.tbl_field = 24,
1681*f7184619SJoshua M. Clulow 	.tbl_len   = 6,
1682*f7184619SJoshua M. Clulow 	.tbl_ovp   = alu_ov_table,
1683*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_alu,
1684*f7184619SJoshua M. Clulow 	.tbl_inp   = alu_table_def
1685*f7184619SJoshua M. Clulow };
1686*f7184619SJoshua M. Clulow 
1687*f7184619SJoshua M. Clulow static const inst_t initial_table_def[4] = {
1688*f7184619SJoshua M. Clulow 	TABLE(branch_table,	VALL),
1689*f7184619SJoshua M. Clulow 	INST("call",		VALL, 0),
1690*f7184619SJoshua M. Clulow 	TABLE(alu_table,	VALL),
1691*f7184619SJoshua M. Clulow 	TABLE(ls_table,		VALL)
1692*f7184619SJoshua M. Clulow };
1693*f7184619SJoshua M. Clulow 
1694*f7184619SJoshua M. Clulow /* NOTE: this must not be made static */
1695*f7184619SJoshua M. Clulow const table_t initial_table = {
1696*f7184619SJoshua M. Clulow 	.tbl_field = 31,
1697*f7184619SJoshua M. Clulow 	.tbl_len   = 2,
1698*f7184619SJoshua M. Clulow 	.tbl_ovp   = NULL,
1699*f7184619SJoshua M. Clulow 	.tbl_fmt   = fmt_call,
1700*f7184619SJoshua M. Clulow 	.tbl_inp   = initial_table_def
1701*f7184619SJoshua M. Clulow };
1702