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